From bb6e704ab011a497ac8c735afc0fd4c52a1425ce Mon Sep 17 00:00:00 2001 From: Jakob Stendahl Date: Tue, 9 Jan 2018 15:01:04 +0100 Subject: Added old project --- .gitignore | 348 + love2dToAPK.sln | 25 + love2dToAPK/App.config | 27 + love2dToAPK/Controls/minimalButton.Designer.cs | 31 + love2dToAPK/Controls/minimalButton.cs | 70 + love2dToAPK/Forms/baseForm.Designer.cs | 123 + love2dToAPK/Forms/baseForm.cs | 159 + love2dToAPK/Forms/baseForm.resx | 120 + love2dToAPK/Forms/frmFirstStartup.Designer.cs | 216 + love2dToAPK/Forms/frmFirstStartup.cs | 28 + love2dToAPK/Forms/frmFirstStartup.resx | 133 + love2dToAPK/Forms/frmMain.Designer.cs | 191 + love2dToAPK/Forms/frmMain.cs | 86 + love2dToAPK/Forms/frmMain.resx | 120 + love2dToAPK/Forms/frmOutput.Designer.cs | 54 + love2dToAPK/Forms/frmOutput.cs | 52 + love2dToAPK/Forms/frmOutput.resx | 120 + love2dToAPK/Forms/frmSettings.Designer.cs | 106 + love2dToAPK/Forms/frmSettings.cs | 35 + love2dToAPK/Forms/frmSettings.resx | 120 + love2dToAPK/Program.cs | 43 + love2dToAPK/Properties/AssemblyInfo.cs | 36 + love2dToAPK/Properties/Resources.Designer.cs | 73 + love2dToAPK/Properties/Resources.resx | 124 + love2dToAPK/Properties/Settings.Designer.cs | 74 + love2dToAPK/Properties/Settings.settings | 18 + love2dToAPK/Resources/983924-200.png | Bin 0 -> 2762 bytes love2dToAPK/Resources/ready.png | Bin 0 -> 12082 bytes love2dToAPK/Settings.cs | 28 + love2dToAPK/adb.cs | 96 + love2dToAPK/compiler.cs | 259 + love2dToAPK/love2dToAPK.csproj | 193 + love2dToAPK/packages.config | 4 + love2dToAPK/tools/icon.png | Bin 0 -> 10129 bytes love2dToAPK/tools/startAnt.bat | 12 + love2dToAPK/tools/tools/adb/AdbWinApi.dll | Bin 0 -> 97792 bytes love2dToAPK/tools/tools/adb/AdbWinUsbApi.dll | Bin 0 -> 62976 bytes love2dToAPK/tools/tools/adb/NOTICE.txt | 6260 ++ love2dToAPK/tools/tools/adb/adb.exe | Bin 0 -> 1656320 bytes love2dToAPK/tools/tools/adb/api/annotations.zip | Bin 0 -> 140715 bytes love2dToAPK/tools/tools/adb/api/api-versions.xml | 75120 +++++++++++++++++++ love2dToAPK/tools/tools/adb/dmtracedump.exe | Bin 0 -> 145920 bytes love2dToAPK/tools/tools/adb/etc1tool.exe | Bin 0 -> 333824 bytes love2dToAPK/tools/tools/adb/fastboot.exe | Bin 0 -> 851456 bytes love2dToAPK/tools/tools/adb/hprof-conv.exe | Bin 0 -> 43008 bytes love2dToAPK/tools/tools/adb/lib64/libc++.so | Bin 0 -> 1272189 bytes love2dToAPK/tools/tools/adb/libwinpthread-1.dll | Bin 0 -> 210625 bytes love2dToAPK/tools/tools/adb/mke2fs.exe | Bin 0 -> 1034240 bytes love2dToAPK/tools/tools/adb/source.properties | 3 + love2dToAPK/tools/tools/adb/sqlite3.exe | Bin 0 -> 793600 bytes love2dToAPK/tools/tools/adb/systrace/NOTICE | 205 + .../tools/tools/adb/systrace/UPSTREAM_REVISION | 1 + .../catapult/common/battor/battor/__init__.py | 27 + .../battor/battor/battor_binary_dependencies.json | 114 + .../catapult/common/battor/battor/battor_error.py | 8 + .../common/battor/battor/battor_wrapper.py | 420 + .../battor/battor/battor_wrapper_devicetest.py | 106 + .../battor/battor/battor_wrapper_unittest.py | 365 + .../adb/systrace/catapult/common/eslint/LICENSE | 20 + .../adb/systrace/catapult/common/eslint/README.md | 5 + .../catapult/common/eslint/eslint/__init__.py | 68 + .../catapult/common/eslint/eslint/smoke_test.py | 36 + .../common/eslint/rules/catapult-camelcase.js | 154 + .../common/eslint/tests/catapult-camelcase.js | 324 + .../adb/systrace/catapult/common/lab/commits.py | 101 + .../adb/systrace/catapult/common/lab/hardware.py | 93 + .../catapult/common/lab/keychain_unlock.sh | 15 + .../common/node_runner/node_runner/__init__.py | 4 + .../node_runner/node_runner/node_binaries.json | 53 + .../common/node_runner/node_runner/node_util.py | 60 + .../common/node_runner/node_runner/package.json | 22 + .../catapult/common/py_trace_event/README.txt | 7 + .../py_trace_event/py_trace_event/__init__.py | 9 + .../common/py_trace_event/py_trace_event/run_tests | 163 + .../common/py_trace_event/py_trace_event/setup.py | 12 + .../py_trace_event/py_trace_event/trace_event.py | 266 + .../py_trace_event/trace_event_impl/__init__.py | 7 + .../py_trace_event/trace_event_impl/decorators.py | 87 + .../trace_event_impl/decorators_test.py | 62 + .../py_trace_event/trace_event_impl/log.py | 179 + .../py_trace_event/trace_event_impl/log_io_test.py | 50 + .../py_trace_event/trace_event_impl/meta_class.py | 16 + .../trace_event_impl/multiprocessing_shim.py | 92 + .../trace_event_impl/parsed_trace_events.py | 98 + .../py_trace_event/trace_event_impl/trace_test.py | 48 + .../py_trace_event/trace_event_unittest.py | 423 + .../py_trace_event/py_trace_event/trace_time.py | 234 + .../py_trace_event/trace_time_unittest.py | 123 + .../systrace/catapult/common/py_utils/PRESUBMIT.py | 31 + .../catapult/common/py_utils/py_utils/__init__.py | 140 + .../common/py_utils/py_utils/binary_manager.py | 61 + .../py_utils/py_utils/binary_manager_unittest.py | 214 + .../common/py_utils/py_utils/chrome_binaries.json | 86 + .../common/py_utils/py_utils/cloud_storage.py | 461 + .../py_utils/py_utils/cloud_storage_global_lock.py | 5 + .../py_utils/py_utils/cloud_storage_unittest.py | 284 + .../common/py_utils/py_utils/contextlib_ext.py | 33 + .../py_utils/py_utils/contextlib_ext_unittest.py | 34 + .../common/py_utils/py_utils/dependency_util.py | 49 + .../catapult/common/py_utils/py_utils/lock.py | 117 + .../common/py_utils/py_utils/lock_unittest.py | 165 + .../common/py_utils/py_utils/py_utils_unittest.py | 55 + .../common/py_utils/py_utils/refactor/__init__.py | 28 + .../py_utils/refactor/annotated_symbol/__init__.py | 71 + .../refactor/annotated_symbol/base_symbol.py | 36 + .../refactor/annotated_symbol/class_definition.py | 51 + .../annotated_symbol/function_definition.py | 51 + .../refactor/annotated_symbol/import_statement.py | 322 + .../refactor/annotated_symbol/reference.py | 75 + .../common/py_utils/py_utils/refactor/module.py | 39 + .../py_utils/py_utils/refactor/offset_token.py | 115 + .../common/py_utils/py_utils/refactor/snippet.py | 244 + .../py_utils/py_utils/refactor_util/__init__.py | 0 .../common/py_utils/py_utils/refactor_util/move.py | 116 + .../common/py_utils/py_utils/shell_util.py | 40 + .../common/py_utils/py_utils/tempfile_ext.py | 25 + .../py_utils/py_utils/tempfile_ext_unittest.py | 39 + .../common/py_utils/py_utils/test_data/foo.txt | 1 + .../catapult/common/py_utils/py_utils/xvfb.py | 29 + .../catapult/dependency_manager/PRESUBMIT.py | 32 + .../dependency_manager/__init__.py | 43 + .../dependency_manager/archive_info.py | 80 + .../dependency_manager/base_config.py | 388 + .../dependency_manager/base_config_unittest.py | 1525 + .../dependency_manager/cloud_storage_info.py | 110 + .../cloud_storage_info_unittest.py | 233 + .../dependency_manager/dependency_info.py | 128 + .../dependency_manager/dependency_info_unittest.py | 234 + .../dependency_manager_unittest.py | 527 + .../dependency_manager/dependency_manager_util.py | 103 + .../dependency_manager_util_unittest.py | 193 + .../dependency_manager/exceptions.py | 52 + .../dependency_manager/local_path_info.py | 40 + .../dependency_manager/manager.py | 247 + .../dependency_manager/uploader.py | 108 + .../dependency_manager/uploader_unittest.py | 91 + .../systrace/catapult/dependency_manager/pylintrc | 68 + .../tools/adb/systrace/catapult/devil/PRESUBMIT.py | 81 + .../tools/adb/systrace/catapult/devil/README.md | 37 + .../adb/systrace/catapult/devil/devil/__init__.py | 7 + .../catapult/devil/devil/android/__init__.py | 3 + .../catapult/devil/devil/android/apk_helper.py | 164 + .../devil/devil/android/apk_helper_test.py | 169 + .../catapult/devil/devil/android/app_ui.py | 243 + .../catapult/devil/devil/android/app_ui_test.py | 191 + .../catapult/devil/devil/android/battery_utils.py | 711 + .../devil/devil/android/battery_utils_test.py | 694 + .../devil/devil/android/constants/__init__.py | 3 + .../devil/devil/android/constants/chrome.py | 57 + .../devil/devil/android/constants/file_system.py | 5 + .../catapult/devil/devil/android/decorators.py | 176 + .../devil/devil/android/decorators_test.py | 332 + .../devil/devil/android/device_blacklist.py | 80 + .../devil/devil/android/device_blacklist_test.py | 38 + .../catapult/devil/devil/android/device_errors.py | 196 + .../devil/devil/android/device_errors_test.py | 72 + .../catapult/devil/devil/android/device_list.py | 52 + .../catapult/devil/devil/android/device_signal.py | 41 + .../devil/devil/android/device_temp_file.py | 63 + .../devil/devil/android/device_test_case.py | 54 + .../catapult/devil/devil/android/device_utils.py | 2654 + .../devil/devil/android/device_utils_devicetest.py | 238 + .../devil/devil/android/device_utils_test.py | 2908 + .../catapult/devil/devil/android/fastboot_utils.py | 256 + .../devil/devil/android/fastboot_utils_test.py | 375 + .../catapult/devil/devil/android/flag_changer.py | 300 + .../devil/devil/android/flag_changer_devicetest.py | 88 + .../devil/devil/android/flag_changer_test.py | 135 + .../catapult/devil/devil/android/forwarder.py | 467 + .../devil/devil/android/install_commands.py | 57 + .../catapult/devil/devil/android/logcat_monitor.py | 255 + .../devil/devil/android/logcat_monitor_test.py | 230 + .../catapult/devil/devil/android/md5sum.py | 120 + .../catapult/devil/devil/android/md5sum_test.py | 237 + .../catapult/devil/devil/android/perf/__init__.py | 3 + .../devil/devil/android/perf/cache_control.py | 15 + .../devil/devil/android/perf/perf_control.py | 210 + .../devil/android/perf/perf_control_devicetest.py | 38 + .../devil/android/perf/surface_stats_collector.py | 186 + .../devil/devil/android/perf/thermal_throttle.py | 135 + .../systrace/catapult/devil/devil/android/ports.py | 178 + .../catapult/devil/devil/android/sdk/__init__.py | 6 + .../catapult/devil/devil/android/sdk/aapt.py | 43 + .../android/sdk/adb_compatibility_devicetest.py | 230 + .../devil/devil/android/sdk/adb_wrapper.py | 923 + .../devil/android/sdk/adb_wrapper_devicetest.py | 122 + .../devil/devil/android/sdk/adb_wrapper_test.py | 59 + .../devil/devil/android/sdk/build_tools.py | 51 + .../catapult/devil/devil/android/sdk/dexdump.py | 31 + .../catapult/devil/devil/android/sdk/fastboot.py | 98 + .../devil/devil/android/sdk/gce_adb_wrapper.py | 154 + .../catapult/devil/devil/android/sdk/intent.py | 129 + .../catapult/devil/devil/android/sdk/keyevent.py | 63 + .../devil/devil/android/sdk/shared_prefs.py | 420 + .../devil/devil/android/sdk/shared_prefs_test.py | 171 + .../devil/devil/android/sdk/split_select.py | 63 + .../push_directory/push_directory_contents.txt | 1 + .../devil/android/sdk/test/data/push_file.txt | 1 + .../devil/devil/android/sdk/version_codes.py | 20 + .../catapult/devil/devil/android/settings.py | 283 + .../catapult/devil/devil/android/tools/__init__.py | 3 + .../devil/devil/android/tools/adb_run_shell_cmd.py | 61 + .../catapult/devil/devil/android/tools/cpufreq.py | 87 + .../devil/devil/android/tools/device_monitor.py | 232 + .../devil/android/tools/device_monitor_test.py | 168 + .../devil/devil/android/tools/device_recovery.py | 211 + .../devil/devil/android/tools/device_status.py | 316 + .../devil/devil/android/tools/flash_device.py | 70 + .../catapult/devil/devil/android/tools/keyboard.py | 129 + .../devil/devil/android/tools/provision_devices.py | 663 + .../devil/devil/android/tools/screenshot.py | 59 + .../devil/devil/android/tools/script_common.py | 29 + .../devil/android/tools/script_common_test.py | 58 + .../devil/devil/android/tools/video_recorder.py | 175 + .../devil/devil/android/tools/wait_for_devices.py | 50 + .../devil/devil/android/valgrind_tools/__init__.py | 21 + .../devil/android/valgrind_tools/base_tool.py | 53 + .../systrace/catapult/devil/devil/base_error.py | 24 + .../catapult/devil/devil/constants/__init__.py | 3 + .../catapult/devil/devil/constants/exit_codes.py | 9 + .../catapult/devil/devil/devil_dependencies.json | 127 + .../adb/systrace/catapult/devil/devil/devil_env.py | 194 + .../catapult/devil/devil/devil_env_test.py | 63 + .../catapult/devil/devil/utils/__init__.py | 23 + .../devil/devil/utils/battor_device_mapping.py | 309 + .../catapult/devil/devil/utils/cmd_helper.py | 451 + .../catapult/devil/devil/utils/cmd_helper_test.py | 264 + .../catapult/devil/devil/utils/file_utils.py | 31 + .../catapult/devil/devil/utils/find_usb_devices.py | 538 + .../devil/devil/utils/find_usb_devices_test.py | 379 + .../catapult/devil/devil/utils/geometry.py | 75 + .../catapult/devil/devil/utils/geometry_test.py | 61 + .../catapult/devil/devil/utils/host_utils.py | 16 + .../catapult/devil/devil/utils/lazy/__init__.py | 5 + .../devil/devil/utils/lazy/weak_constant.py | 29 + .../systrace/catapult/devil/devil/utils/lsusb.py | 174 + .../catapult/devil/devil/utils/lsusb_test.py | 250 + .../catapult/devil/devil/utils/markdown.py | 320 + .../catapult/devil/devil/utils/markdown_test.py | 121 + .../catapult/devil/devil/utils/mock_calls.py | 180 + .../catapult/devil/devil/utils/mock_calls_test.py | 173 + .../catapult/devil/devil/utils/parallelizer.py | 238 + .../devil/devil/utils/parallelizer_test.py | 162 + .../catapult/devil/devil/utils/reraiser_thread.py | 228 + .../devil/devil/utils/reraiser_thread_unittest.py | 117 + .../catapult/devil/devil/utils/reset_usb.py | 111 + .../catapult/devil/devil/utils/run_tests_helper.py | 44 + .../catapult/devil/devil/utils/signal_handler.py | 48 + .../devil/utils/test/data/test_serial_map.json | 1 + .../catapult/devil/devil/utils/timeout_retry.py | 175 + .../devil/devil/utils/timeout_retry_unittest.py | 79 + .../catapult/devil/devil/utils/update_mapping.py | 47 + .../catapult/devil/devil/utils/usb_hubs.py | 184 + .../catapult/devil/devil/utils/watchdog_timer.py | 47 + .../catapult/devil/devil/utils/zip_utils.py | 33 + .../systrace/catapult/devil/docs/adb_wrapper.md | 388 + .../catapult/devil/docs/device_blacklist.md | 59 + .../systrace/catapult/devil/docs/device_utils.md | 1041 + .../adb/systrace/catapult/devil/docs/markdown.md | 139 + .../catapult/devil/docs/persistent_device_list.md | 41 + .../tools/adb/systrace/catapult/devil/pylintrc | 68 + .../adb/systrace/catapult/systrace/PRESUBMIT.py | 36 + .../tools/adb/systrace/catapult/systrace/README.md | 10 + .../catapult/systrace/atrace_helper/README.md | 29 + .../systrace/atrace_helper/jni/Application.mk | 7 + .../systrace/atrace_helper/jni/file_utils.cc | 96 + .../systrace/atrace_helper/jni/file_utils.h | 53 + .../catapult/systrace/atrace_helper/jni/logging.h | 28 + .../catapult/systrace/atrace_helper/jni/main.cc | 198 + .../systrace/atrace_helper/jni/process_info.cc | 102 + .../systrace/atrace_helper/jni/process_info.h | 71 + .../atrace_helper/jni/process_memory_stats.cc | 132 + .../atrace_helper/jni/process_memory_stats.h | 68 + .../catapult/systrace/profile_chrome/__init__.py | 13 + .../profile_chrome/chrome_startup_tracing_agent.py | 123 + .../chrome_startup_tracing_agent_unittest.py | 28 + .../profile_chrome/chrome_tracing_agent.py | 214 + .../chrome_tracing_agent_unittest.py | 51 + .../systrace/profile_chrome/ddms_tracing_agent.py | 97 + .../profile_chrome/ddms_tracing_agent_unittest.py | 24 + .../systrace/profile_chrome/fake_agent_1.py | 69 + .../systrace/profile_chrome/fake_agent_2.py | 68 + .../catapult/systrace/profile_chrome/flags.py | 16 + .../catapult/systrace/profile_chrome/main.py | 160 + .../systrace/profile_chrome/perf_tracing_agent.py | 253 + .../profile_chrome/perf_tracing_agent_unittest.py | 39 + .../catapult/systrace/profile_chrome/profiler.py | 108 + .../systrace/profile_chrome/profiler_unittest.py | 58 + .../catapult/systrace/profile_chrome/run_tests | 3 + .../systrace/profile_chrome/third_party/COPYING | 339 + .../profile_chrome/third_party/README.chromium | 15 + .../profile_chrome/third_party/perf_to_tracing.py | 248 + .../catapult/systrace/profile_chrome/ui.py | 27 + .../catapult/systrace/profile_chrome/util.py | 35 + .../tools/adb/systrace/catapult/systrace/pylintrc | 67 + .../systrace/catapult/systrace/systrace/AUTHORS | 12 + .../systrace/catapult/systrace/systrace/LICENSE | 27 + .../systrace/catapult/systrace/systrace/README.md | 16 + .../catapult/systrace/systrace/__init__.py | 28 + .../catapult/systrace/systrace/decorators.py | 41 + .../catapult/systrace/systrace/monitor_unittest.py | 52 + .../catapult/systrace/systrace/output_generator.py | 189 + .../systrace/systrace/output_generator_unittest.py | 123 + .../catapult/systrace/systrace/prefix.html | 70 + .../catapult/systrace/systrace/run_systrace.py | 199 + .../catapult/systrace/systrace/suffix.html | 2 + .../catapult/systrace/systrace/systrace_runner.py | 70 + .../systrace/systrace/systrace_trace_viewer.html | 9630 +++ .../systrace/systrace/test_data/atrace_data | 127 + .../systrace/systrace/test_data/atrace_data_raw | 128 + .../systrace/test_data/atrace_data_stripped | 127 + .../systrace/test_data/atrace_extracted_tgids | 1 + .../systrace/test_data/atrace_extracted_threads | 1 + .../systrace/systrace/test_data/atrace_fixed_tgids | 127 + .../systrace/test_data/atrace_missing_tgids | 127 + .../systrace/systrace/test_data/atrace_procfs_dump | 1156 + .../systrace/test_data/battor_test_data.txt | 16 + .../systrace/test_data/compressed_atrace_data.txt | 5 + .../test_data/decompressed_atrace_data.txt | 1053 + .../profile-chrome_systrace_perf_chrome_data | 1 + .../catapult/systrace/systrace/trace_result.py | 17 + .../systrace/systrace/tracing_agents/__init__.py | 91 + .../systrace/tracing_agents/agents_unittest.py | 50 + .../tracing_agents/android_process_data_agent.py | 89 + .../systrace/tracing_agents/atrace_agent.py | 451 + .../tracing_agents/atrace_agent_unittest.py | 132 + .../tracing_agents/atrace_from_file_agent.py | 81 + .../atrace_from_file_agent_unittest.py | 59 + .../systrace/tracing_agents/battor_trace_agent.py | 165 + .../tracing_agents/battor_trace_agent_unittest.py | 182 + .../systrace/tracing_agents/ftrace_agent.py | 257 + .../tracing_agents/ftrace_agent_unittest.py | 143 + .../systrace/systrace/tracing_agents/walt_agent.py | 120 + .../systrace/tracing_agents/walt_agent_unittest.py | 51 + .../systrace/systrace/tracing_controller.py | 306 + .../systrace/update_systrace_trace_viewer.py | 119 + .../systrace/catapult/systrace/systrace/util.py | 211 + .../catapult/systrace/systrace/util_unittest.py | 30 + .../catapult/third_party/pyserial/LICENSE.txt | 61 + .../catapult/third_party/pyserial/README.chromium | 19 + .../third_party/pyserial/linux-product_info.patch | 19 + .../third_party/pyserial/serial/__init__.py | 79 + .../third_party/pyserial/serial/rfc2217.py | 1323 + .../third_party/pyserial/serial/serialcli.py | 273 + .../third_party/pyserial/serial/serialjava.py | 262 + .../third_party/pyserial/serial/serialposix.py | 703 + .../third_party/pyserial/serial/serialutil.py | 551 + .../third_party/pyserial/serial/serialwin32.py | 461 + .../third_party/pyserial/serial/sermsdos.py | 200 + .../third_party/pyserial/serial/tools/__init__.py | 0 .../pyserial/serial/tools/list_ports.py | 103 + .../pyserial/serial/tools/list_ports_linux.py | 151 + .../pyserial/serial/tools/list_ports_osx.py | 208 + .../pyserial/serial/tools/list_ports_posix.py | 101 + .../pyserial/serial/tools/list_ports_windows.py | 240 + .../third_party/pyserial/serial/tools/miniterm.py | 694 + .../pyserial/serial/urlhandler/__init__.py | 0 .../pyserial/serial/urlhandler/protocol_hwgrep.py | 45 + .../pyserial/serial/urlhandler/protocol_loop.py | 265 + .../pyserial/serial/urlhandler/protocol_rfc2217.py | 11 + .../pyserial/serial/urlhandler/protocol_socket.py | 274 + .../catapult/third_party/pyserial/serial/win32.py | 320 + .../systrace/catapult/third_party/zipfile/LICENSE | 255 + .../catapult/third_party/zipfile/README.chromium | 16 + .../catapult/third_party/zipfile/zipfile_2_7_13.py | 1543 + .../systrace/catapult/tracing/tracing/__init__.py | 6 + .../tracing/tracing/trace_data/__init__.py | 4 + .../tracing/tracing/trace_data/trace_data.py | 339 + .../tracing/trace_data/trace_data_unittest.py | 103 + .../systrace/catapult/tracing/tracing_project.py | 196 + love2dToAPK/tools/tools/adb/systrace/systrace.py | 49 + .../android-win/build-tools/19.1.0/NOTICE.txt | 195 + .../tools/android-win/build-tools/19.1.0/aapt.exe | Bin 0 -> 852992 bytes .../tools/android-win/build-tools/19.1.0/aidl.exe | Bin 0 -> 277504 bytes .../android-win/build-tools/19.1.0/bcc_compat.exe | Bin 0 -> 120832 bytes .../android-win/build-tools/19.1.0/dexdump.exe | Bin 0 -> 128512 bytes .../tools/android-win/build-tools/19.1.0/dx.bat | 88 + .../android-win/build-tools/19.1.0/lib/dx.jar | Bin 0 -> 901345 bytes .../android-win/build-tools/19.1.0/libbcc.dll | Bin 0 -> 321536 bytes .../android-win/build-tools/19.1.0/libbcinfo.dll | Bin 0 -> 674304 bytes .../renderscript/clang-include/CMakeLists.txt | 108 + .../19.1.0/renderscript/clang-include/LICENSE.TXT | 63 + .../19.1.0/renderscript/clang-include/altivec.h | 11856 +++ .../19.1.0/renderscript/clang-include/ammintrin.h | 68 + .../19.1.0/renderscript/clang-include/avx2intrin.h | 1206 + .../19.1.0/renderscript/clang-include/avxintrin.h | 1224 + .../19.1.0/renderscript/clang-include/bmi2intrin.h | 94 + .../19.1.0/renderscript/clang-include/bmiintrin.h | 115 + .../19.1.0/renderscript/clang-include/cpuid.h | 156 + .../19.1.0/renderscript/clang-include/emmintrin.h | 1431 + .../19.1.0/renderscript/clang-include/f16cintrin.h | 58 + .../19.1.0/renderscript/clang-include/float.h | 124 + .../19.1.0/renderscript/clang-include/fma4intrin.h | 231 + .../19.1.0/renderscript/clang-include/fmaintrin.h | 229 + .../19.1.0/renderscript/clang-include/immintrin.h | 114 + .../19.1.0/renderscript/clang-include/iso646.h | 43 + .../19.1.0/renderscript/clang-include/limits.h | 117 + .../renderscript/clang-include/lzcntintrin.h | 55 + .../19.1.0/renderscript/clang-include/mm3dnow.h | 162 + .../19.1.0/renderscript/clang-include/mm_malloc.h | 75 + .../19.1.0/renderscript/clang-include/mmintrin.h | 503 + .../19.1.0/renderscript/clang-include/module.map | 156 + .../19.1.0/renderscript/clang-include/nmmintrin.h | 35 + .../19.1.0/renderscript/clang-include/pmmintrin.h | 117 + .../renderscript/clang-include/popcntintrin.h | 45 + .../renderscript/clang-include/prfchwintrin.h | 39 + .../renderscript/clang-include/rdseedintrin.h | 52 + .../19.1.0/renderscript/clang-include/rtmintrin.h | 54 + .../19.1.0/renderscript/clang-include/smmintrin.h | 467 + .../19.1.0/renderscript/clang-include/stdalign.h | 35 + .../19.1.0/renderscript/clang-include/stdarg.h | 50 + .../19.1.0/renderscript/clang-include/stdbool.h | 44 + .../19.1.0/renderscript/clang-include/stddef.h | 102 + .../19.1.0/renderscript/clang-include/stdint.h | 708 + .../renderscript/clang-include/stdnoreturn.h | 30 + .../19.1.0/renderscript/clang-include/tgmath.h | 1374 + .../19.1.0/renderscript/clang-include/tmmintrin.h | 225 + .../19.1.0/renderscript/clang-include/unwind.h | 133 + .../19.1.0/renderscript/clang-include/varargs.h | 26 + .../19.1.0/renderscript/clang-include/wmmintrin.h | 42 + .../19.1.0/renderscript/clang-include/x86intrin.h | 75 + .../19.1.0/renderscript/clang-include/xmmintrin.h | 1001 + .../19.1.0/renderscript/clang-include/xopintrin.h | 804 + .../19.1.0/renderscript/include/rs_allocation.rsh | 378 + .../19.1.0/renderscript/include/rs_atomic.rsh | 250 + .../19.1.0/renderscript/include/rs_cl.rsh | 1120 + .../19.1.0/renderscript/include/rs_core.rsh | 189 + .../19.1.0/renderscript/include/rs_debug.rsh | 267 + .../19.1.0/renderscript/include/rs_element.rsh | 143 + .../19.1.0/renderscript/include/rs_graphics.rsh | 421 + .../19.1.0/renderscript/include/rs_math.rsh | 251 + .../19.1.0/renderscript/include/rs_matrix.rsh | 378 + .../19.1.0/renderscript/include/rs_mesh.rsh | 88 + .../19.1.0/renderscript/include/rs_object.rsh | 220 + .../19.1.0/renderscript/include/rs_program.rsh | 118 + .../19.1.0/renderscript/include/rs_quaternion.rsh | 253 + .../19.1.0/renderscript/include/rs_sampler.rsh | 77 + .../19.1.0/renderscript/include/rs_time.rsh | 111 + .../19.1.0/renderscript/include/rs_types.rsh | 628 + .../renderscript/lib/bc/armeabi-v7a/libclcore.bc | Bin 0 -> 174112 bytes .../19.1.0/renderscript/lib/bc/mips/libclcore.bc | Bin 0 -> 174112 bytes .../lib/intermediates/armeabi-v7a/libc.so | Bin 0 -> 306404 bytes .../lib/intermediates/armeabi-v7a/libcompiler_rt.a | Bin 0 -> 284572 bytes .../lib/intermediates/armeabi-v7a/libm.so | Bin 0 -> 103692 bytes .../renderscript/lib/intermediates/mips/libc.so | Bin 0 -> 545564 bytes .../lib/intermediates/mips/libcompiler_rt.a | Bin 0 -> 399274 bytes .../renderscript/lib/intermediates/mips/libm.so | Bin 0 -> 136844 bytes .../lib/packaged/armeabi-v7a/libRSSupport.so | Bin 0 -> 338204 bytes .../lib/packaged/armeabi-v7a/librsjni.so | Bin 0 -> 22564 bytes .../renderscript/lib/packaged/mips/libRSSupport.so | Bin 0 -> 536800 bytes .../renderscript/lib/packaged/mips/librsjni.so | Bin 0 -> 71912 bytes .../19.1.0/renderscript/lib/renderscript-v8.jar | Bin 0 -> 136431 bytes .../build-tools/19.1.0/source.properties | 7 + .../android-win/build-tools/19.1.0/zipalign.exe | Bin 0 -> 166400 bytes .../tools/android-win/platform-tools/AdbWinApi.dll | Bin 0 -> 96256 bytes .../android-win/platform-tools/AdbWinUsbApi.dll | Bin 0 -> 60928 bytes .../tools/android-win/platform-tools/NOTICE.txt | 15551 ++++ .../tools/tools/android-win/platform-tools/adb.exe | Bin 0 -> 1011200 bytes .../platform-tools/api/api-versions.xml | 57543 ++++++++++++++ .../android-win/platform-tools/dmtracedump.exe | Bin 0 -> 73728 bytes .../tools/android-win/platform-tools/etc1tool.exe | Bin 0 -> 338944 bytes .../tools/android-win/platform-tools/fastboot.exe | Bin 0 -> 196608 bytes .../android-win/platform-tools/hprof-conv.exe | Bin 0 -> 43008 bytes .../android-win/platform-tools/source.properties | 7 + .../tools/android-win/platform-tools/sqlite3.exe | Bin 0 -> 700928 bytes .../android-win/platform-tools/systrace/AUTHORS | 12 + .../android-win/platform-tools/systrace/LICENSE | 27 + .../android-win/platform-tools/systrace/NOTICE | 205 + .../platform-tools/systrace/UPSTREAM_REVISION | 1 + .../platform-tools/systrace/prefix.html | 38 + .../android-win/platform-tools/systrace/script.js | 546 + .../android-win/platform-tools/systrace/style.css | 1 + .../platform-tools/systrace/suffix.html | 5 + .../platform-tools/systrace/systrace-legacy.py | 251 + .../platform-tools/systrace/systrace.py | 313 + .../android-win/platforms/android-19/android.jar | Bin 0 -> 21841425 bytes .../android-win/platforms/android-19/build.prop | 54 + .../platforms/android-19/framework.aidl | 57 + .../platforms/android-19/sdk.properties | 5 + .../platforms/android-19/source.properties | 12 + .../platforms/android-19/uiautomator.jar | Bin 0 -> 10081 bytes .../tools/tools/android-win/tools/NOTICE.txt | 15749 ++++ .../tools/tools/android-win/tools/android.bat | 85 + .../tools/tools/android-win/tools/ant/NOTICE | 190 + .../tools/tools/android-win/tools/ant/build.xml | 1534 + .../tools/tools/android-win/tools/ant/uibuild.xml | 260 + .../tools/apps/SdkController/.classpath | 8 + .../android-win/tools/apps/SdkController/.project | 34 + .../.settings/org.eclipse.jdt.core.prefs | 12 + .../tools/apps/SdkController/AndroidManifest.xml | 44 + .../tools/apps/SdkController/Implementation.txt | 85 + .../android-win/tools/apps/SdkController/NOTICE | 190 + .../apps/SdkController/assets/intro_help.html | 42 + .../tools/apps/SdkController/proguard-project.txt | 20 + .../tools/apps/SdkController/project.properties | 14 + .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 9397 bytes .../res/drawable-ldpi/ic_launcher.png | Bin 0 -> 2729 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 5237 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 14383 bytes .../apps/SdkController/res/layout-land/sensors.xml | 168 + .../tools/apps/SdkController/res/layout/main.xml | 116 + .../apps/SdkController/res/layout/multitouch.xml | 32 + .../apps/SdkController/res/layout/sensor_row.xml | 42 + .../apps/SdkController/res/layout/sensors.xml | 130 + .../SdkController/res/values-v11/styles_v11.xml | 26 + .../apps/SdkController/res/values/strings.xml | 48 + .../tools/apps/SdkController/res/values/styles.xml | 26 + .../activities/BaseBindingActivity.java | 159 + .../sdkcontroller/activities/MainActivity.java | 208 + .../activities/MultiTouchActivity.java | 388 + .../sdkcontroller/activities/SensorActivity.java | 338 + .../sdkcontroller/handlers/MultiTouchChannel.java | 173 + .../sdkcontroller/handlers/SensorChannel.java | 675 + .../android/tools/sdkcontroller/lib/Channel.java | 795 + .../tools/sdkcontroller/lib/Connection.java | 412 + .../tools/sdkcontroller/lib/ProtocolConstants.java | 146 + .../android/tools/sdkcontroller/lib/Socket.java | 213 + .../sdkcontroller/service/ControllerService.java | 319 + .../tools/sdkcontroller/utils/ApiHelper.java | 57 + .../tools/sdkcontroller/utils/ApiHelper_11.java | 36 + .../tools/sdkcontroller/views/MultiTouchView.java | 232 + love2dToAPK/tools/tools/android-win/tools/ddms.bat | 74 + .../tools/tools/android-win/tools/draw9patch.bat | 46 + .../tools/android-win/tools/hierarchyviewer.bat | 75 + love2dToAPK/tools/tools/android-win/tools/jobb.bat | 51 + .../tools/tools/android-win/tools/lib/android.el | 131 + .../android-win/tools/lib/annotations-12.0.jar | Bin 0 -> 20195 bytes .../tools/android-win/tools/lib/annotations.jar | Bin 0 -> 4220 bytes .../tools/android-win/tools/lib/ant-tasks.jar | Bin 0 -> 102368 bytes .../tools/android-win/tools/lib/archquery.jar | Bin 0 -> 1462 bytes .../tools/android-win/tools/lib/asm-5.0.3.jar | Bin 0 -> 53231 bytes .../android-win/tools/lib/asm-analysis-5.0.3.jar | Bin 0 -> 20443 bytes .../tools/android-win/tools/lib/asm-tree-5.0.3.jar | Bin 0 -> 29036 bytes .../tools/android-win/tools/lib/asset-studio.jar | Bin 0 -> 842447 bytes .../tools/android-win/tools/lib/build.template | 92 + .../android-win/tools/lib/build_gradle.template | 21 + .../tools/android-win/tools/lib/builder-model.jar | Bin 0 -> 20359 bytes .../android-win/tools/lib/cglib-nodep-3.1.jar | Bin 0 -> 331202 bytes .../tools/android-win/tools/lib/chimpchat.jar | Bin 0 -> 52629 bytes .../tools/tools/android-win/tools/lib/common.jar | Bin 0 -> 87532 bytes .../android-win/tools/lib/commons-codec-1.4.jar | Bin 0 -> 58160 bytes .../tools/lib/commons-compress-1.8.1.jar | Bin 0 -> 365552 bytes .../tools/lib/commons-logging-1.1.1.jar | Bin 0 -> 60686 bytes .../tools/tools/android-win/tools/lib/ddmlib.jar | Bin 0 -> 290394 bytes .../tools/tools/android-win/tools/lib/ddms.jar | Bin 0 -> 124370 bytes .../tools/tools/android-win/tools/lib/ddmuilib.jar | Bin 0 -> 597108 bytes .../tools/tools/android-win/tools/lib/devices.xml | 595 + .../tools/android-win/tools/lib/draw9patch.jar | Bin 0 -> 70529 bytes .../tools/tools/android-win/tools/lib/dvlib.jar | Bin 0 -> 19963 bytes .../tools/android-win/tools/lib/easymock-3.3.jar | Bin 0 -> 126613 bytes .../tools/android-win/tools/lib/ecj-4.4.2.jar | Bin 0 -> 2310271 bytes .../tools/tools/android-win/tools/lib/emma.jar | Bin 0 -> 428218 bytes .../tools/tools/android-win/tools/lib/emma_ant.jar | Bin 0 -> 38232 bytes .../tools/android-win/tools/lib/emma_device.jar | Bin 0 -> 447350 bytes .../tools/tools/android-win/tools/lib/fat32lib.jar | Bin 0 -> 71904 bytes .../tools/android-win/tools/lib/find_java.bat | 68 + .../tools/android-win/tools/lib/find_java32.exe | Bin 0 -> 726124 bytes .../tools/android-win/tools/lib/find_java64.exe | Bin 0 -> 954370 bytes .../tools/android-win/tools/lib/gson-2.2.4.jar | Bin 0 -> 190432 bytes .../tools/android-win/tools/lib/guava-17.0.jar | Bin 0 -> 2243036 bytes .../android-win/tools/lib/hamcrest-core-1.3.jar | Bin 0 -> 45024 bytes .../android-win/tools/lib/hierarchyviewer2.jar | Bin 0 -> 32695 bytes .../android-win/tools/lib/hierarchyviewer2lib.jar | Bin 0 -> 407189 bytes .../android-win/tools/lib/httpclient-4.1.1.jar | Bin 0 -> 351132 bytes .../tools/android-win/tools/lib/httpcore-4.1.jar | Bin 0 -> 181041 bytes .../tools/android-win/tools/lib/httpmime-4.1.jar | Bin 0 -> 26813 bytes .../tools/android-win/tools/lib/jcommon-1.0.12.jar | Bin 0 -> 309245 bytes .../android-win/tools/lib/jfreechart-1.0.9.jar | Bin 0 -> 1291498 bytes .../android-win/tools/lib/jfreechart-swt-1.0.9.jar | Bin 0 -> 73010 bytes .../tools/tools/android-win/tools/lib/jobb.jar | Bin 0 -> 36332 bytes .../tools/android-win/tools/lib/jsilver-1.0.0.jar | Bin 0 -> 545459 bytes .../tools/android-win/tools/lib/junit-4.12.jar | Bin 0 -> 314932 bytes .../tools/android-win/tools/lib/kxml2-2.3.0.jar | Bin 0 -> 43858 bytes .../tools/android-win/tools/lib/layoutlib-api.jar | Bin 0 -> 82562 bytes .../tools/lib/libemugl_test_shared_library.dll | Bin 0 -> 195307 bytes .../tools/tools/android-win/tools/lib/lint-api.jar | Bin 0 -> 192626 bytes .../tools/android-win/tools/lib/lint-checks.jar | Bin 0 -> 668803 bytes .../tools/android-win/tools/lib/lint-tests.jar | Bin 0 -> 20889 bytes .../tools/tools/android-win/tools/lib/lint.jar | Bin 0 -> 136089 bytes .../android-win/tools/lib/lombok-ast-0.2.3.jar | Bin 0 -> 720633 bytes .../android-win/tools/lib/manifest-merger.jar | Bin 0 -> 171833 bytes .../tools/android-win/tools/lib/monkeyrunner.jar | Bin 0 -> 101761 bytes .../tools/android-win/tools/lib/ninepatch.jar | Bin 0 -> 11485 bytes .../tools/android-win/tools/lib/objenesis-2.1.jar | Bin 0 -> 41755 bytes .../tools/lib/org-eclipse-core-commands-3.6.0.jar | Bin 0 -> 107209 bytes .../tools/lib/org-eclipse-equinox-common-3.6.0.jar | Bin 0 -> 101958 bytes .../tools/lib/org-eclipse-jface-3.6.2.jar | Bin 0 -> 1069483 bytes .../tools/android-win/tools/lib/osgi-4.0.0.jar | Bin 0 -> 1831843 bytes .../tools/android-win/tools/lib/pc-bios/bios.bin | Bin 0 -> 131072 bytes .../tools/lib/pc-bios/vgabios-cirrus.bin | Bin 0 -> 35840 bytes .../tools/tools/android-win/tools/lib/plugin.prop | 3 + .../android-win/tools/lib/proguard-project.txt | 20 + .../tools/tools/android-win/tools/lib/rule-api.jar | Bin 0 -> 39674 bytes .../tools/android-win/tools/lib/screenshot2.jar | Bin 0 -> 5389 bytes .../tools/android-win/tools/lib/sdk-common.jar | Bin 0 -> 448287 bytes .../tools/tools/android-win/tools/lib/sdklib.jar | Bin 0 -> 734357 bytes .../tools/android-win/tools/lib/sdkmanager.jar | Bin 0 -> 30978 bytes .../tools/tools/android-win/tools/lib/sdkstats.jar | Bin 0 -> 16833 bytes .../tools/tools/android-win/tools/lib/sdkuilib.jar | Bin 0 -> 482727 bytes .../tools/android-win/tools/lib/swtmenubar.jar | Bin 0 -> 18580 bytes .../tools/android-win/tools/lib/traceview.jar | Bin 0 -> 137241 bytes .../android-win/tools/lib/uiautomatorviewer.jar | Bin 0 -> 67649 bytes .../tools/android-win/tools/lib/uibuild.template | 92 + love2dToAPK/tools/tools/android-win/tools/lint.bat | 58 + .../tools/tools/android-win/tools/mksdcard.exe | Bin 0 -> 230163 bytes .../tools/tools/android-win/tools/monitor.bat | 32 + .../tools/tools/android-win/tools/monkeyrunner.bat | 63 + .../tools/tools/android-win/tools/proguard/README | 41 + .../android-win/tools/proguard/ant/task.properties | 2 + .../tools/proguard/examples/android.pro | 149 + .../proguard/examples/annotations/examples.pro | 60 + .../examples/annotations/examples/Applet.java | 22 + .../examples/annotations/examples/Application.java | 20 + .../examples/annotations/examples/Bean.java | 56 + .../annotations/examples/NativeCallBack.java | 44 + .../examples/annotations/lib/annotations.jar | Bin 0 -> 6123 bytes .../examples/annotations/lib/annotations.pro | 118 + .../annotations/src/proguard/annotation/Keep.java | 18 + .../src/proguard/annotation/KeepApplication.java | 18 + .../proguard/annotation/KeepClassMemberNames.java | 18 + .../src/proguard/annotation/KeepClassMembers.java | 18 + .../proguard/annotation/KeepGettersSetters.java | 18 + .../proguard/annotation/KeepImplementations.java | 18 + .../src/proguard/annotation/KeepName.java | 18 + .../annotation/KeepPublicClassMemberNames.java | 18 + .../annotation/KeepPublicClassMembers.java | 18 + .../annotation/KeepPublicGettersSetters.java | 18 + .../annotation/KeepPublicImplementations.java | 18 + .../KeepPublicProtectedClassMemberNames.java | 18 + .../KeepPublicProtectedClassMembers.java | 19 + .../tools/proguard/examples/ant/android-8.xml | 177 + .../tools/proguard/examples/ant/applets.xml | 88 + .../tools/proguard/examples/ant/applications1.xml | 15 + .../tools/proguard/examples/ant/applications2.xml | 74 + .../tools/proguard/examples/ant/applications3.xml | 98 + .../tools/proguard/examples/ant/library.xml | 102 + .../tools/proguard/examples/ant/midlets.xml | 52 + .../tools/proguard/examples/ant/proguard.xml | 78 + .../tools/proguard/examples/ant/servlets.xml | 88 + .../tools/proguard/examples/applets.pro | 69 + .../tools/proguard/examples/applications.pro | 75 + .../proguard/examples/dictionaries/compact.txt | 18 + .../proguard/examples/dictionaries/keywords.txt | 58 + .../proguard/examples/dictionaries/shakespeare.txt | 23 + .../proguard/examples/dictionaries/windows.txt | 209 + .../tools/proguard/examples/library.pro | 79 + .../tools/proguard/examples/midlets.pro | 67 + .../tools/proguard/examples/proguard.pro | 57 + .../tools/proguard/examples/proguardall.pro | 62 + .../tools/proguard/examples/proguardgui.pro | 50 + .../tools/proguard/examples/retrace.pro | 43 + .../android-win/tools/proguard/examples/scala.pro | 132 + .../tools/proguard/examples/servlets.pro | 70 + .../android-win/tools/proguard/lib/proguard.jar | Bin 0 -> 716008 bytes .../android-win/tools/proguard/lib/proguardgui.jar | Bin 0 -> 138390 bytes .../android-win/tools/proguard/lib/retrace.jar | Bin 0 -> 6894 bytes .../tools/android-win/tools/proguard/license.html | 49 + .../tools/proguard/proguard-android-optimize.txt | 64 + .../tools/proguard/proguard-android.txt | 57 + .../tools/proguard/proguard-project.txt | 20 + .../tools/android-win/tools/source.properties | 3 + .../android-win/tools/support/annotations.jar | Bin 0 -> 1351 bytes .../tools/android-win/tools/support/typos-de.txt | 2219 + .../tools/android-win/tools/support/typos-en.txt | 4576 ++ .../tools/android-win/tools/support/typos-es.txt | 733 + .../tools/android-win/tools/support/typos-hu.txt | 431 + .../tools/android-win/tools/support/typos-it.txt | 665 + .../tools/android-win/tools/support/typos-nb.txt | 449 + .../tools/android-win/tools/support/typos-pt.txt | 1647 + .../tools/android-win/tools/support/typos-tr.txt | 604 + .../activities/BlankActivity/globals.xml.ftl | 11 + .../activities/BlankActivity/recipe.xml.ftl | 28 + .../BlankActivity/root/AndroidManifest.xml.ftl | 24 + .../root/res/layout/activity_simple.xml.ftl | 16 + .../BlankActivity/root/res/menu/main.xml.ftl | 9 + .../root/res/values-w820dp/dimens.xml | 6 + .../BlankActivity/root/res/values/dimens.xml.ftl | 5 + .../BlankActivity/root/res/values/strings.xml.ftl | 9 + .../root/src/app_package/SimpleActivity.java.ftl | 35 + .../activities/BlankActivity/template.xml | 71 + .../BlankActivity/template_blank_activity.png | Bin 0 -> 3264 bytes .../BlankActivityWithFragment/globals.xml.ftl | 11 + .../BlankActivityWithFragment/recipe.xml.ftl | 31 + .../root/AndroidManifest.xml.ftl | 24 + .../res/layout/activity_fragment_container.xml.ftl | 7 + .../root/res/layout/fragment_simple.xml.ftl | 16 + .../root/res/menu/main.xml.ftl | 9 + .../root/res/values-w820dp/dimens.xml | 6 + .../root/res/values/dimens.xml.ftl | 5 + .../root/res/values/strings.xml.ftl | 7 + .../root/src/app_package/SimpleActivity.java.ftl | 32 + .../root/src/app_package/include_fragment.java.ftl | 15 + .../src/app_package/include_options_menu.java.ftl | 19 + .../BlankActivityWithFragment/template.xml | 80 + .../template_blank_activity_fragment.png | Bin 0 -> 4983 bytes .../activities/EmptyActivity/globals.xml.ftl | 7 + .../activities/EmptyActivity/recipe.xml.ftl | 17 + .../EmptyActivity/root/AndroidManifest.xml.ftl | 20 + .../root/res/layout/activity_simple.xml | 12 + .../EmptyActivity/root/res/values/strings.xml.ftl | 6 + .../root/src/app_package/SimpleActivity.java.ftl | 15 + .../activities/EmptyActivity/template.xml | 63 + .../EmptyActivity/template_blank_activity.png | Bin 0 -> 3264 bytes .../activities/FullscreenActivity/globals.xml.ftl | 9 + .../activities/FullscreenActivity/recipe.xml.ftl | 32 + .../root/AndroidManifest.xml.ftl | 26 + .../root/res/layout/activity_fullscreen.xml.ftl | 46 + .../root/res/values-v11/styles.xml | 15 + .../FullscreenActivity/root/res/values/attrs.xml | 12 + .../FullscreenActivity/root/res/values/colors.xml | 5 + .../root/res/values/strings.xml.ftl | 9 + .../FullscreenActivity/root/res/values/styles.xml | 22 + .../src/app_package/FullscreenActivity.java.ftl | 198 + .../src/app_package/util/SystemUiHider.java.ftl | 172 + .../app_package/util/SystemUiHiderBase.java.ftl | 63 + .../util/SystemUiHiderHoneycomb.java.ftl | 133 + .../activities/FullscreenActivity/template.xml | 68 + .../template_fullscreen_activity.png | Bin 0 -> 16885 bytes .../activities/LoginActivity/globals.xml.ftl | 10 + .../activities/LoginActivity/recipe.xml.ftl | 28 + .../LoginActivity/root/AndroidManifest.xml.ftl | 37 + .../root/res/layout/activity_login.xml.ftl | 108 + .../LoginActivity/root/res/values/dimens.xml | 5 + .../LoginActivity/root/res/values/strings.xml.ftl | 17 + .../root/src/app_package/LoginActivity.java.ftl | 449 + .../root/src/app_package/PlusBaseActivity.java.ftl | 282 + .../activities/LoginActivity/template.xml | 68 + .../LoginActivity/template_login_activity.png | Bin 0 -> 5939 bytes .../activities/MasterDetailFlow/globals.xml.ftl | 14 + .../activities/MasterDetailFlow/recipe.xml.ftl | 37 + .../MasterDetailFlow/root/AndroidManifest.xml.ftl | 31 + .../res/layout/activity_content_detail.xml.ftl | 7 + .../root/res/layout/activity_content_list.xml.ftl | 10 + .../res/layout/activity_content_twopane.xml.ftl | 38 + .../res/layout/fragment_content_detail.xml.ftl | 9 + .../root/res/values-large/refs.xml.ftl | 10 + .../root/res/values-sw600dp/refs.xml.ftl | 11 + .../root/res/values/strings.xml.ftl | 6 + .../src/app_package/ContentDetailActivity.java.ftl | 78 + .../src/app_package/ContentDetailFragment.java.ftl | 62 + .../src/app_package/ContentListActivity.java.ftl | 106 + .../src/app_package/ContentListFragment.java.ftl | 152 + .../src/app_package/dummy/DummyContent.java.ftl | 55 + .../activities/MasterDetailFlow/template.xml | 68 + .../MasterDetailFlow/template_master_detail.png | Bin 0 -> 7173 bytes .../NavigationDrawerActivity/globals.xml.ftl | 12 + .../NavigationDrawerActivity/recipe.xml.ftl | 49 + .../root/AndroidManifest.xml.ftl | 24 + .../NavigationDrawerActivity/root/build.gradle.ftl | 7 + .../root/res/drawable-hdpi/drawer_shadow.9.png | Bin 0 -> 161 bytes .../root/res/drawable-hdpi/ic_drawer.png | Bin 0 -> 2829 bytes .../root/res/drawable-mdpi/drawer_shadow.9.png | Bin 0 -> 142 bytes .../root/res/drawable-mdpi/ic_drawer.png | Bin 0 -> 2820 bytes .../root/res/drawable-xhdpi/drawer_shadow.9.png | Bin 0 -> 174 bytes .../root/res/drawable-xhdpi/ic_drawer.png | Bin 0 -> 2836 bytes .../root/res/drawable-xxhdpi/drawer_shadow.9.png | Bin 0 -> 208 bytes .../root/res/drawable-xxhdpi/ic_drawer.png | Bin 0 -> 202 bytes .../root/res/layout/activity_drawer.xml.ftl | 31 + .../res/layout/fragment_navigation_drawer.xml.ftl | 9 + .../root/res/layout/fragment_simple.xml.ftl | 16 + .../root/res/menu/global.xml.ftl | 7 + .../root/res/menu/main.xml.ftl | 12 + .../root/res/values-w820dp/dimens.xml | 6 + .../root/res/values/dimens.xml.ftl | 9 + .../root/res/values/strings.xml.ftl | 17 + .../root/src/app_package/DrawerActivity.java.ftl | 84 + .../app_package/NavigationDrawerFragment.java.ftl | 282 + .../root/src/app_package/include_fragment.java.ftl | 43 + .../src/app_package/include_options_menu.java.ftl | 25 + .../NavigationDrawerActivity/template.xml | 87 + .../template_blank_activity_drawer.png | Bin 0 -> 2631 bytes .../activities/SettingsActivity/globals.xml.ftl | 9 + .../activities/SettingsActivity/recipe.xml.ftl | 24 + .../SettingsActivity/root/AndroidManifest.xml.ftl | 18 + .../root/res/values/strings.xml.ftl | 61 + .../root/res/xml/pref_data_sync.xml | 21 + .../SettingsActivity/root/res/xml/pref_general.xml | 33 + .../root/res/xml/pref_headers.xml.ftl | 17 + .../root/res/xml/pref_notification.xml | 27 + .../root/src/app_package/SettingsActivity.java.ftl | 296 + .../activities/SettingsActivity/template.xml | 56 + .../template_settings_activity.png | Bin 0 -> 6260 bytes .../activities/TabbedActivity/globals.xml.ftl | 12 + .../activities/TabbedActivity/recipe.xml.ftl | 47 + .../TabbedActivity/root/AndroidManifest.xml.ftl | 24 + .../res/layout/activity_fragment_container.xml.ftl | 7 + .../root/res/layout/activity_pager.xml.ftl | 6 + .../root/res/layout/fragment_simple.xml.ftl | 16 + .../TabbedActivity/root/res/menu/main.xml.ftl | 9 + .../root/res/values-w820dp/dimens.xml | 6 + .../TabbedActivity/root/res/values/dimens.xml.ftl | 5 + .../TabbedActivity/root/res/values/strings.xml.ftl | 14 + .../root/src/app_package/DropdownActivity.java.ftl | 86 + .../src/app_package/TabsAndPagerActivity.java.ftl | 139 + .../root/src/app_package/include_fragment.java.ftl | 36 + .../src/app_package/include_options_menu.java.ftl | 19 + .../activities/TabbedActivity/template.xml | 95 + .../template_blank_activity_dropdown.png | Bin 0 -> 3824 bytes .../template_blank_activity_pager.png | Bin 0 -> 2600 bytes .../template_blank_activity_tabs.png | Bin 0 -> 3732 bytes .../templates/gradle/utils/dependencies.gradle.ftl | 7 + .../wrapper/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 49896 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + .../tools/templates/gradle/wrapper/gradlew | 164 + .../tools/templates/gradle/wrapper/gradlew.bat | 90 + .../tools/templates/other/AidlFile/recipe.xml.ftl | 7 + .../root/src/app_package/interface.aidl.ftl | 13 + .../tools/templates/other/AidlFile/template.xml | 21 + .../templates/other/AidlFolder/recipe.xml.ftl | 12 + .../other/AidlFolder/root/build.gradle.ftl | 1 + .../tools/templates/other/AidlFolder/template.xml | 30 + .../templates/other/AndroidManifest/recipe.xml.ftl | 14 + .../AndroidManifest/root/AndroidManifest.xml.ftl | 8 + .../other/AndroidManifest/root/build.gradle.ftl | 3 + .../templates/other/AndroidManifest/template.xml | 30 + .../templates/other/AppWidget/globals.xml.ftl | 8 + .../tools/templates/other/AppWidget/recipe.xml.ftl | 35 + .../other/AppWidget/root/AndroidManifest.xml.ftl | 25 + .../drawable-nodpi/example_appwidget_preview.png | Bin 0 -> 3522 bytes .../other/AppWidget/root/res/layout/appwidget.xml | 21 + .../root/res/layout/appwidget_configure.xml | 27 + .../other/AppWidget/root/res/values-v14/dimens.xml | 10 + .../other/AppWidget/root/res/values/dimens.xml | 10 + .../AppWidget/root/res/values/strings.xml.ftl | 8 + .../AppWidget/root/res/xml/appwidget_info.xml.ftl | 27 + .../root/src/app_package/AppWidget.java.ftl | 63 + .../AppWidgetConfigureActivity.java.ftl | 101 + .../tools/templates/other/AppWidget/template.xml | 148 + .../other/AppWidget/thumbs/template_widget_1x1.png | Bin 0 -> 2960 bytes .../AppWidget/thumbs/template_widget_1x1_h.png | Bin 0 -> 3750 bytes .../AppWidget/thumbs/template_widget_1x1_v.png | Bin 0 -> 3787 bytes .../AppWidget/thumbs/template_widget_1x1_vh.png | Bin 0 -> 4004 bytes .../other/AppWidget/thumbs/template_widget_1x2.png | Bin 0 -> 3010 bytes .../AppWidget/thumbs/template_widget_1x2_h.png | Bin 0 -> 3771 bytes .../AppWidget/thumbs/template_widget_1x2_v.png | Bin 0 -> 3835 bytes .../AppWidget/thumbs/template_widget_1x2_vh.png | Bin 0 -> 4065 bytes .../other/AppWidget/thumbs/template_widget_1x3.png | Bin 0 -> 3058 bytes .../AppWidget/thumbs/template_widget_1x3_h.png | Bin 0 -> 3830 bytes .../AppWidget/thumbs/template_widget_1x3_v.png | Bin 0 -> 3880 bytes .../AppWidget/thumbs/template_widget_1x3_vh.png | Bin 0 -> 4120 bytes .../other/AppWidget/thumbs/template_widget_1x4.png | Bin 0 -> 3114 bytes .../AppWidget/thumbs/template_widget_1x4_h.png | Bin 0 -> 3880 bytes .../AppWidget/thumbs/template_widget_1x4_v.png | Bin 0 -> 3944 bytes .../AppWidget/thumbs/template_widget_1x4_vh.png | Bin 0 -> 4178 bytes .../other/AppWidget/thumbs/template_widget_2x1.png | Bin 0 -> 2973 bytes .../AppWidget/thumbs/template_widget_2x1_h.png | Bin 0 -> 3765 bytes .../AppWidget/thumbs/template_widget_2x1_v.png | Bin 0 -> 3794 bytes .../AppWidget/thumbs/template_widget_2x1_vh.png | Bin 0 -> 4020 bytes .../other/AppWidget/thumbs/template_widget_2x2.png | Bin 0 -> 3023 bytes .../AppWidget/thumbs/template_widget_2x2_h.png | Bin 0 -> 3784 bytes .../AppWidget/thumbs/template_widget_2x2_v.png | Bin 0 -> 3842 bytes .../AppWidget/thumbs/template_widget_2x2_vh.png | Bin 0 -> 4062 bytes .../other/AppWidget/thumbs/template_widget_2x3.png | Bin 0 -> 3047 bytes .../AppWidget/thumbs/template_widget_2x3_h.png | Bin 0 -> 3849 bytes .../AppWidget/thumbs/template_widget_2x3_v.png | Bin 0 -> 3890 bytes .../AppWidget/thumbs/template_widget_2x3_vh.png | Bin 0 -> 4133 bytes .../other/AppWidget/thumbs/template_widget_2x4.png | Bin 0 -> 3071 bytes .../AppWidget/thumbs/template_widget_2x4_h.png | Bin 0 -> 3888 bytes .../AppWidget/thumbs/template_widget_2x4_v.png | Bin 0 -> 3946 bytes .../AppWidget/thumbs/template_widget_2x4_vh.png | Bin 0 -> 4168 bytes .../other/AppWidget/thumbs/template_widget_3x1.png | Bin 0 -> 2950 bytes .../AppWidget/thumbs/template_widget_3x1_h.png | Bin 0 -> 3728 bytes .../AppWidget/thumbs/template_widget_3x1_v.png | Bin 0 -> 3777 bytes .../AppWidget/thumbs/template_widget_3x1_vh.png | Bin 0 -> 3987 bytes .../other/AppWidget/thumbs/template_widget_3x2.png | Bin 0 -> 2995 bytes .../AppWidget/thumbs/template_widget_3x2_h.png | Bin 0 -> 3747 bytes .../AppWidget/thumbs/template_widget_3x2_v.png | Bin 0 -> 3811 bytes .../AppWidget/thumbs/template_widget_3x2_vh.png | Bin 0 -> 4045 bytes .../other/AppWidget/thumbs/template_widget_3x3.png | Bin 0 -> 3035 bytes .../AppWidget/thumbs/template_widget_3x3_h.png | Bin 0 -> 3790 bytes .../AppWidget/thumbs/template_widget_3x3_v.png | Bin 0 -> 3844 bytes .../AppWidget/thumbs/template_widget_3x3_vh.png | Bin 0 -> 4080 bytes .../other/AppWidget/thumbs/template_widget_3x4.png | Bin 0 -> 3051 bytes .../AppWidget/thumbs/template_widget_3x4_h.png | Bin 0 -> 3819 bytes .../AppWidget/thumbs/template_widget_3x4_v.png | Bin 0 -> 3887 bytes .../AppWidget/thumbs/template_widget_3x4_vh.png | Bin 0 -> 4120 bytes .../other/AppWidget/thumbs/template_widget_4x1.png | Bin 0 -> 2925 bytes .../AppWidget/thumbs/template_widget_4x1_h.png | Bin 0 -> 3710 bytes .../AppWidget/thumbs/template_widget_4x1_v.png | Bin 0 -> 3747 bytes .../AppWidget/thumbs/template_widget_4x1_vh.png | Bin 0 -> 3973 bytes .../other/AppWidget/thumbs/template_widget_4x2.png | Bin 0 -> 2931 bytes .../AppWidget/thumbs/template_widget_4x2_h.png | Bin 0 -> 3667 bytes .../AppWidget/thumbs/template_widget_4x2_v.png | Bin 0 -> 3730 bytes .../AppWidget/thumbs/template_widget_4x2_vh.png | Bin 0 -> 3960 bytes .../other/AppWidget/thumbs/template_widget_4x3.png | Bin 0 -> 2934 bytes .../AppWidget/thumbs/template_widget_4x3_h.png | Bin 0 -> 3696 bytes .../AppWidget/thumbs/template_widget_4x3_v.png | Bin 0 -> 3723 bytes .../AppWidget/thumbs/template_widget_4x3_vh.png | Bin 0 -> 3994 bytes .../other/AppWidget/thumbs/template_widget_4x4.png | Bin 0 -> 2938 bytes .../AppWidget/thumbs/template_widget_4x4_h.png | Bin 0 -> 3639 bytes .../AppWidget/thumbs/template_widget_4x4_v.png | Bin 0 -> 3717 bytes .../AppWidget/thumbs/template_widget_4x4_vh.png | Bin 0 -> 3932 bytes .../templates/other/AssetsFolder/recipe.xml.ftl | 12 + .../other/AssetsFolder/root/build.gradle.ftl | 1 + .../templates/other/AssetsFolder/template.xml | 30 + .../templates/other/BlankFragment/globals.xml.ftl | 7 + .../templates/other/BlankFragment/recipe.xml.ftl | 19 + .../root/res/layout/fragment_blank.xml.ftl | 13 + .../BlankFragment/root/res/values/strings.xml | 6 + .../root/src/app_package/BlankFragment.java.ftl | 130 + .../templates/other/BlankFragment/template.xml | 60 + .../BlankFragment/template_blank_fragment.png | Bin 0 -> 5266 bytes .../other/BroadcastReceiver/globals.xml.ftl | 6 + .../other/BroadcastReceiver/recipe.xml.ftl | 8 + .../BroadcastReceiver/root/AndroidManifest.xml.ftl | 10 + .../src/app_package/BroadcastReceiver.java.ftl | 17 + .../templates/other/BroadcastReceiver/template.xml | 32 + .../other/ContentProvider/globals.xml.ftl | 6 + .../templates/other/ContentProvider/recipe.xml.ftl | 8 + .../ContentProvider/root/AndroidManifest.xml.ftl | 11 + .../root/src/app_package/ContentProvider.java.ftl | 50 + .../templates/other/ContentProvider/template.xml | 40 + .../templates/other/CustomView/globals.xml.ftl | 6 + .../templates/other/CustomView/recipe.xml.ftl | 13 + .../CustomView/root/res/layout/sample.xml.ftl | 22 + .../other/CustomView/root/res/values/attrs.xml.ftl | 8 + .../root/src/app_package/CustomView.java.ftl | 182 + .../tools/templates/other/CustomView/template.xml | 28 + .../tools/templates/other/Daydream/globals.xml.ftl | 11 + .../tools/templates/other/Daydream/recipe.xml.ftl | 28 + .../other/Daydream/root/AndroidManifest.xml.ftl | 28 + .../other/Daydream/root/res/layout-v17/dream.xml | 13 + .../other/Daydream/root/res/values/strings.xml.ftl | 7 + .../other/Daydream/root/res/xml/dream_prefs.xml | 9 + .../other/Daydream/root/res/xml/xml_dream.xml.ftl | 3 + .../root/src/app_package/DreamService.java.ftl | 141 + .../root/src/app_package/SettingsActivity.java.ftl | 37 + .../tools/templates/other/Daydream/template.xml | 47 + .../templates/other/IntentService/globals.xml.ftl | 6 + .../templates/other/IntentService/recipe.xml.ftl | 8 + .../IntentService/root/AndroidManifest.xml.ftl | 9 + .../root/src/app_package/IntentService.java.ftl | 106 + .../templates/other/IntentService/template.xml | 29 + .../templates/other/JavaFolder/recipe.xml.ftl | 12 + .../other/JavaFolder/root/build.gradle.ftl | 1 + .../tools/templates/other/JavaFolder/template.xml | 30 + .../tools/templates/other/JniFolder/recipe.xml.ftl | 12 + .../other/JniFolder/root/build.gradle.ftl | 1 + .../tools/templates/other/JniFolder/template.xml | 30 + .../other/LayoutResourceFile/recipe.xml.ftl | 7 + .../LayoutResourceFile/root/res/layout.xml.ftl | 6 + .../other/LayoutResourceFile/template.xml | 29 + .../templates/other/ListFragment/globals.xml.ftl | 11 + .../templates/other/ListFragment/recipe.xml.ftl | 28 + .../ListFragment/root/res/layout/fragment_grid.xml | 20 + .../ListFragment/root/res/layout/fragment_list.xml | 19 + .../root/res/values-large/refs_lrg.xml.ftl | 12 + .../root/res/values-sw600dp/refs_lrg.xml.ftl | 12 + .../ListFragment/root/res/values/refs.xml.ftl | 12 + .../ListFragment/root/res/values/refs_lrg.xml.ftl | 12 + .../root/src/app_package/ListFragment.java.ftl | 195 + .../src/app_package/dummy/DummyContent.java.ftl | 55 + .../templates/other/ListFragment/template.xml | 52 + .../other/ListFragment/templates_list_fragment.png | Bin 0 -> 7293 bytes .../templates/other/Notification/globals.xml.ftl | 10 + .../templates/other/Notification/recipe.xml.ftl | 31 + .../Notification/root/AndroidManifest.xml.ftl | 5 + .../res/drawable-hdpi/ic_action_stat_reply.png | Bin 0 -> 1480 bytes .../res/drawable-hdpi/ic_action_stat_share.png | Bin 0 -> 1606 bytes .../res/drawable-mdpi/ic_action_stat_reply.png | Bin 0 -> 1314 bytes .../res/drawable-mdpi/ic_action_stat_share.png | Bin 0 -> 1341 bytes .../res/drawable-nodpi/example_picture_large.png | Bin 0 -> 5834 bytes .../res/drawable-nodpi/example_picture_small.png | Bin 0 -> 1885 bytes .../res/drawable-xhdpi/ic_action_stat_reply.png | Bin 0 -> 1692 bytes .../res/drawable-xhdpi/ic_action_stat_share.png | Bin 0 -> 1780 bytes .../Notification/root/res/values/strings.xml.ftl | 13 + .../src/app_package/NotificationHelper.java.ftl | 206 + .../templates/other/Notification/template.xml | 58 + .../Notification/template_notification_list.png | Bin 0 -> 7306 bytes .../template_notification_list_actions.png | Bin 0 -> 7850 bytes .../Notification/template_notification_none.png | Bin 0 -> 4146 bytes .../template_notification_none_actions.png | Bin 0 -> 5904 bytes .../Notification/template_notification_picture.png | Bin 0 -> 6308 bytes .../template_notification_picture_actions.png | Bin 0 -> 6749 bytes .../Notification/template_notification_text.png | Bin 0 -> 6695 bytes .../template_notification_text_actions.png | Bin 0 -> 7073 bytes .../other/PlusOneFragment/globals.xml.ftl | 5 + .../templates/other/PlusOneFragment/recipe.xml.ftl | 20 + .../PlusOneFragment/root/AndroidManifest.xml.ftl | 6 + .../root/res/layout/fragment_plus_one.xml.ftl | 15 + .../root/src/app_package/PlusOneFragment.java.ftl | 146 + .../templates/other/PlusOneFragment/template.xml | 45 + .../PlusOneFragment/templates_plusone_fragment.png | Bin 0 -> 6178 bytes .../tools/templates/other/ResFolder/recipe.xml.ftl | 12 + .../other/ResFolder/root/build.gradle.ftl | 1 + .../tools/templates/other/ResFolder/template.xml | 30 + .../templates/other/ResourcesFolder/recipe.xml.ftl | 12 + .../other/ResourcesFolder/root/build.gradle.ftl | 1 + .../templates/other/ResourcesFolder/template.xml | 30 + .../tools/templates/other/RsFolder/recipe.xml.ftl | 12 + .../templates/other/RsFolder/root/build.gradle.ftl | 1 + .../tools/templates/other/RsFolder/template.xml | 30 + .../tools/templates/other/Service/globals.xml.ftl | 6 + .../tools/templates/other/Service/recipe.xml.ftl | 8 + .../other/Service/root/AndroidManifest.xml.ftl | 10 + .../Service/root/src/app_package/Service.java.ftl | 16 + .../tools/templates/other/Service/template.xml | 34 + .../other/ValueResourceFile/recipe.xml.ftl | 7 + .../ValueResourceFile/root/res/values.xml.ftl | 3 + .../templates/other/ValueResourceFile/template.xml | 21 + .../projects/NewAndroidApplication/globals.xml.ftl | 12 + .../projects/NewAndroidApplication/recipe.xml.ftl | 27 + .../root/AndroidManifest.xml.ftl | 15 + .../NewAndroidApplication/root/build.gradle.ftl | 35 + .../root/res/drawable-hdpi/ic_launcher.png | Bin 0 -> 9397 bytes .../root/res/drawable-mdpi/ic_launcher.png | Bin 0 -> 5237 bytes .../root/res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 14383 bytes .../root/res/values-v11/styles_hc.xml.ftl | 13 + .../root/res/values-v14/styles_ics.xml.ftl | 14 + .../root/res/values/strings.xml.ftl | 3 + .../root/res/values/styles.xml.ftl | 22 + .../NewAndroidApplication/root/settings.gradle.ftl | 1 + .../projects/NewAndroidApplication/template.xml | 82 + .../NewAndroidApplication/template_new_project.png | Bin 0 -> 12408 bytes .../projects/NewAndroidLibrary/globals.xml.ftl | 12 + .../projects/NewAndroidLibrary/recipe.xml.ftl | 27 + .../NewAndroidLibrary/root/AndroidManifest.xml.ftl | 15 + .../NewAndroidLibrary/root/build.gradle.ftl | 35 + .../root/res/drawable-hdpi/ic_launcher.png | Bin 0 -> 9397 bytes .../root/res/drawable-mdpi/ic_launcher.png | Bin 0 -> 5237 bytes .../root/res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 14383 bytes .../root/res/values-v11/styles_hc.xml.ftl | 13 + .../root/res/values-v14/styles_ics.xml.ftl | 14 + .../root/res/values/strings.xml.ftl | 3 + .../root/res/values/styles.xml.ftl | 22 + .../NewAndroidLibrary/root/settings.gradle.ftl | 1 + .../projects/NewAndroidLibrary/template.xml | 82 + .../NewAndroidLibrary/template_new_project.png | Bin 0 -> 12408 bytes .../projects/NewJavaLibrary/globals.xml.ftl | 6 + .../projects/NewJavaLibrary/recipe.xml.ftl | 5 + .../projects/NewJavaLibrary/root/build.gradle.ftl | 1 + .../NewJavaLibrary/root/settings.gradle.ftl | 1 + .../root/src/library_package/Placeholder.java.ftl | 4 + .../templates/projects/NewJavaLibrary/template.xml | 38 + .../NewJavaLibrary/template_new_project.png | Bin 0 -> 12408 bytes .../tools/tools/android-win/tools/traceview.bat | 65 + .../tools/android-win/tools/uiautomatorviewer.bat | 66 + love2dToAPK/tools/tools/ant/CONTRIBUTORS | 417 + love2dToAPK/tools/tools/ant/INSTALL | 2 + love2dToAPK/tools/tools/ant/KEYS | 1497 + love2dToAPK/tools/tools/ant/LICENSE | 272 + love2dToAPK/tools/tools/ant/NOTICE | 9 + love2dToAPK/tools/tools/ant/README | 97 + love2dToAPK/tools/tools/ant/WHATSNEW | 6263 ++ love2dToAPK/tools/tools/ant/contributors.xml | 1671 + love2dToAPK/tools/tools/ant/etc/ant-bootstrap.jar | Bin 0 -> 21191 bytes love2dToAPK/tools/tools/ant/etc/changelog.xsl | 148 + .../checkstyle/checkstyle-frames-sortby-check.xsl | 367 + .../tools/ant/etc/checkstyle/checkstyle-frames.xsl | 299 + .../tools/ant/etc/checkstyle/checkstyle-text.xsl | 34 + .../tools/ant/etc/checkstyle/checkstyle-xdoc.xsl | 130 + .../tools/tools/ant/etc/coverage-frames.xsl | 487 + love2dToAPK/tools/tools/ant/etc/jdepend-frames.xsl | 485 + love2dToAPK/tools/tools/ant/etc/jdepend.xsl | 276 + .../tools/tools/ant/etc/junit-frames-xalan1.xsl | 745 + love2dToAPK/tools/tools/ant/etc/junit-frames.xsl | 972 + love2dToAPK/tools/tools/ant/etc/junit-noframes.xsl | 513 + love2dToAPK/tools/tools/ant/etc/log.xsl | 203 + love2dToAPK/tools/tools/ant/etc/maudit-frames.xsl | 502 + .../tools/tools/ant/etc/mmetrics-frames.xsl | 1023 + love2dToAPK/tools/tools/ant/etc/tagdiff.xsl | 179 + love2dToAPK/tools/tools/ant/fetch.xml | 335 + love2dToAPK/tools/tools/ant/get-m2.xml | 121 + love2dToAPK/tools/tools/ant/lib/README | 3 + love2dToAPK/tools/tools/ant/lib/ant-antlr.jar | Bin 0 -> 11608 bytes love2dToAPK/tools/tools/ant/lib/ant-antlr.pom | 75 + .../tools/tools/ant/lib/ant-apache-bcel.jar | Bin 0 -> 15113 bytes .../tools/tools/ant/lib/ant-apache-bcel.pom | 71 + love2dToAPK/tools/tools/ant/lib/ant-apache-bsf.jar | Bin 0 -> 9787 bytes love2dToAPK/tools/tools/ant/lib/ant-apache-bsf.pom | 74 + .../tools/tools/ant/lib/ant-apache-log4j.jar | Bin 0 -> 8635 bytes .../tools/tools/ant/lib/ant-apache-log4j.pom | 69 + love2dToAPK/tools/tools/ant/lib/ant-apache-oro.jar | Bin 0 -> 9748 bytes love2dToAPK/tools/tools/ant/lib/ant-apache-oro.pom | 74 + .../tools/tools/ant/lib/ant-apache-regexp.jar | Bin 0 -> 9611 bytes .../tools/tools/ant/lib/ant-apache-regexp.pom | 70 + .../tools/tools/ant/lib/ant-apache-resolver.jar | Bin 0 -> 9680 bytes .../tools/tools/ant/lib/ant-apache-resolver.pom | 69 + .../tools/tools/ant/lib/ant-apache-xalan2.jar | Bin 0 -> 8142 bytes .../tools/tools/ant/lib/ant-apache-xalan2.pom | 94 + .../tools/tools/ant/lib/ant-commons-logging.jar | Bin 0 -> 9762 bytes .../tools/tools/ant/lib/ant-commons-logging.pom | 70 + .../tools/tools/ant/lib/ant-commons-net.jar | Bin 0 -> 91364 bytes .../tools/tools/ant/lib/ant-commons-net.pom | 75 + love2dToAPK/tools/tools/ant/lib/ant-jai.jar | Bin 0 -> 28264 bytes love2dToAPK/tools/tools/ant/lib/ant-jai.pom | 85 + love2dToAPK/tools/tools/ant/lib/ant-javamail.jar | Bin 0 -> 13841 bytes love2dToAPK/tools/tools/ant/lib/ant-javamail.pom | 78 + love2dToAPK/tools/tools/ant/lib/ant-jdepend.jar | Bin 0 -> 13869 bytes love2dToAPK/tools/tools/ant/lib/ant-jdepend.pom | 72 + love2dToAPK/tools/tools/ant/lib/ant-jmf.jar | Bin 0 -> 12316 bytes love2dToAPK/tools/tools/ant/lib/ant-jmf.pom | 65 + love2dToAPK/tools/tools/ant/lib/ant-jsch.jar | Bin 0 -> 47689 bytes love2dToAPK/tools/tools/ant/lib/ant-jsch.pom | 74 + love2dToAPK/tools/tools/ant/lib/ant-junit.jar | Bin 0 -> 118491 bytes love2dToAPK/tools/tools/ant/lib/ant-junit.pom | 101 + love2dToAPK/tools/tools/ant/lib/ant-junit4.jar | Bin 0 -> 13104 bytes love2dToAPK/tools/tools/ant/lib/ant-junit4.pom | 71 + love2dToAPK/tools/tools/ant/lib/ant-launcher.jar | Bin 0 -> 18392 bytes love2dToAPK/tools/tools/ant/lib/ant-launcher.pom | 57 + love2dToAPK/tools/tools/ant/lib/ant-netrexx.jar | Bin 0 -> 16316 bytes love2dToAPK/tools/tools/ant/lib/ant-netrexx.pom | 98 + love2dToAPK/tools/tools/ant/lib/ant-parent.pom | 151 + love2dToAPK/tools/tools/ant/lib/ant-swing.jar | Bin 0 -> 13316 bytes love2dToAPK/tools/tools/ant/lib/ant-swing.pom | 66 + love2dToAPK/tools/tools/ant/lib/ant-testutil.jar | Bin 0 -> 26975 bytes love2dToAPK/tools/tools/ant/lib/ant-testutil.pom | 74 + love2dToAPK/tools/tools/ant/lib/ant.jar | Bin 0 -> 2029794 bytes love2dToAPK/tools/tools/ant/lib/ant.pom | 225 + .../tools/tools/ant/lib/libraries.properties | 65 + love2dToAPK/tools/tools/ant/patch.xml | 48 + love2dToAPK/tools/tools/jdk-win/COPYRIGHT | 69 + love2dToAPK/tools/tools/jdk-win/LICENSE | 1 + love2dToAPK/tools/tools/jdk-win/README.html | 9 + .../jdk-win/THIRDPARTYLICENSEREADME-JAVAFX.txt | 1531 + .../tools/jdk-win/THIRDPARTYLICENSEREADME.txt | 3605 + .../tools/jdk-win/include/classfile_constants.h | 560 + love2dToAPK/tools/tools/jdk-win/include/jawt.h | 299 + .../tools/tools/jdk-win/include/jdwpTransport.h | 254 + love2dToAPK/tools/tools/jdk-win/include/jni.h | 1960 + love2dToAPK/tools/tools/jdk-win/include/jvmti.h | 2534 + .../tools/tools/jdk-win/include/jvmticmlr.h | 115 + .../include/win32/bridge/AccessBridgeCallbacks.h | 76 + .../include/win32/bridge/AccessBridgeCalls.c | 1111 + .../include/win32/bridge/AccessBridgeCalls.h | 686 + .../include/win32/bridge/AccessBridgePackages.h | 2195 + .../tools/tools/jdk-win/include/win32/jawt_md.h | 59 + .../tools/tools/jdk-win/include/win32/jni_md.h | 37 + love2dToAPK/tools/tools/jdk-win/jre/COPYRIGHT | 69 + love2dToAPK/tools/tools/jdk-win/jre/LICENSE | 1 + love2dToAPK/tools/tools/jdk-win/jre/README.txt | 1 + .../jdk-win/jre/THIRDPARTYLICENSEREADME-JAVAFX.txt | 1531 + .../tools/jdk-win/jre/THIRDPARTYLICENSEREADME.txt | 3605 + love2dToAPK/tools/tools/jdk-win/jre/Welcome.html | 28 + .../tools/jdk-win/jre/lib/accessibility.properties | 6 + .../tools/jdk-win/jre/lib/calendars.properties | 60 + .../tools/tools/jdk-win/jre/lib/charsets.jar | Bin 0 -> 3086224 bytes love2dToAPK/tools/tools/jdk-win/jre/lib/classlist | 2378 + .../tools/tools/jdk-win/jre/lib/cmm/CIEXYZ.pf | Bin 0 -> 51236 bytes .../tools/tools/jdk-win/jre/lib/cmm/GRAY.pf | Bin 0 -> 632 bytes .../tools/tools/jdk-win/jre/lib/cmm/LINEAR_RGB.pf | Bin 0 -> 1044 bytes .../tools/tools/jdk-win/jre/lib/cmm/PYCC.pf | Bin 0 -> 274474 bytes .../tools/tools/jdk-win/jre/lib/cmm/sRGB.pf | Bin 0 -> 3144 bytes .../tools/jdk-win/jre/lib/content-types.properties | 276 + .../tools/tools/jdk-win/jre/lib/currency.data | Bin 0 -> 4074 bytes love2dToAPK/tools/tools/jdk-win/jre/lib/deploy.jar | Bin 0 -> 4791488 bytes .../tools/jdk-win/jre/lib/ext/access-bridge.jar | Bin 0 -> 187715 bytes .../tools/tools/jdk-win/jre/lib/ext/cldrdata.jar | Bin 0 -> 3860522 bytes .../tools/tools/jdk-win/jre/lib/ext/dnsns.jar | Bin 0 -> 8286 bytes .../tools/tools/jdk-win/jre/lib/ext/jaccess.jar | Bin 0 -> 44115 bytes .../tools/tools/jdk-win/jre/lib/ext/jfxrt.jar | Bin 0 -> 18131395 bytes .../tools/tools/jdk-win/jre/lib/ext/localedata.jar | Bin 0 -> 2248141 bytes .../tools/tools/jdk-win/jre/lib/ext/meta-index | 71 + .../tools/tools/jdk-win/jre/lib/ext/nashorn.jar | Bin 0 -> 2008813 bytes .../tools/tools/jdk-win/jre/lib/ext/sunec.jar | Bin 0 -> 39773 bytes .../tools/jdk-win/jre/lib/ext/sunjce_provider.jar | Bin 0 -> 278075 bytes .../tools/tools/jdk-win/jre/lib/ext/sunmscapi.jar | Bin 0 -> 32654 bytes .../tools/tools/jdk-win/jre/lib/ext/sunpkcs11.jar | Bin 0 -> 249387 bytes .../tools/tools/jdk-win/jre/lib/ext/zipfs.jar | Bin 0 -> 68837 bytes .../tools/jdk-win/jre/lib/flavormap.properties | 77 + .../tools/tools/jdk-win/jre/lib/fontconfig.bfc | Bin 0 -> 3670 bytes .../jdk-win/jre/lib/fontconfig.properties.src | 300 + .../jre/lib/hijrah-config-umalqura.properties | 369 + .../tools/tools/jdk-win/jre/lib/i386/jvm.cfg | 34 + .../tools/tools/jdk-win/jre/lib/javafx.properties | 1 + love2dToAPK/tools/tools/jdk-win/jre/lib/javaws.jar | Bin 0 -> 920936 bytes love2dToAPK/tools/tools/jdk-win/jre/lib/jce.jar | Bin 0 -> 114708 bytes love2dToAPK/tools/tools/jdk-win/jre/lib/jfr.jar | Bin 0 -> 555272 bytes .../tools/tools/jdk-win/jre/lib/jfr/default.jfc | 556 + .../tools/tools/jdk-win/jre/lib/jfr/profile.jfc | 556 + love2dToAPK/tools/tools/jdk-win/jre/lib/jfxswt.jar | Bin 0 -> 33795 bytes love2dToAPK/tools/tools/jdk-win/jre/lib/jsse.jar | Bin 0 -> 620257 bytes .../tools/tools/jdk-win/jre/lib/jvm.hprof.txt | 86 + .../tools/tools/jdk-win/jre/lib/logging.properties | 59 + .../tools/jdk-win/jre/lib/management-agent.jar | Bin 0 -> 381 bytes .../jdk-win/jre/lib/management/jmxremote.access | 79 + .../jre/lib/management/jmxremote.password.template | 64 + .../jre/lib/management/management.properties | 318 + .../jdk-win/jre/lib/management/snmp.acl.template | 110 + love2dToAPK/tools/tools/jdk-win/jre/lib/meta-index | 92 + .../tools/tools/jdk-win/jre/lib/net.properties | 74 + love2dToAPK/tools/tools/jdk-win/jre/lib/plugin.jar | Bin 0 -> 1922576 bytes .../tools/jdk-win/jre/lib/psfont.properties.ja | 119 + .../tools/jdk-win/jre/lib/psfontj2d.properties | 323 + .../tools/tools/jdk-win/jre/lib/resources.jar | Bin 0 -> 3487757 bytes love2dToAPK/tools/tools/jdk-win/jre/lib/rt.jar | Bin 0 -> 63191979 bytes .../jdk-win/jre/lib/security/US_export_policy.jar | Bin 0 -> 3026 bytes .../tools/tools/jdk-win/jre/lib/security/blacklist | 95 + .../jdk-win/jre/lib/security/blacklisted.certs | 19 + .../tools/tools/jdk-win/jre/lib/security/cacerts | Bin 0 -> 98626 bytes .../tools/jdk-win/jre/lib/security/java.policy | 49 + .../tools/jdk-win/jre/lib/security/java.security | 528 + .../tools/jdk-win/jre/lib/security/javaws.policy | 5 + .../jdk-win/jre/lib/security/local_policy.jar | Bin 0 -> 3527 bytes .../jdk-win/jre/lib/security/trusted.libraries | 0 .../tools/tools/jdk-win/jre/lib/sound.properties | 39 + love2dToAPK/tools/tools/jdk-win/jre/lib/tzdb.dat | Bin 0 -> 102385 bytes love2dToAPK/tools/tools/jdk-win/jre/lib/tzmappings | 202 + love2dToAPK/tools/tools/jdk-win/lib/ant-javafx.jar | Bin 0 -> 1646460 bytes love2dToAPK/tools/tools/jdk-win/lib/ct.sym | Bin 0 -> 17364173 bytes love2dToAPK/tools/tools/jdk-win/lib/dt.jar | Bin 0 -> 163019 bytes love2dToAPK/tools/tools/jdk-win/lib/ir.idl | 778 + love2dToAPK/tools/tools/jdk-win/lib/javafx-mx.jar | Bin 0 -> 36037 bytes love2dToAPK/tools/tools/jdk-win/lib/jawt.lib | Bin 0 -> 1688 bytes love2dToAPK/tools/tools/jdk-win/lib/jconsole.jar | Bin 0 -> 407734 bytes love2dToAPK/tools/tools/jdk-win/lib/jvm.lib | Bin 0 -> 751824 bytes love2dToAPK/tools/tools/jdk-win/lib/orb.idl | 47 + love2dToAPK/tools/tools/jdk-win/lib/packager.jar | Bin 0 -> 4573 bytes love2dToAPK/tools/tools/jdk-win/lib/sa-jdi.jar | Bin 0 -> 2268285 bytes love2dToAPK/tools/tools/jdk-win/lib/tools.jar | Bin 0 -> 18173747 bytes love2dToAPK/tools/tools/jdk-win/release | 6 + .../tools/tools/love-android-sdl2/.classpath | 9 + love2dToAPK/tools/tools/love-android-sdl2/.project | 53 + .../tools/love-android-sdl2/AndroidManifest.xml | 71 + .../tools/tools/love-android-sdl2/README.md | 140 + .../tools/tools/love-android-sdl2/ant.properties | 17 + .../tools/tools/love-android-sdl2/assets/game.love | Bin 0 -> 1512 bytes .../tools/tools/love-android-sdl2/build.properties | 17 + .../tools/tools/love-android-sdl2/build.xml | 93 + .../tools/love-android-sdl2/default.properties | 11 + .../tools/tools/love-android-sdl2/gen/R.java.d | 4 + .../gen/love/to/android/BuildConfig.java | 6 + .../love-android-sdl2/gen/love/to/android/R.java | 16 + .../gen/love/to/android1219203756/BuildConfig.java | 6 + .../gen/love/to/android1219203756/R.java | 16 + .../gen/love/to/android1220074642/BuildConfig.java | 6 + .../gen/love/to/android1220074642/R.java | 16 + .../libs/armeabi-v7a/libgnustl_shared.so | Bin 0 -> 804492 bytes .../love-android-sdl2/libs/armeabi-v7a/liblove.so | Bin 0 -> 3309304 bytes .../libs/armeabi-v7a/libmpg123.so | Bin 0 -> 120888 bytes .../libs/armeabi-v7a/libopenal.so | Bin 0 -> 251528 bytes .../libs/armeabi/libgnustl_shared.so | Bin 0 -> 808580 bytes .../love-android-sdl2/libs/armeabi/liblove.so | Bin 0 -> 3464936 bytes .../love-android-sdl2/libs/armeabi/libmpg123.so | Bin 0 -> 141348 bytes .../love-android-sdl2/libs/armeabi/libopenal.so | Bin 0 -> 272000 bytes .../love-android-sdl2/original/AndroidManifest.xml | 71 + .../original/love/to/android/LtaActivity.java | 4 + .../tools/love-android-sdl2/project.properties | 14 + .../res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 10129 bytes .../src/love/to/android/LtaActivity.java | 4 + .../src/org/libsdl/app/SDLActivity.java | 1676 + .../src/org/love2d/android/DownloadActivity.java | 24 + .../src/org/love2d/android/DownloadService.java | 96 + .../src/org/love2d/android/GameActivity.java | 253 + love2dToAPK/tools/tools/love-old-win/DevIL.dll | Bin 0 -> 1024512 bytes love2dToAPK/tools/tools/love-old-win/OpenAL32.dll | Bin 0 -> 316928 bytes love2dToAPK/tools/tools/love-old-win/SDL2.dll | Bin 0 -> 814592 bytes love2dToAPK/tools/tools/love-old-win/changes.txt | 831 + love2dToAPK/tools/tools/love-old-win/game.ico | Bin 0 -> 33093 bytes love2dToAPK/tools/tools/love-old-win/license.txt | 979 + love2dToAPK/tools/tools/love-old-win/love.dll | Bin 0 -> 2984448 bytes love2dToAPK/tools/tools/love-old-win/love.exe | Bin 0 -> 47616 bytes love2dToAPK/tools/tools/love-old-win/love.ico | Bin 0 -> 35492 bytes love2dToAPK/tools/tools/love-old-win/lua51.dll | Bin 0 -> 348672 bytes love2dToAPK/tools/tools/love-old-win/mpg123.dll | Bin 0 -> 138752 bytes love2dToAPK/tools/tools/love-old-win/msvcp120.dll | Bin 0 -> 455328 bytes love2dToAPK/tools/tools/love-old-win/msvcr120.dll | Bin 0 -> 970912 bytes love2dToAPK/tools/tools/love-old-win/readme.txt | 74 + love2dToAPK/tools/tools/love-win/OpenAL32.dll | Bin 0 -> 390656 bytes love2dToAPK/tools/tools/love-win/SDL2.dll | Bin 0 -> 808448 bytes love2dToAPK/tools/tools/love-win/changes.txt | 1031 + love2dToAPK/tools/tools/love-win/game.ico | Bin 0 -> 370070 bytes love2dToAPK/tools/tools/love-win/license.txt | 977 + love2dToAPK/tools/tools/love-win/love.dll | Bin 0 -> 2379776 bytes love2dToAPK/tools/tools/love-win/love.exe | Bin 0 -> 380928 bytes love2dToAPK/tools/tools/love-win/love.ico | Bin 0 -> 370070 bytes love2dToAPK/tools/tools/love-win/lua51.dll | Bin 0 -> 349184 bytes love2dToAPK/tools/tools/love-win/mpg123.dll | Bin 0 -> 143360 bytes love2dToAPK/tools/tools/love-win/msvcp120.dll | Bin 0 -> 455328 bytes love2dToAPK/tools/tools/love-win/msvcr120.dll | Bin 0 -> 970912 bytes love2dToAPK/tools/tools/love-win/readme.txt | 96 + .../sed/4.2.1/sed-4.2.1/sed-4.2.1-src/ABOUT-NLS | 1111 + .../sed/4.2.1/sed-4.2.1/sed-4.2.1-src/AUTHORS | 5 + .../contrib/sed/4.2.1/sed-4.2.1/sed-4.2.1-src/BUGS | 133 + .../sed/4.2.1/sed-4.2.1/sed-4.2.1-src/COPYING | 676 + .../sed/4.2.1/sed-4.2.1/sed-4.2.1-src/ChangeLog | 3185 + .../sed/4.2.1/sed-4.2.1/sed-4.2.1-src/INSTALL | 236 + .../contrib/sed/4.2.1/sed-4.2.1/sed-4.2.1-src/NEWS | 502 + .../sed/4.2.1/sed-4.2.1/sed-4.2.1-src/README | 13 + .../sed/4.2.1/sed-4.2.1/sed-4.2.1-src/README-alpha | 8 + .../sed/4.2.1/sed-4.2.1/sed-4.2.1-src/README.boot | 23 + .../sed/4.2.1/sed-4.2.1/sed-4.2.1-src/THANKS | 54 + .../sed/4.2.1/sed-4.2.1/sed-4.2.1-src/po/ChangeLog | 53 + .../sed-4.2.1-src/testsuite/bug-regex10.c | 65 + .../sed-4.2.1-src/testsuite/bug-regex11.c | 143 + .../sed-4.2.1-src/testsuite/bug-regex12.c | 81 + .../sed-4.2.1-src/testsuite/bug-regex13.c | 111 + .../sed-4.2.1-src/testsuite/bug-regex14.c | 62 + .../sed-4.2.1-src/testsuite/bug-regex15.c | 53 + .../sed-4.2.1-src/testsuite/bug-regex16.c | 39 + .../sed-4.2.1-src/testsuite/bug-regex21.c | 53 + .../sed-4.2.1-src/testsuite/bug-regex27.c | 65 + .../sed-4.2.1-src/testsuite/bug-regex28.c | 76 + .../sed-4.2.1/sed-4.2.1-src/testsuite/bug-regex7.c | 96 + .../sed-4.2.1/sed-4.2.1-src/testsuite/bug-regex8.c | 88 + .../sed-4.2.1/sed-4.2.1-src/testsuite/bug-regex9.c | 75 + .../tools/tools/zbstudio-old-win/CHANGELOG.md | 2364 + love2dToAPK/tools/tools/zbstudio-old-win/LICENSE | 237 + love2dToAPK/tools/tools/zbstudio-old-win/README.md | 113 + .../tools/tools/zbstudio-old-win/api/cg/stdlib.lua | 205 + .../tools/tools/zbstudio-old-win/api/glsl/std.lua | 277 + .../tools/zbstudio-old-win/api/lua/baselib.lua | 1238 + .../tools/zbstudio-old-win/api/lua/love2d.lua | 6566 ++ .../tools/zbstudio-old-win/api/lua/luajit2.lua | 52 + .../tools/zbstudio-old-win/api/lua/wxwidgets.lua | 24 + .../tools/zbstudio-old-win/api/opencl/std.lua | 278 + .../tools/tools/zbstudio-old-win/cfg/estrela.lua | 19 + .../tools/tools/zbstudio-old-win/cfg/i18n/cn.lua | 344 + .../tools/tools/zbstudio-old-win/cfg/i18n/de.lua | 345 + .../tools/tools/zbstudio-old-win/cfg/i18n/en.lua | 7 + .../tools/tools/zbstudio-old-win/cfg/i18n/eo.lua | 346 + .../tools/tools/zbstudio-old-win/cfg/i18n/es.lua | 346 + .../tools/tools/zbstudio-old-win/cfg/i18n/fr.lua | 345 + .../tools/tools/zbstudio-old-win/cfg/i18n/it.lua | 345 + .../tools/zbstudio-old-win/cfg/i18n/pt-br.lua | 347 + .../tools/tools/zbstudio-old-win/cfg/i18n/ru.lua | 345 + .../tools/zbstudio-old-win/cfg/scheme-picker.lua | 28 + .../tools/tools/zbstudio-old-win/cfg/tomorrow.lua | 311 + .../tools/zbstudio-old-win/cfg/user-sample.lua | 170 + .../tools/tools/zbstudio-old-win/cfg/user.lua | 56 + .../tools/zbstudio-old-win/cfg/xcode-keys.lua | 73 + .../tools/zbstudio-old-win/interpreters/love2d.lua | 61 + .../zbstudio-old-win/interpreters/luabase.lua | 101 + .../tools/zbstudio-old-win/interpreters/luadeb.lua | 2 + .../zbstudio-old-win/interpreters/luadeb52.lua | 2 + .../zbstudio-old-win/interpreters/luadeb53.lua | 4 + .../tools/zbstudio-old-win/lualibs/copas/copas.lua | 636 + .../zbstudio-old-win/lualibs/coxpcall/coxpcall.lua | 68 + .../tools/zbstudio-old-win/lualibs/dist/config.lua | 112 + .../zbstudio-old-win/lualibs/dist/constraints.lua | 271 + .../zbstudio-old-win/lualibs/dist/depends.lua | 770 + .../tools/zbstudio-old-win/lualibs/dist/git.lua | 306 + .../tools/zbstudio-old-win/lualibs/dist/init.lua | 349 + .../tools/zbstudio-old-win/lualibs/dist/logger.lua | 64 + .../zbstudio-old-win/lualibs/dist/manifest.lua | 248 + .../zbstudio-old-win/lualibs/dist/package.lua | 596 + .../tools/zbstudio-old-win/lualibs/dist/sys.lua | 386 + .../tools/zbstudio-old-win/lualibs/dist/utils.lua | 151 + .../tools/tools/zbstudio-old-win/lualibs/git.lua | 5 + .../tools/zbstudio-old-win/lualibs/git/objects.lua | 121 + .../tools/zbstudio-old-win/lualibs/git/pack.lua | 316 + .../zbstudio-old-win/lualibs/git/protocol.lua | 188 + .../tools/zbstudio-old-win/lualibs/git/repo.lua | 283 + .../tools/zbstudio-old-win/lualibs/git/util.lua | 233 + .../tools/tools/zbstudio-old-win/lualibs/ltn12.lua | 298 + .../zbstudio-old-win/lualibs/lua_lexer_loose.lua | 212 + .../zbstudio-old-win/lualibs/lua_parser_loose.lua | 337 + .../tools/zbstudio-old-win/lualibs/luadist.lua | 746 + .../zbstudio-old-win/lualibs/luainspect/ast.lua | 915 + .../lualibs/luainspect/compat_env.lua | 390 + .../zbstudio-old-win/lualibs/luainspect/dump.lua | 90 + .../lualibs/luainspect/globals.lua | 222 + .../zbstudio-old-win/lualibs/luainspect/init.lua | 1454 + .../lualibs/luainspect/signatures.lua | 433 + .../lualibs/luainspect/typecheck.lua | 40 + .../zbstudio-old-win/lualibs/luainspect/types.lua | 130 + .../zbstudio-old-win/lualibs/metalua/compiler.lua | 162 + .../lualibs/metalua/compiler/parser.lua | 42 + .../metalua/compiler/parser/annot/generator.lua | 48 + .../metalua/compiler/parser/annot/grammar.lua | 112 + .../lualibs/metalua/compiler/parser/common.lua | 27 + .../lualibs/metalua/compiler/parser/expr.lua | 213 + .../lualibs/metalua/compiler/parser/ext.lua | 96 + .../lualibs/metalua/compiler/parser/lexer.lua | 44 + .../lualibs/metalua/compiler/parser/meta.lua | 138 + .../lualibs/metalua/compiler/parser/misc.lua | 147 + .../lualibs/metalua/compiler/parser/stat.lua | 283 + .../lualibs/metalua/compiler/parser/table.lua | 77 + .../lualibs/metalua/grammar/generator.lua | 832 + .../lualibs/metalua/grammar/lexer.lua | 678 + .../zbstudio-old-win/lualibs/metalua/pprint.lua | 295 + .../tools/tools/zbstudio-old-win/lualibs/mime.lua | 90 + .../zbstudio-old-win/lualibs/mobdebug/mobdebug.lua | 1609 + .../tools/tools/zbstudio-old-win/lualibs/sha2.lua | 239 + .../tools/zbstudio-old-win/lualibs/socket.lua | 165 + .../tools/zbstudio-old-win/lualibs/socket/ftp.lua | 285 + .../zbstudio-old-win/lualibs/socket/headers.lua | 104 + .../tools/zbstudio-old-win/lualibs/socket/http.lua | 354 + .../tools/zbstudio-old-win/lualibs/socket/smtp.lua | 256 + .../tools/zbstudio-old-win/lualibs/socket/tp.lua | 126 + .../tools/zbstudio-old-win/lualibs/socket/url.lua | 307 + .../tools/tools/zbstudio-old-win/lualibs/ssl.lua | 93 + .../tools/zbstudio-old-win/lualibs/ssl/https.lua | 138 + .../tools/zbstudio-old-win/lualibs/testwell.lua | 315 + .../tools/tools/zbstudio-old-win/spec/lua.lua | 284 + .../tools/tools/zbstudio-old-win/spec/text.lua | 9 + .../tools/tools/zbstudio-old-win/src/defs.lua | 332 + .../zbstudio-old-win/src/editor/autocomplete.lua | 652 + .../zbstudio-old-win/src/editor/commandbar.lua | 359 + .../tools/zbstudio-old-win/src/editor/commands.lua | 1054 + .../tools/zbstudio-old-win/src/editor/debugger.lua | 1696 + .../tools/zbstudio-old-win/src/editor/editor.lua | 1619 + .../tools/zbstudio-old-win/src/editor/filetree.lua | 903 + .../zbstudio-old-win/src/editor/findreplace.lua | 1275 + .../tools/zbstudio-old-win/src/editor/gui.lua | 567 + .../tools/zbstudio-old-win/src/editor/ids.lua | 190 + .../tools/zbstudio-old-win/src/editor/inspect.lua | 243 + .../zbstudio-old-win/src/editor/iofilters.lua | 71 + .../tools/zbstudio-old-win/src/editor/keymap.lua | 136 + .../tools/zbstudio-old-win/src/editor/markers.lua | 247 + .../tools/zbstudio-old-win/src/editor/markup.lua | 214 + .../zbstudio-old-win/src/editor/menu_edit.lua | 390 + .../zbstudio-old-win/src/editor/menu_file.lua | 262 + .../zbstudio-old-win/src/editor/menu_help.lua | 118 + .../zbstudio-old-win/src/editor/menu_project.lua | 474 + .../zbstudio-old-win/src/editor/menu_search.lua | 420 + .../zbstudio-old-win/src/editor/menu_tools.lua | 111 + .../zbstudio-old-win/src/editor/menu_view.lua | 113 + .../tools/zbstudio-old-win/src/editor/outline.lua | 679 + .../tools/zbstudio-old-win/src/editor/output.lua | 498 + .../tools/zbstudio-old-win/src/editor/package.lua | 735 + .../tools/zbstudio-old-win/src/editor/print.lua | 195 + .../tools/zbstudio-old-win/src/editor/proto.lua | 68 + .../tools/zbstudio-old-win/src/editor/settings.lua | 593 + .../tools/zbstudio-old-win/src/editor/shellbox.lua | 574 + .../zbstudio-old-win/src/editor/singleinstance.lua | 98 + .../tools/zbstudio-old-win/src/editor/style.lua | 441 + .../tools/zbstudio-old-win/src/editor/toolbar.lua | 55 + .../tools/tools/zbstudio-old-win/src/main.lua | 774 + .../tools/tools/zbstudio-old-win/src/util.lua | 645 + .../tools/tools/zbstudio-old-win/src/version.lua | 1 + .../tools/tools/zbstudio-old-win/tools/cg.lua | 537 + .../tools/tools/zbstudio-old-win/tools/clcc.lua | 67 + .../tools/zbstudio-old-win/tools/cstringify.lua | 21 + .../tools/tools/zbstudio-old-win/tools/dx.lua | 157 + .../tools/zbstudio-old-win/tools/ffitoapi.lua | 313 + .../tools/tools/zbstudio-old-win/tools/glslc.lua | 470 + .../tools/zbstudio-old-win/tools/perforce_edit.lua | 14 + .../zbstudio-old-win/tools/perforce_revert.lua | 14 + .../tools/tools/zbstudio-old-win/zbstudio.exe | Bin 0 -> 51296 bytes .../tools/tools/zbstudio-old-win/zbstudio/app.lua | 53 + .../tools/zbstudio-old-win/zbstudio/config.lua | 38 + .../zbstudio/res/16/BOOKMARK-TOGGLE.png | Bin 0 -> 884 bytes .../zbstudio/res/16/DEBUG-BREAK.png | Bin 0 -> 374 bytes .../zbstudio/res/16/DEBUG-BREAKPOINT-TOGGLE.png | Bin 0 -> 702 bytes .../zbstudio/res/16/DEBUG-CALLSTACK.png | Bin 0 -> 500 bytes .../zbstudio/res/16/DEBUG-DETACH.png | Bin 0 -> 583 bytes .../zbstudio/res/16/DEBUG-RUN-TO.png | Bin 0 -> 329 bytes .../zbstudio/res/16/DEBUG-START.png | Bin 0 -> 259 bytes .../zbstudio/res/16/DEBUG-STEP-INTO.png | Bin 0 -> 335 bytes .../zbstudio/res/16/DEBUG-STEP-OUT.png | Bin 0 -> 356 bytes .../zbstudio/res/16/DEBUG-STEP-OVER.png | Bin 0 -> 362 bytes .../zbstudio/res/16/DEBUG-STOP.png | Bin 0 -> 594 bytes .../zbstudio/res/16/DEBUG-WATCH.png | Bin 0 -> 786 bytes .../zbstudio/res/16/DIR-SETUP-FILE.png | Bin 0 -> 778 bytes .../zbstudio-old-win/zbstudio/res/16/DIR-SETUP.png | Bin 0 -> 738 bytes .../zbstudio/res/16/FILE-KNOWN.png | Bin 0 -> 623 bytes .../zbstudio-old-win/zbstudio/res/16/FILE-NEW.png | Bin 0 -> 730 bytes .../zbstudio/res/16/FILE-NORMAL-START.png | Bin 0 -> 743 bytes .../zbstudio/res/16/FILE-NORMAL.png | Bin 0 -> 652 bytes .../zbstudio-old-win/zbstudio/res/16/FILE-OPEN.png | Bin 0 -> 602 bytes .../zbstudio/res/16/FILE-SAVE-ALL.png | Bin 0 -> 1322 bytes .../zbstudio-old-win/zbstudio/res/16/FILE-SAVE.png | Bin 0 -> 1346 bytes .../zbstudio/res/16/FIND-AND-REPLACE.png | Bin 0 -> 451 bytes .../zbstudio/res/16/FIND-IN-FILES.png | Bin 0 -> 671 bytes .../zbstudio/res/16/FIND-OPT-CASE-SENSITIVE.png | Bin 0 -> 402 bytes .../zbstudio/res/16/FIND-OPT-CONTEXT.png | Bin 0 -> 306 bytes .../zbstudio/res/16/FIND-OPT-DOWN.png | Bin 0 -> 340 bytes .../zbstudio/res/16/FIND-OPT-MULTI-RESULTS.png | Bin 0 -> 445 bytes .../zbstudio/res/16/FIND-OPT-REGEX.png | Bin 0 -> 387 bytes .../zbstudio/res/16/FIND-OPT-SELECTION.png | Bin 0 -> 229 bytes .../zbstudio/res/16/FIND-OPT-SETDIR.png | Bin 0 -> 716 bytes .../zbstudio/res/16/FIND-OPT-SUBDIR.png | Bin 0 -> 742 bytes .../zbstudio/res/16/FIND-OPT-WORD.png | Bin 0 -> 398 bytes .../zbstudio/res/16/FIND-OPT-WRAP-AROUND.png | Bin 0 -> 415 bytes .../zbstudio/res/16/FIND-REPLACE-NEXT.png | Bin 0 -> 520 bytes .../zbstudio-old-win/zbstudio/res/16/FIND.png | Bin 0 -> 662 bytes .../zbstudio/res/16/FOLDER-MAPPED.png | Bin 0 -> 656 bytes .../zbstudio-old-win/zbstudio/res/16/FOLDER.png | Bin 0 -> 615 bytes .../tools/zbstudio-old-win/zbstudio/res/16/LICENSE | 28 + .../zbstudio-old-win/zbstudio/res/16/RUN-NOW.png | Bin 0 -> 292 bytes .../tools/zbstudio-old-win/zbstudio/res/16/RUN.png | Bin 0 -> 271 bytes .../zbstudio/res/16/VALUE-ACALL.png | Bin 0 -> 371 bytes .../zbstudio/res/16/VALUE-CALL.png | Bin 0 -> 717 bytes .../zbstudio/res/16/VALUE-GCALL.png | Bin 0 -> 374 bytes .../zbstudio/res/16/VALUE-LCALL.png | Bin 0 -> 433 bytes .../zbstudio/res/16/VALUE-LOCAL.png | Bin 0 -> 698 bytes .../zbstudio/res/16/VALUE-SCALL.png | Bin 0 -> 428 bytes .../zbstudio-old-win/zbstudio/res/16/VALUE-UP.png | Bin 0 -> 753 bytes .../zbstudio/res/24/BOOKMARK-TOGGLE.png | Bin 0 -> 1087 bytes .../zbstudio/res/24/DEBUG-BREAK.png | Bin 0 -> 473 bytes .../zbstudio/res/24/DEBUG-BREAKPOINT-TOGGLE.png | Bin 0 -> 1457 bytes .../zbstudio/res/24/DEBUG-CALLSTACK.png | Bin 0 -> 566 bytes .../zbstudio/res/24/DEBUG-DETACH.png | Bin 0 -> 755 bytes .../zbstudio/res/24/DEBUG-RUN-TO.png | Bin 0 -> 400 bytes .../zbstudio/res/24/DEBUG-START.png | Bin 0 -> 369 bytes .../zbstudio/res/24/DEBUG-STEP-INTO.png | Bin 0 -> 451 bytes .../zbstudio/res/24/DEBUG-STEP-OUT.png | Bin 0 -> 450 bytes .../zbstudio/res/24/DEBUG-STEP-OVER.png | Bin 0 -> 484 bytes .../zbstudio/res/24/DEBUG-STOP.png | Bin 0 -> 799 bytes .../zbstudio/res/24/DEBUG-WATCH.png | Bin 0 -> 1008 bytes .../zbstudio/res/24/DIR-SETUP-FILE.png | Bin 0 -> 1365 bytes .../zbstudio-old-win/zbstudio/res/24/DIR-SETUP.png | Bin 0 -> 1412 bytes .../zbstudio-old-win/zbstudio/res/24/FILE-NEW.png | Bin 0 -> 821 bytes .../zbstudio-old-win/zbstudio/res/24/FILE-OPEN.png | Bin 0 -> 780 bytes .../zbstudio/res/24/FILE-SAVE-ALL.png | Bin 0 -> 622 bytes .../zbstudio-old-win/zbstudio/res/24/FILE-SAVE.png | Bin 0 -> 1165 bytes .../zbstudio/res/24/FIND-AND-REPLACE.png | Bin 0 -> 495 bytes .../zbstudio/res/24/FIND-IN-FILES.png | Bin 0 -> 1173 bytes .../zbstudio-old-win/zbstudio/res/24/FIND.png | Bin 0 -> 775 bytes .../tools/zbstudio-old-win/zbstudio/res/24/LICENSE | 27 + .../zbstudio-old-win/zbstudio/res/24/RUN-NOW.png | Bin 0 -> 384 bytes .../tools/zbstudio-old-win/zbstudio/res/24/RUN.png | Bin 0 -> 358 bytes .../zbstudio-old-win/zbstudio/res/estrela.png | Bin 0 -> 6252 bytes .../zbstudio-old-win/zbstudio/res/zbstudio.ico | Bin 0 -> 32038 bytes .../zbstudio-old-win/zbstudio/res/zerobrane.png | Bin 0 -> 10255 bytes love2dToAPK/tools/tools/zbstudio-win/CHANGELOG.md | 2364 + love2dToAPK/tools/tools/zbstudio-win/LICENSE | 237 + love2dToAPK/tools/tools/zbstudio-win/README.md | 113 + .../tools/tools/zbstudio-win/api/cg/stdlib.lua | 205 + .../tools/tools/zbstudio-win/api/glsl/std.lua | 277 + .../tools/tools/zbstudio-win/api/lua/baselib.lua | 1238 + .../tools/tools/zbstudio-win/api/lua/love2d.lua | 6566 ++ .../tools/tools/zbstudio-win/api/lua/luajit2.lua | 52 + .../tools/tools/zbstudio-win/api/lua/wxwidgets.lua | 24 + .../tools/tools/zbstudio-win/api/opencl/std.lua | 278 + .../tools/tools/zbstudio-win/cfg/estrela.lua | 19 + .../tools/tools/zbstudio-win/cfg/i18n/cn.lua | 344 + .../tools/tools/zbstudio-win/cfg/i18n/de.lua | 345 + .../tools/tools/zbstudio-win/cfg/i18n/en.lua | 7 + .../tools/tools/zbstudio-win/cfg/i18n/eo.lua | 346 + .../tools/tools/zbstudio-win/cfg/i18n/es.lua | 346 + .../tools/tools/zbstudio-win/cfg/i18n/fr.lua | 345 + .../tools/tools/zbstudio-win/cfg/i18n/it.lua | 345 + .../tools/tools/zbstudio-win/cfg/i18n/pt-br.lua | 347 + .../tools/tools/zbstudio-win/cfg/i18n/ru.lua | 345 + .../tools/tools/zbstudio-win/cfg/scheme-picker.lua | 28 + .../tools/tools/zbstudio-win/cfg/tomorrow.lua | 311 + .../tools/tools/zbstudio-win/cfg/user-sample.lua | 170 + love2dToAPK/tools/tools/zbstudio-win/cfg/user.lua | 56 + .../tools/tools/zbstudio-win/cfg/xcode-keys.lua | 73 + .../tools/zbstudio-win/interpreters/love2d.lua | 61 + .../tools/zbstudio-win/interpreters/luabase.lua | 101 + .../tools/zbstudio-win/interpreters/luadeb.lua | 2 + .../tools/zbstudio-win/interpreters/luadeb52.lua | 2 + .../tools/zbstudio-win/interpreters/luadeb53.lua | 4 + .../tools/zbstudio-win/lualibs/copas/copas.lua | 636 + .../zbstudio-win/lualibs/coxpcall/coxpcall.lua | 68 + .../tools/zbstudio-win/lualibs/dist/config.lua | 112 + .../zbstudio-win/lualibs/dist/constraints.lua | 271 + .../tools/zbstudio-win/lualibs/dist/depends.lua | 770 + .../tools/tools/zbstudio-win/lualibs/dist/git.lua | 306 + .../tools/tools/zbstudio-win/lualibs/dist/init.lua | 349 + .../tools/zbstudio-win/lualibs/dist/logger.lua | 64 + .../tools/zbstudio-win/lualibs/dist/manifest.lua | 248 + .../tools/zbstudio-win/lualibs/dist/package.lua | 596 + .../tools/tools/zbstudio-win/lualibs/dist/sys.lua | 386 + .../tools/zbstudio-win/lualibs/dist/utils.lua | 151 + .../tools/tools/zbstudio-win/lualibs/git.lua | 5 + .../tools/zbstudio-win/lualibs/git/objects.lua | 121 + .../tools/tools/zbstudio-win/lualibs/git/pack.lua | 316 + .../tools/zbstudio-win/lualibs/git/protocol.lua | 188 + .../tools/tools/zbstudio-win/lualibs/git/repo.lua | 283 + .../tools/tools/zbstudio-win/lualibs/git/util.lua | 233 + .../tools/tools/zbstudio-win/lualibs/ltn12.lua | 298 + .../tools/zbstudio-win/lualibs/lua_lexer_loose.lua | 212 + .../zbstudio-win/lualibs/lua_parser_loose.lua | 337 + .../tools/tools/zbstudio-win/lualibs/luadist.lua | 746 + .../tools/zbstudio-win/lualibs/luainspect/ast.lua | 915 + .../zbstudio-win/lualibs/luainspect/compat_env.lua | 390 + .../tools/zbstudio-win/lualibs/luainspect/dump.lua | 90 + .../zbstudio-win/lualibs/luainspect/globals.lua | 222 + .../tools/zbstudio-win/lualibs/luainspect/init.lua | 1454 + .../zbstudio-win/lualibs/luainspect/signatures.lua | 433 + .../zbstudio-win/lualibs/luainspect/typecheck.lua | 40 + .../zbstudio-win/lualibs/luainspect/types.lua | 130 + .../zbstudio-win/lualibs/metalua/compiler.lua | 162 + .../lualibs/metalua/compiler/parser.lua | 42 + .../metalua/compiler/parser/annot/generator.lua | 48 + .../metalua/compiler/parser/annot/grammar.lua | 112 + .../lualibs/metalua/compiler/parser/common.lua | 27 + .../lualibs/metalua/compiler/parser/expr.lua | 213 + .../lualibs/metalua/compiler/parser/ext.lua | 96 + .../lualibs/metalua/compiler/parser/lexer.lua | 44 + .../lualibs/metalua/compiler/parser/meta.lua | 138 + .../lualibs/metalua/compiler/parser/misc.lua | 147 + .../lualibs/metalua/compiler/parser/stat.lua | 283 + .../lualibs/metalua/compiler/parser/table.lua | 77 + .../lualibs/metalua/grammar/generator.lua | 832 + .../zbstudio-win/lualibs/metalua/grammar/lexer.lua | 678 + .../tools/zbstudio-win/lualibs/metalua/pprint.lua | 295 + .../tools/tools/zbstudio-win/lualibs/mime.lua | 90 + .../zbstudio-win/lualibs/mobdebug/mobdebug.lua | 1609 + .../tools/tools/zbstudio-win/lualibs/sha2.lua | 239 + .../tools/tools/zbstudio-win/lualibs/socket.lua | 165 + .../tools/zbstudio-win/lualibs/socket/ftp.lua | 285 + .../tools/zbstudio-win/lualibs/socket/headers.lua | 104 + .../tools/zbstudio-win/lualibs/socket/http.lua | 354 + .../tools/zbstudio-win/lualibs/socket/smtp.lua | 256 + .../tools/tools/zbstudio-win/lualibs/socket/tp.lua | 126 + .../tools/zbstudio-win/lualibs/socket/url.lua | 307 + .../tools/tools/zbstudio-win/lualibs/ssl.lua | 93 + .../tools/tools/zbstudio-win/lualibs/ssl/https.lua | 138 + .../tools/tools/zbstudio-win/lualibs/testwell.lua | 315 + love2dToAPK/tools/tools/zbstudio-win/spec/lua.lua | 284 + love2dToAPK/tools/tools/zbstudio-win/spec/text.lua | 9 + love2dToAPK/tools/tools/zbstudio-win/src/defs.lua | 332 + .../tools/zbstudio-win/src/editor/autocomplete.lua | 652 + .../tools/zbstudio-win/src/editor/commandbar.lua | 359 + .../tools/zbstudio-win/src/editor/commands.lua | 1054 + .../tools/zbstudio-win/src/editor/debugger.lua | 1696 + .../tools/tools/zbstudio-win/src/editor/editor.lua | 1619 + .../tools/zbstudio-win/src/editor/filetree.lua | 903 + .../tools/zbstudio-win/src/editor/findreplace.lua | 1275 + .../tools/tools/zbstudio-win/src/editor/gui.lua | 567 + .../tools/tools/zbstudio-win/src/editor/ids.lua | 190 + .../tools/zbstudio-win/src/editor/inspect.lua | 243 + .../tools/zbstudio-win/src/editor/iofilters.lua | 71 + .../tools/tools/zbstudio-win/src/editor/keymap.lua | 136 + .../tools/zbstudio-win/src/editor/markers.lua | 247 + .../tools/tools/zbstudio-win/src/editor/markup.lua | 214 + .../tools/zbstudio-win/src/editor/menu_edit.lua | 390 + .../tools/zbstudio-win/src/editor/menu_file.lua | 262 + .../tools/zbstudio-win/src/editor/menu_help.lua | 118 + .../tools/zbstudio-win/src/editor/menu_project.lua | 474 + .../tools/zbstudio-win/src/editor/menu_search.lua | 420 + .../tools/zbstudio-win/src/editor/menu_tools.lua | 111 + .../tools/zbstudio-win/src/editor/menu_view.lua | 113 + .../tools/zbstudio-win/src/editor/outline.lua | 679 + .../tools/tools/zbstudio-win/src/editor/output.lua | 498 + .../tools/zbstudio-win/src/editor/package.lua | 735 + .../tools/tools/zbstudio-win/src/editor/print.lua | 195 + .../tools/tools/zbstudio-win/src/editor/proto.lua | 68 + .../tools/zbstudio-win/src/editor/settings.lua | 593 + .../tools/zbstudio-win/src/editor/shellbox.lua | 574 + .../zbstudio-win/src/editor/singleinstance.lua | 98 + .../tools/tools/zbstudio-win/src/editor/style.lua | 441 + .../tools/zbstudio-win/src/editor/toolbar.lua | 55 + love2dToAPK/tools/tools/zbstudio-win/src/main.lua | 774 + love2dToAPK/tools/tools/zbstudio-win/src/util.lua | 645 + .../tools/tools/zbstudio-win/src/version.lua | 1 + love2dToAPK/tools/tools/zbstudio-win/tools/cg.lua | 537 + .../tools/tools/zbstudio-win/tools/clcc.lua | 67 + .../tools/tools/zbstudio-win/tools/cstringify.lua | 21 + love2dToAPK/tools/tools/zbstudio-win/tools/dx.lua | 157 + .../tools/tools/zbstudio-win/tools/ffitoapi.lua | 313 + .../tools/tools/zbstudio-win/tools/glslc.lua | 470 + .../tools/zbstudio-win/tools/perforce_edit.lua | 14 + .../tools/zbstudio-win/tools/perforce_revert.lua | 14 + love2dToAPK/tools/tools/zbstudio-win/zbstudio.exe | Bin 0 -> 51296 bytes .../tools/tools/zbstudio-win/zbstudio/app.lua | 53 + .../tools/tools/zbstudio-win/zbstudio/config.lua | 38 + .../zbstudio/res/16/BOOKMARK-TOGGLE.png | Bin 0 -> 884 bytes .../zbstudio-win/zbstudio/res/16/DEBUG-BREAK.png | Bin 0 -> 374 bytes .../zbstudio/res/16/DEBUG-BREAKPOINT-TOGGLE.png | Bin 0 -> 702 bytes .../zbstudio/res/16/DEBUG-CALLSTACK.png | Bin 0 -> 500 bytes .../zbstudio-win/zbstudio/res/16/DEBUG-DETACH.png | Bin 0 -> 583 bytes .../zbstudio-win/zbstudio/res/16/DEBUG-RUN-TO.png | Bin 0 -> 329 bytes .../zbstudio-win/zbstudio/res/16/DEBUG-START.png | Bin 0 -> 259 bytes .../zbstudio/res/16/DEBUG-STEP-INTO.png | Bin 0 -> 335 bytes .../zbstudio/res/16/DEBUG-STEP-OUT.png | Bin 0 -> 356 bytes .../zbstudio/res/16/DEBUG-STEP-OVER.png | Bin 0 -> 362 bytes .../zbstudio-win/zbstudio/res/16/DEBUG-STOP.png | Bin 0 -> 594 bytes .../zbstudio-win/zbstudio/res/16/DEBUG-WATCH.png | Bin 0 -> 786 bytes .../zbstudio/res/16/DIR-SETUP-FILE.png | Bin 0 -> 778 bytes .../zbstudio-win/zbstudio/res/16/DIR-SETUP.png | Bin 0 -> 738 bytes .../zbstudio-win/zbstudio/res/16/FILE-KNOWN.png | Bin 0 -> 623 bytes .../zbstudio-win/zbstudio/res/16/FILE-NEW.png | Bin 0 -> 730 bytes .../zbstudio/res/16/FILE-NORMAL-START.png | Bin 0 -> 743 bytes .../zbstudio-win/zbstudio/res/16/FILE-NORMAL.png | Bin 0 -> 652 bytes .../zbstudio-win/zbstudio/res/16/FILE-OPEN.png | Bin 0 -> 602 bytes .../zbstudio-win/zbstudio/res/16/FILE-SAVE-ALL.png | Bin 0 -> 1322 bytes .../zbstudio-win/zbstudio/res/16/FILE-SAVE.png | Bin 0 -> 1346 bytes .../zbstudio/res/16/FIND-AND-REPLACE.png | Bin 0 -> 451 bytes .../zbstudio-win/zbstudio/res/16/FIND-IN-FILES.png | Bin 0 -> 671 bytes .../zbstudio/res/16/FIND-OPT-CASE-SENSITIVE.png | Bin 0 -> 402 bytes .../zbstudio/res/16/FIND-OPT-CONTEXT.png | Bin 0 -> 306 bytes .../zbstudio-win/zbstudio/res/16/FIND-OPT-DOWN.png | Bin 0 -> 340 bytes .../zbstudio/res/16/FIND-OPT-MULTI-RESULTS.png | Bin 0 -> 445 bytes .../zbstudio/res/16/FIND-OPT-REGEX.png | Bin 0 -> 387 bytes .../zbstudio/res/16/FIND-OPT-SELECTION.png | Bin 0 -> 229 bytes .../zbstudio/res/16/FIND-OPT-SETDIR.png | Bin 0 -> 716 bytes .../zbstudio/res/16/FIND-OPT-SUBDIR.png | Bin 0 -> 742 bytes .../zbstudio-win/zbstudio/res/16/FIND-OPT-WORD.png | Bin 0 -> 398 bytes .../zbstudio/res/16/FIND-OPT-WRAP-AROUND.png | Bin 0 -> 415 bytes .../zbstudio/res/16/FIND-REPLACE-NEXT.png | Bin 0 -> 520 bytes .../tools/zbstudio-win/zbstudio/res/16/FIND.png | Bin 0 -> 662 bytes .../zbstudio-win/zbstudio/res/16/FOLDER-MAPPED.png | Bin 0 -> 656 bytes .../tools/zbstudio-win/zbstudio/res/16/FOLDER.png | Bin 0 -> 615 bytes .../tools/zbstudio-win/zbstudio/res/16/LICENSE | 28 + .../tools/zbstudio-win/zbstudio/res/16/RUN-NOW.png | Bin 0 -> 292 bytes .../tools/zbstudio-win/zbstudio/res/16/RUN.png | Bin 0 -> 271 bytes .../zbstudio-win/zbstudio/res/16/VALUE-ACALL.png | Bin 0 -> 371 bytes .../zbstudio-win/zbstudio/res/16/VALUE-CALL.png | Bin 0 -> 717 bytes .../zbstudio-win/zbstudio/res/16/VALUE-GCALL.png | Bin 0 -> 374 bytes .../zbstudio-win/zbstudio/res/16/VALUE-LCALL.png | Bin 0 -> 433 bytes .../zbstudio-win/zbstudio/res/16/VALUE-LOCAL.png | Bin 0 -> 698 bytes .../zbstudio-win/zbstudio/res/16/VALUE-SCALL.png | Bin 0 -> 428 bytes .../zbstudio-win/zbstudio/res/16/VALUE-UP.png | Bin 0 -> 753 bytes .../zbstudio/res/24/BOOKMARK-TOGGLE.png | Bin 0 -> 1087 bytes .../zbstudio-win/zbstudio/res/24/DEBUG-BREAK.png | Bin 0 -> 473 bytes .../zbstudio/res/24/DEBUG-BREAKPOINT-TOGGLE.png | Bin 0 -> 1457 bytes .../zbstudio/res/24/DEBUG-CALLSTACK.png | Bin 0 -> 566 bytes .../zbstudio-win/zbstudio/res/24/DEBUG-DETACH.png | Bin 0 -> 755 bytes .../zbstudio-win/zbstudio/res/24/DEBUG-RUN-TO.png | Bin 0 -> 400 bytes .../zbstudio-win/zbstudio/res/24/DEBUG-START.png | Bin 0 -> 369 bytes .../zbstudio/res/24/DEBUG-STEP-INTO.png | Bin 0 -> 451 bytes .../zbstudio/res/24/DEBUG-STEP-OUT.png | Bin 0 -> 450 bytes .../zbstudio/res/24/DEBUG-STEP-OVER.png | Bin 0 -> 484 bytes .../zbstudio-win/zbstudio/res/24/DEBUG-STOP.png | Bin 0 -> 799 bytes .../zbstudio-win/zbstudio/res/24/DEBUG-WATCH.png | Bin 0 -> 1008 bytes .../zbstudio/res/24/DIR-SETUP-FILE.png | Bin 0 -> 1365 bytes .../zbstudio-win/zbstudio/res/24/DIR-SETUP.png | Bin 0 -> 1412 bytes .../zbstudio-win/zbstudio/res/24/FILE-NEW.png | Bin 0 -> 821 bytes .../zbstudio-win/zbstudio/res/24/FILE-OPEN.png | Bin 0 -> 780 bytes .../zbstudio-win/zbstudio/res/24/FILE-SAVE-ALL.png | Bin 0 -> 622 bytes .../zbstudio-win/zbstudio/res/24/FILE-SAVE.png | Bin 0 -> 1165 bytes .../zbstudio/res/24/FIND-AND-REPLACE.png | Bin 0 -> 495 bytes .../zbstudio-win/zbstudio/res/24/FIND-IN-FILES.png | Bin 0 -> 1173 bytes .../tools/zbstudio-win/zbstudio/res/24/FIND.png | Bin 0 -> 775 bytes .../tools/zbstudio-win/zbstudio/res/24/LICENSE | 27 + .../tools/zbstudio-win/zbstudio/res/24/RUN-NOW.png | Bin 0 -> 384 bytes .../tools/zbstudio-win/zbstudio/res/24/RUN.png | Bin 0 -> 358 bytes .../tools/zbstudio-win/zbstudio/res/estrela.png | Bin 0 -> 6252 bytes .../tools/zbstudio-win/zbstudio/res/zbstudio.ico | Bin 0 -> 32038 bytes .../tools/zbstudio-win/zbstudio/res/zerobrane.png | Bin 0 -> 10255 bytes 1716 files changed, 462968 insertions(+) create mode 100644 .gitignore create mode 100644 love2dToAPK.sln create mode 100644 love2dToAPK/App.config create mode 100644 love2dToAPK/Controls/minimalButton.Designer.cs create mode 100644 love2dToAPK/Controls/minimalButton.cs create mode 100644 love2dToAPK/Forms/baseForm.Designer.cs create mode 100644 love2dToAPK/Forms/baseForm.cs create mode 100644 love2dToAPK/Forms/baseForm.resx create mode 100644 love2dToAPK/Forms/frmFirstStartup.Designer.cs create mode 100644 love2dToAPK/Forms/frmFirstStartup.cs create mode 100644 love2dToAPK/Forms/frmFirstStartup.resx create mode 100644 love2dToAPK/Forms/frmMain.Designer.cs create mode 100644 love2dToAPK/Forms/frmMain.cs create mode 100644 love2dToAPK/Forms/frmMain.resx create mode 100644 love2dToAPK/Forms/frmOutput.Designer.cs create mode 100644 love2dToAPK/Forms/frmOutput.cs create mode 100644 love2dToAPK/Forms/frmOutput.resx create mode 100644 love2dToAPK/Forms/frmSettings.Designer.cs create mode 100644 love2dToAPK/Forms/frmSettings.cs create mode 100644 love2dToAPK/Forms/frmSettings.resx create mode 100644 love2dToAPK/Program.cs create mode 100644 love2dToAPK/Properties/AssemblyInfo.cs create mode 100644 love2dToAPK/Properties/Resources.Designer.cs create mode 100644 love2dToAPK/Properties/Resources.resx create mode 100644 love2dToAPK/Properties/Settings.Designer.cs create mode 100644 love2dToAPK/Properties/Settings.settings create mode 100644 love2dToAPK/Resources/983924-200.png create mode 100644 love2dToAPK/Resources/ready.png create mode 100644 love2dToAPK/Settings.cs create mode 100644 love2dToAPK/adb.cs create mode 100644 love2dToAPK/compiler.cs create mode 100644 love2dToAPK/love2dToAPK.csproj create mode 100644 love2dToAPK/packages.config create mode 100644 love2dToAPK/tools/icon.png create mode 100644 love2dToAPK/tools/startAnt.bat create mode 100644 love2dToAPK/tools/tools/adb/AdbWinApi.dll create mode 100644 love2dToAPK/tools/tools/adb/AdbWinUsbApi.dll create mode 100644 love2dToAPK/tools/tools/adb/NOTICE.txt create mode 100644 love2dToAPK/tools/tools/adb/adb.exe create mode 100644 love2dToAPK/tools/tools/adb/api/annotations.zip create mode 100644 love2dToAPK/tools/tools/adb/api/api-versions.xml create mode 100644 love2dToAPK/tools/tools/adb/dmtracedump.exe create mode 100644 love2dToAPK/tools/tools/adb/etc1tool.exe create mode 100644 love2dToAPK/tools/tools/adb/fastboot.exe create mode 100644 love2dToAPK/tools/tools/adb/hprof-conv.exe create mode 100644 love2dToAPK/tools/tools/adb/lib64/libc++.so create mode 100644 love2dToAPK/tools/tools/adb/libwinpthread-1.dll create mode 100644 love2dToAPK/tools/tools/adb/mke2fs.exe create mode 100644 love2dToAPK/tools/tools/adb/source.properties create mode 100644 love2dToAPK/tools/tools/adb/sqlite3.exe create mode 100644 love2dToAPK/tools/tools/adb/systrace/NOTICE create mode 100644 love2dToAPK/tools/tools/adb/systrace/UPSTREAM_REVISION create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/battor/battor/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/battor/battor/battor_binary_dependencies.json create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/battor/battor/battor_error.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/battor/battor/battor_wrapper.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/battor/battor/battor_wrapper_devicetest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/battor/battor/battor_wrapper_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/eslint/LICENSE create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/eslint/README.md create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/eslint/eslint/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/eslint/eslint/smoke_test.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/eslint/rules/catapult-camelcase.js create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/eslint/tests/catapult-camelcase.js create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/lab/commits.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/lab/hardware.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/lab/keychain_unlock.sh create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/node_runner/node_runner/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/node_runner/node_runner/node_binaries.json create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/node_runner/node_runner/node_util.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/node_runner/node_runner/package.json create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/README.txt create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/run_tests create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/setup.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/decorators.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/decorators_test.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/log.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/log_io_test.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/meta_class.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/multiprocessing_shim.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/parsed_trace_events.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/trace_test.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_time.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_time_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/PRESUBMIT.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/binary_manager.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/binary_manager_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/chrome_binaries.json create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/cloud_storage.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/cloud_storage_global_lock.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/cloud_storage_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/contextlib_ext.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/contextlib_ext_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/dependency_util.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/lock.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/lock_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/py_utils_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/annotated_symbol/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/annotated_symbol/base_symbol.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/annotated_symbol/class_definition.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/annotated_symbol/function_definition.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/annotated_symbol/import_statement.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/annotated_symbol/reference.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/module.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/offset_token.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/snippet.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor_util/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor_util/move.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/shell_util.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/tempfile_ext.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/tempfile_ext_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/test_data/foo.txt create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/xvfb.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/PRESUBMIT.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/archive_info.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/base_config.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/base_config_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/cloud_storage_info.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/cloud_storage_info_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/dependency_info.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/dependency_info_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/dependency_manager_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/dependency_manager_util.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/dependency_manager_util_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/exceptions.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/local_path_info.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/manager.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/uploader.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/uploader_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/pylintrc create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/PRESUBMIT.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/README.md create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/apk_helper.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/apk_helper_test.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/app_ui.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/app_ui_test.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/battery_utils.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/battery_utils_test.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/constants/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/constants/chrome.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/constants/file_system.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/decorators.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/decorators_test.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_blacklist.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_blacklist_test.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_errors.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_errors_test.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_list.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_signal.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_temp_file.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_test_case.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_utils.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_utils_devicetest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_utils_test.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/fastboot_utils.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/fastboot_utils_test.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/flag_changer.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/flag_changer_devicetest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/flag_changer_test.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/forwarder.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/install_commands.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/logcat_monitor.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/logcat_monitor_test.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/md5sum.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/md5sum_test.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/perf/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/perf/cache_control.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/perf/perf_control.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/perf/perf_control_devicetest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/perf/surface_stats_collector.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/perf/thermal_throttle.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/ports.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/aapt.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/adb_compatibility_devicetest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/adb_wrapper.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/adb_wrapper_devicetest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/adb_wrapper_test.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/build_tools.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/dexdump.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/fastboot.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/gce_adb_wrapper.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/intent.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/keyevent.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/shared_prefs.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/shared_prefs_test.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/split_select.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/test/data/push_directory/push_directory_contents.txt create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/test/data/push_file.txt create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/version_codes.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/settings.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/adb_run_shell_cmd.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/cpufreq.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/device_monitor.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/device_monitor_test.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/device_recovery.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/device_status.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/flash_device.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/keyboard.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/provision_devices.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/screenshot.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/script_common.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/script_common_test.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/video_recorder.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/wait_for_devices.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/valgrind_tools/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/valgrind_tools/base_tool.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/base_error.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/constants/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/constants/exit_codes.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/devil_dependencies.json create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/devil_env.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/devil_env_test.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/battor_device_mapping.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/cmd_helper.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/cmd_helper_test.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/file_utils.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/find_usb_devices.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/find_usb_devices_test.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/geometry.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/geometry_test.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/host_utils.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/lazy/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/lazy/weak_constant.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/lsusb.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/lsusb_test.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/markdown.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/markdown_test.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/mock_calls.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/mock_calls_test.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/parallelizer.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/parallelizer_test.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/reraiser_thread.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/reraiser_thread_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/reset_usb.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/run_tests_helper.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/signal_handler.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/test/data/test_serial_map.json create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/timeout_retry.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/timeout_retry_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/update_mapping.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/usb_hubs.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/watchdog_timer.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/zip_utils.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/docs/adb_wrapper.md create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/docs/device_blacklist.md create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/docs/device_utils.md create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/docs/markdown.md create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/docs/persistent_device_list.md create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/devil/pylintrc create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/PRESUBMIT.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/README.md create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/README.md create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/Application.mk create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/file_utils.cc create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/file_utils.h create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/logging.h create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/main.cc create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/process_info.cc create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/process_info.h create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/process_memory_stats.cc create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/process_memory_stats.h create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/chrome_startup_tracing_agent.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/chrome_startup_tracing_agent_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/chrome_tracing_agent.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/chrome_tracing_agent_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/ddms_tracing_agent.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/ddms_tracing_agent_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/fake_agent_1.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/fake_agent_2.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/flags.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/main.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/perf_tracing_agent.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/perf_tracing_agent_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/profiler.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/profiler_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/run_tests create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/third_party/COPYING create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/third_party/README.chromium create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/third_party/perf_to_tracing.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/ui.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/util.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/pylintrc create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/AUTHORS create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/LICENSE create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/README.md create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/decorators.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/monitor_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/output_generator.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/output_generator_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/prefix.html create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/run_systrace.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/suffix.html create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/systrace_runner.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/systrace_trace_viewer.html create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_data create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_data_raw create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_data_stripped create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_extracted_tgids create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_extracted_threads create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_fixed_tgids create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_missing_tgids create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_procfs_dump create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/battor_test_data.txt create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/compressed_atrace_data.txt create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/decompressed_atrace_data.txt create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/profile-chrome_systrace_perf_chrome_data create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/trace_result.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/agents_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/android_process_data_agent.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/atrace_agent.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/atrace_agent_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/atrace_from_file_agent.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/atrace_from_file_agent_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/battor_trace_agent.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/battor_trace_agent_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/ftrace_agent.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/ftrace_agent_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/walt_agent.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/walt_agent_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_controller.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/update_systrace_trace_viewer.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/util.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/util_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/LICENSE.txt create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/README.chromium create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/linux-product_info.patch create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/rfc2217.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/serialcli.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/serialjava.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/serialposix.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/serialutil.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/serialwin32.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/sermsdos.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/tools/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/tools/list_ports.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/tools/list_ports_linux.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/tools/list_ports_osx.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/tools/list_ports_posix.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/tools/list_ports_windows.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/tools/miniterm.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/urlhandler/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/urlhandler/protocol_hwgrep.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/urlhandler/protocol_loop.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/urlhandler/protocol_rfc2217.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/urlhandler/protocol_socket.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/win32.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/third_party/zipfile/LICENSE create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/third_party/zipfile/README.chromium create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/third_party/zipfile/zipfile_2_7_13.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/tracing/tracing/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/tracing/tracing/trace_data/__init__.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/tracing/tracing/trace_data/trace_data.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/tracing/tracing/trace_data/trace_data_unittest.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/catapult/tracing/tracing_project.py create mode 100644 love2dToAPK/tools/tools/adb/systrace/systrace.py create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/NOTICE.txt create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/aapt.exe create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/aidl.exe create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/bcc_compat.exe create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/dexdump.exe create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/dx.bat create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/lib/dx.jar create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/libbcc.dll create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/libbcinfo.dll create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/CMakeLists.txt create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/LICENSE.TXT create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/altivec.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/ammintrin.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/avx2intrin.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/avxintrin.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/bmi2intrin.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/bmiintrin.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/cpuid.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/emmintrin.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/f16cintrin.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/float.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/fma4intrin.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/fmaintrin.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/immintrin.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/iso646.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/limits.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/lzcntintrin.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/mm3dnow.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/mm_malloc.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/mmintrin.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/module.map create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/nmmintrin.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/pmmintrin.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/popcntintrin.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/prfchwintrin.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/rdseedintrin.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/rtmintrin.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/smmintrin.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/stdalign.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/stdarg.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/stdbool.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/stddef.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/stdint.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/stdnoreturn.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/tgmath.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/tmmintrin.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/unwind.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/varargs.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/wmmintrin.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/x86intrin.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/xmmintrin.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/xopintrin.h create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_allocation.rsh create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_atomic.rsh create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_cl.rsh create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_core.rsh create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_debug.rsh create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_element.rsh create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_graphics.rsh create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_math.rsh create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_matrix.rsh create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_mesh.rsh create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_object.rsh create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_program.rsh create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_quaternion.rsh create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_sampler.rsh create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_time.rsh create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_types.rsh create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/bc/armeabi-v7a/libclcore.bc create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/bc/mips/libclcore.bc create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/intermediates/armeabi-v7a/libc.so create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/intermediates/armeabi-v7a/libcompiler_rt.a create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/intermediates/armeabi-v7a/libm.so create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/intermediates/mips/libc.so create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/intermediates/mips/libcompiler_rt.a create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/intermediates/mips/libm.so create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/packaged/armeabi-v7a/libRSSupport.so create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/packaged/armeabi-v7a/librsjni.so create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/packaged/mips/libRSSupport.so create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/packaged/mips/librsjni.so create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/renderscript-v8.jar create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/source.properties create mode 100644 love2dToAPK/tools/tools/android-win/build-tools/19.1.0/zipalign.exe create mode 100644 love2dToAPK/tools/tools/android-win/platform-tools/AdbWinApi.dll create mode 100644 love2dToAPK/tools/tools/android-win/platform-tools/AdbWinUsbApi.dll create mode 100644 love2dToAPK/tools/tools/android-win/platform-tools/NOTICE.txt create mode 100644 love2dToAPK/tools/tools/android-win/platform-tools/adb.exe create mode 100644 love2dToAPK/tools/tools/android-win/platform-tools/api/api-versions.xml create mode 100644 love2dToAPK/tools/tools/android-win/platform-tools/dmtracedump.exe create mode 100644 love2dToAPK/tools/tools/android-win/platform-tools/etc1tool.exe create mode 100644 love2dToAPK/tools/tools/android-win/platform-tools/fastboot.exe create mode 100644 love2dToAPK/tools/tools/android-win/platform-tools/hprof-conv.exe create mode 100644 love2dToAPK/tools/tools/android-win/platform-tools/source.properties create mode 100644 love2dToAPK/tools/tools/android-win/platform-tools/sqlite3.exe create mode 100644 love2dToAPK/tools/tools/android-win/platform-tools/systrace/AUTHORS create mode 100644 love2dToAPK/tools/tools/android-win/platform-tools/systrace/LICENSE create mode 100644 love2dToAPK/tools/tools/android-win/platform-tools/systrace/NOTICE create mode 100644 love2dToAPK/tools/tools/android-win/platform-tools/systrace/UPSTREAM_REVISION create mode 100644 love2dToAPK/tools/tools/android-win/platform-tools/systrace/prefix.html create mode 100644 love2dToAPK/tools/tools/android-win/platform-tools/systrace/script.js create mode 100644 love2dToAPK/tools/tools/android-win/platform-tools/systrace/style.css create mode 100644 love2dToAPK/tools/tools/android-win/platform-tools/systrace/suffix.html create mode 100644 love2dToAPK/tools/tools/android-win/platform-tools/systrace/systrace-legacy.py create mode 100644 love2dToAPK/tools/tools/android-win/platform-tools/systrace/systrace.py create mode 100644 love2dToAPK/tools/tools/android-win/platforms/android-19/android.jar create mode 100644 love2dToAPK/tools/tools/android-win/platforms/android-19/build.prop create mode 100644 love2dToAPK/tools/tools/android-win/platforms/android-19/framework.aidl create mode 100644 love2dToAPK/tools/tools/android-win/platforms/android-19/sdk.properties create mode 100644 love2dToAPK/tools/tools/android-win/platforms/android-19/source.properties create mode 100644 love2dToAPK/tools/tools/android-win/platforms/android-19/uiautomator.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/NOTICE.txt create mode 100644 love2dToAPK/tools/tools/android-win/tools/android.bat create mode 100644 love2dToAPK/tools/tools/android-win/tools/ant/NOTICE create mode 100644 love2dToAPK/tools/tools/android-win/tools/ant/build.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/ant/uibuild.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/.classpath create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/.project create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/.settings/org.eclipse.jdt.core.prefs create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/AndroidManifest.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/Implementation.txt create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/NOTICE create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/assets/intro_help.html create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/proguard-project.txt create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/project.properties create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/drawable-hdpi/ic_launcher.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/drawable-ldpi/ic_launcher.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/drawable-mdpi/ic_launcher.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/drawable-xhdpi/ic_launcher.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/layout-land/sensors.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/layout/main.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/layout/multitouch.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/layout/sensor_row.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/layout/sensors.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/values-v11/styles_v11.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/values/strings.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/values/styles.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/src/com/android/tools/sdkcontroller/activities/BaseBindingActivity.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/src/com/android/tools/sdkcontroller/activities/MainActivity.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/src/com/android/tools/sdkcontroller/activities/MultiTouchActivity.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/src/com/android/tools/sdkcontroller/activities/SensorActivity.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/src/com/android/tools/sdkcontroller/handlers/MultiTouchChannel.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/src/com/android/tools/sdkcontroller/handlers/SensorChannel.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/src/com/android/tools/sdkcontroller/lib/Channel.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/src/com/android/tools/sdkcontroller/lib/Connection.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/src/com/android/tools/sdkcontroller/lib/ProtocolConstants.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/src/com/android/tools/sdkcontroller/lib/Socket.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/src/com/android/tools/sdkcontroller/service/ControllerService.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/src/com/android/tools/sdkcontroller/utils/ApiHelper.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/src/com/android/tools/sdkcontroller/utils/ApiHelper_11.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/apps/SdkController/src/com/android/tools/sdkcontroller/views/MultiTouchView.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/ddms.bat create mode 100644 love2dToAPK/tools/tools/android-win/tools/draw9patch.bat create mode 100644 love2dToAPK/tools/tools/android-win/tools/hierarchyviewer.bat create mode 100644 love2dToAPK/tools/tools/android-win/tools/jobb.bat create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/android.el create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/annotations-12.0.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/annotations.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/ant-tasks.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/archquery.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/asm-5.0.3.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/asm-analysis-5.0.3.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/asm-tree-5.0.3.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/asset-studio.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/build.template create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/build_gradle.template create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/builder-model.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/cglib-nodep-3.1.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/chimpchat.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/common.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/commons-codec-1.4.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/commons-compress-1.8.1.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/commons-logging-1.1.1.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/ddmlib.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/ddms.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/ddmuilib.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/devices.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/draw9patch.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/dvlib.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/easymock-3.3.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/ecj-4.4.2.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/emma.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/emma_ant.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/emma_device.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/fat32lib.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/find_java.bat create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/find_java32.exe create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/find_java64.exe create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/gson-2.2.4.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/guava-17.0.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/hamcrest-core-1.3.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/hierarchyviewer2.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/hierarchyviewer2lib.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/httpclient-4.1.1.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/httpcore-4.1.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/httpmime-4.1.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/jcommon-1.0.12.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/jfreechart-1.0.9.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/jfreechart-swt-1.0.9.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/jobb.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/jsilver-1.0.0.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/junit-4.12.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/kxml2-2.3.0.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/layoutlib-api.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/libemugl_test_shared_library.dll create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/lint-api.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/lint-checks.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/lint-tests.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/lint.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/lombok-ast-0.2.3.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/manifest-merger.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/monkeyrunner.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/ninepatch.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/objenesis-2.1.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/org-eclipse-core-commands-3.6.0.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/org-eclipse-equinox-common-3.6.0.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/org-eclipse-jface-3.6.2.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/osgi-4.0.0.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/pc-bios/bios.bin create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/pc-bios/vgabios-cirrus.bin create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/plugin.prop create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/proguard-project.txt create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/rule-api.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/screenshot2.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/sdk-common.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/sdklib.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/sdkmanager.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/sdkstats.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/sdkuilib.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/swtmenubar.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/traceview.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/uiautomatorviewer.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/lib/uibuild.template create mode 100644 love2dToAPK/tools/tools/android-win/tools/lint.bat create mode 100644 love2dToAPK/tools/tools/android-win/tools/mksdcard.exe create mode 100644 love2dToAPK/tools/tools/android-win/tools/monitor.bat create mode 100644 love2dToAPK/tools/tools/android-win/tools/monkeyrunner.bat create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/README create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/ant/task.properties create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/android.pro create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/annotations/examples.pro create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/annotations/examples/Applet.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/annotations/examples/Application.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/annotations/examples/Bean.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/annotations/examples/NativeCallBack.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/annotations/lib/annotations.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/annotations/lib/annotations.pro create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/annotations/src/proguard/annotation/Keep.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/annotations/src/proguard/annotation/KeepApplication.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/annotations/src/proguard/annotation/KeepClassMemberNames.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/annotations/src/proguard/annotation/KeepClassMembers.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/annotations/src/proguard/annotation/KeepGettersSetters.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/annotations/src/proguard/annotation/KeepImplementations.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/annotations/src/proguard/annotation/KeepName.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/annotations/src/proguard/annotation/KeepPublicClassMemberNames.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/annotations/src/proguard/annotation/KeepPublicClassMembers.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/annotations/src/proguard/annotation/KeepPublicGettersSetters.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/annotations/src/proguard/annotation/KeepPublicImplementations.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/annotations/src/proguard/annotation/KeepPublicProtectedClassMemberNames.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/annotations/src/proguard/annotation/KeepPublicProtectedClassMembers.java create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/ant/android-8.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/ant/applets.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/ant/applications1.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/ant/applications2.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/ant/applications3.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/ant/library.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/ant/midlets.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/ant/proguard.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/ant/servlets.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/applets.pro create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/applications.pro create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/dictionaries/compact.txt create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/dictionaries/keywords.txt create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/dictionaries/shakespeare.txt create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/dictionaries/windows.txt create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/library.pro create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/midlets.pro create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/proguard.pro create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/proguardall.pro create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/proguardgui.pro create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/retrace.pro create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/scala.pro create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/examples/servlets.pro create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/lib/proguard.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/lib/proguardgui.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/lib/retrace.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/license.html create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/proguard-android-optimize.txt create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/proguard-android.txt create mode 100644 love2dToAPK/tools/tools/android-win/tools/proguard/proguard-project.txt create mode 100644 love2dToAPK/tools/tools/android-win/tools/source.properties create mode 100644 love2dToAPK/tools/tools/android-win/tools/support/annotations.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/support/typos-de.txt create mode 100644 love2dToAPK/tools/tools/android-win/tools/support/typos-en.txt create mode 100644 love2dToAPK/tools/tools/android-win/tools/support/typos-es.txt create mode 100644 love2dToAPK/tools/tools/android-win/tools/support/typos-hu.txt create mode 100644 love2dToAPK/tools/tools/android-win/tools/support/typos-it.txt create mode 100644 love2dToAPK/tools/tools/android-win/tools/support/typos-nb.txt create mode 100644 love2dToAPK/tools/tools/android-win/tools/support/typos-pt.txt create mode 100644 love2dToAPK/tools/tools/android-win/tools/support/typos-tr.txt create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/BlankActivity/globals.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/BlankActivity/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/BlankActivity/root/AndroidManifest.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/BlankActivity/root/res/layout/activity_simple.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/BlankActivity/root/res/menu/main.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/BlankActivity/root/res/values-w820dp/dimens.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/BlankActivity/root/res/values/dimens.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/BlankActivity/root/res/values/strings.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/BlankActivity/root/src/app_package/SimpleActivity.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/BlankActivity/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/BlankActivity/template_blank_activity.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/BlankActivityWithFragment/globals.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/BlankActivityWithFragment/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/BlankActivityWithFragment/root/AndroidManifest.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/BlankActivityWithFragment/root/res/layout/activity_fragment_container.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/BlankActivityWithFragment/root/res/layout/fragment_simple.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/BlankActivityWithFragment/root/res/menu/main.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/BlankActivityWithFragment/root/res/values-w820dp/dimens.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/BlankActivityWithFragment/root/res/values/dimens.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/BlankActivityWithFragment/root/res/values/strings.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/BlankActivityWithFragment/root/src/app_package/SimpleActivity.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/BlankActivityWithFragment/root/src/app_package/include_fragment.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/BlankActivityWithFragment/root/src/app_package/include_options_menu.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/BlankActivityWithFragment/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/BlankActivityWithFragment/template_blank_activity_fragment.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/EmptyActivity/globals.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/EmptyActivity/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/EmptyActivity/root/AndroidManifest.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/EmptyActivity/root/res/layout/activity_simple.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/EmptyActivity/root/res/values/strings.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/EmptyActivity/root/src/app_package/SimpleActivity.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/EmptyActivity/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/EmptyActivity/template_blank_activity.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/FullscreenActivity/globals.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/FullscreenActivity/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/FullscreenActivity/root/AndroidManifest.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/FullscreenActivity/root/res/layout/activity_fullscreen.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/FullscreenActivity/root/res/values-v11/styles.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/FullscreenActivity/root/res/values/attrs.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/FullscreenActivity/root/res/values/colors.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/FullscreenActivity/root/res/values/strings.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/FullscreenActivity/root/res/values/styles.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/FullscreenActivity/root/src/app_package/FullscreenActivity.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/FullscreenActivity/root/src/app_package/util/SystemUiHider.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/FullscreenActivity/root/src/app_package/util/SystemUiHiderBase.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/FullscreenActivity/root/src/app_package/util/SystemUiHiderHoneycomb.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/FullscreenActivity/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/FullscreenActivity/template_fullscreen_activity.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/LoginActivity/globals.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/LoginActivity/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/LoginActivity/root/AndroidManifest.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/LoginActivity/root/res/layout/activity_login.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/LoginActivity/root/res/values/dimens.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/LoginActivity/root/res/values/strings.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/LoginActivity/root/src/app_package/LoginActivity.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/LoginActivity/root/src/app_package/PlusBaseActivity.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/LoginActivity/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/LoginActivity/template_login_activity.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/MasterDetailFlow/globals.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/MasterDetailFlow/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/MasterDetailFlow/root/AndroidManifest.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/MasterDetailFlow/root/res/layout/activity_content_detail.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/MasterDetailFlow/root/res/layout/activity_content_list.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/MasterDetailFlow/root/res/layout/activity_content_twopane.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/MasterDetailFlow/root/res/layout/fragment_content_detail.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/MasterDetailFlow/root/res/values-large/refs.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/MasterDetailFlow/root/res/values-sw600dp/refs.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/MasterDetailFlow/root/res/values/strings.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/MasterDetailFlow/root/src/app_package/ContentDetailActivity.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/MasterDetailFlow/root/src/app_package/ContentDetailFragment.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/MasterDetailFlow/root/src/app_package/ContentListActivity.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/MasterDetailFlow/root/src/app_package/ContentListFragment.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/MasterDetailFlow/root/src/app_package/dummy/DummyContent.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/MasterDetailFlow/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/MasterDetailFlow/template_master_detail.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/NavigationDrawerActivity/globals.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/NavigationDrawerActivity/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/NavigationDrawerActivity/root/AndroidManifest.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/NavigationDrawerActivity/root/build.gradle.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/NavigationDrawerActivity/root/res/drawable-hdpi/drawer_shadow.9.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/NavigationDrawerActivity/root/res/drawable-hdpi/ic_drawer.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/NavigationDrawerActivity/root/res/drawable-mdpi/drawer_shadow.9.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/NavigationDrawerActivity/root/res/drawable-mdpi/ic_drawer.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/NavigationDrawerActivity/root/res/drawable-xhdpi/drawer_shadow.9.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/NavigationDrawerActivity/root/res/drawable-xhdpi/ic_drawer.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/NavigationDrawerActivity/root/res/drawable-xxhdpi/drawer_shadow.9.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/NavigationDrawerActivity/root/res/drawable-xxhdpi/ic_drawer.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/NavigationDrawerActivity/root/res/layout/activity_drawer.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/NavigationDrawerActivity/root/res/layout/fragment_navigation_drawer.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/NavigationDrawerActivity/root/res/layout/fragment_simple.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/NavigationDrawerActivity/root/res/menu/global.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/NavigationDrawerActivity/root/res/menu/main.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/NavigationDrawerActivity/root/res/values-w820dp/dimens.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/NavigationDrawerActivity/root/res/values/dimens.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/NavigationDrawerActivity/root/res/values/strings.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/NavigationDrawerActivity/root/src/app_package/DrawerActivity.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/NavigationDrawerActivity/root/src/app_package/NavigationDrawerFragment.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/NavigationDrawerActivity/root/src/app_package/include_fragment.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/NavigationDrawerActivity/root/src/app_package/include_options_menu.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/NavigationDrawerActivity/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/NavigationDrawerActivity/template_blank_activity_drawer.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/SettingsActivity/globals.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/SettingsActivity/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/SettingsActivity/root/AndroidManifest.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/SettingsActivity/root/res/values/strings.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/SettingsActivity/root/res/xml/pref_data_sync.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/SettingsActivity/root/res/xml/pref_general.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/SettingsActivity/root/res/xml/pref_headers.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/SettingsActivity/root/res/xml/pref_notification.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/SettingsActivity/root/src/app_package/SettingsActivity.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/SettingsActivity/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/SettingsActivity/template_settings_activity.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/TabbedActivity/globals.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/TabbedActivity/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/TabbedActivity/root/AndroidManifest.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/TabbedActivity/root/res/layout/activity_fragment_container.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/TabbedActivity/root/res/layout/activity_pager.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/TabbedActivity/root/res/layout/fragment_simple.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/TabbedActivity/root/res/menu/main.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/TabbedActivity/root/res/values-w820dp/dimens.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/TabbedActivity/root/res/values/dimens.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/TabbedActivity/root/res/values/strings.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/TabbedActivity/root/src/app_package/DropdownActivity.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/TabbedActivity/root/src/app_package/TabsAndPagerActivity.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/TabbedActivity/root/src/app_package/include_fragment.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/TabbedActivity/root/src/app_package/include_options_menu.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/TabbedActivity/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/TabbedActivity/template_blank_activity_dropdown.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/TabbedActivity/template_blank_activity_pager.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/activities/TabbedActivity/template_blank_activity_tabs.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/gradle/utils/dependencies.gradle.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/gradle/wrapper/gradle/wrapper/gradle-wrapper.jar create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/gradle/wrapper/gradle/wrapper/gradle-wrapper.properties create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/gradle/wrapper/gradlew create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/gradle/wrapper/gradlew.bat create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AidlFile/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AidlFile/root/src/app_package/interface.aidl.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AidlFile/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AidlFolder/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AidlFolder/root/build.gradle.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AidlFolder/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AndroidManifest/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AndroidManifest/root/AndroidManifest.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AndroidManifest/root/build.gradle.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AndroidManifest/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/globals.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/root/AndroidManifest.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/root/res/drawable-nodpi/example_appwidget_preview.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/root/res/layout/appwidget.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/root/res/layout/appwidget_configure.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/root/res/values-v14/dimens.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/root/res/values/dimens.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/root/res/values/strings.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/root/res/xml/appwidget_info.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/root/src/app_package/AppWidget.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/root/src/app_package/AppWidgetConfigureActivity.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_1x1.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_1x1_h.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_1x1_v.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_1x1_vh.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_1x2.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_1x2_h.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_1x2_v.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_1x2_vh.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_1x3.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_1x3_h.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_1x3_v.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_1x3_vh.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_1x4.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_1x4_h.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_1x4_v.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_1x4_vh.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_2x1.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_2x1_h.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_2x1_v.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_2x1_vh.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_2x2.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_2x2_h.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_2x2_v.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_2x2_vh.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_2x3.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_2x3_h.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_2x3_v.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_2x3_vh.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_2x4.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_2x4_h.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_2x4_v.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_2x4_vh.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_3x1.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_3x1_h.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_3x1_v.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_3x1_vh.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_3x2.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_3x2_h.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_3x2_v.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_3x2_vh.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_3x3.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_3x3_h.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_3x3_v.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_3x3_vh.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_3x4.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_3x4_h.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_3x4_v.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_3x4_vh.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_4x1.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_4x1_h.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_4x1_v.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_4x1_vh.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_4x2.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_4x2_h.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_4x2_v.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_4x2_vh.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_4x3.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_4x3_h.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_4x3_v.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_4x3_vh.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_4x4.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_4x4_h.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_4x4_v.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AppWidget/thumbs/template_widget_4x4_vh.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AssetsFolder/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AssetsFolder/root/build.gradle.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/AssetsFolder/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/BlankFragment/globals.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/BlankFragment/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/BlankFragment/root/res/layout/fragment_blank.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/BlankFragment/root/res/values/strings.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/BlankFragment/root/src/app_package/BlankFragment.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/BlankFragment/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/BlankFragment/template_blank_fragment.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/BroadcastReceiver/globals.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/BroadcastReceiver/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/BroadcastReceiver/root/AndroidManifest.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/BroadcastReceiver/root/src/app_package/BroadcastReceiver.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/BroadcastReceiver/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/ContentProvider/globals.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/ContentProvider/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/ContentProvider/root/AndroidManifest.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/ContentProvider/root/src/app_package/ContentProvider.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/ContentProvider/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/CustomView/globals.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/CustomView/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/CustomView/root/res/layout/sample.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/CustomView/root/res/values/attrs.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/CustomView/root/src/app_package/CustomView.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/CustomView/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Daydream/globals.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Daydream/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Daydream/root/AndroidManifest.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Daydream/root/res/layout-v17/dream.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Daydream/root/res/values/strings.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Daydream/root/res/xml/dream_prefs.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Daydream/root/res/xml/xml_dream.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Daydream/root/src/app_package/DreamService.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Daydream/root/src/app_package/SettingsActivity.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Daydream/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/IntentService/globals.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/IntentService/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/IntentService/root/AndroidManifest.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/IntentService/root/src/app_package/IntentService.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/IntentService/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/JavaFolder/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/JavaFolder/root/build.gradle.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/JavaFolder/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/JniFolder/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/JniFolder/root/build.gradle.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/JniFolder/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/LayoutResourceFile/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/LayoutResourceFile/root/res/layout.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/LayoutResourceFile/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/ListFragment/globals.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/ListFragment/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/ListFragment/root/res/layout/fragment_grid.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/ListFragment/root/res/layout/fragment_list.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/ListFragment/root/res/values-large/refs_lrg.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/ListFragment/root/res/values-sw600dp/refs_lrg.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/ListFragment/root/res/values/refs.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/ListFragment/root/res/values/refs_lrg.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/ListFragment/root/src/app_package/ListFragment.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/ListFragment/root/src/app_package/dummy/DummyContent.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/ListFragment/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/ListFragment/templates_list_fragment.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Notification/globals.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Notification/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Notification/root/AndroidManifest.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Notification/root/res/drawable-hdpi/ic_action_stat_reply.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Notification/root/res/drawable-hdpi/ic_action_stat_share.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Notification/root/res/drawable-mdpi/ic_action_stat_reply.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Notification/root/res/drawable-mdpi/ic_action_stat_share.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Notification/root/res/drawable-nodpi/example_picture_large.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Notification/root/res/drawable-nodpi/example_picture_small.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Notification/root/res/drawable-xhdpi/ic_action_stat_reply.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Notification/root/res/drawable-xhdpi/ic_action_stat_share.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Notification/root/res/values/strings.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Notification/root/src/app_package/NotificationHelper.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Notification/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Notification/template_notification_list.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Notification/template_notification_list_actions.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Notification/template_notification_none.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Notification/template_notification_none_actions.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Notification/template_notification_picture.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Notification/template_notification_picture_actions.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Notification/template_notification_text.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Notification/template_notification_text_actions.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/PlusOneFragment/globals.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/PlusOneFragment/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/PlusOneFragment/root/AndroidManifest.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/PlusOneFragment/root/res/layout/fragment_plus_one.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/PlusOneFragment/root/src/app_package/PlusOneFragment.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/PlusOneFragment/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/PlusOneFragment/templates_plusone_fragment.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/ResFolder/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/ResFolder/root/build.gradle.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/ResFolder/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/ResourcesFolder/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/ResourcesFolder/root/build.gradle.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/ResourcesFolder/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/RsFolder/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/RsFolder/root/build.gradle.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/RsFolder/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Service/globals.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Service/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Service/root/AndroidManifest.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Service/root/src/app_package/Service.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/Service/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/ValueResourceFile/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/ValueResourceFile/root/res/values.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/other/ValueResourceFile/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidApplication/globals.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidApplication/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidApplication/root/AndroidManifest.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidApplication/root/build.gradle.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidApplication/root/res/drawable-hdpi/ic_launcher.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidApplication/root/res/drawable-mdpi/ic_launcher.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidApplication/root/res/drawable-xhdpi/ic_launcher.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidApplication/root/res/values-v11/styles_hc.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidApplication/root/res/values-v14/styles_ics.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidApplication/root/res/values/strings.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidApplication/root/res/values/styles.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidApplication/root/settings.gradle.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidApplication/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidApplication/template_new_project.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidLibrary/globals.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidLibrary/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidLibrary/root/AndroidManifest.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidLibrary/root/build.gradle.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidLibrary/root/res/drawable-hdpi/ic_launcher.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidLibrary/root/res/drawable-mdpi/ic_launcher.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidLibrary/root/res/drawable-xhdpi/ic_launcher.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidLibrary/root/res/values-v11/styles_hc.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidLibrary/root/res/values-v14/styles_ics.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidLibrary/root/res/values/strings.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidLibrary/root/res/values/styles.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidLibrary/root/settings.gradle.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidLibrary/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewAndroidLibrary/template_new_project.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewJavaLibrary/globals.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewJavaLibrary/recipe.xml.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewJavaLibrary/root/build.gradle.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewJavaLibrary/root/settings.gradle.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewJavaLibrary/root/src/library_package/Placeholder.java.ftl create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewJavaLibrary/template.xml create mode 100644 love2dToAPK/tools/tools/android-win/tools/templates/projects/NewJavaLibrary/template_new_project.png create mode 100644 love2dToAPK/tools/tools/android-win/tools/traceview.bat create mode 100644 love2dToAPK/tools/tools/android-win/tools/uiautomatorviewer.bat create mode 100644 love2dToAPK/tools/tools/ant/CONTRIBUTORS create mode 100644 love2dToAPK/tools/tools/ant/INSTALL create mode 100644 love2dToAPK/tools/tools/ant/KEYS create mode 100644 love2dToAPK/tools/tools/ant/LICENSE create mode 100644 love2dToAPK/tools/tools/ant/NOTICE create mode 100644 love2dToAPK/tools/tools/ant/README create mode 100644 love2dToAPK/tools/tools/ant/WHATSNEW create mode 100644 love2dToAPK/tools/tools/ant/contributors.xml create mode 100644 love2dToAPK/tools/tools/ant/etc/ant-bootstrap.jar create mode 100644 love2dToAPK/tools/tools/ant/etc/changelog.xsl create mode 100644 love2dToAPK/tools/tools/ant/etc/checkstyle/checkstyle-frames-sortby-check.xsl create mode 100644 love2dToAPK/tools/tools/ant/etc/checkstyle/checkstyle-frames.xsl create mode 100644 love2dToAPK/tools/tools/ant/etc/checkstyle/checkstyle-text.xsl create mode 100644 love2dToAPK/tools/tools/ant/etc/checkstyle/checkstyle-xdoc.xsl create mode 100644 love2dToAPK/tools/tools/ant/etc/coverage-frames.xsl create mode 100644 love2dToAPK/tools/tools/ant/etc/jdepend-frames.xsl create mode 100644 love2dToAPK/tools/tools/ant/etc/jdepend.xsl create mode 100644 love2dToAPK/tools/tools/ant/etc/junit-frames-xalan1.xsl create mode 100644 love2dToAPK/tools/tools/ant/etc/junit-frames.xsl create mode 100644 love2dToAPK/tools/tools/ant/etc/junit-noframes.xsl create mode 100644 love2dToAPK/tools/tools/ant/etc/log.xsl create mode 100644 love2dToAPK/tools/tools/ant/etc/maudit-frames.xsl create mode 100644 love2dToAPK/tools/tools/ant/etc/mmetrics-frames.xsl create mode 100644 love2dToAPK/tools/tools/ant/etc/tagdiff.xsl create mode 100644 love2dToAPK/tools/tools/ant/fetch.xml create mode 100644 love2dToAPK/tools/tools/ant/get-m2.xml create mode 100644 love2dToAPK/tools/tools/ant/lib/README create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-antlr.jar create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-antlr.pom create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-apache-bcel.jar create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-apache-bcel.pom create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-apache-bsf.jar create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-apache-bsf.pom create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-apache-log4j.jar create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-apache-log4j.pom create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-apache-oro.jar create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-apache-oro.pom create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-apache-regexp.jar create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-apache-regexp.pom create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-apache-resolver.jar create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-apache-resolver.pom create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-apache-xalan2.jar create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-apache-xalan2.pom create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-commons-logging.jar create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-commons-logging.pom create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-commons-net.jar create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-commons-net.pom create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-jai.jar create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-jai.pom create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-javamail.jar create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-javamail.pom create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-jdepend.jar create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-jdepend.pom create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-jmf.jar create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-jmf.pom create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-jsch.jar create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-jsch.pom create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-junit.jar create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-junit.pom create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-junit4.jar create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-junit4.pom create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-launcher.jar create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-launcher.pom create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-netrexx.jar create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-netrexx.pom create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-parent.pom create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-swing.jar create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-swing.pom create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-testutil.jar create mode 100644 love2dToAPK/tools/tools/ant/lib/ant-testutil.pom create mode 100644 love2dToAPK/tools/tools/ant/lib/ant.jar create mode 100644 love2dToAPK/tools/tools/ant/lib/ant.pom create mode 100644 love2dToAPK/tools/tools/ant/lib/libraries.properties create mode 100644 love2dToAPK/tools/tools/ant/patch.xml create mode 100644 love2dToAPK/tools/tools/jdk-win/COPYRIGHT create mode 100644 love2dToAPK/tools/tools/jdk-win/LICENSE create mode 100644 love2dToAPK/tools/tools/jdk-win/README.html create mode 100644 love2dToAPK/tools/tools/jdk-win/THIRDPARTYLICENSEREADME-JAVAFX.txt create mode 100644 love2dToAPK/tools/tools/jdk-win/THIRDPARTYLICENSEREADME.txt create mode 100644 love2dToAPK/tools/tools/jdk-win/include/classfile_constants.h create mode 100644 love2dToAPK/tools/tools/jdk-win/include/jawt.h create mode 100644 love2dToAPK/tools/tools/jdk-win/include/jdwpTransport.h create mode 100644 love2dToAPK/tools/tools/jdk-win/include/jni.h create mode 100644 love2dToAPK/tools/tools/jdk-win/include/jvmti.h create mode 100644 love2dToAPK/tools/tools/jdk-win/include/jvmticmlr.h create mode 100644 love2dToAPK/tools/tools/jdk-win/include/win32/bridge/AccessBridgeCallbacks.h create mode 100644 love2dToAPK/tools/tools/jdk-win/include/win32/bridge/AccessBridgeCalls.c create mode 100644 love2dToAPK/tools/tools/jdk-win/include/win32/bridge/AccessBridgeCalls.h create mode 100644 love2dToAPK/tools/tools/jdk-win/include/win32/bridge/AccessBridgePackages.h create mode 100644 love2dToAPK/tools/tools/jdk-win/include/win32/jawt_md.h create mode 100644 love2dToAPK/tools/tools/jdk-win/include/win32/jni_md.h create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/COPYRIGHT create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/LICENSE create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/README.txt create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/THIRDPARTYLICENSEREADME-JAVAFX.txt create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/THIRDPARTYLICENSEREADME.txt create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/Welcome.html create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/accessibility.properties create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/calendars.properties create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/charsets.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/classlist create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/cmm/CIEXYZ.pf create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/cmm/GRAY.pf create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/cmm/LINEAR_RGB.pf create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/cmm/PYCC.pf create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/cmm/sRGB.pf create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/content-types.properties create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/currency.data create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/deploy.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/ext/access-bridge.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/ext/cldrdata.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/ext/dnsns.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/ext/jaccess.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/ext/jfxrt.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/ext/localedata.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/ext/meta-index create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/ext/nashorn.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/ext/sunec.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/ext/sunjce_provider.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/ext/sunmscapi.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/ext/sunpkcs11.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/ext/zipfs.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/flavormap.properties create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/fontconfig.bfc create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/fontconfig.properties.src create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/hijrah-config-umalqura.properties create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/i386/jvm.cfg create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/javafx.properties create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/javaws.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/jce.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/jfr.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/jfr/default.jfc create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/jfr/profile.jfc create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/jfxswt.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/jsse.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/jvm.hprof.txt create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/logging.properties create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/management-agent.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/management/jmxremote.access create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/management/jmxremote.password.template create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/management/management.properties create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/management/snmp.acl.template create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/meta-index create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/net.properties create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/plugin.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/psfont.properties.ja create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/psfontj2d.properties create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/resources.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/rt.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/security/US_export_policy.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/security/blacklist create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/security/blacklisted.certs create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/security/cacerts create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/security/java.policy create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/security/java.security create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/security/javaws.policy create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/security/local_policy.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/security/trusted.libraries create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/sound.properties create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/tzdb.dat create mode 100644 love2dToAPK/tools/tools/jdk-win/jre/lib/tzmappings create mode 100644 love2dToAPK/tools/tools/jdk-win/lib/ant-javafx.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/lib/ct.sym create mode 100644 love2dToAPK/tools/tools/jdk-win/lib/dt.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/lib/ir.idl create mode 100644 love2dToAPK/tools/tools/jdk-win/lib/javafx-mx.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/lib/jawt.lib create mode 100644 love2dToAPK/tools/tools/jdk-win/lib/jconsole.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/lib/jvm.lib create mode 100644 love2dToAPK/tools/tools/jdk-win/lib/orb.idl create mode 100644 love2dToAPK/tools/tools/jdk-win/lib/packager.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/lib/sa-jdi.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/lib/tools.jar create mode 100644 love2dToAPK/tools/tools/jdk-win/release create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/.classpath create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/.project create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/AndroidManifest.xml create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/README.md create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/ant.properties create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/assets/game.love create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/build.properties create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/build.xml create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/default.properties create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/gen/R.java.d create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/gen/love/to/android/BuildConfig.java create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/gen/love/to/android/R.java create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/gen/love/to/android1219203756/BuildConfig.java create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/gen/love/to/android1219203756/R.java create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/gen/love/to/android1220074642/BuildConfig.java create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/gen/love/to/android1220074642/R.java create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/libs/armeabi-v7a/libgnustl_shared.so create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/libs/armeabi-v7a/liblove.so create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/libs/armeabi-v7a/libmpg123.so create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/libs/armeabi-v7a/libopenal.so create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/libs/armeabi/libgnustl_shared.so create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/libs/armeabi/liblove.so create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/libs/armeabi/libmpg123.so create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/libs/armeabi/libopenal.so create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/original/AndroidManifest.xml create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/original/love/to/android/LtaActivity.java create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/project.properties create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/res/drawable-xxhdpi/ic_launcher.png create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/src/love/to/android/LtaActivity.java create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/src/org/libsdl/app/SDLActivity.java create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/src/org/love2d/android/DownloadActivity.java create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/src/org/love2d/android/DownloadService.java create mode 100644 love2dToAPK/tools/tools/love-android-sdl2/src/org/love2d/android/GameActivity.java create mode 100644 love2dToAPK/tools/tools/love-old-win/DevIL.dll create mode 100644 love2dToAPK/tools/tools/love-old-win/OpenAL32.dll create mode 100644 love2dToAPK/tools/tools/love-old-win/SDL2.dll create mode 100644 love2dToAPK/tools/tools/love-old-win/changes.txt create mode 100644 love2dToAPK/tools/tools/love-old-win/game.ico create mode 100644 love2dToAPK/tools/tools/love-old-win/license.txt create mode 100644 love2dToAPK/tools/tools/love-old-win/love.dll create mode 100644 love2dToAPK/tools/tools/love-old-win/love.exe create mode 100644 love2dToAPK/tools/tools/love-old-win/love.ico create mode 100644 love2dToAPK/tools/tools/love-old-win/lua51.dll create mode 100644 love2dToAPK/tools/tools/love-old-win/mpg123.dll create mode 100644 love2dToAPK/tools/tools/love-old-win/msvcp120.dll create mode 100644 love2dToAPK/tools/tools/love-old-win/msvcr120.dll create mode 100644 love2dToAPK/tools/tools/love-old-win/readme.txt create mode 100644 love2dToAPK/tools/tools/love-win/OpenAL32.dll create mode 100644 love2dToAPK/tools/tools/love-win/SDL2.dll create mode 100644 love2dToAPK/tools/tools/love-win/changes.txt create mode 100644 love2dToAPK/tools/tools/love-win/game.ico create mode 100644 love2dToAPK/tools/tools/love-win/license.txt create mode 100644 love2dToAPK/tools/tools/love-win/love.dll create mode 100644 love2dToAPK/tools/tools/love-win/love.exe create mode 100644 love2dToAPK/tools/tools/love-win/love.ico create mode 100644 love2dToAPK/tools/tools/love-win/lua51.dll create mode 100644 love2dToAPK/tools/tools/love-win/mpg123.dll create mode 100644 love2dToAPK/tools/tools/love-win/msvcp120.dll create mode 100644 love2dToAPK/tools/tools/love-win/msvcr120.dll create mode 100644 love2dToAPK/tools/tools/love-win/readme.txt create mode 100644 love2dToAPK/tools/tools/sed-win/contrib/sed/4.2.1/sed-4.2.1/sed-4.2.1-src/ABOUT-NLS create mode 100644 love2dToAPK/tools/tools/sed-win/contrib/sed/4.2.1/sed-4.2.1/sed-4.2.1-src/AUTHORS create mode 100644 love2dToAPK/tools/tools/sed-win/contrib/sed/4.2.1/sed-4.2.1/sed-4.2.1-src/BUGS create mode 100644 love2dToAPK/tools/tools/sed-win/contrib/sed/4.2.1/sed-4.2.1/sed-4.2.1-src/COPYING create mode 100644 love2dToAPK/tools/tools/sed-win/contrib/sed/4.2.1/sed-4.2.1/sed-4.2.1-src/ChangeLog create mode 100644 love2dToAPK/tools/tools/sed-win/contrib/sed/4.2.1/sed-4.2.1/sed-4.2.1-src/INSTALL create mode 100644 love2dToAPK/tools/tools/sed-win/contrib/sed/4.2.1/sed-4.2.1/sed-4.2.1-src/NEWS create mode 100644 love2dToAPK/tools/tools/sed-win/contrib/sed/4.2.1/sed-4.2.1/sed-4.2.1-src/README create mode 100644 love2dToAPK/tools/tools/sed-win/contrib/sed/4.2.1/sed-4.2.1/sed-4.2.1-src/README-alpha create mode 100644 love2dToAPK/tools/tools/sed-win/contrib/sed/4.2.1/sed-4.2.1/sed-4.2.1-src/README.boot create mode 100644 love2dToAPK/tools/tools/sed-win/contrib/sed/4.2.1/sed-4.2.1/sed-4.2.1-src/THANKS create mode 100644 love2dToAPK/tools/tools/sed-win/contrib/sed/4.2.1/sed-4.2.1/sed-4.2.1-src/po/ChangeLog create mode 100644 love2dToAPK/tools/tools/sed-win/contrib/sed/4.2.1/sed-4.2.1/sed-4.2.1-src/testsuite/bug-regex10.c create mode 100644 love2dToAPK/tools/tools/sed-win/contrib/sed/4.2.1/sed-4.2.1/sed-4.2.1-src/testsuite/bug-regex11.c create mode 100644 love2dToAPK/tools/tools/sed-win/contrib/sed/4.2.1/sed-4.2.1/sed-4.2.1-src/testsuite/bug-regex12.c create mode 100644 love2dToAPK/tools/tools/sed-win/contrib/sed/4.2.1/sed-4.2.1/sed-4.2.1-src/testsuite/bug-regex13.c create mode 100644 love2dToAPK/tools/tools/sed-win/contrib/sed/4.2.1/sed-4.2.1/sed-4.2.1-src/testsuite/bug-regex14.c create mode 100644 love2dToAPK/tools/tools/sed-win/contrib/sed/4.2.1/sed-4.2.1/sed-4.2.1-src/testsuite/bug-regex15.c create mode 100644 love2dToAPK/tools/tools/sed-win/contrib/sed/4.2.1/sed-4.2.1/sed-4.2.1-src/testsuite/bug-regex16.c create mode 100644 love2dToAPK/tools/tools/sed-win/contrib/sed/4.2.1/sed-4.2.1/sed-4.2.1-src/testsuite/bug-regex21.c create mode 100644 love2dToAPK/tools/tools/sed-win/contrib/sed/4.2.1/sed-4.2.1/sed-4.2.1-src/testsuite/bug-regex27.c create mode 100644 love2dToAPK/tools/tools/sed-win/contrib/sed/4.2.1/sed-4.2.1/sed-4.2.1-src/testsuite/bug-regex28.c create mode 100644 love2dToAPK/tools/tools/sed-win/contrib/sed/4.2.1/sed-4.2.1/sed-4.2.1-src/testsuite/bug-regex7.c create mode 100644 love2dToAPK/tools/tools/sed-win/contrib/sed/4.2.1/sed-4.2.1/sed-4.2.1-src/testsuite/bug-regex8.c create mode 100644 love2dToAPK/tools/tools/sed-win/contrib/sed/4.2.1/sed-4.2.1/sed-4.2.1-src/testsuite/bug-regex9.c create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/CHANGELOG.md create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/LICENSE create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/README.md create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/api/cg/stdlib.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/api/glsl/std.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/api/lua/baselib.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/api/lua/love2d.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/api/lua/luajit2.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/api/lua/wxwidgets.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/api/opencl/std.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/cfg/estrela.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/cfg/i18n/cn.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/cfg/i18n/de.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/cfg/i18n/en.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/cfg/i18n/eo.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/cfg/i18n/es.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/cfg/i18n/fr.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/cfg/i18n/it.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/cfg/i18n/pt-br.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/cfg/i18n/ru.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/cfg/scheme-picker.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/cfg/tomorrow.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/cfg/user-sample.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/cfg/user.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/cfg/xcode-keys.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/interpreters/love2d.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/interpreters/luabase.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/interpreters/luadeb.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/interpreters/luadeb52.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/interpreters/luadeb53.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/copas/copas.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/coxpcall/coxpcall.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/dist/config.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/dist/constraints.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/dist/depends.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/dist/git.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/dist/init.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/dist/logger.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/dist/manifest.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/dist/package.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/dist/sys.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/dist/utils.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/git.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/git/objects.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/git/pack.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/git/protocol.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/git/repo.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/git/util.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/ltn12.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/lua_lexer_loose.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/lua_parser_loose.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/luadist.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/luainspect/ast.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/luainspect/compat_env.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/luainspect/dump.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/luainspect/globals.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/luainspect/init.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/luainspect/signatures.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/luainspect/typecheck.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/luainspect/types.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/metalua/compiler.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/metalua/compiler/parser.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/metalua/compiler/parser/annot/generator.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/metalua/compiler/parser/annot/grammar.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/metalua/compiler/parser/common.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/metalua/compiler/parser/expr.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/metalua/compiler/parser/ext.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/metalua/compiler/parser/lexer.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/metalua/compiler/parser/meta.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/metalua/compiler/parser/misc.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/metalua/compiler/parser/stat.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/metalua/compiler/parser/table.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/metalua/grammar/generator.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/metalua/grammar/lexer.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/metalua/pprint.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/mime.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/mobdebug/mobdebug.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/sha2.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/socket.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/socket/ftp.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/socket/headers.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/socket/http.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/socket/smtp.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/socket/tp.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/socket/url.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/ssl.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/ssl/https.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/lualibs/testwell.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/spec/lua.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/spec/text.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/defs.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/autocomplete.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/commandbar.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/commands.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/debugger.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/editor.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/filetree.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/findreplace.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/gui.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/ids.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/inspect.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/iofilters.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/keymap.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/markers.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/markup.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/menu_edit.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/menu_file.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/menu_help.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/menu_project.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/menu_search.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/menu_tools.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/menu_view.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/outline.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/output.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/package.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/print.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/proto.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/settings.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/shellbox.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/singleinstance.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/style.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/editor/toolbar.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/main.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/util.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/src/version.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/tools/cg.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/tools/clcc.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/tools/cstringify.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/tools/dx.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/tools/ffitoapi.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/tools/glslc.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/tools/perforce_edit.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/tools/perforce_revert.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio.exe create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/app.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/config.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/BOOKMARK-TOGGLE.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/DEBUG-BREAK.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/DEBUG-BREAKPOINT-TOGGLE.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/DEBUG-CALLSTACK.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/DEBUG-DETACH.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/DEBUG-RUN-TO.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/DEBUG-START.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/DEBUG-STEP-INTO.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/DEBUG-STEP-OUT.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/DEBUG-STEP-OVER.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/DEBUG-STOP.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/DEBUG-WATCH.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/DIR-SETUP-FILE.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/DIR-SETUP.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/FILE-KNOWN.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/FILE-NEW.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/FILE-NORMAL-START.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/FILE-NORMAL.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/FILE-OPEN.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/FILE-SAVE-ALL.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/FILE-SAVE.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/FIND-AND-REPLACE.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/FIND-IN-FILES.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/FIND-OPT-CASE-SENSITIVE.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/FIND-OPT-CONTEXT.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/FIND-OPT-DOWN.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/FIND-OPT-MULTI-RESULTS.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/FIND-OPT-REGEX.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/FIND-OPT-SELECTION.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/FIND-OPT-SETDIR.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/FIND-OPT-SUBDIR.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/FIND-OPT-WORD.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/FIND-OPT-WRAP-AROUND.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/FIND-REPLACE-NEXT.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/FIND.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/FOLDER-MAPPED.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/FOLDER.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/LICENSE create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/RUN-NOW.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/RUN.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/VALUE-ACALL.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/VALUE-CALL.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/VALUE-GCALL.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/VALUE-LCALL.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/VALUE-LOCAL.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/VALUE-SCALL.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/16/VALUE-UP.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/24/BOOKMARK-TOGGLE.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/24/DEBUG-BREAK.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/24/DEBUG-BREAKPOINT-TOGGLE.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/24/DEBUG-CALLSTACK.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/24/DEBUG-DETACH.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/24/DEBUG-RUN-TO.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/24/DEBUG-START.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/24/DEBUG-STEP-INTO.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/24/DEBUG-STEP-OUT.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/24/DEBUG-STEP-OVER.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/24/DEBUG-STOP.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/24/DEBUG-WATCH.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/24/DIR-SETUP-FILE.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/24/DIR-SETUP.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/24/FILE-NEW.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/24/FILE-OPEN.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/24/FILE-SAVE-ALL.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/24/FILE-SAVE.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/24/FIND-AND-REPLACE.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/24/FIND-IN-FILES.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/24/FIND.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/24/LICENSE create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/24/RUN-NOW.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/24/RUN.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/estrela.png create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/zbstudio.ico create mode 100644 love2dToAPK/tools/tools/zbstudio-old-win/zbstudio/res/zerobrane.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/CHANGELOG.md create mode 100644 love2dToAPK/tools/tools/zbstudio-win/LICENSE create mode 100644 love2dToAPK/tools/tools/zbstudio-win/README.md create mode 100644 love2dToAPK/tools/tools/zbstudio-win/api/cg/stdlib.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/api/glsl/std.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/api/lua/baselib.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/api/lua/love2d.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/api/lua/luajit2.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/api/lua/wxwidgets.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/api/opencl/std.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/cfg/estrela.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/cfg/i18n/cn.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/cfg/i18n/de.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/cfg/i18n/en.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/cfg/i18n/eo.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/cfg/i18n/es.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/cfg/i18n/fr.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/cfg/i18n/it.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/cfg/i18n/pt-br.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/cfg/i18n/ru.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/cfg/scheme-picker.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/cfg/tomorrow.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/cfg/user-sample.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/cfg/user.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/cfg/xcode-keys.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/interpreters/love2d.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/interpreters/luabase.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/interpreters/luadeb.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/interpreters/luadeb52.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/interpreters/luadeb53.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/copas/copas.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/coxpcall/coxpcall.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/dist/config.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/dist/constraints.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/dist/depends.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/dist/git.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/dist/init.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/dist/logger.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/dist/manifest.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/dist/package.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/dist/sys.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/dist/utils.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/git.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/git/objects.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/git/pack.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/git/protocol.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/git/repo.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/git/util.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/ltn12.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/lua_lexer_loose.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/lua_parser_loose.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/luadist.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/luainspect/ast.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/luainspect/compat_env.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/luainspect/dump.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/luainspect/globals.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/luainspect/init.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/luainspect/signatures.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/luainspect/typecheck.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/luainspect/types.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/metalua/compiler.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/metalua/compiler/parser.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/metalua/compiler/parser/annot/generator.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/metalua/compiler/parser/annot/grammar.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/metalua/compiler/parser/common.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/metalua/compiler/parser/expr.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/metalua/compiler/parser/ext.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/metalua/compiler/parser/lexer.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/metalua/compiler/parser/meta.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/metalua/compiler/parser/misc.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/metalua/compiler/parser/stat.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/metalua/compiler/parser/table.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/metalua/grammar/generator.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/metalua/grammar/lexer.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/metalua/pprint.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/mime.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/mobdebug/mobdebug.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/sha2.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/socket.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/socket/ftp.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/socket/headers.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/socket/http.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/socket/smtp.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/socket/tp.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/socket/url.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/ssl.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/ssl/https.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/lualibs/testwell.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/spec/lua.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/spec/text.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/defs.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/autocomplete.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/commandbar.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/commands.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/debugger.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/editor.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/filetree.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/findreplace.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/gui.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/ids.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/inspect.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/iofilters.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/keymap.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/markers.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/markup.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/menu_edit.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/menu_file.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/menu_help.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/menu_project.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/menu_search.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/menu_tools.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/menu_view.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/outline.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/output.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/package.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/print.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/proto.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/settings.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/shellbox.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/singleinstance.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/style.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/editor/toolbar.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/main.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/util.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/src/version.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/tools/cg.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/tools/clcc.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/tools/cstringify.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/tools/dx.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/tools/ffitoapi.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/tools/glslc.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/tools/perforce_edit.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/tools/perforce_revert.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio.exe create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/app.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/config.lua create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/BOOKMARK-TOGGLE.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/DEBUG-BREAK.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/DEBUG-BREAKPOINT-TOGGLE.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/DEBUG-CALLSTACK.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/DEBUG-DETACH.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/DEBUG-RUN-TO.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/DEBUG-START.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/DEBUG-STEP-INTO.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/DEBUG-STEP-OUT.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/DEBUG-STEP-OVER.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/DEBUG-STOP.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/DEBUG-WATCH.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/DIR-SETUP-FILE.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/DIR-SETUP.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/FILE-KNOWN.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/FILE-NEW.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/FILE-NORMAL-START.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/FILE-NORMAL.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/FILE-OPEN.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/FILE-SAVE-ALL.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/FILE-SAVE.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/FIND-AND-REPLACE.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/FIND-IN-FILES.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/FIND-OPT-CASE-SENSITIVE.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/FIND-OPT-CONTEXT.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/FIND-OPT-DOWN.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/FIND-OPT-MULTI-RESULTS.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/FIND-OPT-REGEX.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/FIND-OPT-SELECTION.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/FIND-OPT-SETDIR.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/FIND-OPT-SUBDIR.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/FIND-OPT-WORD.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/FIND-OPT-WRAP-AROUND.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/FIND-REPLACE-NEXT.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/FIND.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/FOLDER-MAPPED.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/FOLDER.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/LICENSE create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/RUN-NOW.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/RUN.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/VALUE-ACALL.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/VALUE-CALL.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/VALUE-GCALL.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/VALUE-LCALL.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/VALUE-LOCAL.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/VALUE-SCALL.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/16/VALUE-UP.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/24/BOOKMARK-TOGGLE.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/24/DEBUG-BREAK.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/24/DEBUG-BREAKPOINT-TOGGLE.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/24/DEBUG-CALLSTACK.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/24/DEBUG-DETACH.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/24/DEBUG-RUN-TO.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/24/DEBUG-START.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/24/DEBUG-STEP-INTO.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/24/DEBUG-STEP-OUT.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/24/DEBUG-STEP-OVER.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/24/DEBUG-STOP.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/24/DEBUG-WATCH.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/24/DIR-SETUP-FILE.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/24/DIR-SETUP.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/24/FILE-NEW.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/24/FILE-OPEN.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/24/FILE-SAVE-ALL.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/24/FILE-SAVE.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/24/FIND-AND-REPLACE.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/24/FIND-IN-FILES.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/24/FIND.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/24/LICENSE create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/24/RUN-NOW.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/24/RUN.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/estrela.png create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/zbstudio.ico create mode 100644 love2dToAPK/tools/tools/zbstudio-win/zbstudio/res/zerobrane.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e8361f6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,348 @@ + +# Created by https://www.gitignore.io/api/macos,windows,visualstudio + +### macOS ### +*.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +ehthumbs.db +ehthumbs_vista.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msm +*.msp + +# Windows shortcuts +*.lnk + +### VisualStudio ### +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ +**/Properties/launchSettings.json + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Uncomment the next line to ignore your web deploy settings. +# By default, sensitive information, such as encrypted password +# should be stored in the .pubxml.user file. +#*.pubxml +*.pubxml.user +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Typescript v1 declaration files +typings/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +### VisualStudio Patch ### +# By default, sensitive information, such as encrypted password +# should be stored in the .pubxml.user file. + +# End of https://www.gitignore.io/api/macos,windows,visualstudio \ No newline at end of file diff --git a/love2dToAPK.sln b/love2dToAPK.sln new file mode 100644 index 0000000..8e85533 --- /dev/null +++ b/love2dToAPK.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.27004.2006 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "love2dToAPK", "love2dToAPK\love2dToAPK.csproj", "{12E47644-106B-499A-98A3-CD9ABCB57112}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {12E47644-106B-499A-98A3-CD9ABCB57112}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {12E47644-106B-499A-98A3-CD9ABCB57112}.Debug|Any CPU.Build.0 = Debug|Any CPU + {12E47644-106B-499A-98A3-CD9ABCB57112}.Release|Any CPU.ActiveCfg = Release|Any CPU + {12E47644-106B-499A-98A3-CD9ABCB57112}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {465AADBE-10A3-4E77-9D97-FB20B0337DBF} + EndGlobalSection +EndGlobal diff --git a/love2dToAPK/App.config b/love2dToAPK/App.config new file mode 100644 index 0000000..48c1baf --- /dev/null +++ b/love2dToAPK/App.config @@ -0,0 +1,27 @@ + + + + +
+ + + + + + + + + + + + False + + + False + + + False + + + + \ No newline at end of file diff --git a/love2dToAPK/Controls/minimalButton.Designer.cs b/love2dToAPK/Controls/minimalButton.Designer.cs new file mode 100644 index 0000000..379bb06 --- /dev/null +++ b/love2dToAPK/Controls/minimalButton.Designer.cs @@ -0,0 +1,31 @@ +namespace love2dToAPK.Controls { + partial class minimalButton { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) { + if (disposing && (components != null)) { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/love2dToAPK/Controls/minimalButton.cs b/love2dToAPK/Controls/minimalButton.cs new file mode 100644 index 0000000..91b6b76 --- /dev/null +++ b/love2dToAPK/Controls/minimalButton.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace love2dToAPK.Controls { + public partial class minimalButton : System.Windows.Forms.Label { + + public Color BackgroundColor { + get { return colorStates[0]; } + set { generateColors(value); } + } + public Color ForegroundColor { + get { return this.ForeColor; } + set { this.ForeColor = value; } + } + + private Color[] colorStates; + + public minimalButton() { + InitializeComponent(); + + // Bind eventHandlers + this.MouseEnter += onMouseEnter; + this.MouseLeave += onMouseLeave; + this.MouseDown += onMouseDown; + this.MouseUp += onMouseUp; + + // Generate colors + ForegroundColor = this.ForeColor; + BackgroundColor = this.BackColor; + } + + protected override void OnPaint(PaintEventArgs pe) { + base.OnPaint(pe); + } + + private void onMouseEnter(object sender, System.EventArgs e) { + this.BackColor = colorStates[1]; + } + + private void onMouseLeave(object sender, System.EventArgs e) { + this.BackColor = colorStates[0]; + } + + private void onMouseDown(object sender, System.EventArgs e) { + this.BackColor = colorStates[2]; + } + + private void onMouseUp(object sender, System.EventArgs e) { + this.BackColor = colorStates[1]; + } + + private void generateColors(Color buttonColor) { + colorStates = new Color[3]; + colorStates[0] = buttonColor; + colorStates[1] = Color.FromArgb(buttonColor.R + 10, buttonColor.G + 10, buttonColor.B + 10); + colorStates[2] = Color.FromArgb(buttonColor.R - 10, buttonColor.G - 10, buttonColor.B - 10); + //colorStates[1] = buttonColor; + //colorStates[2] = buttonColor; + this.BackColor = buttonColor; + } + + } +} diff --git a/love2dToAPK/Forms/baseForm.Designer.cs b/love2dToAPK/Forms/baseForm.Designer.cs new file mode 100644 index 0000000..9558a45 --- /dev/null +++ b/love2dToAPK/Forms/baseForm.Designer.cs @@ -0,0 +1,123 @@ +namespace love2dToAPK.Forms { + partial class baseForm { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) { + if (disposing && (components != null)) { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() { + this.pnlTitleBar = new System.Windows.Forms.Panel(); + this.lblTitle = new System.Windows.Forms.Label(); + this.pnlFormActions = new System.Windows.Forms.Panel(); + this.btnMinimize = new love2dToAPK.Controls.minimalButton(); + this.btnClose = new love2dToAPK.Controls.minimalButton(); + this.pnlTitleBar.SuspendLayout(); + this.pnlFormActions.SuspendLayout(); + this.SuspendLayout(); + // + // pnlTitleBar + // + this.pnlTitleBar.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(49)))), ((int)(((byte)(110))))); + this.pnlTitleBar.Controls.Add(this.pnlFormActions); + this.pnlTitleBar.Controls.Add(this.lblTitle); + this.pnlTitleBar.Dock = System.Windows.Forms.DockStyle.Top; + this.pnlTitleBar.Location = new System.Drawing.Point(0, 0); + this.pnlTitleBar.Name = "pnlTitleBar"; + this.pnlTitleBar.Size = new System.Drawing.Size(284, 37); + this.pnlTitleBar.TabIndex = 0; + // + // lblTitle + // + this.lblTitle.AutoSize = true; + this.lblTitle.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblTitle.ForeColor = System.Drawing.Color.White; + this.lblTitle.Location = new System.Drawing.Point(12, 9); + this.lblTitle.Name = "lblTitle"; + this.lblTitle.Size = new System.Drawing.Size(68, 21); + this.lblTitle.TabIndex = 1; + this.lblTitle.Text = ""; + // + // pnlFormActions + // + this.pnlFormActions.Controls.Add(this.btnMinimize); + this.pnlFormActions.Controls.Add(this.btnClose); + this.pnlFormActions.Dock = System.Windows.Forms.DockStyle.Right; + this.pnlFormActions.Location = new System.Drawing.Point(211, 0); + this.pnlFormActions.Name = "pnlFormActions"; + this.pnlFormActions.Size = new System.Drawing.Size(73, 37); + this.pnlFormActions.TabIndex = 1; + // + // btnMinimize + // + this.btnMinimize.AutoSize = true; + this.btnMinimize.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(49)))), ((int)(((byte)(110))))); + this.btnMinimize.BackgroundColor = System.Drawing.SystemColors.Control; + this.btnMinimize.Font = new System.Drawing.Font("Segoe UI", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnMinimize.ForeColor = System.Drawing.Color.White; + this.btnMinimize.ForegroundColor = System.Drawing.Color.White; + this.btnMinimize.Location = new System.Drawing.Point(12, 1); + this.btnMinimize.Name = "btnMinimize"; + this.btnMinimize.Padding = new System.Windows.Forms.Padding(1, 5, 2, 5); + this.btnMinimize.Size = new System.Drawing.Size(23, 35); + this.btnMinimize.TabIndex = 1; + this.btnMinimize.Text = "_"; + // + // btnClose + // + this.btnClose.AutoSize = true; + this.btnClose.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(49)))), ((int)(((byte)(110))))); + this.btnClose.BackgroundColor = System.Drawing.SystemColors.Control; + this.btnClose.Font = new System.Drawing.Font("Segoe UI", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnClose.ForeColor = System.Drawing.Color.White; + this.btnClose.ForegroundColor = System.Drawing.Color.White; + this.btnClose.Location = new System.Drawing.Point(42, 1); + this.btnClose.Name = "btnClose"; + this.btnClose.Padding = new System.Windows.Forms.Padding(0, 5, 0, 5); + this.btnClose.Size = new System.Drawing.Size(23, 35); + this.btnClose.TabIndex = 3; + this.btnClose.Text = "X"; + // + // baseForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(284, 116); + this.Controls.Add(this.pnlTitleBar); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "baseForm"; + this.Text = "baseForm"; + this.Load += new System.EventHandler(this.baseForm_Load); + this.pnlTitleBar.ResumeLayout(false); + this.pnlTitleBar.PerformLayout(); + this.pnlFormActions.ResumeLayout(false); + this.pnlFormActions.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel pnlTitleBar; + private System.Windows.Forms.Panel pnlFormActions; + private System.Windows.Forms.Label lblTitle; + private Controls.minimalButton btnMinimize; + private Controls.minimalButton btnClose; + } +} \ No newline at end of file diff --git a/love2dToAPK/Forms/baseForm.cs b/love2dToAPK/Forms/baseForm.cs new file mode 100644 index 0000000..31b92a2 --- /dev/null +++ b/love2dToAPK/Forms/baseForm.cs @@ -0,0 +1,159 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace love2dToAPK.Forms { + + public partial class baseForm : Form { + + #region localVariables + Panel overlayPanel; + #endregion + + #region properties + public string WindowTitle { + get { return lblTitle.Text; } + set { lblTitle.Text = value; } + } + + public bool MinimizeAble { + get { return btnMinimize.Enabled; } + set { + if (value) { + btnMinimize.Enabled = true; + btnMinimize.Show(); + } + else { + btnMinimize.Enabled = false; + btnMinimize.Hide(); + } + } + } + #endregion + + #region formShadow + protected override CreateParams CreateParams { + get { + const int CS_DROPSHADOW = 0x20000; + CreateParams cp = base.CreateParams; + cp.ClassStyle |= CS_DROPSHADOW; + return cp; + } + } + #endregion + + #region formMove + /* This region contains the code needed to make the form moveable */ + public const int WM_NCLBUTTONDOWN = 0xA1; + public const int HT_CAPTION = 0x2; + + [System.Runtime.InteropServices.DllImportAttribute("user32.dll")] + public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); + [System.Runtime.InteropServices.DllImportAttribute("user32.dll")] + public static extern bool ReleaseCapture(); + + private void baseForm_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { + if (e.Button == MouseButtons.Left) { + ReleaseCapture(); + SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0); + } + } + #endregion + + public baseForm() { + InitializeComponent(); + + /* Add event handlers */ + // These ones are for moving the form + this.MouseDown += baseForm_MouseDown; + pnlTitleBar.MouseDown += baseForm_MouseDown; + pnlFormActions.MouseDown += baseForm_MouseDown; + lblTitle.MouseDown += baseForm_MouseDown; + // These are for the button hover effect on the action buttons + btnClose.MouseEnter += btn_mouseEnter; + btnClose.MouseLeave += btn_mouseLeave; + btnMinimize.MouseEnter += btn_mouseEnter; + btnMinimize.MouseLeave += btn_mouseLeave; + // These are for the actionButtons + btnClose.Click += btnClose_Click; + btnMinimize.Click += btnMinimize_Click; + // This make the form gray when onactive + this.EnabledChanged += baseForm_onEnabledChanged; + } + + #region EventHandlers + private void btnClose_Click(object sender, EventArgs e) { + /* Handles the exit-button click */ + this.Close(); + } + + private void btnMinimize_Click(object sender, EventArgs e) { + /* Handles the minimize-button click */ + this.WindowState = FormWindowState.Minimized; + } + + private void baseForm_onEnabledChanged(object sender, EventArgs e) { + /* Handles the enable/disable event */ + if (Enabled) { + this.Controls.Remove(overlayPanel); + overlayPanel.Dispose(); + overlayPanel = null; + } + else { + overlayPanel = new Panel(); + overlayPanel.Location = new Point(0, 0); + overlayPanel.Size = new Size(this.Width, this.Height); + overlayPanel.BackColor = Color.FromArgb(0, 255, 255, 255); + this.Controls.Add(overlayPanel); + //overlayPanel.BringToFront(); + this.Invalidate(); + } + } + #endregion + + #region ButtonHoverEffect + public void btn_mouseEnter(object sender, System.EventArgs e) { + /* This method handles mouseOver event on buttons */ + if (sender is Label) { + Label thisLabel = (Label)sender; + //thisLabel.BackColor = Program.UiTheme(thisLabel.Name + "_backgroundHover"); + } + else if (sender is PictureBox) { + PictureBox thisPicture = (PictureBox)sender; + //thisPicture.BackColor = Program.UiTheme(thisPicture.Name + "_backgroundHover"); + } + } + + public void btn_mouseLeave(object sender, System.EventArgs e) { + /* This method handles mouseOver event on buttons */ + if (sender is Label) { + Label thisLabel = (Label)sender; + //thisLabel.BackColor = Program.UiTheme(thisLabel.Name + "_background"); + } + else if (sender is PictureBox) { + PictureBox thisPicture = (PictureBox)sender; + //thisPicture.BackColor = Program.UiTheme(thisPicture.Name + "_background"); + } + } + #endregion + + private void baseForm_Load(object sender, EventArgs e) { + btnClose.BackgroundColor = ColorTranslator.FromHtml("#ea316e"); + btnMinimize.BackgroundColor = ColorTranslator.FromHtml("#ea316e"); + } + + public virtual void setColor(Color color) { + pnlTitleBar.BackColor = color; + pnlFormActions.BackColor = color; + btnClose.BackgroundColor = color; + btnMinimize.BackgroundColor = color; + } + } + +} diff --git a/love2dToAPK/Forms/baseForm.resx b/love2dToAPK/Forms/baseForm.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/love2dToAPK/Forms/baseForm.resx @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/love2dToAPK/Forms/frmFirstStartup.Designer.cs b/love2dToAPK/Forms/frmFirstStartup.Designer.cs new file mode 100644 index 0000000..037bfdb --- /dev/null +++ b/love2dToAPK/Forms/frmFirstStartup.Designer.cs @@ -0,0 +1,216 @@ +namespace love2dToAPK.Forms { + partial class frmFirstStartup { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) { + if (disposing && (components != null)) { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmFirstStartup)); + this.panel1 = new System.Windows.Forms.Panel(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.linkLabel1 = new System.Windows.Forms.LinkLabel(); + this.label7 = new System.Windows.Forms.Label(); + this.linkLabel2 = new System.Windows.Forms.LinkLabel(); + this.label8 = new System.Windows.Forms.Label(); + this.btnContinue = new love2dToAPK.Controls.minimalButton(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.BackColor = System.Drawing.Color.White; + this.panel1.Controls.Add(this.label8); + this.panel1.Controls.Add(this.linkLabel2); + this.panel1.Controls.Add(this.label7); + this.panel1.Controls.Add(this.linkLabel1); + this.panel1.Controls.Add(this.label6); + this.panel1.Controls.Add(this.label4); + this.panel1.Controls.Add(this.label5); + this.panel1.Controls.Add(this.label3); + this.panel1.Controls.Add(this.label2); + this.panel1.Controls.Add(this.label1); + this.panel1.Location = new System.Drawing.Point(12, 52); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(368, 407); + this.panel1.TabIndex = 1; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Segoe UI", 20.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(49)))), ((int)(((byte)(110))))); + this.label1.Location = new System.Drawing.Point(12, 10); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(179, 37); + this.label1.TabIndex = 0; + this.label1.Text = "Love2dToAPK"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label2.Location = new System.Drawing.Point(16, 53); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(314, 30); + this.label2.TabIndex = 1; + this.label2.Text = "It seems like this is the first time you have opened the app.\r\nSo here is a brief" + + " introduction!"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("Segoe UI", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(49)))), ((int)(((byte)(110))))); + this.label3.Location = new System.Drawing.Point(14, 90); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(81, 25); + this.label3.TabIndex = 2; + this.label3.Text = "Purpose"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label5.Location = new System.Drawing.Point(16, 121); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(339, 60); + this.label5.TabIndex = 4; + this.label5.Text = resources.GetString("label5.Text"); + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("Segoe UI", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(49)))), ((int)(((byte)(110))))); + this.label4.Location = new System.Drawing.Point(14, 190); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(64, 25); + this.label4.TabIndex = 5; + this.label4.Text = "Usage"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label6.Location = new System.Drawing.Point(16, 221); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(336, 75); + this.label6.TabIndex = 6; + this.label6.Text = resources.GetString("label6.Text"); + // + // linkLabel1 + // + this.linkLabel1.AutoSize = true; + this.linkLabel1.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.linkLabel1.Location = new System.Drawing.Point(16, 296); + this.linkLabel1.Name = "linkLabel1"; + this.linkLabel1.Size = new System.Drawing.Size(160, 13); + this.linkLabel1.TabIndex = 7; + this.linkLabel1.TabStop = true; + this.linkLabel1.Text = "https://aintnoguidehereguys/"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Font = new System.Drawing.Font("Segoe UI", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(49)))), ((int)(((byte)(110))))); + this.label7.Location = new System.Drawing.Point(14, 318); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(71, 25); + this.label7.TabIndex = 8; + this.label7.Text = "Credits"; + // + // linkLabel2 + // + this.linkLabel2.AutoSize = true; + this.linkLabel2.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.linkLabel2.Location = new System.Drawing.Point(16, 381); + this.linkLabel2.Name = "linkLabel2"; + this.linkLabel2.Size = new System.Drawing.Size(197, 13); + this.linkLabel2.TabIndex = 10; + this.linkLabel2.TabStop = true; + this.linkLabel2.Text = "http://qubodup.itch.io/startgamedev"; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label8.Location = new System.Drawing.Point(16, 349); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(297, 26); + this.label8.TabIndex = 11; + this.label8.Text = "This app was created by Jakob Stendahl with the help of\r\nthese guys and resources" + + "."; + // + // btnContinue + // + this.btnContinue.AutoSize = true; + this.btnContinue.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(12)))), ((int)(((byte)(209)))), ((int)(((byte)(12))))); + this.btnContinue.BackgroundColor = System.Drawing.SystemColors.Control; + this.btnContinue.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnContinue.ForeColor = System.Drawing.Color.White; + this.btnContinue.ForegroundColor = System.Drawing.Color.White; + this.btnContinue.Location = new System.Drawing.Point(230, 469); + this.btnContinue.Name = "btnContinue"; + this.btnContinue.Padding = new System.Windows.Forms.Padding(5); + this.btnContinue.Size = new System.Drawing.Size(150, 31); + this.btnContinue.TabIndex = 2; + this.btnContinue.Text = "Start Love2dToAPK"; + this.btnContinue.Click += new System.EventHandler(this.btnContinue_Click); + // + // frmFirstStartup + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.ClientSize = new System.Drawing.Size(397, 512); + this.Controls.Add(this.btnContinue); + this.Controls.Add(this.panel1); + this.Name = "frmFirstStartup"; + this.Load += new System.EventHandler(this.frmFirstStartup_Load); + this.Controls.SetChildIndex(this.panel1, 0); + this.Controls.SetChildIndex(this.btnContinue, 0); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.LinkLabel linkLabel1; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.LinkLabel linkLabel2; + private System.Windows.Forms.Label label8; + private Controls.minimalButton btnContinue; + } +} diff --git a/love2dToAPK/Forms/frmFirstStartup.cs b/love2dToAPK/Forms/frmFirstStartup.cs new file mode 100644 index 0000000..61b026b --- /dev/null +++ b/love2dToAPK/Forms/frmFirstStartup.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Text; +using System.Windows.Forms; + +namespace love2dToAPK.Forms { + public partial class frmFirstStartup : love2dToAPK.Forms.baseForm { + public frmFirstStartup() { + InitializeComponent(); + + WindowTitle = "Love2dToAPK"; + MinimizeAble = false; + } + + private void frmFirstStartup_Load(object sender, EventArgs e) { + btnContinue.BackgroundColor = ColorTranslator.FromHtml("#0cd10c"); + } + + private void btnContinue_Click(object sender, EventArgs e) { + Properties.Settings.Default.firstStart = false; + Properties.Settings.Default.Save(); + this.Close(); + } + } +} diff --git a/love2dToAPK/Forms/frmFirstStartup.resx b/love2dToAPK/Forms/frmFirstStartup.resx new file mode 100644 index 0000000..20d06c9 --- /dev/null +++ b/love2dToAPK/Forms/frmFirstStartup.resx @@ -0,0 +1,133 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <data name="label5.Text" xml:space="preserve"> + <value>This app wants to make the hassle of developing for Android, +a little less of a, hassle... +It automates the process of compiling the project to a APK-file, +installing it to a device and launching it.</value> + </data> + <data name="label6.Text" xml:space="preserve"> + <value>I have tried to make the app as simple and self-explanatory +as possible. Therfore i am only going to mention the +compile-hotkey here. With the app running in the background +you can press CTRL+SHIFT+F5 and the compiling will start. +A more detailed guide of the app can be found here;</value> + </data> +</root> \ No newline at end of file diff --git a/love2dToAPK/Forms/frmMain.Designer.cs b/love2dToAPK/Forms/frmMain.Designer.cs new file mode 100644 index 0000000..02a9dfc --- /dev/null +++ b/love2dToAPK/Forms/frmMain.Designer.cs @@ -0,0 +1,191 @@ +namespace love2dToAPK.Forms { + partial class frmMain { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) { + if (disposing && (components != null)) { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() { + this.panel1 = new System.Windows.Forms.Panel(); + this.btnCompile = new love2dToAPK.Controls.minimalButton(); + this.lblStatus = new System.Windows.Forms.Label(); + this.panel2 = new System.Windows.Forms.Panel(); + this.pbStatusImage = new System.Windows.Forms.PictureBox(); + this.btnSelectFolder = new love2dToAPK.Controls.minimalButton(); + this.btnSettings = new love2dToAPK.Controls.minimalButton(); + this.panel3 = new System.Windows.Forms.Panel(); + this.btnToolsFolder = new love2dToAPK.Controls.minimalButton(); + this.panel1.SuspendLayout(); + this.panel2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pbStatusImage)).BeginInit(); + this.panel3.SuspendLayout(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.BackColor = System.Drawing.Color.White; + this.panel1.Controls.Add(this.btnCompile); + this.panel1.Controls.Add(this.lblStatus); + this.panel1.Controls.Add(this.panel2); + this.panel1.Location = new System.Drawing.Point(12, 62); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(229, 70); + this.panel1.TabIndex = 1; + // + // btnCompile + // + this.btnCompile.AutoSize = true; + this.btnCompile.BackColor = System.Drawing.SystemColors.Control; + this.btnCompile.BackgroundColor = System.Drawing.SystemColors.Control; + this.btnCompile.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnCompile.ForeColor = System.Drawing.Color.White; + this.btnCompile.ForegroundColor = System.Drawing.Color.White; + this.btnCompile.Location = new System.Drawing.Point(114, 45); + this.btnCompile.Name = "btnCompile"; + this.btnCompile.Padding = new System.Windows.Forms.Padding(2); + this.btnCompile.Size = new System.Drawing.Size(53, 17); + this.btnCompile.TabIndex = 2; + this.btnCompile.Text = "Compile"; + this.btnCompile.Click += new System.EventHandler(this.btnCompile_Click); + // + // lblStatus + // + this.lblStatus.AutoSize = true; + this.lblStatus.Font = new System.Drawing.Font("Segoe UI", 20.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblStatus.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(49)))), ((int)(((byte)(110))))); + this.lblStatus.Location = new System.Drawing.Point(71, 3); + this.lblStatus.Name = "lblStatus"; + this.lblStatus.Size = new System.Drawing.Size(89, 37); + this.lblStatus.TabIndex = 1; + this.lblStatus.Text = "Ready"; + // + // panel2 + // + this.panel2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(49)))), ((int)(((byte)(110))))); + this.panel2.Controls.Add(this.pbStatusImage); + this.panel2.Dock = System.Windows.Forms.DockStyle.Left; + this.panel2.Location = new System.Drawing.Point(0, 0); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(70, 70); + this.panel2.TabIndex = 0; + // + // pbStatusImage + // + this.pbStatusImage.Dock = System.Windows.Forms.DockStyle.Fill; + this.pbStatusImage.Image = global::love2dToAPK.Properties.Resources.ready; + this.pbStatusImage.Location = new System.Drawing.Point(0, 0); + this.pbStatusImage.Name = "pbStatusImage"; + this.pbStatusImage.Size = new System.Drawing.Size(70, 70); + this.pbStatusImage.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pbStatusImage.TabIndex = 0; + this.pbStatusImage.TabStop = false; + // + // btnSelectFolder + // + this.btnSelectFolder.AutoSize = true; + this.btnSelectFolder.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(49)))), ((int)(((byte)(110))))); + this.btnSelectFolder.BackgroundColor = System.Drawing.SystemColors.Control; + this.btnSelectFolder.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnSelectFolder.ForeColor = System.Drawing.Color.White; + this.btnSelectFolder.ForegroundColor = System.Drawing.Color.White; + this.btnSelectFolder.Location = new System.Drawing.Point(13, 0); + this.btnSelectFolder.Name = "btnSelectFolder"; + this.btnSelectFolder.Padding = new System.Windows.Forms.Padding(2); + this.btnSelectFolder.Size = new System.Drawing.Size(114, 17); + this.btnSelectFolder.TabIndex = 3; + this.btnSelectFolder.Text = "Select project folder"; + this.btnSelectFolder.Click += new System.EventHandler(this.btnSelectFolder_Click); + // + // btnSettings + // + this.btnSettings.AutoSize = true; + this.btnSettings.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(49)))), ((int)(((byte)(110))))); + this.btnSettings.BackgroundColor = System.Drawing.SystemColors.Control; + this.btnSettings.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnSettings.ForeColor = System.Drawing.Color.White; + this.btnSettings.ForegroundColor = System.Drawing.Color.White; + this.btnSettings.Location = new System.Drawing.Point(131, 0); + this.btnSettings.Name = "btnSettings"; + this.btnSettings.Padding = new System.Windows.Forms.Padding(2); + this.btnSettings.Size = new System.Drawing.Size(53, 17); + this.btnSettings.TabIndex = 4; + this.btnSettings.Text = "Settings"; + this.btnSettings.Click += new System.EventHandler(this.btnSettings_Click); + // + // panel3 + // + this.panel3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(49)))), ((int)(((byte)(110))))); + this.panel3.Controls.Add(this.btnToolsFolder); + this.panel3.Controls.Add(this.btnSelectFolder); + this.panel3.Controls.Add(this.btnSettings); + this.panel3.Location = new System.Drawing.Point(0, 37); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(253, 17); + this.panel3.TabIndex = 5; + // + // btnToolsFolder + // + this.btnToolsFolder.AutoSize = true; + this.btnToolsFolder.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(49)))), ((int)(((byte)(110))))); + this.btnToolsFolder.BackgroundColor = System.Drawing.SystemColors.Control; + this.btnToolsFolder.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnToolsFolder.ForeColor = System.Drawing.Color.White; + this.btnToolsFolder.ForegroundColor = System.Drawing.Color.White; + this.btnToolsFolder.Location = new System.Drawing.Point(188, 0); + this.btnToolsFolder.Name = "btnToolsFolder"; + this.btnToolsFolder.Padding = new System.Windows.Forms.Padding(2); + this.btnToolsFolder.Size = new System.Drawing.Size(25, 17); + this.btnToolsFolder.TabIndex = 5; + this.btnToolsFolder.Text = "dir"; + this.btnToolsFolder.Click += new System.EventHandler(this.btnToolsFolder_Click); + // + // frmMain + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.ClientSize = new System.Drawing.Size(250, 142); + this.Controls.Add(this.panel3); + this.Controls.Add(this.panel1); + this.Name = "frmMain"; + this.Load += new System.EventHandler(this.frmMain_Load); + this.Controls.SetChildIndex(this.panel1, 0); + this.Controls.SetChildIndex(this.panel3, 0); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pbStatusImage)).EndInit(); + this.panel3.ResumeLayout(false); + this.panel3.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Label lblStatus; + private Controls.minimalButton btnCompile; + private System.Windows.Forms.PictureBox pbStatusImage; + private Controls.minimalButton btnSelectFolder; + private Controls.minimalButton btnSettings; + private System.Windows.Forms.Panel panel3; + private Controls.minimalButton btnToolsFolder; + } +} diff --git a/love2dToAPK/Forms/frmMain.cs b/love2dToAPK/Forms/frmMain.cs new file mode 100644 index 0000000..59b1cbb --- /dev/null +++ b/love2dToAPK/Forms/frmMain.cs @@ -0,0 +1,86 @@ +using System; +using System.Drawing; +using System.Windows.Forms; +using Microsoft.WindowsAPICodePack.Dialogs; +using System.Runtime.InteropServices; +using System.Diagnostics; +using System.IO; + +namespace love2dToAPK.Forms { + public partial class frmMain : love2dToAPK.Forms.baseForm { + + [DllImport("user32.dll")] + private static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vk); + + [DllImport("user32.dll")] + private static extern bool UnregisterHotKey(IntPtr hWnd, int id); + + const int MOD_CONTROL = 0x0002; + const int MOD_SHIFT = 0x0004; + const int WM_HOTKEY = 0x0312; + + + public frmMain() { + InitializeComponent(); + + WindowTitle = "Love2dToAPK"; + RegisterHotKey(this.Handle, 1, MOD_CONTROL + MOD_SHIFT, (int)Keys.F5); + } + + private void frmMain_Load(object sender, EventArgs e) { + btnCompile.BackgroundColor = ColorTranslator.FromHtml("#ea316e"); + btnSelectFolder.BackgroundColor = ColorTranslator.FromHtml("#ea316e"); + btnSettings.BackgroundColor = ColorTranslator.FromHtml("#ea316e"); + btnToolsFolder.BackgroundColor = ColorTranslator.FromHtml("#ea316e"); + + this.TopMost = Properties.Settings.Default.alwaysOnTop; + } + + protected override void WndProc(ref Message m) { + if (m.Msg == WM_HOTKEY && (int)m.WParam == 1) + compileRoutine(); + base.WndProc(ref m); + } + + private void btnCompile_Click(object sender, EventArgs e) { + compileRoutine(); + } + + private void compileRoutine() { + // Open output console, deactivate self, reactivate self + this.lblStatus.Text = "Compiling..."; + this.Enabled = false; + Forms.frmOutput dlg = new Forms.frmOutput(); + Program.frmOutput = dlg; + dlg.projectPath = Properties.Settings.Default.projectPath; + DialogResult result = dlg.ShowDialog(); + Program.frmOutput = null; + this.Enabled = true; + this.lblStatus.Text = "Ready"; + } + + private void btnSelectFolder_Click(object sender, EventArgs e) { + CommonOpenFileDialog dialog = new CommonOpenFileDialog(); + //dialog.InitialDirectory = "C:\\Users"; + dialog.IsFolderPicker = true; + if (dialog.ShowDialog() == CommonFileDialogResult.Ok) { + Properties.Settings.Default.projectPath = dialog.FileName; + Properties.Settings.Default.Save(); + } + } + + private void btnSettings_Click(object sender, EventArgs e) { + this.Enabled = false; + Forms.frmSettings dlg = new Forms.frmSettings(); + dlg.ShowDialog(); + this.Enabled = true; + } + + private void btnToolsFolder_Click(object sender, EventArgs e) { + if (!Directory.Exists("tools")) { + Directory.CreateDirectory("tools"); + } + Process.Start("explorer.exe", AppDomain.CurrentDomain.BaseDirectory + "tools"); + } + } +} diff --git a/love2dToAPK/Forms/frmMain.resx b/love2dToAPK/Forms/frmMain.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/love2dToAPK/Forms/frmMain.resx @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/love2dToAPK/Forms/frmOutput.Designer.cs b/love2dToAPK/Forms/frmOutput.Designer.cs new file mode 100644 index 0000000..71aea87 --- /dev/null +++ b/love2dToAPK/Forms/frmOutput.Designer.cs @@ -0,0 +1,54 @@ +namespace love2dToAPK.Forms { + partial class frmOutput { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) { + if (disposing && (components != null)) { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() { + this.txtOutput = new System.Windows.Forms.TextBox(); + this.SuspendLayout(); + // + // txtOutput + // + this.txtOutput.Dock = System.Windows.Forms.DockStyle.Fill; + this.txtOutput.Location = new System.Drawing.Point(0, 37); + this.txtOutput.Multiline = true; + this.txtOutput.Name = "txtOutput"; + this.txtOutput.Size = new System.Drawing.Size(634, 249); + this.txtOutput.TabIndex = 3; + // + // frmOutput + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.ClientSize = new System.Drawing.Size(634, 286); + this.Controls.Add(this.txtOutput); + this.Name = "frmOutput"; + this.Load += new System.EventHandler(this.frmOutput_Load); + this.Controls.SetChildIndex(this.txtOutput, 0); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.TextBox txtOutput; + } +} diff --git a/love2dToAPK/Forms/frmOutput.cs b/love2dToAPK/Forms/frmOutput.cs new file mode 100644 index 0000000..5d63b71 --- /dev/null +++ b/love2dToAPK/Forms/frmOutput.cs @@ -0,0 +1,52 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.IO.Compression; +using System.Threading; +using System.Windows.Forms; + +namespace love2dToAPK.Forms { + public partial class frmOutput : love2dToAPK.Forms.baseForm { + + public string projectPath { get; set; } + public string responseCode { get; set; } + + private Thread _compilerThread; + private string _toolsPath = AppDomain.CurrentDomain.BaseDirectory; + + public frmOutput() { + InitializeComponent(); + + WindowTitle = "Output"; + MinimizeAble = false; + txtOutput.ScrollBars = ScrollBars.Vertical; + } + + private void frmOutput_Load(object sender, EventArgs e) { + _compilerThread = new Thread(compileRoutine); + _compilerThread.Start(); + + this.TopMost = Properties.Settings.Default.alwaysOnTop; + } + + private void compileRoutine() { + Compiler compiler = new Compiler(projectPath); + compiler.compile(); + + if (compiler.BuildSuccessful && Properties.Settings.Default.closeOnSuccess) { + this.Invoke((MethodInvoker)delegate { + this.Close(); + }); + } + } + + public void log(string str) { + if (InvokeRequired) { + this.Invoke(new Action<string>(log), new object[] { str }); + return; + } + txtOutput.AppendText(str + "\r\n"); + } + + } +} diff --git a/love2dToAPK/Forms/frmOutput.resx b/love2dToAPK/Forms/frmOutput.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/love2dToAPK/Forms/frmOutput.resx @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/love2dToAPK/Forms/frmSettings.Designer.cs b/love2dToAPK/Forms/frmSettings.Designer.cs new file mode 100644 index 0000000..4cf3cdd --- /dev/null +++ b/love2dToAPK/Forms/frmSettings.Designer.cs @@ -0,0 +1,106 @@ +namespace love2dToAPK.Forms { + partial class frmSettings { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) { + if (disposing && (components != null)) { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() { + this.cbAlwaysOnTop = new System.Windows.Forms.CheckBox(); + this.cbCloseOnSuccess = new System.Windows.Forms.CheckBox(); + this.panel1 = new System.Windows.Forms.Panel(); + this.btnSave = new love2dToAPK.Controls.minimalButton(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // cbAlwaysOnTop + // + this.cbAlwaysOnTop.AutoSize = true; + this.cbAlwaysOnTop.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cbAlwaysOnTop.Location = new System.Drawing.Point(13, 13); + this.cbAlwaysOnTop.Name = "cbAlwaysOnTop"; + this.cbAlwaysOnTop.Size = new System.Drawing.Size(145, 17); + this.cbAlwaysOnTop.TabIndex = 1; + this.cbAlwaysOnTop.Text = "Window always on top"; + this.cbAlwaysOnTop.UseVisualStyleBackColor = true; + // + // cbCloseOnSuccess + // + this.cbCloseOnSuccess.AutoSize = true; + this.cbCloseOnSuccess.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cbCloseOnSuccess.Location = new System.Drawing.Point(13, 36); + this.cbCloseOnSuccess.Name = "cbCloseOnSuccess"; + this.cbCloseOnSuccess.Size = new System.Drawing.Size(260, 17); + this.cbCloseOnSuccess.TabIndex = 2; + this.cbCloseOnSuccess.Text = "Close output-window if build was successfull"; + this.cbCloseOnSuccess.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.cbCloseOnSuccess.UseVisualStyleBackColor = true; + // + // panel1 + // + this.panel1.BackColor = System.Drawing.Color.White; + this.panel1.Controls.Add(this.cbAlwaysOnTop); + this.panel1.Controls.Add(this.cbCloseOnSuccess); + this.panel1.Location = new System.Drawing.Point(12, 55); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(289, 67); + this.panel1.TabIndex = 3; + // + // btnSave + // + this.btnSave.AutoSize = true; + this.btnSave.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(128))))); + this.btnSave.BackgroundColor = System.Drawing.SystemColors.Control; + this.btnSave.Font = new System.Drawing.Font("Segoe UI", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnSave.ForeColor = System.Drawing.Color.White; + this.btnSave.ForegroundColor = System.Drawing.Color.White; + this.btnSave.Location = new System.Drawing.Point(239, 135); + this.btnSave.Name = "btnSave"; + this.btnSave.Padding = new System.Windows.Forms.Padding(5); + this.btnSave.Size = new System.Drawing.Size(61, 35); + this.btnSave.TabIndex = 4; + this.btnSave.Text = "Save"; + this.btnSave.Click += new System.EventHandler(this.btnSave_Click); + // + // frmSettings + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.ClientSize = new System.Drawing.Size(317, 183); + this.Controls.Add(this.btnSave); + this.Controls.Add(this.panel1); + this.Name = "frmSettings"; + this.Load += new System.EventHandler(this.frmSettings_Load); + this.Controls.SetChildIndex(this.panel1, 0); + this.Controls.SetChildIndex(this.btnSave, 0); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.CheckBox cbAlwaysOnTop; + private System.Windows.Forms.CheckBox cbCloseOnSuccess; + private System.Windows.Forms.Panel panel1; + private Controls.minimalButton btnSave; + } +} diff --git a/love2dToAPK/Forms/frmSettings.cs b/love2dToAPK/Forms/frmSettings.cs new file mode 100644 index 0000000..3b43381 --- /dev/null +++ b/love2dToAPK/Forms/frmSettings.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Text; +using System.Windows.Forms; + +namespace love2dToAPK.Forms { + public partial class frmSettings : love2dToAPK.Forms.baseForm { + public frmSettings() { + InitializeComponent(); + + WindowTitle = "Settings"; + MinimizeAble = false; + + this.TopMost = Properties.Settings.Default.alwaysOnTop; + } + + private void frmSettings_Load(object sender, EventArgs e) { + btnSave.BackgroundColor = ColorTranslator.FromHtml("#0fdb0f"); + + cbAlwaysOnTop.Checked = Properties.Settings.Default.alwaysOnTop; + cbCloseOnSuccess.Checked = Properties.Settings.Default.closeOnSuccess; + } + + private void btnSave_Click(object sender, EventArgs e) { + Properties.Settings.Default.alwaysOnTop = cbAlwaysOnTop.Checked; + Properties.Settings.Default.closeOnSuccess = cbCloseOnSuccess.Checked; + Properties.Settings.Default.Save(); + MessageBox.Show("Restart the app for changes to take effect."); + this.Close(); + } + } +} diff --git a/love2dToAPK/Forms/frmSettings.resx b/love2dToAPK/Forms/frmSettings.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/love2dToAPK/Forms/frmSettings.resx @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/love2dToAPK/Program.cs b/love2dToAPK/Program.cs new file mode 100644 index 0000000..7d8473f --- /dev/null +++ b/love2dToAPK/Program.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Media; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace love2dToAPK { + static class Program { + /// <summary> + /// The main entry point for the application. + /// </summary> + /// + + public static Forms.frmOutput frmOutput; + + public static string Output { + get { return _output; } + set { _output = value; log(value); } + } + private static string _output; + + + [STAThread] + static void Main() { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + + if (Properties.Settings.Default.firstStart) { + Forms.frmFirstStartup firstStartupDialog = new Forms.frmFirstStartup(); + firstStartupDialog.ShowDialog(); + } + Application.Run(new Forms.frmMain()); + } + + private static void log(string str) { + if (frmOutput != null) { + frmOutput.log(str); + } + } + + } +} diff --git a/love2dToAPK/Properties/AssemblyInfo.cs b/love2dToAPK/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..7cf65c3 --- /dev/null +++ b/love2dToAPK/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("love2dToAPK")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("love2dToAPK")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("12e47644-106b-499a-98a3-cd9abcb57112")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/love2dToAPK/Properties/Resources.Designer.cs b/love2dToAPK/Properties/Resources.Designer.cs new file mode 100644 index 0000000..ed2ba54 --- /dev/null +++ b/love2dToAPK/Properties/Resources.Designer.cs @@ -0,0 +1,73 @@ +//------------------------------------------------------------------------------ +// <auto-generated> +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// </auto-generated> +//------------------------------------------------------------------------------ + +namespace love2dToAPK.Properties { + using System; + + + /// <summary> + /// A strongly-typed resource class, for looking up localized strings, etc. + /// </summary> + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// <summary> + /// Returns the cached ResourceManager instance used by this class. + /// </summary> + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("love2dToAPK.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// <summary> + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// </summary> + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// <summary> + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// </summary> + internal static System.Drawing.Bitmap ready { + get { + object obj = ResourceManager.GetObject("ready", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/love2dToAPK/Properties/Resources.resx b/love2dToAPK/Properties/Resources.resx new file mode 100644 index 0000000..009b124 --- /dev/null +++ b/love2dToAPK/Properties/Resources.resx @@ -0,0 +1,124 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> + <data name="ready" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\ready.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> +</root> \ No newline at end of file diff --git a/love2dToAPK/Properties/Settings.Designer.cs b/love2dToAPK/Properties/Settings.Designer.cs new file mode 100644 index 0000000..568e49e --- /dev/null +++ b/love2dToAPK/Properties/Settings.Designer.cs @@ -0,0 +1,74 @@ +//------------------------------------------------------------------------------ +// <auto-generated> +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// </auto-generated> +//------------------------------------------------------------------------------ + +namespace love2dToAPK.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.3.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string projectPath { + get { + return ((string)(this["projectPath"])); + } + set { + this["projectPath"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool firstStart { + get { + return ((bool)(this["firstStart"])); + } + set { + this["firstStart"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool alwaysOnTop { + get { + return ((bool)(this["alwaysOnTop"])); + } + set { + this["alwaysOnTop"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool closeOnSuccess { + get { + return ((bool)(this["closeOnSuccess"])); + } + set { + this["closeOnSuccess"] = value; + } + } + } +} diff --git a/love2dToAPK/Properties/Settings.settings b/love2dToAPK/Properties/Settings.settings new file mode 100644 index 0000000..498eba1 --- /dev/null +++ b/love2dToAPK/Properties/Settings.settings @@ -0,0 +1,18 @@ +<?xml version='1.0' encoding='utf-8'?> +<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="love2dToAPK.Properties" GeneratedClassName="Settings"> + <Profiles /> + <Settings> + <Setting Name="projectPath" Type="System.String" Scope="User"> + <Value Profile="(Default)" /> + </Setting> + <Setting Name="firstStart" Type="System.Boolean" Scope="User"> + <Value Profile="(Default)">False</Value> + </Setting> + <Setting Name="alwaysOnTop" Type="System.Boolean" Scope="User"> + <Value Profile="(Default)">False</Value> + </Setting> + <Setting Name="closeOnSuccess" Type="System.Boolean" Scope="User"> + <Value Profile="(Default)">False</Value> + </Setting> + </Settings> +</SettingsFile> \ No newline at end of file diff --git a/love2dToAPK/Resources/983924-200.png b/love2dToAPK/Resources/983924-200.png new file mode 100644 index 0000000..03ee969 Binary files /dev/null and b/love2dToAPK/Resources/983924-200.png differ diff --git a/love2dToAPK/Resources/ready.png b/love2dToAPK/Resources/ready.png new file mode 100644 index 0000000..df2e738 Binary files /dev/null and b/love2dToAPK/Resources/ready.png differ diff --git a/love2dToAPK/Settings.cs b/love2dToAPK/Settings.cs new file mode 100644 index 0000000..705d47d --- /dev/null +++ b/love2dToAPK/Settings.cs @@ -0,0 +1,28 @@ +namespace love2dToAPK.Properties { + + + // This class allows you to handle specific events on the settings class: + // The SettingChanging event is raised before a setting's value is changed. + // The PropertyChanged event is raised after a setting's value is changed. + // The SettingsLoaded event is raised after the setting values are loaded. + // The SettingsSaving event is raised before the setting values are saved. + internal sealed partial class Settings { + + public Settings() { + // // To add event handlers for saving and changing settings, uncomment the lines below: + // + // this.SettingChanging += this.SettingChangingEventHandler; + // + // this.SettingsSaving += this.SettingsSavingEventHandler; + // + } + + private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) { + // Add code to handle the SettingChangingEvent event here. + } + + private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) { + // Add code to handle the SettingsSaving event here. + } + } +} diff --git a/love2dToAPK/adb.cs b/love2dToAPK/adb.cs new file mode 100644 index 0000000..08aed78 --- /dev/null +++ b/love2dToAPK/adb.cs @@ -0,0 +1,96 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace love2dToAPK { + + class adb { + + public adb() { + } + + public void install(string apkPath) { + var processInfo = new ProcessStartInfo(); + processInfo.WorkingDirectory = AppDomain.CurrentDomain.BaseDirectory + "tools\\tools\\adb"; + processInfo.FileName = "cmd.exe"; + processInfo.Arguments = "/c adb.exe install -r \"" + apkPath + "\""; // This will install a new version of the app + processInfo.CreateNoWindow = true; + processInfo.UseShellExecute = false; + processInfo.RedirectStandardError = true; + processInfo.RedirectStandardOutput = true; + + var process = Process.Start(processInfo); + process.OutputDataReceived += (object sender, DataReceivedEventArgs e) => log(e.Data); + process.BeginOutputReadLine(); + + process.ErrorDataReceived += (object sender, DataReceivedEventArgs e) => log("error>> " + e.Data); + process.BeginErrorReadLine(); + + process.WaitForExit(); + + //Console.WriteLine("ExitCode: {0}", process.ExitCode); + log("Exitcode: " + process.ExitCode.ToString()); + process.Close(); + return; + } + + public void uninstall(string bundleIdentifier) { + var processInfo = new ProcessStartInfo(); + processInfo.WorkingDirectory = AppDomain.CurrentDomain.BaseDirectory + "tools\\tools\\adb"; + processInfo.FileName = "cmd.exe"; + processInfo.Arguments = "/c adb.exe uninstall \"" + bundleIdentifier + "\""; + processInfo.CreateNoWindow = true; + processInfo.UseShellExecute = false; + processInfo.RedirectStandardError = true; + processInfo.RedirectStandardOutput = true; + + var process = Process.Start(processInfo); + process.OutputDataReceived += (object sender, DataReceivedEventArgs e) => log(e.Data); + process.BeginOutputReadLine(); + + process.ErrorDataReceived += (object sender, DataReceivedEventArgs e) => log("error>> " + e.Data); + process.BeginErrorReadLine(); + + process.WaitForExit(); + + //Console.WriteLine("ExitCode: {0}", process.ExitCode); + log("Exitcode: " + process.ExitCode.ToString()); + process.Close(); + return; + } + + public void launchApp(string bundleIdentifier) { + var processInfo = new ProcessStartInfo(); + processInfo.WorkingDirectory = AppDomain.CurrentDomain.BaseDirectory + "tools\\tools\\adb"; + processInfo.FileName = "cmd.exe"; + processInfo.Arguments = "/c adb.exe shell monkey -p " + bundleIdentifier + " -c android.intent.category.LAUNCHER 1"; + processInfo.CreateNoWindow = true; + processInfo.UseShellExecute = false; + processInfo.RedirectStandardError = true; + processInfo.RedirectStandardOutput = true; + + var process = Process.Start(processInfo); + process.OutputDataReceived += (object sender, DataReceivedEventArgs e) => log(e.Data); + process.BeginOutputReadLine(); + + process.ErrorDataReceived += (object sender, DataReceivedEventArgs e) => log("error>> " + e.Data); + process.BeginErrorReadLine(); + + process.WaitForExit(); + + //Console.WriteLine("ExitCode: {0}", process.ExitCode); + log("Exitcode: " + process.ExitCode.ToString()); + process.Close(); + return; + } + + private void log(string str) { + Program.frmOutput.log(str); + } + + } + +} diff --git a/love2dToAPK/compiler.cs b/love2dToAPK/compiler.cs new file mode 100644 index 0000000..8b0e34f --- /dev/null +++ b/love2dToAPK/compiler.cs @@ -0,0 +1,259 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.IO.Compression; +using System.Threading; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Media; +using System.Drawing; +using System.Xml; +using System.Windows.Forms; + +namespace love2dToAPK { + + class Compiler { + + public string ProjectPath { get; set; } + public string ResponseCode { get; set; } + + private string _toolsPath = AppDomain.CurrentDomain.BaseDirectory; + private string _packageIdentifier; + + public bool BuildSuccessful; + public Compiler(string projectPath) { + ProjectPath = projectPath; + _toolsPath += "//tools//"; + } + + public void compile() { + /* the actual routine is in compile-routine, this is because we want a nicer looking try-catch thing */ + try { + compileRoutine(); + + log("###############################"); + log("BUILD SUCCESSFULL!!!"); + log("###############################"); + Program.frmOutput.setColor(ColorTranslator.FromHtml("#13c116")); + SystemSounds.Hand.Play(); + BuildSuccessful = true; + + } catch (Exception e) { + log("###############################"); + log("BUILD FAILED!!!"); + log("###############################"); + log(e.ToString()); + Program.frmOutput.setColor(ColorTranslator.FromHtml("#e01616")); + SystemSounds.Asterisk.Play(); + BuildSuccessful = false; + + } + } + + private void compileRoutine() { + Stopwatch stopWatch = new Stopwatch(); + stopWatch.Start(); + + log("-- Starting compiler --"); + + log(">> Checking for required files..."); + requiredFilesExist(); + + log(">> Cleaning up old junk..."); + cleanupOldJunk(); + + log(">> Getting project settings..."); + extractProjectSettings(); + + log(">> Zipping source-dir..."); + ZipFile.CreateFromDirectory(ProjectPath, "tools\\game.love"); + + log(">> Putting all the files in the bowl, mixing, and pouring them to different locations."); + lastPreparationBeforeCompiling(); + + log(">> Launching Ant-compiler..."); + runAnt(); + + log(">> Move build to build folder..."); + moveOutputFiles(); + + log(">> Cleanup..."); + cleanUpNewJunk(); + + log(">> Installing on phone"); + moveToPhone(); + + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10); + log("-- Finished compiling in " + elapsedTime + " --"); + } + + private void requiredFilesExist() { + /* This method checks if all the required tools and files exist */ + + // This directory is required because everything that is needed during the compilation is here + if (!Directory.Exists("tools")) { + throw new Exception("TOOLS NOT FOUND; PANICKING! SUPRISE MAFA**A, THERE IS NO CAKE!"); + } + + // This directory is required becuase we want to have something to compile + if (!Directory.Exists(ProjectPath)) { + throw new Exception("Project folder not found! \n path at " + ProjectPath); + } + + } + + private void cleanupOldJunk() { + /* This method cleans up old files that could be left behind from old compilations */ + + // Not really nececarry, just to stop the folder from entering our game.love file + if (Directory.Exists(ProjectPath + "\\build\\")) { + log("Buildfolder found, deleting before compiling..."); + Directory.Delete(ProjectPath + "\\build\\", true); + } + + // Delete old game.love, to stop us from conflicts when zipping the project + if (File.Exists("tools\\game.love")) { + log("Deleting old game.love"); + File.Delete("tools\\game.love"); + } + + // Delete old game.apk, this is not really a problem, as we are going to copy it elsewehre anyway + if (File.Exists("tools\\game.apk")) { + log("Deleting old game apk"); + File.Delete("tools\\game.apk"); + } + + // Delete old source compilation, again to protect from conflicts + if (Directory.Exists("tools\\tools\\love-android-sdl2\\src\\love")) { + log("Deleting old source-folder"); + Directory.Delete("tools\\tools\\love-android-sdl2\\src\\love", true); + } + + // This is the old game.love file, again, stop from conflicts. + if (File.Exists("tools\\tools\\love-android-sdl2\\assets\\game.love")) { + log("Deleting old game apk"); + File.Delete("tools\\tools\\love-android-sdl2\\assets\\game.love"); + } + + } + + private void extractProjectSettings() { + /* This copies potential custom app settings, and reads things like the app name. + * For when we are going to use ADB later */ + + // Delete old manifest file, to protect from conflicts + if (File.Exists(_toolsPath + "tools\\love-android-sdl2\\AndroidManifest.xml")) { + File.Delete(_toolsPath + "tools\\love-android-sdl2\\AndroidManifest.xml"); + } + + // Copy manifest file from project path if it exists + // If not we want the default manifest file. + if (File.Exists(ProjectPath + "\\AndroidManifest.xml")) { + log("Found manifest file."); + File.Copy(ProjectPath + "\\AndroidManifest.xml", _toolsPath + "tools\\love-android-sdl2\\AndroidManifest.xml"); + } else { + log("No maifest file found, using default,"); + File.Copy(_toolsPath + "tools\\love-android-sdl2\\original\\AndroidManifest.xml", _toolsPath + "tools\\love-android-sdl2\\AndroidManifest.xml"); + } + + // We should do something about our icon here as well + + // Read package identifier from the androidManifest + XmlDocument doc = new XmlDocument(); + doc.Load(_toolsPath + "tools\\love-android-sdl2\\AndroidManifest.xml"); + _packageIdentifier = doc.SelectSingleNode("manifest").Attributes["package"].InnerText; + + } + + private void zipGameSource() { + + } + + private void lastPreparationBeforeCompiling() { + /* This method will make the sourceDir, + * get the new game.love file, fiddle with the icon and generate LtaActivityFile */ + + // Create the source-dir + Directory.CreateDirectory("tools\\tools\\love-android-sdl2\\src\\love"); + Directory.CreateDirectory("tools\\tools\\love-android-sdl2\\src\\love\\to"); + Directory.CreateDirectory("tools\\tools\\love-android-sdl2\\src\\love\\to\\android"); + + // Fetch the new game.love file + File.Move("tools\\game.love", "tools\\tools\\love-android-sdl2\\assets\\game.love"); + + // TODO Move icon to folder, have to make a default as well. Move icon to root in extractProjectSettings + + generateLtaActivityFile(); + + } + + private void generateLtaActivityFile() { + /* I Have no clue what this file really does, + * but to change the package name we have to generate it + * instead of just copying it from source */ + + string[] lines = { + "package " + _packageIdentifier + ";", + "import org.love2d.android.GameActivity;", + "", + "public class LtaActivity extends GameActivity {}" + }; + File.WriteAllLines("tools\\tools\\love-android-sdl2\\src\\love\\to\\android\\LtaActivity.java", lines); + + } + + private void runAnt() { + /* This runs a batch file that excecutes the compiler-batch-thingy ANT */ + var processInfo = new ProcessStartInfo(); + processInfo.WorkingDirectory = _toolsPath; + processInfo.FileName = "cmd.exe"; + processInfo.Arguments = "/c startAnt.bat"; + processInfo.CreateNoWindow = true; + processInfo.UseShellExecute = false; + processInfo.RedirectStandardError = true; + processInfo.RedirectStandardOutput = true; + + var process = Process.Start(processInfo); + process.OutputDataReceived += (object sender, DataReceivedEventArgs e) => log(e.Data); + process.BeginOutputReadLine(); + + process.ErrorDataReceived += (object sender, DataReceivedEventArgs e) => log("[error] >> " + e.Data); + process.BeginErrorReadLine(); + + process.WaitForExit(); + + log("Exitcode: " + process.ExitCode.ToString()); + process.Close(); + } + + private void moveOutputFiles() { + Directory.CreateDirectory(ProjectPath + "\\build\\"); + File.Copy("tools\\tools\\love-android-sdl2\\bin\\love_android_sdl2-debug.apk", ProjectPath + "\\build\\game.apk"); + } + + private void cleanUpNewJunk() { + File.Delete("tools\\game.love"); + File.Delete("tools\\game.apk"); + } + + private void moveToPhone() { + adb adb = new adb(); + + adb.install(ProjectPath + "\\build\\game.apk"); // This installs the app, if an older version exists, update it. + + log(">> Launching app, please make sure it is unlocked. If it isn't monkey might go crazy!!!"); + Thread.Sleep(1000); + adb.launchApp(_packageIdentifier); + } + + private void log(string str) { + Program.frmOutput.log(str); + } + + } + +} diff --git a/love2dToAPK/love2dToAPK.csproj b/love2dToAPK/love2dToAPK.csproj new file mode 100644 index 0000000..1923f21 --- /dev/null +++ b/love2dToAPK/love2dToAPK.csproj @@ -0,0 +1,193 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProjectGuid>{12E47644-106B-499A-98A3-CD9ABCB57112}</ProjectGuid> + <OutputType>WinExe</OutputType> + <RootNamespace>love2dToAPK</RootNamespace> + <AssemblyName>love2dToAPK</AssemblyName> + <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> + <IsWebBootstrapper>false</IsWebBootstrapper> + <PublishUrl>publish\</PublishUrl> + <Install>true</Install> + <InstallFrom>Disk</InstallFrom> + <UpdateEnabled>false</UpdateEnabled> + <UpdateMode>Foreground</UpdateMode> + <UpdateInterval>7</UpdateInterval> + <UpdateIntervalUnits>Days</UpdateIntervalUnits> + <UpdatePeriodically>false</UpdatePeriodically> + <UpdateRequired>false</UpdateRequired> + <MapFileExtensions>true</MapFileExtensions> + <ProductName>Love2dToAPK</ProductName> + <PublisherName>Jakob Stendahl</PublisherName> + <OpenBrowserOnPublish>false</OpenBrowserOnPublish> + <ApplicationRevision>8</ApplicationRevision> + <ApplicationVersion>1.0.0.%2a</ApplicationVersion> + <UseApplicationTrust>false</UseApplicationTrust> + <PublishWizardCompleted>true</PublishWizardCompleted> + <BootstrapperEnabled>true</BootstrapperEnabled> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <PlatformTarget>AnyCPU</PlatformTarget> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <PlatformTarget>AnyCPU</PlatformTarget> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup> + <ManifestCertificateThumbprint>33720F9ED6E6BD3C41E87CC21324E9030439C780</ManifestCertificateThumbprint> + </PropertyGroup> + <PropertyGroup> + <ManifestKeyFile>love2dToAPK_TemporaryKey.pfx</ManifestKeyFile> + </PropertyGroup> + <PropertyGroup> + <GenerateManifests>true</GenerateManifests> + </PropertyGroup> + <PropertyGroup> + <SignManifests>true</SignManifests> + </PropertyGroup> + <ItemGroup> + <Reference Include="Microsoft.WindowsAPICodePack, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> + <HintPath>..\packages\WindowsAPICodePack.1.1.0\lib\Microsoft.WindowsAPICodePack.dll</HintPath> + </Reference> + <Reference Include="Microsoft.WindowsAPICodePack.ExtendedLinguisticServices, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> + <HintPath>..\packages\WindowsAPICodePack.1.1.0\lib\Microsoft.WindowsAPICodePack.ExtendedLinguisticServices.dll</HintPath> + </Reference> + <Reference Include="Microsoft.WindowsAPICodePack.Sensors, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> + <HintPath>..\packages\WindowsAPICodePack.1.1.0\lib\Microsoft.WindowsAPICodePack.Sensors.dll</HintPath> + </Reference> + <Reference Include="Microsoft.WindowsAPICodePack.Shell, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> + <HintPath>..\packages\WindowsAPICodePack.1.1.0\lib\Microsoft.WindowsAPICodePack.Shell.dll</HintPath> + </Reference> + <Reference Include="Microsoft.WindowsAPICodePack.ShellExtensions, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> + <HintPath>..\packages\WindowsAPICodePack.1.1.0\lib\Microsoft.WindowsAPICodePack.ShellExtensions.dll</HintPath> + </Reference> + <Reference Include="System" /> + <Reference Include="System.Core" /> + <Reference Include="System.IO.Compression.FileSystem" /> + <Reference Include="System.Xml.Linq" /> + <Reference Include="System.Data.DataSetExtensions" /> + <Reference Include="Microsoft.CSharp" /> + <Reference Include="System.Data" /> + <Reference Include="System.Deployment" /> + <Reference Include="System.Drawing" /> + <Reference Include="System.Net.Http" /> + <Reference Include="System.Windows.Forms" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="adb.cs" /> + <Compile Include="compiler.cs" /> + <Compile Include="Controls\minimalButton.cs"> + <SubType>Component</SubType> + </Compile> + <Compile Include="Controls\minimalButton.Designer.cs"> + <DependentUpon>minimalButton.cs</DependentUpon> + </Compile> + <Compile Include="Forms\baseForm.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Forms\baseForm.Designer.cs"> + <DependentUpon>baseForm.cs</DependentUpon> + </Compile> + <Compile Include="Forms\frmFirstStartup.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Forms\frmFirstStartup.Designer.cs"> + <DependentUpon>frmFirstStartup.cs</DependentUpon> + </Compile> + <Compile Include="Forms\frmMain.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Forms\frmMain.Designer.cs"> + <DependentUpon>frmMain.cs</DependentUpon> + </Compile> + <Compile Include="Forms\frmOutput.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Forms\frmOutput.Designer.cs"> + <DependentUpon>frmOutput.cs</DependentUpon> + </Compile> + <Compile Include="Forms\frmSettings.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Forms\frmSettings.Designer.cs"> + <DependentUpon>frmSettings.cs</DependentUpon> + </Compile> + <Compile Include="Program.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="Settings.cs" /> + <EmbeddedResource Include="Forms\baseForm.resx"> + <DependentUpon>baseForm.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Forms\frmFirstStartup.resx"> + <DependentUpon>frmFirstStartup.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Forms\frmMain.resx"> + <DependentUpon>frmMain.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Forms\frmOutput.resx"> + <DependentUpon>frmOutput.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Forms\frmSettings.resx"> + <DependentUpon>frmSettings.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Properties\Resources.resx"> + <Generator>ResXFileCodeGenerator</Generator> + <LastGenOutput>Resources.Designer.cs</LastGenOutput> + <SubType>Designer</SubType> + </EmbeddedResource> + <Compile Include="Properties\Resources.Designer.cs"> + <AutoGen>True</AutoGen> + <DependentUpon>Resources.resx</DependentUpon> + <DesignTime>True</DesignTime> + </Compile> + <None Include="love2dToAPK_TemporaryKey.pfx" /> + <None Include="packages.config" /> + <None Include="Properties\Settings.settings"> + <Generator>SettingsSingleFileGenerator</Generator> + <LastGenOutput>Settings.Designer.cs</LastGenOutput> + </None> + <Compile Include="Properties\Settings.Designer.cs"> + <AutoGen>True</AutoGen> + <DependentUpon>Settings.settings</DependentUpon> + <DesignTimeSharedInput>True</DesignTimeSharedInput> + </Compile> + </ItemGroup> + <ItemGroup> + <None Include="App.config" /> + </ItemGroup> + <ItemGroup> + <None Include="Resources\ready.png" /> + </ItemGroup> + <ItemGroup> + <BootstrapperPackage Include=".NETFramework,Version=v4.6.1"> + <Visible>False</Visible> + <ProductName>Microsoft .NET Framework 4.6.1 %28x86 and x64%29</ProductName> + <Install>true</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5 SP1</ProductName> + <Install>false</Install> + </BootstrapperPackage> + </ItemGroup> + <ItemGroup /> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> +</Project> \ No newline at end of file diff --git a/love2dToAPK/packages.config b/love2dToAPK/packages.config new file mode 100644 index 0000000..3b2587d --- /dev/null +++ b/love2dToAPK/packages.config @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<packages> + <package id="WindowsAPICodePack" version="1.1.0" targetFramework="net461" /> +</packages> \ No newline at end of file diff --git a/love2dToAPK/tools/icon.png b/love2dToAPK/tools/icon.png new file mode 100644 index 0000000..e0567f6 Binary files /dev/null and b/love2dToAPK/tools/icon.png differ diff --git a/love2dToAPK/tools/startAnt.bat b/love2dToAPK/tools/startAnt.bat new file mode 100644 index 0000000..2613353 --- /dev/null +++ b/love2dToAPK/tools/startAnt.bat @@ -0,0 +1,12 @@ +@echo off + +setlocal +set ANT_HOME=%~dp0\tools\ant +set JAVA_HOME=%~dp0\tools\jdk-win +set ANDROID_HOME=%~dp0\tools\android-win +set PATH=%PATH%;%ANT_HOME%\bin + +cd tools\love-android-sdl2 + +call ant debug + diff --git a/love2dToAPK/tools/tools/adb/AdbWinApi.dll b/love2dToAPK/tools/tools/adb/AdbWinApi.dll new file mode 100644 index 0000000..7abe26c Binary files /dev/null and b/love2dToAPK/tools/tools/adb/AdbWinApi.dll differ diff --git a/love2dToAPK/tools/tools/adb/AdbWinUsbApi.dll b/love2dToAPK/tools/tools/adb/AdbWinUsbApi.dll new file mode 100644 index 0000000..e7a6de1 Binary files /dev/null and b/love2dToAPK/tools/tools/adb/AdbWinUsbApi.dll differ diff --git a/love2dToAPK/tools/tools/adb/NOTICE.txt b/love2dToAPK/tools/tools/adb/NOTICE.txt new file mode 100644 index 0000000..a574afb --- /dev/null +++ b/love2dToAPK/tools/tools/adb/NOTICE.txt @@ -0,0 +1,6260 @@ +Notices for files contained in the tools directory: +============================================================ +Notices for file(s): +/lib64/libtinyxml2.so +------------------------------------------------------------ +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must +not claim that you wrote the original software. If you use this +software in a product, an acknowledgment in the product documentation +would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and +must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. + +============================================================ +Notices for file(s): +/framework/antlr-runtime.jar +------------------------------------------------------------ +[The "BSD license"] +Copyright (c) 201 Terence Parr +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +============================================================ +Notices for file(s): +/lib/libcompiler_rt-extras.a +/lib64/libcompiler_rt-extras.a +/lib64/libcompiler_rt.so +------------------------------------------------------------ +============================================================================== +compiler_rt License +============================================================================== + +The compiler_rt library is dual licensed under both the University of Illinois +"BSD-Like" license and the MIT license. As a user of this code you may choose +to use it under either license. As a contributor, you agree to allow your code +to be used under both. + +Full text of the relevant licenses is included below. + +============================================================================== + +University of Illinois/NCSA +Open Source License + +Copyright (c) 2009-2014 by the contributors listed in CREDITS.TXT + +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + +============================================================================== + +Copyright (c) 2009-2014 by the contributors listed in CREDITS.TXT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +============================================================================== +Copyrights and Licenses for Third Party Software Distributed with LLVM: +============================================================================== +The LLVM software contains code written by third parties. Such software will +have its own individual LICENSE.TXT file in the directory in which it appears. +This file will describe the copyrights, license, and restrictions which apply +to that code. + +The disclaimer of warranty in the University of Illinois Open Source License +applies to all code in the LLVM Distribution, and nothing in any of the +other licenses gives permission to use the names of the LLVM Team or the +University of Illinois to endorse or promote products derived from this +Software. + + +============================================================ +Notices for file(s): +/lib/liblog.a +/lib/liblog.so +/lib64/liblog.a +/lib64/liblog.so +------------------------------------------------------------ + + Copyright (c) 2005-2014, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + +============================================================ +Notices for file(s): +/bin/v8mkpeephole +/lib/libv8base.a +/lib64/libv8base.a +------------------------------------------------------------ +This license applies to all parts of V8 that are not externally +maintained libraries. The externally maintained libraries used by V8 +are: + + - PCRE test suite, located in + test/mjsunit/third_party/regexp-pcre/regexp-pcre.js. This is based on the + test suite from PCRE-7.3, which is copyrighted by the University + of Cambridge and Google, Inc. The copyright notice and license + are embedded in regexp-pcre.js. + + - Layout tests, located in test/mjsunit/third_party/object-keys. These are + based on layout tests from webkit.org which are copyrighted by + Apple Computer, Inc. and released under a 3-clause BSD license. + + - Strongtalk assembler, the basis of the files assembler-arm-inl.h, + assembler-arm.cc, assembler-arm.h, assembler-ia32-inl.h, + assembler-ia32.cc, assembler-ia32.h, assembler-x64-inl.h, + assembler-x64.cc, assembler-x64.h, assembler-mips-inl.h, + assembler-mips.cc, assembler-mips.h, assembler.cc and assembler.h. + This code is copyrighted by Sun Microsystems Inc. and released + under a 3-clause BSD license. + + - Valgrind client API header, located at third_party/valgrind/valgrind.h + This is release under the BSD license. + +These libraries have their own licenses; we recommend you read them, +as their terms may differ from the terms below. + +Further license information can be found in LICENSE files located in +sub-directories. + +Copyright 2014, the V8 project authors. All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +======================================================================== + +fdlibm + +Copyright (C) 1993-2004 by Sun Microsystems, Inc. All rights reserved. + +Developed at SunSoft, a Sun Microsystems, Inc. business. +Permission to use, copy, modify, and distribute this +software is freely granted, provided that this notice +is preserved. + +======================================================================== + +Strongtalk + +Copyright (c) 1994-2006 Sun Microsystems Inc. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +- Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. + +- Redistribution in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +- Neither the name of Sun Microsystems or the names of contributors may +be used to endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The original source code covered by the above license above has been +modified significantly by Google Inc. +Copyright 2006-2008 the V8 project authors. All rights reserved. + +======================================================================== + +valgrind + +---------------------------------------------------------------- + +Notice that the following BSD-style license applies to this one +file (valgrind.h) only. The rest of Valgrind is licensed under the +terms of the GNU General Public License, version 2, unless +otherwise indicated. See the COPYING file in the source +distribution for details. + +---------------------------------------------------------------- + +This file is part of Valgrind, a dynamic binary instrumentation +framework. + +Copyright (C) 2000-2007 Julian Seward. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + +3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + +4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +============================================================ +Notices for file(s): +/framework/org-netbeans-api-visual.jar +/framework/org-openide-util.jar +------------------------------------------------------------ +The GNU General Public License (GPL) Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. + +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + +Preamble + +The licenses for most software are designed to take away +your freedom to share and change it. By contrast, the GNU +General Public License is intended to guarantee your freedom +to share and change free software--to make sure the software +is free for all its users. This General Public License +applies to most of the Free Software Foundation's software +and to any other program whose authors commit to using it. +(Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can +apply it to your programs, too. When we speak of free +software, we are referring to freedom, not price. Our +General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and +charge for this service if you wish), that you receive +source code or can get it if you want it, that you can +change the software or use pieces of it in new free +programs; and that you know you can do these things. To +protect your rights, we need to make restrictions that +forbid anyone to deny you these rights or to ask you to +surrender the rights. These restrictions translate to +certain responsibilities for you if you distribute copies of +the software, or if you modify it. + +For example, if you distribute copies of such a program, +whether gratis or for a fee, you must give the recipients +all the rights that you have. You must make sure that they, +too, receive or can get the source code. And you must show +them these terms so they know their rights. + +We protect your rights with two steps: (1) copyright the +software, and (2) offer you this license which gives you +legal permission to copy, distribute and/or modify the +software. + +Also, for each author's protection and ours, we want to make +certain that everyone understands that there is no warranty +for this free software. If the software is modified by +someone else and passed on, we want its recipients to know +that what they have is not the original, so that any +problems introduced by others will not reflect on the +original authors' reputations. + +Finally, any free program is threatened constantly by +software patents. We wish to avoid the danger that +redistributors of a free program will individually obtain +patent licenses, in effect making the program proprietary. +To prevent this, we have made it clear that any patent must +be licensed for everyone's free use or not licensed at all. + +The precise terms and conditions for copying, distribution +and modification follow. + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND +MODIFICATION + +0. This License applies to any program or other work which +contains a notice placed by the copyright holder saying it +may be distributed under the terms of this General Public +License. The "Program", below, refers to any such program or +work, and a "work based on the Program" means either the +Program or any derivative work under copyright law: that is +to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into +another language. (Hereinafter, translation is included +without limitation in the term "modification".) Each +licensee is addressed as "you". + +Activities other than copying, distribution and modification +are not covered by this License; they are outside its scope. +The act of running the Program is not restricted, and the +output from the Program is covered only if its contents +constitute a work based on the Program (independent of +having been made by running the Program). Whether that is +true depends on what the Program does. + +1. You may copy and distribute verbatim copies of the +Program's source code as you receive it, in any medium, +provided that you conspicuously and appropriately publish on +each copy an appropriate copyright notice and disclaimer of +warranty; keep intact all the notices that refer to this +License and to the absence of any warranty; and give any +other recipients of the Program a copy of this License along +with the Program. + +You may charge a fee for the physical act of transferring a +copy, and you may at your option offer warranty protection +in exchange for a fee. + +2. You may modify your copy or copies of the Program or any +portion of it, thus forming a work based on the Program, and +copy and distribute such modifications or work under the +terms of Section 1 above, provided that you also meet all of +these conditions: + +a) You must cause the modified files to carry prominent +notices stating that you changed the files and the date of +any change. + +b) You must cause any work that you distribute or publish, +that in whole or in part contains or is derived from the +Program or any part thereof, to be licensed as a whole at no +charge to all third parties under the terms of this License. + +c) If the modified program normally reads commands +interactively when run, you must cause it, when started +running for such interactive use in the most ordinary way, +to print or display an announcement including an appropriate +copyright notice and a notice that there is no warranty (or +else, saying that you provide a warranty) and that users may +redistribute the program under these conditions, and telling +the user how to view a copy of this License. (Exception: if +the Program itself is interactive but does not normally +print such an announcement, your work based on the Program +is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the +Program, and can be reasonably considered independent and +separate works in themselves, then this License, and its +terms, do not apply to those sections when you distribute +them as separate works. But when you distribute the same +sections as part of a whole which is a work based on the +Program, the distribution of the whole must be on the terms +of this License, whose permissions for other licensees +extend to the entire whole, and thus to each and every part +regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights +or contest your rights to work written entirely by you; +rather, the intent is to exercise the right to control the +distribution of derivative or collective works based on the +Program. In addition, mere aggregation of another work not +based on the Program with the Program (or with a work based +on the Program) on a volume of a storage or distribution +medium does not bring the other work under the scope of this +License. + +3. You may copy and distribute the Program (or a work based +on it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you +also do one of the following: + +a) Accompany it with the complete corresponding +machine-readable source code, which must be distributed +under the terms of Sections 1 and 2 above on a medium +customarily used for software interchange; or, + +b) Accompany it with a written offer, valid for at least +three years, to give any third party, for a charge no more +than your cost of physically performing source distribution, +a complete machine-readable copy of the corresponding source +code, to be distributed under the terms of Sections 1 and 2 +above on a medium customarily used for software interchange; +or, + +c) Accompany it with the information you received as to the +offer to distribute corresponding source code. (This +alternative is allowed only for noncommercial distribution +and only if you received the program in object code or +executable form with such an offer, in accord with +Subsection b above.) + +The source code for a work means the preferred form of the +work for making modifications to it. For an executable work, +complete source code means all the source code for all +modules it contains, plus any associated interface +definition files, plus the scripts used to control +compilation and installation of the executable. However, as +a special exception, the source code distributed need not +include anything that is normally distributed (in either +source or binary form) with the major components (compiler, +kernel, and so on) of the operating system on which the +executable runs, unless that component itself accompanies +the executable. If distribution of executable or object code +is made by offering access to copy from a designated place, +then offering equivalent access to copy the source code from +the same place counts as distribution of the source code, +even though third parties are not compelled to copy the +source along with the object code. + +4. You may not copy, modify, sublicense, or distribute the +Program except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense or distribute +the Program is void, and will automatically terminate your +rights under this License. However, parties who have +received copies, or rights, from you under this License will +not have their licenses terminated so long as such parties +remain in full compliance. + +5. You are not required to accept this License, since you +have not signed it. However, nothing else grants you +permission to modify or distribute the Program or its +derivative works. These actions are prohibited by law if you +do not accept this License. Therefore, by modifying or +distributing the Program (or any work based on the Program), +you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or +modifying the Program or works based on it. + +6. Each time you redistribute the Program (or any work based +on the Program), the recipient automatically receives a +license from the original licensor to copy, distribute or +modify the Program subject to these terms and conditions. +You may not impose any further restrictions on the +recipients' exercise of the rights granted herein. You are +not responsible for enforcing compliance by third parties to +this License. + +7. If, as a consequence of a court judgment or allegation of +patent infringement or for any other reason (not limited to +patent issues), conditions are imposed on you (whether by +court order, agreement or otherwise) that contradict the +conditions of this License, they do not excuse you from the +conditions of this License. If you cannot distribute so as +to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a +consequence you may not distribute the Program at all. For +example, if a patent license would not permit royalty-free +redistribution of the Program by all those who receive +copies directly or indirectly through you, then the only way +you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or +unenforceable under any particular circumstance, the balance +of the section is intended to apply and the section as a +whole is intended to apply in other circumstances. It is not +the purpose of this section to induce you to infringe any +patents or other property right claims or to contest +validity of any such claims; this section has the sole +purpose of protecting the integrity of the free software +distribution system, which is implemented by public license +practices. Many people have made generous contributions to +the wide range of software distributed through that system +in reliance on consistent application of that system; it is +up to the author/donor to decide if he or she is willing to +distribute software through any other system and a licensee +cannot impose that choice. + +This section is intended to make thoroughly clear what is +believed to be a consequence of the rest of this License. + +8. If the distribution and/or use of the Program is +restricted in certain countries either by patents or by +copyrighted interfaces, the original copyright holder who +places the Program under this License may add an explicit +geographical distribution limitation excluding those +countries, so that distribution is permitted only in or +among countries not thus excluded. In such case, this +License incorporates the limitation as if written in the +body of this License. + +9. The Free Software Foundation may publish revised and/or +new versions of the General Public License from time to +time. Such new versions will be similar in spirit to the +present version, but may differ in detail to address new +problems or concerns. + +Each version is given a distinguishing version number. If +the Program specifies a version number of this License which +applies to it and "any later version", you have the option +of following the terms and conditions either of that version +or of any later version published by the Free Software +Foundation. If the Program does not specify a version number +of this License, you may choose any version ever published +by the Free Software Foundation. + +10. If you wish to incorporate parts of the Program into +other free programs whose distribution conditions are +different, write to the author to ask for permission. For +software which is copyrighted by the Free Software +Foundation, write to the Free Software Foundation; we +sometimes make exceptions for this. Our decision will be +guided by the two goals of preserving the free status of all +derivatives of our free software and of promoting the +sharing and reuse of software generally. + +NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS +NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE +COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM +"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR +IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE +OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE +DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED +TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY +WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED +ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, +SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF +THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT +LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR +LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE +PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH +HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the +greatest possible use to the public, the best way to achieve +this is to make it free software which everyone can +redistribute and change under these terms. + +To do so, attach the following notices to the program. It is +safest to attach them to the start of each source file to +most effectively convey the exclusion of warranty; and each +file should have at least the "copyright" line and a pointer +to where the full notice is found. + +One line to give the program's name and a brief idea of what +it does. + +Copyright (C) <year> <name of author> +This program is free software; you can redistribute it +and/or modify it under the terms of the GNU General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later +version. This program is distributed in the hope that it +will be useful, but WITHOUT ANY WARRANTY; without even the +implied warranty of MERCHANTABILITY or FITNESS FOR A +PARTICULAR PURPOSE. See the GNU General Public License for +more details. You should have received a copy of the GNU +General Public License along with this program; if not, +write to the Free Software Foundation, Inc., 59 Temple +Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and +paper mail. If the program is interactive, make it output a +short notice like this when it starts in an interactive +mode: + +Gnomovision version 69, Copyright (C) year name of author +Gnomovision comes with ABSOLUTELY NO WARRANTY; for details +type `show w'. This is free software, and you are welcome to +redistribute it under certain conditions; type `show c' for +details. The hypothetical commands `show w' and `show c' +should show the appropriate parts of the General Public +License. Of course, the commands you use may be called +something other than `show w' and `show c'; they could even +be mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a +programmer) or your school, if any, to sign a "copyright +disclaimer" for the program, if necessary. Here is a sample; +alter the names: + +Yoyodyne, Inc., hereby disclaims all copyright interest in +the program `Gnomovision' (which makes passes at compilers) +written by James Hacker. + +signature of Ty Coon, 1 April 1989 +Ty Coon, President of Vice +This General Public License does not permit incorporating +your program into proprietary programs. If your program is a +subroutine library, you may consider it more useful to +permit linking proprietary applications with the library. If +this is what you want to do, use the GNU Library General +Public License instead of this License. + +"CLASSPATH" EXCEPTION TO THE GPL VERSION 2 + +Certain source files distributed by Sun Microsystems, Inc. +are subject to the following clarification and special +exception to the GPL Version 2, but only where Sun has +expressly included in the particular source file's header +the words "Sun designates this particular file as subject +to the "Classpath" exception as provided by Sun in the +License file that accompanied this code." + + Linking this library statically or dynamically with other +modules is making a combined work based on this library. +Thus, the terms and conditions of the GNU General Public +License Version 2 cover the whole combination. + + As a special exception, the copyright holders of this +library give you permission to link this library with +independent modules to produce an executable, regardless of +the license terms of these independent modules, and to copy +and distribute the resulting executable under terms of your +choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license +of that module. An independent module is a module which is +not derived from or based on this library. If you modify +this library, you may extend this exception to your version +of the library, but you are not obligated to do so. If you +do not wish to do so, delete this exception statement from +your version. +============================================================ +Notices for file(s): +/lib/libopenjdkjvm.so +/lib/libopenjdkjvmd.so +/lib64/libopenjdkjvm.so +/lib64/libopenjdkjvmd.so +------------------------------------------------------------ +Copyright (C) 2014 The Android Open Source Project +DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + +This file implements interfaces from the file jvm.h. This implementation +is licensed under the same terms as the file jvm.h. The +copyright and license information for the file jvm.h follows. + +Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. +DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + +This code is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License version 2 only, as +published by the Free Software Foundation. Oracle designates this +particular file as subject to the "Classpath" exception as provided +by Oracle in the LICENSE file that accompanied this code. + +This code is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +version 2 for more details (a copy is included in the LICENSE file that +accompanied this code). + +You should have received a copy of the GNU General Public License version +2 along with this work; if not, write to the Free Software Foundation, +Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + +Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +or visit www.oracle.com if you need additional information or have any +questions. + +============================================================ +Notices for file(s): +/bin/mdnsd +/lib/libmdnssd.a +/lib64/libmdnssd.a +------------------------------------------------------------ +The majority of the source code in the mDNSResponder project is licensed +under the terms of the Apache License, Version 2.0, available from: + <http://www.apache.org/licenses/LICENSE-2.0> + +To accommodate license compatibility with the widest possible range +of client code licenses, the shared library code, which is linked +at runtime into the same address space as the client using it, is +licensed under the terms of the "Three-Clause BSD License". + +The Linux Name Service Switch code, contributed by National ICT +Australia Ltd (NICTA) is licensed under the terms of the NICTA Public +Software Licence (which is substantially similar to the "Three-Clause +BSD License", with some additional language pertaining to Australian law). + +============================================================ +Notices for file(s): +/bin/fsck.f2fs +/bin/make_f2fs +/lib/libf2fs_fmt_host.a +/lib64/libf2fs_fmt_host.a +/lib64/libf2fs_fmt_host_dyn.so +------------------------------------------------------------ +The tools for F2FS are covered by GNU Public License version 2. +Exceptionally, the following files are also covered by the GNU Lesser General +Public License Version 2.1 as the dual licenses. +- include/f2fs_fs.h +- lib/libf2fs.c +- lib/libf2fs_io.c +- mkfs/f2fs_format.c +- mkfs/f2fs_format_main.c +- mkfs/f2fs_format_utils.c +- mkfs/f2fs_format_utils.h + +================================================================================ +Copyright (c) 2012 Samsung Electronics Co., Ltd. + http://www.samsung.com/ + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License version 2 as +published by the Free Software Foundation. + +================================================================================ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. + +================================================================================ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + <one line to give the library's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + <signature of Ty Coon>, 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + +============================================================ +Notices for file(s): +/bin/fc_sort +------------------------------------------------------------ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. + +============================================================ +Notices for file(s): +/bin/assemble_vintf +/framework/guavalib.jar +/framework/jarjar.jar +/framework/jsilver.jar +/lib64/libhidl-gen-hash.so +/lib64/libvintf.so +------------------------------------------------------------ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +============================================================ +Notices for file(s): +/lib64/libcap.so +------------------------------------------------------------ +Unless otherwise *explicitly* stated, the following text describes the +licensed conditions under which the contents of this libcap release +may be used and distributed: + +------------------------------------------------------------------------- +Redistribution and use in source and binary forms of libcap, with +or without modification, are permitted provided that the following +conditions are met: + +1. Redistributions of source code must retain any existing copyright + notice, and this entire permission notice in its entirety, + including the disclaimer of warranties. + +2. Redistributions in binary form must reproduce all prior and current + copyright notices, this list of conditions, and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + +3. The name of any author may not be used to endorse or promote + products derived from this software without their specific prior + written permission. + +ALTERNATIVELY, this product may be distributed under the terms of the +GNU General Public License (v2.0 - see below), in which case the +provisions of the GNU GPL are required INSTEAD OF the above +restrictions. (This clause is necessary due to a potential conflict +between the GNU GPL and the restrictions contained in a BSD-style +copyright.) + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR +TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. +------------------------------------------------------------------------- + +------------------------- +Full text of gpl-2.0.txt: +------------------------- + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. + +============================================================ +Notices for file(s): +/lib/libunwind.so +/lib64/libunwind.so +------------------------------------------------------------ +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +============================================================ +Notices for file(s): +/lib/libopenjdkjvmti.so +/lib/libopenjdkjvmtid.so +/lib64/libopenjdkjvmti.so +/lib64/libopenjdkjvmtid.so +------------------------------------------------------------ +Copyright (C) 2016 The Android Open Source Project +DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + +This file implements interfaces from the file jvmti.h. This implementation +is licensed under the same terms as the file jvmti.h. The +copyright and license information for the file jvmti.h follows. + +Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. +DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + +This code is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License version 2 only, as +published by the Free Software Foundation. Oracle designates this +particular file as subject to the "Classpath" exception as provided +by Oracle in the LICENSE file that accompanied this code. + +This code is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +version 2 for more details (a copy is included in the LICENSE file that +accompanied this code). + +You should have received a copy of the GNU General Public License version +2 along with this work; if not, write to the Free Software Foundation, +Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + +Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +or visit www.oracle.com if you need additional information or have any +questions. + +============================================================ +Notices for file(s): +/framework/commons-compress-1.0.jar +------------------------------------------------------------ +Apache Commons Compress +Copyright 2002-2009 The Apache Software Foundation + +This product includes software developed by +The Apache Software Foundation (http://www.apache.org/). + +Original BZip2 classes contributed by Keiron Liddle +<keiron@aftexsw.com>, Aftex Software to the Apache Ant project + +Original Tar classes from contributors of the Apache Ant project + +Original Zip classes from contributors of the Apache Ant project + +Original CPIO classes contributed by Markus Kuss and the jRPM project +(jrpm.sourceforge.net) + +============================================================ +Notices for file(s): +/bin/sgdisk +------------------------------------------------------------ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. + +============================================================ +Notices for file(s): +/bin/sqlite3 +/lib/libsqlite.so +/lib64/libsqlite.so +------------------------------------------------------------ +2001 September 15 + +The author disclaims copyright to this source code. In place of +a legal notice, here is a blessing: + + May you do good and not evil. + May you find forgiveness for yourself and forgive others. + May you share freely, never taking more than you give. + + +============================================================ +Notices for file(s): +/framework/conscrypt.jar +/lib/libconscrypt_openjdk_jni.so +/lib/libjavacrypto.so +/lib64/libconscrypt_openjdk_jni.so +/lib64/libjavacrypto.so +------------------------------------------------------------ +Copyright 2016 The Android Open Source Project + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +----------------------------------------------------------------------- +This product contains a modified portion of `Netty`, a configurable network +stack in Java, which can be obtained at: + + * LICENSE: + * licenses/LICENSE.netty.txt (Apache License 2.0) + * HOMEPAGE: + * http://netty.io/ + +This product contains a modified portion of `Apache Harmony`, modular Java runtime, +which can be obtained at: + + * LICENSE: + * licenses/LICENSE.harmony.txt (Apache License 2.0) + * HOMEPAGE: + * https://harmony.apache.org/ + +============================================================ +Notices for file(s): +/lib64/libplatformprotos.so +------------------------------------------------------------ + ========================================================================= + == NOTICE file corresponding to the section 4 d of == + == the Apache License, Version 2.0, == + == in this case for the Android-specific code. == + ========================================================================= + +Android Code +Copyright 2005-2008 The Android Open Source Project + +This product includes software developed as part of +The Android Open Source Project (http://source.android.com). + + ========================================================================= + == NOTICE file corresponding to the section 4 d of == + == the Apache License, Version 2.0, == + == in this case for Apache Commons code. == + ========================================================================= + +Apache Commons +Copyright 1999-2006 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + + ========================================================================= + == NOTICE file corresponding to the section 4 d of == + == the Apache License, Version 2.0, == + == in this case for Jakarta Commons Logging. == + ========================================================================= + +Jakarta Commons Logging (JCL) +Copyright 2005,2006 The Apache Software Foundation. + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + + ========================================================================= + == NOTICE file corresponding to the section 4 d of == + == the Apache License, Version 2.0, == + == in this case for the Nuance code. == + ========================================================================= + +These files are Copyright 2007 Nuance Communications, but released under +the Apache2 License. + + ========================================================================= + == NOTICE file corresponding to the section 4 d of == + == the Apache License, Version 2.0, == + == in this case for the Media Codecs code. == + ========================================================================= + +Media Codecs +These files are Copyright 1998 - 2009 PacketVideo, but released under +the Apache2 License. + + ========================================================================= + == NOTICE file corresponding to the section 4 d of == + == the Apache License, Version 2.0, == + == in this case for the mDnsResponder code. == + ========================================================================= + +mDnsResponder TXTRecord +This file is Copyright 2004 Apple Computer, Inc. but released under +the Apache2 License. + + + ========================================================================= + == NOTICE file corresponding to the section 4 d of == + == the Apache License, Version 2.0, == + == in this case for the TagSoup code. == + ========================================================================= + +This file is part of TagSoup and is Copyright 2002-2008 by John Cowan. + +TagSoup is licensed under the Apache License, +Version 2.0. You may obtain a copy of this license at +http://www.apache.org/licenses/LICENSE-2.0 . You may also have +additional legal rights not granted by this license. + +TagSoup is distributed in the hope that it will be useful, but +unless required by applicable law or agreed to in writing, TagSoup +is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS +OF ANY KIND, either express or implied; not even the implied warranty +of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + ========================================================================= + == NOTICE file corresponding to the section 4 d of == + == the Apache License, Version 2.0, == + == in this case for Additional Codecs code. == + ========================================================================= + +Additional Codecs +These files are Copyright 2003-2010 VisualOn, but released under +the Apache2 License. + + ========================================================================= + == NOTICE file corresponding to the section 4 d of == + == the Apache License, Version 2.0, == + == in this case for the Audio Effects code. == + ========================================================================= + +Audio Effects +These files are Copyright (C) 2004-2010 NXP Software and +Copyright (C) 2010 The Android Open Source Project, but released under +the Apache2 License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + + +UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE + +Unicode Data Files include all data files under the directories +http://www.unicode.org/Public/, http://www.unicode.org/reports/, +and http://www.unicode.org/cldr/data/ . Unicode Software includes any +source code published in the Unicode Standard or under the directories +http://www.unicode.org/Public/, http://www.unicode.org/reports/, and +http://www.unicode.org/cldr/data/. + +NOTICE TO USER: Carefully read the following legal agreement. BY +DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA +FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY +ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF +THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, +DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE. + +COPYRIGHT AND PERMISSION NOTICE + +Copyright © 1991-2008 Unicode, Inc. All rights reserved. Distributed +under the Terms of Use in http://www.unicode.org/copyright.html. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Unicode data files and any associated documentation (the +"Data Files") or Unicode software and any associated documentation (the +"Software") to deal in the Data Files or Software without restriction, +including without limitation the rights to use, copy, modify, merge, +publish, distribute, and/or sell copies of the Data Files or Software, +and to permit persons to whom the Data Files or Software are furnished to +do so, provided that (a) the above copyright notice(s) and this permission +notice appear with all copies of the Data Files or Software, (b) both the +above copyright notice(s) and this permission notice appear in associated +documentation, and (c) there is clear notice in each modified Data File +or in the Software as well as in the documentation associated with the +Data File(s) or Software that the data or software has been modified. + +THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS +INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT +OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE +OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. + +Except as contained in this notice, the name of a copyright holder +shall not be used in advertising or otherwise to promote the sale, use +or other dealings in these Data Files or Software without prior written +authorization of the copyright holder. + +============================================================ +Notices for file(s): +/bin/adb +/lib/libdiagnose_usb.a +/lib64/libadb.a +/lib64/libdiagnose_usb.a +------------------------------------------------------------ + + Copyright (c) 2006-2009, The Android Open Source Project + Copyright 2006, Brian Swetland <swetland@frotz.net> + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +------------------------------------------------------------ +libwinpthread license: +------------------------------------------------------------ +Copyright (c) 2011 mingw-w64 project + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + + +/* + * Parts of this library are derived by: + * + * Posix Threads library for Microsoft Windows + * + * Use at own risk, there is no implied warranty to this code. + * It uses undocumented features of Microsoft Windows that can change + * at any time in the future. + * + * (C) 2010 Lockless Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of Lockless Inc. nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AN + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +============================================================ +Notices for file(s): +/bin/llvm-rs-cc +------------------------------------------------------------ +========================= +NOTICE file for slang.git +========================= + + Copyright (c) 2005-2011, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + + +=========================================== +NOTICE file for external/clang (clang.git). +Note: libclang*.a are statically linked. +=========================================== + +============================================================================== +LLVM Release License +============================================================================== +University of Illinois/NCSA +Open Source License + +Copyright (c) 2007-2011 University of Illinois at Urbana-Champaign. +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + +============================================================================== +The LLVM software contains code written by third parties. Such software will +have its own individual LICENSE.TXT file in the directory in which it appears. +This file will describe the copyrights, license, and restrictions which apply +to that code. + +The disclaimer of warranty in the University of Illinois Open Source License +applies to all code in the LLVM Distribution, and nothing in any of the +other licenses gives permission to use the names of the LLVM Team or the +University of Illinois to endorse or promote products derived from this +Software. + +The following pieces of software have additional or alternate copyrights, +licenses, and/or restrictions: + +Program Directory +------- --------- +<none yet> + + + +========================================= +NOTICE file for external/llvm (llvm.git). +Note: libLLVM*.a are statically linked. +========================================= + +============================================================================== +LLVM Release License +============================================================================== +University of Illinois/NCSA +Open Source License + +Copyright (c) 2003-2011 University of Illinois at Urbana-Champaign. +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + +============================================================================== +Copyrights and Licenses for Third Party Software Distributed with LLVM: +============================================================================== +The LLVM software contains code written by third parties. Such software will +have its own individual LICENSE.TXT file in the directory in which it appears. +This file will describe the copyrights, license, and restrictions which apply +to that code. + +The disclaimer of warranty in the University of Illinois Open Source License +applies to all code in the LLVM Distribution, and nothing in any of the +other licenses gives permission to use the names of the LLVM Team or the +University of Illinois to endorse or promote products derived from this +Software. + +The following pieces of software have additional or alternate copyrights, +licenses, and/or restrictions: + +Program Directory +------- --------- +Autoconf llvm/autoconf + llvm/projects/ModuleMaker/autoconf + llvm/projects/sample/autoconf +CellSPU backend llvm/lib/Target/CellSPU/README.txt +Google Test llvm/utils/unittest/googletest +OpenBSD regex llvm/lib/Support/{reg*, COPYRIGHT.regex} + +============================================================ +Notices for file(s): +/bin/aapt +/bin/aidl +/bin/dexdump +/bin/dx +/framework/dx.jar +/lib/libaapt.a +/lib/libandroidfw.a +/lib/libcutils.a +/lib/libcutils.so +/lib/libnativehelper.so +/lib/libutils.a +/lib64/libaapt.a +/lib64/libandroidfw.a +/lib64/libcutils.a +/lib64/libcutils.so +/lib64/libnativehelper.so +/lib64/libutils.a +------------------------------------------------------------ + + Copyright (c) 2005-2008, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + +============================================================ +Notices for file(s): +/lib/libjavacore.so +/lib/libopenjdk.so +/lib/libopenjdkd.so +/lib64/libjavacore.so +/lib64/libopenjdk.so +/lib64/libopenjdkd.so +------------------------------------------------------------ + ========================================================================= + == NOTICE file corresponding to the section 4 d of == + == the Apache License, Version 2.0, == + == in this case for the Android-specific code. == + ========================================================================= + +Android Code +Copyright 2005-2008 The Android Open Source Project + +This product includes software developed as part of +The Android Open Source Project (http://source.android.com). + + ========================================================================= + == NOTICE file corresponding to the section 4 d of == + == the Apache License, Version 2.0, == + == in this case for the Apache Harmony distribution. == + ========================================================================= + +Apache Harmony +Copyright 2006 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +Portions of Harmony were originally developed by +Intel Corporation and are licensed to the Apache Software +Foundation under the "Software Grant and Corporate Contribution +License Agreement", informally known as the "Intel Harmony CLA". + + + ========================================================================= + == NOTICE file for the ICU License. == + ========================================================================= + +Copyright (c) 1995-2014 International Business Machines Corporation and others + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, and/or sell copies of the Software, and to permit persons +to whom the Software is furnished to do so, provided that the above +copyright notice(s) and this permission notice appear in all copies of +the Software and that both the above copyright notice(s) and this +permission notice appear in supporting documentation. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY +SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER +RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF +CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Except as contained in this notice, the name of a copyright holder +shall not be used in advertising or otherwise to promote the sale, use +or other dealings in this Software without prior written authorization +of the copyright holder. + +All trademarks and registered trademarks mentioned herein are the +property of their respective owners. + + + ========================================================================= + == NOTICE file for the KXML License. == + ========================================================================= + +Copyright (c) 2002,2003, Stefan Haustein, Oberhausen, Rhld., Germany + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + ========================================================================= + == NOTICE file for the W3C License. == + ========================================================================= + +Copyright (c) 2000 World Wide Web Consortium, (Massachusetts Institute +of Technology, Institut National de Recherche en Informatique et en +Automatique, Keio University). All Rights Reserved. This program is +distributed under the W3C's Software Intellectual Property License. +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See W3C License http://www.w3.org/Consortium/Legal/ for more details. + + ========================================================================= + == NOTICE file for the fdlibm License. == + ========================================================================= + +Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + +Developed at SunSoft, a Sun Microsystems, Inc. business. +Permission to use, copy, modify, and distribute this +software is freely granted, provided that this notice +is preserved. + +============================================================ +Notices for file(s): +/lib/libexpat-host.so +/lib/libexpat.a +/lib64/libexpat-host.so +/lib64/libexpat.a +------------------------------------------------------------ +Copyright (c) 1998-2000 Thai Open Source Software Center Ltd and Clark Cooper +Copyright (c) 2001-2016 Expat maintainers + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +============================================================ +Notices for file(s): +/framework/doclava.jar +------------------------------------------------------------ + + Copyright (C) 2010 Google Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +====================================================================== + +jQuery 1.2.6 - New Wave Javascript + +Copyright (c) 2008 John Resig (jquery.com) +Dual licensed under the MIT (MIT-LICENSE.txt) +and GPL (GPL-LICENSE.txt) licenses. + +Copyright (c) 2009 John Resig, http://jquery.com/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +============================================================ +Notices for file(s): +/bin/minigzip +/lib/libz-host.so +/lib/libz.a +/lib64/libz-host.so +/lib64/libz.a +------------------------------------------------------------ + (C) 1995-2017 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + +============================================================ +Notices for file(s): +/bin/aprotoc +/framework/host-libprotobuf-java-full.jar +/framework/host-libprotobuf-java-lite.jar +/lib64/libprotobuf-cpp-full.so +/lib64/libprotobuf-cpp-lite.so +/lib64/libprotoc.so +------------------------------------------------------------ +Copyright 2008, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Code generated by the Protocol Buffer compiler is owned by the owner +of the input file used when generating it. This code is not +standalone and requires a support library to be linked with it. This +support library is itself covered by the above license. + +============================================================ +Notices for file(s): +/bin/memory_replay +/nativetest/memory_replay_tests/memory_replay_tests32 +/nativetest64/memory_replay_tests/memory_replay_tests64 +------------------------------------------------------------ + + Copyright (c) 2015, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + +============================================================ +Notices for file(s): +/bin/blk_alloc_to_base_fs +/bin/make_ext4fs +/bin/mkuserimg_mke2fs.sh +/lib/libext4_utils.a +/lib/libf2fs_dlutils_host.a +/lib/libf2fs_ioutils_host.a +/lib/libf2fs_utils_host.a +/lib64/libext4_utils.a +/lib64/libext4_utils.so +/lib64/libf2fs_dlutils_host.a +/lib64/libf2fs_ioutils_host.a +/lib64/libf2fs_utils_host.a +------------------------------------------------------------ + + Copyright (c) 2010, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + +============================================================ +Notices for file(s): +/framework/emmalib.jar +------------------------------------------------------------ +Common Public License - v 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S +ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + + a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and + b) in the case of each subsequent Contributor: + + i) changes to the Program, and + + ii) additions to the Program; + + where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was +added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules +of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. + +"Program" means the Contributions distributed in accordance with this Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, including all Contributors. + +2. GRANT OF RIGHTS + + a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative +works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form. + + b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, +use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the +combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered +by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. + + c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the +Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other +entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole +responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the +Program, it is Recipient's responsibility to acquire that license before distributing the Program. + + d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this +Agreement. + +3. REQUIREMENTS + +A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: + + a) it complies with the terms and conditions of this Agreement; and + + b) its license agreement: + + i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, +and implied warranties or conditions of merchantability and fitness for a particular purpose; + + ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost +profits; + + iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and + + iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium +customarily used for software exchange. + +When the Program is made available in source code form: + + a) it must be made available under this Agreement; and + + b) a copy of this Agreement must be included with each copy of the Program. + +Contributors may not remove or alter any copyright notices contained within the Program. + +Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the +Contribution. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the +commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other +Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify +every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a +third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a +commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to +qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate +with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor +then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this +section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other +Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, +WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for +determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to +the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this +Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any +patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, if Recipient institutes +patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other +software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a +reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the +Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and +survive. + +Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following +manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the +right to modify this Agreement. IBM is the initial Agreement Steward. IBM may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new +version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under +which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new +version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, +whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal +action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. + +============================================================ +Notices for file(s): +/lib/libgtest_host.a +/lib/libgtest_main_host.a +/lib64/libgtest_host.a +/lib64/libgtest_main_host.a +------------------------------------------------------------ +Copyright 2008, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +============================================================ +Notices for file(s): +/lib/libc++.so +/lib/libc++_static.a +/lib64/libc++.so +/lib64/libc++_static.a +------------------------------------------------------------ +============================================================================== +libc++ License +============================================================================== + +The libc++ library is dual licensed under both the University of Illinois +"BSD-Like" license and the MIT license. As a user of this code you may choose +to use it under either license. As a contributor, you agree to allow your code +to be used under both. + +Full text of the relevant licenses is included below. + +============================================================================== + +University of Illinois/NCSA +Open Source License + +Copyright (c) 2009-2014 by the contributors listed in CREDITS.TXT + +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + +============================================================================== + +Copyright (c) 2009-2014 by the contributors listed in CREDITS.TXT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +============================================================ +Notices for file(s): +/lib64/libbz.so +------------------------------------------------------------ + +-------------------------------------------------------------------------- + +This program, "bzip2", the associated library "libbzip2", and all +documentation, are copyright (C) 1996-2010 Julian R Seward. All +rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + +3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + +4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Julian Seward, jseward@bzip.org +bzip2/libbzip2 version 1.0.6 of 6 September 2010 + +-------------------------------------------------------------------------- + +============================================================ +Notices for file(s): +/lib/libpcre2.a +/lib64/libpcre2.a +/lib64/libpcre2.so +------------------------------------------------------------ +PCRE LICENCE +------------ + +PCRE is a library of functions to support regular expressions whose syntax +and semantics are as close as possible to those of the Perl 5 language. + +Release 8 of PCRE is distributed under the terms of the "BSD" licence, as +specified below. The documentation for PCRE, supplied in the "doc" +directory, is distributed under the same terms as the software itself. + +The basic library functions are written in C and are freestanding. Also +included in the distribution is a set of C++ wrapper functions, and a +just-in-time compiler that can be used to optimize pattern matching. These +are both optional features that can be omitted when the library is built. + + +THE BASIC LIBRARY FUNCTIONS +--------------------------- + +Written by: Philip Hazel +Email local part: ph10 +Email domain: cam.ac.uk + +University of Cambridge Computing Service, +Cambridge, England. + +Copyright (c) 1997-2014 University of Cambridge +All rights reserved. + + +PCRE JUST-IN-TIME COMPILATION SUPPORT +------------------------------------- + +Written by: Zoltan Herczeg +Email local part: hzmester +Emain domain: freemail.hu + +Copyright(c) 2010-2014 Zoltan Herczeg +All rights reserved. + + +STACK-LESS JUST-IN-TIME COMPILER +-------------------------------- + +Written by: Zoltan Herczeg +Email local part: hzmester +Emain domain: freemail.hu + +Copyright(c) 2009-2014 Zoltan Herczeg +All rights reserved. + + +THE C++ WRAPPER FUNCTIONS +------------------------- + +Contributed by: Google Inc. + +Copyright (c) 2007-2012, Google Inc. +All rights reserved. + + +THE "BSD" LICENCE +----------------- + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the name of the University of Cambridge nor the name of Google + Inc. nor the names of their contributors may be used to endorse or + promote products derived from this software without specific prior + written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +End + +============================================================ +Notices for file(s): +/lib64/libtinyalsa.so +------------------------------------------------------------ +Copyright 2011, The Android Open Source Project + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Android Open Source Project nor the names of + its contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY The Android Open Source Project ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL The Android Open Source Project BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + + +============================================================ +Notices for file(s): +/lib/liblz4.so +/lib64/liblz4.so +------------------------------------------------------------ +LZ4 Library +Copyright (c) 2011-2016, Yann Collet +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +============================================================ +Notices for file(s): +/usr/share/zoneinfo/tzdata +------------------------------------------------------------ +With a few exceptions, all files in the tz code and data (including +this one) are in the public domain. The exceptions are date.c, +newstrftime.3, and strftime.c, which contain material derived from BSD +and which use the BSD 3-clause license. + +============================================================ +Notices for file(s): +/framework/bouncycastle.jar +------------------------------------------------------------ +Copyright (c) 2000-2015 The Legion of the Bouncy Castle Inc. (http://www.bouncycastle.org) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and +associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +============================================================ +Notices for file(s): +/lib/libcrypto-host.so +/lib/libcrypto.a +/lib/libssl-host.so +/lib64/libcrypto-host.so +/lib64/libcrypto.a +/lib64/libssl-host.so +------------------------------------------------------------ + + LICENSE ISSUES + ============== + + The OpenSSL toolkit stays under a dual license, i.e. both the conditions of + the OpenSSL License and the original SSLeay license apply to the toolkit. + See below for the actual license texts. Actually both licenses are BSD-style + Open Source licenses. In case of any license issues related to OpenSSL + please contact openssl-core@openssl.org. + + OpenSSL License + --------------- + +/* ==================================================================== + * Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + + Original SSLeay License + ----------------------- + +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + + +============================================================ +Notices for file(s): +/lib/libusb.a +/lib64/libusb.a +------------------------------------------------------------ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + <one line to give the library's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + <signature of Ty Coon>, 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + + diff --git a/love2dToAPK/tools/tools/adb/adb.exe b/love2dToAPK/tools/tools/adb/adb.exe new file mode 100644 index 0000000..322185c Binary files /dev/null and b/love2dToAPK/tools/tools/adb/adb.exe differ diff --git a/love2dToAPK/tools/tools/adb/api/annotations.zip b/love2dToAPK/tools/tools/adb/api/annotations.zip new file mode 100644 index 0000000..32bb74c Binary files /dev/null and b/love2dToAPK/tools/tools/adb/api/annotations.zip differ diff --git a/love2dToAPK/tools/tools/adb/api/api-versions.xml b/love2dToAPK/tools/tools/adb/api/api-versions.xml new file mode 100644 index 0000000..fc6841e --- /dev/null +++ b/love2dToAPK/tools/tools/adb/api/api-versions.xml @@ -0,0 +1,75120 @@ +<?xml version="1.0" encoding="utf-8"?> +<api version="2"> + <class name="android/Manifest" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/Manifest$permission" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="ACCESS_CHECKIN_PROPERTIES"/> + <field name="ACCESS_COARSE_LOCATION"/> + <field name="ACCESS_FINE_LOCATION"/> + <field name="ACCESS_LOCATION_EXTRA_COMMANDS"/> + <field name="ACCESS_MOCK_LOCATION" removed="23"/> + <field name="ACCESS_NETWORK_STATE"/> + <field name="ACCESS_NOTIFICATION_POLICY" since="23"/> + <field name="ACCESS_SURFACE_FLINGER" removed="23"/> + <field name="ACCESS_WIFI_STATE"/> + <field name="ACCOUNT_MANAGER" since="5"/> + <field name="ADD_SYSTEM_SERVICE" removed="4"/> + <field name="ADD_VOICEMAIL" since="14"/> + <field name="ANSWER_PHONE_CALLS" since="26"/> + <field name="AUTHENTICATE_ACCOUNTS" since="5" removed="23"/> + <field name="BATTERY_STATS"/> + <field name="BIND_ACCESSIBILITY_SERVICE" since="16"/> + <field name="BIND_APPWIDGET" since="3"/> + <field name="BIND_AUTOFILL_SERVICE" since="26"/> + <field name="BIND_CARRIER_MESSAGING_SERVICE" since="22" deprecated="23"/> + <field name="BIND_CARRIER_SERVICES" since="23"/> + <field name="BIND_CHOOSER_TARGET_SERVICE" since="23"/> + <field name="BIND_CONDITION_PROVIDER_SERVICE" since="24"/> + <field name="BIND_DEVICE_ADMIN" since="8"/> + <field name="BIND_DREAM_SERVICE" since="21"/> + <field name="BIND_INCALL_SERVICE" since="23"/> + <field name="BIND_INPUT_METHOD" since="3"/> + <field name="BIND_MIDI_DEVICE_SERVICE" since="23"/> + <field name="BIND_NFC_SERVICE" since="19"/> + <field name="BIND_NOTIFICATION_LISTENER_SERVICE" since="18"/> + <field name="BIND_PRINT_SERVICE" since="19"/> + <field name="BIND_QUICK_SETTINGS_TILE" since="24"/> + <field name="BIND_REMOTEVIEWS" since="11"/> + <field name="BIND_SCREENING_SERVICE" since="24"/> + <field name="BIND_TELECOM_CONNECTION_SERVICE" since="23"/> + <field name="BIND_TEXT_SERVICE" since="14"/> + <field name="BIND_TV_INPUT" since="21"/> + <field name="BIND_VISUAL_VOICEMAIL_SERVICE" since="26"/> + <field name="BIND_VOICE_INTERACTION" since="21"/> + <field name="BIND_VPN_SERVICE" since="14"/> + <field name="BIND_VR_LISTENER_SERVICE" since="24"/> + <field name="BIND_WALLPAPER" since="8"/> + <field name="BLUETOOTH"/> + <field name="BLUETOOTH_ADMIN"/> + <field name="BLUETOOTH_PRIVILEGED" since="19"/> + <field name="BODY_SENSORS" since="20"/> + <field name="BRICK" removed="23"/> + <field name="BROADCAST_PACKAGE_REMOVED"/> + <field name="BROADCAST_SMS" since="2"/> + <field name="BROADCAST_STICKY"/> + <field name="BROADCAST_WAP_PUSH" since="2"/> + <field name="CALL_PHONE"/> + <field name="CALL_PRIVILEGED"/> + <field name="CAMERA"/> + <field name="CAPTURE_AUDIO_OUTPUT" since="19"/> + <field name="CAPTURE_SECURE_VIDEO_OUTPUT" since="19"/> + <field name="CAPTURE_VIDEO_OUTPUT" since="19"/> + <field name="CHANGE_COMPONENT_ENABLED_STATE"/> + <field name="CHANGE_CONFIGURATION"/> + <field name="CHANGE_NETWORK_STATE"/> + <field name="CHANGE_WIFI_MULTICAST_STATE" since="4"/> + <field name="CHANGE_WIFI_STATE"/> + <field name="CLEAR_APP_CACHE"/> + <field name="CLEAR_APP_USER_DATA" removed="23"/> + <field name="CONTROL_LOCATION_UPDATES"/> + <field name="DELETE_CACHE_FILES"/> + <field name="DELETE_PACKAGES"/> + <field name="DEVICE_POWER" removed="23"/> + <field name="DIAGNOSTIC"/> + <field name="DISABLE_KEYGUARD"/> + <field name="DUMP"/> + <field name="EXPAND_STATUS_BAR"/> + <field name="FACTORY_TEST"/> + <field name="FLASHLIGHT" removed="24"/> + <field name="FORCE_BACK" removed="23"/> + <field name="FOTA_UPDATE" removed="4"/> + <field name="GET_ACCOUNTS"/> + <field name="GET_ACCOUNTS_PRIVILEGED" since="23"/> + <field name="GET_PACKAGE_SIZE"/> + <field name="GET_TASKS" deprecated="21"/> + <field name="GET_TOP_ACTIVITY_INFO" since="18" removed="23"/> + <field name="GLOBAL_SEARCH" since="4"/> + <field name="HARDWARE_TEST" removed="23"/> + <field name="INJECT_EVENTS" removed="23"/> + <field name="INSTALL_LOCATION_PROVIDER" since="4"/> + <field name="INSTALL_PACKAGES"/> + <field name="INSTALL_SHORTCUT" since="19"/> + <field name="INSTANT_APP_FOREGROUND_SERVICE" since="26"/> + <field name="INTERNAL_SYSTEM_WINDOW" removed="23"/> + <field name="INTERNET"/> + <field name="KILL_BACKGROUND_PROCESSES" since="8"/> + <field name="LOCATION_HARDWARE" since="18"/> + <field name="MANAGE_ACCOUNTS" since="5" removed="23"/> + <field name="MANAGE_APP_TOKENS" removed="23"/> + <field name="MANAGE_DOCUMENTS" since="19"/> + <field name="MANAGE_OWN_CALLS" since="26"/> + <field name="MASTER_CLEAR"/> + <field name="MEDIA_CONTENT_CONTROL" since="19"/> + <field name="MODIFY_AUDIO_SETTINGS"/> + <field name="MODIFY_PHONE_STATE"/> + <field name="MOUNT_FORMAT_FILESYSTEMS" since="3"/> + <field name="MOUNT_UNMOUNT_FILESYSTEMS"/> + <field name="NFC" since="9"/> + <field name="PACKAGE_USAGE_STATS" since="23"/> + <field name="PERSISTENT_ACTIVITY" deprecated="16"/> + <field name="PROCESS_OUTGOING_CALLS"/> + <field name="READ_CALENDAR"/> + <field name="READ_CALL_LOG" since="16"/> + <field name="READ_CONTACTS"/> + <field name="READ_EXTERNAL_STORAGE" since="16"/> + <field name="READ_FRAME_BUFFER"/> + <field name="READ_HISTORY_BOOKMARKS" since="4" removed="23"/> + <field name="READ_INPUT_STATE" deprecated="16"/> + <field name="READ_LOGS"/> + <field name="READ_OWNER_DATA" removed="9"/> + <field name="READ_PHONE_NUMBERS" since="26"/> + <field name="READ_PHONE_STATE"/> + <field name="READ_PROFILE" since="14" removed="23"/> + <field name="READ_SMS"/> + <field name="READ_SOCIAL_STREAM" since="15" deprecated="21" removed="23"/> + <field name="READ_SYNC_SETTINGS"/> + <field name="READ_SYNC_STATS"/> + <field name="READ_USER_DICTIONARY" since="16" removed="23"/> + <field name="READ_VOICEMAIL" since="21"/> + <field name="REBOOT"/> + <field name="RECEIVE_BOOT_COMPLETED"/> + <field name="RECEIVE_MMS"/> + <field name="RECEIVE_SMS"/> + <field name="RECEIVE_WAP_PUSH"/> + <field name="RECORD_AUDIO"/> + <field name="REORDER_TASKS"/> + <field name="REQUEST_COMPANION_RUN_IN_BACKGROUND" since="26"/> + <field name="REQUEST_COMPANION_USE_DATA_IN_BACKGROUND" since="26"/> + <field name="REQUEST_DELETE_PACKAGES" since="26"/> + <field name="REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" since="23"/> + <field name="REQUEST_INSTALL_PACKAGES" since="23"/> + <field name="RESTART_PACKAGES" deprecated="16"/> + <field name="SEND_EMBMS_INTENTS" since="27"/> + <field name="SEND_RESPOND_VIA_MESSAGE" since="18"/> + <field name="SEND_SMS"/> + <field name="SET_ACTIVITY_WATCHER" removed="23"/> + <field name="SET_ALARM" since="9"/> + <field name="SET_ALWAYS_FINISH"/> + <field name="SET_ANIMATION_SCALE"/> + <field name="SET_DEBUG_APP"/> + <field name="SET_ORIENTATION" removed="23"/> + <field name="SET_POINTER_SPEED" since="13" removed="23"/> + <field name="SET_PREFERRED_APPLICATIONS" deprecated="16"/> + <field name="SET_PROCESS_FOREGROUND" removed="4"/> + <field name="SET_PROCESS_LIMIT"/> + <field name="SET_TIME" since="8"/> + <field name="SET_TIME_ZONE"/> + <field name="SET_WALLPAPER"/> + <field name="SET_WALLPAPER_HINTS"/> + <field name="SIGNAL_PERSISTENT_PROCESSES"/> + <field name="STATUS_BAR"/> + <field name="SUBSCRIBED_FEEDS_READ" removed="23"/> + <field name="SUBSCRIBED_FEEDS_WRITE" removed="23"/> + <field name="SYSTEM_ALERT_WINDOW"/> + <field name="TRANSMIT_IR" since="19"/> + <field name="UNINSTALL_SHORTCUT" since="19"/> + <field name="UPDATE_DEVICE_STATS" since="3"/> + <field name="USE_CREDENTIALS" since="5" removed="23"/> + <field name="USE_FINGERPRINT" since="23"/> + <field name="USE_SIP" since="9"/> + <field name="VIBRATE"/> + <field name="WAKE_LOCK"/> + <field name="WRITE_APN_SETTINGS"/> + <field name="WRITE_CALENDAR"/> + <field name="WRITE_CALL_LOG" since="16"/> + <field name="WRITE_CONTACTS"/> + <field name="WRITE_EXTERNAL_STORAGE" since="4"/> + <field name="WRITE_GSERVICES"/> + <field name="WRITE_HISTORY_BOOKMARKS" since="4" removed="23"/> + <field name="WRITE_OWNER_DATA" removed="9"/> + <field name="WRITE_PROFILE" since="14" removed="23"/> + <field name="WRITE_SECURE_SETTINGS" since="3"/> + <field name="WRITE_SETTINGS"/> + <field name="WRITE_SMS" removed="23"/> + <field name="WRITE_SOCIAL_STREAM" since="15" deprecated="21" removed="23"/> + <field name="WRITE_SYNC_SETTINGS"/> + <field name="WRITE_USER_DICTIONARY" since="16" removed="23"/> + <field name="WRITE_VOICEMAIL" since="21"/> + </class> + <class name="android/Manifest$permission_group" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="ACCESSIBILITY_FEATURES" since="18" removed="23"/> + <field name="ACCOUNTS" removed="23"/> + <field name="AFFECTS_BATTERY" since="17" removed="23"/> + <field name="APP_INFO" since="17" removed="23"/> + <field name="AUDIO_SETTINGS" since="17" removed="23"/> + <field name="BLUETOOTH_NETWORK" since="17" removed="23"/> + <field name="BOOKMARKS" since="17" removed="23"/> + <field name="CALENDAR" since="17"/> + <field name="CAMERA" since="17"/> + <field name="CONTACTS" since="23"/> + <field name="COST_MONEY" removed="23"/> + <field name="DEVELOPMENT_TOOLS" removed="23"/> + <field name="DEVICE_ALARMS" since="17" removed="23"/> + <field name="DISPLAY" since="17" removed="23"/> + <field name="HARDWARE_CONTROLS" removed="23"/> + <field name="LOCATION"/> + <field name="MESSAGES" removed="23"/> + <field name="MICROPHONE" since="17"/> + <field name="NETWORK" removed="23"/> + <field name="PERSONAL_INFO" removed="23"/> + <field name="PHONE" since="23"/> + <field name="PHONE_CALLS" removed="23"/> + <field name="SCREENLOCK" since="17" removed="23"/> + <field name="SENSORS" since="23"/> + <field name="SMS" since="23"/> + <field name="SOCIAL_INFO" since="17" removed="23"/> + <field name="STATUS_BAR" since="17" removed="23"/> + <field name="STORAGE" since="4"/> + <field name="SYNC_SETTINGS" since="17" removed="23"/> + <field name="SYSTEM_CLOCK" since="17" removed="23"/> + <field name="SYSTEM_TOOLS" removed="23"/> + <field name="USER_DICTIONARY" since="17" removed="23"/> + <field name="VOICEMAIL" since="17" removed="23"/> + <field name="WALLPAPER" since="17" removed="23"/> + <field name="WRITE_USER_DICTIONARY" since="17" removed="23"/> + </class> + <class name="android/R" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/R$anim" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="accelerate_decelerate_interpolator"/> + <field name="accelerate_interpolator"/> + <field name="anticipate_interpolator" since="4"/> + <field name="anticipate_overshoot_interpolator" since="4"/> + <field name="bounce_interpolator" since="4"/> + <field name="cycle_interpolator" since="8"/> + <field name="decelerate_interpolator"/> + <field name="fade_in"/> + <field name="fade_out"/> + <field name="linear_interpolator" since="4"/> + <field name="overshoot_interpolator" since="4"/> + <field name="slide_in_left"/> + <field name="slide_out_right"/> + </class> + <class name="android/R$animator" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="fade_in"/> + <field name="fade_out"/> + </class> + <class name="android/R$array" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="emailAddressTypes"/> + <field name="imProtocols"/> + <field name="organizationTypes"/> + <field name="phoneTypes"/> + <field name="postalAddressTypes"/> + </class> + <class name="android/R$attr" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="absListViewStyle"/> + <field name="accessibilityEventTypes" since="14"/> + <field name="accessibilityFeedbackType" since="14"/> + <field name="accessibilityFlags" since="14"/> + <field name="accessibilityLiveRegion" since="19"/> + <field name="accessibilityTraversalAfter" since="22"/> + <field name="accessibilityTraversalBefore" since="22"/> + <field name="accountPreferences" since="5"/> + <field name="accountType" since="5"/> + <field name="action"/> + <field name="actionBarDivider" since="14"/> + <field name="actionBarItemBackground" since="14"/> + <field name="actionBarPopupTheme" since="21"/> + <field name="actionBarSize" since="11"/> + <field name="actionBarSplitStyle" since="14"/> + <field name="actionBarStyle" since="11"/> + <field name="actionBarTabBarStyle" since="11"/> + <field name="actionBarTabStyle" since="11"/> + <field name="actionBarTabTextStyle" since="11"/> + <field name="actionBarTheme" since="21"/> + <field name="actionBarWidgetTheme" since="14"/> + <field name="actionButtonStyle" since="11"/> + <field name="actionDropDownStyle" since="11"/> + <field name="actionLayout" since="11"/> + <field name="actionMenuTextAppearance" since="11"/> + <field name="actionMenuTextColor" since="11"/> + <field name="actionModeBackground" since="11"/> + <field name="actionModeCloseButtonStyle" since="11"/> + <field name="actionModeCloseDrawable" since="11"/> + <field name="actionModeCopyDrawable" since="11"/> + <field name="actionModeCutDrawable" since="11"/> + <field name="actionModeFindDrawable" since="21"/> + <field name="actionModePasteDrawable" since="11"/> + <field name="actionModeSelectAllDrawable" since="14"/> + <field name="actionModeShareDrawable" since="21"/> + <field name="actionModeSplitBackground" since="14"/> + <field name="actionModeStyle" since="14"/> + <field name="actionModeWebSearchDrawable" since="21"/> + <field name="actionOverflowButtonStyle" since="11"/> + <field name="actionOverflowMenuStyle" since="21"/> + <field name="actionProviderClass" since="14"/> + <field name="actionViewClass" since="11"/> + <field name="activatedBackgroundIndicator" since="11"/> + <field name="activityCloseEnterAnimation"/> + <field name="activityCloseExitAnimation"/> + <field name="activityOpenEnterAnimation"/> + <field name="activityOpenExitAnimation"/> + <field name="addPrintersActivity" since="19"/> + <field name="addStatesFromChildren"/> + <field name="adjustViewBounds"/> + <field name="advancedPrintOptionsActivity" since="19"/> + <field name="alertDialogIcon" since="11"/> + <field name="alertDialogStyle"/> + <field name="alertDialogTheme" since="11"/> + <field name="alignmentMode" since="14"/> + <field name="allContactsName" since="11"/> + <field name="allowBackup" since="4"/> + <field name="allowClearUserData"/> + <field name="allowEmbedded" since="20"/> + <field name="allowParallelSyncs" since="11"/> + <field name="allowSingleTap" since="3"/> + <field name="allowTaskReparenting"/> + <field name="allowUndo" since="23"/> + <field name="alpha" since="11"/> + <field name="alphabeticModifiers" since="26"/> + <field name="alphabeticShortcut"/> + <field name="alwaysDrawnWithCache"/> + <field name="alwaysRetainTaskState"/> + <field name="amPmBackgroundColor" since="21" deprecated="23"/> + <field name="amPmTextColor" since="21" deprecated="23"/> + <field name="ambientShadowAlpha" since="21"/> + <field name="angle"/> + <field name="animateFirstView" since="11"/> + <field name="animateLayoutChanges" since="11"/> + <field name="animateOnClick" since="3"/> + <field name="animation"/> + <field name="animationCache"/> + <field name="animationDuration"/> + <field name="animationOrder"/> + <field name="animationResolution" since="11" deprecated="16"/> + <field name="antialias"/> + <field name="anyDensity" since="4"/> + <field name="apduServiceBanner" since="19"/> + <field name="apiKey"/> + <field name="appCategory" since="26"/> + <field name="author" since="7"/> + <field name="authorities"/> + <field name="autoAdvanceViewId" since="11"/> + <field name="autoCompleteTextViewStyle"/> + <field name="autoLink"/> + <field name="autoMirrored" since="19"/> + <field name="autoRemoveFromRecents" since="21"/> + <field name="autoSizeMaxTextSize" since="26"/> + <field name="autoSizeMinTextSize" since="26"/> + <field name="autoSizePresetSizes" since="26"/> + <field name="autoSizeStepGranularity" since="26"/> + <field name="autoSizeTextType" since="26"/> + <field name="autoStart" since="7"/> + <field name="autoText" deprecated="16"/> + <field name="autoUrlDetect" since="4"/> + <field name="autoVerify" since="23"/> + <field name="autofillHints" since="26"/> + <field name="autofilledHighlight" since="26"/> + <field name="background"/> + <field name="backgroundDimAmount"/> + <field name="backgroundDimEnabled" since="3"/> + <field name="backgroundSplit" since="14"/> + <field name="backgroundStacked" since="14"/> + <field name="backgroundTint" since="21"/> + <field name="backgroundTintMode" since="21"/> + <field name="backupAgent" since="4"/> + <field name="backupInForeground" since="24"/> + <field name="banner" since="21"/> + <field name="baseline" since="11"/> + <field name="baselineAlignBottom"/> + <field name="baselineAligned"/> + <field name="baselineAlignedChildIndex"/> + <field name="bitmap" since="24"/> + <field name="borderlessButtonStyle" since="11"/> + <field name="bottom"/> + <field name="bottomBright"/> + <field name="bottomDark"/> + <field name="bottomLeftRadius"/> + <field name="bottomMedium"/> + <field name="bottomOffset" since="3"/> + <field name="bottomRightRadius"/> + <field name="breadCrumbShortTitle" since="11"/> + <field name="breadCrumbTitle" since="11"/> + <field name="breakStrategy" since="23"/> + <field name="bufferType"/> + <field name="button"/> + <field name="buttonBarButtonStyle" since="11"/> + <field name="buttonBarNegativeButtonStyle" since="21"/> + <field name="buttonBarNeutralButtonStyle" since="21"/> + <field name="buttonBarPositiveButtonStyle" since="21"/> + <field name="buttonBarStyle" since="11"/> + <field name="buttonGravity" since="24"/> + <field name="buttonStyle"/> + <field name="buttonStyleInset"/> + <field name="buttonStyleSmall"/> + <field name="buttonStyleToggle"/> + <field name="buttonTint" since="21"/> + <field name="buttonTintMode" since="21"/> + <field name="cacheColorHint"/> + <field name="calendarTextColor" since="21"/> + <field name="calendarViewShown" since="11"/> + <field name="calendarViewStyle" since="11"/> + <field name="canControlMagnification" since="24"/> + <field name="canPerformGestures" since="24"/> + <field name="canRecord" since="24"/> + <field name="canRequestEnhancedWebAccessibility" since="18" deprecated="26"/> + <field name="canRequestFilterKeyEvents" since="18"/> + <field name="canRequestFingerprintGestures" since="26"/> + <field name="canRequestTouchExplorationMode" since="18"/> + <field name="canRetrieveWindowContent" since="14"/> + <field name="candidatesTextStyleSpans" since="3"/> + <field name="capitalize" deprecated="16"/> + <field name="category" since="19"/> + <field name="centerBright"/> + <field name="centerColor"/> + <field name="centerDark"/> + <field name="centerMedium"/> + <field name="centerX"/> + <field name="centerY"/> + <field name="certDigest" since="26"/> + <field name="checkBoxPreferenceStyle"/> + <field name="checkMark"/> + <field name="checkMarkTint" since="21"/> + <field name="checkMarkTintMode" since="21"/> + <field name="checkable"/> + <field name="checkableBehavior"/> + <field name="checkboxStyle"/> + <field name="checked"/> + <field name="checkedButton"/> + <field name="checkedTextViewStyle" since="17"/> + <field name="childDivider"/> + <field name="childIndicator"/> + <field name="childIndicatorEnd" since="18"/> + <field name="childIndicatorLeft"/> + <field name="childIndicatorRight"/> + <field name="childIndicatorStart" since="18"/> + <field name="choiceMode"/> + <field name="clearTaskOnLaunch"/> + <field name="clickable"/> + <field name="clipChildren"/> + <field name="clipOrientation"/> + <field name="clipToPadding"/> + <field name="closeIcon" since="21"/> + <field name="codes" since="3"/> + <field name="collapseColumns"/> + <field name="collapseContentDescription" since="22"/> + <field name="collapseIcon" since="24"/> + <field name="color"/> + <field name="colorAccent" since="21"/> + <field name="colorActivatedHighlight" since="14"/> + <field name="colorBackground"/> + <field name="colorBackgroundCacheHint" since="5"/> + <field name="colorBackgroundFloating" since="23"/> + <field name="colorButtonNormal" since="21"/> + <field name="colorControlActivated" since="21"/> + <field name="colorControlHighlight" since="21"/> + <field name="colorControlNormal" since="21"/> + <field name="colorEdgeEffect" since="21"/> + <field name="colorError" since="26"/> + <field name="colorFocusedHighlight" since="14"/> + <field name="colorForeground"/> + <field name="colorForegroundInverse"/> + <field name="colorLongPressedHighlight" since="14"/> + <field name="colorMode" since="26"/> + <field name="colorMultiSelectHighlight" since="14"/> + <field name="colorPressedHighlight" since="14"/> + <field name="colorPrimary" since="21"/> + <field name="colorPrimaryDark" since="21"/> + <field name="colorSecondary" since="25"/> + <field name="columnCount" since="14"/> + <field name="columnDelay"/> + <field name="columnOrderPreserved" since="14"/> + <field name="columnWidth"/> + <field name="commitIcon" since="21"/> + <field name="compatibleWidthLimitDp" since="13"/> + <field name="completionHint"/> + <field name="completionHintView"/> + <field name="completionThreshold"/> + <field name="configChanges"/> + <field name="configure" since="3"/> + <field name="constantSize"/> + <field name="content" since="3"/> + <field name="contentAgeHint" since="21"/> + <field name="contentAuthority" since="5"/> + <field name="contentDescription" since="4"/> + <field name="contentInsetEnd" since="21"/> + <field name="contentInsetEndWithActions" since="24"/> + <field name="contentInsetLeft" since="21"/> + <field name="contentInsetRight" since="21"/> + <field name="contentInsetStart" since="21"/> + <field name="contentInsetStartWithNavigation" since="24"/> + <field name="contextClickable" since="23"/> + <field name="contextDescription" since="25"/> + <field name="contextPopupMenuStyle" since="24"/> + <field name="contextUri" since="25"/> + <field name="controlX1" since="21"/> + <field name="controlX2" since="21"/> + <field name="controlY1" since="21"/> + <field name="controlY2" since="21"/> + <field name="countDown" since="24"/> + <field name="country" since="21"/> + <field name="cropToPadding"/> + <field name="cursorVisible"/> + <field name="customNavigationLayout" since="11"/> + <field name="customTokens" since="11"/> + <field name="cycles"/> + <field name="dashGap"/> + <field name="dashWidth"/> + <field name="data"/> + <field name="datePickerDialogTheme" since="21"/> + <field name="datePickerMode" since="21"/> + <field name="datePickerStyle" since="11"/> + <field name="dateTextAppearance" since="11"/> + <field name="dayOfWeekBackground" since="21" deprecated="23"/> + <field name="dayOfWeekTextAppearance" since="21" deprecated="23"/> + <field name="debuggable"/> + <field name="defaultFocusHighlightEnabled" since="26"/> + <field name="defaultHeight" since="24"/> + <field name="defaultToDeviceProtectedStorage" since="24"/> + <field name="defaultValue"/> + <field name="defaultWidth" since="24"/> + <field name="delay"/> + <field name="dependency"/> + <field name="descendantFocusability"/> + <field name="description"/> + <field name="detachWallpaper" since="5"/> + <field name="detailColumn" since="5"/> + <field name="detailSocialSummary" since="5"/> + <field name="detailsElementBackground" since="11"/> + <field name="dial"/> + <field name="dialogIcon"/> + <field name="dialogLayout"/> + <field name="dialogMessage"/> + <field name="dialogPreferenceStyle"/> + <field name="dialogPreferredPadding" since="22"/> + <field name="dialogTheme" since="11"/> + <field name="dialogTitle"/> + <field name="digits"/> + <field name="directBootAware" since="24"/> + <field name="direction"/> + <field name="directionDescriptions" since="14" deprecated="23"/> + <field name="directionPriority"/> + <field name="disableDependentsState"/> + <field name="disabledAlpha"/> + <field name="displayOptions" since="11"/> + <field name="dither"/> + <field name="divider"/> + <field name="dividerHeight"/> + <field name="dividerHorizontal" since="11"/> + <field name="dividerPadding" since="11"/> + <field name="dividerVertical" since="11"/> + <field name="documentLaunchMode" since="21"/> + <field name="drawSelectorOnTop"/> + <field name="drawable"/> + <field name="drawableBottom"/> + <field name="drawableEnd" since="14"/> + <field name="drawableLeft"/> + <field name="drawablePadding"/> + <field name="drawableRight"/> + <field name="drawableStart" since="14"/> + <field name="drawableTint" since="23"/> + <field name="drawableTintMode" since="23"/> + <field name="drawableTop"/> + <field name="drawingCacheQuality"/> + <field name="dropDownAnchor" since="3"/> + <field name="dropDownHeight" since="4"/> + <field name="dropDownHintAppearance"/> + <field name="dropDownHorizontalOffset" since="5"/> + <field name="dropDownItemStyle"/> + <field name="dropDownListViewStyle"/> + <field name="dropDownSelector"/> + <field name="dropDownSpinnerStyle" since="11"/> + <field name="dropDownVerticalOffset" since="5"/> + <field name="dropDownWidth" since="3"/> + <field name="duplicateParentState"/> + <field name="duration"/> + <field name="editTextBackground" since="11"/> + <field name="editTextColor" since="11"/> + <field name="editTextPreferenceStyle"/> + <field name="editTextStyle"/> + <field name="editable" deprecated="16"/> + <field name="editorExtras" since="3"/> + <field name="elegantTextHeight" since="21"/> + <field name="elevation" since="21"/> + <field name="ellipsize"/> + <field name="ems"/> + <field name="enableVrMode" since="24"/> + <field name="enabled"/> + <field name="end" since="23"/> + <field name="endColor"/> + <field name="endX" since="24"/> + <field name="endY" since="24"/> + <field name="endYear" deprecated="16"/> + <field name="enterFadeDuration" since="11"/> + <field name="entries"/> + <field name="entryValues"/> + <field name="eventsInterceptionEnabled" since="4"/> + <field name="excludeClass" since="21"/> + <field name="excludeFromRecents"/> + <field name="excludeId" since="21"/> + <field name="excludeName" since="21"/> + <field name="exitFadeDuration" since="11"/> + <field name="expandableListPreferredChildIndicatorLeft"/> + <field name="expandableListPreferredChildIndicatorRight"/> + <field name="expandableListPreferredChildPaddingLeft"/> + <field name="expandableListPreferredItemIndicatorLeft"/> + <field name="expandableListPreferredItemIndicatorRight"/> + <field name="expandableListPreferredItemPaddingLeft"/> + <field name="expandableListViewStyle"/> + <field name="expandableListViewWhiteStyle" since="8"/> + <field name="exported"/> + <field name="externalService" since="24"/> + <field name="extraTension" since="4"/> + <field name="extractNativeLibs" since="23"/> + <field name="factor"/> + <field name="fadeDuration" since="4"/> + <field name="fadeEnabled" since="4"/> + <field name="fadeOffset" since="4"/> + <field name="fadeScrollbars" since="5"/> + <field name="fadingEdge"/> + <field name="fadingEdgeLength"/> + <field name="fadingMode" since="19"/> + <field name="fastScrollAlwaysVisible" since="11"/> + <field name="fastScrollEnabled" since="3"/> + <field name="fastScrollOverlayPosition" since="11"/> + <field name="fastScrollPreviewBackgroundLeft" since="11"/> + <field name="fastScrollPreviewBackgroundRight" since="11"/> + <field name="fastScrollStyle" since="21"/> + <field name="fastScrollTextColor" since="11"/> + <field name="fastScrollThumbDrawable" since="11"/> + <field name="fastScrollTrackDrawable" since="11"/> + <field name="fillAfter"/> + <field name="fillAlpha" since="21"/> + <field name="fillBefore"/> + <field name="fillColor" since="21"/> + <field name="fillEnabled" since="3"/> + <field name="fillType" since="24"/> + <field name="fillViewport"/> + <field name="filter"/> + <field name="filterTouchesWhenObscured" since="9"/> + <field name="fingerprintAuthDrawable" since="23"/> + <field name="finishOnCloseSystemDialogs" since="5"/> + <field name="finishOnTaskLaunch"/> + <field name="firstDayOfWeek" since="11"/> + <field name="fitsSystemWindows"/> + <field name="flipInterval"/> + <field name="focusable"/> + <field name="focusableInTouchMode"/> + <field name="focusedByDefault" since="26"/> + <field name="focusedMonthDateColor" since="11" deprecated="23"/> + <field name="font" since="26"/> + <field name="fontFamily" since="16"/> + <field name="fontFeatureSettings" since="21"/> + <field name="fontProviderAuthority" since="26"/> + <field name="fontProviderCerts" since="26"/> + <field name="fontProviderPackage" since="26"/> + <field name="fontProviderQuery" since="26"/> + <field name="fontStyle" since="26"/> + <field name="fontWeight" since="26"/> + <field name="footerDividersEnabled" since="3"/> + <field name="forceHasOverlappingRendering" since="24"/> + <field name="foreground"/> + <field name="foregroundGravity"/> + <field name="foregroundTint" since="21"/> + <field name="foregroundTintMode" since="21"/> + <field name="format"/> + <field name="format12Hour" since="17"/> + <field name="format24Hour" since="17"/> + <field name="fraction" since="23"/> + <field name="fragment" since="11"/> + <field name="fragmentAllowEnterTransitionOverlap" since="21"/> + <field name="fragmentAllowReturnTransitionOverlap" since="21"/> + <field name="fragmentCloseEnterAnimation" since="11"/> + <field name="fragmentCloseExitAnimation" since="11"/> + <field name="fragmentEnterTransition" since="21"/> + <field name="fragmentExitTransition" since="21"/> + <field name="fragmentFadeEnterAnimation" since="11"/> + <field name="fragmentFadeExitAnimation" since="11"/> + <field name="fragmentOpenEnterAnimation" since="11"/> + <field name="fragmentOpenExitAnimation" since="11"/> + <field name="fragmentReenterTransition" since="21"/> + <field name="fragmentReturnTransition" since="21"/> + <field name="fragmentSharedElementEnterTransition" since="21"/> + <field name="fragmentSharedElementReturnTransition" since="21"/> + <field name="freezesText"/> + <field name="fromAlpha"/> + <field name="fromDegrees"/> + <field name="fromId" since="21"/> + <field name="fromScene" since="19"/> + <field name="fromXDelta"/> + <field name="fromXScale"/> + <field name="fromYDelta"/> + <field name="fromYScale"/> + <field name="fullBackupContent" since="23"/> + <field name="fullBackupOnly" since="21"/> + <field name="fullBright"/> + <field name="fullDark"/> + <field name="functionalTest"/> + <field name="galleryItemBackground"/> + <field name="galleryStyle"/> + <field name="gestureColor" since="4"/> + <field name="gestureStrokeAngleThreshold" since="4"/> + <field name="gestureStrokeLengthThreshold" since="4"/> + <field name="gestureStrokeSquarenessThreshold" since="4"/> + <field name="gestureStrokeType" since="4"/> + <field name="gestureStrokeWidth" since="4"/> + <field name="glEsVersion" since="4"/> + <field name="goIcon" since="21"/> + <field name="gradientRadius"/> + <field name="grantUriPermissions"/> + <field name="gravity"/> + <field name="gridViewStyle"/> + <field name="groupIndicator"/> + <field name="hand_hour"/> + <field name="hand_minute"/> + <field name="handle" since="3"/> + <field name="handleProfiling"/> + <field name="hapticFeedbackEnabled" since="3"/> + <field name="hardwareAccelerated" since="11"/> + <field name="hasCode"/> + <field name="headerAmPmTextAppearance" since="21" deprecated="23"/> + <field name="headerBackground"/> + <field name="headerDayOfMonthTextAppearance" since="21" deprecated="23"/> + <field name="headerDividersEnabled" since="3"/> + <field name="headerMonthTextAppearance" since="21" deprecated="23"/> + <field name="headerTimeTextAppearance" since="21" deprecated="23"/> + <field name="headerYearTextAppearance" since="21" deprecated="23"/> + <field name="height"/> + <field name="hideOnContentScroll" since="21"/> + <field name="hint"/> + <field name="homeAsUpIndicator" since="11"/> + <field name="homeLayout" since="11"/> + <field name="horizontalDivider"/> + <field name="horizontalGap" since="3"/> + <field name="horizontalScrollViewStyle" since="11"/> + <field name="horizontalSpacing"/> + <field name="host"/> + <field name="hotSpotX" since="24"/> + <field name="hotSpotY" since="24"/> + <field name="hyphenationFrequency" since="23"/> + <field name="icon"/> + <field name="iconPreview" since="3"/> + <field name="iconSpaceReserved" since="26"/> + <field name="iconTint" since="26"/> + <field name="iconTintMode" since="26"/> + <field name="iconifiedByDefault" since="11"/> + <field name="id"/> + <field name="ignoreGravity"/> + <field name="imageButtonStyle"/> + <field name="imageWellStyle"/> + <field name="imeActionId" since="3"/> + <field name="imeActionLabel" since="3"/> + <field name="imeExtractEnterAnimation" since="3"/> + <field name="imeExtractExitAnimation" since="3"/> + <field name="imeFullscreenBackground" since="3"/> + <field name="imeOptions" since="3"/> + <field name="imeSubtypeExtraValue" since="11"/> + <field name="imeSubtypeLocale" since="11"/> + <field name="imeSubtypeMode" since="11"/> + <field name="immersive" since="11"/> + <field name="importantForAccessibility" since="16"/> + <field name="importantForAutofill" since="26"/> + <field name="inAnimation"/> + <field name="includeFontPadding"/> + <field name="includeInGlobalSearch" since="4"/> + <field name="indeterminate"/> + <field name="indeterminateBehavior"/> + <field name="indeterminateDrawable"/> + <field name="indeterminateDuration"/> + <field name="indeterminateOnly"/> + <field name="indeterminateProgressStyle" since="11"/> + <field name="indeterminateTint" since="21"/> + <field name="indeterminateTintMode" since="21"/> + <field name="indicatorEnd" since="18"/> + <field name="indicatorLeft"/> + <field name="indicatorRight"/> + <field name="indicatorStart" since="18"/> + <field name="inflatedId"/> + <field name="initOrder"/> + <field name="initialKeyguardLayout" since="17"/> + <field name="initialLayout" since="3"/> + <field name="innerRadius" since="3"/> + <field name="innerRadiusRatio"/> + <field name="inputMethod" deprecated="16"/> + <field name="inputType" since="3"/> + <field name="inset" since="21"/> + <field name="insetBottom"/> + <field name="insetLeft"/> + <field name="insetRight"/> + <field name="insetTop"/> + <field name="installLocation" since="8"/> + <field name="interpolator"/> + <field name="isAlwaysSyncable" since="11"/> + <field name="isAsciiCapable" since="19"/> + <field name="isAuxiliary" since="14"/> + <field name="isDefault" since="3"/> + <field name="isFeatureSplit" since="26"/> + <field name="isGame" since="21"/> + <field name="isIndicator"/> + <field name="isModifier" since="3"/> + <field name="isRepeatable" since="3"/> + <field name="isScrollContainer" since="3"/> + <field name="isStatic" since="26"/> + <field name="isSticky" since="3"/> + <field name="isolatedProcess" since="16"/> + <field name="isolatedSplits" since="26"/> + <field name="itemBackground"/> + <field name="itemIconDisabledAlpha"/> + <field name="itemPadding" since="11"/> + <field name="itemTextAppearance"/> + <field name="justificationMode" since="26"/> + <field name="keepScreenOn"/> + <field name="key"/> + <field name="keyBackground" since="3"/> + <field name="keyEdgeFlags" since="3"/> + <field name="keyHeight" since="3"/> + <field name="keyIcon" since="3"/> + <field name="keyLabel" since="3"/> + <field name="keyOutputText" since="3"/> + <field name="keyPreviewHeight" since="3"/> + <field name="keyPreviewLayout" since="3"/> + <field name="keyPreviewOffset" since="3"/> + <field name="keySet" since="19"/> + <field name="keyTextColor" since="3"/> + <field name="keyTextSize" since="3"/> + <field name="keyWidth" since="3"/> + <field name="keyboardLayout" since="16"/> + <field name="keyboardMode" since="3"/> + <field name="keyboardNavigationCluster" since="26"/> + <field name="keycode"/> + <field name="killAfterRestore" since="5"/> + <field name="label"/> + <field name="labelFor" since="17"/> + <field name="labelTextSize" since="3"/> + <field name="languageTag" since="24"/> + <field name="largeHeap" since="11"/> + <field name="largeScreens" since="4"/> + <field name="largestWidthLimitDp" since="13"/> + <field name="launchMode"/> + <field name="launchTaskBehindSourceAnimation" since="21"/> + <field name="launchTaskBehindTargetAnimation" since="21"/> + <field name="layerType" since="11"/> + <field name="layout"/> + <field name="layoutAnimation"/> + <field name="layoutDirection" since="17"/> + <field name="layoutMode" since="18"/> + <field name="layout_above"/> + <field name="layout_alignBaseline"/> + <field name="layout_alignBottom"/> + <field name="layout_alignEnd" since="17"/> + <field name="layout_alignLeft"/> + <field name="layout_alignParentBottom"/> + <field name="layout_alignParentEnd" since="17"/> + <field name="layout_alignParentLeft"/> + <field name="layout_alignParentRight"/> + <field name="layout_alignParentStart" since="17"/> + <field name="layout_alignParentTop"/> + <field name="layout_alignRight"/> + <field name="layout_alignStart" since="17"/> + <field name="layout_alignTop"/> + <field name="layout_alignWithParentIfMissing"/> + <field name="layout_below"/> + <field name="layout_centerHorizontal"/> + <field name="layout_centerInParent"/> + <field name="layout_centerVertical"/> + <field name="layout_column"/> + <field name="layout_columnSpan" since="14"/> + <field name="layout_columnWeight" since="21"/> + <field name="layout_gravity"/> + <field name="layout_height"/> + <field name="layout_margin"/> + <field name="layout_marginBottom"/> + <field name="layout_marginEnd" since="17"/> + <field name="layout_marginHorizontal" since="26"/> + <field name="layout_marginLeft"/> + <field name="layout_marginRight"/> + <field name="layout_marginStart" since="17"/> + <field name="layout_marginTop"/> + <field name="layout_marginVertical" since="26"/> + <field name="layout_row" since="14"/> + <field name="layout_rowSpan" since="14"/> + <field name="layout_rowWeight" since="21"/> + <field name="layout_scale"/> + <field name="layout_span"/> + <field name="layout_toEndOf" since="17"/> + <field name="layout_toLeftOf"/> + <field name="layout_toRightOf"/> + <field name="layout_toStartOf" since="17"/> + <field name="layout_weight"/> + <field name="layout_width"/> + <field name="layout_x"/> + <field name="layout_y"/> + <field name="left"/> + <field name="letterSpacing" since="21"/> + <field name="level" since="24"/> + <field name="lineSpacingExtra"/> + <field name="lineSpacingMultiplier"/> + <field name="lines"/> + <field name="linksClickable"/> + <field name="listChoiceBackgroundIndicator" since="11"/> + <field name="listChoiceIndicatorMultiple"/> + <field name="listChoiceIndicatorSingle"/> + <field name="listDivider"/> + <field name="listDividerAlertDialog" since="11"/> + <field name="listMenuViewStyle" since="24"/> + <field name="listPopupWindowStyle" since="11"/> + <field name="listPreferredItemHeight"/> + <field name="listPreferredItemHeightLarge" since="14"/> + <field name="listPreferredItemHeightSmall" since="14"/> + <field name="listPreferredItemPaddingEnd" since="17"/> + <field name="listPreferredItemPaddingLeft" since="14"/> + <field name="listPreferredItemPaddingRight" since="14"/> + <field name="listPreferredItemPaddingStart" since="17"/> + <field name="listSelector"/> + <field name="listSeparatorTextViewStyle"/> + <field name="listViewStyle"/> + <field name="listViewWhiteStyle"/> + <field name="lockTaskMode" since="23"/> + <field name="logo" since="11"/> + <field name="logoDescription" since="23"/> + <field name="longClickable"/> + <field name="loopViews" since="11"/> + <field name="manageSpaceActivity"/> + <field name="mapViewStyle"/> + <field name="marqueeRepeatLimit" since="2"/> + <field name="matchOrder" since="21"/> + <field name="max"/> + <field name="maxAspectRatio" since="26"/> + <field name="maxButtonHeight" since="24"/> + <field name="maxDate" since="11"/> + <field name="maxEms"/> + <field name="maxHeight"/> + <field name="maxItemsPerRow"/> + <field name="maxLength"/> + <field name="maxLevel"/> + <field name="maxLines"/> + <field name="maxRecents" since="21"/> + <field name="maxRows"/> + <field name="maxSdkVersion" since="4"/> + <field name="maxWidth"/> + <field name="maximumAngle" since="21"/> + <field name="measureAllChildren"/> + <field name="measureWithLargestChild" since="11"/> + <field name="mediaRouteButtonStyle" since="16"/> + <field name="mediaRouteTypes" since="16"/> + <field name="menuCategory"/> + <field name="mimeType"/> + <field name="min" since="26"/> + <field name="minDate" since="11"/> + <field name="minEms"/> + <field name="minHeight"/> + <field name="minLevel"/> + <field name="minLines"/> + <field name="minResizeHeight" since="14"/> + <field name="minResizeWidth" since="14"/> + <field name="minSdkVersion"/> + <field name="minWidth"/> + <field name="minimumHorizontalAngle" since="21"/> + <field name="minimumVerticalAngle" since="21"/> + <field name="mipMap" since="18"/> + <field name="mirrorForRtl" since="18"/> + <field name="mode"/> + <field name="moreIcon"/> + <field name="multiArch" since="21"/> + <field name="multiprocess"/> + <field name="name"/> + <field name="navigationBarColor" since="21"/> + <field name="navigationContentDescription" since="21"/> + <field name="navigationIcon" since="21"/> + <field name="navigationMode" since="11"/> + <field name="negativeButtonText"/> + <field name="nestedScrollingEnabled" since="21"/> + <field name="networkSecurityConfig" since="24"/> + <field name="nextClusterForward" since="26"/> + <field name="nextFocusDown"/> + <field name="nextFocusForward" since="11"/> + <field name="nextFocusLeft"/> + <field name="nextFocusRight"/> + <field name="nextFocusUp"/> + <field name="noHistory" since="3"/> + <field name="normalScreens" since="4"/> + <field name="notificationTimeout" since="14"/> + <field name="numColumns"/> + <field name="numStars"/> + <field name="numberPickerStyle" since="24"/> + <field name="numbersBackgroundColor" since="21"/> + <field name="numbersInnerTextColor" since="23"/> + <field name="numbersSelectorColor" since="21"/> + <field name="numbersTextColor" since="21"/> + <field name="numeric" deprecated="16"/> + <field name="numericModifiers" since="26"/> + <field name="numericShortcut"/> + <field name="offset" since="24"/> + <field name="onClick" since="4"/> + <field name="oneshot"/> + <field name="opacity" since="11"/> + <field name="order"/> + <field name="orderInCategory"/> + <field name="ordering" since="11"/> + <field name="orderingFromXml"/> + <field name="orientation"/> + <field name="outAnimation"/> + <field name="outlineProvider" since="21"/> + <field name="overScrollFooter" since="9"/> + <field name="overScrollHeader" since="9"/> + <field name="overScrollMode" since="9"/> + <field name="overlapAnchor" since="21"/> + <field name="overridesImplicitlyEnabledSubtype" since="14"/> + <field name="packageNames" since="14"/> + <field name="padding"/> + <field name="paddingBottom"/> + <field name="paddingEnd" since="17"/> + <field name="paddingHorizontal" since="26"/> + <field name="paddingLeft"/> + <field name="paddingMode" since="21"/> + <field name="paddingRight"/> + <field name="paddingStart" since="17"/> + <field name="paddingTop"/> + <field name="paddingVertical" since="26"/> + <field name="panelBackground"/> + <field name="panelColorBackground"/> + <field name="panelColorForeground"/> + <field name="panelFullBackground"/> + <field name="panelTextAppearance"/> + <field name="parentActivityName" since="16"/> + <field name="password" deprecated="16"/> + <field name="path"/> + <field name="pathData" since="21"/> + <field name="pathPattern"/> + <field name="pathPrefix"/> + <field name="patternPathData" since="21"/> + <field name="permission"/> + <field name="permissionFlags" since="17"/> + <field name="permissionGroup"/> + <field name="permissionGroupFlags" since="17"/> + <field name="persistableMode" since="21"/> + <field name="persistent"/> + <field name="persistentDrawingCache"/> + <field name="persistentWhenFeatureAvailable" since="26"/> + <field name="phoneNumber" deprecated="16"/> + <field name="pivotX"/> + <field name="pivotY"/> + <field name="pointerIcon" since="24"/> + <field name="popupAnimationStyle" since="9"/> + <field name="popupBackground"/> + <field name="popupCharacters" since="3"/> + <field name="popupElevation" since="21"/> + <field name="popupEnterTransition" since="24"/> + <field name="popupExitTransition" since="24"/> + <field name="popupKeyboard" since="3"/> + <field name="popupLayout" since="3"/> + <field name="popupMenuStyle" since="11"/> + <field name="popupTheme" since="21"/> + <field name="popupWindowStyle"/> + <field name="port"/> + <field name="positiveButtonText"/> + <field name="preferenceCategoryStyle"/> + <field name="preferenceFragmentStyle" since="24"/> + <field name="preferenceInformationStyle"/> + <field name="preferenceLayoutChild"/> + <field name="preferenceScreenStyle"/> + <field name="preferenceStyle"/> + <field name="presentationTheme" since="17"/> + <field name="previewImage" since="11"/> + <field name="primaryContentAlpha" since="26"/> + <field name="priority"/> + <field name="privateImeOptions" since="3"/> + <field name="process"/> + <field name="progress"/> + <field name="progressBackgroundTint" since="21"/> + <field name="progressBackgroundTintMode" since="21"/> + <field name="progressBarPadding" since="11"/> + <field name="progressBarStyle"/> + <field name="progressBarStyleHorizontal"/> + <field name="progressBarStyleInverse" since="4"/> + <field name="progressBarStyleLarge"/> + <field name="progressBarStyleLargeInverse" since="4"/> + <field name="progressBarStyleSmall"/> + <field name="progressBarStyleSmallInverse" since="4"/> + <field name="progressBarStyleSmallTitle"/> + <field name="progressDrawable"/> + <field name="progressTint" since="21"/> + <field name="progressTintMode" since="21"/> + <field name="prompt"/> + <field name="propertyName" since="11"/> + <field name="propertyXName" since="21"/> + <field name="propertyYName" since="21"/> + <field name="protectionLevel"/> + <field name="publicKey" since="14"/> + <field name="queryActionMsg"/> + <field name="queryAfterZeroResults" since="4"/> + <field name="queryBackground" since="21"/> + <field name="queryHint" since="11"/> + <field name="quickContactBadgeStyleSmallWindowLarge" since="6"/> + <field name="quickContactBadgeStyleSmallWindowMedium" since="6"/> + <field name="quickContactBadgeStyleSmallWindowSmall" since="6"/> + <field name="quickContactBadgeStyleWindowLarge" since="6"/> + <field name="quickContactBadgeStyleWindowMedium" since="6"/> + <field name="quickContactBadgeStyleWindowSmall" since="6"/> + <field name="radioButtonStyle"/> + <field name="radius"/> + <field name="rating"/> + <field name="ratingBarStyle"/> + <field name="ratingBarStyleIndicator"/> + <field name="ratingBarStyleSmall"/> + <field name="readPermission"/> + <field name="recognitionService" since="21"/> + <field name="recreateOnConfigChanges" since="26"/> + <field name="recycleEnabled" since="26"/> + <field name="relinquishTaskIdentity" since="21"/> + <field name="reparent" since="21"/> + <field name="reparentWithOverlay" since="21"/> + <field name="repeatCount"/> + <field name="repeatMode"/> + <field name="reqFiveWayNav" since="3"/> + <field name="reqHardKeyboard" since="3"/> + <field name="reqKeyboardType" since="3"/> + <field name="reqNavigation" since="3"/> + <field name="reqTouchScreen" since="3"/> + <field name="requireDeviceUnlock" since="19"/> + <field name="required" since="5"/> + <field name="requiredAccountType" since="18"/> + <field name="requiredFeature" since="26"/> + <field name="requiredForAllUsers" since="18"/> + <field name="requiredNotFeature" since="26"/> + <field name="requiresFadingEdge" since="14"/> + <field name="requiresSmallestWidthDp" since="13"/> + <field name="resizeClip" since="22"/> + <field name="resizeMode" since="12"/> + <field name="resizeable" since="4"/> + <field name="resizeableActivity" since="24"/> + <field name="resource"/> + <field name="restoreAnyVersion" since="8"/> + <field name="restoreNeedsApplication" since="5" deprecated="16"/> + <field name="restrictedAccountType" since="18"/> + <field name="restrictionType" since="21"/> + <field name="resumeWhilePausing" since="21"/> + <field name="reversible" since="21"/> + <field name="revisionCode" since="22"/> + <field name="right"/> + <field name="ringtonePreferenceStyle"/> + <field name="ringtoneType"/> + <field name="rotation" since="11"/> + <field name="rotationAnimation" since="26"/> + <field name="rotationX" since="11"/> + <field name="rotationY" since="11"/> + <field name="roundIcon" since="25"/> + <field name="rowCount" since="14"/> + <field name="rowDelay"/> + <field name="rowEdgeFlags" since="3"/> + <field name="rowHeight"/> + <field name="rowOrderPreserved" since="14"/> + <field name="saveEnabled"/> + <field name="scaleGravity"/> + <field name="scaleHeight"/> + <field name="scaleType"/> + <field name="scaleWidth"/> + <field name="scaleX" since="11"/> + <field name="scaleY" since="11"/> + <field name="scheme"/> + <field name="screenDensity" since="9"/> + <field name="screenOrientation"/> + <field name="screenSize" since="9"/> + <field name="scrollHorizontally"/> + <field name="scrollIndicators" since="23"/> + <field name="scrollViewStyle"/> + <field name="scrollX"/> + <field name="scrollY"/> + <field name="scrollbarAlwaysDrawHorizontalTrack"/> + <field name="scrollbarAlwaysDrawVerticalTrack"/> + <field name="scrollbarDefaultDelayBeforeFade" since="5"/> + <field name="scrollbarFadeDuration" since="5"/> + <field name="scrollbarSize"/> + <field name="scrollbarStyle"/> + <field name="scrollbarThumbHorizontal"/> + <field name="scrollbarThumbVertical"/> + <field name="scrollbarTrackHorizontal"/> + <field name="scrollbarTrackVertical"/> + <field name="scrollbars"/> + <field name="scrollingCache"/> + <field name="searchButtonText" deprecated="16"/> + <field name="searchHintIcon" since="22"/> + <field name="searchIcon" since="21"/> + <field name="searchMode"/> + <field name="searchSettingsDescription" since="4"/> + <field name="searchSuggestAuthority"/> + <field name="searchSuggestIntentAction"/> + <field name="searchSuggestIntentData"/> + <field name="searchSuggestPath"/> + <field name="searchSuggestSelection"/> + <field name="searchSuggestThreshold" since="4"/> + <field name="searchViewStyle" since="21"/> + <field name="secondaryContentAlpha" since="26"/> + <field name="secondaryProgress"/> + <field name="secondaryProgressTint" since="21"/> + <field name="secondaryProgressTintMode" since="21"/> + <field name="seekBarStyle"/> + <field name="segmentedButtonStyle" since="11"/> + <field name="selectAllOnFocus"/> + <field name="selectable"/> + <field name="selectableItemBackground" since="11"/> + <field name="selectableItemBackgroundBorderless" since="21"/> + <field name="selectedDateVerticalBar" since="11" deprecated="23"/> + <field name="selectedWeekBackgroundColor" since="11" deprecated="23"/> + <field name="sessionService" since="21"/> + <field name="settingsActivity" since="3"/> + <field name="setupActivity" since="21"/> + <field name="shadowColor"/> + <field name="shadowDx"/> + <field name="shadowDy"/> + <field name="shadowRadius"/> + <field name="shape"/> + <field name="shareInterpolator"/> + <field name="sharedUserId"/> + <field name="sharedUserLabel" since="3"/> + <field name="shortcutDisabledMessage" since="25"/> + <field name="shortcutId" since="25"/> + <field name="shortcutLongLabel" since="25"/> + <field name="shortcutShortLabel" since="25"/> + <field name="shouldDisableView"/> + <field name="showAsAction" since="11"/> + <field name="showDefault"/> + <field name="showDividers" since="11"/> + <field name="showForAllUsers" since="23"/> + <field name="showMetadataInPreview" since="25"/> + <field name="showOnLockScreen" since="17" deprecated="23"/> + <field name="showSilent"/> + <field name="showText" since="21"/> + <field name="showWeekNumber" since="11" deprecated="23"/> + <field name="shownWeekCount" since="11" deprecated="23"/> + <field name="shrinkColumns"/> + <field name="singleLine" deprecated="16"/> + <field name="singleLineTitle" since="26"/> + <field name="singleUser" since="17"/> + <field name="slideEdge" since="21"/> + <field name="smallIcon" since="5"/> + <field name="smallScreens" since="4"/> + <field name="smoothScrollbar" since="3"/> + <field name="soundEffectsEnabled"/> + <field name="spacing"/> + <field name="spinnerDropDownItemStyle"/> + <field name="spinnerItemStyle"/> + <field name="spinnerMode" since="11"/> + <field name="spinnerStyle"/> + <field name="spinnersShown" since="11"/> + <field name="splitMotionEvents" since="11"/> + <field name="splitName" since="26"/> + <field name="splitTrack" since="21"/> + <field name="spotShadowAlpha" since="21"/> + <field name="src"/> + <field name="ssp" since="19"/> + <field name="sspPattern" since="19"/> + <field name="sspPrefix" since="19"/> + <field name="stackFromBottom"/> + <field name="stackViewStyle" since="21"/> + <field name="starStyle"/> + <field name="start" since="23"/> + <field name="startColor"/> + <field name="startDelay" since="19"/> + <field name="startOffset"/> + <field name="startX" since="24"/> + <field name="startY" since="24"/> + <field name="startYear" deprecated="16"/> + <field name="stateListAnimator" since="21"/> + <field name="stateNotNeeded"/> + <field name="state_above_anchor"/> + <field name="state_accelerated" since="11"/> + <field name="state_activated" since="11"/> + <field name="state_active"/> + <field name="state_checkable"/> + <field name="state_checked"/> + <field name="state_drag_can_accept" since="14"/> + <field name="state_drag_hovered" since="14"/> + <field name="state_empty"/> + <field name="state_enabled"/> + <field name="state_expanded"/> + <field name="state_first"/> + <field name="state_focused"/> + <field name="state_hovered" since="14"/> + <field name="state_last"/> + <field name="state_long_pressable" since="3"/> + <field name="state_middle"/> + <field name="state_multiline" since="11"/> + <field name="state_pressed"/> + <field name="state_selected"/> + <field name="state_single"/> + <field name="state_window_focused"/> + <field name="staticWallpaperPreview" since="11"/> + <field name="statusBarColor" since="21"/> + <field name="stepSize"/> + <field name="stopWithTask" since="14"/> + <field name="streamType"/> + <field name="stretchColumns"/> + <field name="stretchMode"/> + <field name="strokeAlpha" since="21"/> + <field name="strokeColor" since="21"/> + <field name="strokeLineCap" since="21"/> + <field name="strokeLineJoin" since="21"/> + <field name="strokeMiterLimit" since="21"/> + <field name="strokeWidth" since="21"/> + <field name="subMenuArrow" since="24"/> + <field name="submitBackground" since="21"/> + <field name="subtitle" since="11"/> + <field name="subtitleTextAppearance" since="21"/> + <field name="subtitleTextColor" since="23"/> + <field name="subtitleTextStyle" since="11"/> + <field name="subtypeExtraValue" since="14"/> + <field name="subtypeId" since="17"/> + <field name="subtypeLocale" since="14"/> + <field name="suggestActionMsg"/> + <field name="suggestActionMsgColumn"/> + <field name="suggestionRowLayout" since="21"/> + <field name="summary"/> + <field name="summaryColumn" since="5"/> + <field name="summaryOff"/> + <field name="summaryOn"/> + <field name="supportsAssist" since="23"/> + <field name="supportsLaunchVoiceAssistFromKeyguard" since="23"/> + <field name="supportsLocalInteraction" since="24"/> + <field name="supportsPictureInPicture" since="24"/> + <field name="supportsRtl" since="17"/> + <field name="supportsSwitchingToNextInputMethod" since="19"/> + <field name="supportsUploading" since="5"/> + <field name="switchMinWidth" since="14"/> + <field name="switchPadding" since="14"/> + <field name="switchPreferenceStyle" since="14"/> + <field name="switchStyle" since="21"/> + <field name="switchTextAppearance" since="14"/> + <field name="switchTextOff" since="14"/> + <field name="switchTextOn" since="14"/> + <field name="syncable"/> + <field name="tabStripEnabled" since="8"/> + <field name="tabStripLeft" since="8"/> + <field name="tabStripRight" since="8"/> + <field name="tabWidgetStyle"/> + <field name="tag"/> + <field name="targetActivity"/> + <field name="targetClass"/> + <field name="targetDescriptions" since="14" deprecated="23"/> + <field name="targetId" since="19"/> + <field name="targetName" since="21"/> + <field name="targetPackage"/> + <field name="targetProcesses" since="26"/> + <field name="targetSandboxVersion" since="26"/> + <field name="targetSdkVersion" since="4"/> + <field name="taskAffinity"/> + <field name="taskCloseEnterAnimation"/> + <field name="taskCloseExitAnimation"/> + <field name="taskOpenEnterAnimation"/> + <field name="taskOpenExitAnimation"/> + <field name="taskToBackEnterAnimation"/> + <field name="taskToBackExitAnimation"/> + <field name="taskToFrontEnterAnimation"/> + <field name="taskToFrontExitAnimation"/> + <field name="tension" since="4"/> + <field name="testOnly" since="4"/> + <field name="text"/> + <field name="textAlignment" since="17"/> + <field name="textAllCaps" since="14"/> + <field name="textAppearance"/> + <field name="textAppearanceButton"/> + <field name="textAppearanceInverse"/> + <field name="textAppearanceLarge"/> + <field name="textAppearanceLargeInverse"/> + <field name="textAppearanceLargePopupMenu" since="11"/> + <field name="textAppearanceListItem" since="14"/> + <field name="textAppearanceListItemSecondary" since="21"/> + <field name="textAppearanceListItemSmall" since="14"/> + <field name="textAppearanceMedium"/> + <field name="textAppearanceMediumInverse"/> + <field name="textAppearancePopupMenuHeader" since="24"/> + <field name="textAppearanceSearchResultSubtitle" since="5"/> + <field name="textAppearanceSearchResultTitle" since="5"/> + <field name="textAppearanceSmall"/> + <field name="textAppearanceSmallInverse"/> + <field name="textAppearanceSmallPopupMenu" since="11"/> + <field name="textCheckMark"/> + <field name="textCheckMarkInverse"/> + <field name="textColor"/> + <field name="textColorAlertDialogListItem" since="11"/> + <field name="textColorHighlight"/> + <field name="textColorHighlightInverse" since="11"/> + <field name="textColorHint"/> + <field name="textColorHintInverse"/> + <field name="textColorLink"/> + <field name="textColorLinkInverse" since="11"/> + <field name="textColorPrimary"/> + <field name="textColorPrimaryDisableOnly"/> + <field name="textColorPrimaryInverse"/> + <field name="textColorPrimaryInverseDisableOnly" since="4"/> + <field name="textColorPrimaryInverseNoDisable"/> + <field name="textColorPrimaryNoDisable"/> + <field name="textColorSecondary"/> + <field name="textColorSecondaryInverse"/> + <field name="textColorSecondaryInverseNoDisable"/> + <field name="textColorSecondaryNoDisable"/> + <field name="textColorTertiary"/> + <field name="textColorTertiaryInverse"/> + <field name="textCursorDrawable" since="12"/> + <field name="textDirection" since="17"/> + <field name="textEditNoPasteWindowLayout" since="11"/> + <field name="textEditPasteWindowLayout" since="11"/> + <field name="textEditSideNoPasteWindowLayout" since="11"/> + <field name="textEditSidePasteWindowLayout" since="11"/> + <field name="textEditSuggestionItemLayout" since="14"/> + <field name="textFilterEnabled"/> + <field name="textIsSelectable" since="11"/> + <field name="textOff"/> + <field name="textOn"/> + <field name="textScaleX"/> + <field name="textSelectHandle" since="9"/> + <field name="textSelectHandleLeft" since="9"/> + <field name="textSelectHandleRight" since="9"/> + <field name="textSelectHandleWindowStyle" since="9"/> + <field name="textSize"/> + <field name="textStyle"/> + <field name="textSuggestionsWindowStyle" since="14"/> + <field name="textViewStyle"/> + <field name="theme"/> + <field name="thickness" since="3"/> + <field name="thicknessRatio"/> + <field name="thumb"/> + <field name="thumbOffset"/> + <field name="thumbPosition" since="23"/> + <field name="thumbTextPadding" since="14"/> + <field name="thumbTint" since="21"/> + <field name="thumbTintMode" since="21"/> + <field name="thumbnail" since="5"/> + <field name="tickMark" since="24"/> + <field name="tickMarkTint" since="24"/> + <field name="tickMarkTintMode" since="24"/> + <field name="tileMode"/> + <field name="tileModeX" since="21"/> + <field name="tileModeY" since="21"/> + <field name="timePickerDialogTheme" since="21"/> + <field name="timePickerMode" since="21"/> + <field name="timePickerStyle" since="21"/> + <field name="timeZone" since="17"/> + <field name="tint"/> + <field name="tintMode" since="21"/> + <field name="title"/> + <field name="titleCondensed"/> + <field name="titleMargin" since="24"/> + <field name="titleMarginBottom" since="24"/> + <field name="titleMarginEnd" since="24"/> + <field name="titleMarginStart" since="24"/> + <field name="titleMarginTop" since="24"/> + <field name="titleTextAppearance" since="21"/> + <field name="titleTextColor" since="23"/> + <field name="titleTextStyle" since="11"/> + <field name="toAlpha"/> + <field name="toDegrees"/> + <field name="toId" since="21"/> + <field name="toScene" since="19"/> + <field name="toXDelta"/> + <field name="toXScale"/> + <field name="toYDelta"/> + <field name="toYScale"/> + <field name="toolbarStyle" since="21"/> + <field name="tooltipText" since="26"/> + <field name="top"/> + <field name="topBright"/> + <field name="topDark"/> + <field name="topLeftRadius"/> + <field name="topOffset" since="3"/> + <field name="topRightRadius"/> + <field name="touchscreenBlocksFocus" since="21"/> + <field name="track" since="14"/> + <field name="trackTint" since="23"/> + <field name="trackTintMode" since="23"/> + <field name="transcriptMode"/> + <field name="transformPivotX" since="11"/> + <field name="transformPivotY" since="11"/> + <field name="transition" since="19"/> + <field name="transitionGroup" since="21"/> + <field name="transitionName" since="21"/> + <field name="transitionOrdering" since="19"/> + <field name="transitionVisibilityMode" since="21"/> + <field name="translateX" since="21"/> + <field name="translateY" since="21"/> + <field name="translationX" since="11"/> + <field name="translationY" since="11"/> + <field name="translationZ" since="21"/> + <field name="trimPathEnd" since="21"/> + <field name="trimPathOffset" since="21"/> + <field name="trimPathStart" since="21"/> + <field name="tunerCount" since="24"/> + <field name="type"/> + <field name="typeface"/> + <field name="uiOptions" since="14"/> + <field name="uncertainGestureColor" since="4"/> + <field name="unfocusedMonthDateColor" since="11" deprecated="23"/> + <field name="unselectedAlpha"/> + <field name="updatePeriodMillis" since="3"/> + <field name="use32bitAbi" since="24"/> + <field name="useDefaultMargins" since="14"/> + <field name="useIntrinsicSizeAsMinimum" since="11"/> + <field name="useLevel"/> + <field name="userVisible" since="5"/> + <field name="usesCleartextTraffic" since="23"/> + <field name="value"/> + <field name="valueFrom" since="11"/> + <field name="valueTo" since="11"/> + <field name="valueType" since="11"/> + <field name="variablePadding"/> + <field name="vendor" since="19"/> + <field name="version" since="24"/> + <field name="versionCode"/> + <field name="versionName"/> + <field name="verticalCorrection" since="3"/> + <field name="verticalDivider"/> + <field name="verticalGap" since="3"/> + <field name="verticalScrollbarPosition" since="11"/> + <field name="verticalSpacing"/> + <field name="viewportHeight" since="21"/> + <field name="viewportWidth" since="21"/> + <field name="visibility"/> + <field name="visible"/> + <field name="visibleToInstantApps" since="26"/> + <field name="vmSafeMode" since="8"/> + <field name="voiceIcon" since="21"/> + <field name="voiceLanguage" since="3"/> + <field name="voiceLanguageModel" since="3"/> + <field name="voiceMaxResults" since="3"/> + <field name="voicePromptText" since="3"/> + <field name="voiceSearchMode" since="3"/> + <field name="wallpaperCloseEnterAnimation" since="5"/> + <field name="wallpaperCloseExitAnimation" since="5"/> + <field name="wallpaperIntraCloseEnterAnimation" since="5"/> + <field name="wallpaperIntraCloseExitAnimation" since="5"/> + <field name="wallpaperIntraOpenEnterAnimation" since="5"/> + <field name="wallpaperIntraOpenExitAnimation" since="5"/> + <field name="wallpaperOpenEnterAnimation" since="5"/> + <field name="wallpaperOpenExitAnimation" since="5"/> + <field name="webTextViewStyle" since="8"/> + <field name="webViewStyle"/> + <field name="weekDayTextAppearance" since="11"/> + <field name="weekNumberColor" since="11" deprecated="23"/> + <field name="weekSeparatorLineColor" since="11" deprecated="23"/> + <field name="weightSum"/> + <field name="widgetCategory" since="17"/> + <field name="widgetLayout"/> + <field name="width"/> + <field name="windowActionBar" since="11"/> + <field name="windowActionBarOverlay" since="11"/> + <field name="windowActionModeOverlay" since="11"/> + <field name="windowActivityTransitions" since="21"/> + <field name="windowAllowEnterTransitionOverlap" since="21"/> + <field name="windowAllowReturnTransitionOverlap" since="21"/> + <field name="windowAnimationStyle"/> + <field name="windowBackground"/> + <field name="windowBackgroundFallback" since="24"/> + <field name="windowClipToOutline" since="21"/> + <field name="windowCloseOnTouchOutside" since="11"/> + <field name="windowContentOverlay"/> + <field name="windowContentTransitionManager" since="21"/> + <field name="windowContentTransitions" since="21"/> + <field name="windowDisablePreview" since="3"/> + <field name="windowDrawsSystemBarBackgrounds" since="21"/> + <field name="windowElevation" since="21"/> + <field name="windowEnableSplitTouch" since="11"/> + <field name="windowEnterAnimation"/> + <field name="windowEnterTransition" since="21"/> + <field name="windowExitAnimation"/> + <field name="windowExitTransition" since="21"/> + <field name="windowFrame"/> + <field name="windowFullscreen"/> + <field name="windowHideAnimation"/> + <field name="windowIsFloating"/> + <field name="windowIsTranslucent"/> + <field name="windowLightStatusBar" since="23"/> + <field name="windowMinWidthMajor" since="11"/> + <field name="windowMinWidthMinor" since="11"/> + <field name="windowNoDisplay" since="3"/> + <field name="windowNoTitle"/> + <field name="windowOverscan" since="18"/> + <field name="windowReenterTransition" since="21"/> + <field name="windowReturnTransition" since="21"/> + <field name="windowSharedElementEnterTransition" since="21"/> + <field name="windowSharedElementExitTransition" since="21"/> + <field name="windowSharedElementReenterTransition" since="21"/> + <field name="windowSharedElementReturnTransition" since="21"/> + <field name="windowSharedElementsUseOverlay" since="21"/> + <field name="windowShowAnimation"/> + <field name="windowShowWallpaper" since="5"/> + <field name="windowSoftInputMode" since="3"/> + <field name="windowSplashscreenContent" since="26"/> + <field name="windowSwipeToDismiss" since="20"/> + <field name="windowTitleBackgroundStyle"/> + <field name="windowTitleSize"/> + <field name="windowTitleStyle"/> + <field name="windowTransitionBackgroundFadeDuration" since="21"/> + <field name="windowTranslucentNavigation" since="19"/> + <field name="windowTranslucentStatus" since="19"/> + <field name="writePermission"/> + <field name="x"/> + <field name="xlargeScreens" since="9"/> + <field name="y"/> + <field name="yearListItemTextAppearance" since="21" deprecated="23"/> + <field name="yearListSelectorColor" since="21" deprecated="23"/> + <field name="yesNoPreferenceStyle"/> + <field name="zAdjustment"/> + </class> + <class name="android/R$bool" since="3"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/R$color" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="background_dark"/> + <field name="background_light"/> + <field name="black"/> + <field name="darker_gray"/> + <field name="holo_blue_bright" since="14"/> + <field name="holo_blue_dark" since="14"/> + <field name="holo_blue_light" since="14"/> + <field name="holo_green_dark" since="14"/> + <field name="holo_green_light" since="14"/> + <field name="holo_orange_dark" since="14"/> + <field name="holo_orange_light" since="14"/> + <field name="holo_purple" since="14"/> + <field name="holo_red_dark" since="14"/> + <field name="holo_red_light" since="14"/> + <field name="primary_text_dark"/> + <field name="primary_text_dark_nodisable"/> + <field name="primary_text_light"/> + <field name="primary_text_light_nodisable"/> + <field name="secondary_text_dark"/> + <field name="secondary_text_dark_nodisable"/> + <field name="secondary_text_light"/> + <field name="secondary_text_light_nodisable"/> + <field name="tab_indicator_text"/> + <field name="tertiary_text_dark"/> + <field name="tertiary_text_light"/> + <field name="transparent"/> + <field name="white"/> + <field name="widget_edittext_dark"/> + </class> + <class name="android/R$dimen" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="app_icon_size"/> + <field name="dialog_min_width_major" since="11"/> + <field name="dialog_min_width_minor" since="11"/> + <field name="notification_large_icon_height" since="11"/> + <field name="notification_large_icon_width" since="11"/> + <field name="thumbnail_height"/> + <field name="thumbnail_width"/> + </class> + <class name="android/R$drawable" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="alert_dark_frame"/> + <field name="alert_light_frame"/> + <field name="arrow_down_float"/> + <field name="arrow_up_float"/> + <field name="bottom_bar"/> + <field name="btn_default"/> + <field name="btn_default_small"/> + <field name="btn_dialog"/> + <field name="btn_dropdown"/> + <field name="btn_minus"/> + <field name="btn_plus"/> + <field name="btn_radio"/> + <field name="btn_star"/> + <field name="btn_star_big_off"/> + <field name="btn_star_big_on"/> + <field name="button_onoff_indicator_off"/> + <field name="button_onoff_indicator_on"/> + <field name="checkbox_off_background"/> + <field name="checkbox_on_background"/> + <field name="dark_header" since="3"/> + <field name="dialog_frame"/> + <field name="dialog_holo_dark_frame" since="11"/> + <field name="dialog_holo_light_frame" since="11"/> + <field name="divider_horizontal_bright"/> + <field name="divider_horizontal_dark"/> + <field name="divider_horizontal_dim_dark"/> + <field name="divider_horizontal_textfield"/> + <field name="edit_text"/> + <field name="editbox_background"/> + <field name="editbox_background_normal"/> + <field name="editbox_dropdown_dark_frame"/> + <field name="editbox_dropdown_light_frame"/> + <field name="gallery_thumb"/> + <field name="ic_btn_speak_now" since="3"/> + <field name="ic_delete"/> + <field name="ic_dialog_alert"/> + <field name="ic_dialog_dialer"/> + <field name="ic_dialog_email"/> + <field name="ic_dialog_info"/> + <field name="ic_dialog_map"/> + <field name="ic_input_add"/> + <field name="ic_input_delete"/> + <field name="ic_input_get"/> + <field name="ic_lock_idle_alarm"/> + <field name="ic_lock_idle_charging"/> + <field name="ic_lock_idle_lock"/> + <field name="ic_lock_idle_low_battery"/> + <field name="ic_lock_lock"/> + <field name="ic_lock_power_off"/> + <field name="ic_lock_silent_mode"/> + <field name="ic_lock_silent_mode_off"/> + <field name="ic_media_ff"/> + <field name="ic_media_next"/> + <field name="ic_media_pause"/> + <field name="ic_media_play"/> + <field name="ic_media_previous"/> + <field name="ic_media_rew"/> + <field name="ic_menu_add"/> + <field name="ic_menu_agenda"/> + <field name="ic_menu_always_landscape_portrait"/> + <field name="ic_menu_call"/> + <field name="ic_menu_camera"/> + <field name="ic_menu_close_clear_cancel"/> + <field name="ic_menu_compass"/> + <field name="ic_menu_crop"/> + <field name="ic_menu_day"/> + <field name="ic_menu_delete"/> + <field name="ic_menu_directions"/> + <field name="ic_menu_edit"/> + <field name="ic_menu_gallery"/> + <field name="ic_menu_help"/> + <field name="ic_menu_info_details"/> + <field name="ic_menu_manage"/> + <field name="ic_menu_mapmode"/> + <field name="ic_menu_month"/> + <field name="ic_menu_more"/> + <field name="ic_menu_my_calendar"/> + <field name="ic_menu_mylocation"/> + <field name="ic_menu_myplaces"/> + <field name="ic_menu_preferences"/> + <field name="ic_menu_recent_history"/> + <field name="ic_menu_report_image"/> + <field name="ic_menu_revert"/> + <field name="ic_menu_rotate"/> + <field name="ic_menu_save"/> + <field name="ic_menu_search"/> + <field name="ic_menu_send"/> + <field name="ic_menu_set_as"/> + <field name="ic_menu_share"/> + <field name="ic_menu_slideshow"/> + <field name="ic_menu_sort_alphabetically"/> + <field name="ic_menu_sort_by_size"/> + <field name="ic_menu_today"/> + <field name="ic_menu_upload"/> + <field name="ic_menu_upload_you_tube"/> + <field name="ic_menu_view"/> + <field name="ic_menu_week"/> + <field name="ic_menu_zoom"/> + <field name="ic_notification_clear_all"/> + <field name="ic_notification_overlay"/> + <field name="ic_partial_secure"/> + <field name="ic_popup_disk_full"/> + <field name="ic_popup_reminder"/> + <field name="ic_popup_sync"/> + <field name="ic_search_category_default"/> + <field name="ic_secure"/> + <field name="list_selector_background"/> + <field name="menu_frame"/> + <field name="menu_full_frame"/> + <field name="menuitem_background"/> + <field name="picture_frame"/> + <field name="presence_audio_away" since="9"/> + <field name="presence_audio_busy" since="9"/> + <field name="presence_audio_online" since="9"/> + <field name="presence_away"/> + <field name="presence_busy"/> + <field name="presence_invisible"/> + <field name="presence_offline"/> + <field name="presence_online"/> + <field name="presence_video_away" since="9"/> + <field name="presence_video_busy" since="9"/> + <field name="presence_video_online" since="9"/> + <field name="progress_horizontal"/> + <field name="progress_indeterminate_horizontal"/> + <field name="radiobutton_off_background"/> + <field name="radiobutton_on_background"/> + <field name="screen_background_dark"/> + <field name="screen_background_dark_transparent" since="5"/> + <field name="screen_background_light"/> + <field name="screen_background_light_transparent" since="5"/> + <field name="spinner_background"/> + <field name="spinner_dropdown_background"/> + <field name="star_big_off"/> + <field name="star_big_on"/> + <field name="star_off"/> + <field name="star_on"/> + <field name="stat_notify_call_mute"/> + <field name="stat_notify_chat"/> + <field name="stat_notify_error"/> + <field name="stat_notify_missed_call"/> + <field name="stat_notify_more"/> + <field name="stat_notify_sdcard"/> + <field name="stat_notify_sdcard_prepare" since="5"/> + <field name="stat_notify_sdcard_usb"/> + <field name="stat_notify_sync"/> + <field name="stat_notify_sync_noanim"/> + <field name="stat_notify_voicemail"/> + <field name="stat_sys_data_bluetooth"/> + <field name="stat_sys_download"/> + <field name="stat_sys_download_done"/> + <field name="stat_sys_headset"/> + <field name="stat_sys_phone_call" deprecated="16"/> + <field name="stat_sys_phone_call_forward" deprecated="16"/> + <field name="stat_sys_phone_call_on_hold" deprecated="16"/> + <field name="stat_sys_speakerphone"/> + <field name="stat_sys_upload"/> + <field name="stat_sys_upload_done"/> + <field name="stat_sys_vp_phone_call" since="4" deprecated="16"/> + <field name="stat_sys_vp_phone_call_on_hold" since="4" deprecated="16"/> + <field name="stat_sys_warning"/> + <field name="status_bar_item_app_background"/> + <field name="status_bar_item_background"/> + <field name="sym_action_call"/> + <field name="sym_action_chat"/> + <field name="sym_action_email"/> + <field name="sym_call_incoming"/> + <field name="sym_call_missed"/> + <field name="sym_call_outgoing"/> + <field name="sym_contact_card"/> + <field name="sym_def_app_icon"/> + <field name="title_bar"/> + <field name="title_bar_tall" since="3"/> + <field name="toast_frame"/> + <field name="zoom_plate"/> + </class> + <class name="android/R$fraction" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/R$id" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="accessibilityActionContextClick" since="23"/> + <field name="accessibilityActionMoveWindow" since="26"/> + <field name="accessibilityActionScrollDown" since="23"/> + <field name="accessibilityActionScrollLeft" since="23"/> + <field name="accessibilityActionScrollRight" since="23"/> + <field name="accessibilityActionScrollToPosition" since="23"/> + <field name="accessibilityActionScrollUp" since="23"/> + <field name="accessibilityActionSetProgress" since="24"/> + <field name="accessibilityActionShowOnScreen" since="23"/> + <field name="addToDictionary" since="3"/> + <field name="autofill" since="26"/> + <field name="background"/> + <field name="button1"/> + <field name="button2"/> + <field name="button3"/> + <field name="candidatesArea" since="3"/> + <field name="checkbox"/> + <field name="closeButton" since="3"/> + <field name="content"/> + <field name="copy" since="3"/> + <field name="copyUrl" since="3"/> + <field name="custom" since="8"/> + <field name="cut" since="3"/> + <field name="edit"/> + <field name="empty"/> + <field name="extractArea" since="3"/> + <field name="hint"/> + <field name="home" since="11"/> + <field name="icon"/> + <field name="icon1"/> + <field name="icon2"/> + <field name="icon_frame" since="24"/> + <field name="input"/> + <field name="inputArea" since="3"/> + <field name="inputExtractEditText" since="3"/> + <field name="keyboardView" since="3"/> + <field name="list"/> + <field name="list_container" since="24"/> + <field name="mask" since="21"/> + <field name="message"/> + <field name="navigationBarBackground" since="21"/> + <field name="paste" since="3"/> + <field name="pasteAsPlainText" since="23"/> + <field name="primary"/> + <field name="progress"/> + <field name="redo" since="23"/> + <field name="replaceText" since="23"/> + <field name="secondaryProgress"/> + <field name="selectAll" since="3"/> + <field name="selectTextMode" since="11"/> + <field name="selectedIcon"/> + <field name="shareText" since="23"/> + <field name="startSelectingText" since="3"/> + <field name="statusBarBackground" since="21"/> + <field name="stopSelectingText" since="3"/> + <field name="summary"/> + <field name="switchInputMethod" since="3"/> + <field name="switch_widget" since="24"/> + <field name="tabcontent"/> + <field name="tabhost"/> + <field name="tabs"/> + <field name="text1"/> + <field name="text2"/> + <field name="textAssist" since="26"/> + <field name="title"/> + <field name="toggle"/> + <field name="undo" since="23"/> + <field name="widget_frame"/> + </class> + <class name="android/R$integer" since="3"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="config_longAnimTime"/> + <field name="config_mediumAnimTime"/> + <field name="config_shortAnimTime"/> + <field name="status_bar_notification_info_maxnum" since="14"/> + </class> + <class name="android/R$interpolator" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="accelerate_cubic"/> + <field name="accelerate_decelerate"/> + <field name="accelerate_quad"/> + <field name="accelerate_quint"/> + <field name="anticipate"/> + <field name="anticipate_overshoot"/> + <field name="bounce"/> + <field name="cycle"/> + <field name="decelerate_cubic"/> + <field name="decelerate_quad"/> + <field name="decelerate_quint"/> + <field name="fast_out_linear_in" since="21"/> + <field name="fast_out_slow_in" since="21"/> + <field name="linear"/> + <field name="linear_out_slow_in" since="21"/> + <field name="overshoot"/> + </class> + <class name="android/R$layout" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="activity_list_item"/> + <field name="browser_link_context_header"/> + <field name="expandable_list_content"/> + <field name="list_content" since="11"/> + <field name="preference_category"/> + <field name="select_dialog_item"/> + <field name="select_dialog_multichoice"/> + <field name="select_dialog_singlechoice"/> + <field name="simple_dropdown_item_1line"/> + <field name="simple_expandable_list_item_1"/> + <field name="simple_expandable_list_item_2"/> + <field name="simple_gallery_item"/> + <field name="simple_list_item_1"/> + <field name="simple_list_item_2"/> + <field name="simple_list_item_activated_1" since="11"/> + <field name="simple_list_item_activated_2" since="11"/> + <field name="simple_list_item_checked"/> + <field name="simple_list_item_multiple_choice"/> + <field name="simple_list_item_single_choice"/> + <field name="simple_selectable_list_item" since="11"/> + <field name="simple_spinner_dropdown_item"/> + <field name="simple_spinner_item"/> + <field name="test_list_item"/> + <field name="two_line_list_item"/> + </class> + <class name="android/R$menu" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/R$mipmap" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="sym_def_app_icon"/> + </class> + <class name="android/R$plurals" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/R$raw" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/R$string" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="VideoView_error_button"/> + <field name="VideoView_error_text_invalid_progressive_playback" since="3"/> + <field name="VideoView_error_text_unknown"/> + <field name="VideoView_error_title"/> + <field name="cancel"/> + <field name="copy"/> + <field name="copyUrl"/> + <field name="cut"/> + <field name="defaultMsisdnAlphaTag"/> + <field name="defaultVoiceMailAlphaTag"/> + <field name="dialog_alert_title" since="3"/> + <field name="emptyPhoneNumber"/> + <field name="fingerprint_icon_content_description" since="23"/> + <field name="httpErrorBadUrl"/> + <field name="httpErrorUnsupportedScheme"/> + <field name="no"/> + <field name="ok"/> + <field name="paste"/> + <field name="paste_as_plain_text" since="26"/> + <field name="search_go"/> + <field name="selectAll"/> + <field name="selectTextMode" since="11"/> + <field name="status_bar_notification_info_overflow" since="14"/> + <field name="unknownName"/> + <field name="untitled"/> + <field name="yes"/> + </class> + <class name="android/R$style" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="Animation"/> + <field name="Animation_Activity"/> + <field name="Animation_Dialog"/> + <field name="Animation_InputMethod" since="5"/> + <field name="Animation_Toast"/> + <field name="Animation_Translucent"/> + <field name="DeviceDefault_ButtonBar" since="14"/> + <field name="DeviceDefault_ButtonBar_AlertDialog" since="14"/> + <field name="DeviceDefault_Light_ButtonBar" since="14"/> + <field name="DeviceDefault_Light_ButtonBar_AlertDialog" since="14"/> + <field name="DeviceDefault_Light_SegmentedButton" since="14"/> + <field name="DeviceDefault_SegmentedButton" since="14"/> + <field name="Holo_ButtonBar" since="11"/> + <field name="Holo_ButtonBar_AlertDialog" since="11"/> + <field name="Holo_Light_ButtonBar" since="11"/> + <field name="Holo_Light_ButtonBar_AlertDialog" since="11"/> + <field name="Holo_Light_SegmentedButton" since="11"/> + <field name="Holo_SegmentedButton" since="11"/> + <field name="MediaButton"/> + <field name="MediaButton_Ffwd"/> + <field name="MediaButton_Next"/> + <field name="MediaButton_Pause"/> + <field name="MediaButton_Play"/> + <field name="MediaButton_Previous"/> + <field name="MediaButton_Rew"/> + <field name="TextAppearance"/> + <field name="TextAppearance_DeviceDefault" since="14"/> + <field name="TextAppearance_DeviceDefault_DialogWindowTitle" since="14"/> + <field name="TextAppearance_DeviceDefault_Inverse" since="14"/> + <field name="TextAppearance_DeviceDefault_Large" since="14"/> + <field name="TextAppearance_DeviceDefault_Large_Inverse" since="14"/> + <field name="TextAppearance_DeviceDefault_Medium" since="14"/> + <field name="TextAppearance_DeviceDefault_Medium_Inverse" since="14"/> + <field name="TextAppearance_DeviceDefault_SearchResult_Subtitle" since="14"/> + <field name="TextAppearance_DeviceDefault_SearchResult_Title" since="14"/> + <field name="TextAppearance_DeviceDefault_Small" since="14"/> + <field name="TextAppearance_DeviceDefault_Small_Inverse" since="14"/> + <field name="TextAppearance_DeviceDefault_Widget" since="14"/> + <field name="TextAppearance_DeviceDefault_Widget_ActionBar_Menu" since="14"/> + <field name="TextAppearance_DeviceDefault_Widget_ActionBar_Subtitle" since="14"/> + <field name="TextAppearance_DeviceDefault_Widget_ActionBar_Subtitle_Inverse" since="14" deprecated="21"/> + <field name="TextAppearance_DeviceDefault_Widget_ActionBar_Title" since="14"/> + <field name="TextAppearance_DeviceDefault_Widget_ActionBar_Title_Inverse" since="14" deprecated="21"/> + <field name="TextAppearance_DeviceDefault_Widget_ActionMode_Subtitle" since="14"/> + <field name="TextAppearance_DeviceDefault_Widget_ActionMode_Subtitle_Inverse" since="14" deprecated="21"/> + <field name="TextAppearance_DeviceDefault_Widget_ActionMode_Title" since="14"/> + <field name="TextAppearance_DeviceDefault_Widget_ActionMode_Title_Inverse" since="14" deprecated="21"/> + <field name="TextAppearance_DeviceDefault_Widget_Button" since="14"/> + <field name="TextAppearance_DeviceDefault_Widget_DropDownHint" since="14"/> + <field name="TextAppearance_DeviceDefault_Widget_DropDownItem" since="14"/> + <field name="TextAppearance_DeviceDefault_Widget_EditText" since="14"/> + <field name="TextAppearance_DeviceDefault_Widget_IconMenu_Item" since="14"/> + <field name="TextAppearance_DeviceDefault_Widget_PopupMenu" since="14"/> + <field name="TextAppearance_DeviceDefault_Widget_PopupMenu_Large" since="14"/> + <field name="TextAppearance_DeviceDefault_Widget_PopupMenu_Small" since="14"/> + <field name="TextAppearance_DeviceDefault_Widget_TabWidget" since="14"/> + <field name="TextAppearance_DeviceDefault_Widget_TextView" since="14"/> + <field name="TextAppearance_DeviceDefault_Widget_TextView_PopupMenu" since="14"/> + <field name="TextAppearance_DeviceDefault_Widget_TextView_SpinnerItem" since="14"/> + <field name="TextAppearance_DeviceDefault_WindowTitle" since="14"/> + <field name="TextAppearance_DialogWindowTitle"/> + <field name="TextAppearance_Holo" since="13"/> + <field name="TextAppearance_Holo_DialogWindowTitle" since="13"/> + <field name="TextAppearance_Holo_Inverse" since="13"/> + <field name="TextAppearance_Holo_Large" since="13"/> + <field name="TextAppearance_Holo_Large_Inverse" since="13"/> + <field name="TextAppearance_Holo_Medium" since="13"/> + <field name="TextAppearance_Holo_Medium_Inverse" since="13"/> + <field name="TextAppearance_Holo_SearchResult_Subtitle" since="13"/> + <field name="TextAppearance_Holo_SearchResult_Title" since="13"/> + <field name="TextAppearance_Holo_Small" since="13"/> + <field name="TextAppearance_Holo_Small_Inverse" since="13"/> + <field name="TextAppearance_Holo_Widget" since="13"/> + <field name="TextAppearance_Holo_Widget_ActionBar_Menu" since="14"/> + <field name="TextAppearance_Holo_Widget_ActionBar_Subtitle" since="13"/> + <field name="TextAppearance_Holo_Widget_ActionBar_Subtitle_Inverse" since="14"/> + <field name="TextAppearance_Holo_Widget_ActionBar_Title" since="13"/> + <field name="TextAppearance_Holo_Widget_ActionBar_Title_Inverse" since="14"/> + <field name="TextAppearance_Holo_Widget_ActionMode_Subtitle" since="13"/> + <field name="TextAppearance_Holo_Widget_ActionMode_Subtitle_Inverse" since="14"/> + <field name="TextAppearance_Holo_Widget_ActionMode_Title" since="13"/> + <field name="TextAppearance_Holo_Widget_ActionMode_Title_Inverse" since="14"/> + <field name="TextAppearance_Holo_Widget_Button" since="13"/> + <field name="TextAppearance_Holo_Widget_DropDownHint" since="13"/> + <field name="TextAppearance_Holo_Widget_DropDownItem" since="13"/> + <field name="TextAppearance_Holo_Widget_EditText" since="13"/> + <field name="TextAppearance_Holo_Widget_IconMenu_Item" since="13"/> + <field name="TextAppearance_Holo_Widget_PopupMenu" since="13"/> + <field name="TextAppearance_Holo_Widget_PopupMenu_Large" since="13"/> + <field name="TextAppearance_Holo_Widget_PopupMenu_Small" since="13"/> + <field name="TextAppearance_Holo_Widget_TabWidget" since="13"/> + <field name="TextAppearance_Holo_Widget_TextView" since="13"/> + <field name="TextAppearance_Holo_Widget_TextView_PopupMenu" since="13"/> + <field name="TextAppearance_Holo_Widget_TextView_SpinnerItem" since="13"/> + <field name="TextAppearance_Holo_WindowTitle" since="13"/> + <field name="TextAppearance_Inverse"/> + <field name="TextAppearance_Large"/> + <field name="TextAppearance_Large_Inverse"/> + <field name="TextAppearance_Material" since="21"/> + <field name="TextAppearance_Material_Body1" since="21"/> + <field name="TextAppearance_Material_Body2" since="21"/> + <field name="TextAppearance_Material_Button" since="21"/> + <field name="TextAppearance_Material_Caption" since="21"/> + <field name="TextAppearance_Material_DialogWindowTitle" since="21"/> + <field name="TextAppearance_Material_Display1" since="21"/> + <field name="TextAppearance_Material_Display2" since="21"/> + <field name="TextAppearance_Material_Display3" since="21"/> + <field name="TextAppearance_Material_Display4" since="21"/> + <field name="TextAppearance_Material_Headline" since="21"/> + <field name="TextAppearance_Material_Inverse" since="21"/> + <field name="TextAppearance_Material_Large" since="21"/> + <field name="TextAppearance_Material_Large_Inverse" since="21"/> + <field name="TextAppearance_Material_Medium" since="21"/> + <field name="TextAppearance_Material_Medium_Inverse" since="21"/> + <field name="TextAppearance_Material_Menu" since="21"/> + <field name="TextAppearance_Material_Notification" since="21"/> + <field name="TextAppearance_Material_Notification_Emphasis" since="21"/> + <field name="TextAppearance_Material_Notification_Info" since="21"/> + <field name="TextAppearance_Material_Notification_Line2" since="21"/> + <field name="TextAppearance_Material_Notification_Time" since="21"/> + <field name="TextAppearance_Material_Notification_Title" since="21"/> + <field name="TextAppearance_Material_SearchResult_Subtitle" since="21"/> + <field name="TextAppearance_Material_SearchResult_Title" since="21"/> + <field name="TextAppearance_Material_Small" since="21"/> + <field name="TextAppearance_Material_Small_Inverse" since="21"/> + <field name="TextAppearance_Material_Subhead" since="21"/> + <field name="TextAppearance_Material_Title" since="21"/> + <field name="TextAppearance_Material_Widget" since="21"/> + <field name="TextAppearance_Material_Widget_ActionBar_Menu" since="21"/> + <field name="TextAppearance_Material_Widget_ActionBar_Subtitle" since="21"/> + <field name="TextAppearance_Material_Widget_ActionBar_Subtitle_Inverse" since="21"/> + <field name="TextAppearance_Material_Widget_ActionBar_Title" since="21"/> + <field name="TextAppearance_Material_Widget_ActionBar_Title_Inverse" since="21"/> + <field name="TextAppearance_Material_Widget_ActionMode_Subtitle" since="21"/> + <field name="TextAppearance_Material_Widget_ActionMode_Subtitle_Inverse" since="21"/> + <field name="TextAppearance_Material_Widget_ActionMode_Title" since="21"/> + <field name="TextAppearance_Material_Widget_ActionMode_Title_Inverse" since="21"/> + <field name="TextAppearance_Material_Widget_Button" since="21"/> + <field name="TextAppearance_Material_Widget_Button_Borderless_Colored" since="24"/> + <field name="TextAppearance_Material_Widget_Button_Colored" since="24"/> + <field name="TextAppearance_Material_Widget_Button_Inverse" since="23"/> + <field name="TextAppearance_Material_Widget_DropDownHint" since="21"/> + <field name="TextAppearance_Material_Widget_DropDownItem" since="21"/> + <field name="TextAppearance_Material_Widget_EditText" since="21"/> + <field name="TextAppearance_Material_Widget_IconMenu_Item" since="21"/> + <field name="TextAppearance_Material_Widget_PopupMenu" since="21"/> + <field name="TextAppearance_Material_Widget_PopupMenu_Large" since="21"/> + <field name="TextAppearance_Material_Widget_PopupMenu_Small" since="21"/> + <field name="TextAppearance_Material_Widget_TabWidget" since="21"/> + <field name="TextAppearance_Material_Widget_TextView" since="21"/> + <field name="TextAppearance_Material_Widget_TextView_PopupMenu" since="21"/> + <field name="TextAppearance_Material_Widget_TextView_SpinnerItem" since="21"/> + <field name="TextAppearance_Material_Widget_Toolbar_Subtitle" since="21"/> + <field name="TextAppearance_Material_Widget_Toolbar_Title" since="21"/> + <field name="TextAppearance_Material_WindowTitle" since="21"/> + <field name="TextAppearance_Medium"/> + <field name="TextAppearance_Medium_Inverse"/> + <field name="TextAppearance_Small"/> + <field name="TextAppearance_Small_Inverse"/> + <field name="TextAppearance_StatusBar_EventContent" since="9"/> + <field name="TextAppearance_StatusBar_EventContent_Title" since="9"/> + <field name="TextAppearance_StatusBar_Icon" since="9"/> + <field name="TextAppearance_StatusBar_Title" since="9"/> + <field name="TextAppearance_SuggestionHighlight" since="14"/> + <field name="TextAppearance_Theme"/> + <field name="TextAppearance_Theme_Dialog"/> + <field name="TextAppearance_Widget"/> + <field name="TextAppearance_Widget_Button"/> + <field name="TextAppearance_Widget_DropDownHint"/> + <field name="TextAppearance_Widget_DropDownItem"/> + <field name="TextAppearance_Widget_EditText"/> + <field name="TextAppearance_Widget_IconMenu_Item"/> + <field name="TextAppearance_Widget_PopupMenu_Large" since="11"/> + <field name="TextAppearance_Widget_PopupMenu_Small" since="11"/> + <field name="TextAppearance_Widget_TabWidget"/> + <field name="TextAppearance_Widget_TextView"/> + <field name="TextAppearance_Widget_TextView_PopupMenu"/> + <field name="TextAppearance_Widget_TextView_SpinnerItem"/> + <field name="TextAppearance_WindowTitle"/> + <field name="Theme"/> + <field name="ThemeOverlay" since="21"/> + <field name="ThemeOverlay_Material" since="21"/> + <field name="ThemeOverlay_Material_ActionBar" since="21"/> + <field name="ThemeOverlay_Material_Dark" since="21"/> + <field name="ThemeOverlay_Material_Dark_ActionBar" since="21"/> + <field name="ThemeOverlay_Material_Dialog" since="23"/> + <field name="ThemeOverlay_Material_Dialog_Alert" since="23"/> + <field name="ThemeOverlay_Material_Light" since="21"/> + <field name="Theme_Black"/> + <field name="Theme_Black_NoTitleBar"/> + <field name="Theme_Black_NoTitleBar_Fullscreen"/> + <field name="Theme_DeviceDefault" since="14"/> + <field name="Theme_DeviceDefault_Dialog" since="14"/> + <field name="Theme_DeviceDefault_DialogWhenLarge" since="14"/> + <field name="Theme_DeviceDefault_DialogWhenLarge_NoActionBar" since="14"/> + <field name="Theme_DeviceDefault_Dialog_Alert" since="22"/> + <field name="Theme_DeviceDefault_Dialog_MinWidth" since="14"/> + <field name="Theme_DeviceDefault_Dialog_NoActionBar" since="14"/> + <field name="Theme_DeviceDefault_Dialog_NoActionBar_MinWidth" since="14"/> + <field name="Theme_DeviceDefault_InputMethod" since="14"/> + <field name="Theme_DeviceDefault_Light" since="14"/> + <field name="Theme_DeviceDefault_Light_DarkActionBar" since="14"/> + <field name="Theme_DeviceDefault_Light_Dialog" since="14"/> + <field name="Theme_DeviceDefault_Light_DialogWhenLarge" since="14"/> + <field name="Theme_DeviceDefault_Light_DialogWhenLarge_NoActionBar" since="14"/> + <field name="Theme_DeviceDefault_Light_Dialog_Alert" since="22"/> + <field name="Theme_DeviceDefault_Light_Dialog_MinWidth" since="14"/> + <field name="Theme_DeviceDefault_Light_Dialog_NoActionBar" since="14"/> + <field name="Theme_DeviceDefault_Light_Dialog_NoActionBar_MinWidth" since="14"/> + <field name="Theme_DeviceDefault_Light_NoActionBar" since="14"/> + <field name="Theme_DeviceDefault_Light_NoActionBar_Fullscreen" since="14"/> + <field name="Theme_DeviceDefault_Light_NoActionBar_Overscan" since="18"/> + <field name="Theme_DeviceDefault_Light_NoActionBar_TranslucentDecor" since="19"/> + <field name="Theme_DeviceDefault_Light_Panel" since="14"/> + <field name="Theme_DeviceDefault_NoActionBar" since="14"/> + <field name="Theme_DeviceDefault_NoActionBar_Fullscreen" since="14"/> + <field name="Theme_DeviceDefault_NoActionBar_Overscan" since="18"/> + <field name="Theme_DeviceDefault_NoActionBar_TranslucentDecor" since="19"/> + <field name="Theme_DeviceDefault_Panel" since="14"/> + <field name="Theme_DeviceDefault_Settings" since="21"/> + <field name="Theme_DeviceDefault_Wallpaper" since="14"/> + <field name="Theme_DeviceDefault_Wallpaper_NoTitleBar" since="14"/> + <field name="Theme_Dialog"/> + <field name="Theme_Holo" since="11"/> + <field name="Theme_Holo_Dialog" since="11"/> + <field name="Theme_Holo_DialogWhenLarge" since="11"/> + <field name="Theme_Holo_DialogWhenLarge_NoActionBar" since="11"/> + <field name="Theme_Holo_Dialog_MinWidth" since="11"/> + <field name="Theme_Holo_Dialog_NoActionBar" since="11"/> + <field name="Theme_Holo_Dialog_NoActionBar_MinWidth" since="11"/> + <field name="Theme_Holo_InputMethod" since="11"/> + <field name="Theme_Holo_Light" since="11"/> + <field name="Theme_Holo_Light_DarkActionBar" since="14"/> + <field name="Theme_Holo_Light_Dialog" since="11"/> + <field name="Theme_Holo_Light_DialogWhenLarge" since="11"/> + <field name="Theme_Holo_Light_DialogWhenLarge_NoActionBar" since="11"/> + <field name="Theme_Holo_Light_Dialog_MinWidth" since="11"/> + <field name="Theme_Holo_Light_Dialog_NoActionBar" since="11"/> + <field name="Theme_Holo_Light_Dialog_NoActionBar_MinWidth" since="11"/> + <field name="Theme_Holo_Light_NoActionBar" since="13"/> + <field name="Theme_Holo_Light_NoActionBar_Fullscreen" since="13"/> + <field name="Theme_Holo_Light_NoActionBar_Overscan" since="18"/> + <field name="Theme_Holo_Light_NoActionBar_TranslucentDecor" since="19"/> + <field name="Theme_Holo_Light_Panel" since="11"/> + <field name="Theme_Holo_NoActionBar" since="11"/> + <field name="Theme_Holo_NoActionBar_Fullscreen" since="11"/> + <field name="Theme_Holo_NoActionBar_Overscan" since="18"/> + <field name="Theme_Holo_NoActionBar_TranslucentDecor" since="19"/> + <field name="Theme_Holo_Panel" since="11"/> + <field name="Theme_Holo_Wallpaper" since="11"/> + <field name="Theme_Holo_Wallpaper_NoTitleBar" since="11"/> + <field name="Theme_InputMethod" since="3"/> + <field name="Theme_Light"/> + <field name="Theme_Light_NoTitleBar"/> + <field name="Theme_Light_NoTitleBar_Fullscreen"/> + <field name="Theme_Light_Panel" since="3"/> + <field name="Theme_Light_WallpaperSettings" since="5"/> + <field name="Theme_Material" since="21"/> + <field name="Theme_Material_Dialog" since="21"/> + <field name="Theme_Material_DialogWhenLarge" since="21"/> + <field name="Theme_Material_DialogWhenLarge_NoActionBar" since="21"/> + <field name="Theme_Material_Dialog_Alert" since="21"/> + <field name="Theme_Material_Dialog_MinWidth" since="21"/> + <field name="Theme_Material_Dialog_NoActionBar" since="21"/> + <field name="Theme_Material_Dialog_NoActionBar_MinWidth" since="21"/> + <field name="Theme_Material_Dialog_Presentation" since="21"/> + <field name="Theme_Material_InputMethod" since="21"/> + <field name="Theme_Material_Light" since="21"/> + <field name="Theme_Material_Light_DarkActionBar" since="21"/> + <field name="Theme_Material_Light_Dialog" since="21"/> + <field name="Theme_Material_Light_DialogWhenLarge" since="21"/> + <field name="Theme_Material_Light_DialogWhenLarge_DarkActionBar" since="24"/> + <field name="Theme_Material_Light_DialogWhenLarge_NoActionBar" since="21"/> + <field name="Theme_Material_Light_Dialog_Alert" since="21"/> + <field name="Theme_Material_Light_Dialog_MinWidth" since="21"/> + <field name="Theme_Material_Light_Dialog_NoActionBar" since="21"/> + <field name="Theme_Material_Light_Dialog_NoActionBar_MinWidth" since="21"/> + <field name="Theme_Material_Light_Dialog_Presentation" since="21"/> + <field name="Theme_Material_Light_LightStatusBar" since="23"/> + <field name="Theme_Material_Light_NoActionBar" since="21"/> + <field name="Theme_Material_Light_NoActionBar_Fullscreen" since="21"/> + <field name="Theme_Material_Light_NoActionBar_Overscan" since="21"/> + <field name="Theme_Material_Light_NoActionBar_TranslucentDecor" since="21"/> + <field name="Theme_Material_Light_Panel" since="21"/> + <field name="Theme_Material_Light_Voice" since="21"/> + <field name="Theme_Material_NoActionBar" since="21"/> + <field name="Theme_Material_NoActionBar_Fullscreen" since="21"/> + <field name="Theme_Material_NoActionBar_Overscan" since="21"/> + <field name="Theme_Material_NoActionBar_TranslucentDecor" since="21"/> + <field name="Theme_Material_Panel" since="21"/> + <field name="Theme_Material_Settings" since="21"/> + <field name="Theme_Material_Voice" since="21"/> + <field name="Theme_Material_Wallpaper" since="21"/> + <field name="Theme_Material_Wallpaper_NoTitleBar" since="21"/> + <field name="Theme_NoDisplay" since="3"/> + <field name="Theme_NoTitleBar"/> + <field name="Theme_NoTitleBar_Fullscreen"/> + <field name="Theme_NoTitleBar_OverlayActionModes" since="11"/> + <field name="Theme_Panel" since="3"/> + <field name="Theme_Translucent"/> + <field name="Theme_Translucent_NoTitleBar"/> + <field name="Theme_Translucent_NoTitleBar_Fullscreen"/> + <field name="Theme_Wallpaper" since="5"/> + <field name="Theme_WallpaperSettings" since="5"/> + <field name="Theme_Wallpaper_NoTitleBar" since="5"/> + <field name="Theme_Wallpaper_NoTitleBar_Fullscreen" since="5"/> + <field name="Theme_WithActionBar" since="11"/> + <field name="Widget"/> + <field name="Widget_AbsListView"/> + <field name="Widget_ActionBar" since="11"/> + <field name="Widget_ActionBar_TabBar" since="13"/> + <field name="Widget_ActionBar_TabText" since="13"/> + <field name="Widget_ActionBar_TabView" since="13"/> + <field name="Widget_ActionButton" since="11"/> + <field name="Widget_ActionButton_CloseMode" since="11"/> + <field name="Widget_ActionButton_Overflow" since="11"/> + <field name="Widget_AutoCompleteTextView"/> + <field name="Widget_Button"/> + <field name="Widget_Button_Inset"/> + <field name="Widget_Button_Small"/> + <field name="Widget_Button_Toggle"/> + <field name="Widget_CalendarView" since="11"/> + <field name="Widget_CompoundButton"/> + <field name="Widget_CompoundButton_CheckBox"/> + <field name="Widget_CompoundButton_RadioButton"/> + <field name="Widget_CompoundButton_Star"/> + <field name="Widget_DatePicker" since="11"/> + <field name="Widget_DeviceDefault" since="14"/> + <field name="Widget_DeviceDefault_ActionBar" since="14"/> + <field name="Widget_DeviceDefault_ActionBar_Solid" since="14"/> + <field name="Widget_DeviceDefault_ActionBar_TabBar" since="14"/> + <field name="Widget_DeviceDefault_ActionBar_TabText" since="14"/> + <field name="Widget_DeviceDefault_ActionBar_TabView" since="14"/> + <field name="Widget_DeviceDefault_ActionButton" since="14"/> + <field name="Widget_DeviceDefault_ActionButton_CloseMode" since="14"/> + <field name="Widget_DeviceDefault_ActionButton_Overflow" since="14"/> + <field name="Widget_DeviceDefault_ActionButton_TextButton" since="14"/> + <field name="Widget_DeviceDefault_ActionMode" since="14"/> + <field name="Widget_DeviceDefault_AutoCompleteTextView" since="14"/> + <field name="Widget_DeviceDefault_Button" since="14"/> + <field name="Widget_DeviceDefault_Button_Borderless" since="14"/> + <field name="Widget_DeviceDefault_Button_Borderless_Small" since="14"/> + <field name="Widget_DeviceDefault_Button_Inset" since="14"/> + <field name="Widget_DeviceDefault_Button_Small" since="14"/> + <field name="Widget_DeviceDefault_Button_Toggle" since="14"/> + <field name="Widget_DeviceDefault_CalendarView" since="14"/> + <field name="Widget_DeviceDefault_CheckedTextView" since="17"/> + <field name="Widget_DeviceDefault_CompoundButton_CheckBox" since="14"/> + <field name="Widget_DeviceDefault_CompoundButton_RadioButton" since="14"/> + <field name="Widget_DeviceDefault_CompoundButton_Star" since="14"/> + <field name="Widget_DeviceDefault_DatePicker" since="14"/> + <field name="Widget_DeviceDefault_DropDownItem" since="14"/> + <field name="Widget_DeviceDefault_DropDownItem_Spinner" since="14"/> + <field name="Widget_DeviceDefault_EditText" since="14"/> + <field name="Widget_DeviceDefault_ExpandableListView" since="14"/> + <field name="Widget_DeviceDefault_FastScroll" since="21"/> + <field name="Widget_DeviceDefault_GridView" since="14"/> + <field name="Widget_DeviceDefault_HorizontalScrollView" since="14"/> + <field name="Widget_DeviceDefault_ImageButton" since="14"/> + <field name="Widget_DeviceDefault_Light" since="14"/> + <field name="Widget_DeviceDefault_Light_ActionBar" since="14"/> + <field name="Widget_DeviceDefault_Light_ActionBar_Solid" since="14"/> + <field name="Widget_DeviceDefault_Light_ActionBar_Solid_Inverse" since="14" deprecated="21"/> + <field name="Widget_DeviceDefault_Light_ActionBar_TabBar" since="14"/> + <field name="Widget_DeviceDefault_Light_ActionBar_TabBar_Inverse" since="14" deprecated="21"/> + <field name="Widget_DeviceDefault_Light_ActionBar_TabText" since="14"/> + <field name="Widget_DeviceDefault_Light_ActionBar_TabText_Inverse" since="14" deprecated="21"/> + <field name="Widget_DeviceDefault_Light_ActionBar_TabView" since="14"/> + <field name="Widget_DeviceDefault_Light_ActionBar_TabView_Inverse" since="14" deprecated="21"/> + <field name="Widget_DeviceDefault_Light_ActionButton" since="14"/> + <field name="Widget_DeviceDefault_Light_ActionButton_CloseMode" since="14"/> + <field name="Widget_DeviceDefault_Light_ActionButton_Overflow" since="14"/> + <field name="Widget_DeviceDefault_Light_ActionMode" since="14"/> + <field name="Widget_DeviceDefault_Light_ActionMode_Inverse" since="14" deprecated="21"/> + <field name="Widget_DeviceDefault_Light_AutoCompleteTextView" since="14"/> + <field name="Widget_DeviceDefault_Light_Button" since="14"/> + <field name="Widget_DeviceDefault_Light_Button_Borderless_Small" since="14"/> + <field name="Widget_DeviceDefault_Light_Button_Inset" since="14"/> + <field name="Widget_DeviceDefault_Light_Button_Small" since="14"/> + <field name="Widget_DeviceDefault_Light_Button_Toggle" since="14"/> + <field name="Widget_DeviceDefault_Light_CalendarView" since="14"/> + <field name="Widget_DeviceDefault_Light_CheckedTextView" since="17"/> + <field name="Widget_DeviceDefault_Light_CompoundButton_CheckBox" since="14"/> + <field name="Widget_DeviceDefault_Light_CompoundButton_RadioButton" since="14"/> + <field name="Widget_DeviceDefault_Light_CompoundButton_Star" since="14"/> + <field name="Widget_DeviceDefault_Light_DropDownItem" since="14"/> + <field name="Widget_DeviceDefault_Light_DropDownItem_Spinner" since="14"/> + <field name="Widget_DeviceDefault_Light_EditText" since="14"/> + <field name="Widget_DeviceDefault_Light_ExpandableListView" since="14"/> + <field name="Widget_DeviceDefault_Light_FastScroll" since="21"/> + <field name="Widget_DeviceDefault_Light_GridView" since="14"/> + <field name="Widget_DeviceDefault_Light_HorizontalScrollView" since="14"/> + <field name="Widget_DeviceDefault_Light_ImageButton" since="14"/> + <field name="Widget_DeviceDefault_Light_ListPopupWindow" since="14"/> + <field name="Widget_DeviceDefault_Light_ListView" since="14"/> + <field name="Widget_DeviceDefault_Light_ListView_DropDown" since="14"/> + <field name="Widget_DeviceDefault_Light_MediaRouteButton" since="16"/> + <field name="Widget_DeviceDefault_Light_PopupMenu" since="14"/> + <field name="Widget_DeviceDefault_Light_PopupWindow" since="14"/> + <field name="Widget_DeviceDefault_Light_ProgressBar" since="14"/> + <field name="Widget_DeviceDefault_Light_ProgressBar_Horizontal" since="14"/> + <field name="Widget_DeviceDefault_Light_ProgressBar_Inverse" since="14"/> + <field name="Widget_DeviceDefault_Light_ProgressBar_Large" since="14"/> + <field name="Widget_DeviceDefault_Light_ProgressBar_Large_Inverse" since="14"/> + <field name="Widget_DeviceDefault_Light_ProgressBar_Small" since="14"/> + <field name="Widget_DeviceDefault_Light_ProgressBar_Small_Inverse" since="14"/> + <field name="Widget_DeviceDefault_Light_ProgressBar_Small_Title" since="14"/> + <field name="Widget_DeviceDefault_Light_RatingBar" since="14"/> + <field name="Widget_DeviceDefault_Light_RatingBar_Indicator" since="14"/> + <field name="Widget_DeviceDefault_Light_RatingBar_Small" since="14"/> + <field name="Widget_DeviceDefault_Light_ScrollView" since="14"/> + <field name="Widget_DeviceDefault_Light_SeekBar" since="14"/> + <field name="Widget_DeviceDefault_Light_Spinner" since="14"/> + <field name="Widget_DeviceDefault_Light_StackView" since="21"/> + <field name="Widget_DeviceDefault_Light_Tab" since="14"/> + <field name="Widget_DeviceDefault_Light_TabWidget" since="14"/> + <field name="Widget_DeviceDefault_Light_TextView" since="14"/> + <field name="Widget_DeviceDefault_Light_TextView_SpinnerItem" since="14"/> + <field name="Widget_DeviceDefault_Light_WebTextView" since="14"/> + <field name="Widget_DeviceDefault_Light_WebView" since="14"/> + <field name="Widget_DeviceDefault_ListPopupWindow" since="14"/> + <field name="Widget_DeviceDefault_ListView" since="14"/> + <field name="Widget_DeviceDefault_ListView_DropDown" since="14"/> + <field name="Widget_DeviceDefault_MediaRouteButton" since="16"/> + <field name="Widget_DeviceDefault_PopupMenu" since="14"/> + <field name="Widget_DeviceDefault_PopupWindow" since="14"/> + <field name="Widget_DeviceDefault_ProgressBar" since="14"/> + <field name="Widget_DeviceDefault_ProgressBar_Horizontal" since="14"/> + <field name="Widget_DeviceDefault_ProgressBar_Large" since="14"/> + <field name="Widget_DeviceDefault_ProgressBar_Small" since="14"/> + <field name="Widget_DeviceDefault_ProgressBar_Small_Title" since="14"/> + <field name="Widget_DeviceDefault_RatingBar" since="14"/> + <field name="Widget_DeviceDefault_RatingBar_Indicator" since="14"/> + <field name="Widget_DeviceDefault_RatingBar_Small" since="14"/> + <field name="Widget_DeviceDefault_ScrollView" since="14"/> + <field name="Widget_DeviceDefault_SeekBar" since="14"/> + <field name="Widget_DeviceDefault_Spinner" since="14"/> + <field name="Widget_DeviceDefault_StackView" since="21"/> + <field name="Widget_DeviceDefault_Tab" since="14"/> + <field name="Widget_DeviceDefault_TabWidget" since="14"/> + <field name="Widget_DeviceDefault_TextView" since="14"/> + <field name="Widget_DeviceDefault_TextView_SpinnerItem" since="14"/> + <field name="Widget_DeviceDefault_WebTextView" since="14"/> + <field name="Widget_DeviceDefault_WebView" since="14"/> + <field name="Widget_DropDownItem"/> + <field name="Widget_DropDownItem_Spinner"/> + <field name="Widget_EditText"/> + <field name="Widget_ExpandableListView"/> + <field name="Widget_FastScroll" since="21"/> + <field name="Widget_FragmentBreadCrumbs" since="11"/> + <field name="Widget_Gallery"/> + <field name="Widget_GridView"/> + <field name="Widget_Holo" since="11"/> + <field name="Widget_Holo_ActionBar" since="11"/> + <field name="Widget_Holo_ActionBar_Solid" since="14"/> + <field name="Widget_Holo_ActionBar_TabBar" since="13"/> + <field name="Widget_Holo_ActionBar_TabText" since="13"/> + <field name="Widget_Holo_ActionBar_TabView" since="13"/> + <field name="Widget_Holo_ActionButton" since="11"/> + <field name="Widget_Holo_ActionButton_CloseMode" since="11"/> + <field name="Widget_Holo_ActionButton_Overflow" since="11"/> + <field name="Widget_Holo_ActionButton_TextButton" since="11"/> + <field name="Widget_Holo_ActionMode" since="11"/> + <field name="Widget_Holo_AutoCompleteTextView" since="11"/> + <field name="Widget_Holo_Button" since="11"/> + <field name="Widget_Holo_Button_Borderless" since="11"/> + <field name="Widget_Holo_Button_Borderless_Small" since="14"/> + <field name="Widget_Holo_Button_Inset" since="11"/> + <field name="Widget_Holo_Button_Small" since="11"/> + <field name="Widget_Holo_Button_Toggle" since="11"/> + <field name="Widget_Holo_CalendarView" since="11"/> + <field name="Widget_Holo_CheckedTextView" since="17"/> + <field name="Widget_Holo_CompoundButton_CheckBox" since="11"/> + <field name="Widget_Holo_CompoundButton_RadioButton" since="11"/> + <field name="Widget_Holo_CompoundButton_Star" since="11"/> + <field name="Widget_Holo_DatePicker" since="11"/> + <field name="Widget_Holo_DropDownItem" since="11"/> + <field name="Widget_Holo_DropDownItem_Spinner" since="11"/> + <field name="Widget_Holo_EditText" since="11"/> + <field name="Widget_Holo_ExpandableListView" since="11"/> + <field name="Widget_Holo_GridView" since="11"/> + <field name="Widget_Holo_HorizontalScrollView" since="11"/> + <field name="Widget_Holo_ImageButton" since="11"/> + <field name="Widget_Holo_Light" since="11"/> + <field name="Widget_Holo_Light_ActionBar" since="11"/> + <field name="Widget_Holo_Light_ActionBar_Solid" since="14"/> + <field name="Widget_Holo_Light_ActionBar_Solid_Inverse" since="14"/> + <field name="Widget_Holo_Light_ActionBar_TabBar" since="13"/> + <field name="Widget_Holo_Light_ActionBar_TabBar_Inverse" since="14"/> + <field name="Widget_Holo_Light_ActionBar_TabText" since="13"/> + <field name="Widget_Holo_Light_ActionBar_TabText_Inverse" since="14"/> + <field name="Widget_Holo_Light_ActionBar_TabView" since="13"/> + <field name="Widget_Holo_Light_ActionBar_TabView_Inverse" since="14"/> + <field name="Widget_Holo_Light_ActionButton" since="11"/> + <field name="Widget_Holo_Light_ActionButton_CloseMode" since="11"/> + <field name="Widget_Holo_Light_ActionButton_Overflow" since="11"/> + <field name="Widget_Holo_Light_ActionMode" since="11"/> + <field name="Widget_Holo_Light_ActionMode_Inverse" since="14"/> + <field name="Widget_Holo_Light_AutoCompleteTextView" since="11"/> + <field name="Widget_Holo_Light_Button" since="11"/> + <field name="Widget_Holo_Light_Button_Borderless_Small" since="14"/> + <field name="Widget_Holo_Light_Button_Inset" since="11"/> + <field name="Widget_Holo_Light_Button_Small" since="11"/> + <field name="Widget_Holo_Light_Button_Toggle" since="11"/> + <field name="Widget_Holo_Light_CalendarView" since="11"/> + <field name="Widget_Holo_Light_CheckedTextView" since="17"/> + <field name="Widget_Holo_Light_CompoundButton_CheckBox" since="11"/> + <field name="Widget_Holo_Light_CompoundButton_RadioButton" since="11"/> + <field name="Widget_Holo_Light_CompoundButton_Star" since="11"/> + <field name="Widget_Holo_Light_DropDownItem" since="11"/> + <field name="Widget_Holo_Light_DropDownItem_Spinner" since="11"/> + <field name="Widget_Holo_Light_EditText" since="11"/> + <field name="Widget_Holo_Light_ExpandableListView" since="11"/> + <field name="Widget_Holo_Light_GridView" since="11"/> + <field name="Widget_Holo_Light_HorizontalScrollView" since="11"/> + <field name="Widget_Holo_Light_ImageButton" since="11"/> + <field name="Widget_Holo_Light_ListPopupWindow" since="11"/> + <field name="Widget_Holo_Light_ListView" since="11"/> + <field name="Widget_Holo_Light_ListView_DropDown" since="11"/> + <field name="Widget_Holo_Light_MediaRouteButton" since="16"/> + <field name="Widget_Holo_Light_PopupMenu" since="11"/> + <field name="Widget_Holo_Light_PopupWindow" since="11"/> + <field name="Widget_Holo_Light_ProgressBar" since="11"/> + <field name="Widget_Holo_Light_ProgressBar_Horizontal" since="11"/> + <field name="Widget_Holo_Light_ProgressBar_Inverse" since="11"/> + <field name="Widget_Holo_Light_ProgressBar_Large" since="11"/> + <field name="Widget_Holo_Light_ProgressBar_Large_Inverse" since="11"/> + <field name="Widget_Holo_Light_ProgressBar_Small" since="11"/> + <field name="Widget_Holo_Light_ProgressBar_Small_Inverse" since="11"/> + <field name="Widget_Holo_Light_ProgressBar_Small_Title" since="11"/> + <field name="Widget_Holo_Light_RatingBar" since="11"/> + <field name="Widget_Holo_Light_RatingBar_Indicator" since="11"/> + <field name="Widget_Holo_Light_RatingBar_Small" since="11"/> + <field name="Widget_Holo_Light_ScrollView" since="11"/> + <field name="Widget_Holo_Light_SeekBar" since="11"/> + <field name="Widget_Holo_Light_Spinner" since="11"/> + <field name="Widget_Holo_Light_Tab" since="11"/> + <field name="Widget_Holo_Light_TabWidget" since="11"/> + <field name="Widget_Holo_Light_TextView" since="11"/> + <field name="Widget_Holo_Light_TextView_SpinnerItem" since="11"/> + <field name="Widget_Holo_Light_WebTextView" since="11"/> + <field name="Widget_Holo_Light_WebView" since="11"/> + <field name="Widget_Holo_ListPopupWindow" since="11"/> + <field name="Widget_Holo_ListView" since="11"/> + <field name="Widget_Holo_ListView_DropDown" since="11"/> + <field name="Widget_Holo_MediaRouteButton" since="16"/> + <field name="Widget_Holo_PopupMenu" since="11"/> + <field name="Widget_Holo_PopupWindow" since="11"/> + <field name="Widget_Holo_ProgressBar" since="11"/> + <field name="Widget_Holo_ProgressBar_Horizontal" since="11"/> + <field name="Widget_Holo_ProgressBar_Large" since="11"/> + <field name="Widget_Holo_ProgressBar_Small" since="11"/> + <field name="Widget_Holo_ProgressBar_Small_Title" since="11"/> + <field name="Widget_Holo_RatingBar" since="11"/> + <field name="Widget_Holo_RatingBar_Indicator" since="11"/> + <field name="Widget_Holo_RatingBar_Small" since="11"/> + <field name="Widget_Holo_ScrollView" since="11"/> + <field name="Widget_Holo_SeekBar" since="11"/> + <field name="Widget_Holo_Spinner" since="11"/> + <field name="Widget_Holo_Tab" since="11"/> + <field name="Widget_Holo_TabWidget" since="11"/> + <field name="Widget_Holo_TextView" since="11"/> + <field name="Widget_Holo_TextView_SpinnerItem" since="11"/> + <field name="Widget_Holo_WebTextView" since="11"/> + <field name="Widget_Holo_WebView" since="11"/> + <field name="Widget_ImageButton"/> + <field name="Widget_ImageWell"/> + <field name="Widget_KeyboardView" since="3"/> + <field name="Widget_ListPopupWindow" since="11"/> + <field name="Widget_ListView"/> + <field name="Widget_ListView_DropDown"/> + <field name="Widget_ListView_Menu"/> + <field name="Widget_ListView_White"/> + <field name="Widget_Material" since="21"/> + <field name="Widget_Material_ActionBar" since="21"/> + <field name="Widget_Material_ActionBar_Solid" since="21"/> + <field name="Widget_Material_ActionBar_TabBar" since="21"/> + <field name="Widget_Material_ActionBar_TabText" since="21"/> + <field name="Widget_Material_ActionBar_TabView" since="21"/> + <field name="Widget_Material_ActionButton" since="21"/> + <field name="Widget_Material_ActionButton_CloseMode" since="21"/> + <field name="Widget_Material_ActionButton_Overflow" since="21"/> + <field name="Widget_Material_ActionMode" since="21"/> + <field name="Widget_Material_AutoCompleteTextView" since="21"/> + <field name="Widget_Material_Button" since="21"/> + <field name="Widget_Material_ButtonBar" since="21"/> + <field name="Widget_Material_ButtonBar_AlertDialog" since="21"/> + <field name="Widget_Material_Button_Borderless" since="21"/> + <field name="Widget_Material_Button_Borderless_Colored" since="21"/> + <field name="Widget_Material_Button_Borderless_Small" since="21"/> + <field name="Widget_Material_Button_Colored" since="23"/> + <field name="Widget_Material_Button_Inset" since="21"/> + <field name="Widget_Material_Button_Small" since="21"/> + <field name="Widget_Material_Button_Toggle" since="21"/> + <field name="Widget_Material_CalendarView" since="21"/> + <field name="Widget_Material_CheckedTextView" since="21"/> + <field name="Widget_Material_CompoundButton_CheckBox" since="21"/> + <field name="Widget_Material_CompoundButton_RadioButton" since="21"/> + <field name="Widget_Material_CompoundButton_Star" since="21"/> + <field name="Widget_Material_CompoundButton_Switch" since="24"/> + <field name="Widget_Material_DatePicker" since="21"/> + <field name="Widget_Material_DropDownItem" since="21"/> + <field name="Widget_Material_DropDownItem_Spinner" since="21"/> + <field name="Widget_Material_EditText" since="21"/> + <field name="Widget_Material_ExpandableListView" since="21"/> + <field name="Widget_Material_FastScroll" since="21"/> + <field name="Widget_Material_GridView" since="21"/> + <field name="Widget_Material_HorizontalScrollView" since="21"/> + <field name="Widget_Material_ImageButton" since="21"/> + <field name="Widget_Material_Light" since="21"/> + <field name="Widget_Material_Light_ActionBar" since="21"/> + <field name="Widget_Material_Light_ActionBar_Solid" since="21"/> + <field name="Widget_Material_Light_ActionBar_TabBar" since="21"/> + <field name="Widget_Material_Light_ActionBar_TabText" since="21"/> + <field name="Widget_Material_Light_ActionBar_TabView" since="21"/> + <field name="Widget_Material_Light_ActionButton" since="21"/> + <field name="Widget_Material_Light_ActionButton_CloseMode" since="21"/> + <field name="Widget_Material_Light_ActionButton_Overflow" since="21"/> + <field name="Widget_Material_Light_ActionMode" since="21"/> + <field name="Widget_Material_Light_AutoCompleteTextView" since="21"/> + <field name="Widget_Material_Light_Button" since="21"/> + <field name="Widget_Material_Light_ButtonBar" since="21"/> + <field name="Widget_Material_Light_ButtonBar_AlertDialog" since="21"/> + <field name="Widget_Material_Light_Button_Borderless" since="21"/> + <field name="Widget_Material_Light_Button_Borderless_Colored" since="21"/> + <field name="Widget_Material_Light_Button_Borderless_Small" since="21"/> + <field name="Widget_Material_Light_Button_Inset" since="21"/> + <field name="Widget_Material_Light_Button_Small" since="21"/> + <field name="Widget_Material_Light_Button_Toggle" since="21"/> + <field name="Widget_Material_Light_CalendarView" since="21"/> + <field name="Widget_Material_Light_CheckedTextView" since="21"/> + <field name="Widget_Material_Light_CompoundButton_CheckBox" since="21"/> + <field name="Widget_Material_Light_CompoundButton_RadioButton" since="21"/> + <field name="Widget_Material_Light_CompoundButton_Star" since="21"/> + <field name="Widget_Material_Light_CompoundButton_Switch" since="24"/> + <field name="Widget_Material_Light_DatePicker" since="21"/> + <field name="Widget_Material_Light_DropDownItem" since="21"/> + <field name="Widget_Material_Light_DropDownItem_Spinner" since="21"/> + <field name="Widget_Material_Light_EditText" since="21"/> + <field name="Widget_Material_Light_ExpandableListView" since="21"/> + <field name="Widget_Material_Light_FastScroll" since="21"/> + <field name="Widget_Material_Light_GridView" since="21"/> + <field name="Widget_Material_Light_HorizontalScrollView" since="21"/> + <field name="Widget_Material_Light_ImageButton" since="21"/> + <field name="Widget_Material_Light_ListPopupWindow" since="21"/> + <field name="Widget_Material_Light_ListView" since="21"/> + <field name="Widget_Material_Light_ListView_DropDown" since="21"/> + <field name="Widget_Material_Light_MediaRouteButton" since="21"/> + <field name="Widget_Material_Light_NumberPicker" since="24"/> + <field name="Widget_Material_Light_PopupMenu" since="21"/> + <field name="Widget_Material_Light_PopupMenu_Overflow" since="21"/> + <field name="Widget_Material_Light_PopupWindow" since="21"/> + <field name="Widget_Material_Light_ProgressBar" since="21"/> + <field name="Widget_Material_Light_ProgressBar_Horizontal" since="21"/> + <field name="Widget_Material_Light_ProgressBar_Inverse" since="21"/> + <field name="Widget_Material_Light_ProgressBar_Large" since="21"/> + <field name="Widget_Material_Light_ProgressBar_Large_Inverse" since="21"/> + <field name="Widget_Material_Light_ProgressBar_Small" since="21"/> + <field name="Widget_Material_Light_ProgressBar_Small_Inverse" since="21"/> + <field name="Widget_Material_Light_ProgressBar_Small_Title" since="21"/> + <field name="Widget_Material_Light_RatingBar" since="21"/> + <field name="Widget_Material_Light_RatingBar_Indicator" since="21"/> + <field name="Widget_Material_Light_RatingBar_Small" since="21"/> + <field name="Widget_Material_Light_ScrollView" since="21"/> + <field name="Widget_Material_Light_SearchView" since="21"/> + <field name="Widget_Material_Light_SeekBar" since="21"/> + <field name="Widget_Material_Light_SegmentedButton" since="21"/> + <field name="Widget_Material_Light_Spinner" since="21"/> + <field name="Widget_Material_Light_Spinner_Underlined" since="21"/> + <field name="Widget_Material_Light_StackView" since="21"/> + <field name="Widget_Material_Light_Tab" since="21"/> + <field name="Widget_Material_Light_TabWidget" since="21"/> + <field name="Widget_Material_Light_TextView" since="21"/> + <field name="Widget_Material_Light_TextView_SpinnerItem" since="21"/> + <field name="Widget_Material_Light_TimePicker" since="21"/> + <field name="Widget_Material_Light_WebTextView" since="21"/> + <field name="Widget_Material_Light_WebView" since="21"/> + <field name="Widget_Material_ListPopupWindow" since="21"/> + <field name="Widget_Material_ListView" since="21"/> + <field name="Widget_Material_ListView_DropDown" since="21"/> + <field name="Widget_Material_MediaRouteButton" since="21"/> + <field name="Widget_Material_NumberPicker" since="24"/> + <field name="Widget_Material_PopupMenu" since="21"/> + <field name="Widget_Material_PopupMenu_Overflow" since="21"/> + <field name="Widget_Material_PopupWindow" since="21"/> + <field name="Widget_Material_ProgressBar" since="21"/> + <field name="Widget_Material_ProgressBar_Horizontal" since="21"/> + <field name="Widget_Material_ProgressBar_Large" since="21"/> + <field name="Widget_Material_ProgressBar_Small" since="21"/> + <field name="Widget_Material_ProgressBar_Small_Title" since="21"/> + <field name="Widget_Material_RatingBar" since="21"/> + <field name="Widget_Material_RatingBar_Indicator" since="21"/> + <field name="Widget_Material_RatingBar_Small" since="21"/> + <field name="Widget_Material_ScrollView" since="21"/> + <field name="Widget_Material_SearchView" since="21"/> + <field name="Widget_Material_SeekBar" since="21"/> + <field name="Widget_Material_SeekBar_Discrete" since="24"/> + <field name="Widget_Material_SegmentedButton" since="21"/> + <field name="Widget_Material_Spinner" since="21"/> + <field name="Widget_Material_Spinner_Underlined" since="21"/> + <field name="Widget_Material_StackView" since="21"/> + <field name="Widget_Material_Tab" since="21"/> + <field name="Widget_Material_TabWidget" since="21"/> + <field name="Widget_Material_TextView" since="21"/> + <field name="Widget_Material_TextView_SpinnerItem" since="21"/> + <field name="Widget_Material_TimePicker" since="21"/> + <field name="Widget_Material_Toolbar" since="21"/> + <field name="Widget_Material_Toolbar_Button_Navigation" since="21"/> + <field name="Widget_Material_WebTextView" since="21"/> + <field name="Widget_Material_WebView" since="21"/> + <field name="Widget_PopupMenu" since="11"/> + <field name="Widget_PopupWindow"/> + <field name="Widget_ProgressBar"/> + <field name="Widget_ProgressBar_Horizontal"/> + <field name="Widget_ProgressBar_Inverse" since="4"/> + <field name="Widget_ProgressBar_Large"/> + <field name="Widget_ProgressBar_Large_Inverse" since="4"/> + <field name="Widget_ProgressBar_Small"/> + <field name="Widget_ProgressBar_Small_Inverse" since="4"/> + <field name="Widget_RatingBar"/> + <field name="Widget_ScrollView"/> + <field name="Widget_SeekBar"/> + <field name="Widget_Spinner"/> + <field name="Widget_Spinner_DropDown" since="11"/> + <field name="Widget_StackView" since="21"/> + <field name="Widget_TabWidget"/> + <field name="Widget_TextView"/> + <field name="Widget_TextView_PopupMenu"/> + <field name="Widget_TextView_SpinnerItem"/> + <field name="Widget_Toolbar" since="21"/> + <field name="Widget_Toolbar_Button_Navigation" since="21"/> + <field name="Widget_WebView"/> + </class> + <class name="android/R$transition" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="explode"/> + <field name="fade"/> + <field name="move"/> + <field name="no_transition"/> + <field name="slide_bottom"/> + <field name="slide_left"/> + <field name="slide_right"/> + <field name="slide_top"/> + </class> + <class name="android/R$xml" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/accessibilityservice/AccessibilityButtonController" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="isAccessibilityButtonAvailable()Z"/> + <method name="registerAccessibilityButtonCallback(Landroid/accessibilityservice/AccessibilityButtonController$AccessibilityButtonCallback;)V"/> + <method name="registerAccessibilityButtonCallback(Landroid/accessibilityservice/AccessibilityButtonController$AccessibilityButtonCallback;Landroid/os/Handler;)V"/> + <method name="unregisterAccessibilityButtonCallback(Landroid/accessibilityservice/AccessibilityButtonController$AccessibilityButtonCallback;)V"/> + </class> + <class name="android/accessibilityservice/AccessibilityButtonController$AccessibilityButtonCallback" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onAvailabilityChanged(Landroid/accessibilityservice/AccessibilityButtonController;Z)V"/> + <method name="onClicked(Landroid/accessibilityservice/AccessibilityButtonController;)V"/> + </class> + <class name="android/accessibilityservice/AccessibilityService" since="4"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="disableSelf()V" since="24"/> + <method name="dispatchGesture(Landroid/accessibilityservice/GestureDescription;Landroid/accessibilityservice/AccessibilityService$GestureResultCallback;Landroid/os/Handler;)Z" since="24"/> + <method name="findFocus(I)Landroid/view/accessibility/AccessibilityNodeInfo;" since="21"/> + <method name="getAccessibilityButtonController()Landroid/accessibilityservice/AccessibilityButtonController;" since="26"/> + <method name="getFingerprintGestureController()Landroid/accessibilityservice/FingerprintGestureController;" since="26"/> + <method name="getMagnificationController()Landroid/accessibilityservice/AccessibilityService$MagnificationController;" since="24"/> + <method name="getRootInActiveWindow()Landroid/view/accessibility/AccessibilityNodeInfo;" since="16"/> + <method name="getServiceInfo()Landroid/accessibilityservice/AccessibilityServiceInfo;" since="16"/> + <method name="getSoftKeyboardController()Landroid/accessibilityservice/AccessibilityService$SoftKeyboardController;" since="24"/> + <method name="getWindows()Ljava/util/List;" since="21"/> + <method name="onAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V"/> + <method name="onGesture(I)Z" since="16"/> + <method name="onInterrupt()V"/> + <method name="onKeyEvent(Landroid/view/KeyEvent;)Z" since="18"/> + <method name="onServiceConnected()V"/> + <method name="performGlobalAction(I)Z" since="16"/> + <method name="setServiceInfo(Landroid/accessibilityservice/AccessibilityServiceInfo;)V"/> + <field name="GESTURE_SWIPE_DOWN" since="16"/> + <field name="GESTURE_SWIPE_DOWN_AND_LEFT" since="16"/> + <field name="GESTURE_SWIPE_DOWN_AND_RIGHT" since="16"/> + <field name="GESTURE_SWIPE_DOWN_AND_UP" since="16"/> + <field name="GESTURE_SWIPE_LEFT" since="16"/> + <field name="GESTURE_SWIPE_LEFT_AND_DOWN" since="16"/> + <field name="GESTURE_SWIPE_LEFT_AND_RIGHT" since="16"/> + <field name="GESTURE_SWIPE_LEFT_AND_UP" since="16"/> + <field name="GESTURE_SWIPE_RIGHT" since="16"/> + <field name="GESTURE_SWIPE_RIGHT_AND_DOWN" since="16"/> + <field name="GESTURE_SWIPE_RIGHT_AND_LEFT" since="16"/> + <field name="GESTURE_SWIPE_RIGHT_AND_UP" since="16"/> + <field name="GESTURE_SWIPE_UP" since="16"/> + <field name="GESTURE_SWIPE_UP_AND_DOWN" since="16"/> + <field name="GESTURE_SWIPE_UP_AND_LEFT" since="16"/> + <field name="GESTURE_SWIPE_UP_AND_RIGHT" since="16"/> + <field name="GLOBAL_ACTION_BACK" since="16"/> + <field name="GLOBAL_ACTION_HOME" since="16"/> + <field name="GLOBAL_ACTION_NOTIFICATIONS" since="16"/> + <field name="GLOBAL_ACTION_POWER_DIALOG" since="21"/> + <field name="GLOBAL_ACTION_QUICK_SETTINGS" since="17"/> + <field name="GLOBAL_ACTION_RECENTS" since="16"/> + <field name="GLOBAL_ACTION_TOGGLE_SPLIT_SCREEN" since="24"/> + <field name="SERVICE_INTERFACE"/> + <field name="SERVICE_META_DATA" since="14"/> + <field name="SHOW_MODE_AUTO" since="24"/> + <field name="SHOW_MODE_HIDDEN" since="24"/> + </class> + <class name="android/accessibilityservice/AccessibilityService$GestureResultCallback" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onCancelled(Landroid/accessibilityservice/GestureDescription;)V"/> + <method name="onCompleted(Landroid/accessibilityservice/GestureDescription;)V"/> + </class> + <class name="android/accessibilityservice/AccessibilityService$MagnificationController" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addListener(Landroid/accessibilityservice/AccessibilityService$MagnificationController$OnMagnificationChangedListener;)V"/> + <method name="addListener(Landroid/accessibilityservice/AccessibilityService$MagnificationController$OnMagnificationChangedListener;Landroid/os/Handler;)V"/> + <method name="getCenterX()F"/> + <method name="getCenterY()F"/> + <method name="getMagnificationRegion()Landroid/graphics/Region;"/> + <method name="getScale()F"/> + <method name="removeListener(Landroid/accessibilityservice/AccessibilityService$MagnificationController$OnMagnificationChangedListener;)Z"/> + <method name="reset(Z)Z"/> + <method name="setCenter(FFZ)Z"/> + <method name="setScale(FZ)Z"/> + </class> + <class name="android/accessibilityservice/AccessibilityService$MagnificationController$OnMagnificationChangedListener" since="24"> + <extends name="java/lang/Object"/> + <method name="onMagnificationChanged(Landroid/accessibilityservice/AccessibilityService$MagnificationController;Landroid/graphics/Region;FFF)V"/> + </class> + <class name="android/accessibilityservice/AccessibilityService$SoftKeyboardController" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addOnShowModeChangedListener(Landroid/accessibilityservice/AccessibilityService$SoftKeyboardController$OnShowModeChangedListener;)V"/> + <method name="addOnShowModeChangedListener(Landroid/accessibilityservice/AccessibilityService$SoftKeyboardController$OnShowModeChangedListener;Landroid/os/Handler;)V"/> + <method name="getShowMode()I"/> + <method name="removeOnShowModeChangedListener(Landroid/accessibilityservice/AccessibilityService$SoftKeyboardController$OnShowModeChangedListener;)Z"/> + <method name="setShowMode(I)Z"/> + </class> + <class name="android/accessibilityservice/AccessibilityService$SoftKeyboardController$OnShowModeChangedListener" since="24"> + <extends name="java/lang/Object"/> + <method name="onShowModeChanged(Landroid/accessibilityservice/AccessibilityService$SoftKeyboardController;I)V"/> + </class> + <class name="android/accessibilityservice/AccessibilityServiceInfo" since="4"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="capabilityToString(I)Ljava/lang/String;" since="18"/> + <method name="feedbackTypeToString(I)Ljava/lang/String;" since="14"/> + <method name="flagToString(I)Ljava/lang/String;" since="14"/> + <method name="getCanRetrieveWindowContent()Z" since="14" deprecated="18"/> + <method name="getCapabilities()I" since="18"/> + <method name="getDescription()Ljava/lang/String;" since="14" deprecated="16"/> + <method name="getId()Ljava/lang/String;" since="14"/> + <method name="getResolveInfo()Landroid/content/pm/ResolveInfo;" since="14"/> + <method name="getSettingsActivityName()Ljava/lang/String;" since="14"/> + <method name="loadDescription(Landroid/content/pm/PackageManager;)Ljava/lang/String;" since="16"/> + <method name="loadSummary(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" since="26"/> + <field name="CAPABILITY_CAN_CONTROL_MAGNIFICATION" since="24"/> + <field name="CAPABILITY_CAN_PERFORM_GESTURES" since="24"/> + <field name="CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY" since="18" deprecated="26"/> + <field name="CAPABILITY_CAN_REQUEST_FILTER_KEY_EVENTS" since="18"/> + <field name="CAPABILITY_CAN_REQUEST_FINGERPRINT_GESTURES" since="26"/> + <field name="CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION" since="18"/> + <field name="CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT" since="18"/> + <field name="CREATOR"/> + <field name="DEFAULT"/> + <field name="FEEDBACK_ALL_MASK" since="14"/> + <field name="FEEDBACK_AUDIBLE"/> + <field name="FEEDBACK_BRAILLE" since="17"/> + <field name="FEEDBACK_GENERIC"/> + <field name="FEEDBACK_HAPTIC"/> + <field name="FEEDBACK_SPOKEN"/> + <field name="FEEDBACK_VISUAL"/> + <field name="FLAG_ENABLE_ACCESSIBILITY_VOLUME" since="26"/> + <field name="FLAG_INCLUDE_NOT_IMPORTANT_VIEWS" since="16"/> + <field name="FLAG_REPORT_VIEW_IDS" since="18"/> + <field name="FLAG_REQUEST_ACCESSIBILITY_BUTTON" since="26"/> + <field name="FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY" since="18" deprecated="26"/> + <field name="FLAG_REQUEST_FILTER_KEY_EVENTS" since="18"/> + <field name="FLAG_REQUEST_FINGERPRINT_GESTURES" since="26"/> + <field name="FLAG_REQUEST_TOUCH_EXPLORATION_MODE" since="16"/> + <field name="FLAG_RETRIEVE_INTERACTIVE_WINDOWS" since="21"/> + <field name="eventTypes"/> + <field name="feedbackType"/> + <field name="flags"/> + <field name="notificationTimeout"/> + <field name="packageNames"/> + </class> + <class name="android/accessibilityservice/FingerprintGestureController" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="isGestureDetectionAvailable()Z"/> + <method name="registerFingerprintGestureCallback(Landroid/accessibilityservice/FingerprintGestureController$FingerprintGestureCallback;Landroid/os/Handler;)V"/> + <method name="unregisterFingerprintGestureCallback(Landroid/accessibilityservice/FingerprintGestureController$FingerprintGestureCallback;)V"/> + <field name="FINGERPRINT_GESTURE_SWIPE_DOWN"/> + <field name="FINGERPRINT_GESTURE_SWIPE_LEFT"/> + <field name="FINGERPRINT_GESTURE_SWIPE_RIGHT"/> + <field name="FINGERPRINT_GESTURE_SWIPE_UP"/> + </class> + <class name="android/accessibilityservice/FingerprintGestureController$FingerprintGestureCallback" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onGestureDetected(I)V"/> + <method name="onGestureDetectionAvailabilityChanged(Z)V"/> + </class> + <class name="android/accessibilityservice/GestureDescription" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getMaxGestureDuration()J"/> + <method name="getMaxStrokeCount()I"/> + <method name="getStroke(I)Landroid/accessibilityservice/GestureDescription$StrokeDescription;"/> + <method name="getStrokeCount()I"/> + </class> + <class name="android/accessibilityservice/GestureDescription$Builder" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addStroke(Landroid/accessibilityservice/GestureDescription$StrokeDescription;)Landroid/accessibilityservice/GestureDescription$Builder;"/> + <method name="build()Landroid/accessibilityservice/GestureDescription;"/> + </class> + <class name="android/accessibilityservice/GestureDescription$StrokeDescription" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/graphics/Path;JJ)V"/> + <method name="<init>(Landroid/graphics/Path;JJZ)V" since="26"/> + <method name="continueStroke(Landroid/graphics/Path;JJZ)Landroid/accessibilityservice/GestureDescription$StrokeDescription;" since="26"/> + <method name="getDuration()J"/> + <method name="getPath()Landroid/graphics/Path;"/> + <method name="getStartTime()J"/> + <method name="willContinue()Z" since="26"/> + </class> + <class name="android/accounts/AbstractAccountAuthenticator" since="5"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="addAccount(Landroid/accounts/AccountAuthenticatorResponse;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;"/> + <method name="addAccountFromCredentials(Landroid/accounts/AccountAuthenticatorResponse;Landroid/accounts/Account;Landroid/os/Bundle;)Landroid/os/Bundle;" since="18"/> + <method name="confirmCredentials(Landroid/accounts/AccountAuthenticatorResponse;Landroid/accounts/Account;Landroid/os/Bundle;)Landroid/os/Bundle;"/> + <method name="editProperties(Landroid/accounts/AccountAuthenticatorResponse;Ljava/lang/String;)Landroid/os/Bundle;"/> + <method name="finishSession(Landroid/accounts/AccountAuthenticatorResponse;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;" since="26"/> + <method name="getAccountCredentialsForCloning(Landroid/accounts/AccountAuthenticatorResponse;Landroid/accounts/Account;)Landroid/os/Bundle;" since="18"/> + <method name="getAccountRemovalAllowed(Landroid/accounts/AccountAuthenticatorResponse;Landroid/accounts/Account;)Landroid/os/Bundle;"/> + <method name="getAuthToken(Landroid/accounts/AccountAuthenticatorResponse;Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;"/> + <method name="getAuthTokenLabel(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getIBinder()Landroid/os/IBinder;"/> + <method name="hasFeatures(Landroid/accounts/AccountAuthenticatorResponse;Landroid/accounts/Account;[Ljava/lang/String;)Landroid/os/Bundle;"/> + <method name="isCredentialsUpdateSuggested(Landroid/accounts/AccountAuthenticatorResponse;Landroid/accounts/Account;Ljava/lang/String;)Landroid/os/Bundle;" since="26"/> + <method name="startAddAccountSession(Landroid/accounts/AccountAuthenticatorResponse;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;" since="26"/> + <method name="startUpdateCredentialsSession(Landroid/accounts/AccountAuthenticatorResponse;Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;" since="26"/> + <method name="updateCredentials(Landroid/accounts/AccountAuthenticatorResponse;Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;"/> + <field name="KEY_CUSTOM_TOKEN_EXPIRY" since="23"/> + </class> + <class name="android/accounts/Account" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <field name="CREATOR"/> + <field name="name"/> + <field name="type"/> + </class> + <class name="android/accounts/AccountAuthenticatorActivity" since="5"> + <extends name="android/app/Activity"/> + <method name="<init>()V"/> + <method name="setAccountAuthenticatorResult(Landroid/os/Bundle;)V"/> + </class> + <class name="android/accounts/AccountAuthenticatorResponse" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="onError(ILjava/lang/String;)V"/> + <method name="onRequestContinued()V"/> + <method name="onResult(Landroid/os/Bundle;)V"/> + <field name="CREATOR"/> + </class> + <class name="android/accounts/AccountManager" since="5"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addAccount(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Landroid/os/Bundle;Landroid/app/Activity;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;"/> + <method name="addAccountExplicitly(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)Z"/> + <method name="addAccountExplicitly(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;Ljava/util/Map;)Z" since="26"/> + <method name="addOnAccountsUpdatedListener(Landroid/accounts/OnAccountsUpdateListener;Landroid/os/Handler;Z)V"/> + <method name="addOnAccountsUpdatedListener(Landroid/accounts/OnAccountsUpdateListener;Landroid/os/Handler;Z[Ljava/lang/String;)V" since="26"/> + <method name="blockingGetAuthToken(Landroid/accounts/Account;Ljava/lang/String;Z)Ljava/lang/String;"/> + <method name="clearPassword(Landroid/accounts/Account;)V"/> + <method name="confirmCredentials(Landroid/accounts/Account;Landroid/os/Bundle;Landroid/app/Activity;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;"/> + <method name="editProperties(Ljava/lang/String;Landroid/app/Activity;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;"/> + <method name="finishSession(Landroid/os/Bundle;Landroid/app/Activity;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" since="26"/> + <method name="get(Landroid/content/Context;)Landroid/accounts/AccountManager;"/> + <method name="getAccountVisibility(Landroid/accounts/Account;Ljava/lang/String;)I" since="26"/> + <method name="getAccounts()[Landroid/accounts/Account;"/> + <method name="getAccountsAndVisibilityForPackage(Ljava/lang/String;Ljava/lang/String;)Ljava/util/Map;" since="26"/> + <method name="getAccountsByType(Ljava/lang/String;)[Landroid/accounts/Account;"/> + <method name="getAccountsByTypeAndFeatures(Ljava/lang/String;[Ljava/lang/String;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;"/> + <method name="getAccountsByTypeForPackage(Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account;" since="18"/> + <method name="getAuthToken(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;Landroid/app/Activity;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;"/> + <method name="getAuthToken(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;ZLandroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" since="14"/> + <method name="getAuthToken(Landroid/accounts/Account;Ljava/lang/String;ZLandroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" deprecated="16"/> + <method name="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;)Landroid/accounts/AccountManagerFuture;"/> + <method name="getAuthenticatorTypes()[Landroid/accounts/AuthenticatorDescription;"/> + <method name="getPackagesAndVisibilityForAccount(Landroid/accounts/Account;)Ljava/util/Map;" since="26"/> + <method name="getPassword(Landroid/accounts/Account;)Ljava/lang/String;"/> + <method name="getPreviousName(Landroid/accounts/Account;)Ljava/lang/String;" since="21"/> + <method name="getUserData(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="hasFeatures(Landroid/accounts/Account;[Ljava/lang/String;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" since="8"/> + <method name="invalidateAuthToken(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="isCredentialsUpdateSuggested(Landroid/accounts/Account;Ljava/lang/String;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" since="26"/> + <method name="newChooseAccountIntent(Landroid/accounts/Account;Ljava/util/ArrayList;[Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/Intent;" since="14" deprecated="23"/> + <method name="newChooseAccountIntent(Landroid/accounts/Account;Ljava/util/List;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/Intent;" since="23"/> + <method name="notifyAccountAuthenticated(Landroid/accounts/Account;)Z" since="23"/> + <method name="peekAuthToken(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="removeAccount(Landroid/accounts/Account;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" deprecated="22"/> + <method name="removeAccount(Landroid/accounts/Account;Landroid/app/Activity;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" since="22"/> + <method name="removeAccountExplicitly(Landroid/accounts/Account;)Z" since="22"/> + <method name="removeOnAccountsUpdatedListener(Landroid/accounts/OnAccountsUpdateListener;)V"/> + <method name="renameAccount(Landroid/accounts/Account;Ljava/lang/String;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" since="21"/> + <method name="setAccountVisibility(Landroid/accounts/Account;Ljava/lang/String;I)Z" since="26"/> + <method name="setAuthToken(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="setPassword(Landroid/accounts/Account;Ljava/lang/String;)V"/> + <method name="setUserData(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="startAddAccountSession(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Landroid/os/Bundle;Landroid/app/Activity;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" since="26"/> + <method name="startUpdateCredentialsSession(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;Landroid/app/Activity;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" since="26"/> + <method name="updateCredentials(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;Landroid/app/Activity;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;"/> + <field name="ACTION_ACCOUNT_REMOVED" since="26"/> + <field name="ACTION_AUTHENTICATOR_INTENT"/> + <field name="AUTHENTICATOR_ATTRIBUTES_NAME"/> + <field name="AUTHENTICATOR_META_DATA_NAME"/> + <field name="ERROR_CODE_BAD_ARGUMENTS"/> + <field name="ERROR_CODE_BAD_AUTHENTICATION" since="18"/> + <field name="ERROR_CODE_BAD_REQUEST"/> + <field name="ERROR_CODE_CANCELED"/> + <field name="ERROR_CODE_INVALID_RESPONSE"/> + <field name="ERROR_CODE_NETWORK_ERROR"/> + <field name="ERROR_CODE_REMOTE_EXCEPTION"/> + <field name="ERROR_CODE_UNSUPPORTED_OPERATION"/> + <field name="KEY_ACCOUNTS"/> + <field name="KEY_ACCOUNT_AUTHENTICATOR_RESPONSE"/> + <field name="KEY_ACCOUNT_MANAGER_RESPONSE"/> + <field name="KEY_ACCOUNT_NAME"/> + <field name="KEY_ACCOUNT_SESSION_BUNDLE" since="26"/> + <field name="KEY_ACCOUNT_STATUS_TOKEN" since="26"/> + <field name="KEY_ACCOUNT_TYPE"/> + <field name="KEY_ANDROID_PACKAGE_NAME" since="14"/> + <field name="KEY_AUTHENTICATOR_TYPES"/> + <field name="KEY_AUTHTOKEN"/> + <field name="KEY_AUTH_FAILED_MESSAGE"/> + <field name="KEY_AUTH_TOKEN_LABEL"/> + <field name="KEY_BOOLEAN_RESULT"/> + <field name="KEY_CALLER_PID" since="11"/> + <field name="KEY_CALLER_UID" since="11"/> + <field name="KEY_ERROR_CODE"/> + <field name="KEY_ERROR_MESSAGE"/> + <field name="KEY_INTENT"/> + <field name="KEY_LAST_AUTHENTICATED_TIME" since="23"/> + <field name="KEY_PASSWORD"/> + <field name="KEY_USERDATA"/> + <field name="LOGIN_ACCOUNTS_CHANGED_ACTION" deprecated="26"/> + <field name="PACKAGE_NAME_KEY_LEGACY_NOT_VISIBLE" since="26"/> + <field name="PACKAGE_NAME_KEY_LEGACY_VISIBLE" since="26"/> + <field name="VISIBILITY_NOT_VISIBLE" since="26"/> + <field name="VISIBILITY_UNDEFINED" since="26"/> + <field name="VISIBILITY_USER_MANAGED_NOT_VISIBLE" since="26"/> + <field name="VISIBILITY_USER_MANAGED_VISIBLE" since="26"/> + <field name="VISIBILITY_VISIBLE" since="26"/> + </class> + <class name="android/accounts/AccountManagerCallback" since="5"> + <extends name="java/lang/Object"/> + <method name="run(Landroid/accounts/AccountManagerFuture;)V"/> + </class> + <class name="android/accounts/AccountManagerFuture" since="5"> + <extends name="java/lang/Object"/> + <method name="cancel(Z)Z"/> + <method name="getResult()Ljava/lang/Object;"/> + <method name="getResult(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;"/> + <method name="isCancelled()Z"/> + <method name="isDone()Z"/> + </class> + <class name="android/accounts/AccountsException" since="5"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="android/accounts/AuthenticatorDescription" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;IIII)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;IIIIZ)V" since="11"/> + <method name="newKey(Ljava/lang/String;)Landroid/accounts/AuthenticatorDescription;"/> + <field name="CREATOR"/> + <field name="accountPreferencesId"/> + <field name="customTokens" since="11"/> + <field name="iconId"/> + <field name="labelId"/> + <field name="packageName"/> + <field name="smallIconId"/> + <field name="type"/> + </class> + <class name="android/accounts/AuthenticatorException" since="5"> + <extends name="android/accounts/AccountsException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="android/accounts/NetworkErrorException" since="5"> + <extends name="android/accounts/AccountsException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="android/accounts/OnAccountsUpdateListener" since="5"> + <extends name="java/lang/Object"/> + <method name="onAccountsUpdated([Landroid/accounts/Account;)V"/> + </class> + <class name="android/accounts/OperationCanceledException" since="5"> + <extends name="android/accounts/AccountsException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="android/animation/Animator" since="11"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="addListener(Landroid/animation/Animator$AnimatorListener;)V"/> + <method name="addPauseListener(Landroid/animation/Animator$AnimatorPauseListener;)V" since="19"/> + <method name="cancel()V"/> + <method name="clone()Landroid/animation/Animator;"/> + <method name="end()V"/> + <method name="getDuration()J"/> + <method name="getInterpolator()Landroid/animation/TimeInterpolator;" since="18"/> + <method name="getListeners()Ljava/util/ArrayList;"/> + <method name="getStartDelay()J"/> + <method name="getTotalDuration()J" since="24"/> + <method name="isPaused()Z" since="19"/> + <method name="isRunning()Z"/> + <method name="isStarted()Z" since="14"/> + <method name="pause()V" since="19"/> + <method name="removeAllListeners()V"/> + <method name="removeListener(Landroid/animation/Animator$AnimatorListener;)V"/> + <method name="removePauseListener(Landroid/animation/Animator$AnimatorPauseListener;)V" since="19"/> + <method name="resume()V" since="19"/> + <method name="setDuration(J)Landroid/animation/Animator;"/> + <method name="setInterpolator(Landroid/animation/TimeInterpolator;)V"/> + <method name="setStartDelay(J)V"/> + <method name="setTarget(Ljava/lang/Object;)V"/> + <method name="setupEndValues()V"/> + <method name="setupStartValues()V"/> + <method name="start()V"/> + <field name="DURATION_INFINITE" since="24"/> + </class> + <class name="android/animation/Animator$AnimatorListener" since="11"> + <extends name="java/lang/Object"/> + <method name="onAnimationCancel(Landroid/animation/Animator;)V"/> + <method name="onAnimationEnd(Landroid/animation/Animator;)V"/> + <method name="onAnimationEnd(Landroid/animation/Animator;Z)V" since="26"/> + <method name="onAnimationRepeat(Landroid/animation/Animator;)V"/> + <method name="onAnimationStart(Landroid/animation/Animator;)V"/> + <method name="onAnimationStart(Landroid/animation/Animator;Z)V" since="26"/> + </class> + <class name="android/animation/Animator$AnimatorPauseListener" since="19"> + <extends name="java/lang/Object"/> + <method name="onAnimationPause(Landroid/animation/Animator;)V"/> + <method name="onAnimationResume(Landroid/animation/Animator;)V"/> + </class> + <class name="android/animation/AnimatorInflater" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="loadAnimator(Landroid/content/Context;I)Landroid/animation/Animator;"/> + <method name="loadStateListAnimator(Landroid/content/Context;I)Landroid/animation/StateListAnimator;" since="21"/> + </class> + <class name="android/animation/AnimatorListenerAdapter" since="11"> + <extends name="java/lang/Object"/> + <implements name="android/animation/Animator$AnimatorListener"/> + <implements name="android/animation/Animator$AnimatorPauseListener" since="19"/> + <method name="<init>()V"/> + </class> + <class name="android/animation/AnimatorSet" since="11"> + <extends name="android/animation/Animator"/> + <method name="<init>()V"/> + <method name="clone()Landroid/animation/AnimatorSet;"/> + <method name="getChildAnimations()Ljava/util/ArrayList;"/> + <method name="getCurrentPlayTime()J" since="26"/> + <method name="play(Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Builder;"/> + <method name="playSequentially(Ljava/util/List;)V"/> + <method name="playSequentially([Landroid/animation/Animator;)V"/> + <method name="playTogether(Ljava/util/Collection;)V"/> + <method name="playTogether([Landroid/animation/Animator;)V"/> + <method name="reverse()V" since="26"/> + <method name="setCurrentPlayTime(J)V" since="26"/> + <method name="setDuration(J)Landroid/animation/AnimatorSet;"/> + </class> + <class name="android/animation/AnimatorSet$Builder" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/animation/AnimatorSet;)V"/> + <method name="after(J)Landroid/animation/AnimatorSet$Builder;"/> + <method name="after(Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Builder;"/> + <method name="before(Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Builder;"/> + <method name="with(Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Builder;"/> + </class> + <class name="android/animation/ArgbEvaluator" since="11"> + <extends name="java/lang/Object"/> + <implements name="android/animation/TypeEvaluator"/> + <method name="<init>()V"/> + </class> + <class name="android/animation/BidirectionalTypeConverter" since="21"> + <extends name="android/animation/TypeConverter"/> + <method name="<init>(Ljava/lang/Class;Ljava/lang/Class;)V"/> + <method name="convertBack(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="invert()Landroid/animation/BidirectionalTypeConverter;"/> + </class> + <class name="android/animation/FloatArrayEvaluator" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/animation/TypeEvaluator"/> + <method name="<init>()V"/> + <method name="<init>([F)V"/> + <method name="evaluate(F[F[F)[F"/> + </class> + <class name="android/animation/FloatEvaluator" since="11"> + <extends name="java/lang/Object"/> + <implements name="android/animation/TypeEvaluator"/> + <method name="<init>()V"/> + <method name="evaluate(FLjava/lang/Number;Ljava/lang/Number;)Ljava/lang/Float;" since="14"/> + </class> + <class name="android/animation/IntArrayEvaluator" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/animation/TypeEvaluator"/> + <method name="<init>()V"/> + <method name="<init>([I)V"/> + <method name="evaluate(F[I[I)[I"/> + </class> + <class name="android/animation/IntEvaluator" since="11"> + <extends name="java/lang/Object"/> + <implements name="android/animation/TypeEvaluator"/> + <method name="<init>()V"/> + <method name="evaluate(FLjava/lang/Integer;Ljava/lang/Integer;)Ljava/lang/Integer;" since="14"/> + </class> + <class name="android/animation/Keyframe" since="11"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="clone()Landroid/animation/Keyframe;"/> + <method name="getFraction()F"/> + <method name="getInterpolator()Landroid/animation/TimeInterpolator;"/> + <method name="getType()Ljava/lang/Class;"/> + <method name="getValue()Ljava/lang/Object;"/> + <method name="hasValue()Z"/> + <method name="ofFloat(F)Landroid/animation/Keyframe;"/> + <method name="ofFloat(FF)Landroid/animation/Keyframe;"/> + <method name="ofInt(F)Landroid/animation/Keyframe;"/> + <method name="ofInt(FI)Landroid/animation/Keyframe;"/> + <method name="ofObject(F)Landroid/animation/Keyframe;"/> + <method name="ofObject(FLjava/lang/Object;)Landroid/animation/Keyframe;"/> + <method name="setFraction(F)V"/> + <method name="setInterpolator(Landroid/animation/TimeInterpolator;)V"/> + <method name="setValue(Ljava/lang/Object;)V"/> + </class> + <class name="android/animation/LayoutTransition" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addChild(Landroid/view/ViewGroup;Landroid/view/View;)V"/> + <method name="addTransitionListener(Landroid/animation/LayoutTransition$TransitionListener;)V"/> + <method name="disableTransitionType(I)V" since="16"/> + <method name="enableTransitionType(I)V" since="16"/> + <method name="getAnimator(I)Landroid/animation/Animator;"/> + <method name="getDuration(I)J"/> + <method name="getInterpolator(I)Landroid/animation/TimeInterpolator;"/> + <method name="getStagger(I)J"/> + <method name="getStartDelay(I)J"/> + <method name="getTransitionListeners()Ljava/util/List;"/> + <method name="hideChild(Landroid/view/ViewGroup;Landroid/view/View;)V" deprecated="16"/> + <method name="hideChild(Landroid/view/ViewGroup;Landroid/view/View;I)V" since="16"/> + <method name="isChangingLayout()Z"/> + <method name="isRunning()Z"/> + <method name="isTransitionTypeEnabled(I)Z" since="16"/> + <method name="removeChild(Landroid/view/ViewGroup;Landroid/view/View;)V"/> + <method name="removeTransitionListener(Landroid/animation/LayoutTransition$TransitionListener;)V"/> + <method name="setAnimateParentHierarchy(Z)V" since="14"/> + <method name="setAnimator(ILandroid/animation/Animator;)V"/> + <method name="setDuration(IJ)V"/> + <method name="setDuration(J)V"/> + <method name="setInterpolator(ILandroid/animation/TimeInterpolator;)V"/> + <method name="setStagger(IJ)V"/> + <method name="setStartDelay(IJ)V"/> + <method name="showChild(Landroid/view/ViewGroup;Landroid/view/View;)V" deprecated="16"/> + <method name="showChild(Landroid/view/ViewGroup;Landroid/view/View;I)V" since="16"/> + <field name="APPEARING"/> + <field name="CHANGE_APPEARING"/> + <field name="CHANGE_DISAPPEARING"/> + <field name="CHANGING" since="16"/> + <field name="DISAPPEARING"/> + </class> + <class name="android/animation/LayoutTransition$TransitionListener" since="11"> + <extends name="java/lang/Object"/> + <method name="endTransition(Landroid/animation/LayoutTransition;Landroid/view/ViewGroup;Landroid/view/View;I)V"/> + <method name="startTransition(Landroid/animation/LayoutTransition;Landroid/view/ViewGroup;Landroid/view/View;I)V"/> + </class> + <class name="android/animation/ObjectAnimator" since="11"> + <extends name="android/animation/ValueAnimator"/> + <method name="<init>()V"/> + <method name="clone()Landroid/animation/ObjectAnimator;"/> + <method name="getPropertyName()Ljava/lang/String;"/> + <method name="getTarget()Ljava/lang/Object;"/> + <method name="ofArgb(Ljava/lang/Object;Landroid/util/Property;[I)Landroid/animation/ObjectAnimator;" since="21"/> + <method name="ofArgb(Ljava/lang/Object;Ljava/lang/String;[I)Landroid/animation/ObjectAnimator;" since="21"/> + <method name="ofFloat(Ljava/lang/Object;Landroid/util/Property;Landroid/util/Property;Landroid/graphics/Path;)Landroid/animation/ObjectAnimator;" since="21"/> + <method name="ofFloat(Ljava/lang/Object;Landroid/util/Property;[F)Landroid/animation/ObjectAnimator;" since="14"/> + <method name="ofFloat(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Landroid/graphics/Path;)Landroid/animation/ObjectAnimator;" since="21"/> + <method name="ofFloat(Ljava/lang/Object;Ljava/lang/String;[F)Landroid/animation/ObjectAnimator;"/> + <method name="ofInt(Ljava/lang/Object;Landroid/util/Property;Landroid/util/Property;Landroid/graphics/Path;)Landroid/animation/ObjectAnimator;" since="21"/> + <method name="ofInt(Ljava/lang/Object;Landroid/util/Property;[I)Landroid/animation/ObjectAnimator;" since="14"/> + <method name="ofInt(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Landroid/graphics/Path;)Landroid/animation/ObjectAnimator;" since="21"/> + <method name="ofInt(Ljava/lang/Object;Ljava/lang/String;[I)Landroid/animation/ObjectAnimator;"/> + <method name="ofMultiFloat(Ljava/lang/Object;Ljava/lang/String;Landroid/animation/TypeConverter;Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/ObjectAnimator;" since="21"/> + <method name="ofMultiFloat(Ljava/lang/Object;Ljava/lang/String;Landroid/graphics/Path;)Landroid/animation/ObjectAnimator;" since="21"/> + <method name="ofMultiFloat(Ljava/lang/Object;Ljava/lang/String;[[F)Landroid/animation/ObjectAnimator;" since="21"/> + <method name="ofMultiInt(Ljava/lang/Object;Ljava/lang/String;Landroid/animation/TypeConverter;Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/ObjectAnimator;" since="21"/> + <method name="ofMultiInt(Ljava/lang/Object;Ljava/lang/String;Landroid/graphics/Path;)Landroid/animation/ObjectAnimator;" since="21"/> + <method name="ofMultiInt(Ljava/lang/Object;Ljava/lang/String;[[I)Landroid/animation/ObjectAnimator;" since="21"/> + <method name="ofObject(Ljava/lang/Object;Landroid/util/Property;Landroid/animation/TypeConverter;Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/ObjectAnimator;" since="21"/> + <method name="ofObject(Ljava/lang/Object;Landroid/util/Property;Landroid/animation/TypeConverter;Landroid/graphics/Path;)Landroid/animation/ObjectAnimator;" since="21"/> + <method name="ofObject(Ljava/lang/Object;Landroid/util/Property;Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/ObjectAnimator;" since="14"/> + <method name="ofObject(Ljava/lang/Object;Ljava/lang/String;Landroid/animation/TypeConverter;Landroid/graphics/Path;)Landroid/animation/ObjectAnimator;" since="21"/> + <method name="ofObject(Ljava/lang/Object;Ljava/lang/String;Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/ObjectAnimator;"/> + <method name="ofPropertyValuesHolder(Ljava/lang/Object;[Landroid/animation/PropertyValuesHolder;)Landroid/animation/ObjectAnimator;"/> + <method name="setAutoCancel(Z)V" since="18"/> + <method name="setDuration(J)Landroid/animation/ObjectAnimator;"/> + <method name="setProperty(Landroid/util/Property;)V" since="14"/> + <method name="setPropertyName(Ljava/lang/String;)V"/> + </class> + <class name="android/animation/PointFEvaluator" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/animation/TypeEvaluator"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/graphics/PointF;)V"/> + <method name="evaluate(FLandroid/graphics/PointF;Landroid/graphics/PointF;)Landroid/graphics/PointF;"/> + </class> + <class name="android/animation/PropertyValuesHolder" since="11"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="clone()Landroid/animation/PropertyValuesHolder;"/> + <method name="getPropertyName()Ljava/lang/String;"/> + <method name="ofFloat(Landroid/util/Property;[F)Landroid/animation/PropertyValuesHolder;" since="14"/> + <method name="ofFloat(Ljava/lang/String;[F)Landroid/animation/PropertyValuesHolder;"/> + <method name="ofInt(Landroid/util/Property;[I)Landroid/animation/PropertyValuesHolder;" since="14"/> + <method name="ofInt(Ljava/lang/String;[I)Landroid/animation/PropertyValuesHolder;"/> + <method name="ofKeyframe(Landroid/util/Property;[Landroid/animation/Keyframe;)Landroid/animation/PropertyValuesHolder;" since="14"/> + <method name="ofKeyframe(Ljava/lang/String;[Landroid/animation/Keyframe;)Landroid/animation/PropertyValuesHolder;"/> + <method name="ofMultiFloat(Ljava/lang/String;Landroid/animation/TypeConverter;Landroid/animation/TypeEvaluator;[Landroid/animation/Keyframe;)Landroid/animation/PropertyValuesHolder;" since="21"/> + <method name="ofMultiFloat(Ljava/lang/String;Landroid/animation/TypeConverter;Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/PropertyValuesHolder;" since="21"/> + <method name="ofMultiFloat(Ljava/lang/String;Landroid/graphics/Path;)Landroid/animation/PropertyValuesHolder;" since="21"/> + <method name="ofMultiFloat(Ljava/lang/String;[[F)Landroid/animation/PropertyValuesHolder;" since="21"/> + <method name="ofMultiInt(Ljava/lang/String;Landroid/animation/TypeConverter;Landroid/animation/TypeEvaluator;[Landroid/animation/Keyframe;)Landroid/animation/PropertyValuesHolder;" since="21"/> + <method name="ofMultiInt(Ljava/lang/String;Landroid/animation/TypeConverter;Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/PropertyValuesHolder;" since="21"/> + <method name="ofMultiInt(Ljava/lang/String;Landroid/graphics/Path;)Landroid/animation/PropertyValuesHolder;" since="21"/> + <method name="ofMultiInt(Ljava/lang/String;[[I)Landroid/animation/PropertyValuesHolder;" since="21"/> + <method name="ofObject(Landroid/util/Property;Landroid/animation/TypeConverter;Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/PropertyValuesHolder;" since="21"/> + <method name="ofObject(Landroid/util/Property;Landroid/animation/TypeConverter;Landroid/graphics/Path;)Landroid/animation/PropertyValuesHolder;" since="21"/> + <method name="ofObject(Landroid/util/Property;Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/PropertyValuesHolder;" since="14"/> + <method name="ofObject(Ljava/lang/String;Landroid/animation/TypeConverter;Landroid/graphics/Path;)Landroid/animation/PropertyValuesHolder;" since="21"/> + <method name="ofObject(Ljava/lang/String;Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/PropertyValuesHolder;"/> + <method name="setConverter(Landroid/animation/TypeConverter;)V" since="21"/> + <method name="setEvaluator(Landroid/animation/TypeEvaluator;)V"/> + <method name="setFloatValues([F)V"/> + <method name="setIntValues([I)V"/> + <method name="setKeyframes([Landroid/animation/Keyframe;)V"/> + <method name="setObjectValues([Ljava/lang/Object;)V"/> + <method name="setProperty(Landroid/util/Property;)V" since="14"/> + <method name="setPropertyName(Ljava/lang/String;)V"/> + </class> + <class name="android/animation/RectEvaluator" since="18"> + <extends name="java/lang/Object"/> + <implements name="android/animation/TypeEvaluator"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/graphics/Rect;)V" since="21"/> + <method name="evaluate(FLandroid/graphics/Rect;Landroid/graphics/Rect;)Landroid/graphics/Rect;"/> + </class> + <class name="android/animation/StateListAnimator" since="21"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable" since="22"/> + <method name="<init>()V"/> + <method name="addState([ILandroid/animation/Animator;)V"/> + <method name="clone()Landroid/animation/StateListAnimator;" since="22"/> + <method name="jumpToCurrentState()V"/> + </class> + <class name="android/animation/TimeAnimator" since="16"> + <extends name="android/animation/ValueAnimator"/> + <method name="<init>()V"/> + <method name="setTimeListener(Landroid/animation/TimeAnimator$TimeListener;)V"/> + </class> + <class name="android/animation/TimeAnimator$TimeListener" since="16"> + <extends name="java/lang/Object"/> + <method name="onTimeUpdate(Landroid/animation/TimeAnimator;JJ)V"/> + </class> + <class name="android/animation/TimeInterpolator" since="11"> + <extends name="java/lang/Object"/> + <method name="getInterpolation(F)F"/> + </class> + <class name="android/animation/TypeConverter" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/Class;Ljava/lang/Class;)V"/> + <method name="convert(Ljava/lang/Object;)Ljava/lang/Object;"/> + </class> + <class name="android/animation/TypeEvaluator" since="11"> + <extends name="java/lang/Object"/> + <method name="evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"/> + </class> + <class name="android/animation/ValueAnimator" since="11"> + <extends name="android/animation/Animator"/> + <method name="<init>()V"/> + <method name="addUpdateListener(Landroid/animation/ValueAnimator$AnimatorUpdateListener;)V"/> + <method name="areAnimatorsEnabled()Z" since="26"/> + <method name="clone()Landroid/animation/ValueAnimator;"/> + <method name="getAnimatedFraction()F" since="12"/> + <method name="getAnimatedValue()Ljava/lang/Object;"/> + <method name="getAnimatedValue(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="getCurrentPlayTime()J"/> + <method name="getFrameDelay()J"/> + <method name="getInterpolator()Landroid/animation/TimeInterpolator;"/> + <method name="getRepeatCount()I"/> + <method name="getRepeatMode()I"/> + <method name="getValues()[Landroid/animation/PropertyValuesHolder;"/> + <method name="ofArgb([I)Landroid/animation/ValueAnimator;" since="21"/> + <method name="ofFloat([F)Landroid/animation/ValueAnimator;"/> + <method name="ofInt([I)Landroid/animation/ValueAnimator;"/> + <method name="ofObject(Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/ValueAnimator;"/> + <method name="ofPropertyValuesHolder([Landroid/animation/PropertyValuesHolder;)Landroid/animation/ValueAnimator;"/> + <method name="removeAllUpdateListeners()V"/> + <method name="removeUpdateListener(Landroid/animation/ValueAnimator$AnimatorUpdateListener;)V"/> + <method name="reverse()V"/> + <method name="setCurrentFraction(F)V" since="22"/> + <method name="setCurrentPlayTime(J)V"/> + <method name="setDuration(J)Landroid/animation/ValueAnimator;"/> + <method name="setEvaluator(Landroid/animation/TypeEvaluator;)V"/> + <method name="setFloatValues([F)V"/> + <method name="setFrameDelay(J)V"/> + <method name="setIntValues([I)V"/> + <method name="setObjectValues([Ljava/lang/Object;)V"/> + <method name="setRepeatCount(I)V"/> + <method name="setRepeatMode(I)V"/> + <method name="setValues([Landroid/animation/PropertyValuesHolder;)V"/> + <field name="INFINITE"/> + <field name="RESTART"/> + <field name="REVERSE"/> + </class> + <class name="android/animation/ValueAnimator$AnimatorUpdateListener" since="11"> + <extends name="java/lang/Object"/> + <method name="onAnimationUpdate(Landroid/animation/ValueAnimator;)V"/> + </class> + <class name="android/annotation/SuppressLint" since="16"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + <method name="value()[Ljava/lang/String;"/> + </class> + <class name="android/annotation/TargetApi" since="16"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + <method name="value()I"/> + </class> + <class name="android/app/ActionBar" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addOnMenuVisibilityListener(Landroid/app/ActionBar$OnMenuVisibilityListener;)V"/> + <method name="addTab(Landroid/app/ActionBar$Tab;)V" deprecated="21"/> + <method name="addTab(Landroid/app/ActionBar$Tab;I)V" deprecated="21"/> + <method name="addTab(Landroid/app/ActionBar$Tab;IZ)V" deprecated="21"/> + <method name="addTab(Landroid/app/ActionBar$Tab;Z)V" deprecated="21"/> + <method name="getCustomView()Landroid/view/View;"/> + <method name="getDisplayOptions()I"/> + <method name="getElevation()F" since="21"/> + <method name="getHeight()I"/> + <method name="getHideOffset()I" since="21"/> + <method name="getNavigationItemCount()I" deprecated="21"/> + <method name="getNavigationMode()I" deprecated="21"/> + <method name="getSelectedNavigationIndex()I" deprecated="21"/> + <method name="getSelectedTab()Landroid/app/ActionBar$Tab;" deprecated="21"/> + <method name="getSubtitle()Ljava/lang/CharSequence;"/> + <method name="getTabAt(I)Landroid/app/ActionBar$Tab;" deprecated="21"/> + <method name="getTabCount()I" deprecated="21"/> + <method name="getThemedContext()Landroid/content/Context;" since="14"/> + <method name="getTitle()Ljava/lang/CharSequence;"/> + <method name="hide()V"/> + <method name="isHideOnContentScrollEnabled()Z" since="21"/> + <method name="isShowing()Z"/> + <method name="newTab()Landroid/app/ActionBar$Tab;" deprecated="21"/> + <method name="removeAllTabs()V" deprecated="21"/> + <method name="removeOnMenuVisibilityListener(Landroid/app/ActionBar$OnMenuVisibilityListener;)V"/> + <method name="removeTab(Landroid/app/ActionBar$Tab;)V" deprecated="21"/> + <method name="removeTabAt(I)V" deprecated="21"/> + <method name="selectTab(Landroid/app/ActionBar$Tab;)V" deprecated="21"/> + <method name="setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V"/> + <method name="setCustomView(I)V"/> + <method name="setCustomView(Landroid/view/View;)V"/> + <method name="setCustomView(Landroid/view/View;Landroid/app/ActionBar$LayoutParams;)V"/> + <method name="setDisplayHomeAsUpEnabled(Z)V"/> + <method name="setDisplayOptions(I)V"/> + <method name="setDisplayOptions(II)V"/> + <method name="setDisplayShowCustomEnabled(Z)V"/> + <method name="setDisplayShowHomeEnabled(Z)V"/> + <method name="setDisplayShowTitleEnabled(Z)V"/> + <method name="setDisplayUseLogoEnabled(Z)V"/> + <method name="setElevation(F)V" since="21"/> + <method name="setHideOffset(I)V" since="21"/> + <method name="setHideOnContentScrollEnabled(Z)V" since="21"/> + <method name="setHomeActionContentDescription(I)V" since="18"/> + <method name="setHomeActionContentDescription(Ljava/lang/CharSequence;)V" since="18"/> + <method name="setHomeAsUpIndicator(I)V" since="18"/> + <method name="setHomeAsUpIndicator(Landroid/graphics/drawable/Drawable;)V" since="18"/> + <method name="setHomeButtonEnabled(Z)V" since="14"/> + <method name="setIcon(I)V" since="14"/> + <method name="setIcon(Landroid/graphics/drawable/Drawable;)V" since="14"/> + <method name="setListNavigationCallbacks(Landroid/widget/SpinnerAdapter;Landroid/app/ActionBar$OnNavigationListener;)V" deprecated="21"/> + <method name="setLogo(I)V" since="14"/> + <method name="setLogo(Landroid/graphics/drawable/Drawable;)V" since="14"/> + <method name="setNavigationMode(I)V" deprecated="21"/> + <method name="setSelectedNavigationItem(I)V" deprecated="21"/> + <method name="setSplitBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V" since="14"/> + <method name="setStackedBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V" since="14"/> + <method name="setSubtitle(I)V"/> + <method name="setSubtitle(Ljava/lang/CharSequence;)V"/> + <method name="setTitle(I)V"/> + <method name="setTitle(Ljava/lang/CharSequence;)V"/> + <method name="show()V"/> + <field name="DISPLAY_HOME_AS_UP"/> + <field name="DISPLAY_SHOW_CUSTOM"/> + <field name="DISPLAY_SHOW_HOME"/> + <field name="DISPLAY_SHOW_TITLE"/> + <field name="DISPLAY_USE_LOGO"/> + <field name="NAVIGATION_MODE_LIST" deprecated="21"/> + <field name="NAVIGATION_MODE_STANDARD" deprecated="21"/> + <field name="NAVIGATION_MODE_TABS" deprecated="21"/> + </class> + <class name="android/app/ActionBar$LayoutParams" since="11"> + <extends name="android/view/ViewGroup$MarginLayoutParams"/> + <method name="<init>(I)V"/> + <method name="<init>(II)V"/> + <method name="<init>(III)V"/> + <method name="<init>(Landroid/app/ActionBar$LayoutParams;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/view/ViewGroup$LayoutParams;)V"/> + <field name="gravity"/> + </class> + <class name="android/app/ActionBar$OnMenuVisibilityListener" since="11"> + <extends name="java/lang/Object"/> + <method name="onMenuVisibilityChanged(Z)V"/> + </class> + <class name="android/app/ActionBar$OnNavigationListener" since="11" deprecated="21"> + <extends name="java/lang/Object"/> + <method name="onNavigationItemSelected(IJ)Z"/> + </class> + <class name="android/app/ActionBar$Tab" since="11" deprecated="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getContentDescription()Ljava/lang/CharSequence;" since="14"/> + <method name="getCustomView()Landroid/view/View;"/> + <method name="getIcon()Landroid/graphics/drawable/Drawable;"/> + <method name="getPosition()I"/> + <method name="getTag()Ljava/lang/Object;"/> + <method name="getText()Ljava/lang/CharSequence;"/> + <method name="select()V"/> + <method name="setContentDescription(I)Landroid/app/ActionBar$Tab;" since="14"/> + <method name="setContentDescription(Ljava/lang/CharSequence;)Landroid/app/ActionBar$Tab;" since="14"/> + <method name="setCustomView(I)Landroid/app/ActionBar$Tab;"/> + <method name="setCustomView(Landroid/view/View;)Landroid/app/ActionBar$Tab;"/> + <method name="setIcon(I)Landroid/app/ActionBar$Tab;"/> + <method name="setIcon(Landroid/graphics/drawable/Drawable;)Landroid/app/ActionBar$Tab;"/> + <method name="setTabListener(Landroid/app/ActionBar$TabListener;)Landroid/app/ActionBar$Tab;"/> + <method name="setTag(Ljava/lang/Object;)Landroid/app/ActionBar$Tab;"/> + <method name="setText(I)Landroid/app/ActionBar$Tab;"/> + <method name="setText(Ljava/lang/CharSequence;)Landroid/app/ActionBar$Tab;"/> + <field name="INVALID_POSITION"/> + </class> + <class name="android/app/ActionBar$TabListener" since="11" deprecated="21"> + <extends name="java/lang/Object"/> + <method name="onTabReselected(Landroid/app/ActionBar$Tab;Landroid/app/FragmentTransaction;)V"/> + <method name="onTabSelected(Landroid/app/ActionBar$Tab;Landroid/app/FragmentTransaction;)V"/> + <method name="onTabUnselected(Landroid/app/ActionBar$Tab;Landroid/app/FragmentTransaction;)V"/> + </class> + <class name="android/app/Activity" since="1"> + <extends name="android/view/ContextThemeWrapper"/> + <implements name="android/content/ComponentCallbacks" removed="14"/> + <implements name="android/content/ComponentCallbacks2" since="14"/> + <implements name="android/view/KeyEvent$Callback"/> + <implements name="android/view/LayoutInflater$Factory" removed="11"/> + <implements name="android/view/LayoutInflater$Factory2" since="11"/> + <implements name="android/view/View$OnCreateContextMenuListener"/> + <implements name="android/view/Window$Callback"/> + <method name="<init>()V"/> + <method name="addContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V"/> + <method name="closeContextMenu()V" since="3"/> + <method name="closeOptionsMenu()V"/> + <method name="createPendingResult(ILandroid/content/Intent;I)Landroid/app/PendingIntent;"/> + <method name="dismissDialog(I)V" deprecated="16"/> + <method name="dismissKeyboardShortcutsHelper()V" since="24"/> + <method name="dump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V" since="11"/> + <method name="enterPictureInPictureMode()V" since="24" deprecated="26"/> + <method name="enterPictureInPictureMode(Landroid/app/PictureInPictureParams;)Z" since="26"/> + <method name="findViewById(I)Landroid/view/View;"/> + <method name="finish()V"/> + <method name="finishActivity(I)V"/> + <method name="finishActivityFromChild(Landroid/app/Activity;I)V"/> + <method name="finishAffinity()V" since="16"/> + <method name="finishAfterTransition()V" since="21"/> + <method name="finishAndRemoveTask()V" since="21"/> + <method name="finishFromChild(Landroid/app/Activity;)V"/> + <method name="getActionBar()Landroid/app/ActionBar;" since="11"/> + <method name="getApplication()Landroid/app/Application;"/> + <method name="getCallingActivity()Landroid/content/ComponentName;"/> + <method name="getCallingPackage()Ljava/lang/String;"/> + <method name="getChangingConfigurations()I"/> + <method name="getComponentName()Landroid/content/ComponentName;"/> + <method name="getContentScene()Landroid/transition/Scene;" since="21"/> + <method name="getContentTransitionManager()Landroid/transition/TransitionManager;" since="21"/> + <method name="getCurrentFocus()Landroid/view/View;"/> + <method name="getFragmentManager()Landroid/app/FragmentManager;" since="11"/> + <method name="getInstanceCount()J" removed="11"/> + <method name="getIntent()Landroid/content/Intent;"/> + <method name="getLastNonConfigurationInstance()Ljava/lang/Object;" deprecated="16"/> + <method name="getLayoutInflater()Landroid/view/LayoutInflater;"/> + <method name="getLoaderManager()Landroid/app/LoaderManager;" since="11"/> + <method name="getLocalClassName()Ljava/lang/String;"/> + <method name="getMaxNumPictureInPictureActions()I" since="26"/> + <method name="getMediaController()Landroid/media/session/MediaController;" since="21"/> + <method name="getMenuInflater()Landroid/view/MenuInflater;"/> + <method name="getParent()Landroid/app/Activity;"/> + <method name="getParentActivityIntent()Landroid/content/Intent;" since="16"/> + <method name="getPreferences(I)Landroid/content/SharedPreferences;"/> + <method name="getReferrer()Landroid/net/Uri;" since="22"/> + <method name="getRequestedOrientation()I"/> + <method name="getSearchEvent()Landroid/view/SearchEvent;" since="23"/> + <method name="getTaskId()I"/> + <method name="getTitle()Ljava/lang/CharSequence;"/> + <method name="getTitleColor()I"/> + <method name="getVoiceInteractor()Landroid/app/VoiceInteractor;" since="23"/> + <method name="getVolumeControlStream()I"/> + <method name="getWindow()Landroid/view/Window;"/> + <method name="getWindowManager()Landroid/view/WindowManager;"/> + <method name="hasWindowFocus()Z" since="3"/> + <method name="invalidateOptionsMenu()V" since="11"/> + <method name="isActivityTransitionRunning()Z" since="26"/> + <method name="isChangingConfigurations()Z" since="11"/> + <method name="isChild()Z"/> + <method name="isDestroyed()Z" since="17"/> + <method name="isFinishing()Z"/> + <method name="isImmersive()Z" since="18"/> + <method name="isInMultiWindowMode()Z" since="24"/> + <method name="isInPictureInPictureMode()Z" since="24"/> + <method name="isLocalVoiceInteractionSupported()Z" since="24"/> + <method name="isTaskRoot()Z"/> + <method name="isVoiceInteraction()Z" since="23"/> + <method name="isVoiceInteractionRoot()Z" since="23"/> + <method name="managedQuery(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" deprecated="16"/> + <method name="moveTaskToBack(Z)Z"/> + <method name="navigateUpTo(Landroid/content/Intent;)Z" since="16"/> + <method name="navigateUpToFromChild(Landroid/app/Activity;Landroid/content/Intent;)Z" since="16"/> + <method name="onActivityReenter(ILandroid/content/Intent;)V" since="21"/> + <method name="onActivityResult(IILandroid/content/Intent;)V"/> + <method name="onAttachFragment(Landroid/app/Fragment;)V" since="11"/> + <method name="onBackPressed()V" since="5"/> + <method name="onChildTitleChanged(Landroid/app/Activity;Ljava/lang/CharSequence;)V"/> + <method name="onContextItemSelected(Landroid/view/MenuItem;)Z"/> + <method name="onContextMenuClosed(Landroid/view/Menu;)V"/> + <method name="onCreate(Landroid/os/Bundle;)V"/> + <method name="onCreate(Landroid/os/Bundle;Landroid/os/PersistableBundle;)V" since="21"/> + <method name="onCreateDescription()Ljava/lang/CharSequence;"/> + <method name="onCreateDialog(I)Landroid/app/Dialog;" deprecated="16"/> + <method name="onCreateDialog(ILandroid/os/Bundle;)Landroid/app/Dialog;" since="8" deprecated="16"/> + <method name="onCreateNavigateUpTaskStack(Landroid/app/TaskStackBuilder;)V" since="16"/> + <method name="onCreateOptionsMenu(Landroid/view/Menu;)Z"/> + <method name="onCreateThumbnail(Landroid/graphics/Bitmap;Landroid/graphics/Canvas;)Z"/> + <method name="onDestroy()V"/> + <method name="onEnterAnimationComplete()V" since="21"/> + <method name="onGenericMotionEvent(Landroid/view/MotionEvent;)Z" since="12"/> + <method name="onKeyShortcut(ILandroid/view/KeyEvent;)Z" since="11"/> + <method name="onLocalVoiceInteractionStarted()V" since="24"/> + <method name="onLocalVoiceInteractionStopped()V" since="24"/> + <method name="onMultiWindowModeChanged(Z)V" since="24" deprecated="26"/> + <method name="onMultiWindowModeChanged(ZLandroid/content/res/Configuration;)V" since="26"/> + <method name="onNavigateUp()Z" since="16"/> + <method name="onNavigateUpFromChild(Landroid/app/Activity;)Z" since="16"/> + <method name="onNewIntent(Landroid/content/Intent;)V"/> + <method name="onOptionsItemSelected(Landroid/view/MenuItem;)Z"/> + <method name="onOptionsMenuClosed(Landroid/view/Menu;)V"/> + <method name="onPause()V"/> + <method name="onPictureInPictureModeChanged(Z)V" since="24" deprecated="26"/> + <method name="onPictureInPictureModeChanged(ZLandroid/content/res/Configuration;)V" since="26"/> + <method name="onPostCreate(Landroid/os/Bundle;)V"/> + <method name="onPostCreate(Landroid/os/Bundle;Landroid/os/PersistableBundle;)V" since="21"/> + <method name="onPostResume()V"/> + <method name="onPrepareDialog(ILandroid/app/Dialog;)V" deprecated="16"/> + <method name="onPrepareDialog(ILandroid/app/Dialog;Landroid/os/Bundle;)V" since="8" deprecated="16"/> + <method name="onPrepareNavigateUpTaskStack(Landroid/app/TaskStackBuilder;)V" since="16"/> + <method name="onPrepareOptionsMenu(Landroid/view/Menu;)Z"/> + <method name="onProvideAssistContent(Landroid/app/assist/AssistContent;)V" since="23"/> + <method name="onProvideAssistData(Landroid/os/Bundle;)V" since="18"/> + <method name="onProvideReferrer()Landroid/net/Uri;" since="23"/> + <method name="onRequestPermissionsResult(I[Ljava/lang/String;[I)V" since="23"/> + <method name="onRestart()V"/> + <method name="onRestoreInstanceState(Landroid/os/Bundle;)V"/> + <method name="onRestoreInstanceState(Landroid/os/Bundle;Landroid/os/PersistableBundle;)V" since="21"/> + <method name="onResume()V"/> + <method name="onRetainNonConfigurationInstance()Ljava/lang/Object;" deprecated="16"/> + <method name="onSaveInstanceState(Landroid/os/Bundle;)V"/> + <method name="onSaveInstanceState(Landroid/os/Bundle;Landroid/os/PersistableBundle;)V" since="21"/> + <method name="onStart()V"/> + <method name="onStateNotSaved()V" since="23"/> + <method name="onStop()V"/> + <method name="onTitleChanged(Ljava/lang/CharSequence;I)V"/> + <method name="onTouchEvent(Landroid/view/MotionEvent;)Z"/> + <method name="onTrackballEvent(Landroid/view/MotionEvent;)Z"/> + <method name="onUserInteraction()V" since="3"/> + <method name="onUserLeaveHint()V" since="3"/> + <method name="onVisibleBehindCanceled()V" since="21" deprecated="26"/> + <method name="openContextMenu(Landroid/view/View;)V"/> + <method name="openOptionsMenu()V"/> + <method name="overridePendingTransition(II)V" since="5"/> + <method name="postponeEnterTransition()V" since="21"/> + <method name="recreate()V" since="11"/> + <method name="registerForContextMenu(Landroid/view/View;)V"/> + <method name="releaseInstance()Z" since="21"/> + <method name="removeDialog(I)V" deprecated="16"/> + <method name="reportFullyDrawn()V" since="19"/> + <method name="requestDragAndDropPermissions(Landroid/view/DragEvent;)Landroid/view/DragAndDropPermissions;" since="24"/> + <method name="requestPermissions([Ljava/lang/String;I)V" since="23"/> + <method name="requestShowKeyboardShortcuts()V" since="24"/> + <method name="requestVisibleBehind(Z)Z" since="21" deprecated="26"/> + <method name="requestWindowFeature(I)Z"/> + <method name="runOnUiThread(Ljava/lang/Runnable;)V"/> + <method name="setActionBar(Landroid/widget/Toolbar;)V" since="21"/> + <method name="setContentTransitionManager(Landroid/transition/TransitionManager;)V" since="21"/> + <method name="setContentView(I)V"/> + <method name="setContentView(Landroid/view/View;)V"/> + <method name="setContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V"/> + <method name="setDefaultKeyMode(I)V"/> + <method name="setEnterSharedElementCallback(Landroid/app/SharedElementCallback;)V" since="21"/> + <method name="setExitSharedElementCallback(Landroid/app/SharedElementCallback;)V" since="21"/> + <method name="setFeatureDrawable(ILandroid/graphics/drawable/Drawable;)V"/> + <method name="setFeatureDrawableAlpha(II)V"/> + <method name="setFeatureDrawableResource(II)V"/> + <method name="setFeatureDrawableUri(ILandroid/net/Uri;)V"/> + <method name="setFinishOnTouchOutside(Z)V" since="11"/> + <method name="setImmersive(Z)V" since="18"/> + <method name="setIntent(Landroid/content/Intent;)V"/> + <method name="setMediaController(Landroid/media/session/MediaController;)V" since="21"/> + <method name="setPersistent(Z)V" removed="11"/> + <method name="setPictureInPictureParams(Landroid/app/PictureInPictureParams;)V" since="26"/> + <method name="setProgress(I)V" deprecated="24"/> + <method name="setProgressBarIndeterminate(Z)V" deprecated="24"/> + <method name="setProgressBarIndeterminateVisibility(Z)V" deprecated="24"/> + <method name="setProgressBarVisibility(Z)V" deprecated="24"/> + <method name="setRequestedOrientation(I)V"/> + <method name="setResult(I)V"/> + <method name="setResult(ILandroid/content/Intent;)V"/> + <method name="setSecondaryProgress(I)V" deprecated="24"/> + <method name="setTaskDescription(Landroid/app/ActivityManager$TaskDescription;)V" since="21"/> + <method name="setTitle(I)V"/> + <method name="setTitle(Ljava/lang/CharSequence;)V"/> + <method name="setTitleColor(I)V" deprecated="21"/> + <method name="setVisible(Z)V" since="3"/> + <method name="setVolumeControlStream(I)V"/> + <method name="setVrModeEnabled(ZLandroid/content/ComponentName;)V" since="24"/> + <method name="shouldShowRequestPermissionRationale(Ljava/lang/String;)Z" since="23"/> + <method name="shouldUpRecreateTask(Landroid/content/Intent;)Z" since="16"/> + <method name="showAssist(Landroid/os/Bundle;)Z" since="23"/> + <method name="showDialog(I)V" deprecated="16"/> + <method name="showDialog(ILandroid/os/Bundle;)Z" since="8" deprecated="16"/> + <method name="showLockTaskEscapeMessage()V" since="23"/> + <method name="startActionMode(Landroid/view/ActionMode$Callback;)Landroid/view/ActionMode;" since="11"/> + <method name="startActionMode(Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode;" since="23"/> + <method name="startActivityForResult(Landroid/content/Intent;I)V"/> + <method name="startActivityForResult(Landroid/content/Intent;ILandroid/os/Bundle;)V" since="16"/> + <method name="startActivityFromChild(Landroid/app/Activity;Landroid/content/Intent;I)V"/> + <method name="startActivityFromChild(Landroid/app/Activity;Landroid/content/Intent;ILandroid/os/Bundle;)V" since="16"/> + <method name="startActivityFromFragment(Landroid/app/Fragment;Landroid/content/Intent;I)V" since="11"/> + <method name="startActivityFromFragment(Landroid/app/Fragment;Landroid/content/Intent;ILandroid/os/Bundle;)V" since="16"/> + <method name="startActivityIfNeeded(Landroid/content/Intent;I)Z"/> + <method name="startActivityIfNeeded(Landroid/content/Intent;ILandroid/os/Bundle;)Z" since="16"/> + <method name="startIntentSenderForResult(Landroid/content/IntentSender;ILandroid/content/Intent;III)V" since="5"/> + <method name="startIntentSenderForResult(Landroid/content/IntentSender;ILandroid/content/Intent;IIILandroid/os/Bundle;)V" since="16"/> + <method name="startIntentSenderFromChild(Landroid/app/Activity;Landroid/content/IntentSender;ILandroid/content/Intent;III)V" since="5"/> + <method name="startIntentSenderFromChild(Landroid/app/Activity;Landroid/content/IntentSender;ILandroid/content/Intent;IIILandroid/os/Bundle;)V" since="16"/> + <method name="startLocalVoiceInteraction(Landroid/os/Bundle;)V" since="24"/> + <method name="startLockTask()V" since="21"/> + <method name="startManagingCursor(Landroid/database/Cursor;)V" deprecated="16"/> + <method name="startNextMatchingActivity(Landroid/content/Intent;)Z"/> + <method name="startNextMatchingActivity(Landroid/content/Intent;Landroid/os/Bundle;)Z" since="16"/> + <method name="startPostponedEnterTransition()V" since="21"/> + <method name="startSearch(Ljava/lang/String;ZLandroid/os/Bundle;Z)V"/> + <method name="stopLocalVoiceInteraction()V" since="24"/> + <method name="stopLockTask()V" since="21"/> + <method name="stopManagingCursor(Landroid/database/Cursor;)V" deprecated="16"/> + <method name="takeKeyEvents(Z)V"/> + <method name="triggerSearch(Ljava/lang/String;Landroid/os/Bundle;)V" since="5"/> + <method name="unregisterForContextMenu(Landroid/view/View;)V"/> + <field name="DEFAULT_KEYS_DIALER"/> + <field name="DEFAULT_KEYS_DISABLE"/> + <field name="DEFAULT_KEYS_SEARCH_GLOBAL"/> + <field name="DEFAULT_KEYS_SEARCH_LOCAL"/> + <field name="DEFAULT_KEYS_SHORTCUT"/> + <field name="FOCUSED_STATE_SET"/> + <field name="RESULT_CANCELED"/> + <field name="RESULT_FIRST_USER"/> + <field name="RESULT_OK"/> + </class> + <class name="android/app/ActivityGroup" since="1" deprecated="13"> + <extends name="android/app/Activity"/> + <method name="<init>()V"/> + <method name="<init>(Z)V"/> + <method name="getCurrentActivity()Landroid/app/Activity;"/> + <method name="getLocalActivityManager()Landroid/app/LocalActivityManager;"/> + </class> + <class name="android/app/ActivityManager" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addAppTask(Landroid/app/Activity;Landroid/content/Intent;Landroid/app/ActivityManager$TaskDescription;Landroid/graphics/Bitmap;)I" since="21"/> + <method name="clearApplicationUserData()Z" since="19"/> + <method name="clearWatchHeapLimit()V" since="23"/> + <method name="dumpPackageState(Ljava/io/FileDescriptor;Ljava/lang/String;)V" since="19"/> + <method name="getAppTaskThumbnailSize()Landroid/util/Size;" since="21"/> + <method name="getAppTasks()Ljava/util/List;" since="21"/> + <method name="getDeviceConfigurationInfo()Landroid/content/pm/ConfigurationInfo;" since="3"/> + <method name="getLargeMemoryClass()I" since="11"/> + <method name="getLauncherLargeIconDensity()I" since="11"/> + <method name="getLauncherLargeIconSize()I" since="11"/> + <method name="getLockTaskModeState()I" since="23"/> + <method name="getMemoryClass()I" since="5"/> + <method name="getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V"/> + <method name="getMyMemoryState(Landroid/app/ActivityManager$RunningAppProcessInfo;)V" since="16"/> + <method name="getProcessMemoryInfo([I)[Landroid/os/Debug$MemoryInfo;" since="5"/> + <method name="getProcessesInErrorState()Ljava/util/List;"/> + <method name="getRecentTasks(II)Ljava/util/List;" deprecated="21"/> + <method name="getRunningAppProcesses()Ljava/util/List;" since="3"/> + <method name="getRunningServiceControlPanel(Landroid/content/ComponentName;)Landroid/app/PendingIntent;" since="5"/> + <method name="getRunningServices(I)Ljava/util/List;" deprecated="26"/> + <method name="getRunningTasks(I)Ljava/util/List;" deprecated="21"/> + <method name="isInLockTaskMode()Z" since="21" deprecated="23"/> + <method name="isLowRamDevice()Z" since="19"/> + <method name="isRunningInTestHarness()Z" since="11"/> + <method name="isUserAMonkey()Z" since="8"/> + <method name="killBackgroundProcesses(Ljava/lang/String;)V" since="8"/> + <method name="moveTaskToFront(II)V" since="11"/> + <method name="moveTaskToFront(IILandroid/os/Bundle;)V" since="16"/> + <method name="restartPackage(Ljava/lang/String;)V" since="3" deprecated="16"/> + <method name="setVrThread(I)V" since="25"/> + <method name="setWatchHeapLimit(J)V" since="23"/> + <field name="ACTION_REPORT_HEAP_LIMIT" since="23"/> + <field name="LOCK_TASK_MODE_LOCKED" since="23"/> + <field name="LOCK_TASK_MODE_NONE" since="23"/> + <field name="LOCK_TASK_MODE_PINNED" since="23"/> + <field name="META_HOME_ALTERNATE" since="19"/> + <field name="MOVE_TASK_NO_USER_ACTION" since="12"/> + <field name="MOVE_TASK_WITH_HOME" since="11"/> + <field name="RECENT_IGNORE_UNAVAILABLE" since="11"/> + <field name="RECENT_WITH_EXCLUDED"/> + </class> + <class name="android/app/ActivityManager$AppTask" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="finishAndRemoveTask()V"/> + <method name="getTaskInfo()Landroid/app/ActivityManager$RecentTaskInfo;"/> + <method name="moveToFront()V"/> + <method name="setExcludeFromRecents(Z)V"/> + <method name="startActivity(Landroid/content/Context;Landroid/content/Intent;Landroid/os/Bundle;)V"/> + </class> + <class name="android/app/ActivityManager$MemoryInfo" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="readFromParcel(Landroid/os/Parcel;)V"/> + <field name="CREATOR"/> + <field name="availMem"/> + <field name="lowMemory"/> + <field name="threshold"/> + <field name="totalMem" since="16"/> + </class> + <class name="android/app/ActivityManager$ProcessErrorStateInfo" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="readFromParcel(Landroid/os/Parcel;)V"/> + <field name="CRASHED"/> + <field name="CREATOR"/> + <field name="NOT_RESPONDING"/> + <field name="NO_ERROR"/> + <field name="condition"/> + <field name="crashData"/> + <field name="longMsg"/> + <field name="pid"/> + <field name="processName"/> + <field name="shortMsg"/> + <field name="stackTrace" since="8"/> + <field name="tag"/> + <field name="uid"/> + </class> + <class name="android/app/ActivityManager$RecentTaskInfo" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="readFromParcel(Landroid/os/Parcel;)V"/> + <field name="CREATOR"/> + <field name="affiliatedTaskId" since="21"/> + <field name="baseActivity" since="23"/> + <field name="baseIntent"/> + <field name="description" since="11"/> + <field name="id"/> + <field name="numActivities" since="23"/> + <field name="origActivity"/> + <field name="persistentId" since="12"/> + <field name="taskDescription" since="21"/> + <field name="topActivity" since="23"/> + </class> + <class name="android/app/ActivityManager$RunningAppProcessInfo" since="3"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;I[Ljava/lang/String;)V"/> + <method name="readFromParcel(Landroid/os/Parcel;)V"/> + <field name="CREATOR"/> + <field name="IMPORTANCE_BACKGROUND" deprecated="26"/> + <field name="IMPORTANCE_CACHED" since="26"/> + <field name="IMPORTANCE_EMPTY" deprecated="26"/> + <field name="IMPORTANCE_FOREGROUND"/> + <field name="IMPORTANCE_FOREGROUND_SERVICE" since="23"/> + <field name="IMPORTANCE_GONE" since="21"/> + <field name="IMPORTANCE_PERCEPTIBLE" since="9"/> + <field name="IMPORTANCE_PERCEPTIBLE_PRE_26" since="26"/> + <field name="IMPORTANCE_SERVICE"/> + <field name="IMPORTANCE_TOP_SLEEPING" since="23"/> + <field name="IMPORTANCE_VISIBLE"/> + <field name="REASON_PROVIDER_IN_USE" since="5"/> + <field name="REASON_SERVICE_IN_USE" since="5"/> + <field name="REASON_UNKNOWN" since="5"/> + <field name="importance"/> + <field name="importanceReasonCode" since="5"/> + <field name="importanceReasonComponent" since="5"/> + <field name="importanceReasonPid" since="5"/> + <field name="lastTrimLevel" since="16"/> + <field name="lru"/> + <field name="pid"/> + <field name="pkgList"/> + <field name="processName"/> + <field name="uid" since="5"/> + </class> + <class name="android/app/ActivityManager$RunningServiceInfo" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="readFromParcel(Landroid/os/Parcel;)V"/> + <field name="CREATOR"/> + <field name="FLAG_FOREGROUND" since="5"/> + <field name="FLAG_PERSISTENT_PROCESS" since="5"/> + <field name="FLAG_STARTED" since="5"/> + <field name="FLAG_SYSTEM_PROCESS" since="5"/> + <field name="activeSince"/> + <field name="clientCount"/> + <field name="clientLabel" since="5"/> + <field name="clientPackage" since="5"/> + <field name="crashCount"/> + <field name="flags" since="5"/> + <field name="foreground"/> + <field name="lastActivityTime"/> + <field name="pid"/> + <field name="process"/> + <field name="restarting"/> + <field name="service"/> + <field name="started"/> + <field name="uid" since="5"/> + </class> + <class name="android/app/ActivityManager$RunningTaskInfo" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="readFromParcel(Landroid/os/Parcel;)V"/> + <field name="CREATOR"/> + <field name="baseActivity"/> + <field name="description"/> + <field name="id"/> + <field name="numActivities"/> + <field name="numRunning"/> + <field name="thumbnail"/> + <field name="topActivity"/> + </class> + <class name="android/app/ActivityManager$TaskDescription" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/app/ActivityManager$TaskDescription;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Landroid/graphics/Bitmap;)V"/> + <method name="<init>(Ljava/lang/String;Landroid/graphics/Bitmap;I)V"/> + <method name="getIcon()Landroid/graphics/Bitmap;"/> + <method name="getLabel()Ljava/lang/String;"/> + <method name="getPrimaryColor()I"/> + <method name="readFromParcel(Landroid/os/Parcel;)V"/> + <field name="CREATOR"/> + </class> + <class name="android/app/ActivityOptions" since="16"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getLaunchBounds()Landroid/graphics/Rect;" since="24"/> + <method name="getLaunchDisplayId()I" since="26"/> + <method name="makeBasic()Landroid/app/ActivityOptions;" since="23"/> + <method name="makeClipRevealAnimation(Landroid/view/View;IIII)Landroid/app/ActivityOptions;" since="23"/> + <method name="makeCustomAnimation(Landroid/content/Context;II)Landroid/app/ActivityOptions;"/> + <method name="makeScaleUpAnimation(Landroid/view/View;IIII)Landroid/app/ActivityOptions;"/> + <method name="makeSceneTransitionAnimation(Landroid/app/Activity;Landroid/view/View;Ljava/lang/String;)Landroid/app/ActivityOptions;" since="21"/> + <method name="makeSceneTransitionAnimation(Landroid/app/Activity;[Landroid/util/Pair;)Landroid/app/ActivityOptions;" since="21"/> + <method name="makeTaskLaunchBehind()Landroid/app/ActivityOptions;" since="21"/> + <method name="makeThumbnailScaleUpAnimation(Landroid/view/View;Landroid/graphics/Bitmap;II)Landroid/app/ActivityOptions;"/> + <method name="requestUsageTimeReport(Landroid/app/PendingIntent;)V" since="23"/> + <method name="setAppVerificationBundle(Landroid/os/Bundle;)Landroid/app/ActivityOptions;" since="26"/> + <method name="setLaunchBounds(Landroid/graphics/Rect;)Landroid/app/ActivityOptions;" since="24"/> + <method name="setLaunchDisplayId(I)Landroid/app/ActivityOptions;" since="26"/> + <method name="toBundle()Landroid/os/Bundle;"/> + <method name="update(Landroid/app/ActivityOptions;)V"/> + <field name="EXTRA_USAGE_TIME_REPORT" since="23"/> + <field name="EXTRA_USAGE_TIME_REPORT_PACKAGES" since="23"/> + </class> + <class name="android/app/AlarmManager" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="cancel(Landroid/app/AlarmManager$OnAlarmListener;)V" since="24"/> + <method name="cancel(Landroid/app/PendingIntent;)V"/> + <method name="getNextAlarmClock()Landroid/app/AlarmManager$AlarmClockInfo;" since="21"/> + <method name="set(IJLandroid/app/PendingIntent;)V"/> + <method name="set(IJLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;Landroid/os/Handler;)V" since="24"/> + <method name="setAlarmClock(Landroid/app/AlarmManager$AlarmClockInfo;Landroid/app/PendingIntent;)V" since="21"/> + <method name="setAndAllowWhileIdle(IJLandroid/app/PendingIntent;)V" since="23"/> + <method name="setExact(IJLandroid/app/PendingIntent;)V" since="19"/> + <method name="setExact(IJLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;Landroid/os/Handler;)V" since="24"/> + <method name="setExactAndAllowWhileIdle(IJLandroid/app/PendingIntent;)V" since="23"/> + <method name="setInexactRepeating(IJJLandroid/app/PendingIntent;)V" since="3"/> + <method name="setRepeating(IJJLandroid/app/PendingIntent;)V"/> + <method name="setTime(J)V" since="8"/> + <method name="setTimeZone(Ljava/lang/String;)V"/> + <method name="setWindow(IJJLandroid/app/PendingIntent;)V" since="19"/> + <method name="setWindow(IJJLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;Landroid/os/Handler;)V" since="24"/> + <field name="ACTION_NEXT_ALARM_CLOCK_CHANGED" since="21"/> + <field name="ELAPSED_REALTIME"/> + <field name="ELAPSED_REALTIME_WAKEUP"/> + <field name="INTERVAL_DAY" since="3"/> + <field name="INTERVAL_FIFTEEN_MINUTES" since="3"/> + <field name="INTERVAL_HALF_DAY" since="3"/> + <field name="INTERVAL_HALF_HOUR" since="3"/> + <field name="INTERVAL_HOUR" since="3"/> + <field name="RTC"/> + <field name="RTC_WAKEUP"/> + </class> + <class name="android/app/AlarmManager$AlarmClockInfo" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(JLandroid/app/PendingIntent;)V"/> + <method name="getShowIntent()Landroid/app/PendingIntent;"/> + <method name="getTriggerTime()J"/> + <field name="CREATOR"/> + </class> + <class name="android/app/AlarmManager$OnAlarmListener" since="24"> + <extends name="java/lang/Object"/> + <method name="onAlarm()V"/> + </class> + <class name="android/app/AlertDialog" since="1"> + <extends name="android/app/Dialog"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;I)V"/> + <method name="<init>(Landroid/content/Context;ZLandroid/content/DialogInterface$OnCancelListener;)V"/> + <method name="getButton(I)Landroid/widget/Button;" since="3"/> + <method name="getListView()Landroid/widget/ListView;" since="3"/> + <method name="setButton(ILjava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)V" since="3"/> + <method name="setButton(ILjava/lang/CharSequence;Landroid/os/Message;)V" since="3"/> + <method name="setButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)V" deprecated="16"/> + <method name="setButton(Ljava/lang/CharSequence;Landroid/os/Message;)V" deprecated="16"/> + <method name="setButton2(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)V" deprecated="16"/> + <method name="setButton2(Ljava/lang/CharSequence;Landroid/os/Message;)V" deprecated="16"/> + <method name="setButton3(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)V" deprecated="16"/> + <method name="setButton3(Ljava/lang/CharSequence;Landroid/os/Message;)V" deprecated="16"/> + <method name="setCustomTitle(Landroid/view/View;)V"/> + <method name="setIcon(I)V"/> + <method name="setIcon(Landroid/graphics/drawable/Drawable;)V"/> + <method name="setIconAttribute(I)V" since="11"/> + <method name="setInverseBackgroundForced(Z)V"/> + <method name="setMessage(Ljava/lang/CharSequence;)V"/> + <method name="setView(Landroid/view/View;)V"/> + <method name="setView(Landroid/view/View;IIII)V" since="3"/> + <field name="THEME_DEVICE_DEFAULT_DARK" since="14" deprecated="23"/> + <field name="THEME_DEVICE_DEFAULT_LIGHT" since="14" deprecated="23"/> + <field name="THEME_HOLO_DARK" since="11" deprecated="23"/> + <field name="THEME_HOLO_LIGHT" since="11" deprecated="23"/> + <field name="THEME_TRADITIONAL" since="11" deprecated="23"/> + </class> + <class name="android/app/AlertDialog$Builder" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;I)V" since="11"/> + <method name="create()Landroid/app/AlertDialog;"/> + <method name="getContext()Landroid/content/Context;" since="11"/> + <method name="setAdapter(Landroid/widget/ListAdapter;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;"/> + <method name="setCancelable(Z)Landroid/app/AlertDialog$Builder;"/> + <method name="setCursor(Landroid/database/Cursor;Landroid/content/DialogInterface$OnClickListener;Ljava/lang/String;)Landroid/app/AlertDialog$Builder;"/> + <method name="setCustomTitle(Landroid/view/View;)Landroid/app/AlertDialog$Builder;"/> + <method name="setIcon(I)Landroid/app/AlertDialog$Builder;"/> + <method name="setIcon(Landroid/graphics/drawable/Drawable;)Landroid/app/AlertDialog$Builder;"/> + <method name="setIconAttribute(I)Landroid/app/AlertDialog$Builder;" since="11"/> + <method name="setInverseBackgroundForced(Z)Landroid/app/AlertDialog$Builder;" deprecated="23"/> + <method name="setItems(ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;"/> + <method name="setItems([Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;"/> + <method name="setMessage(I)Landroid/app/AlertDialog$Builder;"/> + <method name="setMessage(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;"/> + <method name="setMultiChoiceItems(I[ZLandroid/content/DialogInterface$OnMultiChoiceClickListener;)Landroid/app/AlertDialog$Builder;"/> + <method name="setMultiChoiceItems(Landroid/database/Cursor;Ljava/lang/String;Ljava/lang/String;Landroid/content/DialogInterface$OnMultiChoiceClickListener;)Landroid/app/AlertDialog$Builder;"/> + <method name="setMultiChoiceItems([Ljava/lang/CharSequence;[ZLandroid/content/DialogInterface$OnMultiChoiceClickListener;)Landroid/app/AlertDialog$Builder;"/> + <method name="setNegativeButton(ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;"/> + <method name="setNegativeButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;"/> + <method name="setNeutralButton(ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;"/> + <method name="setNeutralButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;"/> + <method name="setOnCancelListener(Landroid/content/DialogInterface$OnCancelListener;)Landroid/app/AlertDialog$Builder;"/> + <method name="setOnDismissListener(Landroid/content/DialogInterface$OnDismissListener;)Landroid/app/AlertDialog$Builder;" since="17"/> + <method name="setOnItemSelectedListener(Landroid/widget/AdapterView$OnItemSelectedListener;)Landroid/app/AlertDialog$Builder;"/> + <method name="setOnKeyListener(Landroid/content/DialogInterface$OnKeyListener;)Landroid/app/AlertDialog$Builder;"/> + <method name="setPositiveButton(ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;"/> + <method name="setPositiveButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;"/> + <method name="setSingleChoiceItems(IILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;"/> + <method name="setSingleChoiceItems(Landroid/database/Cursor;ILjava/lang/String;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;"/> + <method name="setSingleChoiceItems(Landroid/widget/ListAdapter;ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;"/> + <method name="setSingleChoiceItems([Ljava/lang/CharSequence;ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;"/> + <method name="setTitle(I)Landroid/app/AlertDialog$Builder;"/> + <method name="setTitle(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;"/> + <method name="setView(I)Landroid/app/AlertDialog$Builder;" since="21"/> + <method name="setView(Landroid/view/View;)Landroid/app/AlertDialog$Builder;"/> + <method name="show()Landroid/app/AlertDialog;"/> + </class> + <class name="android/app/AliasActivity" since="1"> + <extends name="android/app/Activity"/> + <method name="<init>()V"/> + </class> + <class name="android/app/AppOpsManager" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="checkOp(Ljava/lang/String;ILjava/lang/String;)I"/> + <method name="checkOpNoThrow(Ljava/lang/String;ILjava/lang/String;)I"/> + <method name="checkPackage(ILjava/lang/String;)V"/> + <method name="finishOp(Ljava/lang/String;ILjava/lang/String;)V"/> + <method name="noteOp(Ljava/lang/String;ILjava/lang/String;)I"/> + <method name="noteOpNoThrow(Ljava/lang/String;ILjava/lang/String;)I"/> + <method name="noteProxyOp(Ljava/lang/String;Ljava/lang/String;)I" since="23"/> + <method name="noteProxyOpNoThrow(Ljava/lang/String;Ljava/lang/String;)I" since="23"/> + <method name="permissionToOp(Ljava/lang/String;)Ljava/lang/String;" since="23"/> + <method name="startOp(Ljava/lang/String;ILjava/lang/String;)I"/> + <method name="startOpNoThrow(Ljava/lang/String;ILjava/lang/String;)I"/> + <method name="startWatchingMode(Ljava/lang/String;Ljava/lang/String;Landroid/app/AppOpsManager$OnOpChangedListener;)V"/> + <method name="stopWatchingMode(Landroid/app/AppOpsManager$OnOpChangedListener;)V"/> + <field name="MODE_ALLOWED"/> + <field name="MODE_DEFAULT" since="21"/> + <field name="MODE_ERRORED"/> + <field name="MODE_IGNORED"/> + <field name="OPSTR_ADD_VOICEMAIL" since="23"/> + <field name="OPSTR_ANSWER_PHONE_CALLS" since="26"/> + <field name="OPSTR_BODY_SENSORS" since="23"/> + <field name="OPSTR_CALL_PHONE" since="23"/> + <field name="OPSTR_CAMERA" since="23"/> + <field name="OPSTR_COARSE_LOCATION"/> + <field name="OPSTR_FINE_LOCATION"/> + <field name="OPSTR_GET_USAGE_STATS" since="21"/> + <field name="OPSTR_MOCK_LOCATION" since="23"/> + <field name="OPSTR_MONITOR_HIGH_POWER_LOCATION"/> + <field name="OPSTR_MONITOR_LOCATION"/> + <field name="OPSTR_PICTURE_IN_PICTURE" since="26"/> + <field name="OPSTR_PROCESS_OUTGOING_CALLS" since="26"/> + <field name="OPSTR_READ_CALENDAR" since="23"/> + <field name="OPSTR_READ_CALL_LOG" since="23"/> + <field name="OPSTR_READ_CELL_BROADCASTS" since="23"/> + <field name="OPSTR_READ_CONTACTS" since="23"/> + <field name="OPSTR_READ_EXTERNAL_STORAGE" since="23"/> + <field name="OPSTR_READ_PHONE_NUMBERS" since="26"/> + <field name="OPSTR_READ_PHONE_STATE" since="23"/> + <field name="OPSTR_READ_SMS" since="23"/> + <field name="OPSTR_RECEIVE_MMS" since="23"/> + <field name="OPSTR_RECEIVE_SMS" since="23"/> + <field name="OPSTR_RECEIVE_WAP_PUSH" since="23"/> + <field name="OPSTR_RECORD_AUDIO" since="23"/> + <field name="OPSTR_SEND_SMS" since="23"/> + <field name="OPSTR_SYSTEM_ALERT_WINDOW" since="23"/> + <field name="OPSTR_USE_FINGERPRINT" since="23"/> + <field name="OPSTR_USE_SIP" since="23"/> + <field name="OPSTR_WRITE_CALENDAR" since="23"/> + <field name="OPSTR_WRITE_CALL_LOG" since="23"/> + <field name="OPSTR_WRITE_CONTACTS" since="23"/> + <field name="OPSTR_WRITE_EXTERNAL_STORAGE" since="23"/> + <field name="OPSTR_WRITE_SETTINGS" since="23"/> + </class> + <class name="android/app/AppOpsManager$OnOpChangedListener" since="19"> + <extends name="java/lang/Object"/> + <method name="onOpChanged(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="android/app/Application" since="1"> + <extends name="android/content/ContextWrapper"/> + <implements name="android/content/ComponentCallbacks" removed="14"/> + <implements name="android/content/ComponentCallbacks2" since="14"/> + <method name="<init>()V"/> + <method name="onCreate()V"/> + <method name="onTerminate()V"/> + <method name="registerActivityLifecycleCallbacks(Landroid/app/Application$ActivityLifecycleCallbacks;)V" since="14"/> + <method name="registerOnProvideAssistDataListener(Landroid/app/Application$OnProvideAssistDataListener;)V" since="18"/> + <method name="unregisterActivityLifecycleCallbacks(Landroid/app/Application$ActivityLifecycleCallbacks;)V" since="14"/> + <method name="unregisterOnProvideAssistDataListener(Landroid/app/Application$OnProvideAssistDataListener;)V" since="18"/> + </class> + <class name="android/app/Application$ActivityLifecycleCallbacks" since="14"> + <extends name="java/lang/Object"/> + <method name="onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V"/> + <method name="onActivityDestroyed(Landroid/app/Activity;)V"/> + <method name="onActivityPaused(Landroid/app/Activity;)V"/> + <method name="onActivityResumed(Landroid/app/Activity;)V"/> + <method name="onActivitySaveInstanceState(Landroid/app/Activity;Landroid/os/Bundle;)V"/> + <method name="onActivityStarted(Landroid/app/Activity;)V"/> + <method name="onActivityStopped(Landroid/app/Activity;)V"/> + </class> + <class name="android/app/Application$OnProvideAssistDataListener" since="18"> + <extends name="java/lang/Object"/> + <method name="onProvideAssistData(Landroid/app/Activity;Landroid/os/Bundle;)V"/> + </class> + <class name="android/app/ApplicationErrorReport" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="dump(Landroid/util/Printer;Ljava/lang/String;)V"/> + <method name="getErrorReportReceiver(Landroid/content/Context;Ljava/lang/String;I)Landroid/content/ComponentName;"/> + <method name="readFromParcel(Landroid/os/Parcel;)V"/> + <field name="CREATOR"/> + <field name="TYPE_ANR"/> + <field name="TYPE_BATTERY"/> + <field name="TYPE_CRASH"/> + <field name="TYPE_NONE"/> + <field name="TYPE_RUNNING_SERVICE"/> + <field name="anrInfo"/> + <field name="batteryInfo"/> + <field name="crashInfo"/> + <field name="installerPackageName"/> + <field name="packageName"/> + <field name="processName"/> + <field name="runningServiceInfo"/> + <field name="systemApp"/> + <field name="time"/> + <field name="type"/> + </class> + <class name="android/app/ApplicationErrorReport$AnrInfo" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="dump(Landroid/util/Printer;Ljava/lang/String;)V"/> + <method name="writeToParcel(Landroid/os/Parcel;I)V"/> + <field name="activity"/> + <field name="cause"/> + <field name="info"/> + </class> + <class name="android/app/ApplicationErrorReport$BatteryInfo" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="dump(Landroid/util/Printer;Ljava/lang/String;)V"/> + <method name="writeToParcel(Landroid/os/Parcel;I)V"/> + <field name="checkinDetails"/> + <field name="durationMicros"/> + <field name="usageDetails"/> + <field name="usagePercent"/> + </class> + <class name="android/app/ApplicationErrorReport$CrashInfo" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + <method name="dump(Landroid/util/Printer;Ljava/lang/String;)V"/> + <method name="writeToParcel(Landroid/os/Parcel;I)V"/> + <field name="exceptionClassName"/> + <field name="exceptionMessage"/> + <field name="stackTrace"/> + <field name="throwClassName"/> + <field name="throwFileName"/> + <field name="throwLineNumber"/> + <field name="throwMethodName"/> + </class> + <class name="android/app/ApplicationErrorReport$RunningServiceInfo" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="dump(Landroid/util/Printer;Ljava/lang/String;)V"/> + <method name="writeToParcel(Landroid/os/Parcel;I)V"/> + <field name="durationMillis"/> + <field name="serviceDetails"/> + </class> + <class name="android/app/AuthenticationRequiredException" since="26"> + <extends name="java/lang/SecurityException"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Ljava/lang/Throwable;Landroid/app/PendingIntent;)V"/> + <method name="getUserAction()Landroid/app/PendingIntent;"/> + <field name="CREATOR"/> + </class> + <class name="android/app/AutomaticZenRule" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="<init>(Ljava/lang/String;Landroid/content/ComponentName;Landroid/net/Uri;IZ)V"/> + <method name="getConditionId()Landroid/net/Uri;"/> + <method name="getCreationTime()J"/> + <method name="getInterruptionFilter()I"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getOwner()Landroid/content/ComponentName;"/> + <method name="isEnabled()Z"/> + <method name="setConditionId(Landroid/net/Uri;)V"/> + <method name="setEnabled(Z)V"/> + <method name="setInterruptionFilter(I)V"/> + <method name="setName(Ljava/lang/String;)V"/> + <field name="CREATOR"/> + </class> + <class name="android/app/DatePickerDialog" since="1"> + <extends name="android/app/AlertDialog"/> + <implements name="android/content/DialogInterface$OnClickListener"/> + <implements name="android/widget/DatePicker$OnDateChangedListener"/> + <method name="<init>(Landroid/content/Context;)V" since="24"/> + <method name="<init>(Landroid/content/Context;I)V" since="24"/> + <method name="<init>(Landroid/content/Context;ILandroid/app/DatePickerDialog$OnDateSetListener;III)V"/> + <method name="<init>(Landroid/content/Context;Landroid/app/DatePickerDialog$OnDateSetListener;III)V"/> + <method name="getDatePicker()Landroid/widget/DatePicker;" since="11"/> + <method name="setOnDateSetListener(Landroid/app/DatePickerDialog$OnDateSetListener;)V" since="24"/> + <method name="updateDate(III)V"/> + </class> + <class name="android/app/DatePickerDialog$OnDateSetListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onDateSet(Landroid/widget/DatePicker;III)V"/> + </class> + <class name="android/app/Dialog" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/content/DialogInterface"/> + <implements name="android/view/KeyEvent$Callback"/> + <implements name="android/view/View$OnCreateContextMenuListener"/> + <implements name="android/view/Window$Callback"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;I)V"/> + <method name="<init>(Landroid/content/Context;ZLandroid/content/DialogInterface$OnCancelListener;)V"/> + <method name="addContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V"/> + <method name="closeOptionsMenu()V"/> + <method name="create()V" since="21"/> + <method name="findViewById(I)Landroid/view/View;"/> + <method name="getActionBar()Landroid/app/ActionBar;" since="11"/> + <method name="getContext()Landroid/content/Context;"/> + <method name="getCurrentFocus()Landroid/view/View;"/> + <method name="getLayoutInflater()Landroid/view/LayoutInflater;"/> + <method name="getOwnerActivity()Landroid/app/Activity;"/> + <method name="getSearchEvent()Landroid/view/SearchEvent;" since="23"/> + <method name="getVolumeControlStream()I"/> + <method name="getWindow()Landroid/view/Window;"/> + <method name="hide()V"/> + <method name="invalidateOptionsMenu()V" since="11"/> + <method name="isShowing()Z"/> + <method name="onBackPressed()V" since="5"/> + <method name="onContextItemSelected(Landroid/view/MenuItem;)Z"/> + <method name="onContextMenuClosed(Landroid/view/Menu;)V"/> + <method name="onCreate(Landroid/os/Bundle;)V"/> + <method name="onCreateOptionsMenu(Landroid/view/Menu;)Z"/> + <method name="onGenericMotionEvent(Landroid/view/MotionEvent;)Z" since="12"/> + <method name="onKeyShortcut(ILandroid/view/KeyEvent;)Z" since="11"/> + <method name="onOptionsItemSelected(Landroid/view/MenuItem;)Z"/> + <method name="onOptionsMenuClosed(Landroid/view/Menu;)V"/> + <method name="onPrepareOptionsMenu(Landroid/view/Menu;)Z"/> + <method name="onRestoreInstanceState(Landroid/os/Bundle;)V"/> + <method name="onSaveInstanceState()Landroid/os/Bundle;"/> + <method name="onStart()V"/> + <method name="onStop()V"/> + <method name="onTouchEvent(Landroid/view/MotionEvent;)Z"/> + <method name="onTrackballEvent(Landroid/view/MotionEvent;)Z"/> + <method name="openContextMenu(Landroid/view/View;)V"/> + <method name="openOptionsMenu()V"/> + <method name="registerForContextMenu(Landroid/view/View;)V"/> + <method name="requestWindowFeature(I)Z"/> + <method name="setCancelMessage(Landroid/os/Message;)V"/> + <method name="setCancelable(Z)V"/> + <method name="setCanceledOnTouchOutside(Z)V"/> + <method name="setContentView(I)V"/> + <method name="setContentView(Landroid/view/View;)V"/> + <method name="setContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V"/> + <method name="setDismissMessage(Landroid/os/Message;)V"/> + <method name="setFeatureDrawable(ILandroid/graphics/drawable/Drawable;)V"/> + <method name="setFeatureDrawableAlpha(II)V"/> + <method name="setFeatureDrawableResource(II)V"/> + <method name="setFeatureDrawableUri(ILandroid/net/Uri;)V"/> + <method name="setOnCancelListener(Landroid/content/DialogInterface$OnCancelListener;)V"/> + <method name="setOnDismissListener(Landroid/content/DialogInterface$OnDismissListener;)V"/> + <method name="setOnKeyListener(Landroid/content/DialogInterface$OnKeyListener;)V"/> + <method name="setOnShowListener(Landroid/content/DialogInterface$OnShowListener;)V" since="8"/> + <method name="setOwnerActivity(Landroid/app/Activity;)V"/> + <method name="setTitle(I)V"/> + <method name="setTitle(Ljava/lang/CharSequence;)V"/> + <method name="setVolumeControlStream(I)V"/> + <method name="show()V"/> + <method name="takeKeyEvents(Z)V"/> + <method name="unregisterForContextMenu(Landroid/view/View;)V"/> + </class> + <class name="android/app/DialogFragment" since="11"> + <extends name="android/app/Fragment"/> + <implements name="android/content/DialogInterface$OnCancelListener"/> + <implements name="android/content/DialogInterface$OnDismissListener"/> + <method name="<init>()V"/> + <method name="dismiss()V"/> + <method name="dismissAllowingStateLoss()V" since="12"/> + <method name="getDialog()Landroid/app/Dialog;"/> + <method name="getShowsDialog()Z"/> + <method name="getTheme()I"/> + <method name="isCancelable()Z"/> + <method name="onCreateDialog(Landroid/os/Bundle;)Landroid/app/Dialog;"/> + <method name="setCancelable(Z)V"/> + <method name="setShowsDialog(Z)V"/> + <method name="setStyle(II)V"/> + <method name="show(Landroid/app/FragmentManager;Ljava/lang/String;)V"/> + <method name="show(Landroid/app/FragmentTransaction;Ljava/lang/String;)I"/> + <field name="STYLE_NORMAL"/> + <field name="STYLE_NO_FRAME"/> + <field name="STYLE_NO_INPUT"/> + <field name="STYLE_NO_TITLE"/> + </class> + <class name="android/app/DownloadManager" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addCompletedDownload(Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;JZ)J" since="12"/> + <method name="addCompletedDownload(Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;JZLandroid/net/Uri;Landroid/net/Uri;)J" since="24"/> + <method name="enqueue(Landroid/app/DownloadManager$Request;)J"/> + <method name="getMaxBytesOverMobile(Landroid/content/Context;)Ljava/lang/Long;" since="11"/> + <method name="getMimeTypeForDownloadedFile(J)Ljava/lang/String;" since="11"/> + <method name="getRecommendedMaxBytesOverMobile(Landroid/content/Context;)Ljava/lang/Long;" since="11"/> + <method name="getUriForDownloadedFile(J)Landroid/net/Uri;" since="11"/> + <method name="openDownloadedFile(J)Landroid/os/ParcelFileDescriptor;"/> + <method name="query(Landroid/app/DownloadManager$Query;)Landroid/database/Cursor;"/> + <method name="remove([J)I"/> + <field name="ACTION_DOWNLOAD_COMPLETE"/> + <field name="ACTION_NOTIFICATION_CLICKED"/> + <field name="ACTION_VIEW_DOWNLOADS"/> + <field name="COLUMN_BYTES_DOWNLOADED_SO_FAR"/> + <field name="COLUMN_DESCRIPTION"/> + <field name="COLUMN_ID"/> + <field name="COLUMN_LAST_MODIFIED_TIMESTAMP"/> + <field name="COLUMN_LOCAL_FILENAME" since="11" deprecated="24"/> + <field name="COLUMN_LOCAL_URI"/> + <field name="COLUMN_MEDIAPROVIDER_URI"/> + <field name="COLUMN_MEDIA_TYPE"/> + <field name="COLUMN_REASON"/> + <field name="COLUMN_STATUS"/> + <field name="COLUMN_TITLE"/> + <field name="COLUMN_TOTAL_SIZE_BYTES"/> + <field name="COLUMN_URI"/> + <field name="ERROR_CANNOT_RESUME"/> + <field name="ERROR_DEVICE_NOT_FOUND"/> + <field name="ERROR_FILE_ALREADY_EXISTS"/> + <field name="ERROR_FILE_ERROR"/> + <field name="ERROR_HTTP_DATA_ERROR"/> + <field name="ERROR_INSUFFICIENT_SPACE"/> + <field name="ERROR_TOO_MANY_REDIRECTS"/> + <field name="ERROR_UNHANDLED_HTTP_CODE"/> + <field name="ERROR_UNKNOWN"/> + <field name="EXTRA_DOWNLOAD_ID"/> + <field name="EXTRA_NOTIFICATION_CLICK_DOWNLOAD_IDS" since="11"/> + <field name="INTENT_EXTRAS_SORT_BY_SIZE" since="12"/> + <field name="PAUSED_QUEUED_FOR_WIFI"/> + <field name="PAUSED_UNKNOWN"/> + <field name="PAUSED_WAITING_FOR_NETWORK"/> + <field name="PAUSED_WAITING_TO_RETRY"/> + <field name="STATUS_FAILED"/> + <field name="STATUS_PAUSED"/> + <field name="STATUS_PENDING"/> + <field name="STATUS_RUNNING"/> + <field name="STATUS_SUCCESSFUL"/> + </class> + <class name="android/app/DownloadManager$Query" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="setFilterById([J)Landroid/app/DownloadManager$Query;"/> + <method name="setFilterByStatus(I)Landroid/app/DownloadManager$Query;"/> + </class> + <class name="android/app/DownloadManager$Request" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/net/Uri;)V"/> + <method name="addRequestHeader(Ljava/lang/String;Ljava/lang/String;)Landroid/app/DownloadManager$Request;"/> + <method name="allowScanningByMediaScanner()V" since="11"/> + <method name="setAllowedNetworkTypes(I)Landroid/app/DownloadManager$Request;"/> + <method name="setAllowedOverMetered(Z)Landroid/app/DownloadManager$Request;" since="16"/> + <method name="setAllowedOverRoaming(Z)Landroid/app/DownloadManager$Request;"/> + <method name="setDescription(Ljava/lang/CharSequence;)Landroid/app/DownloadManager$Request;"/> + <method name="setDestinationInExternalFilesDir(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)Landroid/app/DownloadManager$Request;"/> + <method name="setDestinationInExternalPublicDir(Ljava/lang/String;Ljava/lang/String;)Landroid/app/DownloadManager$Request;"/> + <method name="setDestinationUri(Landroid/net/Uri;)Landroid/app/DownloadManager$Request;"/> + <method name="setMimeType(Ljava/lang/String;)Landroid/app/DownloadManager$Request;"/> + <method name="setNotificationVisibility(I)Landroid/app/DownloadManager$Request;" since="11"/> + <method name="setRequiresCharging(Z)Landroid/app/DownloadManager$Request;" since="24"/> + <method name="setRequiresDeviceIdle(Z)Landroid/app/DownloadManager$Request;" since="24"/> + <method name="setShowRunningNotification(Z)Landroid/app/DownloadManager$Request;" deprecated="16"/> + <method name="setTitle(Ljava/lang/CharSequence;)Landroid/app/DownloadManager$Request;"/> + <method name="setVisibleInDownloadsUi(Z)Landroid/app/DownloadManager$Request;"/> + <field name="NETWORK_MOBILE"/> + <field name="NETWORK_WIFI"/> + <field name="VISIBILITY_HIDDEN" since="11"/> + <field name="VISIBILITY_VISIBLE" since="11"/> + <field name="VISIBILITY_VISIBLE_NOTIFY_COMPLETED" since="11"/> + <field name="VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION" since="12"/> + </class> + <class name="android/app/ExpandableListActivity" since="1"> + <extends name="android/app/Activity"/> + <implements name="android/widget/ExpandableListView$OnChildClickListener"/> + <implements name="android/widget/ExpandableListView$OnGroupCollapseListener"/> + <implements name="android/widget/ExpandableListView$OnGroupExpandListener"/> + <method name="<init>()V"/> + <method name="getExpandableListAdapter()Landroid/widget/ExpandableListAdapter;"/> + <method name="getExpandableListView()Landroid/widget/ExpandableListView;"/> + <method name="getSelectedId()J"/> + <method name="getSelectedPosition()J"/> + <method name="setListAdapter(Landroid/widget/ExpandableListAdapter;)V"/> + <method name="setSelectedChild(IIZ)Z"/> + <method name="setSelectedGroup(I)V"/> + </class> + <class name="android/app/Fragment" since="11"> + <extends name="java/lang/Object"/> + <implements name="android/content/ComponentCallbacks" removed="14"/> + <implements name="android/content/ComponentCallbacks2" since="14"/> + <implements name="android/view/View$OnCreateContextMenuListener"/> + <method name="<init>()V"/> + <method name="dump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V"/> + <method name="getActivity()Landroid/app/Activity;"/> + <method name="getAllowEnterTransitionOverlap()Z" since="21"/> + <method name="getAllowReturnTransitionOverlap()Z" since="21"/> + <method name="getArguments()Landroid/os/Bundle;"/> + <method name="getChildFragmentManager()Landroid/app/FragmentManager;" since="17"/> + <method name="getContext()Landroid/content/Context;" since="23"/> + <method name="getEnterTransition()Landroid/transition/Transition;" since="21"/> + <method name="getExitTransition()Landroid/transition/Transition;" since="21"/> + <method name="getFragmentManager()Landroid/app/FragmentManager;"/> + <method name="getHost()Ljava/lang/Object;" since="23"/> + <method name="getId()I"/> + <method name="getLayoutInflater()Landroid/view/LayoutInflater;" since="26"/> + <method name="getLoaderManager()Landroid/app/LoaderManager;"/> + <method name="getParentFragment()Landroid/app/Fragment;" since="17"/> + <method name="getReenterTransition()Landroid/transition/Transition;" since="21"/> + <method name="getResources()Landroid/content/res/Resources;"/> + <method name="getRetainInstance()Z"/> + <method name="getReturnTransition()Landroid/transition/Transition;" since="21"/> + <method name="getSharedElementEnterTransition()Landroid/transition/Transition;" since="21"/> + <method name="getSharedElementReturnTransition()Landroid/transition/Transition;" since="21"/> + <method name="getString(I)Ljava/lang/String;"/> + <method name="getString(I[Ljava/lang/Object;)Ljava/lang/String;"/> + <method name="getTag()Ljava/lang/String;"/> + <method name="getTargetFragment()Landroid/app/Fragment;"/> + <method name="getTargetRequestCode()I"/> + <method name="getText(I)Ljava/lang/CharSequence;"/> + <method name="getUserVisibleHint()Z" since="15"/> + <method name="getView()Landroid/view/View;"/> + <method name="instantiate(Landroid/content/Context;Ljava/lang/String;)Landroid/app/Fragment;"/> + <method name="instantiate(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;)Landroid/app/Fragment;"/> + <method name="isAdded()Z"/> + <method name="isDetached()Z" since="13"/> + <method name="isHidden()Z"/> + <method name="isInLayout()Z"/> + <method name="isRemoving()Z"/> + <method name="isResumed()Z"/> + <method name="isStateSaved()Z" since="26"/> + <method name="isVisible()Z"/> + <method name="onActivityCreated(Landroid/os/Bundle;)V"/> + <method name="onActivityResult(IILandroid/content/Intent;)V"/> + <method name="onAttach(Landroid/app/Activity;)V" deprecated="23"/> + <method name="onAttach(Landroid/content/Context;)V" since="23"/> + <method name="onAttachFragment(Landroid/app/Fragment;)V" since="24"/> + <method name="onContextItemSelected(Landroid/view/MenuItem;)Z"/> + <method name="onCreate(Landroid/os/Bundle;)V"/> + <method name="onCreateAnimator(IZI)Landroid/animation/Animator;"/> + <method name="onCreateOptionsMenu(Landroid/view/Menu;Landroid/view/MenuInflater;)V"/> + <method name="onCreateView(Landroid/view/LayoutInflater;Landroid/view/ViewGroup;Landroid/os/Bundle;)Landroid/view/View;"/> + <method name="onDestroy()V"/> + <method name="onDestroyOptionsMenu()V"/> + <method name="onDestroyView()V"/> + <method name="onDetach()V"/> + <method name="onGetLayoutInflater(Landroid/os/Bundle;)Landroid/view/LayoutInflater;" since="26"/> + <method name="onHiddenChanged(Z)V"/> + <method name="onInflate(Landroid/app/Activity;Landroid/util/AttributeSet;Landroid/os/Bundle;)V" since="12" deprecated="23"/> + <method name="onInflate(Landroid/content/Context;Landroid/util/AttributeSet;Landroid/os/Bundle;)V" since="23"/> + <method name="onInflate(Landroid/util/AttributeSet;Landroid/os/Bundle;)V" deprecated="16"/> + <method name="onMultiWindowModeChanged(Z)V" since="24" deprecated="26"/> + <method name="onMultiWindowModeChanged(ZLandroid/content/res/Configuration;)V" since="26"/> + <method name="onOptionsItemSelected(Landroid/view/MenuItem;)Z"/> + <method name="onOptionsMenuClosed(Landroid/view/Menu;)V"/> + <method name="onPause()V"/> + <method name="onPictureInPictureModeChanged(Z)V" since="24" deprecated="26"/> + <method name="onPictureInPictureModeChanged(ZLandroid/content/res/Configuration;)V" since="26"/> + <method name="onPrepareOptionsMenu(Landroid/view/Menu;)V"/> + <method name="onRequestPermissionsResult(I[Ljava/lang/String;[I)V" since="23"/> + <method name="onResume()V"/> + <method name="onSaveInstanceState(Landroid/os/Bundle;)V"/> + <method name="onStart()V"/> + <method name="onStop()V"/> + <method name="onViewCreated(Landroid/view/View;Landroid/os/Bundle;)V" since="13"/> + <method name="onViewStateRestored(Landroid/os/Bundle;)V" since="17"/> + <method name="postponeEnterTransition()V" since="26"/> + <method name="registerForContextMenu(Landroid/view/View;)V"/> + <method name="requestPermissions([Ljava/lang/String;I)V" since="23"/> + <method name="setAllowEnterTransitionOverlap(Z)V" since="21"/> + <method name="setAllowReturnTransitionOverlap(Z)V" since="21"/> + <method name="setArguments(Landroid/os/Bundle;)V"/> + <method name="setEnterSharedElementCallback(Landroid/app/SharedElementCallback;)V" since="21"/> + <method name="setEnterTransition(Landroid/transition/Transition;)V" since="21"/> + <method name="setExitSharedElementCallback(Landroid/app/SharedElementCallback;)V" since="21"/> + <method name="setExitTransition(Landroid/transition/Transition;)V" since="21"/> + <method name="setHasOptionsMenu(Z)V"/> + <method name="setInitialSavedState(Landroid/app/Fragment$SavedState;)V" since="13"/> + <method name="setMenuVisibility(Z)V" since="14"/> + <method name="setReenterTransition(Landroid/transition/Transition;)V" since="21"/> + <method name="setRetainInstance(Z)V"/> + <method name="setReturnTransition(Landroid/transition/Transition;)V" since="21"/> + <method name="setSharedElementEnterTransition(Landroid/transition/Transition;)V" since="21"/> + <method name="setSharedElementReturnTransition(Landroid/transition/Transition;)V" since="21"/> + <method name="setTargetFragment(Landroid/app/Fragment;I)V"/> + <method name="setUserVisibleHint(Z)V" since="15"/> + <method name="shouldShowRequestPermissionRationale(Ljava/lang/String;)Z" since="23"/> + <method name="startActivity(Landroid/content/Intent;)V"/> + <method name="startActivity(Landroid/content/Intent;Landroid/os/Bundle;)V" since="16"/> + <method name="startActivityForResult(Landroid/content/Intent;I)V"/> + <method name="startActivityForResult(Landroid/content/Intent;ILandroid/os/Bundle;)V" since="16"/> + <method name="startIntentSenderForResult(Landroid/content/IntentSender;ILandroid/content/Intent;IIILandroid/os/Bundle;)V" since="24"/> + <method name="startPostponedEnterTransition()V" since="26"/> + <method name="unregisterForContextMenu(Landroid/view/View;)V"/> + </class> + <class name="android/app/Fragment$InstantiationException" since="11"> + <extends name="android/util/AndroidRuntimeException"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Exception;)V"/> + </class> + <class name="android/app/Fragment$SavedState" since="13"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <field name="CREATOR"/> + </class> + <class name="android/app/FragmentBreadCrumbs" since="11" deprecated="21"> + <extends name="android/view/ViewGroup"/> + <implements name="android/app/FragmentManager$OnBackStackChangedListener"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="setActivity(Landroid/app/Activity;)V"/> + <method name="setMaxVisible(I)V"/> + <method name="setOnBreadCrumbClickListener(Landroid/app/FragmentBreadCrumbs$OnBreadCrumbClickListener;)V" since="12"/> + <method name="setParentTitle(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/view/View$OnClickListener;)V"/> + <method name="setTitle(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V"/> + </class> + <class name="android/app/FragmentBreadCrumbs$OnBreadCrumbClickListener" since="12"> + <extends name="java/lang/Object"/> + <method name="onBreadCrumbClick(Landroid/app/FragmentManager$BackStackEntry;I)Z"/> + </class> + <class name="android/app/FragmentContainer" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onFindViewById(I)Landroid/view/View;"/> + <method name="onHasView()Z"/> + </class> + <class name="android/app/FragmentController" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="attachHost(Landroid/app/Fragment;)V"/> + <method name="createController(Landroid/app/FragmentHostCallback;)Landroid/app/FragmentController;"/> + <method name="dispatchActivityCreated()V"/> + <method name="dispatchConfigurationChanged(Landroid/content/res/Configuration;)V"/> + <method name="dispatchContextItemSelected(Landroid/view/MenuItem;)Z"/> + <method name="dispatchCreate()V"/> + <method name="dispatchCreateOptionsMenu(Landroid/view/Menu;Landroid/view/MenuInflater;)Z"/> + <method name="dispatchDestroy()V"/> + <method name="dispatchDestroyView()V"/> + <method name="dispatchLowMemory()V"/> + <method name="dispatchMultiWindowModeChanged(Z)V" since="24" deprecated="26"/> + <method name="dispatchMultiWindowModeChanged(ZLandroid/content/res/Configuration;)V" since="26"/> + <method name="dispatchOptionsItemSelected(Landroid/view/MenuItem;)Z"/> + <method name="dispatchOptionsMenuClosed(Landroid/view/Menu;)V"/> + <method name="dispatchPause()V"/> + <method name="dispatchPictureInPictureModeChanged(Z)V" since="24" deprecated="26"/> + <method name="dispatchPictureInPictureModeChanged(ZLandroid/content/res/Configuration;)V" since="26"/> + <method name="dispatchPrepareOptionsMenu(Landroid/view/Menu;)Z"/> + <method name="dispatchResume()V"/> + <method name="dispatchStart()V"/> + <method name="dispatchStop()V"/> + <method name="dispatchTrimMemory(I)V"/> + <method name="doLoaderDestroy()V"/> + <method name="doLoaderStart()V"/> + <method name="doLoaderStop(Z)V"/> + <method name="dumpLoaders(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V"/> + <method name="execPendingActions()Z"/> + <method name="findFragmentByWho(Ljava/lang/String;)Landroid/app/Fragment;"/> + <method name="getFragmentManager()Landroid/app/FragmentManager;"/> + <method name="getLoaderManager()Landroid/app/LoaderManager;"/> + <method name="noteStateNotSaved()V"/> + <method name="onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;"/> + <method name="reportLoaderStart()V"/> + <method name="restoreAllState(Landroid/os/Parcelable;Landroid/app/FragmentManagerNonConfig;)V" since="24"/> + <method name="restoreAllState(Landroid/os/Parcelable;Ljava/util/List;)V" deprecated="24"/> + <method name="restoreLoaderNonConfig(Landroid/util/ArrayMap;)V"/> + <method name="retainLoaderNonConfig()Landroid/util/ArrayMap;"/> + <method name="retainNestedNonConfig()Landroid/app/FragmentManagerNonConfig;" since="24"/> + <method name="retainNonConfig()Ljava/util/List;" deprecated="24"/> + <method name="saveAllState()Landroid/os/Parcelable;"/> + </class> + <class name="android/app/FragmentHostCallback" since="23"> + <extends name="android/app/FragmentContainer"/> + <method name="<init>(Landroid/content/Context;Landroid/os/Handler;I)V"/> + <method name="onAttachFragment(Landroid/app/Fragment;)V"/> + <method name="onDump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V"/> + <method name="onGetHost()Ljava/lang/Object;"/> + <method name="onGetLayoutInflater()Landroid/view/LayoutInflater;"/> + <method name="onGetWindowAnimations()I"/> + <method name="onHasWindowAnimations()Z"/> + <method name="onInvalidateOptionsMenu()V"/> + <method name="onRequestPermissionsFromFragment(Landroid/app/Fragment;[Ljava/lang/String;I)V"/> + <method name="onShouldSaveFragmentState(Landroid/app/Fragment;)Z"/> + <method name="onStartActivityFromFragment(Landroid/app/Fragment;Landroid/content/Intent;ILandroid/os/Bundle;)V"/> + <method name="onStartIntentSenderFromFragment(Landroid/app/Fragment;Landroid/content/IntentSender;ILandroid/content/Intent;IIILandroid/os/Bundle;)V" since="24"/> + <method name="onUseFragmentManagerInflaterFactory()Z"/> + </class> + <class name="android/app/FragmentManager" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addOnBackStackChangedListener(Landroid/app/FragmentManager$OnBackStackChangedListener;)V"/> + <method name="beginTransaction()Landroid/app/FragmentTransaction;"/> + <method name="dump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V"/> + <method name="enableDebugLogging(Z)V"/> + <method name="executePendingTransactions()Z"/> + <method name="findFragmentById(I)Landroid/app/Fragment;"/> + <method name="findFragmentByTag(Ljava/lang/String;)Landroid/app/Fragment;"/> + <method name="getBackStackEntryAt(I)Landroid/app/FragmentManager$BackStackEntry;"/> + <method name="getBackStackEntryCount()I"/> + <method name="getFragment(Landroid/os/Bundle;Ljava/lang/String;)Landroid/app/Fragment;"/> + <method name="getFragments()Ljava/util/List;" since="26"/> + <method name="getPrimaryNavigationFragment()Landroid/app/Fragment;" since="26"/> + <method name="invalidateOptionsMenu()V" since="14"/> + <method name="isDestroyed()Z" since="17"/> + <method name="isStateSaved()Z" since="26"/> + <method name="popBackStack()V"/> + <method name="popBackStack(II)V"/> + <method name="popBackStack(Ljava/lang/String;I)V"/> + <method name="popBackStackImmediate()Z"/> + <method name="popBackStackImmediate(II)Z"/> + <method name="popBackStackImmediate(Ljava/lang/String;I)Z"/> + <method name="putFragment(Landroid/os/Bundle;Ljava/lang/String;Landroid/app/Fragment;)V"/> + <method name="registerFragmentLifecycleCallbacks(Landroid/app/FragmentManager$FragmentLifecycleCallbacks;Z)V" since="26"/> + <method name="removeOnBackStackChangedListener(Landroid/app/FragmentManager$OnBackStackChangedListener;)V"/> + <method name="saveFragmentInstanceState(Landroid/app/Fragment;)Landroid/app/Fragment$SavedState;" since="13"/> + <method name="unregisterFragmentLifecycleCallbacks(Landroid/app/FragmentManager$FragmentLifecycleCallbacks;)V" since="26"/> + <field name="POP_BACK_STACK_INCLUSIVE"/> + </class> + <class name="android/app/FragmentManager$BackStackEntry" since="11"> + <extends name="java/lang/Object"/> + <method name="getBreadCrumbShortTitle()Ljava/lang/CharSequence;"/> + <method name="getBreadCrumbShortTitleRes()I"/> + <method name="getBreadCrumbTitle()Ljava/lang/CharSequence;"/> + <method name="getBreadCrumbTitleRes()I"/> + <method name="getId()I"/> + <method name="getName()Ljava/lang/String;" since="14"/> + </class> + <class name="android/app/FragmentManager$FragmentLifecycleCallbacks" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onFragmentActivityCreated(Landroid/app/FragmentManager;Landroid/app/Fragment;Landroid/os/Bundle;)V"/> + <method name="onFragmentAttached(Landroid/app/FragmentManager;Landroid/app/Fragment;Landroid/content/Context;)V"/> + <method name="onFragmentCreated(Landroid/app/FragmentManager;Landroid/app/Fragment;Landroid/os/Bundle;)V"/> + <method name="onFragmentDestroyed(Landroid/app/FragmentManager;Landroid/app/Fragment;)V"/> + <method name="onFragmentDetached(Landroid/app/FragmentManager;Landroid/app/Fragment;)V"/> + <method name="onFragmentPaused(Landroid/app/FragmentManager;Landroid/app/Fragment;)V"/> + <method name="onFragmentPreAttached(Landroid/app/FragmentManager;Landroid/app/Fragment;Landroid/content/Context;)V"/> + <method name="onFragmentPreCreated(Landroid/app/FragmentManager;Landroid/app/Fragment;Landroid/os/Bundle;)V"/> + <method name="onFragmentResumed(Landroid/app/FragmentManager;Landroid/app/Fragment;)V"/> + <method name="onFragmentSaveInstanceState(Landroid/app/FragmentManager;Landroid/app/Fragment;Landroid/os/Bundle;)V"/> + <method name="onFragmentStarted(Landroid/app/FragmentManager;Landroid/app/Fragment;)V"/> + <method name="onFragmentStopped(Landroid/app/FragmentManager;Landroid/app/Fragment;)V"/> + <method name="onFragmentViewCreated(Landroid/app/FragmentManager;Landroid/app/Fragment;Landroid/view/View;Landroid/os/Bundle;)V"/> + <method name="onFragmentViewDestroyed(Landroid/app/FragmentManager;Landroid/app/Fragment;)V"/> + </class> + <class name="android/app/FragmentManager$OnBackStackChangedListener" since="11"> + <extends name="java/lang/Object"/> + <method name="onBackStackChanged()V"/> + </class> + <class name="android/app/FragmentManagerNonConfig" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/app/FragmentTransaction" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="add(ILandroid/app/Fragment;)Landroid/app/FragmentTransaction;"/> + <method name="add(ILandroid/app/Fragment;Ljava/lang/String;)Landroid/app/FragmentTransaction;"/> + <method name="add(Landroid/app/Fragment;Ljava/lang/String;)Landroid/app/FragmentTransaction;"/> + <method name="addSharedElement(Landroid/view/View;Ljava/lang/String;)Landroid/app/FragmentTransaction;" since="21"/> + <method name="addToBackStack(Ljava/lang/String;)Landroid/app/FragmentTransaction;"/> + <method name="attach(Landroid/app/Fragment;)Landroid/app/FragmentTransaction;" since="13"/> + <method name="commit()I"/> + <method name="commitAllowingStateLoss()I"/> + <method name="commitNow()V" since="24"/> + <method name="commitNowAllowingStateLoss()V" since="24"/> + <method name="detach(Landroid/app/Fragment;)Landroid/app/FragmentTransaction;" since="13"/> + <method name="disallowAddToBackStack()Landroid/app/FragmentTransaction;"/> + <method name="hide(Landroid/app/Fragment;)Landroid/app/FragmentTransaction;"/> + <method name="isAddToBackStackAllowed()Z"/> + <method name="isEmpty()Z"/> + <method name="remove(Landroid/app/Fragment;)Landroid/app/FragmentTransaction;"/> + <method name="replace(ILandroid/app/Fragment;)Landroid/app/FragmentTransaction;"/> + <method name="replace(ILandroid/app/Fragment;Ljava/lang/String;)Landroid/app/FragmentTransaction;"/> + <method name="runOnCommit(Ljava/lang/Runnable;)Landroid/app/FragmentTransaction;" since="26"/> + <method name="setBreadCrumbShortTitle(I)Landroid/app/FragmentTransaction;"/> + <method name="setBreadCrumbShortTitle(Ljava/lang/CharSequence;)Landroid/app/FragmentTransaction;"/> + <method name="setBreadCrumbTitle(I)Landroid/app/FragmentTransaction;"/> + <method name="setBreadCrumbTitle(Ljava/lang/CharSequence;)Landroid/app/FragmentTransaction;"/> + <method name="setCustomAnimations(II)Landroid/app/FragmentTransaction;"/> + <method name="setCustomAnimations(IIII)Landroid/app/FragmentTransaction;" since="13"/> + <method name="setPrimaryNavigationFragment(Landroid/app/Fragment;)Landroid/app/FragmentTransaction;" since="26"/> + <method name="setReorderingAllowed(Z)Landroid/app/FragmentTransaction;" since="26"/> + <method name="setTransition(I)Landroid/app/FragmentTransaction;"/> + <method name="setTransitionStyle(I)Landroid/app/FragmentTransaction;"/> + <method name="show(Landroid/app/Fragment;)Landroid/app/FragmentTransaction;"/> + <field name="TRANSIT_ENTER_MASK"/> + <field name="TRANSIT_EXIT_MASK"/> + <field name="TRANSIT_FRAGMENT_CLOSE"/> + <field name="TRANSIT_FRAGMENT_FADE"/> + <field name="TRANSIT_FRAGMENT_OPEN"/> + <field name="TRANSIT_NONE"/> + <field name="TRANSIT_UNSET"/> + </class> + <class name="android/app/Instrumentation" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="acquireLooperManager(Landroid/os/Looper;)Landroid/os/TestLooperManager;" since="26"/> + <method name="addMonitor(Landroid/app/Instrumentation$ActivityMonitor;)V"/> + <method name="addMonitor(Landroid/content/IntentFilter;Landroid/app/Instrumentation$ActivityResult;Z)Landroid/app/Instrumentation$ActivityMonitor;"/> + <method name="addMonitor(Ljava/lang/String;Landroid/app/Instrumentation$ActivityResult;Z)Landroid/app/Instrumentation$ActivityMonitor;"/> + <method name="addResults(Landroid/os/Bundle;)V" since="26"/> + <method name="callActivityOnCreate(Landroid/app/Activity;Landroid/os/Bundle;)V"/> + <method name="callActivityOnCreate(Landroid/app/Activity;Landroid/os/Bundle;Landroid/os/PersistableBundle;)V" since="21"/> + <method name="callActivityOnDestroy(Landroid/app/Activity;)V"/> + <method name="callActivityOnNewIntent(Landroid/app/Activity;Landroid/content/Intent;)V"/> + <method name="callActivityOnPause(Landroid/app/Activity;)V"/> + <method name="callActivityOnPostCreate(Landroid/app/Activity;Landroid/os/Bundle;)V"/> + <method name="callActivityOnPostCreate(Landroid/app/Activity;Landroid/os/Bundle;Landroid/os/PersistableBundle;)V" since="21"/> + <method name="callActivityOnRestart(Landroid/app/Activity;)V"/> + <method name="callActivityOnRestoreInstanceState(Landroid/app/Activity;Landroid/os/Bundle;)V"/> + <method name="callActivityOnRestoreInstanceState(Landroid/app/Activity;Landroid/os/Bundle;Landroid/os/PersistableBundle;)V" since="21"/> + <method name="callActivityOnResume(Landroid/app/Activity;)V"/> + <method name="callActivityOnSaveInstanceState(Landroid/app/Activity;Landroid/os/Bundle;)V"/> + <method name="callActivityOnSaveInstanceState(Landroid/app/Activity;Landroid/os/Bundle;Landroid/os/PersistableBundle;)V" since="21"/> + <method name="callActivityOnStart(Landroid/app/Activity;)V"/> + <method name="callActivityOnStop(Landroid/app/Activity;)V"/> + <method name="callActivityOnUserLeaving(Landroid/app/Activity;)V" since="3"/> + <method name="callApplicationOnCreate(Landroid/app/Application;)V"/> + <method name="checkMonitorHit(Landroid/app/Instrumentation$ActivityMonitor;I)Z"/> + <method name="endPerformanceSnapshot()V"/> + <method name="finish(ILandroid/os/Bundle;)V"/> + <method name="getAllocCounts()Landroid/os/Bundle;"/> + <method name="getBinderCounts()Landroid/os/Bundle;"/> + <method name="getComponentName()Landroid/content/ComponentName;"/> + <method name="getContext()Landroid/content/Context;"/> + <method name="getProcessName()Ljava/lang/String;" since="26"/> + <method name="getTargetContext()Landroid/content/Context;"/> + <method name="getUiAutomation()Landroid/app/UiAutomation;" since="18"/> + <method name="getUiAutomation(I)Landroid/app/UiAutomation;" since="24"/> + <method name="invokeContextMenuAction(Landroid/app/Activity;II)Z"/> + <method name="invokeMenuActionSync(Landroid/app/Activity;II)Z"/> + <method name="isProfiling()Z"/> + <method name="newActivity(Ljava/lang/Class;Landroid/content/Context;Landroid/os/IBinder;Landroid/app/Application;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/CharSequence;Landroid/app/Activity;Ljava/lang/String;Ljava/lang/Object;)Landroid/app/Activity;"/> + <method name="newActivity(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Intent;)Landroid/app/Activity;"/> + <method name="newApplication(Ljava/lang/Class;Landroid/content/Context;)Landroid/app/Application;"/> + <method name="newApplication(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Context;)Landroid/app/Application;"/> + <method name="onCreate(Landroid/os/Bundle;)V"/> + <method name="onDestroy()V"/> + <method name="onException(Ljava/lang/Object;Ljava/lang/Throwable;)Z"/> + <method name="onStart()V"/> + <method name="removeMonitor(Landroid/app/Instrumentation$ActivityMonitor;)V"/> + <method name="runOnMainSync(Ljava/lang/Runnable;)V"/> + <method name="sendCharacterSync(I)V"/> + <method name="sendKeyDownUpSync(I)V"/> + <method name="sendKeySync(Landroid/view/KeyEvent;)V"/> + <method name="sendPointerSync(Landroid/view/MotionEvent;)V"/> + <method name="sendStatus(ILandroid/os/Bundle;)V"/> + <method name="sendStringSync(Ljava/lang/String;)V"/> + <method name="sendTrackballEventSync(Landroid/view/MotionEvent;)V"/> + <method name="setAutomaticPerformanceSnapshots()V"/> + <method name="setInTouchMode(Z)V"/> + <method name="start()V"/> + <method name="startActivitySync(Landroid/content/Intent;)Landroid/app/Activity;"/> + <method name="startAllocCounting()V" deprecated="23"/> + <method name="startPerformanceSnapshot()V"/> + <method name="startProfiling()V"/> + <method name="stopAllocCounting()V" deprecated="23"/> + <method name="stopProfiling()V"/> + <method name="waitForIdle(Ljava/lang/Runnable;)V"/> + <method name="waitForIdleSync()V"/> + <method name="waitForMonitor(Landroid/app/Instrumentation$ActivityMonitor;)Landroid/app/Activity;"/> + <method name="waitForMonitorWithTimeout(Landroid/app/Instrumentation$ActivityMonitor;J)Landroid/app/Activity;"/> + <field name="REPORT_KEY_IDENTIFIER"/> + <field name="REPORT_KEY_STREAMRESULT"/> + </class> + <class name="android/app/Instrumentation$ActivityMonitor" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V" since="26"/> + <method name="<init>(Landroid/content/IntentFilter;Landroid/app/Instrumentation$ActivityResult;Z)V"/> + <method name="<init>(Ljava/lang/String;Landroid/app/Instrumentation$ActivityResult;Z)V"/> + <method name="getFilter()Landroid/content/IntentFilter;"/> + <method name="getHits()I"/> + <method name="getLastActivity()Landroid/app/Activity;"/> + <method name="getResult()Landroid/app/Instrumentation$ActivityResult;"/> + <method name="isBlocking()Z"/> + <method name="onStartActivity(Landroid/content/Intent;)Landroid/app/Instrumentation$ActivityResult;" since="26"/> + <method name="waitForActivity()Landroid/app/Activity;"/> + <method name="waitForActivityWithTimeout(J)Landroid/app/Activity;"/> + </class> + <class name="android/app/Instrumentation$ActivityResult" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(ILandroid/content/Intent;)V"/> + <method name="getResultCode()I"/> + <method name="getResultData()Landroid/content/Intent;"/> + </class> + <class name="android/app/IntentService" since="3"> + <extends name="android/app/Service"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="onHandleIntent(Landroid/content/Intent;)V"/> + <method name="setIntentRedelivery(Z)V" since="5"/> + </class> + <class name="android/app/KeyguardManager" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="createConfirmDeviceCredentialIntent(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Landroid/content/Intent;" since="21"/> + <method name="exitKeyguardSecurely(Landroid/app/KeyguardManager$OnKeyguardExitResult;)V" deprecated="16"/> + <method name="inKeyguardRestrictedInputMode()Z"/> + <method name="isDeviceLocked()Z" since="22"/> + <method name="isDeviceSecure()Z" since="23"/> + <method name="isKeyguardLocked()Z" since="16"/> + <method name="isKeyguardSecure()Z" since="16"/> + <method name="newKeyguardLock(Ljava/lang/String;)Landroid/app/KeyguardManager$KeyguardLock;" deprecated="16"/> + <method name="requestDismissKeyguard(Landroid/app/Activity;Landroid/app/KeyguardManager$KeyguardDismissCallback;)V" since="26"/> + </class> + <class name="android/app/KeyguardManager$KeyguardDismissCallback" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onDismissCancelled()V"/> + <method name="onDismissError()V"/> + <method name="onDismissSucceeded()V"/> + </class> + <class name="android/app/KeyguardManager$KeyguardLock" since="1" deprecated="16"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/app/KeyguardManager;)V"/> + <method name="disableKeyguard()V"/> + <method name="reenableKeyguard()V"/> + </class> + <class name="android/app/KeyguardManager$OnKeyguardExitResult" since="1" deprecated="26"> + <extends name="java/lang/Object"/> + <method name="onKeyguardExitResult(Z)V"/> + </class> + <class name="android/app/LauncherActivity" since="1"> + <extends name="android/app/ListActivity"/> + <method name="<init>()V"/> + <method name="getTargetIntent()Landroid/content/Intent;"/> + <method name="intentForPosition(I)Landroid/content/Intent;" since="3"/> + <method name="itemForPosition(I)Landroid/app/LauncherActivity$ListItem;" since="4"/> + <method name="makeListItems()Ljava/util/List;" since="3"/> + <method name="onQueryPackageManager(Landroid/content/Intent;)Ljava/util/List;" since="5"/> + <method name="onSetContentView()V" since="5"/> + </class> + <class name="android/app/LauncherActivity$IconResizer" since="3"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/app/LauncherActivity;)V"/> + <method name="createIconThumbnail(Landroid/graphics/drawable/Drawable;)Landroid/graphics/drawable/Drawable;"/> + </class> + <class name="android/app/LauncherActivity$ListItem" since="3"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="className"/> + <field name="extras"/> + <field name="icon"/> + <field name="label"/> + <field name="packageName"/> + <field name="resolveInfo" since="4"/> + </class> + <class name="android/app/ListActivity" since="1"> + <extends name="android/app/Activity"/> + <method name="<init>()V"/> + <method name="getListAdapter()Landroid/widget/ListAdapter;"/> + <method name="getListView()Landroid/widget/ListView;"/> + <method name="getSelectedItemId()J"/> + <method name="getSelectedItemPosition()I"/> + <method name="onListItemClick(Landroid/widget/ListView;Landroid/view/View;IJ)V"/> + <method name="setListAdapter(Landroid/widget/ListAdapter;)V"/> + <method name="setSelection(I)V"/> + </class> + <class name="android/app/ListFragment" since="11"> + <extends name="android/app/Fragment"/> + <method name="<init>()V"/> + <method name="getListAdapter()Landroid/widget/ListAdapter;"/> + <method name="getListView()Landroid/widget/ListView;"/> + <method name="getSelectedItemId()J"/> + <method name="getSelectedItemPosition()I"/> + <method name="onListItemClick(Landroid/widget/ListView;Landroid/view/View;IJ)V"/> + <method name="setEmptyText(Ljava/lang/CharSequence;)V"/> + <method name="setListAdapter(Landroid/widget/ListAdapter;)V"/> + <method name="setListShown(Z)V"/> + <method name="setListShownNoAnimation(Z)V"/> + <method name="setSelection(I)V"/> + </class> + <class name="android/app/LoaderManager" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="destroyLoader(I)V"/> + <method name="dump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V"/> + <method name="enableDebugLogging(Z)V"/> + <method name="getLoader(I)Landroid/content/Loader;"/> + <method name="initLoader(ILandroid/os/Bundle;Landroid/app/LoaderManager$LoaderCallbacks;)Landroid/content/Loader;"/> + <method name="restartLoader(ILandroid/os/Bundle;Landroid/app/LoaderManager$LoaderCallbacks;)Landroid/content/Loader;"/> + </class> + <class name="android/app/LoaderManager$LoaderCallbacks" since="11"> + <extends name="java/lang/Object"/> + <method name="onCreateLoader(ILandroid/os/Bundle;)Landroid/content/Loader;"/> + <method name="onLoadFinished(Landroid/content/Loader;Ljava/lang/Object;)V"/> + <method name="onLoaderReset(Landroid/content/Loader;)V"/> + </class> + <class name="android/app/LocalActivityManager" since="1" deprecated="13"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/app/Activity;Z)V"/> + <method name="destroyActivity(Ljava/lang/String;Z)Landroid/view/Window;"/> + <method name="dispatchCreate(Landroid/os/Bundle;)V"/> + <method name="dispatchDestroy(Z)V"/> + <method name="dispatchPause(Z)V"/> + <method name="dispatchResume()V"/> + <method name="dispatchStop()V"/> + <method name="getActivity(Ljava/lang/String;)Landroid/app/Activity;"/> + <method name="getCurrentActivity()Landroid/app/Activity;"/> + <method name="getCurrentId()Ljava/lang/String;"/> + <method name="removeAllActivities()V"/> + <method name="saveInstanceState()Landroid/os/Bundle;"/> + <method name="startActivity(Ljava/lang/String;Landroid/content/Intent;)Landroid/view/Window;"/> + </class> + <class name="android/app/MediaRouteActionProvider" since="16"> + <extends name="android/view/ActionProvider"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="setExtendedSettingsClickListener(Landroid/view/View$OnClickListener;)V"/> + <method name="setRouteTypes(I)V"/> + </class> + <class name="android/app/MediaRouteButton" since="16"> + <extends name="android/view/View"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getRouteTypes()I"/> + <method name="setExtendedSettingsClickListener(Landroid/view/View$OnClickListener;)V"/> + <method name="setRouteTypes(I)V"/> + <method name="showDialog()V"/> + </class> + <class name="android/app/NativeActivity" since="9"> + <extends name="android/app/Activity"/> + <implements name="android/view/InputQueue$Callback"/> + <implements name="android/view/SurfaceHolder$Callback2"/> + <implements name="android/view/ViewTreeObserver$OnGlobalLayoutListener"/> + <method name="<init>()V"/> + <field name="META_DATA_FUNC_NAME"/> + <field name="META_DATA_LIB_NAME"/> + </class> + <class name="android/app/Notification" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(ILjava/lang/CharSequence;J)V" deprecated="16"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="clone()Landroid/app/Notification;" since="9"/> + <method name="getBadgeIconType()I" since="26"/> + <method name="getChannelId()Ljava/lang/String;" since="26"/> + <method name="getGroup()Ljava/lang/String;" since="20"/> + <method name="getGroupAlertBehavior()I" since="26"/> + <method name="getLargeIcon()Landroid/graphics/drawable/Icon;" since="23"/> + <method name="getSettingsText()Ljava/lang/CharSequence;" since="26"/> + <method name="getShortcutId()Ljava/lang/String;" since="26"/> + <method name="getSmallIcon()Landroid/graphics/drawable/Icon;" since="23"/> + <method name="getSortKey()Ljava/lang/String;" since="20"/> + <method name="getTimeoutAfter()J" since="26"/> + <method name="setLatestEventInfo(Landroid/content/Context;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/app/PendingIntent;)V" deprecated="16" removed="23"/> + <field name="AUDIO_ATTRIBUTES_DEFAULT" since="21"/> + <field name="BADGE_ICON_LARGE" since="26"/> + <field name="BADGE_ICON_NONE" since="26"/> + <field name="BADGE_ICON_SMALL" since="26"/> + <field name="CATEGORY_ALARM" since="21"/> + <field name="CATEGORY_CALL" since="21"/> + <field name="CATEGORY_EMAIL" since="21"/> + <field name="CATEGORY_ERROR" since="21"/> + <field name="CATEGORY_EVENT" since="21"/> + <field name="CATEGORY_MESSAGE" since="21"/> + <field name="CATEGORY_PROGRESS" since="21"/> + <field name="CATEGORY_PROMO" since="21"/> + <field name="CATEGORY_RECOMMENDATION" since="21"/> + <field name="CATEGORY_REMINDER" since="23"/> + <field name="CATEGORY_SERVICE" since="21"/> + <field name="CATEGORY_SOCIAL" since="21"/> + <field name="CATEGORY_STATUS" since="21"/> + <field name="CATEGORY_SYSTEM" since="21"/> + <field name="CATEGORY_TRANSPORT" since="21"/> + <field name="COLOR_DEFAULT" since="21"/> + <field name="CREATOR"/> + <field name="DEFAULT_ALL"/> + <field name="DEFAULT_LIGHTS"/> + <field name="DEFAULT_SOUND"/> + <field name="DEFAULT_VIBRATE"/> + <field name="EXTRA_AUDIO_CONTENTS_URI" since="26"/> + <field name="EXTRA_BACKGROUND_IMAGE_URI" since="21"/> + <field name="EXTRA_BIG_TEXT" since="21"/> + <field name="EXTRA_CHANNEL_ID" since="26"/> + <field name="EXTRA_CHRONOMETER_COUNT_DOWN" since="24"/> + <field name="EXTRA_COLORIZED" since="26"/> + <field name="EXTRA_COMPACT_ACTIONS" since="21"/> + <field name="EXTRA_CONVERSATION_TITLE" since="24"/> + <field name="EXTRA_HISTORIC_MESSAGES" since="26"/> + <field name="EXTRA_INFO_TEXT" since="19"/> + <field name="EXTRA_LARGE_ICON" since="19" deprecated="26"/> + <field name="EXTRA_LARGE_ICON_BIG" since="19"/> + <field name="EXTRA_MEDIA_SESSION" since="21"/> + <field name="EXTRA_MESSAGES" since="24"/> + <field name="EXTRA_NOTIFICATION_ID" since="26"/> + <field name="EXTRA_NOTIFICATION_TAG" since="26"/> + <field name="EXTRA_PEOPLE" since="19"/> + <field name="EXTRA_PICTURE" since="19"/> + <field name="EXTRA_PROGRESS" since="19"/> + <field name="EXTRA_PROGRESS_INDETERMINATE" since="19"/> + <field name="EXTRA_PROGRESS_MAX" since="19"/> + <field name="EXTRA_REMOTE_INPUT_HISTORY" since="24"/> + <field name="EXTRA_SELF_DISPLAY_NAME" since="24"/> + <field name="EXTRA_SHOW_CHRONOMETER" since="19"/> + <field name="EXTRA_SHOW_WHEN" since="19"/> + <field name="EXTRA_SMALL_ICON" since="19" deprecated="26"/> + <field name="EXTRA_SUB_TEXT" since="19"/> + <field name="EXTRA_SUMMARY_TEXT" since="19"/> + <field name="EXTRA_TEMPLATE" since="21"/> + <field name="EXTRA_TEXT" since="19"/> + <field name="EXTRA_TEXT_LINES" since="19"/> + <field name="EXTRA_TITLE" since="19"/> + <field name="EXTRA_TITLE_BIG" since="19"/> + <field name="FLAG_AUTO_CANCEL"/> + <field name="FLAG_FOREGROUND_SERVICE" since="5"/> + <field name="FLAG_GROUP_SUMMARY" since="20"/> + <field name="FLAG_HIGH_PRIORITY" since="11" deprecated="16"/> + <field name="FLAG_INSISTENT"/> + <field name="FLAG_LOCAL_ONLY" since="20"/> + <field name="FLAG_NO_CLEAR"/> + <field name="FLAG_ONGOING_EVENT"/> + <field name="FLAG_ONLY_ALERT_ONCE"/> + <field name="FLAG_SHOW_LIGHTS" deprecated="26"/> + <field name="GROUP_ALERT_ALL" since="26"/> + <field name="GROUP_ALERT_CHILDREN" since="26"/> + <field name="GROUP_ALERT_SUMMARY" since="26"/> + <field name="INTENT_CATEGORY_NOTIFICATION_PREFERENCES" since="21"/> + <field name="PRIORITY_DEFAULT" since="16" deprecated="26"/> + <field name="PRIORITY_HIGH" since="16" deprecated="26"/> + <field name="PRIORITY_LOW" since="16" deprecated="26"/> + <field name="PRIORITY_MAX" since="16" deprecated="26"/> + <field name="PRIORITY_MIN" since="16" deprecated="26"/> + <field name="STREAM_DEFAULT" deprecated="21"/> + <field name="VISIBILITY_PRIVATE" since="21"/> + <field name="VISIBILITY_PUBLIC" since="21"/> + <field name="VISIBILITY_SECRET" since="21"/> + <field name="actions" since="19"/> + <field name="audioAttributes" since="21" deprecated="26"/> + <field name="audioStreamType" deprecated="21"/> + <field name="bigContentView" since="16" deprecated="24"/> + <field name="category" since="21"/> + <field name="color" since="21"/> + <field name="contentIntent"/> + <field name="contentView" deprecated="24"/> + <field name="defaults" deprecated="26"/> + <field name="deleteIntent"/> + <field name="extras" since="19"/> + <field name="flags"/> + <field name="fullScreenIntent" since="9"/> + <field name="headsUpContentView" since="21" deprecated="24"/> + <field name="icon" deprecated="23"/> + <field name="iconLevel"/> + <field name="largeIcon" since="11" deprecated="23"/> + <field name="ledARGB" deprecated="26"/> + <field name="ledOffMS" deprecated="26"/> + <field name="ledOnMS" deprecated="26"/> + <field name="number" deprecated="24"/> + <field name="priority" since="16" deprecated="26"/> + <field name="publicVersion" since="21"/> + <field name="sound" deprecated="26"/> + <field name="tickerText"/> + <field name="tickerView" since="11" deprecated="21"/> + <field name="vibrate" deprecated="26"/> + <field name="visibility" since="21"/> + <field name="when"/> + </class> + <class name="android/app/Notification$Action" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(ILjava/lang/CharSequence;Landroid/app/PendingIntent;)V" deprecated="23"/> + <method name="clone()Landroid/app/Notification$Action;"/> + <method name="getAllowGeneratedReplies()Z" since="24"/> + <method name="getDataOnlyRemoteInputs()[Landroid/app/RemoteInput;" since="26"/> + <method name="getExtras()Landroid/os/Bundle;" since="20"/> + <method name="getIcon()Landroid/graphics/drawable/Icon;" since="23"/> + <method name="getRemoteInputs()[Landroid/app/RemoteInput;" since="20"/> + <field name="CREATOR"/> + <field name="actionIntent"/> + <field name="icon" deprecated="23"/> + <field name="title"/> + </class> + <class name="android/app/Notification$Action$Builder" since="20"> + <extends name="java/lang/Object"/> + <method name="<init>(ILjava/lang/CharSequence;Landroid/app/PendingIntent;)V" deprecated="23"/> + <method name="<init>(Landroid/app/Notification$Action;)V"/> + <method name="<init>(Landroid/graphics/drawable/Icon;Ljava/lang/CharSequence;Landroid/app/PendingIntent;)V" since="23"/> + <method name="addExtras(Landroid/os/Bundle;)Landroid/app/Notification$Action$Builder;"/> + <method name="addRemoteInput(Landroid/app/RemoteInput;)Landroid/app/Notification$Action$Builder;"/> + <method name="build()Landroid/app/Notification$Action;"/> + <method name="extend(Landroid/app/Notification$Action$Extender;)Landroid/app/Notification$Action$Builder;"/> + <method name="getExtras()Landroid/os/Bundle;"/> + <method name="setAllowGeneratedReplies(Z)Landroid/app/Notification$Action$Builder;" since="24"/> + </class> + <class name="android/app/Notification$Action$Extender" since="20"> + <extends name="java/lang/Object"/> + <method name="extend(Landroid/app/Notification$Action$Builder;)Landroid/app/Notification$Action$Builder;"/> + </class> + <class name="android/app/Notification$Action$WearableExtender" since="20"> + <extends name="java/lang/Object"/> + <implements name="android/app/Notification$Action$Extender"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/app/Notification$Action;)V"/> + <method name="clone()Landroid/app/Notification$Action$WearableExtender;"/> + <method name="getCancelLabel()Ljava/lang/CharSequence;" since="22"/> + <method name="getConfirmLabel()Ljava/lang/CharSequence;" since="22"/> + <method name="getHintDisplayActionInline()Z" since="25"/> + <method name="getHintLaunchesActivity()Z" since="24"/> + <method name="getInProgressLabel()Ljava/lang/CharSequence;" since="22"/> + <method name="isAvailableOffline()Z"/> + <method name="setAvailableOffline(Z)Landroid/app/Notification$Action$WearableExtender;"/> + <method name="setCancelLabel(Ljava/lang/CharSequence;)Landroid/app/Notification$Action$WearableExtender;" since="22"/> + <method name="setConfirmLabel(Ljava/lang/CharSequence;)Landroid/app/Notification$Action$WearableExtender;" since="22"/> + <method name="setHintDisplayActionInline(Z)Landroid/app/Notification$Action$WearableExtender;" since="25"/> + <method name="setHintLaunchesActivity(Z)Landroid/app/Notification$Action$WearableExtender;" since="24"/> + <method name="setInProgressLabel(Ljava/lang/CharSequence;)Landroid/app/Notification$Action$WearableExtender;" since="22"/> + </class> + <class name="android/app/Notification$BigPictureStyle" since="16"> + <extends name="android/app/Notification$Style"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/app/Notification$Builder;)V" deprecated="24"/> + <method name="bigLargeIcon(Landroid/graphics/Bitmap;)Landroid/app/Notification$BigPictureStyle;"/> + <method name="bigLargeIcon(Landroid/graphics/drawable/Icon;)Landroid/app/Notification$BigPictureStyle;" since="23"/> + <method name="bigPicture(Landroid/graphics/Bitmap;)Landroid/app/Notification$BigPictureStyle;"/> + <method name="setBigContentTitle(Ljava/lang/CharSequence;)Landroid/app/Notification$BigPictureStyle;"/> + <method name="setSummaryText(Ljava/lang/CharSequence;)Landroid/app/Notification$BigPictureStyle;"/> + </class> + <class name="android/app/Notification$BigTextStyle" since="16"> + <extends name="android/app/Notification$Style"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/app/Notification$Builder;)V" deprecated="24"/> + <method name="bigText(Ljava/lang/CharSequence;)Landroid/app/Notification$BigTextStyle;"/> + <method name="setBigContentTitle(Ljava/lang/CharSequence;)Landroid/app/Notification$BigTextStyle;"/> + <method name="setSummaryText(Ljava/lang/CharSequence;)Landroid/app/Notification$BigTextStyle;"/> + </class> + <class name="android/app/Notification$Builder" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;)V" deprecated="26"/> + <method name="<init>(Landroid/content/Context;Ljava/lang/String;)V" since="26"/> + <method name="addAction(ILjava/lang/CharSequence;Landroid/app/PendingIntent;)Landroid/app/Notification$Builder;" since="16" deprecated="23"/> + <method name="addAction(Landroid/app/Notification$Action;)Landroid/app/Notification$Builder;" since="20"/> + <method name="addExtras(Landroid/os/Bundle;)Landroid/app/Notification$Builder;" since="20"/> + <method name="addPerson(Ljava/lang/String;)Landroid/app/Notification$Builder;" since="21"/> + <method name="build()Landroid/app/Notification;" since="16"/> + <method name="createBigContentView()Landroid/widget/RemoteViews;" since="24"/> + <method name="createContentView()Landroid/widget/RemoteViews;" since="24"/> + <method name="createHeadsUpContentView()Landroid/widget/RemoteViews;" since="24"/> + <method name="extend(Landroid/app/Notification$Extender;)Landroid/app/Notification$Builder;" since="20"/> + <method name="getExtras()Landroid/os/Bundle;" since="20"/> + <method name="getNotification()Landroid/app/Notification;" deprecated="16"/> + <method name="recoverBuilder(Landroid/content/Context;Landroid/app/Notification;)Landroid/app/Notification$Builder;" since="24"/> + <method name="setActions([Landroid/app/Notification$Action;)Landroid/app/Notification$Builder;" since="24"/> + <method name="setAutoCancel(Z)Landroid/app/Notification$Builder;"/> + <method name="setBadgeIconType(I)Landroid/app/Notification$Builder;" since="26"/> + <method name="setCategory(Ljava/lang/String;)Landroid/app/Notification$Builder;" since="21"/> + <method name="setChannelId(Ljava/lang/String;)Landroid/app/Notification$Builder;" since="26"/> + <method name="setChronometerCountDown(Z)Landroid/app/Notification$Builder;" since="24"/> + <method name="setColor(I)Landroid/app/Notification$Builder;" since="21"/> + <method name="setColorized(Z)Landroid/app/Notification$Builder;" since="26"/> + <method name="setContent(Landroid/widget/RemoteViews;)Landroid/app/Notification$Builder;" deprecated="24"/> + <method name="setContentInfo(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder;" deprecated="24"/> + <method name="setContentIntent(Landroid/app/PendingIntent;)Landroid/app/Notification$Builder;"/> + <method name="setContentText(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder;"/> + <method name="setContentTitle(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder;"/> + <method name="setCustomBigContentView(Landroid/widget/RemoteViews;)Landroid/app/Notification$Builder;" since="24"/> + <method name="setCustomContentView(Landroid/widget/RemoteViews;)Landroid/app/Notification$Builder;" since="24"/> + <method name="setCustomHeadsUpContentView(Landroid/widget/RemoteViews;)Landroid/app/Notification$Builder;" since="24"/> + <method name="setDefaults(I)Landroid/app/Notification$Builder;" deprecated="26"/> + <method name="setDeleteIntent(Landroid/app/PendingIntent;)Landroid/app/Notification$Builder;"/> + <method name="setExtras(Landroid/os/Bundle;)Landroid/app/Notification$Builder;" since="19"/> + <method name="setFullScreenIntent(Landroid/app/PendingIntent;Z)Landroid/app/Notification$Builder;"/> + <method name="setGroup(Ljava/lang/String;)Landroid/app/Notification$Builder;" since="20"/> + <method name="setGroupAlertBehavior(I)Landroid/app/Notification$Builder;" since="26"/> + <method name="setGroupSummary(Z)Landroid/app/Notification$Builder;" since="20"/> + <method name="setLargeIcon(Landroid/graphics/Bitmap;)Landroid/app/Notification$Builder;"/> + <method name="setLargeIcon(Landroid/graphics/drawable/Icon;)Landroid/app/Notification$Builder;" since="23"/> + <method name="setLights(III)Landroid/app/Notification$Builder;" deprecated="26"/> + <method name="setLocalOnly(Z)Landroid/app/Notification$Builder;" since="20"/> + <method name="setNumber(I)Landroid/app/Notification$Builder;" deprecated="24"/> + <method name="setOngoing(Z)Landroid/app/Notification$Builder;"/> + <method name="setOnlyAlertOnce(Z)Landroid/app/Notification$Builder;"/> + <method name="setPriority(I)Landroid/app/Notification$Builder;" since="16" deprecated="26"/> + <method name="setProgress(IIZ)Landroid/app/Notification$Builder;" since="14"/> + <method name="setPublicVersion(Landroid/app/Notification;)Landroid/app/Notification$Builder;" since="21"/> + <method name="setRemoteInputHistory([Ljava/lang/CharSequence;)Landroid/app/Notification$Builder;" since="24"/> + <method name="setSettingsText(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder;" since="26"/> + <method name="setShortcutId(Ljava/lang/String;)Landroid/app/Notification$Builder;" since="26"/> + <method name="setShowWhen(Z)Landroid/app/Notification$Builder;" since="17"/> + <method name="setSmallIcon(I)Landroid/app/Notification$Builder;"/> + <method name="setSmallIcon(II)Landroid/app/Notification$Builder;"/> + <method name="setSmallIcon(Landroid/graphics/drawable/Icon;)Landroid/app/Notification$Builder;" since="23"/> + <method name="setSortKey(Ljava/lang/String;)Landroid/app/Notification$Builder;" since="20"/> + <method name="setSound(Landroid/net/Uri;)Landroid/app/Notification$Builder;" deprecated="26"/> + <method name="setSound(Landroid/net/Uri;I)Landroid/app/Notification$Builder;" deprecated="21"/> + <method name="setSound(Landroid/net/Uri;Landroid/media/AudioAttributes;)Landroid/app/Notification$Builder;" since="21" deprecated="26"/> + <method name="setStyle(Landroid/app/Notification$Style;)Landroid/app/Notification$Builder;" since="16"/> + <method name="setSubText(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder;" since="16"/> + <method name="setTicker(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder;"/> + <method name="setTicker(Ljava/lang/CharSequence;Landroid/widget/RemoteViews;)Landroid/app/Notification$Builder;" deprecated="21"/> + <method name="setTimeoutAfter(J)Landroid/app/Notification$Builder;" since="26"/> + <method name="setUsesChronometer(Z)Landroid/app/Notification$Builder;" since="16"/> + <method name="setVibrate([J)Landroid/app/Notification$Builder;" deprecated="26"/> + <method name="setVisibility(I)Landroid/app/Notification$Builder;" since="21"/> + <method name="setWhen(J)Landroid/app/Notification$Builder;"/> + </class> + <class name="android/app/Notification$CarExtender" since="23"> + <extends name="java/lang/Object"/> + <implements name="android/app/Notification$Extender"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/app/Notification;)V"/> + <method name="getColor()I"/> + <method name="getLargeIcon()Landroid/graphics/Bitmap;"/> + <method name="getUnreadConversation()Landroid/app/Notification$CarExtender$UnreadConversation;"/> + <method name="setColor(I)Landroid/app/Notification$CarExtender;"/> + <method name="setLargeIcon(Landroid/graphics/Bitmap;)Landroid/app/Notification$CarExtender;"/> + <method name="setUnreadConversation(Landroid/app/Notification$CarExtender$UnreadConversation;)Landroid/app/Notification$CarExtender;"/> + </class> + <class name="android/app/Notification$CarExtender$Builder" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="addMessage(Ljava/lang/String;)Landroid/app/Notification$CarExtender$Builder;"/> + <method name="build()Landroid/app/Notification$CarExtender$UnreadConversation;"/> + <method name="setLatestTimestamp(J)Landroid/app/Notification$CarExtender$Builder;"/> + <method name="setReadPendingIntent(Landroid/app/PendingIntent;)Landroid/app/Notification$CarExtender$Builder;"/> + <method name="setReplyAction(Landroid/app/PendingIntent;Landroid/app/RemoteInput;)Landroid/app/Notification$CarExtender$Builder;"/> + </class> + <class name="android/app/Notification$CarExtender$UnreadConversation" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getLatestTimestamp()J"/> + <method name="getMessages()[Ljava/lang/String;"/> + <method name="getParticipant()Ljava/lang/String;"/> + <method name="getParticipants()[Ljava/lang/String;"/> + <method name="getReadPendingIntent()Landroid/app/PendingIntent;"/> + <method name="getRemoteInput()Landroid/app/RemoteInput;"/> + <method name="getReplyPendingIntent()Landroid/app/PendingIntent;"/> + </class> + <class name="android/app/Notification$DecoratedCustomViewStyle" since="24"> + <extends name="android/app/Notification$Style"/> + <method name="<init>()V"/> + </class> + <class name="android/app/Notification$DecoratedMediaCustomViewStyle" since="24"> + <extends name="android/app/Notification$MediaStyle"/> + <method name="<init>()V"/> + </class> + <class name="android/app/Notification$Extender" since="20"> + <extends name="java/lang/Object"/> + <method name="extend(Landroid/app/Notification$Builder;)Landroid/app/Notification$Builder;"/> + </class> + <class name="android/app/Notification$InboxStyle" since="16"> + <extends name="android/app/Notification$Style"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/app/Notification$Builder;)V" deprecated="24"/> + <method name="addLine(Ljava/lang/CharSequence;)Landroid/app/Notification$InboxStyle;"/> + <method name="setBigContentTitle(Ljava/lang/CharSequence;)Landroid/app/Notification$InboxStyle;"/> + <method name="setSummaryText(Ljava/lang/CharSequence;)Landroid/app/Notification$InboxStyle;"/> + </class> + <class name="android/app/Notification$MediaStyle" since="21"> + <extends name="android/app/Notification$Style"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/app/Notification$Builder;)V" deprecated="24"/> + <method name="setMediaSession(Landroid/media/session/MediaSession$Token;)Landroid/app/Notification$MediaStyle;"/> + <method name="setShowActionsInCompactView([I)Landroid/app/Notification$MediaStyle;"/> + </class> + <class name="android/app/Notification$MessagingStyle" since="24"> + <extends name="android/app/Notification$Style"/> + <method name="<init>(Ljava/lang/CharSequence;)V"/> + <method name="addHistoricMessage(Landroid/app/Notification$MessagingStyle$Message;)Landroid/app/Notification$MessagingStyle;" since="26"/> + <method name="addMessage(Landroid/app/Notification$MessagingStyle$Message;)Landroid/app/Notification$MessagingStyle;"/> + <method name="addMessage(Ljava/lang/CharSequence;JLjava/lang/CharSequence;)Landroid/app/Notification$MessagingStyle;"/> + <method name="getConversationTitle()Ljava/lang/CharSequence;"/> + <method name="getHistoricMessages()Ljava/util/List;" since="26"/> + <method name="getMessages()Ljava/util/List;"/> + <method name="getUserDisplayName()Ljava/lang/CharSequence;"/> + <method name="setConversationTitle(Ljava/lang/CharSequence;)Landroid/app/Notification$MessagingStyle;"/> + <field name="MAXIMUM_RETAINED_MESSAGES"/> + </class> + <class name="android/app/Notification$MessagingStyle$Message" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/CharSequence;JLjava/lang/CharSequence;)V"/> + <method name="getDataMimeType()Ljava/lang/String;"/> + <method name="getDataUri()Landroid/net/Uri;"/> + <method name="getExtras()Landroid/os/Bundle;" since="26"/> + <method name="getSender()Ljava/lang/CharSequence;"/> + <method name="getText()Ljava/lang/CharSequence;"/> + <method name="getTimestamp()J"/> + <method name="setData(Ljava/lang/String;Landroid/net/Uri;)Landroid/app/Notification$MessagingStyle$Message;"/> + </class> + <class name="android/app/Notification$Style" since="16"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="build()Landroid/app/Notification;"/> + <method name="checkBuilder()V"/> + <method name="getStandardView(I)Landroid/widget/RemoteViews;"/> + <method name="internalSetBigContentTitle(Ljava/lang/CharSequence;)V"/> + <method name="internalSetSummaryText(Ljava/lang/CharSequence;)V"/> + <method name="setBuilder(Landroid/app/Notification$Builder;)V"/> + <field name="mBuilder"/> + </class> + <class name="android/app/Notification$WearableExtender" since="20"> + <extends name="java/lang/Object"/> + <implements name="android/app/Notification$Extender"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/app/Notification;)V"/> + <method name="addAction(Landroid/app/Notification$Action;)Landroid/app/Notification$WearableExtender;"/> + <method name="addActions(Ljava/util/List;)Landroid/app/Notification$WearableExtender;"/> + <method name="addPage(Landroid/app/Notification;)Landroid/app/Notification$WearableExtender;"/> + <method name="addPages(Ljava/util/List;)Landroid/app/Notification$WearableExtender;"/> + <method name="clearActions()Landroid/app/Notification$WearableExtender;"/> + <method name="clearPages()Landroid/app/Notification$WearableExtender;"/> + <method name="clone()Landroid/app/Notification$WearableExtender;"/> + <method name="getActions()Ljava/util/List;"/> + <method name="getBackground()Landroid/graphics/Bitmap;"/> + <method name="getBridgeTag()Ljava/lang/String;" since="26"/> + <method name="getContentAction()I"/> + <method name="getContentIcon()I"/> + <method name="getContentIconGravity()I"/> + <method name="getContentIntentAvailableOffline()Z"/> + <method name="getCustomContentHeight()I"/> + <method name="getCustomSizePreset()I"/> + <method name="getDismissalId()Ljava/lang/String;" since="24"/> + <method name="getDisplayIntent()Landroid/app/PendingIntent;"/> + <method name="getGravity()I"/> + <method name="getHintAmbientBigPicture()Z" since="24"/> + <method name="getHintAvoidBackgroundClipping()Z" since="22"/> + <method name="getHintContentIntentLaunchesActivity()Z" since="24"/> + <method name="getHintHideIcon()Z"/> + <method name="getHintScreenTimeout()I" since="22"/> + <method name="getHintShowBackgroundOnly()Z"/> + <method name="getPages()Ljava/util/List;"/> + <method name="getStartScrollBottom()Z"/> + <method name="setBackground(Landroid/graphics/Bitmap;)Landroid/app/Notification$WearableExtender;"/> + <method name="setBridgeTag(Ljava/lang/String;)Landroid/app/Notification$WearableExtender;" since="26"/> + <method name="setContentAction(I)Landroid/app/Notification$WearableExtender;"/> + <method name="setContentIcon(I)Landroid/app/Notification$WearableExtender;"/> + <method name="setContentIconGravity(I)Landroid/app/Notification$WearableExtender;"/> + <method name="setContentIntentAvailableOffline(Z)Landroid/app/Notification$WearableExtender;"/> + <method name="setCustomContentHeight(I)Landroid/app/Notification$WearableExtender;"/> + <method name="setCustomSizePreset(I)Landroid/app/Notification$WearableExtender;"/> + <method name="setDismissalId(Ljava/lang/String;)Landroid/app/Notification$WearableExtender;" since="24"/> + <method name="setDisplayIntent(Landroid/app/PendingIntent;)Landroid/app/Notification$WearableExtender;"/> + <method name="setGravity(I)Landroid/app/Notification$WearableExtender;"/> + <method name="setHintAmbientBigPicture(Z)Landroid/app/Notification$WearableExtender;" since="24"/> + <method name="setHintAvoidBackgroundClipping(Z)Landroid/app/Notification$WearableExtender;" since="22"/> + <method name="setHintContentIntentLaunchesActivity(Z)Landroid/app/Notification$WearableExtender;" since="24"/> + <method name="setHintHideIcon(Z)Landroid/app/Notification$WearableExtender;"/> + <method name="setHintScreenTimeout(I)Landroid/app/Notification$WearableExtender;" since="22"/> + <method name="setHintShowBackgroundOnly(Z)Landroid/app/Notification$WearableExtender;"/> + <method name="setStartScrollBottom(Z)Landroid/app/Notification$WearableExtender;"/> + <field name="SCREEN_TIMEOUT_LONG" since="22"/> + <field name="SCREEN_TIMEOUT_SHORT" since="22"/> + <field name="SIZE_DEFAULT"/> + <field name="SIZE_FULL_SCREEN"/> + <field name="SIZE_LARGE"/> + <field name="SIZE_MEDIUM"/> + <field name="SIZE_SMALL"/> + <field name="SIZE_XSMALL"/> + <field name="UNSET_ACTION_INDEX"/> + </class> + <class name="android/app/NotificationChannel" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/CharSequence;I)V"/> + <method name="canBypassDnd()Z"/> + <method name="canShowBadge()Z"/> + <method name="enableLights(Z)V"/> + <method name="enableVibration(Z)V"/> + <method name="getAudioAttributes()Landroid/media/AudioAttributes;"/> + <method name="getDescription()Ljava/lang/String;"/> + <method name="getGroup()Ljava/lang/String;"/> + <method name="getId()Ljava/lang/String;"/> + <method name="getImportance()I"/> + <method name="getLightColor()I"/> + <method name="getLockscreenVisibility()I"/> + <method name="getName()Ljava/lang/CharSequence;"/> + <method name="getSound()Landroid/net/Uri;"/> + <method name="getVibrationPattern()[J"/> + <method name="setBypassDnd(Z)V"/> + <method name="setDescription(Ljava/lang/String;)V"/> + <method name="setGroup(Ljava/lang/String;)V"/> + <method name="setImportance(I)V"/> + <method name="setLightColor(I)V"/> + <method name="setLockscreenVisibility(I)V"/> + <method name="setName(Ljava/lang/CharSequence;)V"/> + <method name="setShowBadge(Z)V"/> + <method name="setSound(Landroid/net/Uri;Landroid/media/AudioAttributes;)V"/> + <method name="setVibrationPattern([J)V"/> + <method name="shouldShowLights()Z"/> + <method name="shouldVibrate()Z"/> + <field name="CREATOR"/> + <field name="DEFAULT_CHANNEL_ID"/> + </class> + <class name="android/app/NotificationChannelGroup" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/CharSequence;)V"/> + <method name="clone()Landroid/app/NotificationChannelGroup;"/> + <method name="getChannels()Ljava/util/List;"/> + <method name="getId()Ljava/lang/String;"/> + <method name="getName()Ljava/lang/CharSequence;"/> + <field name="CREATOR"/> + </class> + <class name="android/app/NotificationManager" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addAutomaticZenRule(Landroid/app/AutomaticZenRule;)Ljava/lang/String;" since="24"/> + <method name="areNotificationsEnabled()Z" since="24"/> + <method name="cancel(I)V"/> + <method name="cancel(Ljava/lang/String;I)V" since="5"/> + <method name="cancelAll()V"/> + <method name="createNotificationChannel(Landroid/app/NotificationChannel;)V" since="26"/> + <method name="createNotificationChannelGroup(Landroid/app/NotificationChannelGroup;)V" since="26"/> + <method name="createNotificationChannelGroups(Ljava/util/List;)V" since="26"/> + <method name="createNotificationChannels(Ljava/util/List;)V" since="26"/> + <method name="deleteNotificationChannel(Ljava/lang/String;)V" since="26"/> + <method name="deleteNotificationChannelGroup(Ljava/lang/String;)V" since="26"/> + <method name="getActiveNotifications()[Landroid/service/notification/StatusBarNotification;" since="23"/> + <method name="getAutomaticZenRule(Ljava/lang/String;)Landroid/app/AutomaticZenRule;" since="24"/> + <method name="getAutomaticZenRules()Ljava/util/Map;" since="24"/> + <method name="getCurrentInterruptionFilter()I" since="23"/> + <method name="getImportance()I" since="24"/> + <method name="getNotificationChannel(Ljava/lang/String;)Landroid/app/NotificationChannel;" since="26"/> + <method name="getNotificationChannelGroups()Ljava/util/List;" since="26"/> + <method name="getNotificationChannels()Ljava/util/List;" since="26"/> + <method name="getNotificationPolicy()Landroid/app/NotificationManager$Policy;" since="23"/> + <method name="isNotificationPolicyAccessGranted()Z" since="23"/> + <method name="notify(ILandroid/app/Notification;)V"/> + <method name="notify(Ljava/lang/String;ILandroid/app/Notification;)V" since="5"/> + <method name="removeAutomaticZenRule(Ljava/lang/String;)Z" since="24"/> + <method name="setInterruptionFilter(I)V" since="23"/> + <method name="setNotificationPolicy(Landroid/app/NotificationManager$Policy;)V" since="23"/> + <method name="updateAutomaticZenRule(Ljava/lang/String;Landroid/app/AutomaticZenRule;)Z" since="24"/> + <field name="ACTION_INTERRUPTION_FILTER_CHANGED" since="23"/> + <field name="ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED" since="23"/> + <field name="ACTION_NOTIFICATION_POLICY_CHANGED" since="23"/> + <field name="IMPORTANCE_DEFAULT" since="24"/> + <field name="IMPORTANCE_HIGH" since="24"/> + <field name="IMPORTANCE_LOW" since="24"/> + <field name="IMPORTANCE_MAX" since="24"/> + <field name="IMPORTANCE_MIN" since="24"/> + <field name="IMPORTANCE_NONE" since="24"/> + <field name="IMPORTANCE_UNSPECIFIED" since="24"/> + <field name="INTERRUPTION_FILTER_ALARMS" since="23"/> + <field name="INTERRUPTION_FILTER_ALL" since="23"/> + <field name="INTERRUPTION_FILTER_NONE" since="23"/> + <field name="INTERRUPTION_FILTER_PRIORITY" since="23"/> + <field name="INTERRUPTION_FILTER_UNKNOWN" since="23"/> + </class> + <class name="android/app/NotificationManager$Policy" since="23"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(III)V"/> + <method name="<init>(IIII)V" since="24"/> + <method name="priorityCategoriesToString(I)Ljava/lang/String;"/> + <method name="prioritySendersToString(I)Ljava/lang/String;"/> + <method name="suppressedEffectsToString(I)Ljava/lang/String;" since="24"/> + <field name="CREATOR"/> + <field name="PRIORITY_CATEGORY_CALLS"/> + <field name="PRIORITY_CATEGORY_EVENTS"/> + <field name="PRIORITY_CATEGORY_MESSAGES"/> + <field name="PRIORITY_CATEGORY_REMINDERS"/> + <field name="PRIORITY_CATEGORY_REPEAT_CALLERS"/> + <field name="PRIORITY_SENDERS_ANY"/> + <field name="PRIORITY_SENDERS_CONTACTS"/> + <field name="PRIORITY_SENDERS_STARRED"/> + <field name="SUPPRESSED_EFFECT_SCREEN_OFF" since="24"/> + <field name="SUPPRESSED_EFFECT_SCREEN_ON" since="24"/> + <field name="priorityCallSenders"/> + <field name="priorityCategories"/> + <field name="priorityMessageSenders"/> + <field name="suppressedVisualEffects" since="24"/> + </class> + <class name="android/app/PendingIntent" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="cancel()V"/> + <method name="getActivities(Landroid/content/Context;I[Landroid/content/Intent;I)Landroid/app/PendingIntent;" since="11"/> + <method name="getActivities(Landroid/content/Context;I[Landroid/content/Intent;ILandroid/os/Bundle;)Landroid/app/PendingIntent;" since="16"/> + <method name="getActivity(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;"/> + <method name="getActivity(Landroid/content/Context;ILandroid/content/Intent;ILandroid/os/Bundle;)Landroid/app/PendingIntent;" since="16"/> + <method name="getBroadcast(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;"/> + <method name="getCreatorPackage()Ljava/lang/String;" since="17"/> + <method name="getCreatorUid()I" since="17"/> + <method name="getCreatorUserHandle()Landroid/os/UserHandle;" since="17"/> + <method name="getForegroundService(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;" since="26"/> + <method name="getIntentSender()Landroid/content/IntentSender;" since="4"/> + <method name="getService(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;"/> + <method name="getTargetPackage()Ljava/lang/String;" deprecated="17"/> + <method name="readPendingIntentOrNullFromParcel(Landroid/os/Parcel;)Landroid/app/PendingIntent;"/> + <method name="send()V"/> + <method name="send(I)V"/> + <method name="send(ILandroid/app/PendingIntent$OnFinished;Landroid/os/Handler;)V"/> + <method name="send(Landroid/content/Context;ILandroid/content/Intent;)V"/> + <method name="send(Landroid/content/Context;ILandroid/content/Intent;Landroid/app/PendingIntent$OnFinished;Landroid/os/Handler;)V"/> + <method name="send(Landroid/content/Context;ILandroid/content/Intent;Landroid/app/PendingIntent$OnFinished;Landroid/os/Handler;Ljava/lang/String;)V" since="14"/> + <method name="send(Landroid/content/Context;ILandroid/content/Intent;Landroid/app/PendingIntent$OnFinished;Landroid/os/Handler;Ljava/lang/String;Landroid/os/Bundle;)V" since="23"/> + <method name="writePendingIntentOrNullToParcel(Landroid/app/PendingIntent;Landroid/os/Parcel;)V"/> + <field name="CREATOR"/> + <field name="FLAG_CANCEL_CURRENT"/> + <field name="FLAG_IMMUTABLE" since="23"/> + <field name="FLAG_NO_CREATE"/> + <field name="FLAG_ONE_SHOT"/> + <field name="FLAG_UPDATE_CURRENT" since="3"/> + </class> + <class name="android/app/PendingIntent$CanceledException" since="1"> + <extends name="android/util/AndroidException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/Exception;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/app/PendingIntent$OnFinished" since="1"> + <extends name="java/lang/Object"/> + <method name="onSendFinished(Landroid/app/PendingIntent;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;)V"/> + </class> + <class name="android/app/PictureInPictureParams" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <field name="CREATOR"/> + </class> + <class name="android/app/PictureInPictureParams$Builder" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="build()Landroid/app/PictureInPictureParams;"/> + <method name="setActions(Ljava/util/List;)Landroid/app/PictureInPictureParams$Builder;"/> + <method name="setAspectRatio(Landroid/util/Rational;)Landroid/app/PictureInPictureParams$Builder;"/> + <method name="setSourceRectHint(Landroid/graphics/Rect;)Landroid/app/PictureInPictureParams$Builder;"/> + </class> + <class name="android/app/Presentation" since="17"> + <extends name="android/app/Dialog"/> + <method name="<init>(Landroid/content/Context;Landroid/view/Display;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/view/Display;I)V"/> + <method name="getDisplay()Landroid/view/Display;"/> + <method name="getResources()Landroid/content/res/Resources;"/> + <method name="onDisplayChanged()V"/> + <method name="onDisplayRemoved()V"/> + </class> + <class name="android/app/ProgressDialog" since="1" deprecated="26"> + <extends name="android/app/AlertDialog"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;I)V"/> + <method name="getMax()I"/> + <method name="getProgress()I"/> + <method name="getSecondaryProgress()I"/> + <method name="incrementProgressBy(I)V"/> + <method name="incrementSecondaryProgressBy(I)V"/> + <method name="isIndeterminate()Z"/> + <method name="setIndeterminate(Z)V"/> + <method name="setIndeterminateDrawable(Landroid/graphics/drawable/Drawable;)V"/> + <method name="setMax(I)V"/> + <method name="setProgress(I)V"/> + <method name="setProgressDrawable(Landroid/graphics/drawable/Drawable;)V"/> + <method name="setProgressNumberFormat(Ljava/lang/String;)V" since="11"/> + <method name="setProgressPercentFormat(Ljava/text/NumberFormat;)V" since="11"/> + <method name="setProgressStyle(I)V"/> + <method name="setSecondaryProgress(I)V"/> + <method name="show(Landroid/content/Context;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Landroid/app/ProgressDialog;"/> + <method name="show(Landroid/content/Context;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Z)Landroid/app/ProgressDialog;"/> + <method name="show(Landroid/content/Context;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ZZ)Landroid/app/ProgressDialog;"/> + <method name="show(Landroid/content/Context;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ZZLandroid/content/DialogInterface$OnCancelListener;)Landroid/app/ProgressDialog;"/> + <field name="STYLE_HORIZONTAL"/> + <field name="STYLE_SPINNER"/> + </class> + <class name="android/app/RemoteAction" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/graphics/drawable/Icon;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/app/PendingIntent;)V"/> + <method name="clone()Landroid/app/RemoteAction;"/> + <method name="dump(Ljava/lang/String;Ljava/io/PrintWriter;)V"/> + <method name="getActionIntent()Landroid/app/PendingIntent;"/> + <method name="getContentDescription()Ljava/lang/CharSequence;"/> + <method name="getIcon()Landroid/graphics/drawable/Icon;"/> + <method name="getTitle()Ljava/lang/CharSequence;"/> + <method name="isEnabled()Z"/> + <method name="setEnabled(Z)V"/> + <field name="CREATOR"/> + </class> + <class name="android/app/RemoteInput" since="20"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="addDataResultToIntent(Landroid/app/RemoteInput;Landroid/content/Intent;Ljava/util/Map;)V" since="26"/> + <method name="addResultsToIntent([Landroid/app/RemoteInput;Landroid/content/Intent;Landroid/os/Bundle;)V"/> + <method name="getAllowFreeFormInput()Z"/> + <method name="getAllowedDataTypes()Ljava/util/Set;" since="26"/> + <method name="getChoices()[Ljava/lang/CharSequence;"/> + <method name="getDataResultsFromIntent(Landroid/content/Intent;Ljava/lang/String;)Ljava/util/Map;" since="26"/> + <method name="getExtras()Landroid/os/Bundle;"/> + <method name="getLabel()Ljava/lang/CharSequence;"/> + <method name="getResultKey()Ljava/lang/String;"/> + <method name="getResultsFromIntent(Landroid/content/Intent;)Landroid/os/Bundle;"/> + <method name="isDataOnly()Z" since="26"/> + <field name="CREATOR"/> + <field name="EXTRA_RESULTS_DATA"/> + <field name="RESULTS_CLIP_LABEL"/> + </class> + <class name="android/app/RemoteInput$Builder" since="20"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="addExtras(Landroid/os/Bundle;)Landroid/app/RemoteInput$Builder;"/> + <method name="build()Landroid/app/RemoteInput;"/> + <method name="getExtras()Landroid/os/Bundle;"/> + <method name="setAllowDataType(Ljava/lang/String;Z)Landroid/app/RemoteInput$Builder;" since="26"/> + <method name="setAllowFreeFormInput(Z)Landroid/app/RemoteInput$Builder;"/> + <method name="setChoices([Ljava/lang/CharSequence;)Landroid/app/RemoteInput$Builder;"/> + <method name="setLabel(Ljava/lang/CharSequence;)Landroid/app/RemoteInput$Builder;"/> + </class> + <class name="android/app/SearchManager" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/content/DialogInterface$OnCancelListener"/> + <implements name="android/content/DialogInterface$OnDismissListener"/> + <method name="<init>()V"/> + <method name="getGlobalSearchActivity()Landroid/content/ComponentName;" since="16"/> + <method name="getSearchableInfo(Landroid/content/ComponentName;)Landroid/app/SearchableInfo;" since="8"/> + <method name="getSearchablesInGlobalSearch()Ljava/util/List;" since="8"/> + <method name="setOnCancelListener(Landroid/app/SearchManager$OnCancelListener;)V"/> + <method name="setOnDismissListener(Landroid/app/SearchManager$OnDismissListener;)V"/> + <method name="startSearch(Ljava/lang/String;ZLandroid/content/ComponentName;Landroid/os/Bundle;Z)V"/> + <method name="stopSearch()V"/> + <method name="triggerSearch(Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/Bundle;)V" since="5"/> + <field name="ACTION_KEY"/> + <field name="ACTION_MSG"/> + <field name="APP_DATA"/> + <field name="CURSOR_EXTRA_KEY_IN_PROGRESS" since="8"/> + <field name="EXTRA_DATA_KEY" since="4"/> + <field name="EXTRA_NEW_SEARCH" since="12"/> + <field name="EXTRA_SELECT_QUERY" since="8"/> + <field name="EXTRA_WEB_SEARCH_PENDINGINTENT" since="14"/> + <field name="FLAG_QUERY_REFINEMENT" since="11"/> + <field name="INTENT_ACTION_GLOBAL_SEARCH" since="8"/> + <field name="INTENT_ACTION_SEARCHABLES_CHANGED" since="4"/> + <field name="INTENT_ACTION_SEARCH_SETTINGS" since="8"/> + <field name="INTENT_ACTION_SEARCH_SETTINGS_CHANGED" since="4"/> + <field name="INTENT_ACTION_WEB_SEARCH_SETTINGS" since="4"/> + <field name="INTENT_GLOBAL_SEARCH_ACTIVITY_CHANGED" since="16"/> + <field name="MENU_KEY"/> + <field name="MENU_KEYCODE"/> + <field name="QUERY"/> + <field name="SHORTCUT_MIME_TYPE" since="4"/> + <field name="SUGGEST_COLUMN_AUDIO_CHANNEL_CONFIG" since="21"/> + <field name="SUGGEST_COLUMN_CONTENT_TYPE" since="21"/> + <field name="SUGGEST_COLUMN_DURATION" since="21"/> + <field name="SUGGEST_COLUMN_FLAGS" since="11"/> + <field name="SUGGEST_COLUMN_FORMAT"/> + <field name="SUGGEST_COLUMN_ICON_1"/> + <field name="SUGGEST_COLUMN_ICON_2"/> + <field name="SUGGEST_COLUMN_INTENT_ACTION"/> + <field name="SUGGEST_COLUMN_INTENT_DATA"/> + <field name="SUGGEST_COLUMN_INTENT_DATA_ID"/> + <field name="SUGGEST_COLUMN_INTENT_EXTRA_DATA" since="4"/> + <field name="SUGGEST_COLUMN_IS_LIVE" since="21"/> + <field name="SUGGEST_COLUMN_LAST_ACCESS_HINT" since="14"/> + <field name="SUGGEST_COLUMN_PRODUCTION_YEAR" since="21"/> + <field name="SUGGEST_COLUMN_PURCHASE_PRICE" since="21"/> + <field name="SUGGEST_COLUMN_QUERY"/> + <field name="SUGGEST_COLUMN_RATING_SCORE" since="21"/> + <field name="SUGGEST_COLUMN_RATING_STYLE" since="21"/> + <field name="SUGGEST_COLUMN_RENTAL_PRICE" since="21"/> + <field name="SUGGEST_COLUMN_RESULT_CARD_IMAGE" since="21"/> + <field name="SUGGEST_COLUMN_SHORTCUT_ID" since="4"/> + <field name="SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING" since="4"/> + <field name="SUGGEST_COLUMN_TEXT_1"/> + <field name="SUGGEST_COLUMN_TEXT_2"/> + <field name="SUGGEST_COLUMN_TEXT_2_URL" since="8"/> + <field name="SUGGEST_COLUMN_VIDEO_HEIGHT" since="21"/> + <field name="SUGGEST_COLUMN_VIDEO_WIDTH" since="21"/> + <field name="SUGGEST_MIME_TYPE"/> + <field name="SUGGEST_NEVER_MAKE_SHORTCUT" since="4"/> + <field name="SUGGEST_PARAMETER_LIMIT" since="5"/> + <field name="SUGGEST_URI_PATH_QUERY"/> + <field name="SUGGEST_URI_PATH_SHORTCUT" since="4"/> + <field name="USER_QUERY" since="4"/> + </class> + <class name="android/app/SearchManager$OnCancelListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onCancel()V"/> + </class> + <class name="android/app/SearchManager$OnDismissListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onDismiss()V"/> + </class> + <class name="android/app/SearchableInfo" since="8"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="autoUrlDetect()Z"/> + <method name="getHintId()I"/> + <method name="getImeOptions()I"/> + <method name="getInputType()I"/> + <method name="getSearchActivity()Landroid/content/ComponentName;"/> + <method name="getSettingsDescriptionId()I"/> + <method name="getSuggestAuthority()Ljava/lang/String;"/> + <method name="getSuggestIntentAction()Ljava/lang/String;"/> + <method name="getSuggestIntentData()Ljava/lang/String;"/> + <method name="getSuggestPackage()Ljava/lang/String;"/> + <method name="getSuggestPath()Ljava/lang/String;"/> + <method name="getSuggestSelection()Ljava/lang/String;"/> + <method name="getSuggestThreshold()I"/> + <method name="getVoiceLanguageId()I"/> + <method name="getVoiceLanguageModeId()I"/> + <method name="getVoiceMaxResults()I"/> + <method name="getVoicePromptTextId()I"/> + <method name="getVoiceSearchEnabled()Z"/> + <method name="getVoiceSearchLaunchRecognizer()Z"/> + <method name="getVoiceSearchLaunchWebSearch()Z"/> + <method name="queryAfterZeroResults()Z"/> + <method name="shouldIncludeInGlobalSearch()Z"/> + <method name="shouldRewriteQueryFromData()Z"/> + <method name="shouldRewriteQueryFromText()Z"/> + <field name="CREATOR"/> + </class> + <class name="android/app/Service" since="1"> + <extends name="android/content/ContextWrapper"/> + <implements name="android/content/ComponentCallbacks" removed="14"/> + <implements name="android/content/ComponentCallbacks2" since="14"/> + <method name="<init>()V"/> + <method name="dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V"/> + <method name="getApplication()Landroid/app/Application;"/> + <method name="onBind(Landroid/content/Intent;)Landroid/os/IBinder;"/> + <method name="onCreate()V"/> + <method name="onDestroy()V"/> + <method name="onRebind(Landroid/content/Intent;)V"/> + <method name="onStart(Landroid/content/Intent;I)V" deprecated="16"/> + <method name="onStartCommand(Landroid/content/Intent;II)I" since="5"/> + <method name="onTaskRemoved(Landroid/content/Intent;)V" since="14"/> + <method name="onUnbind(Landroid/content/Intent;)Z"/> + <method name="setForeground(Z)V" removed="11"/> + <method name="startForeground(ILandroid/app/Notification;)V" since="5"/> + <method name="stopForeground(I)V" since="24"/> + <method name="stopForeground(Z)V" since="5"/> + <method name="stopSelf()V"/> + <method name="stopSelf(I)V"/> + <method name="stopSelfResult(I)Z"/> + <field name="START_CONTINUATION_MASK" since="5"/> + <field name="START_FLAG_REDELIVERY" since="5"/> + <field name="START_FLAG_RETRY" since="5"/> + <field name="START_NOT_STICKY" since="5"/> + <field name="START_REDELIVER_INTENT" since="5"/> + <field name="START_STICKY" since="5"/> + <field name="START_STICKY_COMPATIBILITY" since="5"/> + <field name="STOP_FOREGROUND_DETACH" since="24"/> + <field name="STOP_FOREGROUND_REMOVE" since="24"/> + </class> + <class name="android/app/SharedElementCallback" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onCaptureSharedElementSnapshot(Landroid/view/View;Landroid/graphics/Matrix;Landroid/graphics/RectF;)Landroid/os/Parcelable;"/> + <method name="onCreateSnapshotView(Landroid/content/Context;Landroid/os/Parcelable;)Landroid/view/View;"/> + <method name="onMapSharedElements(Ljava/util/List;Ljava/util/Map;)V"/> + <method name="onRejectSharedElements(Ljava/util/List;)V"/> + <method name="onSharedElementEnd(Ljava/util/List;Ljava/util/List;Ljava/util/List;)V"/> + <method name="onSharedElementStart(Ljava/util/List;Ljava/util/List;Ljava/util/List;)V"/> + <method name="onSharedElementsArrived(Ljava/util/List;Ljava/util/List;Landroid/app/SharedElementCallback$OnSharedElementsReadyListener;)V" since="23"/> + </class> + <class name="android/app/SharedElementCallback$OnSharedElementsReadyListener" since="23"> + <extends name="java/lang/Object"/> + <method name="onSharedElementsReady()V"/> + </class> + <class name="android/app/TabActivity" since="1" deprecated="13"> + <extends name="android/app/ActivityGroup"/> + <method name="<init>()V"/> + <method name="getTabHost()Landroid/widget/TabHost;"/> + <method name="getTabWidget()Landroid/widget/TabWidget;"/> + <method name="setDefaultTab(I)V"/> + <method name="setDefaultTab(Ljava/lang/String;)V"/> + </class> + <class name="android/app/TaskStackBuilder" since="16"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addNextIntent(Landroid/content/Intent;)Landroid/app/TaskStackBuilder;"/> + <method name="addNextIntentWithParentStack(Landroid/content/Intent;)Landroid/app/TaskStackBuilder;"/> + <method name="addParentStack(Landroid/app/Activity;)Landroid/app/TaskStackBuilder;"/> + <method name="addParentStack(Landroid/content/ComponentName;)Landroid/app/TaskStackBuilder;"/> + <method name="addParentStack(Ljava/lang/Class;)Landroid/app/TaskStackBuilder;"/> + <method name="create(Landroid/content/Context;)Landroid/app/TaskStackBuilder;"/> + <method name="editIntentAt(I)Landroid/content/Intent;"/> + <method name="getIntentCount()I"/> + <method name="getIntents()[Landroid/content/Intent;"/> + <method name="getPendingIntent(II)Landroid/app/PendingIntent;"/> + <method name="getPendingIntent(IILandroid/os/Bundle;)Landroid/app/PendingIntent;"/> + <method name="startActivities()V"/> + <method name="startActivities(Landroid/os/Bundle;)V"/> + </class> + <class name="android/app/TimePickerDialog" since="1"> + <extends name="android/app/AlertDialog"/> + <implements name="android/content/DialogInterface$OnClickListener"/> + <implements name="android/widget/TimePicker$OnTimeChangedListener"/> + <method name="<init>(Landroid/content/Context;ILandroid/app/TimePickerDialog$OnTimeSetListener;IIZ)V"/> + <method name="<init>(Landroid/content/Context;Landroid/app/TimePickerDialog$OnTimeSetListener;IIZ)V"/> + <method name="updateTime(II)V"/> + </class> + <class name="android/app/TimePickerDialog$OnTimeSetListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onTimeSet(Landroid/widget/TimePicker;II)V"/> + </class> + <class name="android/app/UiAutomation" since="18"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="clearWindowAnimationFrameStats()V" since="21"/> + <method name="clearWindowContentFrameStats(I)Z" since="21"/> + <method name="executeAndWaitForEvent(Ljava/lang/Runnable;Landroid/app/UiAutomation$AccessibilityEventFilter;J)Landroid/view/accessibility/AccessibilityEvent;"/> + <method name="executeShellCommand(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;" since="21"/> + <method name="findFocus(I)Landroid/view/accessibility/AccessibilityNodeInfo;" since="21"/> + <method name="getRootInActiveWindow()Landroid/view/accessibility/AccessibilityNodeInfo;"/> + <method name="getServiceInfo()Landroid/accessibilityservice/AccessibilityServiceInfo;"/> + <method name="getWindowAnimationFrameStats()Landroid/view/WindowAnimationFrameStats;" since="21"/> + <method name="getWindowContentFrameStats(I)Landroid/view/WindowContentFrameStats;" since="21"/> + <method name="getWindows()Ljava/util/List;" since="21"/> + <method name="injectInputEvent(Landroid/view/InputEvent;Z)Z"/> + <method name="performGlobalAction(I)Z"/> + <method name="setOnAccessibilityEventListener(Landroid/app/UiAutomation$OnAccessibilityEventListener;)V"/> + <method name="setRotation(I)Z"/> + <method name="setRunAsMonkey(Z)V"/> + <method name="setServiceInfo(Landroid/accessibilityservice/AccessibilityServiceInfo;)V"/> + <method name="takeScreenshot()Landroid/graphics/Bitmap;"/> + <method name="waitForIdle(JJ)V"/> + <field name="FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES" since="24"/> + <field name="ROTATION_FREEZE_0"/> + <field name="ROTATION_FREEZE_180"/> + <field name="ROTATION_FREEZE_270"/> + <field name="ROTATION_FREEZE_90"/> + <field name="ROTATION_FREEZE_CURRENT"/> + <field name="ROTATION_UNFREEZE"/> + </class> + <class name="android/app/UiAutomation$AccessibilityEventFilter" since="18"> + <extends name="java/lang/Object"/> + <method name="accept(Landroid/view/accessibility/AccessibilityEvent;)Z"/> + </class> + <class name="android/app/UiAutomation$OnAccessibilityEventListener" since="18"> + <extends name="java/lang/Object"/> + <method name="onAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V"/> + </class> + <class name="android/app/UiModeManager" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="disableCarMode(I)V"/> + <method name="enableCarMode(I)V"/> + <method name="getCurrentModeType()I"/> + <method name="getNightMode()I"/> + <method name="setNightMode(I)V"/> + <field name="ACTION_ENTER_CAR_MODE"/> + <field name="ACTION_ENTER_DESK_MODE"/> + <field name="ACTION_EXIT_CAR_MODE"/> + <field name="ACTION_EXIT_DESK_MODE"/> + <field name="DISABLE_CAR_MODE_GO_HOME"/> + <field name="ENABLE_CAR_MODE_ALLOW_SLEEP" since="21"/> + <field name="ENABLE_CAR_MODE_GO_CAR_HOME"/> + <field name="MODE_NIGHT_AUTO"/> + <field name="MODE_NIGHT_NO"/> + <field name="MODE_NIGHT_YES"/> + </class> + <class name="android/app/VoiceInteractor" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getActiveRequest(Ljava/lang/String;)Landroid/app/VoiceInteractor$Request;"/> + <method name="getActiveRequests()[Landroid/app/VoiceInteractor$Request;"/> + <method name="submitRequest(Landroid/app/VoiceInteractor$Request;)Z"/> + <method name="submitRequest(Landroid/app/VoiceInteractor$Request;Ljava/lang/String;)Z"/> + <method name="supportsCommands([Ljava/lang/String;)[Z"/> + </class> + <class name="android/app/VoiceInteractor$AbortVoiceRequest" since="23"> + <extends name="android/app/VoiceInteractor$Request"/> + <method name="<init>(Landroid/app/VoiceInteractor$Prompt;Landroid/os/Bundle;)V"/> + <method name="onAbortResult(Landroid/os/Bundle;)V"/> + </class> + <class name="android/app/VoiceInteractor$CommandRequest" since="23"> + <extends name="android/app/VoiceInteractor$Request"/> + <method name="<init>(Ljava/lang/String;Landroid/os/Bundle;)V"/> + <method name="onCommandResult(ZLandroid/os/Bundle;)V"/> + </class> + <class name="android/app/VoiceInteractor$CompleteVoiceRequest" since="23"> + <extends name="android/app/VoiceInteractor$Request"/> + <method name="<init>(Landroid/app/VoiceInteractor$Prompt;Landroid/os/Bundle;)V"/> + <method name="onCompleteResult(Landroid/os/Bundle;)V"/> + </class> + <class name="android/app/VoiceInteractor$ConfirmationRequest" since="23"> + <extends name="android/app/VoiceInteractor$Request"/> + <method name="<init>(Landroid/app/VoiceInteractor$Prompt;Landroid/os/Bundle;)V"/> + <method name="onConfirmationResult(ZLandroid/os/Bundle;)V"/> + </class> + <class name="android/app/VoiceInteractor$PickOptionRequest" since="23"> + <extends name="android/app/VoiceInteractor$Request"/> + <method name="<init>(Landroid/app/VoiceInteractor$Prompt;[Landroid/app/VoiceInteractor$PickOptionRequest$Option;Landroid/os/Bundle;)V"/> + <method name="onPickOptionResult(Z[Landroid/app/VoiceInteractor$PickOptionRequest$Option;Landroid/os/Bundle;)V"/> + </class> + <class name="android/app/VoiceInteractor$PickOptionRequest$Option" since="23"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Ljava/lang/CharSequence;I)V"/> + <method name="addSynonym(Ljava/lang/CharSequence;)Landroid/app/VoiceInteractor$PickOptionRequest$Option;"/> + <method name="countSynonyms()I"/> + <method name="getExtras()Landroid/os/Bundle;"/> + <method name="getIndex()I"/> + <method name="getLabel()Ljava/lang/CharSequence;"/> + <method name="getSynonymAt(I)Ljava/lang/CharSequence;"/> + <method name="setExtras(Landroid/os/Bundle;)V"/> + <field name="CREATOR"/> + </class> + <class name="android/app/VoiceInteractor$Prompt" since="23"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Ljava/lang/CharSequence;)V"/> + <method name="<init>([Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V"/> + <method name="countVoicePrompts()I"/> + <method name="getVisualPrompt()Ljava/lang/CharSequence;"/> + <method name="getVoicePromptAt(I)Ljava/lang/CharSequence;"/> + <field name="CREATOR"/> + </class> + <class name="android/app/VoiceInteractor$Request" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="cancel()V"/> + <method name="getActivity()Landroid/app/Activity;"/> + <method name="getContext()Landroid/content/Context;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="onAttached(Landroid/app/Activity;)V"/> + <method name="onCancel()V"/> + <method name="onDetached()V"/> + </class> + <class name="android/app/WallpaperColors" since="27"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/graphics/Color;Landroid/graphics/Color;Landroid/graphics/Color;)V"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="fromBitmap(Landroid/graphics/Bitmap;)Landroid/app/WallpaperColors;"/> + <method name="fromDrawable(Landroid/graphics/drawable/Drawable;)Landroid/app/WallpaperColors;"/> + <method name="getPrimaryColor()Landroid/graphics/Color;"/> + <method name="getSecondaryColor()Landroid/graphics/Color;"/> + <method name="getTertiaryColor()Landroid/graphics/Color;"/> + <field name="CREATOR"/> + </class> + <class name="android/app/WallpaperInfo" since="7"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/content/Context;Landroid/content/pm/ResolveInfo;)V"/> + <method name="dump(Landroid/util/Printer;Ljava/lang/String;)V"/> + <method name="getComponent()Landroid/content/ComponentName;"/> + <method name="getPackageName()Ljava/lang/String;"/> + <method name="getServiceInfo()Landroid/content/pm/ServiceInfo;"/> + <method name="getServiceName()Ljava/lang/String;"/> + <method name="getSettingsActivity()Ljava/lang/String;"/> + <method name="getShowMetadataInPreview()Z" since="25"/> + <method name="loadAuthor(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;"/> + <method name="loadContextDescription(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" since="25"/> + <method name="loadContextUri(Landroid/content/pm/PackageManager;)Landroid/net/Uri;" since="25"/> + <method name="loadDescription(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;"/> + <method name="loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;"/> + <method name="loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;"/> + <method name="loadThumbnail(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;"/> + <field name="CREATOR"/> + </class> + <class name="android/app/WallpaperManager" since="5"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addOnColorsChangedListener(Landroid/app/WallpaperManager$OnColorsChangedListener;)V" since="27"/> + <method name="addOnColorsChangedListener(Landroid/app/WallpaperManager$OnColorsChangedListener;Landroid/os/Handler;)V" since="27"/> + <method name="clear()V"/> + <method name="clear(I)V" since="24"/> + <method name="clearWallpaperOffsets(Landroid/os/IBinder;)V"/> + <method name="forgetLoadedWallpaper()V" since="14"/> + <method name="getBuiltInDrawable()Landroid/graphics/drawable/Drawable;" since="19"/> + <method name="getBuiltInDrawable(I)Landroid/graphics/drawable/Drawable;" since="24"/> + <method name="getBuiltInDrawable(IIZFF)Landroid/graphics/drawable/Drawable;" since="19"/> + <method name="getBuiltInDrawable(IIZFFI)Landroid/graphics/drawable/Drawable;" since="24"/> + <method name="getCropAndSetWallpaperIntent(Landroid/net/Uri;)Landroid/content/Intent;" since="19"/> + <method name="getDesiredMinimumHeight()I"/> + <method name="getDesiredMinimumWidth()I"/> + <method name="getDrawable()Landroid/graphics/drawable/Drawable;"/> + <method name="getFastDrawable()Landroid/graphics/drawable/Drawable;"/> + <method name="getInstance(Landroid/content/Context;)Landroid/app/WallpaperManager;"/> + <method name="getWallpaperColors(I)Landroid/app/WallpaperColors;" since="27"/> + <method name="getWallpaperFile(I)Landroid/os/ParcelFileDescriptor;" since="24"/> + <method name="getWallpaperId(I)I" since="24"/> + <method name="getWallpaperInfo()Landroid/app/WallpaperInfo;" since="7"/> + <method name="hasResourceWallpaper(I)Z" since="17"/> + <method name="isSetWallpaperAllowed()Z" since="24"/> + <method name="isWallpaperSupported()Z" since="23"/> + <method name="peekDrawable()Landroid/graphics/drawable/Drawable;"/> + <method name="peekFastDrawable()Landroid/graphics/drawable/Drawable;"/> + <method name="removeOnColorsChangedListener(Landroid/app/WallpaperManager$OnColorsChangedListener;)V" since="27"/> + <method name="sendWallpaperCommand(Landroid/os/IBinder;Ljava/lang/String;IIILandroid/os/Bundle;)V" since="7"/> + <method name="setBitmap(Landroid/graphics/Bitmap;)V"/> + <method name="setBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Z)I" since="24"/> + <method name="setBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;ZI)I" since="24"/> + <method name="setResource(I)V"/> + <method name="setResource(II)I" since="24"/> + <method name="setStream(Ljava/io/InputStream;)V"/> + <method name="setStream(Ljava/io/InputStream;Landroid/graphics/Rect;Z)I" since="24"/> + <method name="setStream(Ljava/io/InputStream;Landroid/graphics/Rect;ZI)I" since="24"/> + <method name="setWallpaperOffsetSteps(FF)V" since="7"/> + <method name="setWallpaperOffsets(Landroid/os/IBinder;FF)V"/> + <method name="suggestDesiredDimensions(II)V"/> + <field name="ACTION_CHANGE_LIVE_WALLPAPER" since="16"/> + <field name="ACTION_CROP_AND_SET_WALLPAPER" since="19"/> + <field name="ACTION_LIVE_WALLPAPER_CHOOSER" since="7"/> + <field name="COMMAND_DROP" since="7"/> + <field name="COMMAND_SECONDARY_TAP" since="11"/> + <field name="COMMAND_TAP" since="7"/> + <field name="EXTRA_LIVE_WALLPAPER_COMPONENT" since="16"/> + <field name="FLAG_LOCK" since="24"/> + <field name="FLAG_SYSTEM" since="24"/> + <field name="WALLPAPER_PREVIEW_META_DATA" since="11"/> + </class> + <class name="android/app/WallpaperManager$OnColorsChangedListener" since="27"> + <extends name="java/lang/Object"/> + <method name="onColorsChanged(Landroid/app/WallpaperColors;I)V"/> + </class> + <class name="android/app/admin/ConnectEvent" since="26"> + <extends name="android/app/admin/NetworkEvent"/> + <method name="<init>()V"/> + <method name="getInetAddress()Ljava/net/InetAddress;"/> + <method name="getPort()I"/> + <field name="CREATOR"/> + </class> + <class name="android/app/admin/DeviceAdminInfo" since="8"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/content/Context;Landroid/content/pm/ResolveInfo;)V"/> + <method name="dump(Landroid/util/Printer;Ljava/lang/String;)V"/> + <method name="getActivityInfo()Landroid/content/pm/ActivityInfo;"/> + <method name="getComponent()Landroid/content/ComponentName;"/> + <method name="getPackageName()Ljava/lang/String;"/> + <method name="getReceiverName()Ljava/lang/String;"/> + <method name="getTagForPolicy(I)Ljava/lang/String;"/> + <method name="isVisible()Z"/> + <method name="loadDescription(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;"/> + <method name="loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;"/> + <method name="loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;"/> + <method name="usesPolicy(I)Z"/> + <field name="CREATOR"/> + <field name="USES_ENCRYPTED_STORAGE" since="11"/> + <field name="USES_POLICY_DISABLE_CAMERA" since="14"/> + <field name="USES_POLICY_DISABLE_KEYGUARD_FEATURES" since="17"/> + <field name="USES_POLICY_EXPIRE_PASSWORD" since="11"/> + <field name="USES_POLICY_FORCE_LOCK"/> + <field name="USES_POLICY_LIMIT_PASSWORD"/> + <field name="USES_POLICY_RESET_PASSWORD"/> + <field name="USES_POLICY_WATCH_LOGIN"/> + <field name="USES_POLICY_WIPE_DATA"/> + </class> + <class name="android/app/admin/DeviceAdminReceiver" since="8"> + <extends name="android/content/BroadcastReceiver"/> + <method name="<init>()V"/> + <method name="getManager(Landroid/content/Context;)Landroid/app/admin/DevicePolicyManager;"/> + <method name="getWho(Landroid/content/Context;)Landroid/content/ComponentName;"/> + <method name="onBugreportFailed(Landroid/content/Context;Landroid/content/Intent;I)V" since="24"/> + <method name="onBugreportShared(Landroid/content/Context;Landroid/content/Intent;Ljava/lang/String;)V" since="24"/> + <method name="onBugreportSharingDeclined(Landroid/content/Context;Landroid/content/Intent;)V" since="24"/> + <method name="onChoosePrivateKeyAlias(Landroid/content/Context;Landroid/content/Intent;ILandroid/net/Uri;Ljava/lang/String;)Ljava/lang/String;" since="23"/> + <method name="onDisableRequested(Landroid/content/Context;Landroid/content/Intent;)Ljava/lang/CharSequence;"/> + <method name="onDisabled(Landroid/content/Context;Landroid/content/Intent;)V"/> + <method name="onEnabled(Landroid/content/Context;Landroid/content/Intent;)V"/> + <method name="onLockTaskModeEntering(Landroid/content/Context;Landroid/content/Intent;Ljava/lang/String;)V" since="21"/> + <method name="onLockTaskModeExiting(Landroid/content/Context;Landroid/content/Intent;)V" since="21"/> + <method name="onNetworkLogsAvailable(Landroid/content/Context;Landroid/content/Intent;JI)V" since="26"/> + <method name="onPasswordChanged(Landroid/content/Context;Landroid/content/Intent;)V" deprecated="26"/> + <method name="onPasswordChanged(Landroid/content/Context;Landroid/content/Intent;Landroid/os/UserHandle;)V" since="26"/> + <method name="onPasswordExpiring(Landroid/content/Context;Landroid/content/Intent;)V" since="11" deprecated="26"/> + <method name="onPasswordExpiring(Landroid/content/Context;Landroid/content/Intent;Landroid/os/UserHandle;)V" since="26"/> + <method name="onPasswordFailed(Landroid/content/Context;Landroid/content/Intent;)V" deprecated="26"/> + <method name="onPasswordFailed(Landroid/content/Context;Landroid/content/Intent;Landroid/os/UserHandle;)V" since="26"/> + <method name="onPasswordSucceeded(Landroid/content/Context;Landroid/content/Intent;)V" deprecated="26"/> + <method name="onPasswordSucceeded(Landroid/content/Context;Landroid/content/Intent;Landroid/os/UserHandle;)V" since="26"/> + <method name="onProfileProvisioningComplete(Landroid/content/Context;Landroid/content/Intent;)V" since="21"/> + <method name="onReadyForUserInitialization(Landroid/content/Context;Landroid/content/Intent;)V" since="23" deprecated="24"/> + <method name="onSecurityLogsAvailable(Landroid/content/Context;Landroid/content/Intent;)V" since="24"/> + <method name="onSystemUpdatePending(Landroid/content/Context;Landroid/content/Intent;J)V" since="23"/> + <method name="onUserAdded(Landroid/content/Context;Landroid/content/Intent;Landroid/os/UserHandle;)V" since="26"/> + <method name="onUserRemoved(Landroid/content/Context;Landroid/content/Intent;Landroid/os/UserHandle;)V" since="26"/> + <field name="ACTION_DEVICE_ADMIN_DISABLED"/> + <field name="ACTION_DEVICE_ADMIN_DISABLE_REQUESTED"/> + <field name="ACTION_DEVICE_ADMIN_ENABLED"/> + <field name="ACTION_LOCK_TASK_ENTERING" since="21"/> + <field name="ACTION_LOCK_TASK_EXITING" since="21"/> + <field name="ACTION_PASSWORD_CHANGED"/> + <field name="ACTION_PASSWORD_EXPIRING" since="11"/> + <field name="ACTION_PASSWORD_FAILED"/> + <field name="ACTION_PASSWORD_SUCCEEDED"/> + <field name="ACTION_PROFILE_PROVISIONING_COMPLETE" since="21"/> + <field name="BUGREPORT_FAILURE_FAILED_COMPLETING" since="24"/> + <field name="BUGREPORT_FAILURE_FILE_NO_LONGER_AVAILABLE" since="24"/> + <field name="DEVICE_ADMIN_META_DATA"/> + <field name="EXTRA_DISABLE_WARNING"/> + <field name="EXTRA_LOCK_TASK_PACKAGE" since="21"/> + </class> + <class name="android/app/admin/DeviceAdminService" since="26"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + </class> + <class name="android/app/admin/DevicePolicyManager" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addCrossProfileIntentFilter(Landroid/content/ComponentName;Landroid/content/IntentFilter;I)V" since="21"/> + <method name="addCrossProfileWidgetProvider(Landroid/content/ComponentName;Ljava/lang/String;)Z" since="21"/> + <method name="addPersistentPreferredActivity(Landroid/content/ComponentName;Landroid/content/IntentFilter;Landroid/content/ComponentName;)V" since="21"/> + <method name="addUserRestriction(Landroid/content/ComponentName;Ljava/lang/String;)V" since="21"/> + <method name="bindDeviceAdminServiceAsUser(Landroid/content/ComponentName;Landroid/content/Intent;Landroid/content/ServiceConnection;ILandroid/os/UserHandle;)Z" since="26"/> + <method name="clearCrossProfileIntentFilters(Landroid/content/ComponentName;)V" since="21"/> + <method name="clearDeviceOwnerApp(Ljava/lang/String;)V" since="21" deprecated="26"/> + <method name="clearPackagePersistentPreferredActivities(Landroid/content/ComponentName;Ljava/lang/String;)V" since="21"/> + <method name="clearProfileOwner(Landroid/content/ComponentName;)V" since="24" deprecated="26"/> + <method name="clearResetPasswordToken(Landroid/content/ComponentName;)Z" since="26"/> + <method name="clearUserRestriction(Landroid/content/ComponentName;Ljava/lang/String;)V" since="21"/> + <method name="createAdminSupportIntent(Ljava/lang/String;)Landroid/content/Intent;" since="26"/> + <method name="createAndInitializeUser(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/Bundle;)Landroid/os/UserHandle;" since="21" deprecated="23" removed="24"/> + <method name="createAndManageUser(Landroid/content/ComponentName;Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/PersistableBundle;I)Landroid/os/UserHandle;" since="24"/> + <method name="createUser(Landroid/content/ComponentName;Ljava/lang/String;)Landroid/os/UserHandle;" since="21" deprecated="23" removed="24"/> + <method name="enableSystemApp(Landroid/content/ComponentName;Landroid/content/Intent;)I" since="21"/> + <method name="enableSystemApp(Landroid/content/ComponentName;Ljava/lang/String;)V" since="21"/> + <method name="getAccountTypesWithManagementDisabled()[Ljava/lang/String;" since="21"/> + <method name="getActiveAdmins()Ljava/util/List;"/> + <method name="getAffiliationIds(Landroid/content/ComponentName;)Ljava/util/Set;" since="26"/> + <method name="getAlwaysOnVpnPackage(Landroid/content/ComponentName;)Ljava/lang/String;" since="24"/> + <method name="getApplicationRestrictions(Landroid/content/ComponentName;Ljava/lang/String;)Landroid/os/Bundle;" since="21"/> + <method name="getApplicationRestrictionsManagingPackage(Landroid/content/ComponentName;)Ljava/lang/String;" since="24" deprecated="26"/> + <method name="getAutoTimeRequired()Z" since="21"/> + <method name="getBindDeviceAdminTargetUsers(Landroid/content/ComponentName;)Ljava/util/List;" since="26"/> + <method name="getBluetoothContactSharingDisabled(Landroid/content/ComponentName;)Z" since="23"/> + <method name="getCameraDisabled(Landroid/content/ComponentName;)Z" since="14"/> + <method name="getCertInstallerPackage(Landroid/content/ComponentName;)Ljava/lang/String;" since="23" deprecated="26"/> + <method name="getCrossProfileCallerIdDisabled(Landroid/content/ComponentName;)Z" since="21"/> + <method name="getCrossProfileContactsSearchDisabled(Landroid/content/ComponentName;)Z" since="24"/> + <method name="getCrossProfileWidgetProviders(Landroid/content/ComponentName;)Ljava/util/List;" since="21"/> + <method name="getCurrentFailedPasswordAttempts()I"/> + <method name="getDelegatePackages(Landroid/content/ComponentName;Ljava/lang/String;)Ljava/util/List;" since="26"/> + <method name="getDelegatedScopes(Landroid/content/ComponentName;Ljava/lang/String;)Ljava/util/List;" since="26"/> + <method name="getDeviceOwnerLockScreenInfo()Ljava/lang/CharSequence;" since="24"/> + <method name="getInstalledCaCerts(Landroid/content/ComponentName;)Ljava/util/List;" since="21"/> + <method name="getKeyguardDisabledFeatures(Landroid/content/ComponentName;)I" since="17"/> + <method name="getLockTaskPackages(Landroid/content/ComponentName;)[Ljava/lang/String;" since="26"/> + <method name="getLongSupportMessage(Landroid/content/ComponentName;)Ljava/lang/CharSequence;" since="24"/> + <method name="getMaximumFailedPasswordsForWipe(Landroid/content/ComponentName;)I"/> + <method name="getMaximumTimeToLock(Landroid/content/ComponentName;)J"/> + <method name="getOrganizationColor(Landroid/content/ComponentName;)I" since="24"/> + <method name="getOrganizationName(Landroid/content/ComponentName;)Ljava/lang/CharSequence;" since="24"/> + <method name="getParentProfileInstance(Landroid/content/ComponentName;)Landroid/app/admin/DevicePolicyManager;" since="24"/> + <method name="getPasswordExpiration(Landroid/content/ComponentName;)J" since="11"/> + <method name="getPasswordExpirationTimeout(Landroid/content/ComponentName;)J" since="11"/> + <method name="getPasswordHistoryLength(Landroid/content/ComponentName;)I" since="11"/> + <method name="getPasswordMaximumLength(I)I"/> + <method name="getPasswordMinimumLength(Landroid/content/ComponentName;)I"/> + <method name="getPasswordMinimumLetters(Landroid/content/ComponentName;)I" since="11"/> + <method name="getPasswordMinimumLowerCase(Landroid/content/ComponentName;)I" since="11"/> + <method name="getPasswordMinimumNonLetter(Landroid/content/ComponentName;)I" since="11"/> + <method name="getPasswordMinimumNumeric(Landroid/content/ComponentName;)I" since="11"/> + <method name="getPasswordMinimumSymbols(Landroid/content/ComponentName;)I" since="11"/> + <method name="getPasswordMinimumUpperCase(Landroid/content/ComponentName;)I" since="11"/> + <method name="getPasswordQuality(Landroid/content/ComponentName;)I"/> + <method name="getPendingSystemUpdate(Landroid/content/ComponentName;)Landroid/app/admin/SystemUpdateInfo;" since="26"/> + <method name="getPermissionGrantState(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)I" since="23"/> + <method name="getPermissionPolicy(Landroid/content/ComponentName;)I" since="23"/> + <method name="getPermittedAccessibilityServices(Landroid/content/ComponentName;)Ljava/util/List;" since="21"/> + <method name="getPermittedCrossProfileNotificationListeners(Landroid/content/ComponentName;)Ljava/util/List;" since="26"/> + <method name="getPermittedInputMethods(Landroid/content/ComponentName;)Ljava/util/List;" since="21"/> + <method name="getRequiredStrongAuthTimeout(Landroid/content/ComponentName;)J" since="26"/> + <method name="getScreenCaptureDisabled(Landroid/content/ComponentName;)Z" since="21"/> + <method name="getShortSupportMessage(Landroid/content/ComponentName;)Ljava/lang/CharSequence;" since="24"/> + <method name="getStorageEncryption(Landroid/content/ComponentName;)Z" since="11"/> + <method name="getStorageEncryptionStatus()I" since="11"/> + <method name="getSystemUpdatePolicy()Landroid/app/admin/SystemUpdatePolicy;" since="23"/> + <method name="getTrustAgentConfiguration(Landroid/content/ComponentName;Landroid/content/ComponentName;)Ljava/util/List;" since="23"/> + <method name="getUserRestrictions(Landroid/content/ComponentName;)Landroid/os/Bundle;" since="24"/> + <method name="getWifiMacAddress(Landroid/content/ComponentName;)Ljava/lang/String;" since="24"/> + <method name="hasCaCertInstalled(Landroid/content/ComponentName;[B)Z" since="21"/> + <method name="hasGrantedPolicy(Landroid/content/ComponentName;I)Z" since="11"/> + <method name="installCaCert(Landroid/content/ComponentName;[B)Z" since="21"/> + <method name="installKeyPair(Landroid/content/ComponentName;Ljava/security/PrivateKey;Ljava/security/cert/Certificate;Ljava/lang/String;)Z" since="21"/> + <method name="installKeyPair(Landroid/content/ComponentName;Ljava/security/PrivateKey;[Ljava/security/cert/Certificate;Ljava/lang/String;Z)Z" since="24"/> + <method name="isActivePasswordSufficient()Z"/> + <method name="isAdminActive(Landroid/content/ComponentName;)Z"/> + <method name="isApplicationHidden(Landroid/content/ComponentName;Ljava/lang/String;)Z" since="21"/> + <method name="isBackupServiceEnabled(Landroid/content/ComponentName;)Z" since="26"/> + <method name="isCallerApplicationRestrictionsManagingPackage()Z" since="24" deprecated="26"/> + <method name="isDeviceOwnerApp(Ljava/lang/String;)Z" since="18"/> + <method name="isLockTaskPermitted(Ljava/lang/String;)Z" since="21"/> + <method name="isManagedProfile(Landroid/content/ComponentName;)Z" since="24"/> + <method name="isMasterVolumeMuted(Landroid/content/ComponentName;)Z" since="21"/> + <method name="isNetworkLoggingEnabled(Landroid/content/ComponentName;)Z" since="26"/> + <method name="isPackageSuspended(Landroid/content/ComponentName;Ljava/lang/String;)Z" since="24"/> + <method name="isProfileOwnerApp(Ljava/lang/String;)Z" since="21"/> + <method name="isProvisioningAllowed(Ljava/lang/String;)Z" since="24"/> + <method name="isResetPasswordTokenActive(Landroid/content/ComponentName;)Z" since="26"/> + <method name="isSecurityLoggingEnabled(Landroid/content/ComponentName;)Z" since="24"/> + <method name="isUninstallBlocked(Landroid/content/ComponentName;Ljava/lang/String;)Z" since="21"/> + <method name="lockNow()V"/> + <method name="lockNow(I)V" since="26"/> + <method name="reboot(Landroid/content/ComponentName;)V" since="24"/> + <method name="removeActiveAdmin(Landroid/content/ComponentName;)V"/> + <method name="removeCrossProfileWidgetProvider(Landroid/content/ComponentName;Ljava/lang/String;)Z" since="21"/> + <method name="removeKeyPair(Landroid/content/ComponentName;Ljava/lang/String;)Z" since="24"/> + <method name="removeUser(Landroid/content/ComponentName;Landroid/os/UserHandle;)Z" since="21"/> + <method name="requestBugreport(Landroid/content/ComponentName;)Z" since="24"/> + <method name="resetPassword(Ljava/lang/String;I)Z"/> + <method name="resetPasswordWithToken(Landroid/content/ComponentName;Ljava/lang/String;[BI)Z" since="26"/> + <method name="retrieveNetworkLogs(Landroid/content/ComponentName;J)Ljava/util/List;" since="26"/> + <method name="retrievePreRebootSecurityLogs(Landroid/content/ComponentName;)Ljava/util/List;" since="24"/> + <method name="retrieveSecurityLogs(Landroid/content/ComponentName;)Ljava/util/List;" since="24"/> + <method name="setAccountManagementDisabled(Landroid/content/ComponentName;Ljava/lang/String;Z)V" since="21"/> + <method name="setAffiliationIds(Landroid/content/ComponentName;Ljava/util/Set;)V" since="26"/> + <method name="setAlwaysOnVpnPackage(Landroid/content/ComponentName;Ljava/lang/String;Z)V" since="24"/> + <method name="setApplicationHidden(Landroid/content/ComponentName;Ljava/lang/String;Z)Z" since="21"/> + <method name="setApplicationRestrictions(Landroid/content/ComponentName;Ljava/lang/String;Landroid/os/Bundle;)V" since="21"/> + <method name="setApplicationRestrictionsManagingPackage(Landroid/content/ComponentName;Ljava/lang/String;)V" since="24" deprecated="26"/> + <method name="setAutoTimeRequired(Landroid/content/ComponentName;Z)V" since="21"/> + <method name="setBackupServiceEnabled(Landroid/content/ComponentName;Z)V" since="26"/> + <method name="setBluetoothContactSharingDisabled(Landroid/content/ComponentName;Z)V" since="23"/> + <method name="setCameraDisabled(Landroid/content/ComponentName;Z)V" since="14"/> + <method name="setCertInstallerPackage(Landroid/content/ComponentName;Ljava/lang/String;)V" since="23" deprecated="26"/> + <method name="setCrossProfileCallerIdDisabled(Landroid/content/ComponentName;Z)V" since="21"/> + <method name="setCrossProfileContactsSearchDisabled(Landroid/content/ComponentName;Z)V" since="24"/> + <method name="setDelegatedScopes(Landroid/content/ComponentName;Ljava/lang/String;Ljava/util/List;)V" since="26"/> + <method name="setDeviceOwnerLockScreenInfo(Landroid/content/ComponentName;Ljava/lang/CharSequence;)V" since="24"/> + <method name="setGlobalSetting(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)V" since="21"/> + <method name="setKeyguardDisabled(Landroid/content/ComponentName;Z)Z" since="23"/> + <method name="setKeyguardDisabledFeatures(Landroid/content/ComponentName;I)V" since="17"/> + <method name="setLockTaskPackages(Landroid/content/ComponentName;[Ljava/lang/String;)V" since="21"/> + <method name="setLongSupportMessage(Landroid/content/ComponentName;Ljava/lang/CharSequence;)V" since="24"/> + <method name="setMasterVolumeMuted(Landroid/content/ComponentName;Z)V" since="21"/> + <method name="setMaximumFailedPasswordsForWipe(Landroid/content/ComponentName;I)V"/> + <method name="setMaximumTimeToLock(Landroid/content/ComponentName;J)V"/> + <method name="setNetworkLoggingEnabled(Landroid/content/ComponentName;Z)V" since="26"/> + <method name="setOrganizationColor(Landroid/content/ComponentName;I)V" since="24"/> + <method name="setOrganizationName(Landroid/content/ComponentName;Ljava/lang/CharSequence;)V" since="24"/> + <method name="setPackagesSuspended(Landroid/content/ComponentName;[Ljava/lang/String;Z)[Ljava/lang/String;" since="24"/> + <method name="setPasswordExpirationTimeout(Landroid/content/ComponentName;J)V" since="11"/> + <method name="setPasswordHistoryLength(Landroid/content/ComponentName;I)V" since="11"/> + <method name="setPasswordMinimumLength(Landroid/content/ComponentName;I)V"/> + <method name="setPasswordMinimumLetters(Landroid/content/ComponentName;I)V" since="11"/> + <method name="setPasswordMinimumLowerCase(Landroid/content/ComponentName;I)V" since="11"/> + <method name="setPasswordMinimumNonLetter(Landroid/content/ComponentName;I)V" since="11"/> + <method name="setPasswordMinimumNumeric(Landroid/content/ComponentName;I)V" since="11"/> + <method name="setPasswordMinimumSymbols(Landroid/content/ComponentName;I)V" since="11"/> + <method name="setPasswordMinimumUpperCase(Landroid/content/ComponentName;I)V" since="11"/> + <method name="setPasswordQuality(Landroid/content/ComponentName;I)V"/> + <method name="setPermissionGrantState(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;I)Z" since="23"/> + <method name="setPermissionPolicy(Landroid/content/ComponentName;I)V" since="23"/> + <method name="setPermittedAccessibilityServices(Landroid/content/ComponentName;Ljava/util/List;)Z" since="21"/> + <method name="setPermittedCrossProfileNotificationListeners(Landroid/content/ComponentName;Ljava/util/List;)Z" since="26"/> + <method name="setPermittedInputMethods(Landroid/content/ComponentName;Ljava/util/List;)Z" since="21"/> + <method name="setProfileEnabled(Landroid/content/ComponentName;)V" since="21"/> + <method name="setProfileName(Landroid/content/ComponentName;Ljava/lang/String;)V" since="21"/> + <method name="setRecommendedGlobalProxy(Landroid/content/ComponentName;Landroid/net/ProxyInfo;)V" since="21"/> + <method name="setRequiredStrongAuthTimeout(Landroid/content/ComponentName;J)V" since="26"/> + <method name="setResetPasswordToken(Landroid/content/ComponentName;[B)Z" since="26"/> + <method name="setRestrictionsProvider(Landroid/content/ComponentName;Landroid/content/ComponentName;)V" since="21"/> + <method name="setScreenCaptureDisabled(Landroid/content/ComponentName;Z)V" since="21"/> + <method name="setSecureSetting(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)V" since="21"/> + <method name="setSecurityLoggingEnabled(Landroid/content/ComponentName;Z)V" since="24"/> + <method name="setShortSupportMessage(Landroid/content/ComponentName;Ljava/lang/CharSequence;)V" since="24"/> + <method name="setStatusBarDisabled(Landroid/content/ComponentName;Z)Z" since="23"/> + <method name="setStorageEncryption(Landroid/content/ComponentName;Z)I" since="11"/> + <method name="setSystemUpdatePolicy(Landroid/content/ComponentName;Landroid/app/admin/SystemUpdatePolicy;)V" since="23"/> + <method name="setTrustAgentConfiguration(Landroid/content/ComponentName;Landroid/content/ComponentName;Landroid/os/PersistableBundle;)V" since="23"/> + <method name="setUninstallBlocked(Landroid/content/ComponentName;Ljava/lang/String;Z)V" since="21"/> + <method name="setUserIcon(Landroid/content/ComponentName;Landroid/graphics/Bitmap;)V" since="23"/> + <method name="switchUser(Landroid/content/ComponentName;Landroid/os/UserHandle;)Z" since="21"/> + <method name="uninstallAllUserCaCerts(Landroid/content/ComponentName;)V" since="21"/> + <method name="uninstallCaCert(Landroid/content/ComponentName;[B)V" since="21"/> + <method name="wipeData(I)V"/> + <field name="ACTION_ADD_DEVICE_ADMIN"/> + <field name="ACTION_APPLICATION_DELEGATION_SCOPES_CHANGED" since="26"/> + <field name="ACTION_DEVICE_ADMIN_SERVICE" since="26"/> + <field name="ACTION_DEVICE_OWNER_CHANGED" since="23"/> + <field name="ACTION_MANAGED_PROFILE_PROVISIONED" since="23"/> + <field name="ACTION_PROVISIONING_SUCCESSFUL" since="26"/> + <field name="ACTION_PROVISION_MANAGED_DEVICE" since="23"/> + <field name="ACTION_PROVISION_MANAGED_PROFILE" since="21"/> + <field name="ACTION_SET_NEW_PARENT_PROFILE_PASSWORD" since="24"/> + <field name="ACTION_SET_NEW_PASSWORD"/> + <field name="ACTION_START_ENCRYPTION" since="11"/> + <field name="ACTION_SYSTEM_UPDATE_POLICY_CHANGED" since="23"/> + <field name="DELEGATION_APP_RESTRICTIONS" since="26"/> + <field name="DELEGATION_BLOCK_UNINSTALL" since="26"/> + <field name="DELEGATION_CERT_INSTALL" since="26"/> + <field name="DELEGATION_ENABLE_SYSTEM_APP" since="26"/> + <field name="DELEGATION_PACKAGE_ACCESS" since="26"/> + <field name="DELEGATION_PERMISSION_GRANT" since="26"/> + <field name="ENCRYPTION_STATUS_ACTIVATING" since="11"/> + <field name="ENCRYPTION_STATUS_ACTIVE" since="11"/> + <field name="ENCRYPTION_STATUS_ACTIVE_DEFAULT_KEY" since="23"/> + <field name="ENCRYPTION_STATUS_ACTIVE_PER_USER" since="24"/> + <field name="ENCRYPTION_STATUS_INACTIVE" since="11"/> + <field name="ENCRYPTION_STATUS_UNSUPPORTED" since="11"/> + <field name="EXTRA_ADD_EXPLANATION"/> + <field name="EXTRA_DELEGATION_SCOPES" since="26"/> + <field name="EXTRA_DEVICE_ADMIN"/> + <field name="EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE" since="22"/> + <field name="EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE" since="21"/> + <field name="EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME" since="23"/> + <field name="EXTRA_PROVISIONING_DEVICE_ADMIN_MINIMUM_VERSION_CODE" since="23"/> + <field name="EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM" since="21"/> + <field name="EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER" since="21"/> + <field name="EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION" since="21"/> + <field name="EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME" since="21" deprecated="23"/> + <field name="EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM" since="23"/> + <field name="EXTRA_PROVISIONING_DISCLAIMERS" since="26"/> + <field name="EXTRA_PROVISIONING_DISCLAIMER_CONTENT" since="26"/> + <field name="EXTRA_PROVISIONING_DISCLAIMER_HEADER" since="26"/> + <field name="EXTRA_PROVISIONING_EMAIL_ADDRESS" since="21" deprecated="26"/> + <field name="EXTRA_PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION" since="26"/> + <field name="EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED" since="22"/> + <field name="EXTRA_PROVISIONING_LOCALE" since="21"/> + <field name="EXTRA_PROVISIONING_LOCAL_TIME" since="21"/> + <field name="EXTRA_PROVISIONING_LOGO_URI" since="24"/> + <field name="EXTRA_PROVISIONING_MAIN_COLOR" since="24"/> + <field name="EXTRA_PROVISIONING_SKIP_ENCRYPTION" since="23"/> + <field name="EXTRA_PROVISIONING_SKIP_USER_CONSENT" since="26"/> + <field name="EXTRA_PROVISIONING_TIME_ZONE" since="21"/> + <field name="EXTRA_PROVISIONING_WIFI_HIDDEN" since="21"/> + <field name="EXTRA_PROVISIONING_WIFI_PAC_URL" since="21"/> + <field name="EXTRA_PROVISIONING_WIFI_PASSWORD" since="21"/> + <field name="EXTRA_PROVISIONING_WIFI_PROXY_BYPASS" since="21"/> + <field name="EXTRA_PROVISIONING_WIFI_PROXY_HOST" since="21"/> + <field name="EXTRA_PROVISIONING_WIFI_PROXY_PORT" since="21"/> + <field name="EXTRA_PROVISIONING_WIFI_SECURITY_TYPE" since="21"/> + <field name="EXTRA_PROVISIONING_WIFI_SSID" since="21"/> + <field name="FLAG_EVICT_CREDENTIAL_ENCRYPTION_KEY" since="26"/> + <field name="FLAG_MANAGED_CAN_ACCESS_PARENT" since="21"/> + <field name="FLAG_PARENT_CAN_ACCESS_MANAGED" since="21"/> + <field name="KEYGUARD_DISABLE_FEATURES_ALL" since="17"/> + <field name="KEYGUARD_DISABLE_FEATURES_NONE" since="17"/> + <field name="KEYGUARD_DISABLE_FINGERPRINT" since="21"/> + <field name="KEYGUARD_DISABLE_REMOTE_INPUT" since="24"/> + <field name="KEYGUARD_DISABLE_SECURE_CAMERA" since="17"/> + <field name="KEYGUARD_DISABLE_SECURE_NOTIFICATIONS" since="21"/> + <field name="KEYGUARD_DISABLE_TRUST_AGENTS" since="21"/> + <field name="KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS" since="21"/> + <field name="KEYGUARD_DISABLE_WIDGETS_ALL" since="17"/> + <field name="MIME_TYPE_PROVISIONING_NFC" since="21"/> + <field name="PASSWORD_QUALITY_ALPHABETIC"/> + <field name="PASSWORD_QUALITY_ALPHANUMERIC"/> + <field name="PASSWORD_QUALITY_BIOMETRIC_WEAK" since="14"/> + <field name="PASSWORD_QUALITY_COMPLEX" since="11"/> + <field name="PASSWORD_QUALITY_NUMERIC"/> + <field name="PASSWORD_QUALITY_NUMERIC_COMPLEX" since="21"/> + <field name="PASSWORD_QUALITY_SOMETHING"/> + <field name="PASSWORD_QUALITY_UNSPECIFIED"/> + <field name="PERMISSION_GRANT_STATE_DEFAULT" since="23"/> + <field name="PERMISSION_GRANT_STATE_DENIED" since="23"/> + <field name="PERMISSION_GRANT_STATE_GRANTED" since="23"/> + <field name="PERMISSION_POLICY_AUTO_DENY" since="23"/> + <field name="PERMISSION_POLICY_AUTO_GRANT" since="23"/> + <field name="PERMISSION_POLICY_PROMPT" since="23"/> + <field name="POLICY_DISABLE_CAMERA" since="26"/> + <field name="POLICY_DISABLE_SCREEN_CAPTURE" since="26"/> + <field name="RESET_PASSWORD_DO_NOT_ASK_CREDENTIALS_ON_BOOT" since="23"/> + <field name="RESET_PASSWORD_REQUIRE_ENTRY"/> + <field name="SKIP_SETUP_WIZARD" since="24"/> + <field name="WIPE_EXTERNAL_STORAGE" since="9"/> + <field name="WIPE_RESET_PROTECTION_DATA" since="22"/> + </class> + <class name="android/app/admin/DnsEvent" since="26"> + <extends name="android/app/admin/NetworkEvent"/> + <method name="<init>()V"/> + <method name="getHostname()Ljava/lang/String;"/> + <method name="getInetAddresses()Ljava/util/List;"/> + <method name="getTotalResolvedAddressCount()I"/> + <field name="CREATOR"/> + </class> + <class name="android/app/admin/NetworkEvent" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getPackageName()Ljava/lang/String;"/> + <method name="getTimestamp()J"/> + <field name="CREATOR"/> + </class> + <class name="android/app/admin/SecurityLog" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="TAG_ADB_SHELL_CMD"/> + <field name="TAG_ADB_SHELL_INTERACTIVE"/> + <field name="TAG_APP_PROCESS_START"/> + <field name="TAG_KEYGUARD_DISMISSED"/> + <field name="TAG_KEYGUARD_DISMISS_AUTH_ATTEMPT"/> + <field name="TAG_KEYGUARD_SECURED"/> + <field name="TAG_SYNC_RECV_FILE"/> + <field name="TAG_SYNC_SEND_FILE"/> + </class> + <class name="android/app/admin/SecurityLog$SecurityEvent" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getData()Ljava/lang/Object;"/> + <method name="getTag()I"/> + <method name="getTimeNanos()J"/> + <field name="CREATOR"/> + </class> + <class name="android/app/admin/SystemUpdateInfo" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getReceivedTime()J"/> + <method name="getSecurityPatchState()I"/> + <field name="CREATOR"/> + <field name="SECURITY_PATCH_STATE_FALSE"/> + <field name="SECURITY_PATCH_STATE_TRUE"/> + <field name="SECURITY_PATCH_STATE_UNKNOWN"/> + </class> + <class name="android/app/admin/SystemUpdatePolicy" since="23"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="createAutomaticInstallPolicy()Landroid/app/admin/SystemUpdatePolicy;"/> + <method name="createPostponeInstallPolicy()Landroid/app/admin/SystemUpdatePolicy;"/> + <method name="createWindowedInstallPolicy(II)Landroid/app/admin/SystemUpdatePolicy;"/> + <method name="getInstallWindowEnd()I"/> + <method name="getInstallWindowStart()I"/> + <method name="getPolicyType()I"/> + <field name="CREATOR"/> + <field name="TYPE_INSTALL_AUTOMATIC"/> + <field name="TYPE_INSTALL_WINDOWED"/> + <field name="TYPE_POSTPONE"/> + </class> + <class name="android/app/assist/AssistContent" since="23"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getClipData()Landroid/content/ClipData;"/> + <method name="getExtras()Landroid/os/Bundle;"/> + <method name="getIntent()Landroid/content/Intent;"/> + <method name="getStructuredData()Ljava/lang/String;"/> + <method name="getWebUri()Landroid/net/Uri;"/> + <method name="isAppProvidedIntent()Z"/> + <method name="isAppProvidedWebUri()Z" since="24"/> + <method name="setClipData(Landroid/content/ClipData;)V"/> + <method name="setIntent(Landroid/content/Intent;)V"/> + <method name="setStructuredData(Ljava/lang/String;)V"/> + <method name="setWebUri(Landroid/net/Uri;)V"/> + <field name="CREATOR"/> + </class> + <class name="android/app/assist/AssistStructure" since="23"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getAcquisitionEndTime()J" since="26"/> + <method name="getAcquisitionStartTime()J" since="26"/> + <method name="getActivityComponent()Landroid/content/ComponentName;"/> + <method name="getWindowNodeAt(I)Landroid/app/assist/AssistStructure$WindowNode;"/> + <method name="getWindowNodeCount()I"/> + <method name="isHomeActivity()Z" since="26"/> + <field name="CREATOR"/> + </class> + <class name="android/app/assist/AssistStructure$ViewNode" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAlpha()F"/> + <method name="getAutofillHints()[Ljava/lang/String;" since="26"/> + <method name="getAutofillId()Landroid/view/autofill/AutofillId;" since="26"/> + <method name="getAutofillOptions()[Ljava/lang/CharSequence;" since="26"/> + <method name="getAutofillType()I" since="26"/> + <method name="getAutofillValue()Landroid/view/autofill/AutofillValue;" since="26"/> + <method name="getChildAt(I)Landroid/app/assist/AssistStructure$ViewNode;"/> + <method name="getChildCount()I"/> + <method name="getClassName()Ljava/lang/String;"/> + <method name="getContentDescription()Ljava/lang/CharSequence;"/> + <method name="getElevation()F"/> + <method name="getExtras()Landroid/os/Bundle;"/> + <method name="getHeight()I"/> + <method name="getHint()Ljava/lang/String;"/> + <method name="getHtmlInfo()Landroid/view/ViewStructure$HtmlInfo;" since="26"/> + <method name="getId()I"/> + <method name="getIdEntry()Ljava/lang/String;"/> + <method name="getIdPackage()Ljava/lang/String;"/> + <method name="getIdType()Ljava/lang/String;"/> + <method name="getInputType()I" since="26"/> + <method name="getLeft()I"/> + <method name="getLocaleList()Landroid/os/LocaleList;" since="26"/> + <method name="getScrollX()I"/> + <method name="getScrollY()I"/> + <method name="getText()Ljava/lang/CharSequence;"/> + <method name="getTextBackgroundColor()I"/> + <method name="getTextColor()I"/> + <method name="getTextLineBaselines()[I"/> + <method name="getTextLineCharOffsets()[I"/> + <method name="getTextSelectionEnd()I"/> + <method name="getTextSelectionStart()I"/> + <method name="getTextSize()F"/> + <method name="getTextStyle()I"/> + <method name="getTop()I"/> + <method name="getTransformation()Landroid/graphics/Matrix;"/> + <method name="getVisibility()I"/> + <method name="getWebDomain()Ljava/lang/String;" since="26"/> + <method name="getWidth()I"/> + <method name="isAccessibilityFocused()Z"/> + <method name="isActivated()Z"/> + <method name="isAssistBlocked()Z"/> + <method name="isCheckable()Z"/> + <method name="isChecked()Z"/> + <method name="isClickable()Z"/> + <method name="isContextClickable()Z"/> + <method name="isEnabled()Z"/> + <method name="isFocusable()Z"/> + <method name="isFocused()Z"/> + <method name="isLongClickable()Z"/> + <method name="isOpaque()Z" since="26"/> + <method name="isSelected()Z"/> + <field name="TEXT_COLOR_UNDEFINED"/> + <field name="TEXT_STYLE_BOLD"/> + <field name="TEXT_STYLE_ITALIC"/> + <field name="TEXT_STYLE_STRIKE_THRU"/> + <field name="TEXT_STYLE_UNDERLINE"/> + </class> + <class name="android/app/assist/AssistStructure$WindowNode" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getDisplayId()I"/> + <method name="getHeight()I"/> + <method name="getLeft()I"/> + <method name="getRootViewNode()Landroid/app/assist/AssistStructure$ViewNode;"/> + <method name="getTitle()Ljava/lang/CharSequence;"/> + <method name="getTop()I"/> + <method name="getWidth()I"/> + </class> + <class name="android/app/backup/BackupAgent" since="8"> + <extends name="android/content/ContextWrapper"/> + <method name="<init>()V"/> + <method name="fullBackupFile(Ljava/io/File;Landroid/app/backup/FullBackupDataOutput;)V" since="14"/> + <method name="onBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;)V"/> + <method name="onCreate()V"/> + <method name="onDestroy()V"/> + <method name="onFullBackup(Landroid/app/backup/FullBackupDataOutput;)V" since="14"/> + <method name="onQuotaExceeded(JJ)V" since="24"/> + <method name="onRestore(Landroid/app/backup/BackupDataInput;ILandroid/os/ParcelFileDescriptor;)V"/> + <method name="onRestoreFile(Landroid/os/ParcelFileDescriptor;JLjava/io/File;IJJ)V" since="14"/> + <method name="onRestoreFinished()V" since="21"/> + <field name="TYPE_DIRECTORY" since="14"/> + <field name="TYPE_FILE" since="14"/> + </class> + <class name="android/app/backup/BackupAgentHelper" since="8"> + <extends name="android/app/backup/BackupAgent"/> + <method name="<init>()V"/> + <method name="addHelper(Ljava/lang/String;Landroid/app/backup/BackupHelper;)V"/> + </class> + <class name="android/app/backup/BackupDataInput" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getDataSize()I"/> + <method name="getKey()Ljava/lang/String;"/> + <method name="readEntityData([BII)I"/> + <method name="readNextHeader()Z"/> + <method name="skipEntityData()V"/> + </class> + <class name="android/app/backup/BackupDataInputStream" since="8"> + <extends name="java/io/InputStream"/> + <method name="<init>()V"/> + <method name="getKey()Ljava/lang/String;"/> + <method name="size()I"/> + </class> + <class name="android/app/backup/BackupDataOutput" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getQuota()J" since="26"/> + <method name="writeEntityData([BI)I"/> + <method name="writeEntityHeader(Ljava/lang/String;I)I"/> + </class> + <class name="android/app/backup/BackupHelper" since="8"> + <extends name="java/lang/Object"/> + <method name="performBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;)V"/> + <method name="restoreEntity(Landroid/app/backup/BackupDataInputStream;)V"/> + <method name="writeNewStateDescription(Landroid/os/ParcelFileDescriptor;)V"/> + </class> + <class name="android/app/backup/BackupManager" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="dataChanged()V"/> + <method name="dataChanged(Ljava/lang/String;)V"/> + <method name="requestRestore(Landroid/app/backup/RestoreObserver;)I"/> + </class> + <class name="android/app/backup/FileBackupHelper" since="8"> + <extends name="android/app/backup/FileBackupHelperBase"/> + <implements name="android/app/backup/BackupHelper"/> + <method name="<init>(Landroid/content/Context;[Ljava/lang/String;)V"/> + </class> + <class name="android/app/backup/FileBackupHelperBase" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="writeNewStateDescription(Landroid/os/ParcelFileDescriptor;)V"/> + </class> + <class name="android/app/backup/FullBackupDataOutput" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getQuota()J" since="26"/> + </class> + <class name="android/app/backup/RestoreObserver" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onUpdate(ILjava/lang/String;)V"/> + <method name="restoreFinished(I)V"/> + <method name="restoreStarting(I)V"/> + </class> + <class name="android/app/backup/SharedPreferencesBackupHelper" since="8"> + <extends name="android/app/backup/FileBackupHelperBase"/> + <implements name="android/app/backup/BackupHelper"/> + <method name="<init>(Landroid/content/Context;[Ljava/lang/String;)V"/> + </class> + <class name="android/app/job/JobInfo" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getBackoffPolicy()I"/> + <method name="getClipData()Landroid/content/ClipData;" since="26"/> + <method name="getClipGrantFlags()I" since="26"/> + <method name="getExtras()Landroid/os/PersistableBundle;"/> + <method name="getFlexMillis()J" since="24"/> + <method name="getId()I"/> + <method name="getInitialBackoffMillis()J"/> + <method name="getIntervalMillis()J"/> + <method name="getMaxExecutionDelayMillis()J"/> + <method name="getMinFlexMillis()J" since="24"/> + <method name="getMinLatencyMillis()J"/> + <method name="getMinPeriodMillis()J" since="24"/> + <method name="getNetworkType()I"/> + <method name="getService()Landroid/content/ComponentName;"/> + <method name="getTransientExtras()Landroid/os/Bundle;" since="26"/> + <method name="getTriggerContentMaxDelay()J" since="24"/> + <method name="getTriggerContentUpdateDelay()J" since="24"/> + <method name="getTriggerContentUris()[Landroid/app/job/JobInfo$TriggerContentUri;" since="24"/> + <method name="isPeriodic()Z"/> + <method name="isPersisted()Z"/> + <method name="isRequireBatteryNotLow()Z" since="26"/> + <method name="isRequireCharging()Z"/> + <method name="isRequireDeviceIdle()Z"/> + <method name="isRequireStorageNotLow()Z" since="26"/> + <field name="BACKOFF_POLICY_EXPONENTIAL"/> + <field name="BACKOFF_POLICY_LINEAR"/> + <field name="CREATOR"/> + <field name="DEFAULT_INITIAL_BACKOFF_MILLIS"/> + <field name="MAX_BACKOFF_DELAY_MILLIS"/> + <field name="NETWORK_TYPE_ANY"/> + <field name="NETWORK_TYPE_METERED" since="26"/> + <field name="NETWORK_TYPE_NONE"/> + <field name="NETWORK_TYPE_NOT_ROAMING" since="24"/> + <field name="NETWORK_TYPE_UNMETERED"/> + </class> + <class name="android/app/job/JobInfo$Builder" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(ILandroid/content/ComponentName;)V"/> + <method name="addTriggerContentUri(Landroid/app/job/JobInfo$TriggerContentUri;)Landroid/app/job/JobInfo$Builder;" since="24"/> + <method name="build()Landroid/app/job/JobInfo;"/> + <method name="setBackoffCriteria(JI)Landroid/app/job/JobInfo$Builder;"/> + <method name="setClipData(Landroid/content/ClipData;I)Landroid/app/job/JobInfo$Builder;" since="26"/> + <method name="setExtras(Landroid/os/PersistableBundle;)Landroid/app/job/JobInfo$Builder;"/> + <method name="setMinimumLatency(J)Landroid/app/job/JobInfo$Builder;"/> + <method name="setOverrideDeadline(J)Landroid/app/job/JobInfo$Builder;"/> + <method name="setPeriodic(J)Landroid/app/job/JobInfo$Builder;"/> + <method name="setPeriodic(JJ)Landroid/app/job/JobInfo$Builder;" since="24"/> + <method name="setPersisted(Z)Landroid/app/job/JobInfo$Builder;"/> + <method name="setRequiredNetworkType(I)Landroid/app/job/JobInfo$Builder;"/> + <method name="setRequiresBatteryNotLow(Z)Landroid/app/job/JobInfo$Builder;" since="26"/> + <method name="setRequiresCharging(Z)Landroid/app/job/JobInfo$Builder;"/> + <method name="setRequiresDeviceIdle(Z)Landroid/app/job/JobInfo$Builder;"/> + <method name="setRequiresStorageNotLow(Z)Landroid/app/job/JobInfo$Builder;" since="26"/> + <method name="setTransientExtras(Landroid/os/Bundle;)Landroid/app/job/JobInfo$Builder;" since="26"/> + <method name="setTriggerContentMaxDelay(J)Landroid/app/job/JobInfo$Builder;" since="24"/> + <method name="setTriggerContentUpdateDelay(J)Landroid/app/job/JobInfo$Builder;" since="24"/> + </class> + <class name="android/app/job/JobInfo$TriggerContentUri" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/net/Uri;I)V"/> + <method name="getFlags()I"/> + <method name="getUri()Landroid/net/Uri;"/> + <field name="CREATOR"/> + <field name="FLAG_NOTIFY_FOR_DESCENDANTS"/> + </class> + <class name="android/app/job/JobParameters" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="completeWork(Landroid/app/job/JobWorkItem;)V" since="26"/> + <method name="dequeueWork()Landroid/app/job/JobWorkItem;" since="26"/> + <method name="getClipData()Landroid/content/ClipData;" since="26"/> + <method name="getClipGrantFlags()I" since="26"/> + <method name="getExtras()Landroid/os/PersistableBundle;"/> + <method name="getJobId()I"/> + <method name="getTransientExtras()Landroid/os/Bundle;" since="26"/> + <method name="getTriggeredContentAuthorities()[Ljava/lang/String;" since="24"/> + <method name="getTriggeredContentUris()[Landroid/net/Uri;" since="24"/> + <method name="isOverrideDeadlineExpired()Z"/> + <field name="CREATOR"/> + </class> + <class name="android/app/job/JobScheduler" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="cancel(I)V"/> + <method name="cancelAll()V"/> + <method name="enqueue(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;)I" since="26"/> + <method name="getAllPendingJobs()Ljava/util/List;"/> + <method name="getPendingJob(I)Landroid/app/job/JobInfo;" since="24"/> + <method name="schedule(Landroid/app/job/JobInfo;)I"/> + <field name="RESULT_FAILURE"/> + <field name="RESULT_SUCCESS"/> + </class> + <class name="android/app/job/JobService" since="21"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="jobFinished(Landroid/app/job/JobParameters;Z)V"/> + <method name="onStartJob(Landroid/app/job/JobParameters;)Z"/> + <method name="onStopJob(Landroid/app/job/JobParameters;)Z"/> + <field name="PERMISSION_BIND"/> + </class> + <class name="android/app/job/JobServiceEngine" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/app/Service;)V"/> + <method name="getBinder()Landroid/os/IBinder;"/> + <method name="jobFinished(Landroid/app/job/JobParameters;Z)V"/> + <method name="onStartJob(Landroid/app/job/JobParameters;)Z"/> + <method name="onStopJob(Landroid/app/job/JobParameters;)Z"/> + </class> + <class name="android/app/job/JobWorkItem" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/content/Intent;)V"/> + <method name="getDeliveryCount()I"/> + <method name="getIntent()Landroid/content/Intent;"/> + <field name="CREATOR"/> + </class> + <class name="android/app/usage/ConfigurationStats" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/app/usage/ConfigurationStats;)V"/> + <method name="getActivationCount()I"/> + <method name="getConfiguration()Landroid/content/res/Configuration;"/> + <method name="getFirstTimeStamp()J"/> + <method name="getLastTimeActive()J"/> + <method name="getLastTimeStamp()J"/> + <method name="getTotalTimeActive()J"/> + <field name="CREATOR"/> + </class> + <class name="android/app/usage/ExternalStorageStats" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getAppBytes()J"/> + <method name="getAudioBytes()J"/> + <method name="getImageBytes()J"/> + <method name="getTotalBytes()J"/> + <method name="getVideoBytes()J"/> + <field name="CREATOR"/> + </class> + <class name="android/app/usage/NetworkStats" since="23"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable"/> + <method name="<init>()V"/> + <method name="getNextBucket(Landroid/app/usage/NetworkStats$Bucket;)Z"/> + <method name="hasNextBucket()Z"/> + </class> + <class name="android/app/usage/NetworkStats$Bucket" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getEndTimeStamp()J"/> + <method name="getMetered()I" since="26"/> + <method name="getRoaming()I" since="24"/> + <method name="getRxBytes()J"/> + <method name="getRxPackets()J"/> + <method name="getStartTimeStamp()J"/> + <method name="getState()I"/> + <method name="getTag()I" since="24"/> + <method name="getTxBytes()J"/> + <method name="getTxPackets()J"/> + <method name="getUid()I"/> + <field name="METERED_ALL" since="26"/> + <field name="METERED_NO" since="26"/> + <field name="METERED_YES" since="26"/> + <field name="ROAMING_ALL" since="24"/> + <field name="ROAMING_NO" since="24"/> + <field name="ROAMING_YES" since="24"/> + <field name="STATE_ALL"/> + <field name="STATE_DEFAULT"/> + <field name="STATE_FOREGROUND"/> + <field name="TAG_NONE" since="24"/> + <field name="UID_ALL"/> + <field name="UID_REMOVED"/> + <field name="UID_TETHERING"/> + </class> + <class name="android/app/usage/NetworkStatsManager" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="queryDetails(ILjava/lang/String;JJ)Landroid/app/usage/NetworkStats;"/> + <method name="queryDetailsForUid(ILjava/lang/String;JJI)Landroid/app/usage/NetworkStats;"/> + <method name="queryDetailsForUidTag(ILjava/lang/String;JJII)Landroid/app/usage/NetworkStats;" since="24"/> + <method name="querySummary(ILjava/lang/String;JJ)Landroid/app/usage/NetworkStats;"/> + <method name="querySummaryForDevice(ILjava/lang/String;JJ)Landroid/app/usage/NetworkStats$Bucket;"/> + <method name="querySummaryForUser(ILjava/lang/String;JJ)Landroid/app/usage/NetworkStats$Bucket;"/> + <method name="registerUsageCallback(ILjava/lang/String;JLandroid/app/usage/NetworkStatsManager$UsageCallback;)V" since="24"/> + <method name="registerUsageCallback(ILjava/lang/String;JLandroid/app/usage/NetworkStatsManager$UsageCallback;Landroid/os/Handler;)V" since="24"/> + <method name="unregisterUsageCallback(Landroid/app/usage/NetworkStatsManager$UsageCallback;)V" since="24"/> + </class> + <class name="android/app/usage/NetworkStatsManager$UsageCallback" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onThresholdReached(ILjava/lang/String;)V"/> + </class> + <class name="android/app/usage/StorageStats" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getAppBytes()J"/> + <method name="getCacheBytes()J"/> + <method name="getDataBytes()J"/> + <field name="CREATOR"/> + </class> + <class name="android/app/usage/StorageStatsManager" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getFreeBytes(Ljava/util/UUID;)J"/> + <method name="getTotalBytes(Ljava/util/UUID;)J"/> + <method name="queryExternalStatsForUser(Ljava/util/UUID;Landroid/os/UserHandle;)Landroid/app/usage/ExternalStorageStats;"/> + <method name="queryStatsForPackage(Ljava/util/UUID;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/app/usage/StorageStats;"/> + <method name="queryStatsForUid(Ljava/util/UUID;I)Landroid/app/usage/StorageStats;"/> + <method name="queryStatsForUser(Ljava/util/UUID;Landroid/os/UserHandle;)Landroid/app/usage/StorageStats;"/> + </class> + <class name="android/app/usage/UsageEvents" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getNextEvent(Landroid/app/usage/UsageEvents$Event;)Z"/> + <method name="hasNextEvent()Z"/> + <field name="CREATOR"/> + </class> + <class name="android/app/usage/UsageEvents$Event" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getClassName()Ljava/lang/String;"/> + <method name="getConfiguration()Landroid/content/res/Configuration;"/> + <method name="getEventType()I"/> + <method name="getPackageName()Ljava/lang/String;"/> + <method name="getShortcutId()Ljava/lang/String;" since="25"/> + <method name="getTimeStamp()J"/> + <field name="CONFIGURATION_CHANGE"/> + <field name="MOVE_TO_BACKGROUND"/> + <field name="MOVE_TO_FOREGROUND"/> + <field name="NONE"/> + <field name="SHORTCUT_INVOCATION" since="25"/> + <field name="USER_INTERACTION" since="23"/> + </class> + <class name="android/app/usage/UsageStats" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/app/usage/UsageStats;)V"/> + <method name="add(Landroid/app/usage/UsageStats;)V"/> + <method name="getFirstTimeStamp()J"/> + <method name="getLastTimeStamp()J"/> + <method name="getLastTimeUsed()J"/> + <method name="getPackageName()Ljava/lang/String;"/> + <method name="getTotalTimeInForeground()J"/> + <field name="CREATOR"/> + </class> + <class name="android/app/usage/UsageStatsManager" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="isAppInactive(Ljava/lang/String;)Z" since="23"/> + <method name="queryAndAggregateUsageStats(JJ)Ljava/util/Map;"/> + <method name="queryConfigurations(IJJ)Ljava/util/List;"/> + <method name="queryEvents(JJ)Landroid/app/usage/UsageEvents;"/> + <method name="queryUsageStats(IJJ)Ljava/util/List;"/> + <field name="INTERVAL_BEST"/> + <field name="INTERVAL_DAILY"/> + <field name="INTERVAL_MONTHLY"/> + <field name="INTERVAL_WEEKLY"/> + <field name="INTERVAL_YEARLY"/> + </class> + <class name="android/appwidget/AppWidgetHost" since="3"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;I)V"/> + <method name="allocateAppWidgetId()I"/> + <method name="clearViews()V" since="11"/> + <method name="createView(Landroid/content/Context;ILandroid/appwidget/AppWidgetProviderInfo;)Landroid/appwidget/AppWidgetHostView;"/> + <method name="deleteAllHosts()V"/> + <method name="deleteAppWidgetId(I)V"/> + <method name="deleteHost()V"/> + <method name="getAppWidgetIds()[I" since="26"/> + <method name="onCreateView(Landroid/content/Context;ILandroid/appwidget/AppWidgetProviderInfo;)Landroid/appwidget/AppWidgetHostView;"/> + <method name="onProviderChanged(ILandroid/appwidget/AppWidgetProviderInfo;)V"/> + <method name="onProvidersChanged()V" since="17"/> + <method name="startAppWidgetConfigureActivityForResult(Landroid/app/Activity;IIILandroid/os/Bundle;)V" since="21"/> + <method name="startListening()V"/> + <method name="stopListening()V"/> + </class> + <class name="android/appwidget/AppWidgetHostView" since="3"> + <extends name="android/widget/FrameLayout"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;II)V"/> + <method name="getAppWidgetId()I"/> + <method name="getAppWidgetInfo()Landroid/appwidget/AppWidgetProviderInfo;"/> + <method name="getDefaultPaddingForWidget(Landroid/content/Context;Landroid/content/ComponentName;Landroid/graphics/Rect;)Landroid/graphics/Rect;" since="15"/> + <method name="getDefaultView()Landroid/view/View;"/> + <method name="getErrorView()Landroid/view/View;"/> + <method name="prepareView(Landroid/view/View;)V"/> + <method name="setAppWidget(ILandroid/appwidget/AppWidgetProviderInfo;)V"/> + <method name="setExecutor(Ljava/util/concurrent/Executor;)V" since="26"/> + <method name="updateAppWidget(Landroid/widget/RemoteViews;)V"/> + <method name="updateAppWidgetOptions(Landroid/os/Bundle;)V" since="16"/> + <method name="updateAppWidgetSize(Landroid/os/Bundle;IIII)V" since="16"/> + </class> + <class name="android/appwidget/AppWidgetManager" since="3"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="bindAppWidgetId(ILandroid/content/ComponentName;)V" removed="16"/> + <method name="bindAppWidgetIdIfAllowed(ILandroid/content/ComponentName;)Z" since="16"/> + <method name="bindAppWidgetIdIfAllowed(ILandroid/content/ComponentName;Landroid/os/Bundle;)Z" since="17"/> + <method name="bindAppWidgetIdIfAllowed(ILandroid/os/UserHandle;Landroid/content/ComponentName;Landroid/os/Bundle;)Z" since="21"/> + <method name="getAppWidgetIds(Landroid/content/ComponentName;)[I"/> + <method name="getAppWidgetInfo(I)Landroid/appwidget/AppWidgetProviderInfo;"/> + <method name="getAppWidgetOptions(I)Landroid/os/Bundle;" since="16"/> + <method name="getInstalledProviders()Ljava/util/List;"/> + <method name="getInstalledProvidersForPackage(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List;" since="26"/> + <method name="getInstalledProvidersForProfile(Landroid/os/UserHandle;)Ljava/util/List;" since="21"/> + <method name="getInstance(Landroid/content/Context;)Landroid/appwidget/AppWidgetManager;"/> + <method name="isRequestPinAppWidgetSupported()Z" since="26"/> + <method name="notifyAppWidgetViewDataChanged(II)V" since="11"/> + <method name="notifyAppWidgetViewDataChanged([II)V" since="11"/> + <method name="partiallyUpdateAppWidget(ILandroid/widget/RemoteViews;)V" since="11"/> + <method name="partiallyUpdateAppWidget([ILandroid/widget/RemoteViews;)V" since="11"/> + <method name="requestPinAppWidget(Landroid/content/ComponentName;Landroid/os/Bundle;Landroid/app/PendingIntent;)Z" since="26"/> + <method name="updateAppWidget(ILandroid/widget/RemoteViews;)V"/> + <method name="updateAppWidget(Landroid/content/ComponentName;Landroid/widget/RemoteViews;)V"/> + <method name="updateAppWidget([ILandroid/widget/RemoteViews;)V"/> + <method name="updateAppWidgetOptions(ILandroid/os/Bundle;)V" since="16"/> + <field name="ACTION_APPWIDGET_BIND" since="16"/> + <field name="ACTION_APPWIDGET_CONFIGURE"/> + <field name="ACTION_APPWIDGET_DELETED"/> + <field name="ACTION_APPWIDGET_DISABLED"/> + <field name="ACTION_APPWIDGET_ENABLED"/> + <field name="ACTION_APPWIDGET_HOST_RESTORED" since="21"/> + <field name="ACTION_APPWIDGET_OPTIONS_CHANGED" since="16"/> + <field name="ACTION_APPWIDGET_PICK"/> + <field name="ACTION_APPWIDGET_RESTORED" since="21"/> + <field name="ACTION_APPWIDGET_UPDATE"/> + <field name="EXTRA_APPWIDGET_ID"/> + <field name="EXTRA_APPWIDGET_IDS"/> + <field name="EXTRA_APPWIDGET_OLD_IDS" since="21"/> + <field name="EXTRA_APPWIDGET_OPTIONS" since="16"/> + <field name="EXTRA_APPWIDGET_PREVIEW" since="26"/> + <field name="EXTRA_APPWIDGET_PROVIDER" since="16"/> + <field name="EXTRA_APPWIDGET_PROVIDER_PROFILE" since="21"/> + <field name="EXTRA_CUSTOM_EXTRAS"/> + <field name="EXTRA_CUSTOM_INFO"/> + <field name="EXTRA_HOST_ID" since="21"/> + <field name="INVALID_APPWIDGET_ID"/> + <field name="META_DATA_APPWIDGET_PROVIDER"/> + <field name="OPTION_APPWIDGET_HOST_CATEGORY" since="17"/> + <field name="OPTION_APPWIDGET_MAX_HEIGHT" since="16"/> + <field name="OPTION_APPWIDGET_MAX_WIDTH" since="16"/> + <field name="OPTION_APPWIDGET_MIN_HEIGHT" since="16"/> + <field name="OPTION_APPWIDGET_MIN_WIDTH" since="16"/> + </class> + <class name="android/appwidget/AppWidgetProvider" since="3"> + <extends name="android/content/BroadcastReceiver"/> + <method name="<init>()V"/> + <method name="onAppWidgetOptionsChanged(Landroid/content/Context;Landroid/appwidget/AppWidgetManager;ILandroid/os/Bundle;)V" since="16"/> + <method name="onDeleted(Landroid/content/Context;[I)V"/> + <method name="onDisabled(Landroid/content/Context;)V"/> + <method name="onEnabled(Landroid/content/Context;)V"/> + <method name="onRestored(Landroid/content/Context;[I[I)V" since="21"/> + <method name="onUpdate(Landroid/content/Context;Landroid/appwidget/AppWidgetManager;[I)V"/> + </class> + <class name="android/appwidget/AppWidgetProviderInfo" since="3"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="clone()Landroid/appwidget/AppWidgetProviderInfo;" since="17"/> + <method name="getProfile()Landroid/os/UserHandle;" since="21"/> + <method name="loadIcon(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable;" since="21"/> + <method name="loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/String;" since="21"/> + <method name="loadPreviewImage(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable;" since="21"/> + <field name="CREATOR"/> + <field name="RESIZE_BOTH" since="12"/> + <field name="RESIZE_HORIZONTAL" since="12"/> + <field name="RESIZE_NONE" since="12"/> + <field name="RESIZE_VERTICAL" since="12"/> + <field name="WIDGET_CATEGORY_HOME_SCREEN" since="17"/> + <field name="WIDGET_CATEGORY_KEYGUARD" since="17"/> + <field name="WIDGET_CATEGORY_SEARCHBOX" since="21"/> + <field name="autoAdvanceViewId" since="11"/> + <field name="configure"/> + <field name="icon"/> + <field name="initialKeyguardLayout" since="17"/> + <field name="initialLayout"/> + <field name="label" deprecated="21"/> + <field name="minHeight"/> + <field name="minResizeHeight" since="14"/> + <field name="minResizeWidth" since="14"/> + <field name="minWidth"/> + <field name="previewImage" since="11"/> + <field name="provider"/> + <field name="resizeMode" since="12"/> + <field name="updatePeriodMillis"/> + <field name="widgetCategory" since="17"/> + </class> + <class name="android/bluetooth/BluetoothA2dp" since="11"> + <extends name="java/lang/Object"/> + <implements name="android/bluetooth/BluetoothProfile"/> + <method name="<init>()V"/> + <method name="isA2dpPlaying(Landroid/bluetooth/BluetoothDevice;)Z"/> + <field name="ACTION_CONNECTION_STATE_CHANGED"/> + <field name="ACTION_PLAYING_STATE_CHANGED"/> + <field name="STATE_NOT_PLAYING"/> + <field name="STATE_PLAYING"/> + </class> + <class name="android/bluetooth/BluetoothAdapter" since="5"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="cancelDiscovery()Z"/> + <method name="checkBluetoothAddress(Ljava/lang/String;)Z"/> + <method name="closeProfileProxy(ILandroid/bluetooth/BluetoothProfile;)V" since="11"/> + <method name="disable()Z"/> + <method name="enable()Z"/> + <method name="getAddress()Ljava/lang/String;"/> + <method name="getBluetoothLeAdvertiser()Landroid/bluetooth/le/BluetoothLeAdvertiser;" since="21"/> + <method name="getBluetoothLeScanner()Landroid/bluetooth/le/BluetoothLeScanner;" since="21"/> + <method name="getBondedDevices()Ljava/util/Set;"/> + <method name="getDefaultAdapter()Landroid/bluetooth/BluetoothAdapter;"/> + <method name="getLeMaximumAdvertisingDataLength()I" since="26"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getProfileConnectionState(I)I" since="14"/> + <method name="getProfileProxy(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;I)Z" since="11"/> + <method name="getRemoteDevice(Ljava/lang/String;)Landroid/bluetooth/BluetoothDevice;"/> + <method name="getRemoteDevice([B)Landroid/bluetooth/BluetoothDevice;" since="16"/> + <method name="getScanMode()I"/> + <method name="getState()I"/> + <method name="isDiscovering()Z"/> + <method name="isEnabled()Z"/> + <method name="isLe2MPhySupported()Z" since="26"/> + <method name="isLeCodedPhySupported()Z" since="26"/> + <method name="isLeExtendedAdvertisingSupported()Z" since="26"/> + <method name="isLePeriodicAdvertisingSupported()Z" since="26"/> + <method name="isMultipleAdvertisementSupported()Z" since="21"/> + <method name="isOffloadedFilteringSupported()Z" since="21"/> + <method name="isOffloadedScanBatchingSupported()Z" since="21"/> + <method name="listenUsingInsecureRfcommWithServiceRecord(Ljava/lang/String;Ljava/util/UUID;)Landroid/bluetooth/BluetoothServerSocket;" since="10"/> + <method name="listenUsingRfcommWithServiceRecord(Ljava/lang/String;Ljava/util/UUID;)Landroid/bluetooth/BluetoothServerSocket;"/> + <method name="setName(Ljava/lang/String;)Z"/> + <method name="startDiscovery()Z"/> + <method name="startLeScan(Landroid/bluetooth/BluetoothAdapter$LeScanCallback;)Z" since="18" deprecated="21"/> + <method name="startLeScan([Ljava/util/UUID;Landroid/bluetooth/BluetoothAdapter$LeScanCallback;)Z" since="18" deprecated="21"/> + <method name="stopLeScan(Landroid/bluetooth/BluetoothAdapter$LeScanCallback;)V" since="18" deprecated="21"/> + <field name="ACTION_CONNECTION_STATE_CHANGED" since="11"/> + <field name="ACTION_DISCOVERY_FINISHED"/> + <field name="ACTION_DISCOVERY_STARTED"/> + <field name="ACTION_LOCAL_NAME_CHANGED"/> + <field name="ACTION_REQUEST_DISCOVERABLE"/> + <field name="ACTION_REQUEST_ENABLE"/> + <field name="ACTION_SCAN_MODE_CHANGED"/> + <field name="ACTION_STATE_CHANGED"/> + <field name="ERROR"/> + <field name="EXTRA_CONNECTION_STATE" since="11"/> + <field name="EXTRA_DISCOVERABLE_DURATION"/> + <field name="EXTRA_LOCAL_NAME"/> + <field name="EXTRA_PREVIOUS_CONNECTION_STATE" since="11"/> + <field name="EXTRA_PREVIOUS_SCAN_MODE"/> + <field name="EXTRA_PREVIOUS_STATE"/> + <field name="EXTRA_SCAN_MODE"/> + <field name="EXTRA_STATE"/> + <field name="SCAN_MODE_CONNECTABLE"/> + <field name="SCAN_MODE_CONNECTABLE_DISCOVERABLE"/> + <field name="SCAN_MODE_NONE"/> + <field name="STATE_CONNECTED" since="11"/> + <field name="STATE_CONNECTING" since="11"/> + <field name="STATE_DISCONNECTED" since="11"/> + <field name="STATE_DISCONNECTING" since="11"/> + <field name="STATE_OFF"/> + <field name="STATE_ON"/> + <field name="STATE_TURNING_OFF"/> + <field name="STATE_TURNING_ON"/> + </class> + <class name="android/bluetooth/BluetoothAdapter$LeScanCallback" since="18"> + <extends name="java/lang/Object"/> + <method name="onLeScan(Landroid/bluetooth/BluetoothDevice;I[B)V"/> + </class> + <class name="android/bluetooth/BluetoothAssignedNumbers" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="AAMP_OF_AMERICA" since="19"/> + <field name="ACCEL_SEMICONDUCTOR"/> + <field name="ACE_SENSOR" since="19"/> + <field name="ADIDAS" since="19"/> + <field name="ADVANCED_PANMOBIL_SYSTEMS" since="19"/> + <field name="AIROHA_TECHNOLOGY" since="19"/> + <field name="ALCATEL"/> + <field name="ALPWISE" since="19"/> + <field name="AMICCOM_ELECTRONICS" since="19"/> + <field name="APLIX" since="19"/> + <field name="APPLE"/> + <field name="APT_LICENSING"/> + <field name="ARCHOS" since="19"/> + <field name="ARP_DEVICES" since="19"/> + <field name="ATHEROS_COMMUNICATIONS"/> + <field name="ATMEL"/> + <field name="AUSTCO_COMMUNICATION_SYSTEMS" since="19"/> + <field name="AUTONET_MOBILE" since="19"/> + <field name="AVAGO"/> + <field name="AVM_BERLIN"/> + <field name="A_AND_D_ENGINEERING" since="19"/> + <field name="A_AND_R_CAMBRIDGE" since="19"/> + <field name="BANDSPEED"/> + <field name="BAND_XI_INTERNATIONAL" since="19"/> + <field name="BDE_TECHNOLOGY" since="19"/> + <field name="BEATS_ELECTRONICS" since="19"/> + <field name="BEAUTIFUL_ENTERPRISE" since="19"/> + <field name="BEKEY" since="19"/> + <field name="BELKIN_INTERNATIONAL"/> + <field name="BINAURIC" since="19"/> + <field name="BIOSENTRONICS" since="19"/> + <field name="BLUEGIGA"/> + <field name="BLUERADIOS" since="19"/> + <field name="BLUETOOTH_SIG"/> + <field name="BLUETREK_TECHNOLOGIES" since="19"/> + <field name="BOSE" since="19"/> + <field name="BRIARTEK" since="19"/> + <field name="BROADCOM"/> + <field name="CAEN_RFID" since="19"/> + <field name="CAMBRIDGE_SILICON_RADIO"/> + <field name="CATC"/> + <field name="CINETIX" since="19"/> + <field name="CLARINOX_TECHNOLOGIES" since="19"/> + <field name="COLORFY" since="19"/> + <field name="COMMIL"/> + <field name="CONEXANT_SYSTEMS"/> + <field name="CONNECTBLUE" since="19"/> + <field name="CONTINENTAL_AUTOMOTIVE"/> + <field name="CONWISE_TECHNOLOGY"/> + <field name="CREATIVE_TECHNOLOGY" since="19"/> + <field name="C_TECHNOLOGIES"/> + <field name="DANLERS" since="19"/> + <field name="DELORME_PUBLISHING_COMPANY" since="19"/> + <field name="DEXCOM" since="19"/> + <field name="DIALOG_SEMICONDUCTOR" since="19"/> + <field name="DIGIANSWER"/> + <field name="ECLIPSE"/> + <field name="ECOTEST" since="19"/> + <field name="ELGATO_SYSTEMS" since="19"/> + <field name="EM_MICROELECTRONIC_MARIN"/> + <field name="EQUINOX_AG" since="19"/> + <field name="ERICSSON_TECHNOLOGY"/> + <field name="EVLUMA" since="19"/> + <field name="FREE2MOVE"/> + <field name="FUNAI_ELECTRIC" since="19"/> + <field name="GARMIN_INTERNATIONAL" since="19"/> + <field name="GCT_SEMICONDUCTOR"/> + <field name="GELO" since="19"/> + <field name="GENEQ" since="19"/> + <field name="GENERAL_MOTORS" since="19"/> + <field name="GENNUM"/> + <field name="GEOFORCE" since="19"/> + <field name="GIBSON_GUITARS" since="19"/> + <field name="GN_NETCOM" since="19"/> + <field name="GN_RESOUND" since="19"/> + <field name="GOOGLE" since="19"/> + <field name="GREEN_THROTTLE_GAMES" since="19"/> + <field name="GROUP_SENSE" since="19"/> + <field name="HANLYNN_TECHNOLOGIES" since="19"/> + <field name="HARMAN_INTERNATIONAL"/> + <field name="HEWLETT_PACKARD" since="19"/> + <field name="HITACHI"/> + <field name="HOSIDEN" since="19"/> + <field name="IBM"/> + <field name="INFINEON_TECHNOLOGIES"/> + <field name="INGENIEUR_SYSTEMGRUPPE_ZAHN" since="19"/> + <field name="INTEGRATED_SILICON_SOLUTION"/> + <field name="INTEGRATED_SYSTEM_SOLUTION"/> + <field name="INTEL"/> + <field name="INVENTEL"/> + <field name="IPEXTREME"/> + <field name="I_TECH_DYNAMIC_GLOBAL_DISTRIBUTION" since="19"/> + <field name="JAWBONE" since="19"/> + <field name="JIANGSU_TOPPOWER_AUTOMOTIVE_ELECTRONICS" since="19"/> + <field name="JOHNSON_CONTROLS" since="19"/> + <field name="J_AND_M"/> + <field name="KAWANTECH" since="19"/> + <field name="KC_TECHNOLOGY"/> + <field name="KENSINGTON_COMPUTER_PRODUCTS_GROUP" since="19"/> + <field name="LAIRD_TECHNOLOGIES" since="19"/> + <field name="LESSWIRE" since="19"/> + <field name="LG_ELECTRONICS" since="19"/> + <field name="LINAK" since="19"/> + <field name="LUCENT"/> + <field name="LUDUS_HELSINKI" since="19"/> + <field name="MACRONIX"/> + <field name="MAGNETI_MARELLI" since="19"/> + <field name="MANSELLA"/> + <field name="MARVELL"/> + <field name="MATSUSHITA_ELECTRIC"/> + <field name="MC10" since="19"/> + <field name="MEDIATEK"/> + <field name="MESO_INTERNATIONAL" since="19"/> + <field name="META_WATCH" since="19"/> + <field name="MEWTEL_TECHNOLOGY"/> + <field name="MICOMMAND" since="19"/> + <field name="MICROCHIP_TECHNOLOGY" since="19"/> + <field name="MICROSOFT"/> + <field name="MINDTREE" since="19"/> + <field name="MISFIT_WEARABLES" since="19"/> + <field name="MITEL_SEMICONDUCTOR"/> + <field name="MITSUBISHI_ELECTRIC"/> + <field name="MOBILIAN_CORPORATION"/> + <field name="MONSTER" since="19"/> + <field name="MOTOROLA"/> + <field name="MSTAR_SEMICONDUCTOR" since="19"/> + <field name="MUZIK" since="19"/> + <field name="NEC"/> + <field name="NEC_LIGHTING" since="19"/> + <field name="NEWLOGIC"/> + <field name="NIKE" since="19"/> + <field name="NINE_SOLUTIONS" since="19"/> + <field name="NOKIA_MOBILE_PHONES"/> + <field name="NORDIC_SEMICONDUCTOR"/> + <field name="NORWOOD_SYSTEMS"/> + <field name="ODM_TECHNOLOGY" since="19"/> + <field name="OMEGAWAVE" since="19"/> + <field name="ONSET_COMPUTER" since="19"/> + <field name="OPEN_INTERFACE"/> + <field name="OTL_DYNAMICS" since="19"/> + <field name="PANDA_OCEAN" since="19"/> + <field name="PARROT"/> + <field name="PARTHUS_TECHNOLOGIES"/> + <field name="PASSIF_SEMICONDUCTOR" since="19"/> + <field name="PETER_SYSTEMTECHNIK" since="19"/> + <field name="PHILIPS_SEMICONDUCTORS"/> + <field name="PLANTRONICS"/> + <field name="POLAR_ELECTRO" since="19"/> + <field name="POLAR_ELECTRO_EUROPE" since="19"/> + <field name="PROCTER_AND_GAMBLE" since="19"/> + <field name="QUALCOMM"/> + <field name="QUALCOMM_CONNECTED_EXPERIENCES" since="19"/> + <field name="QUALCOMM_INNOVATION_CENTER" since="19"/> + <field name="QUALCOMM_LABS" since="19"/> + <field name="QUALCOMM_TECHNOLOGIES" since="19"/> + <field name="QUINTIC" since="19"/> + <field name="QUUPPA" since="19"/> + <field name="RALINK_TECHNOLOGY"/> + <field name="RDA_MICROELECTRONICS" since="19"/> + <field name="REALTEK_SEMICONDUCTOR"/> + <field name="RED_M"/> + <field name="RENESAS_TECHNOLOGY"/> + <field name="RESEARCH_IN_MOTION"/> + <field name="RF_MICRO_DEVICES"/> + <field name="RIVIERAWAVES"/> + <field name="ROHDE_AND_SCHWARZ"/> + <field name="RTX_TELECOM"/> + <field name="SAMSUNG_ELECTRONICS" since="19"/> + <field name="SARIS_CYCLING_GROUP" since="19"/> + <field name="SEERS_TECHNOLOGY" since="19"/> + <field name="SEIKO_EPSON"/> + <field name="SELFLY" since="19"/> + <field name="SEMILINK" since="19"/> + <field name="SENNHEISER_COMMUNICATIONS" since="19"/> + <field name="SHANGHAI_SUPER_SMART_ELECTRONICS" since="19"/> + <field name="SHENZHEN_EXCELSECU_DATA_TECHNOLOGY" since="19"/> + <field name="SIGNIA_TECHNOLOGIES"/> + <field name="SILICON_WAVE"/> + <field name="SIRF_TECHNOLOGY"/> + <field name="SOCKET_MOBILE"/> + <field name="SONY_ERICSSON"/> + <field name="SOUND_ID" since="19"/> + <field name="SPORTS_TRACKING_TECHNOLOGIES" since="19"/> + <field name="SR_MEDIZINELEKTRONIK" since="19"/> + <field name="STACCATO_COMMUNICATIONS"/> + <field name="STALMART_TECHNOLOGY" since="19"/> + <field name="STARKEY_LABORATORIES" since="19"/> + <field name="STOLLMAN_E_PLUS_V" since="19"/> + <field name="STONESTREET_ONE"/> + <field name="ST_MICROELECTRONICS"/> + <field name="SUMMIT_DATA_COMMUNICATIONS" since="19"/> + <field name="SUUNTO" since="19"/> + <field name="SWIRL_NETWORKS" since="19"/> + <field name="SYMBOL_TECHNOLOGIES"/> + <field name="SYNOPSYS"/> + <field name="SYSTEMS_AND_CHIPS"/> + <field name="S_POWER_ELECTRONICS" since="19"/> + <field name="TAIXINGBANG_TECHNOLOGY" since="19"/> + <field name="TENOVIS"/> + <field name="TERAX"/> + <field name="TEXAS_INSTRUMENTS"/> + <field name="THINKOPTICS" since="19"/> + <field name="THREECOM"/> + <field name="THREE_DIJOY"/> + <field name="THREE_DSP"/> + <field name="TIMEKEEPING_SYSTEMS" since="19"/> + <field name="TIMEX_GROUP_USA" since="19"/> + <field name="TOPCORN_POSITIONING_SYSTEMS" since="19"/> + <field name="TOSHIBA"/> + <field name="TRANSILICA"/> + <field name="TRELAB" since="19"/> + <field name="TTPCOM"/> + <field name="TXTR" since="19"/> + <field name="TZERO_TECHNOLOGIES"/> + <field name="UNIVERSAL_ELECTRONICS" since="19"/> + <field name="VERTU" since="19"/> + <field name="VISTEON" since="19"/> + <field name="VIZIO"/> + <field name="VOYETRA_TURTLE_BEACH" since="19"/> + <field name="WAVEPLUS_TECHNOLOGY"/> + <field name="WICENTRIC"/> + <field name="WIDCOMM"/> + <field name="WUXI_VIMICRO" since="19"/> + <field name="ZEEVO"/> + <field name="ZER01_TV" since="19"/> + <field name="ZOMM" since="19"/> + <field name="ZSCAN_SOFTWARE" since="19"/> + </class> + <class name="android/bluetooth/BluetoothClass" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getDeviceClass()I"/> + <method name="getMajorDeviceClass()I"/> + <method name="hasService(I)Z"/> + <field name="CREATOR"/> + </class> + <class name="android/bluetooth/BluetoothClass$Device" since="5"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="AUDIO_VIDEO_CAMCORDER"/> + <field name="AUDIO_VIDEO_CAR_AUDIO"/> + <field name="AUDIO_VIDEO_HANDSFREE"/> + <field name="AUDIO_VIDEO_HEADPHONES"/> + <field name="AUDIO_VIDEO_HIFI_AUDIO"/> + <field name="AUDIO_VIDEO_LOUDSPEAKER"/> + <field name="AUDIO_VIDEO_MICROPHONE"/> + <field name="AUDIO_VIDEO_PORTABLE_AUDIO"/> + <field name="AUDIO_VIDEO_SET_TOP_BOX"/> + <field name="AUDIO_VIDEO_UNCATEGORIZED"/> + <field name="AUDIO_VIDEO_VCR"/> + <field name="AUDIO_VIDEO_VIDEO_CAMERA"/> + <field name="AUDIO_VIDEO_VIDEO_CONFERENCING"/> + <field name="AUDIO_VIDEO_VIDEO_DISPLAY_AND_LOUDSPEAKER"/> + <field name="AUDIO_VIDEO_VIDEO_GAMING_TOY"/> + <field name="AUDIO_VIDEO_VIDEO_MONITOR"/> + <field name="AUDIO_VIDEO_WEARABLE_HEADSET"/> + <field name="COMPUTER_DESKTOP"/> + <field name="COMPUTER_HANDHELD_PC_PDA"/> + <field name="COMPUTER_LAPTOP"/> + <field name="COMPUTER_PALM_SIZE_PC_PDA"/> + <field name="COMPUTER_SERVER"/> + <field name="COMPUTER_UNCATEGORIZED"/> + <field name="COMPUTER_WEARABLE"/> + <field name="HEALTH_BLOOD_PRESSURE"/> + <field name="HEALTH_DATA_DISPLAY"/> + <field name="HEALTH_GLUCOSE"/> + <field name="HEALTH_PULSE_OXIMETER"/> + <field name="HEALTH_PULSE_RATE"/> + <field name="HEALTH_THERMOMETER"/> + <field name="HEALTH_UNCATEGORIZED"/> + <field name="HEALTH_WEIGHING"/> + <field name="PHONE_CELLULAR"/> + <field name="PHONE_CORDLESS"/> + <field name="PHONE_ISDN"/> + <field name="PHONE_MODEM_OR_GATEWAY"/> + <field name="PHONE_SMART"/> + <field name="PHONE_UNCATEGORIZED"/> + <field name="TOY_CONTROLLER"/> + <field name="TOY_DOLL_ACTION_FIGURE"/> + <field name="TOY_GAME"/> + <field name="TOY_ROBOT"/> + <field name="TOY_UNCATEGORIZED"/> + <field name="TOY_VEHICLE"/> + <field name="WEARABLE_GLASSES"/> + <field name="WEARABLE_HELMET"/> + <field name="WEARABLE_JACKET"/> + <field name="WEARABLE_PAGER"/> + <field name="WEARABLE_UNCATEGORIZED"/> + <field name="WEARABLE_WRIST_WATCH"/> + </class> + <class name="android/bluetooth/BluetoothClass$Device$Major" since="5"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="AUDIO_VIDEO"/> + <field name="COMPUTER"/> + <field name="HEALTH"/> + <field name="IMAGING"/> + <field name="MISC"/> + <field name="NETWORKING"/> + <field name="PERIPHERAL"/> + <field name="PHONE"/> + <field name="TOY"/> + <field name="UNCATEGORIZED"/> + <field name="WEARABLE"/> + </class> + <class name="android/bluetooth/BluetoothClass$Service" since="5"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="AUDIO"/> + <field name="CAPTURE"/> + <field name="INFORMATION"/> + <field name="LIMITED_DISCOVERABILITY"/> + <field name="NETWORKING"/> + <field name="OBJECT_TRANSFER"/> + <field name="POSITIONING"/> + <field name="RENDER"/> + <field name="TELEPHONY"/> + </class> + <class name="android/bluetooth/BluetoothDevice" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="connectGatt(Landroid/content/Context;ZLandroid/bluetooth/BluetoothGattCallback;)Landroid/bluetooth/BluetoothGatt;" since="18"/> + <method name="connectGatt(Landroid/content/Context;ZLandroid/bluetooth/BluetoothGattCallback;I)Landroid/bluetooth/BluetoothGatt;" since="23"/> + <method name="connectGatt(Landroid/content/Context;ZLandroid/bluetooth/BluetoothGattCallback;II)Landroid/bluetooth/BluetoothGatt;" since="26"/> + <method name="connectGatt(Landroid/content/Context;ZLandroid/bluetooth/BluetoothGattCallback;IILandroid/os/Handler;)Landroid/bluetooth/BluetoothGatt;" since="26"/> + <method name="createBond()Z" since="19"/> + <method name="createInsecureRfcommSocketToServiceRecord(Ljava/util/UUID;)Landroid/bluetooth/BluetoothSocket;" since="10"/> + <method name="createRfcommSocketToServiceRecord(Ljava/util/UUID;)Landroid/bluetooth/BluetoothSocket;"/> + <method name="fetchUuidsWithSdp()Z" since="15"/> + <method name="getAddress()Ljava/lang/String;"/> + <method name="getBluetoothClass()Landroid/bluetooth/BluetoothClass;"/> + <method name="getBondState()I"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getType()I" since="18"/> + <method name="getUuids()[Landroid/os/ParcelUuid;" since="15"/> + <method name="setPairingConfirmation(Z)Z" since="19"/> + <method name="setPin([B)Z" since="19"/> + <field name="ACTION_ACL_CONNECTED"/> + <field name="ACTION_ACL_DISCONNECTED"/> + <field name="ACTION_ACL_DISCONNECT_REQUESTED"/> + <field name="ACTION_BOND_STATE_CHANGED"/> + <field name="ACTION_CLASS_CHANGED"/> + <field name="ACTION_FOUND"/> + <field name="ACTION_NAME_CHANGED"/> + <field name="ACTION_PAIRING_REQUEST" since="19"/> + <field name="ACTION_UUID" since="15"/> + <field name="BOND_BONDED"/> + <field name="BOND_BONDING"/> + <field name="BOND_NONE"/> + <field name="CREATOR"/> + <field name="DEVICE_TYPE_CLASSIC" since="18"/> + <field name="DEVICE_TYPE_DUAL" since="18"/> + <field name="DEVICE_TYPE_LE" since="18"/> + <field name="DEVICE_TYPE_UNKNOWN" since="18"/> + <field name="ERROR"/> + <field name="EXTRA_BOND_STATE"/> + <field name="EXTRA_CLASS"/> + <field name="EXTRA_DEVICE"/> + <field name="EXTRA_NAME"/> + <field name="EXTRA_PAIRING_KEY" since="19"/> + <field name="EXTRA_PAIRING_VARIANT" since="19"/> + <field name="EXTRA_PREVIOUS_BOND_STATE"/> + <field name="EXTRA_RSSI"/> + <field name="EXTRA_UUID" since="15"/> + <field name="PAIRING_VARIANT_PASSKEY_CONFIRMATION" since="19"/> + <field name="PAIRING_VARIANT_PIN" since="19"/> + <field name="PHY_LE_1M" since="26"/> + <field name="PHY_LE_1M_MASK" since="26"/> + <field name="PHY_LE_2M" since="26"/> + <field name="PHY_LE_2M_MASK" since="26"/> + <field name="PHY_LE_CODED" since="26"/> + <field name="PHY_LE_CODED_MASK" since="26"/> + <field name="PHY_OPTION_NO_PREFERRED" since="26"/> + <field name="PHY_OPTION_S2" since="26"/> + <field name="PHY_OPTION_S8" since="26"/> + <field name="TRANSPORT_AUTO" since="23"/> + <field name="TRANSPORT_BREDR" since="23"/> + <field name="TRANSPORT_LE" since="23"/> + </class> + <class name="android/bluetooth/BluetoothGatt" since="18"> + <extends name="java/lang/Object"/> + <implements name="android/bluetooth/BluetoothProfile"/> + <method name="<init>()V"/> + <method name="abortReliableWrite()V" since="19"/> + <method name="abortReliableWrite(Landroid/bluetooth/BluetoothDevice;)V" deprecated="19"/> + <method name="beginReliableWrite()Z"/> + <method name="close()V"/> + <method name="connect()Z"/> + <method name="disconnect()V"/> + <method name="discoverServices()Z"/> + <method name="executeReliableWrite()Z"/> + <method name="getDevice()Landroid/bluetooth/BluetoothDevice;"/> + <method name="getService(Ljava/util/UUID;)Landroid/bluetooth/BluetoothGattService;"/> + <method name="getServices()Ljava/util/List;"/> + <method name="readCharacteristic(Landroid/bluetooth/BluetoothGattCharacteristic;)Z"/> + <method name="readDescriptor(Landroid/bluetooth/BluetoothGattDescriptor;)Z"/> + <method name="readPhy()V" since="26"/> + <method name="readRemoteRssi()Z"/> + <method name="requestConnectionPriority(I)Z" since="21"/> + <method name="requestMtu(I)Z" since="21"/> + <method name="setCharacteristicNotification(Landroid/bluetooth/BluetoothGattCharacteristic;Z)Z"/> + <method name="setPreferredPhy(III)V" since="26"/> + <method name="writeCharacteristic(Landroid/bluetooth/BluetoothGattCharacteristic;)Z"/> + <method name="writeDescriptor(Landroid/bluetooth/BluetoothGattDescriptor;)Z"/> + <field name="CONNECTION_PRIORITY_BALANCED" since="21"/> + <field name="CONNECTION_PRIORITY_HIGH" since="21"/> + <field name="CONNECTION_PRIORITY_LOW_POWER" since="21"/> + <field name="GATT_CONNECTION_CONGESTED" since="21"/> + <field name="GATT_FAILURE"/> + <field name="GATT_INSUFFICIENT_AUTHENTICATION"/> + <field name="GATT_INSUFFICIENT_ENCRYPTION"/> + <field name="GATT_INVALID_ATTRIBUTE_LENGTH"/> + <field name="GATT_INVALID_OFFSET"/> + <field name="GATT_READ_NOT_PERMITTED"/> + <field name="GATT_REQUEST_NOT_SUPPORTED"/> + <field name="GATT_SUCCESS"/> + <field name="GATT_WRITE_NOT_PERMITTED"/> + </class> + <class name="android/bluetooth/BluetoothGattCallback" since="18"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onCharacteristicChanged(Landroid/bluetooth/BluetoothGatt;Landroid/bluetooth/BluetoothGattCharacteristic;)V"/> + <method name="onCharacteristicRead(Landroid/bluetooth/BluetoothGatt;Landroid/bluetooth/BluetoothGattCharacteristic;I)V"/> + <method name="onCharacteristicWrite(Landroid/bluetooth/BluetoothGatt;Landroid/bluetooth/BluetoothGattCharacteristic;I)V"/> + <method name="onConnectionStateChange(Landroid/bluetooth/BluetoothGatt;II)V"/> + <method name="onDescriptorRead(Landroid/bluetooth/BluetoothGatt;Landroid/bluetooth/BluetoothGattDescriptor;I)V"/> + <method name="onDescriptorWrite(Landroid/bluetooth/BluetoothGatt;Landroid/bluetooth/BluetoothGattDescriptor;I)V"/> + <method name="onMtuChanged(Landroid/bluetooth/BluetoothGatt;II)V" since="21"/> + <method name="onPhyRead(Landroid/bluetooth/BluetoothGatt;III)V" since="26"/> + <method name="onPhyUpdate(Landroid/bluetooth/BluetoothGatt;III)V" since="26"/> + <method name="onReadRemoteRssi(Landroid/bluetooth/BluetoothGatt;II)V"/> + <method name="onReliableWriteCompleted(Landroid/bluetooth/BluetoothGatt;I)V"/> + <method name="onServicesDiscovered(Landroid/bluetooth/BluetoothGatt;I)V"/> + </class> + <class name="android/bluetooth/BluetoothGattCharacteristic" since="18"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable" since="24"/> + <method name="<init>(Ljava/util/UUID;II)V"/> + <method name="addDescriptor(Landroid/bluetooth/BluetoothGattDescriptor;)Z"/> + <method name="getDescriptor(Ljava/util/UUID;)Landroid/bluetooth/BluetoothGattDescriptor;"/> + <method name="getDescriptors()Ljava/util/List;"/> + <method name="getFloatValue(II)Ljava/lang/Float;"/> + <method name="getInstanceId()I"/> + <method name="getIntValue(II)Ljava/lang/Integer;"/> + <method name="getPermissions()I"/> + <method name="getProperties()I"/> + <method name="getService()Landroid/bluetooth/BluetoothGattService;"/> + <method name="getStringValue(I)Ljava/lang/String;"/> + <method name="getUuid()Ljava/util/UUID;"/> + <method name="getValue()[B"/> + <method name="getWriteType()I"/> + <method name="setValue(III)Z"/> + <method name="setValue(IIII)Z"/> + <method name="setValue(Ljava/lang/String;)Z"/> + <method name="setValue([B)Z"/> + <method name="setWriteType(I)V"/> + <field name="CREATOR" since="24"/> + <field name="FORMAT_FLOAT"/> + <field name="FORMAT_SFLOAT"/> + <field name="FORMAT_SINT16"/> + <field name="FORMAT_SINT32"/> + <field name="FORMAT_SINT8"/> + <field name="FORMAT_UINT16"/> + <field name="FORMAT_UINT32"/> + <field name="FORMAT_UINT8"/> + <field name="PERMISSION_READ"/> + <field name="PERMISSION_READ_ENCRYPTED"/> + <field name="PERMISSION_READ_ENCRYPTED_MITM"/> + <field name="PERMISSION_WRITE"/> + <field name="PERMISSION_WRITE_ENCRYPTED"/> + <field name="PERMISSION_WRITE_ENCRYPTED_MITM"/> + <field name="PERMISSION_WRITE_SIGNED"/> + <field name="PERMISSION_WRITE_SIGNED_MITM"/> + <field name="PROPERTY_BROADCAST"/> + <field name="PROPERTY_EXTENDED_PROPS"/> + <field name="PROPERTY_INDICATE"/> + <field name="PROPERTY_NOTIFY"/> + <field name="PROPERTY_READ"/> + <field name="PROPERTY_SIGNED_WRITE"/> + <field name="PROPERTY_WRITE"/> + <field name="PROPERTY_WRITE_NO_RESPONSE"/> + <field name="WRITE_TYPE_DEFAULT"/> + <field name="WRITE_TYPE_NO_RESPONSE"/> + <field name="WRITE_TYPE_SIGNED"/> + <field name="mDescriptors"/> + </class> + <class name="android/bluetooth/BluetoothGattDescriptor" since="18"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable" since="24"/> + <method name="<init>(Ljava/util/UUID;I)V"/> + <method name="getCharacteristic()Landroid/bluetooth/BluetoothGattCharacteristic;"/> + <method name="getPermissions()I"/> + <method name="getUuid()Ljava/util/UUID;"/> + <method name="getValue()[B"/> + <method name="setValue([B)Z"/> + <field name="CREATOR" since="24"/> + <field name="DISABLE_NOTIFICATION_VALUE"/> + <field name="ENABLE_INDICATION_VALUE"/> + <field name="ENABLE_NOTIFICATION_VALUE"/> + <field name="PERMISSION_READ"/> + <field name="PERMISSION_READ_ENCRYPTED"/> + <field name="PERMISSION_READ_ENCRYPTED_MITM"/> + <field name="PERMISSION_WRITE"/> + <field name="PERMISSION_WRITE_ENCRYPTED"/> + <field name="PERMISSION_WRITE_ENCRYPTED_MITM"/> + <field name="PERMISSION_WRITE_SIGNED"/> + <field name="PERMISSION_WRITE_SIGNED_MITM"/> + </class> + <class name="android/bluetooth/BluetoothGattServer" since="18"> + <extends name="java/lang/Object"/> + <implements name="android/bluetooth/BluetoothProfile"/> + <method name="<init>()V"/> + <method name="addService(Landroid/bluetooth/BluetoothGattService;)Z"/> + <method name="cancelConnection(Landroid/bluetooth/BluetoothDevice;)V"/> + <method name="clearServices()V"/> + <method name="close()V"/> + <method name="connect(Landroid/bluetooth/BluetoothDevice;Z)Z"/> + <method name="getService(Ljava/util/UUID;)Landroid/bluetooth/BluetoothGattService;"/> + <method name="getServices()Ljava/util/List;"/> + <method name="notifyCharacteristicChanged(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/BluetoothGattCharacteristic;Z)Z"/> + <method name="readPhy(Landroid/bluetooth/BluetoothDevice;)V" since="26"/> + <method name="removeService(Landroid/bluetooth/BluetoothGattService;)Z"/> + <method name="sendResponse(Landroid/bluetooth/BluetoothDevice;III[B)Z"/> + <method name="setPreferredPhy(Landroid/bluetooth/BluetoothDevice;III)V" since="26"/> + </class> + <class name="android/bluetooth/BluetoothGattServerCallback" since="18"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onCharacteristicReadRequest(Landroid/bluetooth/BluetoothDevice;IILandroid/bluetooth/BluetoothGattCharacteristic;)V"/> + <method name="onCharacteristicWriteRequest(Landroid/bluetooth/BluetoothDevice;ILandroid/bluetooth/BluetoothGattCharacteristic;ZZI[B)V"/> + <method name="onConnectionStateChange(Landroid/bluetooth/BluetoothDevice;II)V"/> + <method name="onDescriptorReadRequest(Landroid/bluetooth/BluetoothDevice;IILandroid/bluetooth/BluetoothGattDescriptor;)V"/> + <method name="onDescriptorWriteRequest(Landroid/bluetooth/BluetoothDevice;ILandroid/bluetooth/BluetoothGattDescriptor;ZZI[B)V"/> + <method name="onExecuteWrite(Landroid/bluetooth/BluetoothDevice;IZ)V"/> + <method name="onMtuChanged(Landroid/bluetooth/BluetoothDevice;I)V" since="22"/> + <method name="onNotificationSent(Landroid/bluetooth/BluetoothDevice;I)V" since="21"/> + <method name="onPhyRead(Landroid/bluetooth/BluetoothDevice;III)V" since="26"/> + <method name="onPhyUpdate(Landroid/bluetooth/BluetoothDevice;III)V" since="26"/> + <method name="onServiceAdded(ILandroid/bluetooth/BluetoothGattService;)V"/> + </class> + <class name="android/bluetooth/BluetoothGattService" since="18"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable" since="24"/> + <method name="<init>(Ljava/util/UUID;I)V"/> + <method name="addCharacteristic(Landroid/bluetooth/BluetoothGattCharacteristic;)Z"/> + <method name="addService(Landroid/bluetooth/BluetoothGattService;)Z"/> + <method name="getCharacteristic(Ljava/util/UUID;)Landroid/bluetooth/BluetoothGattCharacteristic;"/> + <method name="getCharacteristics()Ljava/util/List;"/> + <method name="getIncludedServices()Ljava/util/List;"/> + <method name="getInstanceId()I"/> + <method name="getType()I"/> + <method name="getUuid()Ljava/util/UUID;"/> + <field name="CREATOR" since="24"/> + <field name="SERVICE_TYPE_PRIMARY"/> + <field name="SERVICE_TYPE_SECONDARY"/> + <field name="mCharacteristics"/> + <field name="mIncludedServices"/> + </class> + <class name="android/bluetooth/BluetoothHeadset" since="11"> + <extends name="java/lang/Object"/> + <implements name="android/bluetooth/BluetoothProfile"/> + <method name="<init>()V"/> + <method name="isAudioConnected(Landroid/bluetooth/BluetoothDevice;)Z"/> + <method name="sendVendorSpecificResultCode(Landroid/bluetooth/BluetoothDevice;Ljava/lang/String;Ljava/lang/String;)Z" since="19"/> + <method name="startVoiceRecognition(Landroid/bluetooth/BluetoothDevice;)Z"/> + <method name="stopVoiceRecognition(Landroid/bluetooth/BluetoothDevice;)Z"/> + <field name="ACTION_AUDIO_STATE_CHANGED"/> + <field name="ACTION_CONNECTION_STATE_CHANGED"/> + <field name="ACTION_VENDOR_SPECIFIC_HEADSET_EVENT"/> + <field name="AT_CMD_TYPE_ACTION"/> + <field name="AT_CMD_TYPE_BASIC"/> + <field name="AT_CMD_TYPE_READ"/> + <field name="AT_CMD_TYPE_SET"/> + <field name="AT_CMD_TYPE_TEST"/> + <field name="EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_ARGS"/> + <field name="EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_CMD"/> + <field name="EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_CMD_TYPE"/> + <field name="STATE_AUDIO_CONNECTED"/> + <field name="STATE_AUDIO_CONNECTING"/> + <field name="STATE_AUDIO_DISCONNECTED"/> + <field name="VENDOR_RESULT_CODE_COMMAND_ANDROID" since="19"/> + <field name="VENDOR_SPECIFIC_HEADSET_EVENT_COMPANY_ID_CATEGORY"/> + </class> + <class name="android/bluetooth/BluetoothHealth" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/bluetooth/BluetoothProfile"/> + <method name="<init>()V"/> + <method name="connectChannelToSource(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z"/> + <method name="disconnectChannel(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/BluetoothHealthAppConfiguration;I)Z"/> + <method name="getMainChannelFd(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/BluetoothHealthAppConfiguration;)Landroid/os/ParcelFileDescriptor;"/> + <method name="registerSinkAppConfiguration(Ljava/lang/String;ILandroid/bluetooth/BluetoothHealthCallback;)Z"/> + <method name="unregisterAppConfiguration(Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z"/> + <field name="APP_CONFIG_REGISTRATION_FAILURE"/> + <field name="APP_CONFIG_REGISTRATION_SUCCESS"/> + <field name="APP_CONFIG_UNREGISTRATION_FAILURE"/> + <field name="APP_CONFIG_UNREGISTRATION_SUCCESS"/> + <field name="CHANNEL_TYPE_RELIABLE"/> + <field name="CHANNEL_TYPE_STREAMING"/> + <field name="SINK_ROLE"/> + <field name="SOURCE_ROLE"/> + <field name="STATE_CHANNEL_CONNECTED"/> + <field name="STATE_CHANNEL_CONNECTING"/> + <field name="STATE_CHANNEL_DISCONNECTED"/> + <field name="STATE_CHANNEL_DISCONNECTING"/> + </class> + <class name="android/bluetooth/BluetoothHealthAppConfiguration" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getDataType()I"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getRole()I"/> + <field name="CREATOR"/> + </class> + <class name="android/bluetooth/BluetoothHealthCallback" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onHealthAppConfigurationStatusChange(Landroid/bluetooth/BluetoothHealthAppConfiguration;I)V"/> + <method name="onHealthChannelStateChange(Landroid/bluetooth/BluetoothHealthAppConfiguration;Landroid/bluetooth/BluetoothDevice;IILandroid/os/ParcelFileDescriptor;I)V"/> + </class> + <class name="android/bluetooth/BluetoothManager" since="18"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAdapter()Landroid/bluetooth/BluetoothAdapter;"/> + <method name="getConnectedDevices(I)Ljava/util/List;"/> + <method name="getConnectionState(Landroid/bluetooth/BluetoothDevice;I)I"/> + <method name="getDevicesMatchingConnectionStates(I[I)Ljava/util/List;"/> + <method name="openGattServer(Landroid/content/Context;Landroid/bluetooth/BluetoothGattServerCallback;)Landroid/bluetooth/BluetoothGattServer;"/> + </class> + <class name="android/bluetooth/BluetoothProfile" since="11"> + <extends name="java/lang/Object"/> + <method name="getConnectedDevices()Ljava/util/List;"/> + <method name="getConnectionState(Landroid/bluetooth/BluetoothDevice;)I"/> + <method name="getDevicesMatchingConnectionStates([I)Ljava/util/List;"/> + <field name="A2DP"/> + <field name="EXTRA_PREVIOUS_STATE"/> + <field name="EXTRA_STATE"/> + <field name="GATT" since="18"/> + <field name="GATT_SERVER" since="18"/> + <field name="HEADSET"/> + <field name="HEALTH" since="14"/> + <field name="SAP" since="23"/> + <field name="STATE_CONNECTED"/> + <field name="STATE_CONNECTING"/> + <field name="STATE_DISCONNECTED"/> + <field name="STATE_DISCONNECTING"/> + </class> + <class name="android/bluetooth/BluetoothProfile$ServiceListener" since="11"> + <extends name="java/lang/Object"/> + <method name="onServiceConnected(ILandroid/bluetooth/BluetoothProfile;)V"/> + <method name="onServiceDisconnected(I)V"/> + </class> + <class name="android/bluetooth/BluetoothServerSocket" since="5"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable"/> + <method name="<init>()V"/> + <method name="accept()Landroid/bluetooth/BluetoothSocket;"/> + <method name="accept(I)Landroid/bluetooth/BluetoothSocket;"/> + </class> + <class name="android/bluetooth/BluetoothSocket" since="5"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable"/> + <method name="<init>()V"/> + <method name="connect()V"/> + <method name="getConnectionType()I" since="23"/> + <method name="getInputStream()Ljava/io/InputStream;"/> + <method name="getMaxReceivePacketSize()I" since="23"/> + <method name="getMaxTransmitPacketSize()I" since="23"/> + <method name="getOutputStream()Ljava/io/OutputStream;"/> + <method name="getRemoteDevice()Landroid/bluetooth/BluetoothDevice;"/> + <method name="isConnected()Z" since="14"/> + <field name="TYPE_L2CAP" since="23"/> + <field name="TYPE_RFCOMM" since="23"/> + <field name="TYPE_SCO" since="23"/> + </class> + <class name="android/bluetooth/le/AdvertiseCallback" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onStartFailure(I)V"/> + <method name="onStartSuccess(Landroid/bluetooth/le/AdvertiseSettings;)V"/> + <field name="ADVERTISE_FAILED_ALREADY_STARTED"/> + <field name="ADVERTISE_FAILED_DATA_TOO_LARGE"/> + <field name="ADVERTISE_FAILED_FEATURE_UNSUPPORTED"/> + <field name="ADVERTISE_FAILED_INTERNAL_ERROR"/> + <field name="ADVERTISE_FAILED_TOO_MANY_ADVERTISERS"/> + </class> + <class name="android/bluetooth/le/AdvertiseData" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getIncludeDeviceName()Z"/> + <method name="getIncludeTxPowerLevel()Z"/> + <method name="getManufacturerSpecificData()Landroid/util/SparseArray;"/> + <method name="getServiceData()Ljava/util/Map;"/> + <method name="getServiceUuids()Ljava/util/List;"/> + <field name="CREATOR"/> + </class> + <class name="android/bluetooth/le/AdvertiseData$Builder" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addManufacturerData(I[B)Landroid/bluetooth/le/AdvertiseData$Builder;"/> + <method name="addServiceData(Landroid/os/ParcelUuid;[B)Landroid/bluetooth/le/AdvertiseData$Builder;"/> + <method name="addServiceUuid(Landroid/os/ParcelUuid;)Landroid/bluetooth/le/AdvertiseData$Builder;"/> + <method name="build()Landroid/bluetooth/le/AdvertiseData;"/> + <method name="setIncludeDeviceName(Z)Landroid/bluetooth/le/AdvertiseData$Builder;"/> + <method name="setIncludeTxPowerLevel(Z)Landroid/bluetooth/le/AdvertiseData$Builder;"/> + </class> + <class name="android/bluetooth/le/AdvertiseSettings" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getMode()I"/> + <method name="getTimeout()I"/> + <method name="getTxPowerLevel()I"/> + <method name="isConnectable()Z"/> + <field name="ADVERTISE_MODE_BALANCED"/> + <field name="ADVERTISE_MODE_LOW_LATENCY"/> + <field name="ADVERTISE_MODE_LOW_POWER"/> + <field name="ADVERTISE_TX_POWER_HIGH"/> + <field name="ADVERTISE_TX_POWER_LOW"/> + <field name="ADVERTISE_TX_POWER_MEDIUM"/> + <field name="ADVERTISE_TX_POWER_ULTRA_LOW"/> + <field name="CREATOR"/> + </class> + <class name="android/bluetooth/le/AdvertiseSettings$Builder" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="build()Landroid/bluetooth/le/AdvertiseSettings;"/> + <method name="setAdvertiseMode(I)Landroid/bluetooth/le/AdvertiseSettings$Builder;"/> + <method name="setConnectable(Z)Landroid/bluetooth/le/AdvertiseSettings$Builder;"/> + <method name="setTimeout(I)Landroid/bluetooth/le/AdvertiseSettings$Builder;"/> + <method name="setTxPowerLevel(I)Landroid/bluetooth/le/AdvertiseSettings$Builder;"/> + </class> + <class name="android/bluetooth/le/AdvertisingSet" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="enableAdvertising(ZII)V"/> + <method name="setAdvertisingData(Landroid/bluetooth/le/AdvertiseData;)V"/> + <method name="setAdvertisingParameters(Landroid/bluetooth/le/AdvertisingSetParameters;)V"/> + <method name="setPeriodicAdvertisingData(Landroid/bluetooth/le/AdvertiseData;)V"/> + <method name="setPeriodicAdvertisingEnabled(Z)V"/> + <method name="setPeriodicAdvertisingParameters(Landroid/bluetooth/le/PeriodicAdvertisingParameters;)V"/> + <method name="setScanResponseData(Landroid/bluetooth/le/AdvertiseData;)V"/> + </class> + <class name="android/bluetooth/le/AdvertisingSetCallback" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onAdvertisingDataSet(Landroid/bluetooth/le/AdvertisingSet;I)V"/> + <method name="onAdvertisingEnabled(Landroid/bluetooth/le/AdvertisingSet;ZI)V"/> + <method name="onAdvertisingParametersUpdated(Landroid/bluetooth/le/AdvertisingSet;II)V"/> + <method name="onAdvertisingSetStarted(Landroid/bluetooth/le/AdvertisingSet;II)V"/> + <method name="onAdvertisingSetStopped(Landroid/bluetooth/le/AdvertisingSet;)V"/> + <method name="onPeriodicAdvertisingDataSet(Landroid/bluetooth/le/AdvertisingSet;I)V"/> + <method name="onPeriodicAdvertisingEnabled(Landroid/bluetooth/le/AdvertisingSet;ZI)V"/> + <method name="onPeriodicAdvertisingParametersUpdated(Landroid/bluetooth/le/AdvertisingSet;I)V"/> + <method name="onScanResponseDataSet(Landroid/bluetooth/le/AdvertisingSet;I)V"/> + <field name="ADVERTISE_FAILED_ALREADY_STARTED"/> + <field name="ADVERTISE_FAILED_DATA_TOO_LARGE"/> + <field name="ADVERTISE_FAILED_FEATURE_UNSUPPORTED"/> + <field name="ADVERTISE_FAILED_INTERNAL_ERROR"/> + <field name="ADVERTISE_FAILED_TOO_MANY_ADVERTISERS"/> + <field name="ADVERTISE_SUCCESS"/> + </class> + <class name="android/bluetooth/le/AdvertisingSetParameters" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getInterval()I"/> + <method name="getPrimaryPhy()I"/> + <method name="getSecondaryPhy()I"/> + <method name="getTxPowerLevel()I"/> + <method name="includeTxPower()Z"/> + <method name="isAnonymous()Z"/> + <method name="isConnectable()Z"/> + <method name="isLegacy()Z"/> + <method name="isScannable()Z"/> + <field name="CREATOR"/> + <field name="INTERVAL_HIGH"/> + <field name="INTERVAL_LOW"/> + <field name="INTERVAL_MAX"/> + <field name="INTERVAL_MEDIUM"/> + <field name="INTERVAL_MIN"/> + <field name="TX_POWER_HIGH"/> + <field name="TX_POWER_LOW"/> + <field name="TX_POWER_MAX"/> + <field name="TX_POWER_MEDIUM"/> + <field name="TX_POWER_MIN"/> + <field name="TX_POWER_ULTRA_LOW"/> + </class> + <class name="android/bluetooth/le/AdvertisingSetParameters$Builder" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="build()Landroid/bluetooth/le/AdvertisingSetParameters;"/> + <method name="setAnonymous(Z)Landroid/bluetooth/le/AdvertisingSetParameters$Builder;"/> + <method name="setConnectable(Z)Landroid/bluetooth/le/AdvertisingSetParameters$Builder;"/> + <method name="setIncludeTxPower(Z)Landroid/bluetooth/le/AdvertisingSetParameters$Builder;"/> + <method name="setInterval(I)Landroid/bluetooth/le/AdvertisingSetParameters$Builder;"/> + <method name="setLegacyMode(Z)Landroid/bluetooth/le/AdvertisingSetParameters$Builder;"/> + <method name="setPrimaryPhy(I)Landroid/bluetooth/le/AdvertisingSetParameters$Builder;"/> + <method name="setScannable(Z)Landroid/bluetooth/le/AdvertisingSetParameters$Builder;"/> + <method name="setSecondaryPhy(I)Landroid/bluetooth/le/AdvertisingSetParameters$Builder;"/> + <method name="setTxPowerLevel(I)Landroid/bluetooth/le/AdvertisingSetParameters$Builder;"/> + </class> + <class name="android/bluetooth/le/BluetoothLeAdvertiser" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="startAdvertising(Landroid/bluetooth/le/AdvertiseSettings;Landroid/bluetooth/le/AdvertiseData;Landroid/bluetooth/le/AdvertiseCallback;)V"/> + <method name="startAdvertising(Landroid/bluetooth/le/AdvertiseSettings;Landroid/bluetooth/le/AdvertiseData;Landroid/bluetooth/le/AdvertiseData;Landroid/bluetooth/le/AdvertiseCallback;)V"/> + <method name="startAdvertisingSet(Landroid/bluetooth/le/AdvertisingSetParameters;Landroid/bluetooth/le/AdvertiseData;Landroid/bluetooth/le/AdvertiseData;Landroid/bluetooth/le/PeriodicAdvertisingParameters;Landroid/bluetooth/le/AdvertiseData;IILandroid/bluetooth/le/AdvertisingSetCallback;)V" since="26"/> + <method name="startAdvertisingSet(Landroid/bluetooth/le/AdvertisingSetParameters;Landroid/bluetooth/le/AdvertiseData;Landroid/bluetooth/le/AdvertiseData;Landroid/bluetooth/le/PeriodicAdvertisingParameters;Landroid/bluetooth/le/AdvertiseData;IILandroid/bluetooth/le/AdvertisingSetCallback;Landroid/os/Handler;)V" since="26"/> + <method name="startAdvertisingSet(Landroid/bluetooth/le/AdvertisingSetParameters;Landroid/bluetooth/le/AdvertiseData;Landroid/bluetooth/le/AdvertiseData;Landroid/bluetooth/le/PeriodicAdvertisingParameters;Landroid/bluetooth/le/AdvertiseData;Landroid/bluetooth/le/AdvertisingSetCallback;)V" since="26"/> + <method name="startAdvertisingSet(Landroid/bluetooth/le/AdvertisingSetParameters;Landroid/bluetooth/le/AdvertiseData;Landroid/bluetooth/le/AdvertiseData;Landroid/bluetooth/le/PeriodicAdvertisingParameters;Landroid/bluetooth/le/AdvertiseData;Landroid/bluetooth/le/AdvertisingSetCallback;Landroid/os/Handler;)V" since="26"/> + <method name="stopAdvertising(Landroid/bluetooth/le/AdvertiseCallback;)V"/> + <method name="stopAdvertisingSet(Landroid/bluetooth/le/AdvertisingSetCallback;)V" since="26"/> + </class> + <class name="android/bluetooth/le/BluetoothLeScanner" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="flushPendingScanResults(Landroid/bluetooth/le/ScanCallback;)V"/> + <method name="startScan(Landroid/bluetooth/le/ScanCallback;)V"/> + <method name="startScan(Ljava/util/List;Landroid/bluetooth/le/ScanSettings;Landroid/app/PendingIntent;)I" since="26"/> + <method name="startScan(Ljava/util/List;Landroid/bluetooth/le/ScanSettings;Landroid/bluetooth/le/ScanCallback;)V"/> + <method name="stopScan(Landroid/app/PendingIntent;)V" since="26"/> + <method name="stopScan(Landroid/bluetooth/le/ScanCallback;)V"/> + <field name="EXTRA_CALLBACK_TYPE" since="26"/> + <field name="EXTRA_ERROR_CODE" since="26"/> + <field name="EXTRA_LIST_SCAN_RESULT" since="26"/> + </class> + <class name="android/bluetooth/le/PeriodicAdvertisingParameters" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getIncludeTxPower()Z"/> + <method name="getInterval()I"/> + <field name="CREATOR"/> + </class> + <class name="android/bluetooth/le/PeriodicAdvertisingParameters$Builder" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="build()Landroid/bluetooth/le/PeriodicAdvertisingParameters;"/> + <method name="setIncludeTxPower(Z)Landroid/bluetooth/le/PeriodicAdvertisingParameters$Builder;"/> + <method name="setInterval(I)Landroid/bluetooth/le/PeriodicAdvertisingParameters$Builder;"/> + </class> + <class name="android/bluetooth/le/ScanCallback" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onBatchScanResults(Ljava/util/List;)V"/> + <method name="onScanFailed(I)V"/> + <method name="onScanResult(ILandroid/bluetooth/le/ScanResult;)V"/> + <field name="SCAN_FAILED_ALREADY_STARTED"/> + <field name="SCAN_FAILED_APPLICATION_REGISTRATION_FAILED"/> + <field name="SCAN_FAILED_FEATURE_UNSUPPORTED"/> + <field name="SCAN_FAILED_INTERNAL_ERROR"/> + </class> + <class name="android/bluetooth/le/ScanFilter" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getDeviceAddress()Ljava/lang/String;"/> + <method name="getDeviceName()Ljava/lang/String;"/> + <method name="getManufacturerData()[B"/> + <method name="getManufacturerDataMask()[B"/> + <method name="getManufacturerId()I"/> + <method name="getServiceData()[B"/> + <method name="getServiceDataMask()[B"/> + <method name="getServiceDataUuid()Landroid/os/ParcelUuid;"/> + <method name="getServiceUuid()Landroid/os/ParcelUuid;"/> + <method name="getServiceUuidMask()Landroid/os/ParcelUuid;"/> + <method name="matches(Landroid/bluetooth/le/ScanResult;)Z"/> + <field name="CREATOR"/> + </class> + <class name="android/bluetooth/le/ScanFilter$Builder" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="build()Landroid/bluetooth/le/ScanFilter;"/> + <method name="setDeviceAddress(Ljava/lang/String;)Landroid/bluetooth/le/ScanFilter$Builder;"/> + <method name="setDeviceName(Ljava/lang/String;)Landroid/bluetooth/le/ScanFilter$Builder;"/> + <method name="setManufacturerData(I[B)Landroid/bluetooth/le/ScanFilter$Builder;"/> + <method name="setManufacturerData(I[B[B)Landroid/bluetooth/le/ScanFilter$Builder;"/> + <method name="setServiceData(Landroid/os/ParcelUuid;[B)Landroid/bluetooth/le/ScanFilter$Builder;"/> + <method name="setServiceData(Landroid/os/ParcelUuid;[B[B)Landroid/bluetooth/le/ScanFilter$Builder;"/> + <method name="setServiceUuid(Landroid/os/ParcelUuid;)Landroid/bluetooth/le/ScanFilter$Builder;"/> + <method name="setServiceUuid(Landroid/os/ParcelUuid;Landroid/os/ParcelUuid;)Landroid/bluetooth/le/ScanFilter$Builder;"/> + </class> + <class name="android/bluetooth/le/ScanRecord" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAdvertiseFlags()I"/> + <method name="getBytes()[B"/> + <method name="getDeviceName()Ljava/lang/String;"/> + <method name="getManufacturerSpecificData()Landroid/util/SparseArray;"/> + <method name="getManufacturerSpecificData(I)[B"/> + <method name="getServiceData()Ljava/util/Map;"/> + <method name="getServiceData(Landroid/os/ParcelUuid;)[B"/> + <method name="getServiceUuids()Ljava/util/List;"/> + <method name="getTxPowerLevel()I"/> + </class> + <class name="android/bluetooth/le/ScanResult" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/bluetooth/BluetoothDevice;IIIIIIILandroid/bluetooth/le/ScanRecord;J)V" since="26"/> + <method name="<init>(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/le/ScanRecord;IJ)V" deprecated="26"/> + <method name="getAdvertisingSid()I" since="26"/> + <method name="getDataStatus()I" since="26"/> + <method name="getDevice()Landroid/bluetooth/BluetoothDevice;"/> + <method name="getPeriodicAdvertisingInterval()I" since="26"/> + <method name="getPrimaryPhy()I" since="26"/> + <method name="getRssi()I"/> + <method name="getScanRecord()Landroid/bluetooth/le/ScanRecord;"/> + <method name="getSecondaryPhy()I" since="26"/> + <method name="getTimestampNanos()J"/> + <method name="getTxPower()I" since="26"/> + <method name="isConnectable()Z" since="26"/> + <method name="isLegacy()Z" since="26"/> + <field name="CREATOR"/> + <field name="DATA_COMPLETE" since="26"/> + <field name="DATA_TRUNCATED" since="26"/> + <field name="PERIODIC_INTERVAL_NOT_PRESENT" since="26"/> + <field name="PHY_UNUSED" since="26"/> + <field name="SID_NOT_PRESENT" since="26"/> + <field name="TX_POWER_NOT_PRESENT" since="26"/> + </class> + <class name="android/bluetooth/le/ScanSettings" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getCallbackType()I"/> + <method name="getLegacy()Z" since="26"/> + <method name="getPhy()I" since="26"/> + <method name="getReportDelayMillis()J"/> + <method name="getScanMode()I"/> + <method name="getScanResultType()I"/> + <field name="CALLBACK_TYPE_ALL_MATCHES"/> + <field name="CALLBACK_TYPE_FIRST_MATCH" since="23"/> + <field name="CALLBACK_TYPE_MATCH_LOST" since="23"/> + <field name="CREATOR"/> + <field name="MATCH_MODE_AGGRESSIVE" since="23"/> + <field name="MATCH_MODE_STICKY" since="23"/> + <field name="MATCH_NUM_FEW_ADVERTISEMENT" since="23"/> + <field name="MATCH_NUM_MAX_ADVERTISEMENT" since="23"/> + <field name="MATCH_NUM_ONE_ADVERTISEMENT" since="23"/> + <field name="PHY_LE_ALL_SUPPORTED" since="26"/> + <field name="SCAN_MODE_BALANCED"/> + <field name="SCAN_MODE_LOW_LATENCY"/> + <field name="SCAN_MODE_LOW_POWER"/> + <field name="SCAN_MODE_OPPORTUNISTIC" since="23"/> + </class> + <class name="android/bluetooth/le/ScanSettings$Builder" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="build()Landroid/bluetooth/le/ScanSettings;"/> + <method name="setCallbackType(I)Landroid/bluetooth/le/ScanSettings$Builder;" since="23"/> + <method name="setLegacy(Z)Landroid/bluetooth/le/ScanSettings$Builder;" since="26"/> + <method name="setMatchMode(I)Landroid/bluetooth/le/ScanSettings$Builder;" since="23"/> + <method name="setNumOfMatches(I)Landroid/bluetooth/le/ScanSettings$Builder;" since="23"/> + <method name="setPhy(I)Landroid/bluetooth/le/ScanSettings$Builder;" since="26"/> + <method name="setReportDelay(J)Landroid/bluetooth/le/ScanSettings$Builder;"/> + <method name="setScanMode(I)Landroid/bluetooth/le/ScanSettings$Builder;"/> + </class> + <class name="android/companion/AssociationRequest" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <field name="CREATOR"/> + </class> + <class name="android/companion/AssociationRequest$Builder" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addDeviceFilter(Landroid/companion/DeviceFilter;)Landroid/companion/AssociationRequest$Builder;"/> + <method name="build()Landroid/companion/AssociationRequest;"/> + <method name="setSingleDevice(Z)Landroid/companion/AssociationRequest$Builder;"/> + </class> + <class name="android/companion/BluetoothDeviceFilter" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/companion/DeviceFilter"/> + <method name="<init>()V"/> + <field name="CREATOR"/> + </class> + <class name="android/companion/BluetoothDeviceFilter$Builder" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addServiceUuid(Landroid/os/ParcelUuid;Landroid/os/ParcelUuid;)Landroid/companion/BluetoothDeviceFilter$Builder;"/> + <method name="build()Landroid/companion/BluetoothDeviceFilter;"/> + <method name="setAddress(Ljava/lang/String;)Landroid/companion/BluetoothDeviceFilter$Builder;"/> + <method name="setNamePattern(Ljava/util/regex/Pattern;)Landroid/companion/BluetoothDeviceFilter$Builder;"/> + </class> + <class name="android/companion/BluetoothLeDeviceFilter" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/companion/DeviceFilter"/> + <method name="<init>()V"/> + <method name="getRenamePrefixLengthLimit()I"/> + <field name="CREATOR"/> + </class> + <class name="android/companion/BluetoothLeDeviceFilter$Builder" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="build()Landroid/companion/BluetoothLeDeviceFilter;"/> + <method name="setNamePattern(Ljava/util/regex/Pattern;)Landroid/companion/BluetoothLeDeviceFilter$Builder;"/> + <method name="setRawDataFilter([B[B)Landroid/companion/BluetoothLeDeviceFilter$Builder;"/> + <method name="setRenameFromBytes(Ljava/lang/String;Ljava/lang/String;IILjava/nio/ByteOrder;)Landroid/companion/BluetoothLeDeviceFilter$Builder;"/> + <method name="setRenameFromName(Ljava/lang/String;Ljava/lang/String;II)Landroid/companion/BluetoothLeDeviceFilter$Builder;"/> + <method name="setScanFilter(Landroid/bluetooth/le/ScanFilter;)Landroid/companion/BluetoothLeDeviceFilter$Builder;"/> + </class> + <class name="android/companion/CompanionDeviceManager" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="associate(Landroid/companion/AssociationRequest;Landroid/companion/CompanionDeviceManager$Callback;Landroid/os/Handler;)V"/> + <method name="disassociate(Ljava/lang/String;)V"/> + <method name="getAssociations()Ljava/util/List;"/> + <method name="hasNotificationAccess(Landroid/content/ComponentName;)Z"/> + <method name="requestNotificationAccess(Landroid/content/ComponentName;)V"/> + <field name="EXTRA_DEVICE"/> + </class> + <class name="android/companion/CompanionDeviceManager$Callback" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onDeviceFound(Landroid/content/IntentSender;)V"/> + <method name="onFailure(Ljava/lang/CharSequence;)V"/> + </class> + <class name="android/companion/DeviceFilter" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + </class> + <class name="android/companion/WifiDeviceFilter" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/companion/DeviceFilter"/> + <method name="<init>()V"/> + <field name="CREATOR"/> + </class> + <class name="android/companion/WifiDeviceFilter$Builder" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="build()Landroid/companion/WifiDeviceFilter;"/> + <method name="setNamePattern(Ljava/util/regex/Pattern;)Landroid/companion/WifiDeviceFilter$Builder;"/> + </class> + <class name="android/content/AbstractThreadedSyncAdapter" since="5"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;Z)V"/> + <method name="<init>(Landroid/content/Context;ZZ)V" since="11"/> + <method name="getContext()Landroid/content/Context;"/> + <method name="getSyncAdapterBinder()Landroid/os/IBinder;"/> + <method name="onPerformSync(Landroid/accounts/Account;Landroid/os/Bundle;Ljava/lang/String;Landroid/content/ContentProviderClient;Landroid/content/SyncResult;)V"/> + <method name="onSecurityException(Landroid/accounts/Account;Landroid/os/Bundle;Ljava/lang/String;Landroid/content/SyncResult;)V" since="23"/> + <method name="onSyncCanceled()V" since="8"/> + <method name="onSyncCanceled(Ljava/lang/Thread;)V" since="11"/> + <field name="LOG_SYNC_DETAILS" deprecated="16"/> + </class> + <class name="android/content/ActivityNotFoundException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/content/AsyncQueryHandler" since="1"> + <extends name="android/os/Handler"/> + <method name="<init>(Landroid/content/ContentResolver;)V"/> + <method name="cancelOperation(I)V"/> + <method name="createHandler(Landroid/os/Looper;)Landroid/os/Handler;"/> + <method name="onDeleteComplete(ILjava/lang/Object;I)V"/> + <method name="onInsertComplete(ILjava/lang/Object;Landroid/net/Uri;)V"/> + <method name="onQueryComplete(ILjava/lang/Object;Landroid/database/Cursor;)V"/> + <method name="onUpdateComplete(ILjava/lang/Object;I)V"/> + <method name="startDelete(ILjava/lang/Object;Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)V"/> + <method name="startInsert(ILjava/lang/Object;Landroid/net/Uri;Landroid/content/ContentValues;)V"/> + <method name="startQuery(ILjava/lang/Object;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="startUpdate(ILjava/lang/Object;Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)V"/> + </class> + <class name="android/content/AsyncQueryHandler$WorkerArgs" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="cookie"/> + <field name="handler"/> + <field name="orderBy"/> + <field name="projection"/> + <field name="result"/> + <field name="selection"/> + <field name="selectionArgs"/> + <field name="uri"/> + <field name="values"/> + </class> + <class name="android/content/AsyncQueryHandler$WorkerHandler" since="1"> + <extends name="android/os/Handler"/> + <method name="<init>(Landroid/content/AsyncQueryHandler;Landroid/os/Looper;)V"/> + </class> + <class name="android/content/AsyncTaskLoader" since="11"> + <extends name="android/content/Loader"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="cancelLoad()Z" removed="16"/> + <method name="cancelLoadInBackground()V" since="16"/> + <method name="isLoadInBackgroundCanceled()Z" since="16"/> + <method name="loadInBackground()Ljava/lang/Object;"/> + <method name="onCanceled(Ljava/lang/Object;)V"/> + <method name="onLoadInBackground()Ljava/lang/Object;"/> + <method name="setUpdateThrottle(J)V"/> + </class> + <class name="android/content/BroadcastReceiver" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="abortBroadcast()V"/> + <method name="clearAbortBroadcast()V"/> + <method name="getAbortBroadcast()Z"/> + <method name="getDebugUnregister()Z"/> + <method name="getResultCode()I"/> + <method name="getResultData()Ljava/lang/String;"/> + <method name="getResultExtras(Z)Landroid/os/Bundle;"/> + <method name="goAsync()Landroid/content/BroadcastReceiver$PendingResult;" since="11"/> + <method name="isInitialStickyBroadcast()Z" since="5"/> + <method name="isOrderedBroadcast()Z" since="5"/> + <method name="onReceive(Landroid/content/Context;Landroid/content/Intent;)V"/> + <method name="peekService(Landroid/content/Context;Landroid/content/Intent;)Landroid/os/IBinder;" since="3"/> + <method name="setDebugUnregister(Z)V"/> + <method name="setOrderedHint(Z)V"/> + <method name="setResult(ILjava/lang/String;Landroid/os/Bundle;)V"/> + <method name="setResultCode(I)V"/> + <method name="setResultData(Ljava/lang/String;)V"/> + <method name="setResultExtras(Landroid/os/Bundle;)V"/> + </class> + <class name="android/content/BroadcastReceiver$PendingResult" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="abortBroadcast()V"/> + <method name="clearAbortBroadcast()V"/> + <method name="finish()V"/> + <method name="getAbortBroadcast()Z"/> + <method name="getResultCode()I"/> + <method name="getResultData()Ljava/lang/String;"/> + <method name="getResultExtras(Z)Landroid/os/Bundle;"/> + <method name="setResult(ILjava/lang/String;Landroid/os/Bundle;)V"/> + <method name="setResultCode(I)V"/> + <method name="setResultData(Ljava/lang/String;)V"/> + <method name="setResultExtras(Landroid/os/Bundle;)V"/> + </class> + <class name="android/content/ClipData" since="11"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/content/ClipData;)V" since="16"/> + <method name="<init>(Landroid/content/ClipDescription;Landroid/content/ClipData$Item;)V"/> + <method name="<init>(Ljava/lang/CharSequence;[Ljava/lang/String;Landroid/content/ClipData$Item;)V"/> + <method name="addItem(Landroid/content/ClipData$Item;)V"/> + <method name="addItem(Landroid/content/ContentResolver;Landroid/content/ClipData$Item;)V" since="26"/> + <method name="getDescription()Landroid/content/ClipDescription;"/> + <method name="getItemAt(I)Landroid/content/ClipData$Item;"/> + <method name="getItemCount()I"/> + <method name="newHtmlText(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/String;)Landroid/content/ClipData;" since="16"/> + <method name="newIntent(Ljava/lang/CharSequence;Landroid/content/Intent;)Landroid/content/ClipData;"/> + <method name="newPlainText(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Landroid/content/ClipData;"/> + <method name="newRawUri(Ljava/lang/CharSequence;Landroid/net/Uri;)Landroid/content/ClipData;"/> + <method name="newUri(Landroid/content/ContentResolver;Ljava/lang/CharSequence;Landroid/net/Uri;)Landroid/content/ClipData;"/> + <field name="CREATOR"/> + </class> + <class name="android/content/ClipData$Item" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Intent;)V"/> + <method name="<init>(Landroid/net/Uri;)V"/> + <method name="<init>(Ljava/lang/CharSequence;)V"/> + <method name="<init>(Ljava/lang/CharSequence;Landroid/content/Intent;Landroid/net/Uri;)V"/> + <method name="<init>(Ljava/lang/CharSequence;Ljava/lang/String;)V" since="16"/> + <method name="<init>(Ljava/lang/CharSequence;Ljava/lang/String;Landroid/content/Intent;Landroid/net/Uri;)V" since="16"/> + <method name="coerceToHtmlText(Landroid/content/Context;)Ljava/lang/String;" since="16"/> + <method name="coerceToStyledText(Landroid/content/Context;)Ljava/lang/CharSequence;" since="16"/> + <method name="coerceToText(Landroid/content/Context;)Ljava/lang/CharSequence;"/> + <method name="getHtmlText()Ljava/lang/String;" since="16"/> + <method name="getIntent()Landroid/content/Intent;"/> + <method name="getText()Ljava/lang/CharSequence;"/> + <method name="getUri()Landroid/net/Uri;"/> + </class> + <class name="android/content/ClipDescription" since="11"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/content/ClipDescription;)V"/> + <method name="<init>(Ljava/lang/CharSequence;[Ljava/lang/String;)V"/> + <method name="compareMimeTypes(Ljava/lang/String;Ljava/lang/String;)Z"/> + <method name="filterMimeTypes(Ljava/lang/String;)[Ljava/lang/String;"/> + <method name="getExtras()Landroid/os/PersistableBundle;" since="24"/> + <method name="getLabel()Ljava/lang/CharSequence;"/> + <method name="getMimeType(I)Ljava/lang/String;"/> + <method name="getMimeTypeCount()I"/> + <method name="getTimestamp()J" since="26"/> + <method name="hasMimeType(Ljava/lang/String;)Z"/> + <method name="setExtras(Landroid/os/PersistableBundle;)V" since="24"/> + <field name="CREATOR"/> + <field name="MIMETYPE_TEXT_HTML" since="16"/> + <field name="MIMETYPE_TEXT_INTENT"/> + <field name="MIMETYPE_TEXT_PLAIN"/> + <field name="MIMETYPE_TEXT_URILIST"/> + </class> + <class name="android/content/ClipboardManager" since="11"> + <extends name="android/text/ClipboardManager"/> + <method name="<init>()V"/> + <method name="addPrimaryClipChangedListener(Landroid/content/ClipboardManager$OnPrimaryClipChangedListener;)V"/> + <method name="getPrimaryClip()Landroid/content/ClipData;"/> + <method name="getPrimaryClipDescription()Landroid/content/ClipDescription;"/> + <method name="hasPrimaryClip()Z"/> + <method name="removePrimaryClipChangedListener(Landroid/content/ClipboardManager$OnPrimaryClipChangedListener;)V"/> + <method name="setPrimaryClip(Landroid/content/ClipData;)V"/> + </class> + <class name="android/content/ClipboardManager$OnPrimaryClipChangedListener" since="11"> + <extends name="java/lang/Object"/> + <method name="onPrimaryClipChanged()V"/> + </class> + <class name="android/content/ComponentCallbacks" since="1"> + <extends name="java/lang/Object"/> + <method name="onConfigurationChanged(Landroid/content/res/Configuration;)V"/> + <method name="onLowMemory()V"/> + </class> + <class name="android/content/ComponentCallbacks2" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/content/ComponentCallbacks"/> + <method name="onTrimMemory(I)V"/> + <field name="TRIM_MEMORY_BACKGROUND"/> + <field name="TRIM_MEMORY_COMPLETE"/> + <field name="TRIM_MEMORY_MODERATE"/> + <field name="TRIM_MEMORY_RUNNING_CRITICAL" since="16"/> + <field name="TRIM_MEMORY_RUNNING_LOW" since="16"/> + <field name="TRIM_MEMORY_RUNNING_MODERATE" since="16"/> + <field name="TRIM_MEMORY_UI_HIDDEN"/> + </class> + <class name="android/content/ComponentName" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <implements name="java/lang/Cloneable" since="8"/> + <implements name="java/lang/Comparable" since="4"/> + <method name="<init>(Landroid/content/Context;Ljava/lang/Class;)V"/> + <method name="<init>(Landroid/content/Context;Ljava/lang/String;)V"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="clone()Landroid/content/ComponentName;" since="8"/> + <method name="compareTo(Landroid/content/ComponentName;)I" since="4"/> + <method name="createRelative(Landroid/content/Context;Ljava/lang/String;)Landroid/content/ComponentName;" since="23"/> + <method name="createRelative(Ljava/lang/String;Ljava/lang/String;)Landroid/content/ComponentName;" since="23"/> + <method name="flattenToShortString()Ljava/lang/String;"/> + <method name="flattenToString()Ljava/lang/String;"/> + <method name="getClassName()Ljava/lang/String;"/> + <method name="getPackageName()Ljava/lang/String;"/> + <method name="getShortClassName()Ljava/lang/String;"/> + <method name="readFromParcel(Landroid/os/Parcel;)Landroid/content/ComponentName;"/> + <method name="toShortString()Ljava/lang/String;"/> + <method name="unflattenFromString(Ljava/lang/String;)Landroid/content/ComponentName;"/> + <method name="writeToParcel(Landroid/content/ComponentName;Landroid/os/Parcel;)V"/> + <field name="CREATOR"/> + </class> + <class name="android/content/ContentProvider" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/content/ComponentCallbacks" removed="14"/> + <implements name="android/content/ComponentCallbacks2" since="14"/> + <method name="<init>()V"/> + <method name="applyBatch(Ljava/util/ArrayList;)[Landroid/content/ContentProviderResult;" since="5"/> + <method name="attachInfo(Landroid/content/Context;Landroid/content/pm/ProviderInfo;)V"/> + <method name="bulkInsert(Landroid/net/Uri;[Landroid/content/ContentValues;)I"/> + <method name="call(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;" since="11"/> + <method name="canonicalize(Landroid/net/Uri;)Landroid/net/Uri;" since="19"/> + <method name="delete(Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I"/> + <method name="dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V" since="18"/> + <method name="getCallingPackage()Ljava/lang/String;" since="19"/> + <method name="getContext()Landroid/content/Context;"/> + <method name="getPathPermissions()[Landroid/content/pm/PathPermission;" since="4"/> + <method name="getReadPermission()Ljava/lang/String;"/> + <method name="getStreamTypes(Landroid/net/Uri;Ljava/lang/String;)[Ljava/lang/String;" since="11"/> + <method name="getType(Landroid/net/Uri;)Ljava/lang/String;"/> + <method name="getWritePermission()Ljava/lang/String;"/> + <method name="insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri;"/> + <method name="isTemporary()Z"/> + <method name="onCreate()Z"/> + <method name="openAssetFile(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;" since="3"/> + <method name="openAssetFile(Landroid/net/Uri;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/content/res/AssetFileDescriptor;" since="19"/> + <method name="openFile(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;"/> + <method name="openFile(Landroid/net/Uri;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/os/ParcelFileDescriptor;" since="19"/> + <method name="openFileHelper(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;"/> + <method name="openPipeHelper(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Ljava/lang/Object;Landroid/content/ContentProvider$PipeDataWriter;)Landroid/os/ParcelFileDescriptor;" since="11"/> + <method name="openTypedAssetFile(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/res/AssetFileDescriptor;" since="11"/> + <method name="openTypedAssetFile(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/content/res/AssetFileDescriptor;" since="19"/> + <method name="query(Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/database/Cursor;" since="26"/> + <method name="query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;"/> + <method name="query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;" since="16"/> + <method name="refresh(Landroid/net/Uri;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Z" since="26"/> + <method name="setPathPermissions([Landroid/content/pm/PathPermission;)V" since="4"/> + <method name="setReadPermission(Ljava/lang/String;)V"/> + <method name="setWritePermission(Ljava/lang/String;)V"/> + <method name="shutdown()V" since="11"/> + <method name="uncanonicalize(Landroid/net/Uri;)Landroid/net/Uri;" since="19"/> + <method name="update(Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I"/> + </class> + <class name="android/content/ContentProvider$PipeDataWriter" since="11"> + <extends name="java/lang/Object"/> + <method name="writeDataToPipe(Landroid/os/ParcelFileDescriptor;Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Ljava/lang/Object;)V"/> + </class> + <class name="android/content/ContentProviderClient" since="5"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable" since="24"/> + <method name="<init>()V"/> + <method name="applyBatch(Ljava/util/ArrayList;)[Landroid/content/ContentProviderResult;"/> + <method name="bulkInsert(Landroid/net/Uri;[Landroid/content/ContentValues;)I"/> + <method name="call(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;" since="17"/> + <method name="canonicalize(Landroid/net/Uri;)Landroid/net/Uri;" since="19"/> + <method name="delete(Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I"/> + <method name="getLocalContentProvider()Landroid/content/ContentProvider;"/> + <method name="getStreamTypes(Landroid/net/Uri;Ljava/lang/String;)[Ljava/lang/String;" since="11"/> + <method name="getType(Landroid/net/Uri;)Ljava/lang/String;"/> + <method name="insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri;"/> + <method name="openAssetFile(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;"/> + <method name="openAssetFile(Landroid/net/Uri;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/content/res/AssetFileDescriptor;" since="19"/> + <method name="openFile(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;"/> + <method name="openFile(Landroid/net/Uri;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/os/ParcelFileDescriptor;" since="19"/> + <method name="openTypedAssetFileDescriptor(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/res/AssetFileDescriptor;" since="11"/> + <method name="openTypedAssetFileDescriptor(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/content/res/AssetFileDescriptor;" since="19"/> + <method name="query(Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/database/Cursor;" since="26"/> + <method name="query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;"/> + <method name="query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;" since="16"/> + <method name="refresh(Landroid/net/Uri;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Z" since="26"/> + <method name="release()Z" deprecated="24"/> + <method name="uncanonicalize(Landroid/net/Uri;)Landroid/net/Uri;" since="19"/> + <method name="update(Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I"/> + </class> + <class name="android/content/ContentProviderOperation" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="apply(Landroid/content/ContentProvider;[Landroid/content/ContentProviderResult;I)Landroid/content/ContentProviderResult;"/> + <method name="getUri()Landroid/net/Uri;"/> + <method name="isAssertQuery()Z" since="23"/> + <method name="isDelete()Z" since="23"/> + <method name="isInsert()Z" since="23"/> + <method name="isReadOperation()Z"/> + <method name="isUpdate()Z" since="23"/> + <method name="isWriteOperation()Z"/> + <method name="isYieldAllowed()Z"/> + <method name="newAssertQuery(Landroid/net/Uri;)Landroid/content/ContentProviderOperation$Builder;"/> + <method name="newDelete(Landroid/net/Uri;)Landroid/content/ContentProviderOperation$Builder;"/> + <method name="newInsert(Landroid/net/Uri;)Landroid/content/ContentProviderOperation$Builder;"/> + <method name="newUpdate(Landroid/net/Uri;)Landroid/content/ContentProviderOperation$Builder;"/> + <method name="resolveSelectionArgsBackReferences([Landroid/content/ContentProviderResult;I)[Ljava/lang/String;"/> + <method name="resolveValueBackReferences([Landroid/content/ContentProviderResult;I)Landroid/content/ContentValues;"/> + <field name="CREATOR"/> + </class> + <class name="android/content/ContentProviderOperation$Builder" since="5"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="build()Landroid/content/ContentProviderOperation;"/> + <method name="withExpectedCount(I)Landroid/content/ContentProviderOperation$Builder;"/> + <method name="withSelection(Ljava/lang/String;[Ljava/lang/String;)Landroid/content/ContentProviderOperation$Builder;"/> + <method name="withSelectionBackReference(II)Landroid/content/ContentProviderOperation$Builder;"/> + <method name="withValue(Ljava/lang/String;Ljava/lang/Object;)Landroid/content/ContentProviderOperation$Builder;"/> + <method name="withValueBackReference(Ljava/lang/String;I)Landroid/content/ContentProviderOperation$Builder;"/> + <method name="withValueBackReferences(Landroid/content/ContentValues;)Landroid/content/ContentProviderOperation$Builder;"/> + <method name="withValues(Landroid/content/ContentValues;)Landroid/content/ContentProviderOperation$Builder;"/> + <method name="withYieldAllowed(Z)Landroid/content/ContentProviderOperation$Builder;"/> + </class> + <class name="android/content/ContentProviderResult" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(I)V"/> + <method name="<init>(Landroid/net/Uri;)V"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <field name="CREATOR"/> + <field name="count"/> + <field name="uri"/> + </class> + <class name="android/content/ContentQueryMap" since="1"> + <extends name="java/util/Observable"/> + <method name="<init>(Landroid/database/Cursor;Ljava/lang/String;ZLandroid/os/Handler;)V"/> + <method name="close()V"/> + <method name="getRows()Ljava/util/Map;"/> + <method name="getValues(Ljava/lang/String;)Landroid/content/ContentValues;"/> + <method name="requery()V"/> + <method name="setKeepUpdated(Z)V"/> + </class> + <class name="android/content/ContentResolver" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="acquireContentProviderClient(Landroid/net/Uri;)Landroid/content/ContentProviderClient;" since="5"/> + <method name="acquireContentProviderClient(Ljava/lang/String;)Landroid/content/ContentProviderClient;" since="5"/> + <method name="acquireUnstableContentProviderClient(Landroid/net/Uri;)Landroid/content/ContentProviderClient;" since="16"/> + <method name="acquireUnstableContentProviderClient(Ljava/lang/String;)Landroid/content/ContentProviderClient;" since="16"/> + <method name="addPeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;J)V" since="8"/> + <method name="addStatusChangeListener(ILandroid/content/SyncStatusObserver;)Ljava/lang/Object;" since="5"/> + <method name="applyBatch(Ljava/lang/String;Ljava/util/ArrayList;)[Landroid/content/ContentProviderResult;" since="5"/> + <method name="bulkInsert(Landroid/net/Uri;[Landroid/content/ContentValues;)I"/> + <method name="call(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;" since="11"/> + <method name="cancelSync(Landroid/accounts/Account;Ljava/lang/String;)V" since="5"/> + <method name="cancelSync(Landroid/content/SyncRequest;)V" since="21"/> + <method name="cancelSync(Landroid/net/Uri;)V" deprecated="16"/> + <method name="canonicalize(Landroid/net/Uri;)Landroid/net/Uri;" since="19"/> + <method name="delete(Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I"/> + <method name="getCurrentSync()Landroid/content/SyncInfo;" since="8" deprecated="16"/> + <method name="getCurrentSyncs()Ljava/util/List;" since="11"/> + <method name="getIsSyncable(Landroid/accounts/Account;Ljava/lang/String;)I" since="5"/> + <method name="getMasterSyncAutomatically()Z" since="5"/> + <method name="getOutgoingPersistedUriPermissions()Ljava/util/List;" since="19"/> + <method name="getPeriodicSyncs(Landroid/accounts/Account;Ljava/lang/String;)Ljava/util/List;" since="8"/> + <method name="getPersistedUriPermissions()Ljava/util/List;" since="19"/> + <method name="getStreamTypes(Landroid/net/Uri;Ljava/lang/String;)[Ljava/lang/String;" since="11"/> + <method name="getSyncAdapterTypes()[Landroid/content/SyncAdapterType;" since="5"/> + <method name="getSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;)Z" since="5"/> + <method name="getType(Landroid/net/Uri;)Ljava/lang/String;"/> + <method name="insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri;"/> + <method name="isSyncActive(Landroid/accounts/Account;Ljava/lang/String;)Z" since="5"/> + <method name="isSyncPending(Landroid/accounts/Account;Ljava/lang/String;)Z" since="5"/> + <method name="notifyChange(Landroid/net/Uri;Landroid/database/ContentObserver;)V"/> + <method name="notifyChange(Landroid/net/Uri;Landroid/database/ContentObserver;I)V" since="24"/> + <method name="notifyChange(Landroid/net/Uri;Landroid/database/ContentObserver;Z)V"/> + <method name="openAssetFileDescriptor(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;" since="3"/> + <method name="openAssetFileDescriptor(Landroid/net/Uri;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/content/res/AssetFileDescriptor;" since="19"/> + <method name="openFileDescriptor(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;"/> + <method name="openFileDescriptor(Landroid/net/Uri;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/os/ParcelFileDescriptor;" since="19"/> + <method name="openInputStream(Landroid/net/Uri;)Ljava/io/InputStream;"/> + <method name="openOutputStream(Landroid/net/Uri;)Ljava/io/OutputStream;"/> + <method name="openOutputStream(Landroid/net/Uri;Ljava/lang/String;)Ljava/io/OutputStream;" since="3"/> + <method name="openTypedAssetFileDescriptor(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/res/AssetFileDescriptor;" since="11"/> + <method name="openTypedAssetFileDescriptor(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/content/res/AssetFileDescriptor;" since="19"/> + <method name="query(Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/database/Cursor;" since="26"/> + <method name="query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;"/> + <method name="query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;" since="16"/> + <method name="refresh(Landroid/net/Uri;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Z" since="26"/> + <method name="registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;)V"/> + <method name="releasePersistableUriPermission(Landroid/net/Uri;I)V" since="19"/> + <method name="removePeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V" since="8"/> + <method name="removeStatusChangeListener(Ljava/lang/Object;)V" since="5"/> + <method name="requestSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V" since="5"/> + <method name="requestSync(Landroid/content/SyncRequest;)V" since="19"/> + <method name="setIsSyncable(Landroid/accounts/Account;Ljava/lang/String;I)V" since="5"/> + <method name="setMasterSyncAutomatically(Z)V" since="5"/> + <method name="setSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;Z)V" since="5"/> + <method name="startSync(Landroid/net/Uri;Landroid/os/Bundle;)V" deprecated="16"/> + <method name="takePersistableUriPermission(Landroid/net/Uri;I)V" since="19"/> + <method name="uncanonicalize(Landroid/net/Uri;)Landroid/net/Uri;" since="19"/> + <method name="unregisterContentObserver(Landroid/database/ContentObserver;)V"/> + <method name="update(Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I"/> + <method name="validateSyncExtrasBundle(Landroid/os/Bundle;)V"/> + <field name="ANY_CURSOR_ITEM_TYPE" since="21"/> + <field name="CURSOR_DIR_BASE_TYPE"/> + <field name="CURSOR_ITEM_BASE_TYPE"/> + <field name="EXTRA_HONORED_ARGS" since="26"/> + <field name="EXTRA_REFRESH_SUPPORTED" since="26"/> + <field name="EXTRA_SIZE" since="21"/> + <field name="EXTRA_TOTAL_COUNT" since="26"/> + <field name="NOTIFY_SKIP_NOTIFY_FOR_DESCENDANTS" since="24"/> + <field name="NOTIFY_SYNC_TO_NETWORK" since="24"/> + <field name="QUERY_ARG_LIMIT" since="26"/> + <field name="QUERY_ARG_OFFSET" since="26"/> + <field name="QUERY_ARG_SORT_COLLATION" since="26"/> + <field name="QUERY_ARG_SORT_COLUMNS" since="26"/> + <field name="QUERY_ARG_SORT_DIRECTION" since="26"/> + <field name="QUERY_ARG_SQL_SELECTION" since="26"/> + <field name="QUERY_ARG_SQL_SELECTION_ARGS" since="26"/> + <field name="QUERY_ARG_SQL_SORT_ORDER" since="26"/> + <field name="QUERY_SORT_DIRECTION_ASCENDING" since="26"/> + <field name="QUERY_SORT_DIRECTION_DESCENDING" since="26"/> + <field name="SCHEME_ANDROID_RESOURCE"/> + <field name="SCHEME_CONTENT"/> + <field name="SCHEME_FILE"/> + <field name="SYNC_EXTRAS_ACCOUNT" deprecated="16"/> + <field name="SYNC_EXTRAS_DISCARD_LOCAL_DELETIONS"/> + <field name="SYNC_EXTRAS_DO_NOT_RETRY" since="8"/> + <field name="SYNC_EXTRAS_EXPEDITED"/> + <field name="SYNC_EXTRAS_FORCE" deprecated="16"/> + <field name="SYNC_EXTRAS_IGNORE_BACKOFF" since="8"/> + <field name="SYNC_EXTRAS_IGNORE_SETTINGS" since="8"/> + <field name="SYNC_EXTRAS_INITIALIZE" since="5"/> + <field name="SYNC_EXTRAS_MANUAL" since="5"/> + <field name="SYNC_EXTRAS_OVERRIDE_TOO_MANY_DELETIONS"/> + <field name="SYNC_EXTRAS_REQUIRE_CHARGING" since="24"/> + <field name="SYNC_EXTRAS_UPLOAD"/> + <field name="SYNC_OBSERVER_TYPE_ACTIVE" since="8"/> + <field name="SYNC_OBSERVER_TYPE_PENDING" since="8"/> + <field name="SYNC_OBSERVER_TYPE_SETTINGS" since="8"/> + </class> + <class name="android/content/ContentUris" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="appendId(Landroid/net/Uri$Builder;J)Landroid/net/Uri$Builder;"/> + <method name="parseId(Landroid/net/Uri;)J"/> + <method name="withAppendedId(Landroid/net/Uri;J)Landroid/net/Uri;"/> + </class> + <class name="android/content/ContentValues" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(Landroid/content/ContentValues;)V"/> + <method name="clear()V"/> + <method name="containsKey(Ljava/lang/String;)Z"/> + <method name="get(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="getAsBoolean(Ljava/lang/String;)Ljava/lang/Boolean;"/> + <method name="getAsByte(Ljava/lang/String;)Ljava/lang/Byte;"/> + <method name="getAsByteArray(Ljava/lang/String;)[B"/> + <method name="getAsDouble(Ljava/lang/String;)Ljava/lang/Double;"/> + <method name="getAsFloat(Ljava/lang/String;)Ljava/lang/Float;"/> + <method name="getAsInteger(Ljava/lang/String;)Ljava/lang/Integer;"/> + <method name="getAsLong(Ljava/lang/String;)Ljava/lang/Long;"/> + <method name="getAsShort(Ljava/lang/String;)Ljava/lang/Short;"/> + <method name="getAsString(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="keySet()Ljava/util/Set;" since="11"/> + <method name="put(Ljava/lang/String;Ljava/lang/Boolean;)V"/> + <method name="put(Ljava/lang/String;Ljava/lang/Byte;)V"/> + <method name="put(Ljava/lang/String;Ljava/lang/Double;)V"/> + <method name="put(Ljava/lang/String;Ljava/lang/Float;)V"/> + <method name="put(Ljava/lang/String;Ljava/lang/Integer;)V"/> + <method name="put(Ljava/lang/String;Ljava/lang/Long;)V"/> + <method name="put(Ljava/lang/String;Ljava/lang/Short;)V"/> + <method name="put(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="put(Ljava/lang/String;[B)V"/> + <method name="putAll(Landroid/content/ContentValues;)V"/> + <method name="putNull(Ljava/lang/String;)V"/> + <method name="remove(Ljava/lang/String;)V"/> + <method name="size()I"/> + <method name="valueSet()Ljava/util/Set;"/> + <field name="CREATOR"/> + <field name="TAG"/> + </class> + <class name="android/content/Context" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="bindService(Landroid/content/Intent;Landroid/content/ServiceConnection;I)Z"/> + <method name="checkCallingOrSelfPermission(Ljava/lang/String;)I"/> + <method name="checkCallingOrSelfUriPermission(Landroid/net/Uri;I)I"/> + <method name="checkCallingPermission(Ljava/lang/String;)I"/> + <method name="checkCallingUriPermission(Landroid/net/Uri;I)I"/> + <method name="checkPermission(Ljava/lang/String;II)I"/> + <method name="checkSelfPermission(Ljava/lang/String;)I" since="23"/> + <method name="checkUriPermission(Landroid/net/Uri;III)I"/> + <method name="checkUriPermission(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;III)I"/> + <method name="clearWallpaper()V" deprecated="16"/> + <method name="createConfigurationContext(Landroid/content/res/Configuration;)Landroid/content/Context;" since="17"/> + <method name="createContextForSplit(Ljava/lang/String;)Landroid/content/Context;" since="26"/> + <method name="createDeviceProtectedStorageContext()Landroid/content/Context;" since="24"/> + <method name="createDisplayContext(Landroid/view/Display;)Landroid/content/Context;" since="17"/> + <method name="createPackageContext(Ljava/lang/String;I)Landroid/content/Context;"/> + <method name="databaseList()[Ljava/lang/String;"/> + <method name="deleteDatabase(Ljava/lang/String;)Z"/> + <method name="deleteFile(Ljava/lang/String;)Z"/> + <method name="deleteSharedPreferences(Ljava/lang/String;)Z" since="24"/> + <method name="enforceCallingOrSelfPermission(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="enforceCallingOrSelfUriPermission(Landroid/net/Uri;ILjava/lang/String;)V"/> + <method name="enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="enforceCallingUriPermission(Landroid/net/Uri;ILjava/lang/String;)V"/> + <method name="enforcePermission(Ljava/lang/String;IILjava/lang/String;)V"/> + <method name="enforceUriPermission(Landroid/net/Uri;IIILjava/lang/String;)V"/> + <method name="enforceUriPermission(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;)V"/> + <method name="fileList()[Ljava/lang/String;"/> + <method name="getApplicationContext()Landroid/content/Context;"/> + <method name="getApplicationInfo()Landroid/content/pm/ApplicationInfo;" since="4"/> + <method name="getAssets()Landroid/content/res/AssetManager;"/> + <method name="getCacheDir()Ljava/io/File;"/> + <method name="getClassLoader()Ljava/lang/ClassLoader;"/> + <method name="getCodeCacheDir()Ljava/io/File;" since="21"/> + <method name="getColor(I)I" since="23"/> + <method name="getColorStateList(I)Landroid/content/res/ColorStateList;" since="23"/> + <method name="getContentResolver()Landroid/content/ContentResolver;"/> + <method name="getDataDir()Ljava/io/File;" since="24"/> + <method name="getDatabasePath(Ljava/lang/String;)Ljava/io/File;"/> + <method name="getDir(Ljava/lang/String;I)Ljava/io/File;"/> + <method name="getDrawable(I)Landroid/graphics/drawable/Drawable;" since="21"/> + <method name="getExternalCacheDir()Ljava/io/File;" since="8"/> + <method name="getExternalCacheDirs()[Ljava/io/File;" since="19"/> + <method name="getExternalFilesDir(Ljava/lang/String;)Ljava/io/File;" since="8"/> + <method name="getExternalFilesDirs(Ljava/lang/String;)[Ljava/io/File;" since="19"/> + <method name="getExternalMediaDirs()[Ljava/io/File;" since="21"/> + <method name="getFileStreamPath(Ljava/lang/String;)Ljava/io/File;"/> + <method name="getFilesDir()Ljava/io/File;"/> + <method name="getMainLooper()Landroid/os/Looper;"/> + <method name="getNoBackupFilesDir()Ljava/io/File;" since="21"/> + <method name="getObbDir()Ljava/io/File;" since="11"/> + <method name="getObbDirs()[Ljava/io/File;" since="19"/> + <method name="getPackageCodePath()Ljava/lang/String;" since="8"/> + <method name="getPackageManager()Landroid/content/pm/PackageManager;"/> + <method name="getPackageName()Ljava/lang/String;"/> + <method name="getPackageResourcePath()Ljava/lang/String;" since="8"/> + <method name="getResources()Landroid/content/res/Resources;"/> + <method name="getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;"/> + <method name="getString(I)Ljava/lang/String;"/> + <method name="getString(I[Ljava/lang/Object;)Ljava/lang/String;"/> + <method name="getSystemService(Ljava/lang/Class;)Ljava/lang/Object;" since="23"/> + <method name="getSystemService(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="getSystemServiceName(Ljava/lang/Class;)Ljava/lang/String;" since="23"/> + <method name="getText(I)Ljava/lang/CharSequence;"/> + <method name="getTheme()Landroid/content/res/Resources$Theme;"/> + <method name="getWallpaper()Landroid/graphics/drawable/Drawable;" deprecated="16"/> + <method name="getWallpaperDesiredMinimumHeight()I" deprecated="16"/> + <method name="getWallpaperDesiredMinimumWidth()I" deprecated="16"/> + <method name="grantUriPermission(Ljava/lang/String;Landroid/net/Uri;I)V"/> + <method name="isDeviceProtectedStorage()Z" since="24"/> + <method name="isRestricted()Z" since="4"/> + <method name="moveDatabaseFrom(Landroid/content/Context;Ljava/lang/String;)Z" since="24"/> + <method name="moveSharedPreferencesFrom(Landroid/content/Context;Ljava/lang/String;)Z" since="24"/> + <method name="obtainStyledAttributes(I[I)Landroid/content/res/TypedArray;"/> + <method name="obtainStyledAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;"/> + <method name="obtainStyledAttributes(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray;"/> + <method name="obtainStyledAttributes([I)Landroid/content/res/TypedArray;"/> + <method name="openFileInput(Ljava/lang/String;)Ljava/io/FileInputStream;"/> + <method name="openFileOutput(Ljava/lang/String;I)Ljava/io/FileOutputStream;"/> + <method name="openOrCreateDatabase(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;)Landroid/database/sqlite/SQLiteDatabase;"/> + <method name="openOrCreateDatabase(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;)Landroid/database/sqlite/SQLiteDatabase;" since="11"/> + <method name="peekWallpaper()Landroid/graphics/drawable/Drawable;" deprecated="16"/> + <method name="registerComponentCallbacks(Landroid/content/ComponentCallbacks;)V" since="14"/> + <method name="registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;"/> + <method name="registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;I)Landroid/content/Intent;" since="26"/> + <method name="registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;)Landroid/content/Intent;"/> + <method name="registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;I)Landroid/content/Intent;" since="26"/> + <method name="removeStickyBroadcast(Landroid/content/Intent;)V" deprecated="21"/> + <method name="removeStickyBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V" since="17" deprecated="21"/> + <method name="revokeUriPermission(Landroid/net/Uri;I)V"/> + <method name="revokeUriPermission(Ljava/lang/String;Landroid/net/Uri;I)V" since="26"/> + <method name="sendBroadcast(Landroid/content/Intent;)V"/> + <method name="sendBroadcast(Landroid/content/Intent;Ljava/lang/String;)V"/> + <method name="sendBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V" since="17"/> + <method name="sendBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;)V" since="17"/> + <method name="sendOrderedBroadcast(Landroid/content/Intent;Ljava/lang/String;)V"/> + <method name="sendOrderedBroadcast(Landroid/content/Intent;Ljava/lang/String;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V"/> + <method name="sendOrderedBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V" since="17"/> + <method name="sendStickyBroadcast(Landroid/content/Intent;)V" deprecated="21"/> + <method name="sendStickyBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V" since="17" deprecated="21"/> + <method name="sendStickyOrderedBroadcast(Landroid/content/Intent;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V" since="5" deprecated="21"/> + <method name="sendStickyOrderedBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V" since="17" deprecated="21"/> + <method name="setTheme(I)V"/> + <method name="setWallpaper(Landroid/graphics/Bitmap;)V" deprecated="16"/> + <method name="setWallpaper(Ljava/io/InputStream;)V" deprecated="16"/> + <method name="startActivities([Landroid/content/Intent;)V" since="11"/> + <method name="startActivities([Landroid/content/Intent;Landroid/os/Bundle;)V" since="16"/> + <method name="startActivity(Landroid/content/Intent;)V"/> + <method name="startActivity(Landroid/content/Intent;Landroid/os/Bundle;)V" since="16"/> + <method name="startForegroundService(Landroid/content/Intent;)Landroid/content/ComponentName;" since="26"/> + <method name="startInstrumentation(Landroid/content/ComponentName;Ljava/lang/String;Landroid/os/Bundle;)Z"/> + <method name="startIntentSender(Landroid/content/IntentSender;Landroid/content/Intent;III)V" since="5"/> + <method name="startIntentSender(Landroid/content/IntentSender;Landroid/content/Intent;IIILandroid/os/Bundle;)V" since="16"/> + <method name="startService(Landroid/content/Intent;)Landroid/content/ComponentName;"/> + <method name="stopService(Landroid/content/Intent;)Z"/> + <method name="unbindService(Landroid/content/ServiceConnection;)V"/> + <method name="unregisterComponentCallbacks(Landroid/content/ComponentCallbacks;)V" since="14"/> + <method name="unregisterReceiver(Landroid/content/BroadcastReceiver;)V"/> + <field name="ACCESSIBILITY_SERVICE" since="4"/> + <field name="ACCOUNT_SERVICE" since="5"/> + <field name="ACTIVITY_SERVICE"/> + <field name="ALARM_SERVICE"/> + <field name="APPWIDGET_SERVICE" since="21"/> + <field name="APP_OPS_SERVICE" since="19"/> + <field name="AUDIO_SERVICE"/> + <field name="BATTERY_SERVICE" since="21"/> + <field name="BIND_ABOVE_CLIENT" since="14"/> + <field name="BIND_ADJUST_WITH_ACTIVITY" since="14"/> + <field name="BIND_ALLOW_OOM_MANAGEMENT" since="14"/> + <field name="BIND_AUTO_CREATE"/> + <field name="BIND_DEBUG_UNBIND"/> + <field name="BIND_EXTERNAL_SERVICE" since="24"/> + <field name="BIND_IMPORTANT" since="14"/> + <field name="BIND_NOT_FOREGROUND" since="8"/> + <field name="BIND_WAIVE_PRIORITY" since="14"/> + <field name="BLUETOOTH_SERVICE" since="18"/> + <field name="CAMERA_SERVICE" since="21"/> + <field name="CAPTIONING_SERVICE" since="19"/> + <field name="CARRIER_CONFIG_SERVICE" since="23"/> + <field name="CLIPBOARD_SERVICE"/> + <field name="COMPANION_DEVICE_SERVICE" since="26"/> + <field name="CONNECTIVITY_SERVICE"/> + <field name="CONSUMER_IR_SERVICE" since="19"/> + <field name="CONTEXT_IGNORE_SECURITY"/> + <field name="CONTEXT_INCLUDE_CODE"/> + <field name="CONTEXT_RESTRICTED" since="4"/> + <field name="DEVICE_POLICY_SERVICE" since="8"/> + <field name="DISPLAY_SERVICE" since="17"/> + <field name="DOWNLOAD_SERVICE" since="9"/> + <field name="DROPBOX_SERVICE" since="8"/> + <field name="FINGERPRINT_SERVICE" since="23"/> + <field name="HARDWARE_PROPERTIES_SERVICE" since="24"/> + <field name="INPUT_METHOD_SERVICE" since="3"/> + <field name="INPUT_SERVICE" since="16"/> + <field name="IPSEC_SERVICE" since="27"/> + <field name="JOB_SCHEDULER_SERVICE" since="21"/> + <field name="KEYGUARD_SERVICE"/> + <field name="LAUNCHER_APPS_SERVICE" since="21"/> + <field name="LAYOUT_INFLATER_SERVICE"/> + <field name="LOCATION_SERVICE"/> + <field name="MEDIA_PROJECTION_SERVICE" since="21"/> + <field name="MEDIA_ROUTER_SERVICE" since="16"/> + <field name="MEDIA_SESSION_SERVICE" since="21"/> + <field name="MIDI_SERVICE" since="23"/> + <field name="MODE_APPEND"/> + <field name="MODE_ENABLE_WRITE_AHEAD_LOGGING" since="16"/> + <field name="MODE_MULTI_PROCESS" since="11" deprecated="23"/> + <field name="MODE_NO_LOCALIZED_COLLATORS" since="24"/> + <field name="MODE_PRIVATE"/> + <field name="MODE_WORLD_READABLE" deprecated="17"/> + <field name="MODE_WORLD_WRITEABLE" deprecated="17"/> + <field name="NETWORK_STATS_SERVICE" since="23"/> + <field name="NFC_SERVICE" since="10"/> + <field name="NOTIFICATION_SERVICE"/> + <field name="NSD_SERVICE" since="16"/> + <field name="POWER_SERVICE"/> + <field name="PRINT_SERVICE" since="19"/> + <field name="RECEIVER_VISIBLE_TO_INSTANT_APPS" since="26"/> + <field name="RESTRICTIONS_SERVICE" since="21"/> + <field name="SEARCH_SERVICE"/> + <field name="SENSOR_SERVICE"/> + <field name="SHORTCUT_SERVICE" since="25"/> + <field name="STORAGE_SERVICE" since="9"/> + <field name="STORAGE_STATS_SERVICE" since="26"/> + <field name="SYSTEM_HEALTH_SERVICE" since="24"/> + <field name="TELECOM_SERVICE" since="21"/> + <field name="TELEPHONY_SERVICE"/> + <field name="TELEPHONY_SUBSCRIPTION_SERVICE" since="22"/> + <field name="TEXT_CLASSIFICATION_SERVICE" since="26"/> + <field name="TEXT_SERVICES_MANAGER_SERVICE" since="14"/> + <field name="TV_INPUT_SERVICE" since="21"/> + <field name="UI_MODE_SERVICE" since="8"/> + <field name="USAGE_STATS_SERVICE" since="22"/> + <field name="USB_SERVICE" since="12"/> + <field name="USER_SERVICE" since="17"/> + <field name="VIBRATOR_SERVICE"/> + <field name="WALLPAPER_SERVICE"/> + <field name="WIFI_AWARE_SERVICE" since="26"/> + <field name="WIFI_P2P_SERVICE" since="14"/> + <field name="WIFI_SERVICE"/> + <field name="WINDOW_SERVICE"/> + </class> + <class name="android/content/ContextWrapper" since="1"> + <extends name="android/content/Context"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="attachBaseContext(Landroid/content/Context;)V"/> + <method name="getBaseContext()Landroid/content/Context;"/> + <method name="getPackageCodePath()Ljava/lang/String;"/> + <method name="getPackageResourcePath()Ljava/lang/String;"/> + </class> + <class name="android/content/CursorLoader" since="11"> + <extends name="android/content/AsyncTaskLoader"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="deliverResult(Landroid/database/Cursor;)V"/> + <method name="getProjection()[Ljava/lang/String;"/> + <method name="getSelection()Ljava/lang/String;"/> + <method name="getSelectionArgs()[Ljava/lang/String;"/> + <method name="getSortOrder()Ljava/lang/String;"/> + <method name="getUri()Landroid/net/Uri;"/> + <method name="loadInBackground()Landroid/database/Cursor;"/> + <method name="onCanceled(Landroid/database/Cursor;)V"/> + <method name="setProjection([Ljava/lang/String;)V"/> + <method name="setSelection(Ljava/lang/String;)V"/> + <method name="setSelectionArgs([Ljava/lang/String;)V"/> + <method name="setSortOrder(Ljava/lang/String;)V"/> + <method name="setUri(Landroid/net/Uri;)V"/> + </class> + <class name="android/content/DialogInterface" since="1"> + <extends name="java/lang/Object"/> + <method name="cancel()V"/> + <method name="dismiss()V"/> + <field name="BUTTON1" deprecated="16"/> + <field name="BUTTON2" deprecated="16"/> + <field name="BUTTON3" deprecated="16"/> + <field name="BUTTON_NEGATIVE" since="3"/> + <field name="BUTTON_NEUTRAL" since="3"/> + <field name="BUTTON_POSITIVE" since="3"/> + </class> + <class name="android/content/DialogInterface$OnCancelListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onCancel(Landroid/content/DialogInterface;)V"/> + </class> + <class name="android/content/DialogInterface$OnClickListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onClick(Landroid/content/DialogInterface;I)V"/> + </class> + <class name="android/content/DialogInterface$OnDismissListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onDismiss(Landroid/content/DialogInterface;)V"/> + </class> + <class name="android/content/DialogInterface$OnKeyListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onKey(Landroid/content/DialogInterface;ILandroid/view/KeyEvent;)Z"/> + </class> + <class name="android/content/DialogInterface$OnMultiChoiceClickListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onClick(Landroid/content/DialogInterface;IZ)V"/> + </class> + <class name="android/content/DialogInterface$OnShowListener" since="8"> + <extends name="java/lang/Object"/> + <method name="onShow(Landroid/content/DialogInterface;)V"/> + </class> + <class name="android/content/Entity" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/ContentValues;)V"/> + <method name="addSubValue(Landroid/net/Uri;Landroid/content/ContentValues;)V"/> + <method name="getEntityValues()Landroid/content/ContentValues;"/> + <method name="getSubValues()Ljava/util/ArrayList;"/> + </class> + <class name="android/content/Entity$NamedContentValues" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/net/Uri;Landroid/content/ContentValues;)V"/> + <field name="uri"/> + <field name="values"/> + </class> + <class name="android/content/EntityIterator" since="8"> + <extends name="java/lang/Object"/> + <implements name="java/util/Iterator"/> + <method name="close()V"/> + <method name="reset()V"/> + </class> + <class name="android/content/Intent" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <implements name="java/lang/Cloneable" since="8"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/Context;Ljava/lang/Class;)V"/> + <method name="<init>(Landroid/content/Intent;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Landroid/net/Uri;)V"/> + <method name="<init>(Ljava/lang/String;Landroid/net/Uri;Landroid/content/Context;Ljava/lang/Class;)V"/> + <method name="addCategory(Ljava/lang/String;)Landroid/content/Intent;"/> + <method name="addFlags(I)Landroid/content/Intent;"/> + <method name="cloneFilter()Landroid/content/Intent;"/> + <method name="createChooser(Landroid/content/Intent;Ljava/lang/CharSequence;)Landroid/content/Intent;"/> + <method name="createChooser(Landroid/content/Intent;Ljava/lang/CharSequence;Landroid/content/IntentSender;)Landroid/content/Intent;" since="22"/> + <method name="fillIn(Landroid/content/Intent;I)I"/> + <method name="filterEquals(Landroid/content/Intent;)Z"/> + <method name="filterHashCode()I"/> + <method name="getAction()Ljava/lang/String;"/> + <method name="getBooleanArrayExtra(Ljava/lang/String;)[Z"/> + <method name="getBooleanExtra(Ljava/lang/String;Z)Z"/> + <method name="getBundleExtra(Ljava/lang/String;)Landroid/os/Bundle;"/> + <method name="getByteArrayExtra(Ljava/lang/String;)[B"/> + <method name="getByteExtra(Ljava/lang/String;B)B"/> + <method name="getCategories()Ljava/util/Set;"/> + <method name="getCharArrayExtra(Ljava/lang/String;)[C"/> + <method name="getCharExtra(Ljava/lang/String;C)C"/> + <method name="getCharSequenceArrayExtra(Ljava/lang/String;)[Ljava/lang/CharSequence;" since="8"/> + <method name="getCharSequenceArrayListExtra(Ljava/lang/String;)Ljava/util/ArrayList;" since="8"/> + <method name="getCharSequenceExtra(Ljava/lang/String;)Ljava/lang/CharSequence;"/> + <method name="getClipData()Landroid/content/ClipData;" since="16"/> + <method name="getComponent()Landroid/content/ComponentName;"/> + <method name="getData()Landroid/net/Uri;"/> + <method name="getDataString()Ljava/lang/String;"/> + <method name="getDoubleArrayExtra(Ljava/lang/String;)[D"/> + <method name="getDoubleExtra(Ljava/lang/String;D)D"/> + <method name="getExtras()Landroid/os/Bundle;"/> + <method name="getFlags()I"/> + <method name="getFloatArrayExtra(Ljava/lang/String;)[F"/> + <method name="getFloatExtra(Ljava/lang/String;F)F"/> + <method name="getIntArrayExtra(Ljava/lang/String;)[I"/> + <method name="getIntExtra(Ljava/lang/String;I)I"/> + <method name="getIntegerArrayListExtra(Ljava/lang/String;)Ljava/util/ArrayList;"/> + <method name="getIntent(Ljava/lang/String;)Landroid/content/Intent;" deprecated="16"/> + <method name="getIntentOld(Ljava/lang/String;)Landroid/content/Intent;"/> + <method name="getLongArrayExtra(Ljava/lang/String;)[J"/> + <method name="getLongExtra(Ljava/lang/String;J)J"/> + <method name="getPackage()Ljava/lang/String;" since="4"/> + <method name="getParcelableArrayExtra(Ljava/lang/String;)[Landroid/os/Parcelable;"/> + <method name="getParcelableArrayListExtra(Ljava/lang/String;)Ljava/util/ArrayList;"/> + <method name="getParcelableExtra(Ljava/lang/String;)Landroid/os/Parcelable;"/> + <method name="getScheme()Ljava/lang/String;"/> + <method name="getSelector()Landroid/content/Intent;" since="15"/> + <method name="getSerializableExtra(Ljava/lang/String;)Ljava/io/Serializable;"/> + <method name="getShortArrayExtra(Ljava/lang/String;)[S"/> + <method name="getShortExtra(Ljava/lang/String;S)S"/> + <method name="getSourceBounds()Landroid/graphics/Rect;" since="7"/> + <method name="getStringArrayExtra(Ljava/lang/String;)[Ljava/lang/String;"/> + <method name="getStringArrayListExtra(Ljava/lang/String;)Ljava/util/ArrayList;"/> + <method name="getStringExtra(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getType()Ljava/lang/String;"/> + <method name="hasCategory(Ljava/lang/String;)Z"/> + <method name="hasExtra(Ljava/lang/String;)Z"/> + <method name="hasFileDescriptors()Z"/> + <method name="makeMainActivity(Landroid/content/ComponentName;)Landroid/content/Intent;" since="11"/> + <method name="makeMainSelectorActivity(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;" since="15"/> + <method name="makeRestartActivityTask(Landroid/content/ComponentName;)Landroid/content/Intent;" since="11"/> + <method name="normalizeMimeType(Ljava/lang/String;)Ljava/lang/String;" since="16"/> + <method name="parseIntent(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;)Landroid/content/Intent;"/> + <method name="parseUri(Ljava/lang/String;I)Landroid/content/Intent;" since="4"/> + <method name="putCharSequenceArrayListExtra(Ljava/lang/String;Ljava/util/ArrayList;)Landroid/content/Intent;" since="8"/> + <method name="putExtra(Ljava/lang/String;B)Landroid/content/Intent;"/> + <method name="putExtra(Ljava/lang/String;C)Landroid/content/Intent;"/> + <method name="putExtra(Ljava/lang/String;D)Landroid/content/Intent;"/> + <method name="putExtra(Ljava/lang/String;F)Landroid/content/Intent;"/> + <method name="putExtra(Ljava/lang/String;I)Landroid/content/Intent;"/> + <method name="putExtra(Ljava/lang/String;J)Landroid/content/Intent;"/> + <method name="putExtra(Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/Intent;"/> + <method name="putExtra(Ljava/lang/String;Landroid/os/Parcelable;)Landroid/content/Intent;"/> + <method name="putExtra(Ljava/lang/String;Ljava/io/Serializable;)Landroid/content/Intent;"/> + <method name="putExtra(Ljava/lang/String;Ljava/lang/CharSequence;)Landroid/content/Intent;"/> + <method name="putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;"/> + <method name="putExtra(Ljava/lang/String;S)Landroid/content/Intent;"/> + <method name="putExtra(Ljava/lang/String;Z)Landroid/content/Intent;"/> + <method name="putExtra(Ljava/lang/String;[B)Landroid/content/Intent;"/> + <method name="putExtra(Ljava/lang/String;[C)Landroid/content/Intent;"/> + <method name="putExtra(Ljava/lang/String;[D)Landroid/content/Intent;"/> + <method name="putExtra(Ljava/lang/String;[F)Landroid/content/Intent;"/> + <method name="putExtra(Ljava/lang/String;[I)Landroid/content/Intent;"/> + <method name="putExtra(Ljava/lang/String;[J)Landroid/content/Intent;"/> + <method name="putExtra(Ljava/lang/String;[Landroid/os/Parcelable;)Landroid/content/Intent;"/> + <method name="putExtra(Ljava/lang/String;[Ljava/lang/CharSequence;)Landroid/content/Intent;" since="8"/> + <method name="putExtra(Ljava/lang/String;[Ljava/lang/String;)Landroid/content/Intent;"/> + <method name="putExtra(Ljava/lang/String;[S)Landroid/content/Intent;"/> + <method name="putExtra(Ljava/lang/String;[Z)Landroid/content/Intent;"/> + <method name="putExtras(Landroid/content/Intent;)Landroid/content/Intent;"/> + <method name="putExtras(Landroid/os/Bundle;)Landroid/content/Intent;"/> + <method name="putIntegerArrayListExtra(Ljava/lang/String;Ljava/util/ArrayList;)Landroid/content/Intent;"/> + <method name="putParcelableArrayListExtra(Ljava/lang/String;Ljava/util/ArrayList;)Landroid/content/Intent;"/> + <method name="putStringArrayListExtra(Ljava/lang/String;Ljava/util/ArrayList;)Landroid/content/Intent;"/> + <method name="readFromParcel(Landroid/os/Parcel;)V"/> + <method name="removeCategory(Ljava/lang/String;)V"/> + <method name="removeExtra(Ljava/lang/String;)V"/> + <method name="removeFlags(I)V" since="26"/> + <method name="replaceExtras(Landroid/content/Intent;)Landroid/content/Intent;" since="3"/> + <method name="replaceExtras(Landroid/os/Bundle;)Landroid/content/Intent;" since="3"/> + <method name="resolveActivity(Landroid/content/pm/PackageManager;)Landroid/content/ComponentName;"/> + <method name="resolveActivityInfo(Landroid/content/pm/PackageManager;I)Landroid/content/pm/ActivityInfo;"/> + <method name="resolveType(Landroid/content/ContentResolver;)Ljava/lang/String;"/> + <method name="resolveType(Landroid/content/Context;)Ljava/lang/String;"/> + <method name="resolveTypeIfNeeded(Landroid/content/ContentResolver;)Ljava/lang/String;"/> + <method name="setAction(Ljava/lang/String;)Landroid/content/Intent;"/> + <method name="setClass(Landroid/content/Context;Ljava/lang/Class;)Landroid/content/Intent;"/> + <method name="setClassName(Landroid/content/Context;Ljava/lang/String;)Landroid/content/Intent;"/> + <method name="setClassName(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;"/> + <method name="setClipData(Landroid/content/ClipData;)V" since="16"/> + <method name="setComponent(Landroid/content/ComponentName;)Landroid/content/Intent;"/> + <method name="setData(Landroid/net/Uri;)Landroid/content/Intent;"/> + <method name="setDataAndNormalize(Landroid/net/Uri;)Landroid/content/Intent;" since="16"/> + <method name="setDataAndType(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/Intent;"/> + <method name="setDataAndTypeAndNormalize(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/Intent;" since="16"/> + <method name="setExtrasClassLoader(Ljava/lang/ClassLoader;)V"/> + <method name="setFlags(I)Landroid/content/Intent;"/> + <method name="setPackage(Ljava/lang/String;)Landroid/content/Intent;" since="4"/> + <method name="setSelector(Landroid/content/Intent;)V" since="15"/> + <method name="setSourceBounds(Landroid/graphics/Rect;)V" since="7"/> + <method name="setType(Ljava/lang/String;)Landroid/content/Intent;"/> + <method name="setTypeAndNormalize(Ljava/lang/String;)Landroid/content/Intent;" since="16"/> + <method name="toURI()Ljava/lang/String;" deprecated="16"/> + <method name="toUri(I)Ljava/lang/String;" since="4"/> + <field name="ACTION_AIRPLANE_MODE_CHANGED"/> + <field name="ACTION_ALL_APPS"/> + <field name="ACTION_ANSWER"/> + <field name="ACTION_APPLICATION_PREFERENCES" since="24"/> + <field name="ACTION_APPLICATION_RESTRICTIONS_CHANGED" since="21"/> + <field name="ACTION_APP_ERROR" since="14"/> + <field name="ACTION_ASSIST" since="16"/> + <field name="ACTION_ATTACH_DATA"/> + <field name="ACTION_BATTERY_CHANGED"/> + <field name="ACTION_BATTERY_LOW"/> + <field name="ACTION_BATTERY_OKAY" since="4"/> + <field name="ACTION_BOOT_COMPLETED"/> + <field name="ACTION_BUG_REPORT"/> + <field name="ACTION_CALL"/> + <field name="ACTION_CALL_BUTTON"/> + <field name="ACTION_CAMERA_BUTTON"/> + <field name="ACTION_CARRIER_SETUP" since="26"/> + <field name="ACTION_CHOOSER"/> + <field name="ACTION_CLOSE_SYSTEM_DIALOGS"/> + <field name="ACTION_CONFIGURATION_CHANGED"/> + <field name="ACTION_CREATE_DOCUMENT" since="19"/> + <field name="ACTION_CREATE_SHORTCUT"/> + <field name="ACTION_DATE_CHANGED"/> + <field name="ACTION_DEFAULT"/> + <field name="ACTION_DELETE"/> + <field name="ACTION_DEVICE_STORAGE_LOW" deprecated="26"/> + <field name="ACTION_DEVICE_STORAGE_OK" deprecated="26"/> + <field name="ACTION_DIAL"/> + <field name="ACTION_DOCK_EVENT" since="5"/> + <field name="ACTION_DREAMING_STARTED" since="17"/> + <field name="ACTION_DREAMING_STOPPED" since="17"/> + <field name="ACTION_EDIT"/> + <field name="ACTION_EXTERNAL_APPLICATIONS_AVAILABLE" since="8"/> + <field name="ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE" since="8"/> + <field name="ACTION_FACTORY_TEST"/> + <field name="ACTION_GET_CONTENT"/> + <field name="ACTION_GET_RESTRICTION_ENTRIES" since="18"/> + <field name="ACTION_GTALK_SERVICE_CONNECTED"/> + <field name="ACTION_GTALK_SERVICE_DISCONNECTED"/> + <field name="ACTION_HEADSET_PLUG"/> + <field name="ACTION_INPUT_METHOD_CHANGED" since="3"/> + <field name="ACTION_INSERT"/> + <field name="ACTION_INSERT_OR_EDIT"/> + <field name="ACTION_INSTALL_PACKAGE" since="14"/> + <field name="ACTION_LOCALE_CHANGED" since="7"/> + <field name="ACTION_LOCKED_BOOT_COMPLETED" since="24"/> + <field name="ACTION_MAIN"/> + <field name="ACTION_MANAGED_PROFILE_ADDED" since="21"/> + <field name="ACTION_MANAGED_PROFILE_AVAILABLE" since="24"/> + <field name="ACTION_MANAGED_PROFILE_REMOVED" since="21"/> + <field name="ACTION_MANAGED_PROFILE_UNAVAILABLE" since="24"/> + <field name="ACTION_MANAGED_PROFILE_UNLOCKED" since="24"/> + <field name="ACTION_MANAGE_NETWORK_USAGE" since="14"/> + <field name="ACTION_MANAGE_PACKAGE_STORAGE"/> + <field name="ACTION_MEDIA_BAD_REMOVAL"/> + <field name="ACTION_MEDIA_BUTTON"/> + <field name="ACTION_MEDIA_CHECKING" since="3"/> + <field name="ACTION_MEDIA_EJECT"/> + <field name="ACTION_MEDIA_MOUNTED"/> + <field name="ACTION_MEDIA_NOFS" since="3"/> + <field name="ACTION_MEDIA_REMOVED"/> + <field name="ACTION_MEDIA_SCANNER_FINISHED"/> + <field name="ACTION_MEDIA_SCANNER_SCAN_FILE"/> + <field name="ACTION_MEDIA_SCANNER_STARTED"/> + <field name="ACTION_MEDIA_SHARED"/> + <field name="ACTION_MEDIA_UNMOUNTABLE"/> + <field name="ACTION_MEDIA_UNMOUNTED"/> + <field name="ACTION_MY_PACKAGE_REPLACED" since="12"/> + <field name="ACTION_NEW_OUTGOING_CALL"/> + <field name="ACTION_OPEN_DOCUMENT" since="19"/> + <field name="ACTION_OPEN_DOCUMENT_TREE" since="21"/> + <field name="ACTION_PACKAGES_SUSPENDED" since="24"/> + <field name="ACTION_PACKAGES_UNSUSPENDED" since="24"/> + <field name="ACTION_PACKAGE_ADDED"/> + <field name="ACTION_PACKAGE_CHANGED"/> + <field name="ACTION_PACKAGE_DATA_CLEARED" since="3"/> + <field name="ACTION_PACKAGE_FIRST_LAUNCH" since="12"/> + <field name="ACTION_PACKAGE_FULLY_REMOVED" since="14"/> + <field name="ACTION_PACKAGE_INSTALL" deprecated="16"/> + <field name="ACTION_PACKAGE_NEEDS_VERIFICATION" since="14"/> + <field name="ACTION_PACKAGE_REMOVED"/> + <field name="ACTION_PACKAGE_REPLACED" since="3"/> + <field name="ACTION_PACKAGE_RESTARTED"/> + <field name="ACTION_PACKAGE_VERIFIED" since="17"/> + <field name="ACTION_PASTE" since="11"/> + <field name="ACTION_PICK"/> + <field name="ACTION_PICK_ACTIVITY"/> + <field name="ACTION_POWER_CONNECTED" since="4"/> + <field name="ACTION_POWER_DISCONNECTED" since="4"/> + <field name="ACTION_POWER_USAGE_SUMMARY" since="4"/> + <field name="ACTION_PROCESS_TEXT" since="23"/> + <field name="ACTION_PROVIDER_CHANGED"/> + <field name="ACTION_QUICK_CLOCK" since="17"/> + <field name="ACTION_QUICK_VIEW" since="24"/> + <field name="ACTION_REBOOT"/> + <field name="ACTION_RUN"/> + <field name="ACTION_SCREEN_OFF"/> + <field name="ACTION_SCREEN_ON"/> + <field name="ACTION_SEARCH"/> + <field name="ACTION_SEARCH_LONG_PRESS" since="3"/> + <field name="ACTION_SEND"/> + <field name="ACTION_SENDTO"/> + <field name="ACTION_SEND_MULTIPLE" since="4"/> + <field name="ACTION_SET_WALLPAPER"/> + <field name="ACTION_SHOW_APP_INFO" since="24"/> + <field name="ACTION_SHUTDOWN" since="4"/> + <field name="ACTION_SYNC"/> + <field name="ACTION_SYSTEM_TUTORIAL" since="3"/> + <field name="ACTION_TIMEZONE_CHANGED"/> + <field name="ACTION_TIME_CHANGED"/> + <field name="ACTION_TIME_TICK"/> + <field name="ACTION_UID_REMOVED"/> + <field name="ACTION_UMS_CONNECTED" deprecated="16"/> + <field name="ACTION_UMS_DISCONNECTED" deprecated="16"/> + <field name="ACTION_UNINSTALL_PACKAGE" since="14"/> + <field name="ACTION_USER_BACKGROUND" since="17"/> + <field name="ACTION_USER_FOREGROUND" since="17"/> + <field name="ACTION_USER_INITIALIZE" since="17"/> + <field name="ACTION_USER_PRESENT" since="3"/> + <field name="ACTION_USER_UNLOCKED" since="24"/> + <field name="ACTION_VIEW"/> + <field name="ACTION_VOICE_COMMAND"/> + <field name="ACTION_WALLPAPER_CHANGED" deprecated="16"/> + <field name="ACTION_WEB_SEARCH"/> + <field name="CATEGORY_ALTERNATIVE"/> + <field name="CATEGORY_APP_BROWSER" since="15"/> + <field name="CATEGORY_APP_CALCULATOR" since="15"/> + <field name="CATEGORY_APP_CALENDAR" since="15"/> + <field name="CATEGORY_APP_CONTACTS" since="15"/> + <field name="CATEGORY_APP_EMAIL" since="15"/> + <field name="CATEGORY_APP_GALLERY" since="15"/> + <field name="CATEGORY_APP_MAPS" since="15"/> + <field name="CATEGORY_APP_MARKET" since="11"/> + <field name="CATEGORY_APP_MESSAGING" since="15"/> + <field name="CATEGORY_APP_MUSIC" since="15"/> + <field name="CATEGORY_BROWSABLE"/> + <field name="CATEGORY_CAR_DOCK" since="5"/> + <field name="CATEGORY_CAR_MODE" since="8"/> + <field name="CATEGORY_DEFAULT"/> + <field name="CATEGORY_DESK_DOCK" since="5"/> + <field name="CATEGORY_DEVELOPMENT_PREFERENCE"/> + <field name="CATEGORY_EMBED"/> + <field name="CATEGORY_FRAMEWORK_INSTRUMENTATION_TEST"/> + <field name="CATEGORY_GADGET" removed="3"/> + <field name="CATEGORY_HE_DESK_DOCK" since="11"/> + <field name="CATEGORY_HOME"/> + <field name="CATEGORY_INFO" since="3"/> + <field name="CATEGORY_LAUNCHER"/> + <field name="CATEGORY_LEANBACK_LAUNCHER" since="21"/> + <field name="CATEGORY_LE_DESK_DOCK" since="11"/> + <field name="CATEGORY_MONKEY"/> + <field name="CATEGORY_OPENABLE"/> + <field name="CATEGORY_PREFERENCE"/> + <field name="CATEGORY_SAMPLE_CODE"/> + <field name="CATEGORY_SELECTED_ALTERNATIVE"/> + <field name="CATEGORY_TAB"/> + <field name="CATEGORY_TEST"/> + <field name="CATEGORY_TYPED_OPENABLE" since="26"/> + <field name="CATEGORY_UNIT_TEST"/> + <field name="CATEGORY_VOICE" since="23"/> + <field name="CATEGORY_VR_HOME" since="26"/> + <field name="CREATOR"/> + <field name="EXTRA_ALARM_COUNT"/> + <field name="EXTRA_ALLOW_MULTIPLE" since="18"/> + <field name="EXTRA_ALLOW_REPLACE" since="14" deprecated="16"/> + <field name="EXTRA_ALTERNATE_INTENTS" since="23"/> + <field name="EXTRA_ASSIST_CONTEXT" since="18"/> + <field name="EXTRA_ASSIST_INPUT_DEVICE_ID" since="23"/> + <field name="EXTRA_ASSIST_INPUT_HINT_KEYBOARD" since="21"/> + <field name="EXTRA_ASSIST_PACKAGE" since="18"/> + <field name="EXTRA_ASSIST_UID" since="23"/> + <field name="EXTRA_BCC"/> + <field name="EXTRA_BUG_REPORT" since="14"/> + <field name="EXTRA_CC"/> + <field name="EXTRA_CHANGED_COMPONENT_NAME" since="5" deprecated="16"/> + <field name="EXTRA_CHANGED_COMPONENT_NAME_LIST" since="7"/> + <field name="EXTRA_CHANGED_PACKAGE_LIST" since="8"/> + <field name="EXTRA_CHANGED_UID_LIST" since="8"/> + <field name="EXTRA_CHOOSER_REFINEMENT_INTENT_SENDER" since="23"/> + <field name="EXTRA_CHOOSER_TARGETS" since="24"/> + <field name="EXTRA_CHOSEN_COMPONENT" since="22"/> + <field name="EXTRA_CHOSEN_COMPONENT_INTENT_SENDER" since="22"/> + <field name="EXTRA_COMPONENT_NAME" since="26"/> + <field name="EXTRA_CONTENT_ANNOTATIONS" since="26"/> + <field name="EXTRA_DATA_REMOVED" since="3"/> + <field name="EXTRA_DOCK_STATE" since="5"/> + <field name="EXTRA_DOCK_STATE_CAR" since="5"/> + <field name="EXTRA_DOCK_STATE_DESK" since="5"/> + <field name="EXTRA_DOCK_STATE_HE_DESK" since="11"/> + <field name="EXTRA_DOCK_STATE_LE_DESK" since="11"/> + <field name="EXTRA_DOCK_STATE_UNDOCKED" since="5"/> + <field name="EXTRA_DONT_KILL_APP"/> + <field name="EXTRA_EMAIL"/> + <field name="EXTRA_EXCLUDE_COMPONENTS" since="24"/> + <field name="EXTRA_FROM_STORAGE" since="26"/> + <field name="EXTRA_HTML_TEXT" since="16"/> + <field name="EXTRA_INDEX" since="24"/> + <field name="EXTRA_INITIAL_INTENTS" since="5"/> + <field name="EXTRA_INSTALLER_PACKAGE_NAME" since="14"/> + <field name="EXTRA_INTENT"/> + <field name="EXTRA_KEY_EVENT"/> + <field name="EXTRA_LOCAL_ONLY" since="11"/> + <field name="EXTRA_MIME_TYPES" since="19"/> + <field name="EXTRA_NOT_UNKNOWN_SOURCE" since="14"/> + <field name="EXTRA_ORIGINATING_URI" since="17"/> + <field name="EXTRA_PACKAGE_NAME" since="24"/> + <field name="EXTRA_PHONE_NUMBER"/> + <field name="EXTRA_PROCESS_TEXT" since="23"/> + <field name="EXTRA_PROCESS_TEXT_READONLY" since="23"/> + <field name="EXTRA_QUICK_VIEW_FEATURES" since="26"/> + <field name="EXTRA_QUIET_MODE" since="24"/> + <field name="EXTRA_REFERRER" since="17"/> + <field name="EXTRA_REFERRER_NAME" since="22"/> + <field name="EXTRA_REMOTE_INTENT_TOKEN" since="5"/> + <field name="EXTRA_REPLACEMENT_EXTRAS" since="21"/> + <field name="EXTRA_REPLACING" since="3"/> + <field name="EXTRA_RESTRICTIONS_BUNDLE" since="18"/> + <field name="EXTRA_RESTRICTIONS_INTENT" since="18"/> + <field name="EXTRA_RESTRICTIONS_LIST" since="18"/> + <field name="EXTRA_RESULT_RECEIVER" since="23"/> + <field name="EXTRA_RETURN_RESULT" since="14"/> + <field name="EXTRA_SHORTCUT_ICON" deprecated="26"/> + <field name="EXTRA_SHORTCUT_ICON_RESOURCE" deprecated="26"/> + <field name="EXTRA_SHORTCUT_INTENT" deprecated="26"/> + <field name="EXTRA_SHORTCUT_NAME" deprecated="26"/> + <field name="EXTRA_SHUTDOWN_USERSPACE_ONLY" since="19"/> + <field name="EXTRA_STREAM"/> + <field name="EXTRA_SUBJECT"/> + <field name="EXTRA_TEMPLATE"/> + <field name="EXTRA_TEXT"/> + <field name="EXTRA_TITLE"/> + <field name="EXTRA_UID"/> + <field name="EXTRA_USER" since="21"/> + <field name="FILL_IN_ACTION"/> + <field name="FILL_IN_CATEGORIES"/> + <field name="FILL_IN_CLIP_DATA" since="16"/> + <field name="FILL_IN_COMPONENT"/> + <field name="FILL_IN_DATA"/> + <field name="FILL_IN_PACKAGE" since="4"/> + <field name="FILL_IN_SELECTOR" since="15"/> + <field name="FILL_IN_SOURCE_BOUNDS" since="7"/> + <field name="FLAG_ACTIVITY_BROUGHT_TO_FRONT"/> + <field name="FLAG_ACTIVITY_CLEAR_TASK" since="11"/> + <field name="FLAG_ACTIVITY_CLEAR_TOP"/> + <field name="FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET" since="3" deprecated="21"/> + <field name="FLAG_ACTIVITY_CLOSE_SYSTEM_DIALOGS" since="16" removed="17"/> + <field name="FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS"/> + <field name="FLAG_ACTIVITY_FORWARD_RESULT"/> + <field name="FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY"/> + <field name="FLAG_ACTIVITY_LAUNCH_ADJACENT" since="24"/> + <field name="FLAG_ACTIVITY_MULTIPLE_TASK"/> + <field name="FLAG_ACTIVITY_NEW_DOCUMENT" since="21"/> + <field name="FLAG_ACTIVITY_NEW_TASK"/> + <field name="FLAG_ACTIVITY_NO_ANIMATION" since="5"/> + <field name="FLAG_ACTIVITY_NO_HISTORY"/> + <field name="FLAG_ACTIVITY_NO_USER_ACTION" since="3"/> + <field name="FLAG_ACTIVITY_PREVIOUS_IS_TOP"/> + <field name="FLAG_ACTIVITY_REORDER_TO_FRONT" since="3"/> + <field name="FLAG_ACTIVITY_RESET_TASK_IF_NEEDED"/> + <field name="FLAG_ACTIVITY_RETAIN_IN_RECENTS" since="21"/> + <field name="FLAG_ACTIVITY_SINGLE_TOP"/> + <field name="FLAG_ACTIVITY_TASK_ON_HOME" since="11"/> + <field name="FLAG_DEBUG_LOG_RESOLUTION"/> + <field name="FLAG_EXCLUDE_STOPPED_PACKAGES" since="12"/> + <field name="FLAG_FROM_BACKGROUND"/> + <field name="FLAG_GRANT_PERSISTABLE_URI_PERMISSION" since="19"/> + <field name="FLAG_GRANT_PREFIX_URI_PERMISSION" since="21"/> + <field name="FLAG_GRANT_READ_URI_PERMISSION"/> + <field name="FLAG_GRANT_WRITE_URI_PERMISSION"/> + <field name="FLAG_INCLUDE_STOPPED_PACKAGES" since="12"/> + <field name="FLAG_RECEIVER_FOREGROUND" since="16"/> + <field name="FLAG_RECEIVER_NO_ABORT" since="19"/> + <field name="FLAG_RECEIVER_REGISTERED_ONLY"/> + <field name="FLAG_RECEIVER_REPLACE_PENDING" since="8"/> + <field name="FLAG_RECEIVER_VISIBLE_TO_INSTANT_APPS" since="26"/> + <field name="METADATA_DOCK_HOME" since="5"/> + <field name="URI_ALLOW_UNSAFE" since="22"/> + <field name="URI_ANDROID_APP_SCHEME" since="22"/> + <field name="URI_INTENT_SCHEME" since="4"/> + </class> + <class name="android/content/Intent$FilterComparison" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Intent;)V"/> + <method name="getIntent()Landroid/content/Intent;"/> + </class> + <class name="android/content/Intent$ShortcutIconResource" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="fromContext(Landroid/content/Context;I)Landroid/content/Intent$ShortcutIconResource;"/> + <field name="CREATOR"/> + <field name="packageName"/> + <field name="resourceName"/> + </class> + <class name="android/content/IntentFilter" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/IntentFilter;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="actionsIterator()Ljava/util/Iterator;"/> + <method name="addAction(Ljava/lang/String;)V"/> + <method name="addCategory(Ljava/lang/String;)V"/> + <method name="addDataAuthority(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="addDataPath(Ljava/lang/String;I)V"/> + <method name="addDataScheme(Ljava/lang/String;)V"/> + <method name="addDataSchemeSpecificPart(Ljava/lang/String;I)V" since="19"/> + <method name="addDataType(Ljava/lang/String;)V"/> + <method name="authoritiesIterator()Ljava/util/Iterator;"/> + <method name="categoriesIterator()Ljava/util/Iterator;"/> + <method name="countActions()I"/> + <method name="countCategories()I"/> + <method name="countDataAuthorities()I"/> + <method name="countDataPaths()I"/> + <method name="countDataSchemeSpecificParts()I" since="19"/> + <method name="countDataSchemes()I"/> + <method name="countDataTypes()I"/> + <method name="create(Ljava/lang/String;Ljava/lang/String;)Landroid/content/IntentFilter;"/> + <method name="dump(Landroid/util/Printer;Ljava/lang/String;)V"/> + <method name="getAction(I)Ljava/lang/String;"/> + <method name="getCategory(I)Ljava/lang/String;"/> + <method name="getDataAuthority(I)Landroid/content/IntentFilter$AuthorityEntry;"/> + <method name="getDataPath(I)Landroid/os/PatternMatcher;"/> + <method name="getDataScheme(I)Ljava/lang/String;"/> + <method name="getDataSchemeSpecificPart(I)Landroid/os/PatternMatcher;" since="19"/> + <method name="getDataType(I)Ljava/lang/String;"/> + <method name="getPriority()I"/> + <method name="hasAction(Ljava/lang/String;)Z"/> + <method name="hasCategory(Ljava/lang/String;)Z"/> + <method name="hasDataAuthority(Landroid/net/Uri;)Z"/> + <method name="hasDataPath(Ljava/lang/String;)Z"/> + <method name="hasDataScheme(Ljava/lang/String;)Z"/> + <method name="hasDataSchemeSpecificPart(Ljava/lang/String;)Z" since="19"/> + <method name="hasDataType(Ljava/lang/String;)Z"/> + <method name="match(Landroid/content/ContentResolver;Landroid/content/Intent;ZLjava/lang/String;)I"/> + <method name="match(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;Ljava/util/Set;Ljava/lang/String;)I"/> + <method name="matchAction(Ljava/lang/String;)Z"/> + <method name="matchCategories(Ljava/util/Set;)Ljava/lang/String;"/> + <method name="matchData(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;)I"/> + <method name="matchDataAuthority(Landroid/net/Uri;)I"/> + <method name="pathsIterator()Ljava/util/Iterator;"/> + <method name="readFromXml(Lorg/xmlpull/v1/XmlPullParser;)V"/> + <method name="schemeSpecificPartsIterator()Ljava/util/Iterator;" since="19"/> + <method name="schemesIterator()Ljava/util/Iterator;"/> + <method name="setPriority(I)V"/> + <method name="typesIterator()Ljava/util/Iterator;"/> + <method name="writeToXml(Lorg/xmlpull/v1/XmlSerializer;)V"/> + <field name="CREATOR"/> + <field name="MATCH_ADJUSTMENT_MASK"/> + <field name="MATCH_ADJUSTMENT_NORMAL"/> + <field name="MATCH_CATEGORY_EMPTY"/> + <field name="MATCH_CATEGORY_HOST"/> + <field name="MATCH_CATEGORY_MASK"/> + <field name="MATCH_CATEGORY_PATH"/> + <field name="MATCH_CATEGORY_PORT"/> + <field name="MATCH_CATEGORY_SCHEME"/> + <field name="MATCH_CATEGORY_SCHEME_SPECIFIC_PART" since="19"/> + <field name="MATCH_CATEGORY_TYPE"/> + <field name="NO_MATCH_ACTION"/> + <field name="NO_MATCH_CATEGORY"/> + <field name="NO_MATCH_DATA"/> + <field name="NO_MATCH_TYPE"/> + <field name="SYSTEM_HIGH_PRIORITY"/> + <field name="SYSTEM_LOW_PRIORITY"/> + </class> + <class name="android/content/IntentFilter$AuthorityEntry" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="getHost()Ljava/lang/String;"/> + <method name="getPort()I"/> + <method name="match(Landroid/net/Uri;)I"/> + </class> + <class name="android/content/IntentFilter$MalformedMimeTypeException" since="1"> + <extends name="android/util/AndroidException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/content/IntentSender" since="4"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getCreatorPackage()Ljava/lang/String;" since="17"/> + <method name="getCreatorUid()I" since="17"/> + <method name="getCreatorUserHandle()Landroid/os/UserHandle;" since="17"/> + <method name="getTargetPackage()Ljava/lang/String;" since="9" deprecated="17"/> + <method name="readIntentSenderOrNullFromParcel(Landroid/os/Parcel;)Landroid/content/IntentSender;"/> + <method name="sendIntent(Landroid/content/Context;ILandroid/content/Intent;Landroid/content/IntentSender$OnFinished;Landroid/os/Handler;)V"/> + <method name="sendIntent(Landroid/content/Context;ILandroid/content/Intent;Landroid/content/IntentSender$OnFinished;Landroid/os/Handler;Ljava/lang/String;)V" since="14"/> + <method name="writeIntentSenderOrNullToParcel(Landroid/content/IntentSender;Landroid/os/Parcel;)V"/> + <field name="CREATOR"/> + </class> + <class name="android/content/IntentSender$OnFinished" since="4"> + <extends name="java/lang/Object"/> + <method name="onSendFinished(Landroid/content/IntentSender;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;)V"/> + </class> + <class name="android/content/IntentSender$SendIntentException" since="4"> + <extends name="android/util/AndroidException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/Exception;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/content/Loader" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="abandon()V"/> + <method name="cancelLoad()Z" since="16"/> + <method name="commitContentChanged()V" since="18"/> + <method name="dataToString(Ljava/lang/Object;)Ljava/lang/String;"/> + <method name="deliverCancellation()V" since="16"/> + <method name="deliverResult(Ljava/lang/Object;)V"/> + <method name="dump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V"/> + <method name="forceLoad()V"/> + <method name="getContext()Landroid/content/Context;"/> + <method name="getId()I"/> + <method name="isAbandoned()Z"/> + <method name="isReset()Z"/> + <method name="isStarted()Z"/> + <method name="onAbandon()V"/> + <method name="onCancelLoad()Z" since="16"/> + <method name="onContentChanged()V"/> + <method name="onForceLoad()V"/> + <method name="onReset()V"/> + <method name="onStartLoading()V"/> + <method name="onStopLoading()V"/> + <method name="registerListener(ILandroid/content/Loader$OnLoadCompleteListener;)V"/> + <method name="registerOnLoadCanceledListener(Landroid/content/Loader$OnLoadCanceledListener;)V" since="16"/> + <method name="reset()V"/> + <method name="rollbackContentChanged()V" since="18"/> + <method name="startLoading()V"/> + <method name="stopLoading()V"/> + <method name="takeContentChanged()Z"/> + <method name="unregisterListener(Landroid/content/Loader$OnLoadCompleteListener;)V"/> + <method name="unregisterOnLoadCanceledListener(Landroid/content/Loader$OnLoadCanceledListener;)V" since="16"/> + </class> + <class name="android/content/Loader$ForceLoadContentObserver" since="11"> + <extends name="android/database/ContentObserver"/> + <method name="<init>(Landroid/content/Loader;)V"/> + </class> + <class name="android/content/Loader$OnLoadCanceledListener" since="16"> + <extends name="java/lang/Object"/> + <method name="onLoadCanceled(Landroid/content/Loader;)V"/> + </class> + <class name="android/content/Loader$OnLoadCompleteListener" since="11"> + <extends name="java/lang/Object"/> + <method name="onLoadComplete(Landroid/content/Loader;Ljava/lang/Object;)V"/> + </class> + <class name="android/content/MutableContextWrapper" since="1"> + <extends name="android/content/ContextWrapper"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="setBaseContext(Landroid/content/Context;)V"/> + </class> + <class name="android/content/OperationApplicationException" since="5"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + <method name="getNumSuccessfulYieldPoints()I"/> + </class> + <class name="android/content/PeriodicSync" since="8"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;J)V"/> + <field name="CREATOR"/> + <field name="account"/> + <field name="authority"/> + <field name="extras"/> + <field name="period"/> + </class> + <class name="android/content/QuickViewConstants" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="FEATURE_DOWNLOAD"/> + <field name="FEATURE_EDIT"/> + <field name="FEATURE_PRINT"/> + <field name="FEATURE_SEND"/> + <field name="FEATURE_VIEW"/> + </class> + <class name="android/content/ReceiverCallNotAllowedException" since="1"> + <extends name="android/util/AndroidRuntimeException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/content/RestrictionEntry" since="18"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(ILjava/lang/String;)V" since="21"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="<init>(Ljava/lang/String;I)V" since="21"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Z)V"/> + <method name="<init>(Ljava/lang/String;[Ljava/lang/String;)V"/> + <method name="createBundleArrayEntry(Ljava/lang/String;[Landroid/content/RestrictionEntry;)Landroid/content/RestrictionEntry;" since="23"/> + <method name="createBundleEntry(Ljava/lang/String;[Landroid/content/RestrictionEntry;)Landroid/content/RestrictionEntry;" since="23"/> + <method name="getAllSelectedStrings()[Ljava/lang/String;"/> + <method name="getChoiceEntries()[Ljava/lang/String;"/> + <method name="getChoiceValues()[Ljava/lang/String;"/> + <method name="getDescription()Ljava/lang/String;"/> + <method name="getIntValue()I" since="21"/> + <method name="getKey()Ljava/lang/String;"/> + <method name="getRestrictions()[Landroid/content/RestrictionEntry;" since="23"/> + <method name="getSelectedState()Z"/> + <method name="getSelectedString()Ljava/lang/String;"/> + <method name="getTitle()Ljava/lang/String;"/> + <method name="getType()I"/> + <method name="setAllSelectedStrings([Ljava/lang/String;)V"/> + <method name="setChoiceEntries(Landroid/content/Context;I)V"/> + <method name="setChoiceEntries([Ljava/lang/String;)V"/> + <method name="setChoiceValues(Landroid/content/Context;I)V"/> + <method name="setChoiceValues([Ljava/lang/String;)V"/> + <method name="setDescription(Ljava/lang/String;)V"/> + <method name="setIntValue(I)V" since="21"/> + <method name="setRestrictions([Landroid/content/RestrictionEntry;)V" since="23"/> + <method name="setSelectedState(Z)V"/> + <method name="setSelectedString(Ljava/lang/String;)V"/> + <method name="setTitle(Ljava/lang/String;)V"/> + <method name="setType(I)V"/> + <field name="CREATOR"/> + <field name="TYPE_BOOLEAN"/> + <field name="TYPE_BUNDLE" since="23"/> + <field name="TYPE_BUNDLE_ARRAY" since="23"/> + <field name="TYPE_CHOICE"/> + <field name="TYPE_INTEGER" since="21"/> + <field name="TYPE_MULTI_SELECT"/> + <field name="TYPE_NULL"/> + <field name="TYPE_STRING" since="21"/> + </class> + <class name="android/content/RestrictionsManager" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="convertRestrictionsToBundle(Ljava/util/List;)Landroid/os/Bundle;" since="23"/> + <method name="createLocalApprovalIntent()Landroid/content/Intent;"/> + <method name="getApplicationRestrictions()Landroid/os/Bundle;"/> + <method name="getManifestRestrictions(Ljava/lang/String;)Ljava/util/List;"/> + <method name="hasRestrictionsProvider()Z"/> + <method name="notifyPermissionResponse(Ljava/lang/String;Landroid/os/PersistableBundle;)V"/> + <method name="requestPermission(Ljava/lang/String;Ljava/lang/String;Landroid/os/PersistableBundle;)V"/> + <field name="ACTION_PERMISSION_RESPONSE_RECEIVED"/> + <field name="ACTION_REQUEST_LOCAL_APPROVAL"/> + <field name="ACTION_REQUEST_PERMISSION"/> + <field name="EXTRA_PACKAGE_NAME"/> + <field name="EXTRA_REQUEST_BUNDLE"/> + <field name="EXTRA_REQUEST_ID"/> + <field name="EXTRA_REQUEST_TYPE"/> + <field name="EXTRA_RESPONSE_BUNDLE"/> + <field name="META_DATA_APP_RESTRICTIONS"/> + <field name="REQUEST_KEY_APPROVE_LABEL"/> + <field name="REQUEST_KEY_DATA"/> + <field name="REQUEST_KEY_DENY_LABEL"/> + <field name="REQUEST_KEY_ICON"/> + <field name="REQUEST_KEY_ID"/> + <field name="REQUEST_KEY_MESSAGE"/> + <field name="REQUEST_KEY_NEW_REQUEST"/> + <field name="REQUEST_KEY_TITLE"/> + <field name="REQUEST_TYPE_APPROVAL"/> + <field name="RESPONSE_KEY_ERROR_CODE"/> + <field name="RESPONSE_KEY_MESSAGE"/> + <field name="RESPONSE_KEY_RESPONSE_TIMESTAMP"/> + <field name="RESPONSE_KEY_RESULT"/> + <field name="RESULT_APPROVED"/> + <field name="RESULT_DENIED"/> + <field name="RESULT_ERROR"/> + <field name="RESULT_ERROR_BAD_REQUEST"/> + <field name="RESULT_ERROR_INTERNAL"/> + <field name="RESULT_ERROR_NETWORK"/> + <field name="RESULT_NO_RESPONSE"/> + <field name="RESULT_UNKNOWN_REQUEST"/> + </class> + <class name="android/content/SearchRecentSuggestionsProvider" since="1"> + <extends name="android/content/ContentProvider"/> + <method name="<init>()V"/> + <method name="setupSuggestions(Ljava/lang/String;I)V"/> + <field name="DATABASE_MODE_2LINES"/> + <field name="DATABASE_MODE_QUERIES"/> + </class> + <class name="android/content/ServiceConnection" since="1"> + <extends name="java/lang/Object"/> + <method name="onBindingDied(Landroid/content/ComponentName;)V" since="26"/> + <method name="onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V"/> + <method name="onServiceDisconnected(Landroid/content/ComponentName;)V"/> + </class> + <class name="android/content/SharedPreferences" since="1"> + <extends name="java/lang/Object"/> + <method name="contains(Ljava/lang/String;)Z"/> + <method name="edit()Landroid/content/SharedPreferences$Editor;"/> + <method name="getAll()Ljava/util/Map;"/> + <method name="getBoolean(Ljava/lang/String;Z)Z"/> + <method name="getFloat(Ljava/lang/String;F)F"/> + <method name="getInt(Ljava/lang/String;I)I"/> + <method name="getLong(Ljava/lang/String;J)J"/> + <method name="getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getStringSet(Ljava/lang/String;Ljava/util/Set;)Ljava/util/Set;" since="11"/> + <method name="registerOnSharedPreferenceChangeListener(Landroid/content/SharedPreferences$OnSharedPreferenceChangeListener;)V"/> + <method name="unregisterOnSharedPreferenceChangeListener(Landroid/content/SharedPreferences$OnSharedPreferenceChangeListener;)V"/> + </class> + <class name="android/content/SharedPreferences$Editor" since="1"> + <extends name="java/lang/Object"/> + <method name="apply()V" since="9"/> + <method name="clear()Landroid/content/SharedPreferences$Editor;"/> + <method name="commit()Z"/> + <method name="putBoolean(Ljava/lang/String;Z)Landroid/content/SharedPreferences$Editor;"/> + <method name="putFloat(Ljava/lang/String;F)Landroid/content/SharedPreferences$Editor;"/> + <method name="putInt(Ljava/lang/String;I)Landroid/content/SharedPreferences$Editor;"/> + <method name="putLong(Ljava/lang/String;J)Landroid/content/SharedPreferences$Editor;"/> + <method name="putString(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SharedPreferences$Editor;"/> + <method name="putStringSet(Ljava/lang/String;Ljava/util/Set;)Landroid/content/SharedPreferences$Editor;" since="11"/> + <method name="remove(Ljava/lang/String;)Landroid/content/SharedPreferences$Editor;"/> + </class> + <class name="android/content/SharedPreferences$OnSharedPreferenceChangeListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onSharedPreferenceChanged(Landroid/content/SharedPreferences;Ljava/lang/String;)V"/> + </class> + <class name="android/content/SyncAdapterType" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;ZZ)V"/> + <method name="allowParallelSyncs()Z" since="11"/> + <method name="getSettingsActivity()Ljava/lang/String;" since="14"/> + <method name="isAlwaysSyncable()Z" since="11"/> + <method name="isUserVisible()Z"/> + <method name="newKey(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SyncAdapterType;"/> + <method name="supportsUploading()Z"/> + <field name="CREATOR"/> + <field name="accountType"/> + <field name="authority"/> + <field name="isKey"/> + </class> + <class name="android/content/SyncContext" since="5"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getSyncContextBinder()Landroid/os/IBinder;"/> + <method name="onFinished(Landroid/content/SyncResult;)V"/> + </class> + <class name="android/content/SyncInfo" since="8"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable" since="11"/> + <method name="<init>()V"/> + <field name="account"/> + <field name="authority"/> + <field name="startTime"/> + </class> + <class name="android/content/SyncRequest" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <field name="CREATOR"/> + </class> + <class name="android/content/SyncRequest$Builder" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="build()Landroid/content/SyncRequest;"/> + <method name="setDisallowMetered(Z)Landroid/content/SyncRequest$Builder;"/> + <method name="setExpedited(Z)Landroid/content/SyncRequest$Builder;"/> + <method name="setExtras(Landroid/os/Bundle;)Landroid/content/SyncRequest$Builder;"/> + <method name="setIgnoreBackoff(Z)Landroid/content/SyncRequest$Builder;"/> + <method name="setIgnoreSettings(Z)Landroid/content/SyncRequest$Builder;"/> + <method name="setManual(Z)Landroid/content/SyncRequest$Builder;"/> + <method name="setNoRetry(Z)Landroid/content/SyncRequest$Builder;"/> + <method name="setRequiresCharging(Z)Landroid/content/SyncRequest$Builder;" since="24"/> + <method name="setSyncAdapter(Landroid/accounts/Account;Ljava/lang/String;)Landroid/content/SyncRequest$Builder;"/> + <method name="syncOnce()Landroid/content/SyncRequest$Builder;"/> + <method name="syncPeriodic(JJ)Landroid/content/SyncRequest$Builder;"/> + </class> + <class name="android/content/SyncResult" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="clear()V"/> + <method name="hasError()Z"/> + <method name="hasHardError()Z"/> + <method name="hasSoftError()Z"/> + <method name="madeSomeProgress()Z"/> + <method name="toDebugString()Ljava/lang/String;"/> + <field name="ALREADY_IN_PROGRESS"/> + <field name="CREATOR"/> + <field name="databaseError"/> + <field name="delayUntil" since="8"/> + <field name="fullSyncRequested"/> + <field name="moreRecordsToGet"/> + <field name="partialSyncUnavailable"/> + <field name="stats"/> + <field name="syncAlreadyInProgress"/> + <field name="tooManyDeletions"/> + <field name="tooManyRetries"/> + </class> + <class name="android/content/SyncStats" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="clear()V"/> + <field name="CREATOR"/> + <field name="numAuthExceptions"/> + <field name="numConflictDetectedExceptions"/> + <field name="numDeletes"/> + <field name="numEntries"/> + <field name="numInserts"/> + <field name="numIoExceptions"/> + <field name="numParseExceptions"/> + <field name="numSkippedEntries"/> + <field name="numUpdates"/> + </class> + <class name="android/content/SyncStatusObserver" since="5"> + <extends name="java/lang/Object"/> + <method name="onStatusChanged(I)V"/> + </class> + <class name="android/content/UriMatcher" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(I)V"/> + <method name="addURI(Ljava/lang/String;Ljava/lang/String;I)V"/> + <method name="match(Landroid/net/Uri;)I"/> + <field name="NO_MATCH"/> + </class> + <class name="android/content/UriPermission" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getPersistedTime()J"/> + <method name="getUri()Landroid/net/Uri;"/> + <method name="isReadPermission()Z"/> + <method name="isWritePermission()Z"/> + <field name="CREATOR"/> + <field name="INVALID_TIME"/> + </class> + <class name="android/content/pm/ActivityInfo" since="1"> + <extends name="android/content/pm/ComponentInfo"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/pm/ActivityInfo;)V"/> + <method name="dump(Landroid/util/Printer;Ljava/lang/String;)V"/> + <method name="getThemeResource()I"/> + <field name="COLOR_MODE_DEFAULT" since="26"/> + <field name="COLOR_MODE_HDR" since="26"/> + <field name="COLOR_MODE_WIDE_COLOR_GAMUT" since="26"/> + <field name="CONFIG_COLOR_MODE" since="26"/> + <field name="CONFIG_DENSITY" since="17"/> + <field name="CONFIG_FONT_SCALE"/> + <field name="CONFIG_KEYBOARD"/> + <field name="CONFIG_KEYBOARD_HIDDEN"/> + <field name="CONFIG_LAYOUT_DIRECTION" since="17"/> + <field name="CONFIG_LOCALE"/> + <field name="CONFIG_MCC"/> + <field name="CONFIG_MNC"/> + <field name="CONFIG_NAVIGATION"/> + <field name="CONFIG_ORIENTATION"/> + <field name="CONFIG_SCREEN_LAYOUT" since="4"/> + <field name="CONFIG_SCREEN_SIZE" since="13"/> + <field name="CONFIG_SMALLEST_SCREEN_SIZE" since="13"/> + <field name="CONFIG_TOUCHSCREEN"/> + <field name="CONFIG_UI_MODE" since="8"/> + <field name="CREATOR"/> + <field name="DOCUMENT_LAUNCH_ALWAYS" since="21"/> + <field name="DOCUMENT_LAUNCH_INTO_EXISTING" since="21"/> + <field name="DOCUMENT_LAUNCH_NEVER" since="21"/> + <field name="DOCUMENT_LAUNCH_NONE" since="21"/> + <field name="FLAG_ALLOW_TASK_REPARENTING"/> + <field name="FLAG_ALWAYS_RETAIN_TASK_STATE"/> + <field name="FLAG_AUTO_REMOVE_FROM_RECENTS" since="21"/> + <field name="FLAG_CLEAR_TASK_ON_LAUNCH"/> + <field name="FLAG_ENABLE_VR_MODE" since="24"/> + <field name="FLAG_EXCLUDE_FROM_RECENTS"/> + <field name="FLAG_FINISH_ON_CLOSE_SYSTEM_DIALOGS" since="5"/> + <field name="FLAG_FINISH_ON_TASK_LAUNCH"/> + <field name="FLAG_HARDWARE_ACCELERATED" since="11"/> + <field name="FLAG_IMMERSIVE" since="18"/> + <field name="FLAG_MULTIPROCESS"/> + <field name="FLAG_NO_HISTORY" since="3"/> + <field name="FLAG_RELINQUISH_TASK_IDENTITY" since="21"/> + <field name="FLAG_RESUME_WHILE_PAUSING" since="21"/> + <field name="FLAG_SINGLE_USER" since="17"/> + <field name="FLAG_STATE_NOT_NEEDED"/> + <field name="LAUNCH_MULTIPLE"/> + <field name="LAUNCH_SINGLE_INSTANCE"/> + <field name="LAUNCH_SINGLE_TASK"/> + <field name="LAUNCH_SINGLE_TOP"/> + <field name="PERSIST_ACROSS_REBOOTS" since="21"/> + <field name="PERSIST_NEVER" since="21"/> + <field name="PERSIST_ROOT_ONLY" since="21"/> + <field name="SCREEN_ORIENTATION_BEHIND"/> + <field name="SCREEN_ORIENTATION_FULL_SENSOR" since="9"/> + <field name="SCREEN_ORIENTATION_FULL_USER" since="18"/> + <field name="SCREEN_ORIENTATION_LANDSCAPE"/> + <field name="SCREEN_ORIENTATION_LOCKED" since="18"/> + <field name="SCREEN_ORIENTATION_NOSENSOR"/> + <field name="SCREEN_ORIENTATION_PORTRAIT"/> + <field name="SCREEN_ORIENTATION_REVERSE_LANDSCAPE" since="9"/> + <field name="SCREEN_ORIENTATION_REVERSE_PORTRAIT" since="9"/> + <field name="SCREEN_ORIENTATION_SENSOR"/> + <field name="SCREEN_ORIENTATION_SENSOR_LANDSCAPE" since="9"/> + <field name="SCREEN_ORIENTATION_SENSOR_PORTRAIT" since="9"/> + <field name="SCREEN_ORIENTATION_UNSPECIFIED"/> + <field name="SCREEN_ORIENTATION_USER"/> + <field name="SCREEN_ORIENTATION_USER_LANDSCAPE" since="18"/> + <field name="SCREEN_ORIENTATION_USER_PORTRAIT" since="18"/> + <field name="UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW" since="14"/> + <field name="colorMode" since="26"/> + <field name="configChanges"/> + <field name="documentLaunchMode" since="21"/> + <field name="flags"/> + <field name="launchMode"/> + <field name="maxRecents" since="21"/> + <field name="parentActivityName" since="16"/> + <field name="permission"/> + <field name="persistableMode" since="21"/> + <field name="screenOrientation"/> + <field name="softInputMode" since="3"/> + <field name="targetActivity"/> + <field name="taskAffinity"/> + <field name="theme"/> + <field name="uiOptions" since="14"/> + <field name="windowLayout" since="24"/> + </class> + <class name="android/content/pm/ActivityInfo$WindowLayout" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>(IFIFIII)V"/> + <field name="gravity"/> + <field name="height"/> + <field name="heightFraction"/> + <field name="minHeight"/> + <field name="minWidth"/> + <field name="width"/> + <field name="widthFraction"/> + </class> + <class name="android/content/pm/ApplicationInfo" since="1"> + <extends name="android/content/pm/PackageItemInfo"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/pm/ApplicationInfo;)V"/> + <method name="dump(Landroid/util/Printer;Ljava/lang/String;)V"/> + <method name="getCategoryTitle(Landroid/content/Context;I)Ljava/lang/CharSequence;" since="26"/> + <method name="loadDescription(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;"/> + <field name="CATEGORY_AUDIO" since="26"/> + <field name="CATEGORY_GAME" since="26"/> + <field name="CATEGORY_IMAGE" since="26"/> + <field name="CATEGORY_MAPS" since="26"/> + <field name="CATEGORY_NEWS" since="26"/> + <field name="CATEGORY_PRODUCTIVITY" since="26"/> + <field name="CATEGORY_SOCIAL" since="26"/> + <field name="CATEGORY_UNDEFINED" since="26"/> + <field name="CATEGORY_VIDEO" since="26"/> + <field name="CREATOR"/> + <field name="FLAG_ALLOW_BACKUP" since="8"/> + <field name="FLAG_ALLOW_CLEAR_USER_DATA"/> + <field name="FLAG_ALLOW_TASK_REPARENTING"/> + <field name="FLAG_DEBUGGABLE"/> + <field name="FLAG_EXTERNAL_STORAGE" since="8"/> + <field name="FLAG_EXTRACT_NATIVE_LIBS" since="23"/> + <field name="FLAG_FACTORY_TEST"/> + <field name="FLAG_FULL_BACKUP_ONLY" since="21"/> + <field name="FLAG_HARDWARE_ACCELERATED" since="23"/> + <field name="FLAG_HAS_CODE"/> + <field name="FLAG_INSTALLED" since="17"/> + <field name="FLAG_IS_DATA_ONLY" since="17"/> + <field name="FLAG_IS_GAME" since="21" deprecated="26"/> + <field name="FLAG_KILL_AFTER_RESTORE" since="8"/> + <field name="FLAG_LARGE_HEAP" since="11"/> + <field name="FLAG_MULTIARCH" since="21"/> + <field name="FLAG_PERSISTENT"/> + <field name="FLAG_RESIZEABLE_FOR_SCREENS" since="4"/> + <field name="FLAG_RESTORE_ANY_VERSION" since="8"/> + <field name="FLAG_STOPPED" since="12"/> + <field name="FLAG_SUPPORTS_LARGE_SCREENS" since="4"/> + <field name="FLAG_SUPPORTS_NORMAL_SCREENS" since="4"/> + <field name="FLAG_SUPPORTS_RTL" since="17"/> + <field name="FLAG_SUPPORTS_SCREEN_DENSITIES" since="4"/> + <field name="FLAG_SUPPORTS_SMALL_SCREENS" since="4"/> + <field name="FLAG_SUPPORTS_XLARGE_SCREENS" since="11"/> + <field name="FLAG_SUSPENDED" since="24"/> + <field name="FLAG_SYSTEM"/> + <field name="FLAG_TEST_ONLY" since="4"/> + <field name="FLAG_UPDATED_SYSTEM_APP" since="4"/> + <field name="FLAG_USES_CLEARTEXT_TRAFFIC" since="23"/> + <field name="FLAG_VM_SAFE_MODE" since="8"/> + <field name="backupAgentName" since="8"/> + <field name="category" since="26"/> + <field name="className"/> + <field name="compatibleWidthLimitDp" since="13"/> + <field name="dataDir"/> + <field name="descriptionRes"/> + <field name="deviceProtectedDataDir" since="24"/> + <field name="enabled"/> + <field name="flags"/> + <field name="largestWidthLimitDp" since="13"/> + <field name="manageSpaceActivityName"/> + <field name="minSdkVersion" since="24"/> + <field name="nativeLibraryDir" since="9"/> + <field name="permission"/> + <field name="processName"/> + <field name="publicSourceDir"/> + <field name="requiresSmallestWidthDp" since="13"/> + <field name="sharedLibraryFiles"/> + <field name="sourceDir"/> + <field name="splitNames" since="26"/> + <field name="splitPublicSourceDirs" since="21"/> + <field name="splitSourceDirs" since="21"/> + <field name="storageUuid" since="26"/> + <field name="targetSdkVersion" since="4"/> + <field name="taskAffinity"/> + <field name="theme"/> + <field name="uiOptions" since="14"/> + <field name="uid"/> + </class> + <class name="android/content/pm/ApplicationInfo$DisplayNameComparator" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/Comparator"/> + <method name="<init>(Landroid/content/pm/PackageManager;)V"/> + <method name="compare(Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;)I"/> + </class> + <class name="android/content/pm/ChangedPackages" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(ILjava/util/List;)V"/> + <method name="getPackageNames()Ljava/util/List;"/> + <method name="getSequenceNumber()I"/> + <field name="CREATOR"/> + </class> + <class name="android/content/pm/ComponentInfo" since="1"> + <extends name="android/content/pm/PackageItemInfo"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/pm/ComponentInfo;)V"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="getBannerResource()I" since="20"/> + <method name="getIconResource()I"/> + <method name="getLogoResource()I" since="19"/> + <method name="isEnabled()Z" since="11"/> + <field name="applicationInfo"/> + <field name="descriptionRes" since="8"/> + <field name="directBootAware" since="24"/> + <field name="enabled"/> + <field name="exported"/> + <field name="processName"/> + <field name="splitName" since="26"/> + </class> + <class name="android/content/pm/ConfigurationInfo" since="3"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/pm/ConfigurationInfo;)V"/> + <method name="getGlEsVersion()Ljava/lang/String;" since="4"/> + <field name="CREATOR"/> + <field name="GL_ES_VERSION_UNDEFINED" since="4"/> + <field name="INPUT_FEATURE_FIVE_WAY_NAV"/> + <field name="INPUT_FEATURE_HARD_KEYBOARD"/> + <field name="reqGlEsVersion" since="4"/> + <field name="reqInputFeatures"/> + <field name="reqKeyboardType"/> + <field name="reqNavigation"/> + <field name="reqTouchScreen"/> + </class> + <class name="android/content/pm/FeatureGroupInfo" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/pm/FeatureGroupInfo;)V"/> + <field name="CREATOR"/> + <field name="features"/> + </class> + <class name="android/content/pm/FeatureInfo" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/pm/FeatureInfo;)V"/> + <method name="getGlEsVersion()Ljava/lang/String;"/> + <field name="CREATOR"/> + <field name="FLAG_REQUIRED"/> + <field name="GL_ES_VERSION_UNDEFINED"/> + <field name="flags"/> + <field name="name"/> + <field name="reqGlEsVersion"/> + <field name="version" since="24"/> + </class> + <class name="android/content/pm/IPackageInstallObserver" since="1" removed="4"> + <extends name="java/lang/Object"/> + <implements name="android/os/IInterface"/> + <method name="packageInstalled(Ljava/lang/String;I)V"/> + </class> + <class name="android/content/pm/IPackageInstallObserver$Stub" since="1" removed="4"> + <extends name="android/os/Binder"/> + <implements name="android/content/pm/IPackageInstallObserver"/> + <method name="<init>()V"/> + <method name="asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageInstallObserver;"/> + </class> + <class name="android/content/pm/InstrumentationInfo" since="1"> + <extends name="android/content/pm/PackageItemInfo"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/pm/InstrumentationInfo;)V"/> + <field name="CREATOR"/> + <field name="dataDir"/> + <field name="functionalTest"/> + <field name="handleProfiling"/> + <field name="publicSourceDir"/> + <field name="sourceDir"/> + <field name="splitNames" since="26"/> + <field name="splitPublicSourceDirs" since="21"/> + <field name="splitSourceDirs" since="21"/> + <field name="targetPackage"/> + <field name="targetProcesses" since="26"/> + </class> + <class name="android/content/pm/LabeledIntent" since="5"> + <extends name="android/content/Intent"/> + <method name="<init>(Landroid/content/Intent;Ljava/lang/String;II)V"/> + <method name="<init>(Landroid/content/Intent;Ljava/lang/String;Ljava/lang/CharSequence;I)V"/> + <method name="<init>(Ljava/lang/String;II)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/CharSequence;I)V"/> + <method name="getIconResource()I"/> + <method name="getLabelResource()I"/> + <method name="getNonLocalizedLabel()Ljava/lang/CharSequence;"/> + <method name="getSourcePackage()Ljava/lang/String;"/> + <method name="loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;"/> + <method name="loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;"/> + <field name="CREATOR"/> + </class> + <class name="android/content/pm/LauncherActivityInfo" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getApplicationInfo()Landroid/content/pm/ApplicationInfo;"/> + <method name="getBadgedIcon(I)Landroid/graphics/drawable/Drawable;"/> + <method name="getComponentName()Landroid/content/ComponentName;"/> + <method name="getFirstInstallTime()J"/> + <method name="getIcon(I)Landroid/graphics/drawable/Drawable;"/> + <method name="getLabel()Ljava/lang/CharSequence;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getUser()Landroid/os/UserHandle;"/> + </class> + <class name="android/content/pm/LauncherApps" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getActivityList(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List;"/> + <method name="getApplicationInfo(Ljava/lang/String;ILandroid/os/UserHandle;)Landroid/content/pm/ApplicationInfo;" since="26"/> + <method name="getPinItemRequest(Landroid/content/Intent;)Landroid/content/pm/LauncherApps$PinItemRequest;" since="26"/> + <method name="getProfiles()Ljava/util/List;" since="26"/> + <method name="getShortcutBadgedIconDrawable(Landroid/content/pm/ShortcutInfo;I)Landroid/graphics/drawable/Drawable;" since="25"/> + <method name="getShortcutConfigActivityIntent(Landroid/content/pm/LauncherActivityInfo;)Landroid/content/IntentSender;" since="26"/> + <method name="getShortcutConfigActivityList(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List;" since="26"/> + <method name="getShortcutIconDrawable(Landroid/content/pm/ShortcutInfo;I)Landroid/graphics/drawable/Drawable;" since="25"/> + <method name="getShortcuts(Landroid/content/pm/LauncherApps$ShortcutQuery;Landroid/os/UserHandle;)Ljava/util/List;" since="25"/> + <method name="hasShortcutHostPermission()Z" since="25"/> + <method name="isActivityEnabled(Landroid/content/ComponentName;Landroid/os/UserHandle;)Z"/> + <method name="isPackageEnabled(Ljava/lang/String;Landroid/os/UserHandle;)Z"/> + <method name="pinShortcuts(Ljava/lang/String;Ljava/util/List;Landroid/os/UserHandle;)V" since="25"/> + <method name="registerCallback(Landroid/content/pm/LauncherApps$Callback;)V"/> + <method name="registerCallback(Landroid/content/pm/LauncherApps$Callback;Landroid/os/Handler;)V"/> + <method name="resolveActivity(Landroid/content/Intent;Landroid/os/UserHandle;)Landroid/content/pm/LauncherActivityInfo;"/> + <method name="startAppDetailsActivity(Landroid/content/ComponentName;Landroid/os/UserHandle;Landroid/graphics/Rect;Landroid/os/Bundle;)V"/> + <method name="startMainActivity(Landroid/content/ComponentName;Landroid/os/UserHandle;Landroid/graphics/Rect;Landroid/os/Bundle;)V"/> + <method name="startShortcut(Landroid/content/pm/ShortcutInfo;Landroid/graphics/Rect;Landroid/os/Bundle;)V" since="25"/> + <method name="startShortcut(Ljava/lang/String;Ljava/lang/String;Landroid/graphics/Rect;Landroid/os/Bundle;Landroid/os/UserHandle;)V" since="25"/> + <method name="unregisterCallback(Landroid/content/pm/LauncherApps$Callback;)V"/> + <field name="ACTION_CONFIRM_PIN_APPWIDGET" since="26"/> + <field name="ACTION_CONFIRM_PIN_SHORTCUT" since="26"/> + <field name="EXTRA_PIN_ITEM_REQUEST" since="26"/> + </class> + <class name="android/content/pm/LauncherApps$Callback" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onPackageAdded(Ljava/lang/String;Landroid/os/UserHandle;)V"/> + <method name="onPackageChanged(Ljava/lang/String;Landroid/os/UserHandle;)V"/> + <method name="onPackageRemoved(Ljava/lang/String;Landroid/os/UserHandle;)V"/> + <method name="onPackagesAvailable([Ljava/lang/String;Landroid/os/UserHandle;Z)V"/> + <method name="onPackagesSuspended([Ljava/lang/String;Landroid/os/UserHandle;)V" since="24"/> + <method name="onPackagesUnavailable([Ljava/lang/String;Landroid/os/UserHandle;Z)V"/> + <method name="onPackagesUnsuspended([Ljava/lang/String;Landroid/os/UserHandle;)V" since="24"/> + <method name="onShortcutsChanged(Ljava/lang/String;Ljava/util/List;Landroid/os/UserHandle;)V" since="25"/> + </class> + <class name="android/content/pm/LauncherApps$PinItemRequest" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="accept()Z"/> + <method name="accept(Landroid/os/Bundle;)Z"/> + <method name="getAppWidgetProviderInfo(Landroid/content/Context;)Landroid/appwidget/AppWidgetProviderInfo;"/> + <method name="getExtras()Landroid/os/Bundle;"/> + <method name="getRequestType()I"/> + <method name="getShortcutInfo()Landroid/content/pm/ShortcutInfo;"/> + <method name="isValid()Z"/> + <field name="CREATOR"/> + <field name="REQUEST_TYPE_APPWIDGET"/> + <field name="REQUEST_TYPE_SHORTCUT"/> + </class> + <class name="android/content/pm/LauncherApps$ShortcutQuery" since="25"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="setActivity(Landroid/content/ComponentName;)Landroid/content/pm/LauncherApps$ShortcutQuery;"/> + <method name="setChangedSince(J)Landroid/content/pm/LauncherApps$ShortcutQuery;"/> + <method name="setPackage(Ljava/lang/String;)Landroid/content/pm/LauncherApps$ShortcutQuery;"/> + <method name="setQueryFlags(I)Landroid/content/pm/LauncherApps$ShortcutQuery;"/> + <method name="setShortcutIds(Ljava/util/List;)Landroid/content/pm/LauncherApps$ShortcutQuery;"/> + <field name="FLAG_GET_KEY_FIELDS_ONLY"/> + <field name="FLAG_MATCH_DYNAMIC"/> + <field name="FLAG_MATCH_MANIFEST"/> + <field name="FLAG_MATCH_PINNED"/> + </class> + <class name="android/content/pm/PackageInfo" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <field name="CREATOR"/> + <field name="INSTALL_LOCATION_AUTO" since="21"/> + <field name="INSTALL_LOCATION_INTERNAL_ONLY" since="21"/> + <field name="INSTALL_LOCATION_PREFER_EXTERNAL" since="21"/> + <field name="REQUESTED_PERMISSION_GRANTED" since="16"/> + <field name="REQUESTED_PERMISSION_REQUIRED" since="16" removed="23"/> + <field name="activities"/> + <field name="applicationInfo"/> + <field name="baseRevisionCode" since="22"/> + <field name="configPreferences" since="3"/> + <field name="featureGroups" since="21"/> + <field name="firstInstallTime" since="9"/> + <field name="gids"/> + <field name="installLocation" since="21"/> + <field name="instrumentation"/> + <field name="lastUpdateTime" since="9"/> + <field name="packageName"/> + <field name="permissions"/> + <field name="providers"/> + <field name="receivers"/> + <field name="reqFeatures" since="5"/> + <field name="requestedPermissions"/> + <field name="requestedPermissionsFlags" since="16"/> + <field name="services"/> + <field name="sharedUserId" since="3"/> + <field name="sharedUserLabel" since="3"/> + <field name="signatures"/> + <field name="splitNames" since="21"/> + <field name="splitRevisionCodes" since="22"/> + <field name="versionCode"/> + <field name="versionName"/> + </class> + <class name="android/content/pm/PackageInstaller" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="abandonSession(I)V"/> + <method name="createSession(Landroid/content/pm/PackageInstaller$SessionParams;)I"/> + <method name="getAllSessions()Ljava/util/List;"/> + <method name="getMySessions()Ljava/util/List;"/> + <method name="getSessionInfo(I)Landroid/content/pm/PackageInstaller$SessionInfo;"/> + <method name="openSession(I)Landroid/content/pm/PackageInstaller$Session;"/> + <method name="registerSessionCallback(Landroid/content/pm/PackageInstaller$SessionCallback;)V"/> + <method name="registerSessionCallback(Landroid/content/pm/PackageInstaller$SessionCallback;Landroid/os/Handler;)V"/> + <method name="uninstall(Landroid/content/pm/VersionedPackage;Landroid/content/IntentSender;)V" since="26"/> + <method name="uninstall(Ljava/lang/String;Landroid/content/IntentSender;)V"/> + <method name="unregisterSessionCallback(Landroid/content/pm/PackageInstaller$SessionCallback;)V"/> + <method name="updateSessionAppIcon(ILandroid/graphics/Bitmap;)V"/> + <method name="updateSessionAppLabel(ILjava/lang/CharSequence;)V"/> + <field name="ACTION_SESSION_COMMITTED" since="26"/> + <field name="ACTION_SESSION_DETAILS"/> + <field name="EXTRA_OTHER_PACKAGE_NAME"/> + <field name="EXTRA_PACKAGE_NAME"/> + <field name="EXTRA_SESSION" since="26"/> + <field name="EXTRA_SESSION_ID"/> + <field name="EXTRA_STATUS"/> + <field name="EXTRA_STATUS_MESSAGE"/> + <field name="EXTRA_STORAGE_PATH"/> + <field name="STATUS_FAILURE"/> + <field name="STATUS_FAILURE_ABORTED"/> + <field name="STATUS_FAILURE_BLOCKED"/> + <field name="STATUS_FAILURE_CONFLICT"/> + <field name="STATUS_FAILURE_INCOMPATIBLE"/> + <field name="STATUS_FAILURE_INVALID"/> + <field name="STATUS_FAILURE_STORAGE"/> + <field name="STATUS_PENDING_USER_ACTION"/> + <field name="STATUS_SUCCESS"/> + </class> + <class name="android/content/pm/PackageInstaller$Session" since="21"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable"/> + <method name="<init>()V"/> + <method name="abandon()V"/> + <method name="commit(Landroid/content/IntentSender;)V"/> + <method name="fsync(Ljava/io/OutputStream;)V"/> + <method name="getNames()[Ljava/lang/String;"/> + <method name="openRead(Ljava/lang/String;)Ljava/io/InputStream;"/> + <method name="openWrite(Ljava/lang/String;JJ)Ljava/io/OutputStream;"/> + <method name="removeSplit(Ljava/lang/String;)V" since="24"/> + <method name="setStagingProgress(F)V"/> + </class> + <class name="android/content/pm/PackageInstaller$SessionCallback" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onActiveChanged(IZ)V"/> + <method name="onBadgingChanged(I)V"/> + <method name="onCreated(I)V"/> + <method name="onFinished(IZ)V"/> + <method name="onProgressChanged(IF)V"/> + </class> + <class name="android/content/pm/PackageInstaller$SessionInfo" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="createDetailsIntent()Landroid/content/Intent;"/> + <method name="getAppIcon()Landroid/graphics/Bitmap;"/> + <method name="getAppLabel()Ljava/lang/CharSequence;"/> + <method name="getAppPackageName()Ljava/lang/String;"/> + <method name="getInstallReason()I" since="26"/> + <method name="getInstallerPackageName()Ljava/lang/String;"/> + <method name="getProgress()F"/> + <method name="getSessionId()I"/> + <method name="isActive()Z"/> + <method name="isSealed()Z" since="26"/> + <field name="CREATOR"/> + </class> + <class name="android/content/pm/PackageInstaller$SessionParams" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(I)V"/> + <method name="setAppIcon(Landroid/graphics/Bitmap;)V"/> + <method name="setAppLabel(Ljava/lang/CharSequence;)V"/> + <method name="setAppPackageName(Ljava/lang/String;)V"/> + <method name="setInstallLocation(I)V"/> + <method name="setInstallReason(I)V" since="26"/> + <method name="setOriginatingUid(I)V" since="24"/> + <method name="setOriginatingUri(Landroid/net/Uri;)V"/> + <method name="setReferrerUri(Landroid/net/Uri;)V"/> + <method name="setSize(J)V"/> + <field name="CREATOR"/> + <field name="MODE_FULL_INSTALL"/> + <field name="MODE_INHERIT_EXISTING"/> + </class> + <class name="android/content/pm/PackageItemInfo" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/pm/PackageItemInfo;)V"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="dumpBack(Landroid/util/Printer;Ljava/lang/String;)V"/> + <method name="dumpFront(Landroid/util/Printer;Ljava/lang/String;)V"/> + <method name="loadBanner(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;" since="20"/> + <method name="loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;"/> + <method name="loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;"/> + <method name="loadLogo(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;" since="9"/> + <method name="loadUnbadgedIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;" since="22"/> + <method name="loadXmlMetaData(Landroid/content/pm/PackageManager;Ljava/lang/String;)Landroid/content/res/XmlResourceParser;"/> + <method name="writeToParcel(Landroid/os/Parcel;I)V"/> + <field name="banner" since="20"/> + <field name="icon"/> + <field name="labelRes"/> + <field name="logo" since="9"/> + <field name="metaData"/> + <field name="name"/> + <field name="nonLocalizedLabel"/> + <field name="packageName"/> + </class> + <class name="android/content/pm/PackageItemInfo$DisplayNameComparator" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/Comparator"/> + <method name="<init>(Landroid/content/pm/PackageManager;)V"/> + <method name="compare(Landroid/content/pm/PackageItemInfo;Landroid/content/pm/PackageItemInfo;)I"/> + </class> + <class name="android/content/pm/PackageManager" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addPackageToPreferred(Ljava/lang/String;)V" deprecated="16"/> + <method name="addPermission(Landroid/content/pm/PermissionInfo;)Z"/> + <method name="addPermissionAsync(Landroid/content/pm/PermissionInfo;)Z" since="8"/> + <method name="addPreferredActivity(Landroid/content/IntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;)V" deprecated="16"/> + <method name="canRequestPackageInstalls()Z" since="26"/> + <method name="canonicalToCurrentPackageNames([Ljava/lang/String;)[Ljava/lang/String;" since="8"/> + <method name="checkPermission(Ljava/lang/String;Ljava/lang/String;)I"/> + <method name="checkSignatures(II)I" since="5"/> + <method name="checkSignatures(Ljava/lang/String;Ljava/lang/String;)I"/> + <method name="clearInstantAppCookie()V" since="26"/> + <method name="clearPackagePreferredActivities(Ljava/lang/String;)V"/> + <method name="currentToCanonicalPackageNames([Ljava/lang/String;)[Ljava/lang/String;" since="8"/> + <method name="extendVerificationTimeout(IIJ)V" since="17"/> + <method name="getActivityBanner(Landroid/content/ComponentName;)Landroid/graphics/drawable/Drawable;" since="20"/> + <method name="getActivityBanner(Landroid/content/Intent;)Landroid/graphics/drawable/Drawable;" since="20"/> + <method name="getActivityIcon(Landroid/content/ComponentName;)Landroid/graphics/drawable/Drawable;"/> + <method name="getActivityIcon(Landroid/content/Intent;)Landroid/graphics/drawable/Drawable;"/> + <method name="getActivityInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo;"/> + <method name="getActivityLogo(Landroid/content/ComponentName;)Landroid/graphics/drawable/Drawable;" since="9"/> + <method name="getActivityLogo(Landroid/content/Intent;)Landroid/graphics/drawable/Drawable;" since="9"/> + <method name="getAllPermissionGroups(I)Ljava/util/List;"/> + <method name="getApplicationBanner(Landroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable;" since="20"/> + <method name="getApplicationBanner(Ljava/lang/String;)Landroid/graphics/drawable/Drawable;" since="20"/> + <method name="getApplicationEnabledSetting(Ljava/lang/String;)I"/> + <method name="getApplicationIcon(Landroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable;"/> + <method name="getApplicationIcon(Ljava/lang/String;)Landroid/graphics/drawable/Drawable;"/> + <method name="getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;"/> + <method name="getApplicationLabel(Landroid/content/pm/ApplicationInfo;)Ljava/lang/CharSequence;"/> + <method name="getApplicationLogo(Landroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable;" since="9"/> + <method name="getApplicationLogo(Ljava/lang/String;)Landroid/graphics/drawable/Drawable;" since="9"/> + <method name="getChangedPackages(I)Landroid/content/pm/ChangedPackages;" since="26"/> + <method name="getComponentEnabledSetting(Landroid/content/ComponentName;)I"/> + <method name="getDefaultActivityIcon()Landroid/graphics/drawable/Drawable;"/> + <method name="getDrawable(Ljava/lang/String;ILandroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable;"/> + <method name="getInstalledApplications(I)Ljava/util/List;"/> + <method name="getInstalledPackages(I)Ljava/util/List;"/> + <method name="getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String;" since="5"/> + <method name="getInstantAppCookie()[B" since="26"/> + <method name="getInstantAppCookieMaxBytes()I" since="26"/> + <method name="getInstrumentationInfo(Landroid/content/ComponentName;I)Landroid/content/pm/InstrumentationInfo;"/> + <method name="getLaunchIntentForPackage(Ljava/lang/String;)Landroid/content/Intent;" since="3"/> + <method name="getLeanbackLaunchIntentForPackage(Ljava/lang/String;)Landroid/content/Intent;" since="21"/> + <method name="getNameForUid(I)Ljava/lang/String;"/> + <method name="getPackageArchiveInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;"/> + <method name="getPackageGids(Ljava/lang/String;)[I"/> + <method name="getPackageGids(Ljava/lang/String;I)[I" since="24"/> + <method name="getPackageInfo(Landroid/content/pm/VersionedPackage;I)Landroid/content/pm/PackageInfo;" since="26"/> + <method name="getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;"/> + <method name="getPackageInstaller()Landroid/content/pm/PackageInstaller;" since="21"/> + <method name="getPackageUid(Ljava/lang/String;I)I" since="24"/> + <method name="getPackagesForUid(I)[Ljava/lang/String;"/> + <method name="getPackagesHoldingPermissions([Ljava/lang/String;I)Ljava/util/List;" since="18"/> + <method name="getPermissionGroupInfo(Ljava/lang/String;I)Landroid/content/pm/PermissionGroupInfo;"/> + <method name="getPermissionInfo(Ljava/lang/String;I)Landroid/content/pm/PermissionInfo;"/> + <method name="getPreferredActivities(Ljava/util/List;Ljava/util/List;Ljava/lang/String;)I"/> + <method name="getPreferredPackages(I)Ljava/util/List;"/> + <method name="getProviderInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ProviderInfo;" since="9"/> + <method name="getReceiverInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo;"/> + <method name="getResourcesForActivity(Landroid/content/ComponentName;)Landroid/content/res/Resources;"/> + <method name="getResourcesForApplication(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/Resources;"/> + <method name="getResourcesForApplication(Ljava/lang/String;)Landroid/content/res/Resources;"/> + <method name="getServiceInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ServiceInfo;"/> + <method name="getSharedLibraries(I)Ljava/util/List;" since="26"/> + <method name="getSystemAvailableFeatures()[Landroid/content/pm/FeatureInfo;" since="5"/> + <method name="getSystemSharedLibraryNames()[Ljava/lang/String;" since="3"/> + <method name="getText(Ljava/lang/String;ILandroid/content/pm/ApplicationInfo;)Ljava/lang/CharSequence;"/> + <method name="getUserBadgedDrawableForDensity(Landroid/graphics/drawable/Drawable;Landroid/os/UserHandle;Landroid/graphics/Rect;I)Landroid/graphics/drawable/Drawable;" since="21"/> + <method name="getUserBadgedIcon(Landroid/graphics/drawable/Drawable;Landroid/os/UserHandle;)Landroid/graphics/drawable/Drawable;" since="21"/> + <method name="getUserBadgedLabel(Ljava/lang/CharSequence;Landroid/os/UserHandle;)Ljava/lang/CharSequence;" since="21"/> + <method name="getXml(Ljava/lang/String;ILandroid/content/pm/ApplicationInfo;)Landroid/content/res/XmlResourceParser;"/> + <method name="hasSystemFeature(Ljava/lang/String;)Z" since="5"/> + <method name="hasSystemFeature(Ljava/lang/String;I)Z" since="24"/> + <method name="installPackage(Landroid/net/Uri;)V" removed="4"/> + <method name="installPackage(Landroid/net/Uri;Landroid/content/pm/IPackageInstallObserver;I)V" removed="4"/> + <method name="isInstantApp()Z" since="26"/> + <method name="isInstantApp(Ljava/lang/String;)Z" since="26"/> + <method name="isPermissionRevokedByPolicy(Ljava/lang/String;Ljava/lang/String;)Z" since="23"/> + <method name="isSafeMode()Z" since="3"/> + <method name="queryBroadcastReceivers(Landroid/content/Intent;I)Ljava/util/List;"/> + <method name="queryContentProviders(Ljava/lang/String;II)Ljava/util/List;"/> + <method name="queryInstrumentation(Ljava/lang/String;I)Ljava/util/List;"/> + <method name="queryIntentActivities(Landroid/content/Intent;I)Ljava/util/List;"/> + <method name="queryIntentActivityOptions(Landroid/content/ComponentName;[Landroid/content/Intent;Landroid/content/Intent;I)Ljava/util/List;"/> + <method name="queryIntentContentProviders(Landroid/content/Intent;I)Ljava/util/List;" since="19"/> + <method name="queryIntentServices(Landroid/content/Intent;I)Ljava/util/List;"/> + <method name="queryPermissionsByGroup(Ljava/lang/String;I)Ljava/util/List;"/> + <method name="removePackageFromPreferred(Ljava/lang/String;)V" deprecated="16"/> + <method name="removePermission(Ljava/lang/String;)V"/> + <method name="resolveActivity(Landroid/content/Intent;I)Landroid/content/pm/ResolveInfo;"/> + <method name="resolveContentProvider(Ljava/lang/String;I)Landroid/content/pm/ProviderInfo;"/> + <method name="resolveService(Landroid/content/Intent;I)Landroid/content/pm/ResolveInfo;"/> + <method name="setApplicationCategoryHint(Ljava/lang/String;I)V" since="26"/> + <method name="setApplicationEnabledSetting(Ljava/lang/String;II)V"/> + <method name="setComponentEnabledSetting(Landroid/content/ComponentName;II)V"/> + <method name="setInstallerPackageName(Ljava/lang/String;Ljava/lang/String;)V" since="11"/> + <method name="updateInstantAppCookie([B)V" since="26"/> + <method name="verifyPendingInstall(II)V" since="14"/> + <field name="COMPONENT_ENABLED_STATE_DEFAULT"/> + <field name="COMPONENT_ENABLED_STATE_DISABLED"/> + <field name="COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED" since="18"/> + <field name="COMPONENT_ENABLED_STATE_DISABLED_USER" since="14"/> + <field name="COMPONENT_ENABLED_STATE_ENABLED"/> + <field name="DONT_KILL_APP"/> + <field name="EXTRA_VERIFICATION_ID" since="14"/> + <field name="EXTRA_VERIFICATION_RESULT" since="17"/> + <field name="FEATURE_ACTIVITIES_ON_SECONDARY_DISPLAYS" since="26"/> + <field name="FEATURE_APP_WIDGETS" since="18"/> + <field name="FEATURE_AUDIO_LOW_LATENCY" since="9"/> + <field name="FEATURE_AUDIO_OUTPUT" since="21"/> + <field name="FEATURE_AUDIO_PRO" since="23"/> + <field name="FEATURE_AUTOFILL" since="26"/> + <field name="FEATURE_AUTOMOTIVE" since="23"/> + <field name="FEATURE_BACKUP" since="20"/> + <field name="FEATURE_BLUETOOTH" since="8"/> + <field name="FEATURE_BLUETOOTH_LE" since="18"/> + <field name="FEATURE_CAMERA" since="7"/> + <field name="FEATURE_CAMERA_ANY" since="17"/> + <field name="FEATURE_CAMERA_AUTOFOCUS" since="7"/> + <field name="FEATURE_CAMERA_CAPABILITY_MANUAL_POST_PROCESSING" since="21"/> + <field name="FEATURE_CAMERA_CAPABILITY_MANUAL_SENSOR" since="21"/> + <field name="FEATURE_CAMERA_CAPABILITY_RAW" since="21"/> + <field name="FEATURE_CAMERA_EXTERNAL" since="20"/> + <field name="FEATURE_CAMERA_FLASH" since="7"/> + <field name="FEATURE_CAMERA_FRONT" since="9"/> + <field name="FEATURE_CAMERA_LEVEL_FULL" since="21"/> + <field name="FEATURE_COMPANION_DEVICE_SETUP" since="26"/> + <field name="FEATURE_CONNECTION_SERVICE" since="21"/> + <field name="FEATURE_CONSUMER_IR" since="19"/> + <field name="FEATURE_DEVICE_ADMIN" since="19"/> + <field name="FEATURE_EMBEDDED" since="26"/> + <field name="FEATURE_ETHERNET" since="24"/> + <field name="FEATURE_FAKETOUCH" since="11"/> + <field name="FEATURE_FAKETOUCH_MULTITOUCH_DISTINCT" since="13"/> + <field name="FEATURE_FAKETOUCH_MULTITOUCH_JAZZHAND" since="13"/> + <field name="FEATURE_FINGERPRINT" since="23"/> + <field name="FEATURE_FREEFORM_WINDOW_MANAGEMENT" since="24"/> + <field name="FEATURE_GAMEPAD" since="21"/> + <field name="FEATURE_HIFI_SENSORS" since="23"/> + <field name="FEATURE_HOME_SCREEN" since="18"/> + <field name="FEATURE_INPUT_METHODS" since="18"/> + <field name="FEATURE_LEANBACK" since="21"/> + <field name="FEATURE_LEANBACK_ONLY" since="26"/> + <field name="FEATURE_LIVE_TV" since="21"/> + <field name="FEATURE_LIVE_WALLPAPER" since="7"/> + <field name="FEATURE_LOCATION" since="8"/> + <field name="FEATURE_LOCATION_GPS" since="8"/> + <field name="FEATURE_LOCATION_NETWORK" since="8"/> + <field name="FEATURE_MANAGED_USERS" since="21"/> + <field name="FEATURE_MICROPHONE" since="8"/> + <field name="FEATURE_MIDI" since="23"/> + <field name="FEATURE_NFC" since="9"/> + <field name="FEATURE_NFC_HOST_CARD_EMULATION" since="19"/> + <field name="FEATURE_NFC_HOST_CARD_EMULATION_NFCF" since="24"/> + <field name="FEATURE_OPENGLES_EXTENSION_PACK" since="21"/> + <field name="FEATURE_PICTURE_IN_PICTURE" since="24"/> + <field name="FEATURE_PRINTING" since="20"/> + <field name="FEATURE_SCREEN_LANDSCAPE" since="13"/> + <field name="FEATURE_SCREEN_PORTRAIT" since="13"/> + <field name="FEATURE_SECURELY_REMOVES_USERS" since="21"/> + <field name="FEATURE_SENSOR_ACCELEROMETER" since="8"/> + <field name="FEATURE_SENSOR_AMBIENT_TEMPERATURE" since="21"/> + <field name="FEATURE_SENSOR_BAROMETER" since="9"/> + <field name="FEATURE_SENSOR_COMPASS" since="8"/> + <field name="FEATURE_SENSOR_GYROSCOPE" since="9"/> + <field name="FEATURE_SENSOR_HEART_RATE" since="20"/> + <field name="FEATURE_SENSOR_HEART_RATE_ECG" since="21"/> + <field name="FEATURE_SENSOR_LIGHT" since="7"/> + <field name="FEATURE_SENSOR_PROXIMITY" since="7"/> + <field name="FEATURE_SENSOR_RELATIVE_HUMIDITY" since="21"/> + <field name="FEATURE_SENSOR_STEP_COUNTER" since="19"/> + <field name="FEATURE_SENSOR_STEP_DETECTOR" since="19"/> + <field name="FEATURE_SIP" since="9"/> + <field name="FEATURE_SIP_VOIP" since="9"/> + <field name="FEATURE_TELEPHONY" since="7"/> + <field name="FEATURE_TELEPHONY_CDMA" since="7"/> + <field name="FEATURE_TELEPHONY_GSM" since="7"/> + <field name="FEATURE_TELEVISION" since="16" deprecated="21"/> + <field name="FEATURE_TOUCHSCREEN" since="8"/> + <field name="FEATURE_TOUCHSCREEN_MULTITOUCH" since="7"/> + <field name="FEATURE_TOUCHSCREEN_MULTITOUCH_DISTINCT" since="8"/> + <field name="FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND" since="9"/> + <field name="FEATURE_USB_ACCESSORY" since="12"/> + <field name="FEATURE_USB_HOST" since="12"/> + <field name="FEATURE_VERIFIED_BOOT" since="21"/> + <field name="FEATURE_VR_HEADTRACKING" since="26"/> + <field name="FEATURE_VR_MODE" since="24"/> + <field name="FEATURE_VR_MODE_HIGH_PERFORMANCE" since="24"/> + <field name="FEATURE_VULKAN_HARDWARE_COMPUTE" since="26"/> + <field name="FEATURE_VULKAN_HARDWARE_LEVEL" since="24"/> + <field name="FEATURE_VULKAN_HARDWARE_VERSION" since="24"/> + <field name="FEATURE_WATCH" since="20"/> + <field name="FEATURE_WEBVIEW" since="20"/> + <field name="FEATURE_WIFI" since="8"/> + <field name="FEATURE_WIFI_AWARE" since="26"/> + <field name="FEATURE_WIFI_DIRECT" since="14"/> + <field name="FORWARD_LOCK_PACKAGE" removed="4"/> + <field name="GET_ACTIVITIES"/> + <field name="GET_CONFIGURATIONS" since="3"/> + <field name="GET_DISABLED_COMPONENTS" deprecated="24"/> + <field name="GET_DISABLED_UNTIL_USED_COMPONENTS" since="18" deprecated="24"/> + <field name="GET_GIDS"/> + <field name="GET_INSTRUMENTATION"/> + <field name="GET_INTENT_FILTERS"/> + <field name="GET_META_DATA"/> + <field name="GET_PERMISSIONS"/> + <field name="GET_PROVIDERS"/> + <field name="GET_RECEIVERS"/> + <field name="GET_RESOLVED_FILTER"/> + <field name="GET_SERVICES"/> + <field name="GET_SHARED_LIBRARY_FILES"/> + <field name="GET_SIGNATURES"/> + <field name="GET_UNINSTALLED_PACKAGES" since="3" deprecated="24"/> + <field name="GET_URI_PERMISSION_PATTERNS"/> + <field name="INSTALL_FAILED_ALREADY_EXISTS" removed="4"/> + <field name="INSTALL_FAILED_CONFLICTING_PROVIDER" since="3" removed="4"/> + <field name="INSTALL_FAILED_DEXOPT" removed="4"/> + <field name="INSTALL_FAILED_DUPLICATE_PACKAGE" removed="4"/> + <field name="INSTALL_FAILED_INSUFFICIENT_STORAGE" removed="4"/> + <field name="INSTALL_FAILED_INVALID_APK" removed="4"/> + <field name="INSTALL_FAILED_INVALID_URI" removed="4"/> + <field name="INSTALL_FAILED_MISSING_SHARED_LIBRARY" removed="4"/> + <field name="INSTALL_FAILED_NO_SHARED_USER" removed="4"/> + <field name="INSTALL_FAILED_OLDER_SDK" removed="4"/> + <field name="INSTALL_FAILED_REPLACE_COULDNT_DELETE" removed="4"/> + <field name="INSTALL_FAILED_SHARED_USER_INCOMPATIBLE" removed="4"/> + <field name="INSTALL_FAILED_UPDATE_INCOMPATIBLE" removed="4"/> + <field name="INSTALL_PARSE_FAILED_BAD_MANIFEST" removed="4"/> + <field name="INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME" removed="4"/> + <field name="INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID" removed="4"/> + <field name="INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING" removed="4"/> + <field name="INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES" removed="4"/> + <field name="INSTALL_PARSE_FAILED_MANIFEST_EMPTY" removed="4"/> + <field name="INSTALL_PARSE_FAILED_MANIFEST_MALFORMED" removed="4"/> + <field name="INSTALL_PARSE_FAILED_NOT_APK" removed="4"/> + <field name="INSTALL_PARSE_FAILED_NO_CERTIFICATES" removed="4"/> + <field name="INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION" removed="4"/> + <field name="INSTALL_REASON_DEVICE_RESTORE" since="26"/> + <field name="INSTALL_REASON_DEVICE_SETUP" since="26"/> + <field name="INSTALL_REASON_POLICY" since="26"/> + <field name="INSTALL_REASON_UNKNOWN" since="26"/> + <field name="INSTALL_REASON_USER" since="26"/> + <field name="INSTALL_SUCCEEDED" removed="4"/> + <field name="MATCH_ALL" since="23"/> + <field name="MATCH_DEFAULT_ONLY"/> + <field name="MATCH_DIRECT_BOOT_AWARE" since="24"/> + <field name="MATCH_DIRECT_BOOT_UNAWARE" since="24"/> + <field name="MATCH_DISABLED_COMPONENTS" since="24"/> + <field name="MATCH_DISABLED_UNTIL_USED_COMPONENTS" since="24"/> + <field name="MATCH_SYSTEM_ONLY" since="24"/> + <field name="MATCH_UNINSTALLED_PACKAGES" since="24"/> + <field name="MAXIMUM_VERIFICATION_TIMEOUT" since="17"/> + <field name="PERMISSION_DENIED"/> + <field name="PERMISSION_GRANTED"/> + <field name="PKG_INSTALL_COMPLETE" removed="8"/> + <field name="PKG_INSTALL_INCOMPLETE" removed="8"/> + <field name="REPLACE_EXISTING_PACKAGE" removed="4"/> + <field name="SIGNATURE_FIRST_NOT_SIGNED"/> + <field name="SIGNATURE_MATCH"/> + <field name="SIGNATURE_NEITHER_SIGNED"/> + <field name="SIGNATURE_NO_MATCH"/> + <field name="SIGNATURE_SECOND_NOT_SIGNED"/> + <field name="SIGNATURE_UNKNOWN_PACKAGE"/> + <field name="VERIFICATION_ALLOW" since="14"/> + <field name="VERIFICATION_REJECT" since="14"/> + <field name="VERSION_CODE_HIGHEST" since="26"/> + </class> + <class name="android/content/pm/PackageManager$NameNotFoundException" since="1"> + <extends name="android/util/AndroidException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/content/pm/PackageStats" since="1" deprecated="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/content/pm/PackageStats;)V"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <field name="CREATOR"/> + <field name="cacheSize"/> + <field name="codeSize"/> + <field name="dataSize"/> + <field name="externalCacheSize" since="11"/> + <field name="externalCodeSize" since="14"/> + <field name="externalDataSize" since="11"/> + <field name="externalMediaSize" since="11"/> + <field name="externalObbSize" since="11"/> + <field name="packageName"/> + </class> + <class name="android/content/pm/PathPermission" since="4"> + <extends name="android/os/PatternMatcher"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="<init>(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V"/> + <method name="getReadPermission()Ljava/lang/String;"/> + <method name="getWritePermission()Ljava/lang/String;"/> + <field name="CREATOR"/> + </class> + <class name="android/content/pm/PermissionGroupInfo" since="1"> + <extends name="android/content/pm/PackageItemInfo"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/pm/PermissionGroupInfo;)V"/> + <method name="loadDescription(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;"/> + <field name="CREATOR"/> + <field name="FLAG_PERSONAL_INFO" since="17"/> + <field name="descriptionRes"/> + <field name="flags" since="17"/> + <field name="nonLocalizedDescription"/> + <field name="priority" since="17"/> + </class> + <class name="android/content/pm/PermissionInfo" since="1"> + <extends name="android/content/pm/PackageItemInfo"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/pm/PermissionInfo;)V"/> + <method name="loadDescription(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;"/> + <field name="CREATOR"/> + <field name="FLAG_COSTS_MONEY" since="17"/> + <field name="FLAG_INSTALLED" since="23"/> + <field name="PROTECTION_DANGEROUS"/> + <field name="PROTECTION_FLAG_APPOP" since="21"/> + <field name="PROTECTION_FLAG_DEVELOPMENT" since="16"/> + <field name="PROTECTION_FLAG_INSTALLER" since="23"/> + <field name="PROTECTION_FLAG_PRE23" since="23"/> + <field name="PROTECTION_FLAG_PREINSTALLED" since="23"/> + <field name="PROTECTION_FLAG_PRIVILEGED" since="23"/> + <field name="PROTECTION_FLAG_RUNTIME_ONLY" since="26"/> + <field name="PROTECTION_FLAG_SETUP" since="24"/> + <field name="PROTECTION_FLAG_SYSTEM" since="16" deprecated="23"/> + <field name="PROTECTION_FLAG_VERIFIER" since="23"/> + <field name="PROTECTION_MASK_BASE" since="16"/> + <field name="PROTECTION_MASK_FLAGS" since="16"/> + <field name="PROTECTION_NORMAL"/> + <field name="PROTECTION_SIGNATURE"/> + <field name="PROTECTION_SIGNATURE_OR_SYSTEM" deprecated="23"/> + <field name="descriptionRes"/> + <field name="flags" since="17"/> + <field name="group"/> + <field name="nonLocalizedDescription"/> + <field name="protectionLevel"/> + </class> + <class name="android/content/pm/ProviderInfo" since="1"> + <extends name="android/content/pm/ComponentInfo"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/pm/ProviderInfo;)V"/> + <method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" since="19"/> + <field name="CREATOR"/> + <field name="FLAG_SINGLE_USER" since="17"/> + <field name="authority"/> + <field name="flags" since="17"/> + <field name="grantUriPermissions"/> + <field name="initOrder"/> + <field name="isSyncable" deprecated="16"/> + <field name="multiprocess"/> + <field name="pathPermissions" since="4"/> + <field name="readPermission"/> + <field name="uriPermissionPatterns"/> + <field name="writePermission"/> + </class> + <class name="android/content/pm/ResolveInfo" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/pm/ResolveInfo;)V" since="17"/> + <method name="dump(Landroid/util/Printer;Ljava/lang/String;)V"/> + <method name="getIconResource()I"/> + <method name="loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;"/> + <method name="loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;"/> + <field name="CREATOR"/> + <field name="activityInfo"/> + <field name="filter"/> + <field name="icon"/> + <field name="isDefault"/> + <field name="isInstantAppAvailable" since="26"/> + <field name="labelRes"/> + <field name="match"/> + <field name="nonLocalizedLabel"/> + <field name="preferredOrder"/> + <field name="priority"/> + <field name="providerInfo" since="19"/> + <field name="resolvePackageName" since="5"/> + <field name="serviceInfo"/> + <field name="specificIndex"/> + </class> + <class name="android/content/pm/ResolveInfo$DisplayNameComparator" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/Comparator"/> + <method name="<init>(Landroid/content/pm/PackageManager;)V"/> + <method name="compare(Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;)I"/> + </class> + <class name="android/content/pm/ServiceInfo" since="1"> + <extends name="android/content/pm/ComponentInfo"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/pm/ServiceInfo;)V"/> + <method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" since="5"/> + <field name="CREATOR"/> + <field name="FLAG_EXTERNAL_SERVICE" since="24"/> + <field name="FLAG_ISOLATED_PROCESS" since="16"/> + <field name="FLAG_SINGLE_USER" since="17"/> + <field name="FLAG_STOP_WITH_TASK" since="14"/> + <field name="flags" since="14"/> + <field name="permission"/> + </class> + <class name="android/content/pm/SharedLibraryInfo" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getDeclaringPackage()Landroid/content/pm/VersionedPackage;"/> + <method name="getDependentPackages()Ljava/util/List;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getType()I"/> + <method name="getVersion()I"/> + <field name="CREATOR"/> + <field name="TYPE_BUILTIN"/> + <field name="TYPE_DYNAMIC"/> + <field name="TYPE_STATIC"/> + <field name="VERSION_UNDEFINED"/> + </class> + <class name="android/content/pm/ShortcutInfo" since="25"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getActivity()Landroid/content/ComponentName;"/> + <method name="getCategories()Ljava/util/Set;"/> + <method name="getDisabledMessage()Ljava/lang/CharSequence;"/> + <method name="getExtras()Landroid/os/PersistableBundle;"/> + <method name="getId()Ljava/lang/String;"/> + <method name="getIntent()Landroid/content/Intent;"/> + <method name="getIntents()[Landroid/content/Intent;"/> + <method name="getLastChangedTimestamp()J"/> + <method name="getLongLabel()Ljava/lang/CharSequence;"/> + <method name="getPackage()Ljava/lang/String;"/> + <method name="getRank()I"/> + <method name="getShortLabel()Ljava/lang/CharSequence;"/> + <method name="getUserHandle()Landroid/os/UserHandle;"/> + <method name="hasKeyFieldsOnly()Z"/> + <method name="isDeclaredInManifest()Z"/> + <method name="isDynamic()Z"/> + <method name="isEnabled()Z"/> + <method name="isImmutable()Z"/> + <method name="isPinned()Z"/> + <field name="CREATOR"/> + <field name="SHORTCUT_CATEGORY_CONVERSATION"/> + </class> + <class name="android/content/pm/ShortcutInfo$Builder" since="25"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;Ljava/lang/String;)V"/> + <method name="build()Landroid/content/pm/ShortcutInfo;"/> + <method name="setActivity(Landroid/content/ComponentName;)Landroid/content/pm/ShortcutInfo$Builder;"/> + <method name="setCategories(Ljava/util/Set;)Landroid/content/pm/ShortcutInfo$Builder;"/> + <method name="setDisabledMessage(Ljava/lang/CharSequence;)Landroid/content/pm/ShortcutInfo$Builder;"/> + <method name="setExtras(Landroid/os/PersistableBundle;)Landroid/content/pm/ShortcutInfo$Builder;"/> + <method name="setIcon(Landroid/graphics/drawable/Icon;)Landroid/content/pm/ShortcutInfo$Builder;"/> + <method name="setIntent(Landroid/content/Intent;)Landroid/content/pm/ShortcutInfo$Builder;"/> + <method name="setIntents([Landroid/content/Intent;)Landroid/content/pm/ShortcutInfo$Builder;"/> + <method name="setLongLabel(Ljava/lang/CharSequence;)Landroid/content/pm/ShortcutInfo$Builder;"/> + <method name="setRank(I)Landroid/content/pm/ShortcutInfo$Builder;"/> + <method name="setShortLabel(Ljava/lang/CharSequence;)Landroid/content/pm/ShortcutInfo$Builder;"/> + </class> + <class name="android/content/pm/ShortcutManager" since="25"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addDynamicShortcuts(Ljava/util/List;)Z"/> + <method name="createShortcutResultIntent(Landroid/content/pm/ShortcutInfo;)Landroid/content/Intent;" since="26"/> + <method name="disableShortcuts(Ljava/util/List;)V"/> + <method name="disableShortcuts(Ljava/util/List;Ljava/lang/CharSequence;)V"/> + <method name="enableShortcuts(Ljava/util/List;)V"/> + <method name="getDynamicShortcuts()Ljava/util/List;"/> + <method name="getIconMaxHeight()I"/> + <method name="getIconMaxWidth()I"/> + <method name="getManifestShortcuts()Ljava/util/List;"/> + <method name="getMaxShortcutCountPerActivity()I"/> + <method name="getPinnedShortcuts()Ljava/util/List;"/> + <method name="isRateLimitingActive()Z"/> + <method name="isRequestPinShortcutSupported()Z" since="26"/> + <method name="removeAllDynamicShortcuts()V"/> + <method name="removeDynamicShortcuts(Ljava/util/List;)V"/> + <method name="reportShortcutUsed(Ljava/lang/String;)V"/> + <method name="requestPinShortcut(Landroid/content/pm/ShortcutInfo;Landroid/content/IntentSender;)Z" since="26"/> + <method name="setDynamicShortcuts(Ljava/util/List;)Z"/> + <method name="updateShortcuts(Ljava/util/List;)Z"/> + </class> + <class name="android/content/pm/Signature" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>([B)V"/> + <method name="toByteArray()[B"/> + <method name="toChars()[C"/> + <method name="toChars([C[I)[C"/> + <method name="toCharsString()Ljava/lang/String;"/> + <field name="CREATOR"/> + </class> + <class name="android/content/pm/VersionedPackage" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="getPackageName()Ljava/lang/String;"/> + <method name="getVersionCode()I"/> + <field name="CREATOR"/> + </class> + <class name="android/content/res/AssetFileDescriptor" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable" since="3"/> + <implements name="java/io/Closeable" since="19"/> + <method name="<init>(Landroid/os/ParcelFileDescriptor;JJ)V"/> + <method name="<init>(Landroid/os/ParcelFileDescriptor;JJLandroid/os/Bundle;)V" since="19"/> + <method name="close()V"/> + <method name="createInputStream()Ljava/io/FileInputStream;" since="3"/> + <method name="createOutputStream()Ljava/io/FileOutputStream;" since="3"/> + <method name="getDeclaredLength()J" since="3"/> + <method name="getExtras()Landroid/os/Bundle;" since="19"/> + <method name="getFileDescriptor()Ljava/io/FileDescriptor;"/> + <method name="getLength()J"/> + <method name="getParcelFileDescriptor()Landroid/os/ParcelFileDescriptor;"/> + <method name="getStartOffset()J"/> + <field name="CREATOR" since="3"/> + <field name="UNKNOWN_LENGTH" since="3"/> + </class> + <class name="android/content/res/AssetFileDescriptor$AutoCloseInputStream" since="3"> + <extends name="android/os/ParcelFileDescriptor$AutoCloseInputStream"/> + <method name="<init>(Landroid/content/res/AssetFileDescriptor;)V"/> + </class> + <class name="android/content/res/AssetFileDescriptor$AutoCloseOutputStream" since="3"> + <extends name="android/os/ParcelFileDescriptor$AutoCloseOutputStream"/> + <method name="<init>(Landroid/content/res/AssetFileDescriptor;)V"/> + </class> + <class name="android/content/res/AssetManager" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable" since="21"/> + <method name="<init>()V"/> + <method name="close()V"/> + <method name="getLocales()[Ljava/lang/String;"/> + <method name="list(Ljava/lang/String;)[Ljava/lang/String;"/> + <method name="open(Ljava/lang/String;)Ljava/io/InputStream;"/> + <method name="open(Ljava/lang/String;I)Ljava/io/InputStream;"/> + <method name="openFd(Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;"/> + <method name="openNonAssetFd(ILjava/lang/String;)Landroid/content/res/AssetFileDescriptor;"/> + <method name="openNonAssetFd(Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;"/> + <method name="openXmlResourceParser(ILjava/lang/String;)Landroid/content/res/XmlResourceParser;"/> + <method name="openXmlResourceParser(Ljava/lang/String;)Landroid/content/res/XmlResourceParser;"/> + <field name="ACCESS_BUFFER"/> + <field name="ACCESS_RANDOM"/> + <field name="ACCESS_STREAMING"/> + <field name="ACCESS_UNKNOWN"/> + </class> + <class name="android/content/res/AssetManager$AssetInputStream" since="1"> + <extends name="java/io/InputStream"/> + <method name="<init>(Landroid/content/res/AssetManager;)V"/> + <method name="getAssetInt()I" removed="21"/> + </class> + <class name="android/content/res/ColorStateList" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>([[I[I)V"/> + <method name="createFromXml(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;)Landroid/content/res/ColorStateList;" deprecated="23"/> + <method name="createFromXml(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList;" since="23"/> + <method name="getChangingConfigurations()I" since="23"/> + <method name="getColorForState([II)I"/> + <method name="getDefaultColor()I"/> + <method name="isOpaque()Z" since="21"/> + <method name="isStateful()Z"/> + <method name="valueOf(I)Landroid/content/res/ColorStateList;"/> + <method name="withAlpha(I)Landroid/content/res/ColorStateList;"/> + <field name="CREATOR"/> + </class> + <class name="android/content/res/Configuration" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <implements name="java/lang/Comparable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/res/Configuration;)V"/> + <method name="compareTo(Landroid/content/res/Configuration;)I"/> + <method name="diff(Landroid/content/res/Configuration;)I"/> + <method name="equals(Landroid/content/res/Configuration;)Z"/> + <method name="getLayoutDirection()I" since="17"/> + <method name="getLocales()Landroid/os/LocaleList;" since="24"/> + <method name="isLayoutSizeAtLeast(I)Z" since="11"/> + <method name="isScreenHdr()Z" since="26"/> + <method name="isScreenRound()Z" since="23"/> + <method name="isScreenWideColorGamut()Z" since="26"/> + <method name="needNewResources(II)Z"/> + <method name="readFromParcel(Landroid/os/Parcel;)V" since="8"/> + <method name="setLayoutDirection(Ljava/util/Locale;)V" since="17"/> + <method name="setLocale(Ljava/util/Locale;)V" since="17"/> + <method name="setLocales(Landroid/os/LocaleList;)V" since="24"/> + <method name="setTo(Landroid/content/res/Configuration;)V" since="8"/> + <method name="setToDefaults()V"/> + <method name="updateFrom(Landroid/content/res/Configuration;)I"/> + <field name="COLOR_MODE_HDR_MASK" since="26"/> + <field name="COLOR_MODE_HDR_NO" since="26"/> + <field name="COLOR_MODE_HDR_SHIFT" since="26"/> + <field name="COLOR_MODE_HDR_UNDEFINED" since="26"/> + <field name="COLOR_MODE_HDR_YES" since="26"/> + <field name="COLOR_MODE_UNDEFINED" since="26"/> + <field name="COLOR_MODE_WIDE_COLOR_GAMUT_MASK" since="26"/> + <field name="COLOR_MODE_WIDE_COLOR_GAMUT_NO" since="26"/> + <field name="COLOR_MODE_WIDE_COLOR_GAMUT_UNDEFINED" since="26"/> + <field name="COLOR_MODE_WIDE_COLOR_GAMUT_YES" since="26"/> + <field name="CREATOR"/> + <field name="DENSITY_DPI_UNDEFINED" since="17"/> + <field name="HARDKEYBOARDHIDDEN_NO" since="3"/> + <field name="HARDKEYBOARDHIDDEN_UNDEFINED" since="3"/> + <field name="HARDKEYBOARDHIDDEN_YES" since="3"/> + <field name="KEYBOARDHIDDEN_NO"/> + <field name="KEYBOARDHIDDEN_UNDEFINED"/> + <field name="KEYBOARDHIDDEN_YES"/> + <field name="KEYBOARD_12KEY"/> + <field name="KEYBOARD_NOKEYS"/> + <field name="KEYBOARD_QWERTY"/> + <field name="KEYBOARD_UNDEFINED"/> + <field name="MNC_ZERO" since="19"/> + <field name="NAVIGATIONHIDDEN_NO" since="5"/> + <field name="NAVIGATIONHIDDEN_UNDEFINED" since="5"/> + <field name="NAVIGATIONHIDDEN_YES" since="5"/> + <field name="NAVIGATION_DPAD"/> + <field name="NAVIGATION_NONAV"/> + <field name="NAVIGATION_TRACKBALL"/> + <field name="NAVIGATION_UNDEFINED"/> + <field name="NAVIGATION_WHEEL"/> + <field name="ORIENTATION_LANDSCAPE"/> + <field name="ORIENTATION_PORTRAIT"/> + <field name="ORIENTATION_SQUARE" deprecated="16"/> + <field name="ORIENTATION_UNDEFINED"/> + <field name="SCREENLAYOUT_LAYOUTDIR_LTR" since="17"/> + <field name="SCREENLAYOUT_LAYOUTDIR_MASK" since="17"/> + <field name="SCREENLAYOUT_LAYOUTDIR_RTL" since="17"/> + <field name="SCREENLAYOUT_LAYOUTDIR_SHIFT" since="17"/> + <field name="SCREENLAYOUT_LAYOUTDIR_UNDEFINED" since="17"/> + <field name="SCREENLAYOUT_LONG_MASK" since="4"/> + <field name="SCREENLAYOUT_LONG_NO" since="4"/> + <field name="SCREENLAYOUT_LONG_UNDEFINED" since="4"/> + <field name="SCREENLAYOUT_LONG_YES" since="4"/> + <field name="SCREENLAYOUT_ROUND_MASK" since="23"/> + <field name="SCREENLAYOUT_ROUND_NO" since="23"/> + <field name="SCREENLAYOUT_ROUND_UNDEFINED" since="23"/> + <field name="SCREENLAYOUT_ROUND_YES" since="23"/> + <field name="SCREENLAYOUT_SIZE_LARGE" since="4"/> + <field name="SCREENLAYOUT_SIZE_MASK" since="4"/> + <field name="SCREENLAYOUT_SIZE_NORMAL" since="4"/> + <field name="SCREENLAYOUT_SIZE_SMALL" since="4"/> + <field name="SCREENLAYOUT_SIZE_UNDEFINED" since="4"/> + <field name="SCREENLAYOUT_SIZE_XLARGE" since="9"/> + <field name="SCREENLAYOUT_UNDEFINED" since="17"/> + <field name="SCREEN_HEIGHT_DP_UNDEFINED" since="13"/> + <field name="SCREEN_WIDTH_DP_UNDEFINED" since="13"/> + <field name="SMALLEST_SCREEN_WIDTH_DP_UNDEFINED" since="13"/> + <field name="TOUCHSCREEN_FINGER"/> + <field name="TOUCHSCREEN_NOTOUCH"/> + <field name="TOUCHSCREEN_STYLUS" deprecated="16"/> + <field name="TOUCHSCREEN_UNDEFINED"/> + <field name="UI_MODE_NIGHT_MASK" since="8"/> + <field name="UI_MODE_NIGHT_NO" since="8"/> + <field name="UI_MODE_NIGHT_UNDEFINED" since="8"/> + <field name="UI_MODE_NIGHT_YES" since="8"/> + <field name="UI_MODE_TYPE_APPLIANCE" since="16"/> + <field name="UI_MODE_TYPE_CAR" since="8"/> + <field name="UI_MODE_TYPE_DESK" since="8"/> + <field name="UI_MODE_TYPE_MASK" since="8"/> + <field name="UI_MODE_TYPE_NORMAL" since="8"/> + <field name="UI_MODE_TYPE_TELEVISION" since="13"/> + <field name="UI_MODE_TYPE_UNDEFINED" since="8"/> + <field name="UI_MODE_TYPE_VR_HEADSET" since="26"/> + <field name="UI_MODE_TYPE_WATCH" since="20"/> + <field name="colorMode" since="26"/> + <field name="densityDpi" since="17"/> + <field name="fontScale"/> + <field name="hardKeyboardHidden" since="3"/> + <field name="keyboard"/> + <field name="keyboardHidden"/> + <field name="locale" deprecated="24"/> + <field name="mcc"/> + <field name="mnc"/> + <field name="navigation"/> + <field name="navigationHidden" since="5"/> + <field name="orientation"/> + <field name="screenHeightDp" since="13"/> + <field name="screenLayout" since="4"/> + <field name="screenWidthDp" since="13"/> + <field name="smallestScreenWidthDp" since="13"/> + <field name="touchscreen"/> + <field name="uiMode" since="8"/> + </class> + <class name="android/content/res/ObbInfo" since="9"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <field name="CREATOR"/> + <field name="OBB_OVERLAY"/> + <field name="filename"/> + <field name="flags"/> + <field name="packageName"/> + <field name="version"/> + </class> + <class name="android/content/res/ObbScanner" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getObbInfo(Ljava/lang/String;)Landroid/content/res/ObbInfo;"/> + </class> + <class name="android/content/res/Resources" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/res/AssetManager;Landroid/util/DisplayMetrics;Landroid/content/res/Configuration;)V" deprecated="25"/> + <method name="finishPreloading()V"/> + <method name="flushLayoutCache()V"/> + <method name="getAnimation(I)Landroid/content/res/XmlResourceParser;"/> + <method name="getAssets()Landroid/content/res/AssetManager;"/> + <method name="getBoolean(I)Z" since="3"/> + <method name="getColor(I)I" deprecated="23"/> + <method name="getColor(ILandroid/content/res/Resources$Theme;)I" since="23"/> + <method name="getColorStateList(I)Landroid/content/res/ColorStateList;" deprecated="23"/> + <method name="getColorStateList(ILandroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList;" since="23"/> + <method name="getConfiguration()Landroid/content/res/Configuration;"/> + <method name="getDimension(I)F"/> + <method name="getDimensionPixelOffset(I)I"/> + <method name="getDimensionPixelSize(I)I"/> + <method name="getDisplayMetrics()Landroid/util/DisplayMetrics;"/> + <method name="getDrawable(I)Landroid/graphics/drawable/Drawable;" deprecated="22"/> + <method name="getDrawable(ILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;" since="21"/> + <method name="getDrawableForDensity(II)Landroid/graphics/drawable/Drawable;" since="15" deprecated="22"/> + <method name="getDrawableForDensity(IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;" since="21"/> + <method name="getFont(I)Landroid/graphics/Typeface;" since="26"/> + <method name="getFraction(III)F" since="3"/> + <method name="getIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I"/> + <method name="getIntArray(I)[I"/> + <method name="getInteger(I)I"/> + <method name="getLayout(I)Landroid/content/res/XmlResourceParser;"/> + <method name="getMovie(I)Landroid/graphics/Movie;"/> + <method name="getQuantityString(II)Ljava/lang/String;"/> + <method name="getQuantityString(II[Ljava/lang/Object;)Ljava/lang/String;"/> + <method name="getQuantityText(II)Ljava/lang/CharSequence;"/> + <method name="getResourceEntryName(I)Ljava/lang/String;"/> + <method name="getResourceName(I)Ljava/lang/String;"/> + <method name="getResourcePackageName(I)Ljava/lang/String;"/> + <method name="getResourceTypeName(I)Ljava/lang/String;"/> + <method name="getString(I)Ljava/lang/String;"/> + <method name="getString(I[Ljava/lang/Object;)Ljava/lang/String;"/> + <method name="getStringArray(I)[Ljava/lang/String;"/> + <method name="getSystem()Landroid/content/res/Resources;"/> + <method name="getText(I)Ljava/lang/CharSequence;"/> + <method name="getText(ILjava/lang/CharSequence;)Ljava/lang/CharSequence;"/> + <method name="getTextArray(I)[Ljava/lang/CharSequence;"/> + <method name="getValue(ILandroid/util/TypedValue;Z)V"/> + <method name="getValue(Ljava/lang/String;Landroid/util/TypedValue;Z)V"/> + <method name="getValueForDensity(IILandroid/util/TypedValue;Z)V" since="15"/> + <method name="getXml(I)Landroid/content/res/XmlResourceParser;"/> + <method name="newTheme()Landroid/content/res/Resources$Theme;"/> + <method name="obtainAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;"/> + <method name="obtainTypedArray(I)Landroid/content/res/TypedArray;"/> + <method name="openRawResource(I)Ljava/io/InputStream;"/> + <method name="openRawResource(ILandroid/util/TypedValue;)Ljava/io/InputStream;" since="3"/> + <method name="openRawResourceFd(I)Landroid/content/res/AssetFileDescriptor;"/> + <method name="parseBundleExtra(Ljava/lang/String;Landroid/util/AttributeSet;Landroid/os/Bundle;)V" since="3"/> + <method name="parseBundleExtras(Landroid/content/res/XmlResourceParser;Landroid/os/Bundle;)V" since="3"/> + <method name="updateConfiguration(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;)V" deprecated="25"/> + </class> + <class name="android/content/res/Resources$NotFoundException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Exception;)V" since="24"/> + </class> + <class name="android/content/res/Resources$Theme" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/res/Resources;)V"/> + <method name="applyStyle(IZ)V"/> + <method name="dump(ILjava/lang/String;Ljava/lang/String;)V"/> + <method name="getChangingConfigurations()I" since="23"/> + <method name="getDrawable(I)Landroid/graphics/drawable/Drawable;" since="21"/> + <method name="getResources()Landroid/content/res/Resources;" since="21"/> + <method name="obtainStyledAttributes(I[I)Landroid/content/res/TypedArray;"/> + <method name="obtainStyledAttributes(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray;"/> + <method name="obtainStyledAttributes([I)Landroid/content/res/TypedArray;"/> + <method name="resolveAttribute(ILandroid/util/TypedValue;Z)Z"/> + <method name="setTo(Landroid/content/res/Resources$Theme;)V"/> + </class> + <class name="android/content/res/TypedArray" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getBoolean(IZ)Z"/> + <method name="getChangingConfigurations()I" since="21"/> + <method name="getColor(II)I"/> + <method name="getColorStateList(I)Landroid/content/res/ColorStateList;"/> + <method name="getDimension(IF)F"/> + <method name="getDimensionPixelOffset(II)I"/> + <method name="getDimensionPixelSize(II)I"/> + <method name="getDrawable(I)Landroid/graphics/drawable/Drawable;"/> + <method name="getFloat(IF)F"/> + <method name="getFont(I)Landroid/graphics/Typeface;" since="26"/> + <method name="getFraction(IIIF)F"/> + <method name="getIndex(I)I"/> + <method name="getIndexCount()I"/> + <method name="getInt(II)I"/> + <method name="getInteger(II)I"/> + <method name="getLayoutDimension(II)I" since="3"/> + <method name="getLayoutDimension(ILjava/lang/String;)I"/> + <method name="getNonResourceString(I)Ljava/lang/String;"/> + <method name="getPositionDescription()Ljava/lang/String;"/> + <method name="getResourceId(II)I"/> + <method name="getResources()Landroid/content/res/Resources;"/> + <method name="getString(I)Ljava/lang/String;"/> + <method name="getText(I)Ljava/lang/CharSequence;"/> + <method name="getTextArray(I)[Ljava/lang/CharSequence;"/> + <method name="getType(I)I" since="21"/> + <method name="getValue(ILandroid/util/TypedValue;)Z"/> + <method name="hasValue(I)Z"/> + <method name="hasValueOrEmpty(I)Z" since="22"/> + <method name="length()I"/> + <method name="peekValue(I)Landroid/util/TypedValue;"/> + <method name="recycle()V"/> + </class> + <class name="android/content/res/XmlResourceParser" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/util/AttributeSet"/> + <implements name="java/lang/AutoCloseable" since="19"/> + <implements name="org/xmlpull/v1/XmlPullParser"/> + <method name="close()V"/> + </class> + <class name="android/database/AbstractCursor" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/database/CrossProcessCursor"/> + <method name="<init>()V"/> + <method name="checkPosition()V"/> + <method name="getNotificationUri()Landroid/net/Uri;" since="11"/> + <method name="getUpdatedField(I)Ljava/lang/Object;" deprecated="16"/> + <method name="isFieldUpdated(I)Z" deprecated="16"/> + <method name="onChange(Z)V"/> + <field name="mClosed" deprecated="23"/> + <field name="mContentResolver" deprecated="23"/> + <field name="mCurrentRowID" deprecated="16" removed="23"/> + <field name="mPos" deprecated="23"/> + <field name="mRowIdColumnIndex" deprecated="16" removed="23"/> + <field name="mUpdatedRows" deprecated="16" removed="23"/> + </class> + <class name="android/database/AbstractCursor$SelfContentObserver" since="1"> + <extends name="android/database/ContentObserver"/> + <method name="<init>(Landroid/database/AbstractCursor;)V"/> + </class> + <class name="android/database/AbstractWindowedCursor" since="1"> + <extends name="android/database/AbstractCursor"/> + <method name="<init>()V"/> + <method name="hasWindow()Z"/> + <method name="isBlob(I)Z" deprecated="16"/> + <method name="isFloat(I)Z" since="5" deprecated="16"/> + <method name="isLong(I)Z" since="5" deprecated="16"/> + <method name="isString(I)Z" since="5" deprecated="16"/> + <method name="setWindow(Landroid/database/CursorWindow;)V"/> + <field name="mWindow"/> + </class> + <class name="android/database/CharArrayBuffer" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(I)V"/> + <method name="<init>([C)V"/> + <field name="data"/> + <field name="sizeCopied"/> + </class> + <class name="android/database/ContentObservable" since="1"> + <extends name="android/database/Observable"/> + <method name="<init>()V"/> + <method name="dispatchChange(Z)V" deprecated="16"/> + <method name="dispatchChange(ZLandroid/net/Uri;)V" since="16"/> + <method name="notifyChange(Z)V" deprecated="16"/> + <method name="registerObserver(Landroid/database/ContentObserver;)V"/> + </class> + <class name="android/database/ContentObserver" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/os/Handler;)V"/> + <method name="deliverSelfNotifications()Z"/> + <method name="dispatchChange(Z)V" deprecated="16"/> + <method name="dispatchChange(ZLandroid/net/Uri;)V" since="16"/> + <method name="onChange(Z)V"/> + <method name="onChange(ZLandroid/net/Uri;)V" since="16"/> + </class> + <class name="android/database/CrossProcessCursor" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/database/Cursor"/> + <method name="fillWindow(ILandroid/database/CursorWindow;)V"/> + <method name="getWindow()Landroid/database/CursorWindow;"/> + <method name="onMove(II)Z"/> + </class> + <class name="android/database/CrossProcessCursorWrapper" since="15"> + <extends name="android/database/CursorWrapper"/> + <implements name="android/database/CrossProcessCursor"/> + <method name="<init>(Landroid/database/Cursor;)V"/> + </class> + <class name="android/database/Cursor" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable" since="16"/> + <method name="close()V"/> + <method name="copyStringToBuffer(ILandroid/database/CharArrayBuffer;)V"/> + <method name="deactivate()V" deprecated="16"/> + <method name="getBlob(I)[B"/> + <method name="getColumnCount()I"/> + <method name="getColumnIndex(Ljava/lang/String;)I"/> + <method name="getColumnIndexOrThrow(Ljava/lang/String;)I"/> + <method name="getColumnName(I)Ljava/lang/String;"/> + <method name="getColumnNames()[Ljava/lang/String;"/> + <method name="getCount()I"/> + <method name="getDouble(I)D"/> + <method name="getExtras()Landroid/os/Bundle;"/> + <method name="getFloat(I)F"/> + <method name="getInt(I)I"/> + <method name="getLong(I)J"/> + <method name="getNotificationUri()Landroid/net/Uri;" since="19"/> + <method name="getPosition()I"/> + <method name="getShort(I)S"/> + <method name="getString(I)Ljava/lang/String;"/> + <method name="getType(I)I" since="11"/> + <method name="getWantsAllOnMoveCalls()Z"/> + <method name="isAfterLast()Z"/> + <method name="isBeforeFirst()Z"/> + <method name="isClosed()Z"/> + <method name="isFirst()Z"/> + <method name="isLast()Z"/> + <method name="isNull(I)Z"/> + <method name="move(I)Z"/> + <method name="moveToFirst()Z"/> + <method name="moveToLast()Z"/> + <method name="moveToNext()Z"/> + <method name="moveToPosition(I)Z"/> + <method name="moveToPrevious()Z"/> + <method name="registerContentObserver(Landroid/database/ContentObserver;)V"/> + <method name="registerDataSetObserver(Landroid/database/DataSetObserver;)V"/> + <method name="requery()Z" deprecated="16"/> + <method name="respond(Landroid/os/Bundle;)Landroid/os/Bundle;"/> + <method name="setExtras(Landroid/os/Bundle;)V" since="23"/> + <method name="setNotificationUri(Landroid/content/ContentResolver;Landroid/net/Uri;)V"/> + <method name="unregisterContentObserver(Landroid/database/ContentObserver;)V"/> + <method name="unregisterDataSetObserver(Landroid/database/DataSetObserver;)V"/> + <field name="FIELD_TYPE_BLOB" since="11"/> + <field name="FIELD_TYPE_FLOAT" since="11"/> + <field name="FIELD_TYPE_INTEGER" since="11"/> + <field name="FIELD_TYPE_NULL" since="11"/> + <field name="FIELD_TYPE_STRING" since="11"/> + </class> + <class name="android/database/CursorIndexOutOfBoundsException" since="1"> + <extends name="java/lang/IndexOutOfBoundsException"/> + <method name="<init>(II)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/database/CursorJoiner" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Iterable"/> + <implements name="java/util/Iterator"/> + <method name="<init>(Landroid/database/Cursor;[Ljava/lang/String;Landroid/database/Cursor;[Ljava/lang/String;)V"/> + <method name="next()Landroid/database/CursorJoiner$Result;"/> + </class> + <class name="android/database/CursorJoiner$Result" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/database/CursorJoiner$Result;"/> + <method name="values()[Landroid/database/CursorJoiner$Result;"/> + <field name="BOTH"/> + <field name="LEFT"/> + <field name="RIGHT"/> + </class> + <class name="android/database/CursorWindow" since="1"> + <extends name="android/database/sqlite/SQLiteClosable"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Ljava/lang/String;)V" since="15"/> + <method name="<init>(Z)V" deprecated="16"/> + <method name="allocRow()Z"/> + <method name="clear()V"/> + <method name="close()V" removed="16"/> + <method name="copyStringToBuffer(IILandroid/database/CharArrayBuffer;)V"/> + <method name="freeLastRow()V"/> + <method name="getBlob(II)[B"/> + <method name="getDouble(II)D"/> + <method name="getFloat(II)F"/> + <method name="getInt(II)I"/> + <method name="getLong(II)J"/> + <method name="getNumRows()I"/> + <method name="getShort(II)S"/> + <method name="getStartPosition()I"/> + <method name="getString(II)Ljava/lang/String;"/> + <method name="getType(II)I" since="11"/> + <method name="isBlob(II)Z" deprecated="16"/> + <method name="isFloat(II)Z" since="5" deprecated="16"/> + <method name="isLong(II)Z" since="5" deprecated="16"/> + <method name="isNull(II)Z" deprecated="16"/> + <method name="isString(II)Z" since="5" deprecated="16"/> + <method name="newFromParcel(Landroid/os/Parcel;)Landroid/database/CursorWindow;"/> + <method name="putBlob([BII)Z"/> + <method name="putDouble(DII)Z"/> + <method name="putLong(JII)Z"/> + <method name="putNull(II)Z"/> + <method name="putString(Ljava/lang/String;II)Z"/> + <method name="setNumColumns(I)Z"/> + <method name="setStartPosition(I)V"/> + <field name="CREATOR"/> + </class> + <class name="android/database/CursorWrapper" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/database/Cursor"/> + <method name="<init>(Landroid/database/Cursor;)V"/> + <method name="getWrappedCursor()Landroid/database/Cursor;" since="11"/> + </class> + <class name="android/database/DataSetObservable" since="1"> + <extends name="android/database/Observable"/> + <method name="<init>()V"/> + <method name="notifyChanged()V"/> + <method name="notifyInvalidated()V"/> + </class> + <class name="android/database/DataSetObserver" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onChanged()V"/> + <method name="onInvalidated()V"/> + </class> + <class name="android/database/DatabaseErrorHandler" since="11"> + <extends name="java/lang/Object"/> + <method name="onCorruption(Landroid/database/sqlite/SQLiteDatabase;)V"/> + </class> + <class name="android/database/DatabaseUtils" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="appendEscapedSQLString(Ljava/lang/StringBuilder;Ljava/lang/String;)V"/> + <method name="appendSelectionArgs([Ljava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;" since="11"/> + <method name="appendValueToSql(Ljava/lang/StringBuilder;Ljava/lang/Object;)V"/> + <method name="bindObjectToProgram(Landroid/database/sqlite/SQLiteProgram;ILjava/lang/Object;)V"/> + <method name="blobFileDescriptorForQuery(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;" since="11"/> + <method name="blobFileDescriptorForQuery(Landroid/database/sqlite/SQLiteStatement;[Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;" since="11"/> + <method name="concatenateWhere(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" since="11"/> + <method name="createDbFromSqlStatements(Landroid/content/Context;Ljava/lang/String;ILjava/lang/String;)V"/> + <method name="cursorDoubleToContentValues(Landroid/database/Cursor;Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;)V"/> + <method name="cursorDoubleToContentValuesIfPresent(Landroid/database/Cursor;Landroid/content/ContentValues;Ljava/lang/String;)V" since="8"/> + <method name="cursorDoubleToCursorValues(Landroid/database/Cursor;Ljava/lang/String;Landroid/content/ContentValues;)V"/> + <method name="cursorFloatToContentValuesIfPresent(Landroid/database/Cursor;Landroid/content/ContentValues;Ljava/lang/String;)V" since="8"/> + <method name="cursorIntToContentValues(Landroid/database/Cursor;Ljava/lang/String;Landroid/content/ContentValues;)V"/> + <method name="cursorIntToContentValues(Landroid/database/Cursor;Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;)V"/> + <method name="cursorIntToContentValuesIfPresent(Landroid/database/Cursor;Landroid/content/ContentValues;Ljava/lang/String;)V" since="8"/> + <method name="cursorLongToContentValues(Landroid/database/Cursor;Ljava/lang/String;Landroid/content/ContentValues;)V"/> + <method name="cursorLongToContentValues(Landroid/database/Cursor;Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;)V"/> + <method name="cursorLongToContentValuesIfPresent(Landroid/database/Cursor;Landroid/content/ContentValues;Ljava/lang/String;)V" since="8"/> + <method name="cursorRowToContentValues(Landroid/database/Cursor;Landroid/content/ContentValues;)V"/> + <method name="cursorShortToContentValuesIfPresent(Landroid/database/Cursor;Landroid/content/ContentValues;Ljava/lang/String;)V" since="8"/> + <method name="cursorStringToContentValues(Landroid/database/Cursor;Ljava/lang/String;Landroid/content/ContentValues;)V"/> + <method name="cursorStringToContentValues(Landroid/database/Cursor;Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;)V"/> + <method name="cursorStringToContentValuesIfPresent(Landroid/database/Cursor;Landroid/content/ContentValues;Ljava/lang/String;)V" since="8"/> + <method name="cursorStringToInsertHelper(Landroid/database/Cursor;Ljava/lang/String;Landroid/database/DatabaseUtils$InsertHelper;I)V"/> + <method name="dumpCurrentRow(Landroid/database/Cursor;)V"/> + <method name="dumpCurrentRow(Landroid/database/Cursor;Ljava/io/PrintStream;)V"/> + <method name="dumpCurrentRow(Landroid/database/Cursor;Ljava/lang/StringBuilder;)V"/> + <method name="dumpCurrentRowToString(Landroid/database/Cursor;)Ljava/lang/String;"/> + <method name="dumpCursor(Landroid/database/Cursor;)V"/> + <method name="dumpCursor(Landroid/database/Cursor;Ljava/io/PrintStream;)V"/> + <method name="dumpCursor(Landroid/database/Cursor;Ljava/lang/StringBuilder;)V"/> + <method name="dumpCursorToString(Landroid/database/Cursor;)Ljava/lang/String;"/> + <method name="getCollationKey(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getHexCollationKey(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getSqlStatementType(Ljava/lang/String;)I" since="11"/> + <method name="longForQuery(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/String;)J"/> + <method name="longForQuery(Landroid/database/sqlite/SQLiteStatement;[Ljava/lang/String;)J"/> + <method name="queryNumEntries(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)J"/> + <method name="queryNumEntries(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;)J" since="11"/> + <method name="queryNumEntries(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)J" since="11"/> + <method name="readExceptionFromParcel(Landroid/os/Parcel;)V"/> + <method name="readExceptionWithFileNotFoundExceptionFromParcel(Landroid/os/Parcel;)V"/> + <method name="readExceptionWithOperationApplicationExceptionFromParcel(Landroid/os/Parcel;)V" since="5"/> + <method name="sqlEscapeString(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="stringForQuery(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/String;"/> + <method name="stringForQuery(Landroid/database/sqlite/SQLiteStatement;[Ljava/lang/String;)Ljava/lang/String;"/> + <method name="writeExceptionToParcel(Landroid/os/Parcel;Ljava/lang/Exception;)V"/> + <field name="STATEMENT_ABORT" since="11"/> + <field name="STATEMENT_ATTACH" since="11"/> + <field name="STATEMENT_BEGIN" since="11"/> + <field name="STATEMENT_COMMIT" since="11"/> + <field name="STATEMENT_DDL" since="11"/> + <field name="STATEMENT_OTHER" since="11"/> + <field name="STATEMENT_PRAGMA" since="11"/> + <field name="STATEMENT_SELECT" since="11"/> + <field name="STATEMENT_UNPREPARED" since="11"/> + <field name="STATEMENT_UPDATE" since="11"/> + </class> + <class name="android/database/DatabaseUtils$InsertHelper" since="1" deprecated="17"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)V"/> + <method name="bind(ID)V"/> + <method name="bind(IF)V"/> + <method name="bind(II)V"/> + <method name="bind(IJ)V"/> + <method name="bind(ILjava/lang/String;)V"/> + <method name="bind(IZ)V"/> + <method name="bind(I[B)V"/> + <method name="bindNull(I)V"/> + <method name="close()V"/> + <method name="execute()J"/> + <method name="getColumnIndex(Ljava/lang/String;)I"/> + <method name="insert(Landroid/content/ContentValues;)J"/> + <method name="prepareForInsert()V"/> + <method name="prepareForReplace()V"/> + <method name="replace(Landroid/content/ContentValues;)J"/> + <field name="TABLE_INFO_PRAGMA_DEFAULT_INDEX" removed="17"/> + </class> + <class name="android/database/DefaultDatabaseErrorHandler" since="11"> + <extends name="java/lang/Object"/> + <implements name="android/database/DatabaseErrorHandler"/> + <method name="<init>()V"/> + </class> + <class name="android/database/MatrixCursor" since="1"> + <extends name="android/database/AbstractCursor"/> + <method name="<init>([Ljava/lang/String;)V"/> + <method name="<init>([Ljava/lang/String;I)V"/> + <method name="addRow(Ljava/lang/Iterable;)V"/> + <method name="addRow([Ljava/lang/Object;)V"/> + <method name="newRow()Landroid/database/MatrixCursor$RowBuilder;"/> + </class> + <class name="android/database/MatrixCursor$RowBuilder" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/database/MatrixCursor;)V"/> + <method name="add(Ljava/lang/Object;)Landroid/database/MatrixCursor$RowBuilder;"/> + <method name="add(Ljava/lang/String;Ljava/lang/Object;)Landroid/database/MatrixCursor$RowBuilder;" since="19"/> + </class> + <class name="android/database/MergeCursor" since="1"> + <extends name="android/database/AbstractCursor"/> + <method name="<init>([Landroid/database/Cursor;)V"/> + </class> + <class name="android/database/Observable" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="registerObserver(Ljava/lang/Object;)V"/> + <method name="unregisterAll()V"/> + <method name="unregisterObserver(Ljava/lang/Object;)V"/> + <field name="mObservers"/> + </class> + <class name="android/database/SQLException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="16"/> + </class> + <class name="android/database/StaleDataException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/database/sqlite/SQLiteAbortException" since="1"> + <extends name="android/database/sqlite/SQLiteException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/database/sqlite/SQLiteAccessPermException" since="11"> + <extends name="android/database/sqlite/SQLiteException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/database/sqlite/SQLiteBindOrColumnIndexOutOfRangeException" since="11"> + <extends name="android/database/sqlite/SQLiteException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/database/sqlite/SQLiteBlobTooBigException" since="11"> + <extends name="android/database/sqlite/SQLiteException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/database/sqlite/SQLiteCantOpenDatabaseException" since="11"> + <extends name="android/database/sqlite/SQLiteException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/database/sqlite/SQLiteClosable" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable" since="16"/> + <method name="<init>()V"/> + <method name="acquireReference()V"/> + <method name="onAllReferencesReleased()V"/> + <method name="onAllReferencesReleasedFromContainer()V" deprecated="16"/> + <method name="releaseReference()V"/> + <method name="releaseReferenceFromContainer()V" deprecated="16"/> + </class> + <class name="android/database/sqlite/SQLiteConstraintException" since="1"> + <extends name="android/database/sqlite/SQLiteException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/database/sqlite/SQLiteCursor" since="1"> + <extends name="android/database/AbstractWindowedCursor"/> + <method name="<init>(Landroid/database/sqlite/SQLiteCursorDriver;Ljava/lang/String;Landroid/database/sqlite/SQLiteQuery;)V" since="11"/> + <method name="<init>(Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteCursorDriver;Ljava/lang/String;Landroid/database/sqlite/SQLiteQuery;)V" deprecated="16"/> + <method name="getDatabase()Landroid/database/sqlite/SQLiteDatabase;"/> + <method name="setSelectionArguments([Ljava/lang/String;)V"/> + </class> + <class name="android/database/sqlite/SQLiteCursorDriver" since="1"> + <extends name="java/lang/Object"/> + <method name="cursorClosed()V"/> + <method name="cursorDeactivated()V"/> + <method name="cursorRequeried(Landroid/database/Cursor;)V"/> + <method name="query(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;[Ljava/lang/String;)Landroid/database/Cursor;"/> + <method name="setBindArguments([Ljava/lang/String;)V"/> + </class> + <class name="android/database/sqlite/SQLiteDatabase" since="1"> + <extends name="android/database/sqlite/SQLiteClosable"/> + <method name="<init>()V"/> + <method name="beginTransaction()V"/> + <method name="beginTransactionNonExclusive()V" since="11"/> + <method name="beginTransactionWithListener(Landroid/database/sqlite/SQLiteTransactionListener;)V" since="5"/> + <method name="beginTransactionWithListenerNonExclusive(Landroid/database/sqlite/SQLiteTransactionListener;)V" since="11"/> + <method name="close()V" removed="16"/> + <method name="compileStatement(Ljava/lang/String;)Landroid/database/sqlite/SQLiteStatement;"/> + <method name="create(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;)Landroid/database/sqlite/SQLiteDatabase;"/> + <method name="delete(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)I"/> + <method name="deleteDatabase(Ljava/io/File;)Z" since="16"/> + <method name="disableWriteAheadLogging()V" since="16"/> + <method name="enableWriteAheadLogging()Z" since="11"/> + <method name="endTransaction()V"/> + <method name="execSQL(Ljava/lang/String;)V"/> + <method name="execSQL(Ljava/lang/String;[Ljava/lang/Object;)V"/> + <method name="findEditTable(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getAttachedDbs()Ljava/util/List;" since="11"/> + <method name="getMaximumSize()J"/> + <method name="getPageSize()J"/> + <method name="getPath()Ljava/lang/String;"/> + <method name="getSyncedTables()Ljava/util/Map;" deprecated="16"/> + <method name="getVersion()I"/> + <method name="inTransaction()Z"/> + <method name="insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J"/> + <method name="insertOrThrow(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J"/> + <method name="insertWithOnConflict(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;I)J" since="8"/> + <method name="isDatabaseIntegrityOk()Z" since="11"/> + <method name="isDbLockedByCurrentThread()Z"/> + <method name="isDbLockedByOtherThreads()Z" deprecated="16"/> + <method name="isOpen()Z"/> + <method name="isReadOnly()Z"/> + <method name="isWriteAheadLoggingEnabled()Z" since="16"/> + <method name="markTableSyncable(Ljava/lang/String;Ljava/lang/String;)V" deprecated="16"/> + <method name="markTableSyncable(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" deprecated="16"/> + <method name="needUpgrade(I)Z"/> + <method name="openDatabase(Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;I)Landroid/database/sqlite/SQLiteDatabase;"/> + <method name="openDatabase(Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;ILandroid/database/DatabaseErrorHandler;)Landroid/database/sqlite/SQLiteDatabase;" since="11"/> + <method name="openOrCreateDatabase(Ljava/io/File;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;)Landroid/database/sqlite/SQLiteDatabase;"/> + <method name="openOrCreateDatabase(Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;)Landroid/database/sqlite/SQLiteDatabase;"/> + <method name="openOrCreateDatabase(Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;)Landroid/database/sqlite/SQLiteDatabase;" since="11"/> + <method name="query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;"/> + <method name="query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;"/> + <method name="query(ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;"/> + <method name="query(ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;" since="16"/> + <method name="queryWithFactory(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;"/> + <method name="queryWithFactory(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;" since="16"/> + <method name="rawQuery(Ljava/lang/String;[Ljava/lang/String;)Landroid/database/Cursor;"/> + <method name="rawQuery(Ljava/lang/String;[Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;" since="16"/> + <method name="rawQueryWithFactory(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;"/> + <method name="rawQueryWithFactory(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;" since="16"/> + <method name="releaseMemory()I"/> + <method name="replace(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J"/> + <method name="replaceOrThrow(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J"/> + <method name="setForeignKeyConstraintsEnabled(Z)V" since="16"/> + <method name="setLocale(Ljava/util/Locale;)V"/> + <method name="setLockingEnabled(Z)V" deprecated="16"/> + <method name="setMaxSqlCacheSize(I)V" since="11"/> + <method name="setMaximumSize(J)J"/> + <method name="setPageSize(J)V"/> + <method name="setTransactionSuccessful()V"/> + <method name="setVersion(I)V"/> + <method name="update(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I"/> + <method name="updateWithOnConflict(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;I)I" since="8"/> + <method name="validateSql(Ljava/lang/String;Landroid/os/CancellationSignal;)V" since="24"/> + <method name="yieldIfContended()Z" deprecated="16"/> + <method name="yieldIfContendedSafely()Z" since="3"/> + <method name="yieldIfContendedSafely(J)Z" since="5"/> + <field name="CONFLICT_ABORT" since="8"/> + <field name="CONFLICT_FAIL" since="8"/> + <field name="CONFLICT_IGNORE" since="8"/> + <field name="CONFLICT_NONE" since="8"/> + <field name="CONFLICT_REPLACE" since="8"/> + <field name="CONFLICT_ROLLBACK" since="8"/> + <field name="CREATE_IF_NECESSARY"/> + <field name="ENABLE_WRITE_AHEAD_LOGGING" since="16"/> + <field name="MAX_SQL_CACHE_SIZE" since="11"/> + <field name="NO_LOCALIZED_COLLATORS"/> + <field name="OPEN_READONLY"/> + <field name="OPEN_READWRITE"/> + <field name="SQLITE_MAX_LIKE_PATTERN_LENGTH"/> + </class> + <class name="android/database/sqlite/SQLiteDatabase$CursorFactory" since="1"> + <extends name="java/lang/Object"/> + <method name="newCursor(Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteCursorDriver;Ljava/lang/String;Landroid/database/sqlite/SQLiteQuery;)Landroid/database/Cursor;"/> + </class> + <class name="android/database/sqlite/SQLiteDatabaseCorruptException" since="1"> + <extends name="android/database/sqlite/SQLiteException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/database/sqlite/SQLiteDatabaseLockedException" since="11"> + <extends name="android/database/sqlite/SQLiteException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/database/sqlite/SQLiteDatatypeMismatchException" since="11"> + <extends name="android/database/sqlite/SQLiteException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/database/sqlite/SQLiteDiskIOException" since="1"> + <extends name="android/database/sqlite/SQLiteException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/database/sqlite/SQLiteDoneException" since="1"> + <extends name="android/database/sqlite/SQLiteException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/database/sqlite/SQLiteException" since="1"> + <extends name="android/database/SQLException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="16"/> + </class> + <class name="android/database/sqlite/SQLiteFullException" since="1"> + <extends name="android/database/sqlite/SQLiteException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/database/sqlite/SQLiteMisuseException" since="1"> + <extends name="android/database/sqlite/SQLiteException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/database/sqlite/SQLiteOpenHelper" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;I)V"/> + <method name="<init>(Landroid/content/Context;Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;ILandroid/database/DatabaseErrorHandler;)V" since="11"/> + <method name="close()V"/> + <method name="getDatabaseName()Ljava/lang/String;" since="14"/> + <method name="getReadableDatabase()Landroid/database/sqlite/SQLiteDatabase;"/> + <method name="getWritableDatabase()Landroid/database/sqlite/SQLiteDatabase;"/> + <method name="onConfigure(Landroid/database/sqlite/SQLiteDatabase;)V" since="16"/> + <method name="onCreate(Landroid/database/sqlite/SQLiteDatabase;)V"/> + <method name="onDowngrade(Landroid/database/sqlite/SQLiteDatabase;II)V" since="11"/> + <method name="onOpen(Landroid/database/sqlite/SQLiteDatabase;)V"/> + <method name="onUpgrade(Landroid/database/sqlite/SQLiteDatabase;II)V"/> + <method name="setWriteAheadLoggingEnabled(Z)V" since="16"/> + </class> + <class name="android/database/sqlite/SQLiteOutOfMemoryException" since="11"> + <extends name="android/database/sqlite/SQLiteException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/database/sqlite/SQLiteProgram" since="1"> + <extends name="android/database/sqlite/SQLiteClosable"/> + <method name="<init>()V"/> + <method name="bindAllArgsAsStrings([Ljava/lang/String;)V" since="11"/> + <method name="bindBlob(I[B)V"/> + <method name="bindDouble(ID)V"/> + <method name="bindLong(IJ)V"/> + <method name="bindNull(I)V"/> + <method name="bindString(ILjava/lang/String;)V"/> + <method name="clearBindings()V"/> + <method name="close()V" removed="16"/> + <method name="compile(Ljava/lang/String;Z)V" removed="16"/> + <method name="getUniqueId()I" deprecated="16"/> + <method name="native_bind_blob(I[B)V" removed="16"/> + <method name="native_bind_double(ID)V" removed="16"/> + <method name="native_bind_long(IJ)V" removed="16"/> + <method name="native_bind_null(I)V" removed="16"/> + <method name="native_bind_string(ILjava/lang/String;)V" removed="16"/> + <method name="native_compile(Ljava/lang/String;)V" removed="16"/> + <method name="native_finalize()V" removed="16"/> + <field name="mDatabase" removed="16"/> + <field name="nHandle" removed="16"/> + <field name="nStatement" removed="16"/> + </class> + <class name="android/database/sqlite/SQLiteQuery" since="1"> + <extends name="android/database/sqlite/SQLiteProgram"/> + <method name="<init>()V"/> + </class> + <class name="android/database/sqlite/SQLiteQueryBuilder" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="appendColumns(Ljava/lang/StringBuilder;[Ljava/lang/String;)V"/> + <method name="appendWhere(Ljava/lang/CharSequence;)V"/> + <method name="appendWhereEscapeString(Ljava/lang/String;)V"/> + <method name="buildQuery([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" since="11"/> + <method name="buildQuery([Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" deprecated="16"/> + <method name="buildQueryString(ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="buildUnionQuery([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="buildUnionSubQuery(Ljava/lang/String;[Ljava/lang/String;Ljava/util/Set;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" since="11"/> + <method name="buildUnionSubQuery(Ljava/lang/String;[Ljava/lang/String;Ljava/util/Set;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" deprecated="16"/> + <method name="getTables()Ljava/lang/String;"/> + <method name="query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;"/> + <method name="query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;"/> + <method name="query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;" since="16"/> + <method name="setCursorFactory(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;)V"/> + <method name="setDistinct(Z)V"/> + <method name="setProjectionMap(Ljava/util/Map;)V"/> + <method name="setStrict(Z)V" since="14"/> + <method name="setTables(Ljava/lang/String;)V"/> + </class> + <class name="android/database/sqlite/SQLiteReadOnlyDatabaseException" since="11"> + <extends name="android/database/sqlite/SQLiteException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/database/sqlite/SQLiteStatement" since="1"> + <extends name="android/database/sqlite/SQLiteProgram"/> + <method name="<init>()V"/> + <method name="execute()V"/> + <method name="executeInsert()J"/> + <method name="executeUpdateDelete()I" since="11"/> + <method name="simpleQueryForBlobFileDescriptor()Landroid/os/ParcelFileDescriptor;" since="11"/> + <method name="simpleQueryForLong()J"/> + <method name="simpleQueryForString()Ljava/lang/String;"/> + </class> + <class name="android/database/sqlite/SQLiteTableLockedException" since="11"> + <extends name="android/database/sqlite/SQLiteException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/database/sqlite/SQLiteTransactionListener" since="5"> + <extends name="java/lang/Object"/> + <method name="onBegin()V"/> + <method name="onCommit()V"/> + <method name="onRollback()V"/> + </class> + <class name="android/drm/DrmConvertedStatus" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>(I[BI)V"/> + <field name="STATUS_ERROR"/> + <field name="STATUS_INPUTDATA_ERROR"/> + <field name="STATUS_OK"/> + <field name="convertedData"/> + <field name="offset"/> + <field name="statusCode"/> + </class> + <class name="android/drm/DrmErrorEvent" since="11"> + <extends name="android/drm/DrmEvent"/> + <method name="<init>(IILjava/lang/String;)V"/> + <method name="<init>(IILjava/lang/String;Ljava/util/HashMap;)V" since="12"/> + <field name="TYPE_ACQUIRE_DRM_INFO_FAILED" since="12"/> + <field name="TYPE_NOT_SUPPORTED"/> + <field name="TYPE_NO_INTERNET_CONNECTION"/> + <field name="TYPE_OUT_OF_MEMORY"/> + <field name="TYPE_PROCESS_DRM_INFO_FAILED"/> + <field name="TYPE_REMOVE_ALL_RIGHTS_FAILED"/> + <field name="TYPE_RIGHTS_NOT_INSTALLED"/> + <field name="TYPE_RIGHTS_RENEWAL_NOT_ALLOWED"/> + </class> + <class name="android/drm/DrmEvent" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>(IILjava/lang/String;)V"/> + <method name="<init>(IILjava/lang/String;Ljava/util/HashMap;)V" since="12"/> + <method name="getAttribute(Ljava/lang/String;)Ljava/lang/Object;" since="12"/> + <method name="getMessage()Ljava/lang/String;"/> + <method name="getType()I"/> + <method name="getUniqueId()I"/> + <field name="DRM_INFO_OBJECT" since="12"/> + <field name="DRM_INFO_STATUS_OBJECT"/> + <field name="TYPE_ALL_RIGHTS_REMOVED"/> + <field name="TYPE_DRM_INFO_PROCESSED"/> + </class> + <class name="android/drm/DrmInfo" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>(ILjava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(I[BLjava/lang/String;)V"/> + <method name="get(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="getData()[B"/> + <method name="getInfoType()I"/> + <method name="getMimeType()Ljava/lang/String;"/> + <method name="iterator()Ljava/util/Iterator;"/> + <method name="keyIterator()Ljava/util/Iterator;"/> + <method name="put(Ljava/lang/String;Ljava/lang/Object;)V"/> + </class> + <class name="android/drm/DrmInfoEvent" since="11"> + <extends name="android/drm/DrmEvent"/> + <method name="<init>(IILjava/lang/String;)V"/> + <method name="<init>(IILjava/lang/String;Ljava/util/HashMap;)V" since="12"/> + <field name="TYPE_ACCOUNT_ALREADY_REGISTERED"/> + <field name="TYPE_ALREADY_REGISTERED_BY_ANOTHER_ACCOUNT"/> + <field name="TYPE_REMOVE_RIGHTS"/> + <field name="TYPE_RIGHTS_INSTALLED"/> + <field name="TYPE_RIGHTS_REMOVED" since="12"/> + <field name="TYPE_WAIT_FOR_RIGHTS"/> + </class> + <class name="android/drm/DrmInfoRequest" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>(ILjava/lang/String;)V"/> + <method name="get(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="getInfoType()I"/> + <method name="getMimeType()Ljava/lang/String;"/> + <method name="iterator()Ljava/util/Iterator;"/> + <method name="keyIterator()Ljava/util/Iterator;"/> + <method name="put(Ljava/lang/String;Ljava/lang/Object;)V"/> + <field name="ACCOUNT_ID"/> + <field name="SUBSCRIPTION_ID"/> + <field name="TYPE_REGISTRATION_INFO"/> + <field name="TYPE_RIGHTS_ACQUISITION_INFO"/> + <field name="TYPE_RIGHTS_ACQUISITION_PROGRESS_INFO"/> + <field name="TYPE_UNREGISTRATION_INFO"/> + </class> + <class name="android/drm/DrmInfoStatus" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>(IILandroid/drm/ProcessedData;Ljava/lang/String;)V"/> + <field name="STATUS_ERROR"/> + <field name="STATUS_OK"/> + <field name="data"/> + <field name="infoType"/> + <field name="mimeType"/> + <field name="statusCode"/> + </class> + <class name="android/drm/DrmManagerClient" since="11"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable" since="24"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="acquireDrmInfo(Landroid/drm/DrmInfoRequest;)Landroid/drm/DrmInfo;"/> + <method name="acquireRights(Landroid/drm/DrmInfoRequest;)I"/> + <method name="canHandle(Landroid/net/Uri;Ljava/lang/String;)Z"/> + <method name="canHandle(Ljava/lang/String;Ljava/lang/String;)Z"/> + <method name="checkRightsStatus(Landroid/net/Uri;)I"/> + <method name="checkRightsStatus(Landroid/net/Uri;I)I"/> + <method name="checkRightsStatus(Ljava/lang/String;)I"/> + <method name="checkRightsStatus(Ljava/lang/String;I)I"/> + <method name="closeConvertSession(I)Landroid/drm/DrmConvertedStatus;"/> + <method name="convertData(I[B)Landroid/drm/DrmConvertedStatus;"/> + <method name="getAvailableDrmEngines()[Ljava/lang/String;"/> + <method name="getConstraints(Landroid/net/Uri;I)Landroid/content/ContentValues;"/> + <method name="getConstraints(Ljava/lang/String;I)Landroid/content/ContentValues;"/> + <method name="getDrmObjectType(Landroid/net/Uri;Ljava/lang/String;)I"/> + <method name="getDrmObjectType(Ljava/lang/String;Ljava/lang/String;)I"/> + <method name="getMetadata(Landroid/net/Uri;)Landroid/content/ContentValues;"/> + <method name="getMetadata(Ljava/lang/String;)Landroid/content/ContentValues;"/> + <method name="getOriginalMimeType(Landroid/net/Uri;)Ljava/lang/String;"/> + <method name="getOriginalMimeType(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="openConvertSession(Ljava/lang/String;)I"/> + <method name="processDrmInfo(Landroid/drm/DrmInfo;)I"/> + <method name="release()V" since="16" deprecated="24"/> + <method name="removeAllRights()I"/> + <method name="removeRights(Landroid/net/Uri;)I"/> + <method name="removeRights(Ljava/lang/String;)I"/> + <method name="saveRights(Landroid/drm/DrmRights;Ljava/lang/String;Ljava/lang/String;)I"/> + <method name="setOnErrorListener(Landroid/drm/DrmManagerClient$OnErrorListener;)V"/> + <method name="setOnEventListener(Landroid/drm/DrmManagerClient$OnEventListener;)V"/> + <method name="setOnInfoListener(Landroid/drm/DrmManagerClient$OnInfoListener;)V"/> + <field name="ERROR_NONE"/> + <field name="ERROR_UNKNOWN"/> + </class> + <class name="android/drm/DrmManagerClient$OnErrorListener" since="11"> + <extends name="java/lang/Object"/> + <method name="onError(Landroid/drm/DrmManagerClient;Landroid/drm/DrmErrorEvent;)V"/> + </class> + <class name="android/drm/DrmManagerClient$OnEventListener" since="11"> + <extends name="java/lang/Object"/> + <method name="onEvent(Landroid/drm/DrmManagerClient;Landroid/drm/DrmEvent;)V" since="12"/> + <method name="onEvent(Landroid/drm/DrmManagerClient;Landroid/drm/DrmEvent;Ljava/util/HashMap;)V" removed="12"/> + </class> + <class name="android/drm/DrmManagerClient$OnInfoListener" since="11"> + <extends name="java/lang/Object"/> + <method name="onInfo(Landroid/drm/DrmManagerClient;Landroid/drm/DrmInfoEvent;)V"/> + </class> + <class name="android/drm/DrmRights" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/drm/ProcessedData;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/io/File;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="getAccountId()Ljava/lang/String;"/> + <method name="getData()[B"/> + <method name="getMimeType()Ljava/lang/String;"/> + <method name="getSubscriptionId()Ljava/lang/String;"/> + </class> + <class name="android/drm/DrmStore" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V" deprecated="16"/> + </class> + <class name="android/drm/DrmStore$Action" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V" deprecated="16"/> + <field name="DEFAULT"/> + <field name="DISPLAY"/> + <field name="EXECUTE"/> + <field name="OUTPUT"/> + <field name="PLAY"/> + <field name="PREVIEW"/> + <field name="RINGTONE"/> + <field name="TRANSFER"/> + </class> + <class name="android/drm/DrmStore$ConstraintsColumns" since="11"> + <extends name="java/lang/Object"/> + <field name="EXTENDED_METADATA"/> + <field name="LICENSE_AVAILABLE_TIME"/> + <field name="LICENSE_EXPIRY_TIME"/> + <field name="LICENSE_START_TIME"/> + <field name="MAX_REPEAT_COUNT"/> + <field name="REMAINING_REPEAT_COUNT"/> + </class> + <class name="android/drm/DrmStore$DrmObjectType" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V" deprecated="16"/> + <field name="CONTENT"/> + <field name="RIGHTS_OBJECT"/> + <field name="TRIGGER_OBJECT"/> + <field name="UNKNOWN"/> + </class> + <class name="android/drm/DrmStore$Playback" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V" deprecated="16"/> + <field name="PAUSE"/> + <field name="RESUME"/> + <field name="START"/> + <field name="STOP"/> + </class> + <class name="android/drm/DrmStore$RightsStatus" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V" deprecated="16"/> + <field name="RIGHTS_EXPIRED"/> + <field name="RIGHTS_INVALID"/> + <field name="RIGHTS_NOT_ACQUIRED"/> + <field name="RIGHTS_VALID"/> + </class> + <class name="android/drm/DrmSupportInfo" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addFileSuffix(Ljava/lang/String;)V"/> + <method name="addMimeType(Ljava/lang/String;)V"/> + <method name="getDescriprition()Ljava/lang/String;" deprecated="16"/> + <method name="getDescription()Ljava/lang/String;" since="16"/> + <method name="getFileSuffixIterator()Ljava/util/Iterator;"/> + <method name="getMimeTypeIterator()Ljava/util/Iterator;"/> + <method name="setDescription(Ljava/lang/String;)V"/> + </class> + <class name="android/drm/DrmUtils" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getExtendedMetadataParser([B)Landroid/drm/DrmUtils$ExtendedMetadataParser;"/> + </class> + <class name="android/drm/DrmUtils$ExtendedMetadataParser" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="get(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="iterator()Ljava/util/Iterator;"/> + <method name="keyIterator()Ljava/util/Iterator;"/> + </class> + <class name="android/drm/ProcessedData" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAccountId()Ljava/lang/String;"/> + <method name="getData()[B"/> + <method name="getSubscriptionId()Ljava/lang/String;"/> + </class> + <class name="android/gesture/Gesture" since="4"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="addStroke(Landroid/gesture/GestureStroke;)V"/> + <method name="getBoundingBox()Landroid/graphics/RectF;"/> + <method name="getID()J"/> + <method name="getLength()F"/> + <method name="getStrokes()Ljava/util/ArrayList;"/> + <method name="getStrokesCount()I"/> + <method name="toBitmap(IIII)Landroid/graphics/Bitmap;"/> + <method name="toBitmap(IIIII)Landroid/graphics/Bitmap;"/> + <method name="toPath()Landroid/graphics/Path;"/> + <method name="toPath(IIII)Landroid/graphics/Path;"/> + <method name="toPath(Landroid/graphics/Path;)Landroid/graphics/Path;"/> + <method name="toPath(Landroid/graphics/Path;IIII)Landroid/graphics/Path;"/> + <field name="CREATOR"/> + </class> + <class name="android/gesture/GestureLibraries" since="4"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="fromFile(Ljava/io/File;)Landroid/gesture/GestureLibrary;"/> + <method name="fromFile(Ljava/lang/String;)Landroid/gesture/GestureLibrary;"/> + <method name="fromPrivateFile(Landroid/content/Context;Ljava/lang/String;)Landroid/gesture/GestureLibrary;"/> + <method name="fromRawResource(Landroid/content/Context;I)Landroid/gesture/GestureLibrary;"/> + </class> + <class name="android/gesture/GestureLibrary" since="4"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addGesture(Ljava/lang/String;Landroid/gesture/Gesture;)V"/> + <method name="getGestureEntries()Ljava/util/Set;"/> + <method name="getGestures(Ljava/lang/String;)Ljava/util/ArrayList;"/> + <method name="getOrientationStyle()I"/> + <method name="getSequenceType()I"/> + <method name="isReadOnly()Z"/> + <method name="load()Z"/> + <method name="recognize(Landroid/gesture/Gesture;)Ljava/util/ArrayList;"/> + <method name="removeEntry(Ljava/lang/String;)V"/> + <method name="removeGesture(Ljava/lang/String;Landroid/gesture/Gesture;)V"/> + <method name="save()Z"/> + <method name="setOrientationStyle(I)V"/> + <method name="setSequenceType(I)V"/> + <field name="mStore"/> + </class> + <class name="android/gesture/GestureOverlayView" since="4"> + <extends name="android/widget/FrameLayout"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="addOnGestureListener(Landroid/gesture/GestureOverlayView$OnGestureListener;)V"/> + <method name="addOnGesturePerformedListener(Landroid/gesture/GestureOverlayView$OnGesturePerformedListener;)V"/> + <method name="addOnGesturingListener(Landroid/gesture/GestureOverlayView$OnGesturingListener;)V"/> + <method name="cancelClearAnimation()V"/> + <method name="cancelGesture()V"/> + <method name="clear(Z)V"/> + <method name="getCurrentStroke()Ljava/util/ArrayList;"/> + <method name="getFadeOffset()J"/> + <method name="getGesture()Landroid/gesture/Gesture;"/> + <method name="getGestureColor()I"/> + <method name="getGesturePath()Landroid/graphics/Path;"/> + <method name="getGesturePath(Landroid/graphics/Path;)Landroid/graphics/Path;"/> + <method name="getGestureStrokeAngleThreshold()F"/> + <method name="getGestureStrokeLengthThreshold()F"/> + <method name="getGestureStrokeSquarenessTreshold()F"/> + <method name="getGestureStrokeType()I"/> + <method name="getGestureStrokeWidth()F"/> + <method name="getOrientation()I"/> + <method name="getUncertainGestureColor()I"/> + <method name="isEventsInterceptionEnabled()Z"/> + <method name="isFadeEnabled()Z"/> + <method name="isGestureVisible()Z"/> + <method name="isGesturing()Z"/> + <method name="removeAllOnGestureListeners()V"/> + <method name="removeAllOnGesturePerformedListeners()V"/> + <method name="removeAllOnGesturingListeners()V"/> + <method name="removeOnGestureListener(Landroid/gesture/GestureOverlayView$OnGestureListener;)V"/> + <method name="removeOnGesturePerformedListener(Landroid/gesture/GestureOverlayView$OnGesturePerformedListener;)V"/> + <method name="removeOnGesturingListener(Landroid/gesture/GestureOverlayView$OnGesturingListener;)V"/> + <method name="setEventsInterceptionEnabled(Z)V"/> + <method name="setFadeEnabled(Z)V"/> + <method name="setFadeOffset(J)V"/> + <method name="setGesture(Landroid/gesture/Gesture;)V"/> + <method name="setGestureColor(I)V"/> + <method name="setGestureStrokeAngleThreshold(F)V"/> + <method name="setGestureStrokeLengthThreshold(F)V"/> + <method name="setGestureStrokeSquarenessTreshold(F)V"/> + <method name="setGestureStrokeType(I)V"/> + <method name="setGestureStrokeWidth(F)V"/> + <method name="setGestureVisible(Z)V"/> + <method name="setOrientation(I)V"/> + <method name="setUncertainGestureColor(I)V"/> + <field name="GESTURE_STROKE_TYPE_MULTIPLE"/> + <field name="GESTURE_STROKE_TYPE_SINGLE"/> + <field name="ORIENTATION_HORIZONTAL"/> + <field name="ORIENTATION_VERTICAL"/> + </class> + <class name="android/gesture/GestureOverlayView$OnGestureListener" since="4"> + <extends name="java/lang/Object"/> + <method name="onGesture(Landroid/gesture/GestureOverlayView;Landroid/view/MotionEvent;)V"/> + <method name="onGestureCancelled(Landroid/gesture/GestureOverlayView;Landroid/view/MotionEvent;)V"/> + <method name="onGestureEnded(Landroid/gesture/GestureOverlayView;Landroid/view/MotionEvent;)V"/> + <method name="onGestureStarted(Landroid/gesture/GestureOverlayView;Landroid/view/MotionEvent;)V"/> + </class> + <class name="android/gesture/GestureOverlayView$OnGesturePerformedListener" since="4"> + <extends name="java/lang/Object"/> + <method name="onGesturePerformed(Landroid/gesture/GestureOverlayView;Landroid/gesture/Gesture;)V"/> + </class> + <class name="android/gesture/GestureOverlayView$OnGesturingListener" since="4"> + <extends name="java/lang/Object"/> + <method name="onGesturingEnded(Landroid/gesture/GestureOverlayView;)V"/> + <method name="onGesturingStarted(Landroid/gesture/GestureOverlayView;)V"/> + </class> + <class name="android/gesture/GesturePoint" since="4"> + <extends name="java/lang/Object"/> + <method name="<init>(FFJ)V"/> + <field name="timestamp"/> + <field name="x"/> + <field name="y"/> + </class> + <class name="android/gesture/GestureStore" since="4"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addGesture(Ljava/lang/String;Landroid/gesture/Gesture;)V"/> + <method name="getGestureEntries()Ljava/util/Set;"/> + <method name="getGestures(Ljava/lang/String;)Ljava/util/ArrayList;"/> + <method name="getOrientationStyle()I"/> + <method name="getSequenceType()I"/> + <method name="hasChanged()Z"/> + <method name="load(Ljava/io/InputStream;)V"/> + <method name="load(Ljava/io/InputStream;Z)V"/> + <method name="recognize(Landroid/gesture/Gesture;)Ljava/util/ArrayList;"/> + <method name="removeEntry(Ljava/lang/String;)V"/> + <method name="removeGesture(Ljava/lang/String;Landroid/gesture/Gesture;)V"/> + <method name="save(Ljava/io/OutputStream;)V"/> + <method name="save(Ljava/io/OutputStream;Z)V"/> + <method name="setOrientationStyle(I)V"/> + <method name="setSequenceType(I)V"/> + <field name="ORIENTATION_INVARIANT"/> + <field name="ORIENTATION_SENSITIVE"/> + <field name="SEQUENCE_INVARIANT"/> + <field name="SEQUENCE_SENSITIVE"/> + </class> + <class name="android/gesture/GestureStroke" since="4"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/util/ArrayList;)V"/> + <method name="clearPath()V"/> + <method name="computeOrientedBoundingBox()Landroid/gesture/OrientedBoundingBox;"/> + <method name="getPath()Landroid/graphics/Path;"/> + <method name="toPath(FFI)Landroid/graphics/Path;"/> + <field name="boundingBox"/> + <field name="length"/> + <field name="points"/> + </class> + <class name="android/gesture/GestureUtils" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="computeOrientedBoundingBox(Ljava/util/ArrayList;)Landroid/gesture/OrientedBoundingBox;"/> + <method name="computeOrientedBoundingBox([F)Landroid/gesture/OrientedBoundingBox;"/> + <method name="spatialSampling(Landroid/gesture/Gesture;I)[F"/> + <method name="spatialSampling(Landroid/gesture/Gesture;IZ)[F"/> + <method name="temporalSampling(Landroid/gesture/GestureStroke;I)[F"/> + </class> + <class name="android/gesture/OrientedBoundingBox" since="4"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="centerX"/> + <field name="centerY"/> + <field name="height"/> + <field name="orientation"/> + <field name="squareness"/> + <field name="width"/> + </class> + <class name="android/gesture/Prediction" since="4"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="name"/> + <field name="score"/> + </class> + <class name="android/graphics/AvoidXfermode" since="1" deprecated="16" removed="24"> + <extends name="android/graphics/Xfermode"/> + <method name="<init>(IILandroid/graphics/AvoidXfermode$Mode;)V"/> + </class> + <class name="android/graphics/AvoidXfermode$Mode" since="1" removed="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/graphics/AvoidXfermode$Mode;"/> + <method name="values()[Landroid/graphics/AvoidXfermode$Mode;"/> + <field name="AVOID"/> + <field name="TARGET"/> + </class> + <class name="android/graphics/Bitmap" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="compress(Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z"/> + <method name="copy(Landroid/graphics/Bitmap$Config;Z)Landroid/graphics/Bitmap;"/> + <method name="copyPixelsFromBuffer(Ljava/nio/Buffer;)V" since="3"/> + <method name="copyPixelsToBuffer(Ljava/nio/Buffer;)V"/> + <method name="createBitmap(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;"/> + <method name="createBitmap(IILandroid/graphics/Bitmap$Config;Z)Landroid/graphics/Bitmap;" since="26"/> + <method name="createBitmap(IILandroid/graphics/Bitmap$Config;ZLandroid/graphics/ColorSpace;)Landroid/graphics/Bitmap;" since="26"/> + <method name="createBitmap(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap;"/> + <method name="createBitmap(Landroid/graphics/Bitmap;IIII)Landroid/graphics/Bitmap;"/> + <method name="createBitmap(Landroid/graphics/Bitmap;IIIILandroid/graphics/Matrix;Z)Landroid/graphics/Bitmap;"/> + <method name="createBitmap(Landroid/util/DisplayMetrics;IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;" since="17"/> + <method name="createBitmap(Landroid/util/DisplayMetrics;IILandroid/graphics/Bitmap$Config;Z)Landroid/graphics/Bitmap;" since="26"/> + <method name="createBitmap(Landroid/util/DisplayMetrics;IILandroid/graphics/Bitmap$Config;ZLandroid/graphics/ColorSpace;)Landroid/graphics/Bitmap;" since="26"/> + <method name="createBitmap(Landroid/util/DisplayMetrics;[IIIIILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;" since="17"/> + <method name="createBitmap(Landroid/util/DisplayMetrics;[IIILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;" since="17"/> + <method name="createBitmap([IIIIILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;"/> + <method name="createBitmap([IIILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;"/> + <method name="createScaledBitmap(Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;"/> + <method name="eraseColor(I)V"/> + <method name="extractAlpha()Landroid/graphics/Bitmap;"/> + <method name="extractAlpha(Landroid/graphics/Paint;[I)Landroid/graphics/Bitmap;"/> + <method name="getAllocationByteCount()I" since="19"/> + <method name="getByteCount()I" since="12"/> + <method name="getColorSpace()Landroid/graphics/ColorSpace;" since="26"/> + <method name="getConfig()Landroid/graphics/Bitmap$Config;"/> + <method name="getDensity()I" since="4"/> + <method name="getGenerationId()I" since="12"/> + <method name="getHeight()I"/> + <method name="getNinePatchChunk()[B"/> + <method name="getPixel(II)I"/> + <method name="getPixels([IIIIIII)V"/> + <method name="getRowBytes()I"/> + <method name="getScaledHeight(I)I" since="4"/> + <method name="getScaledHeight(Landroid/graphics/Canvas;)I" since="4"/> + <method name="getScaledHeight(Landroid/util/DisplayMetrics;)I" since="4"/> + <method name="getScaledWidth(I)I" since="4"/> + <method name="getScaledWidth(Landroid/graphics/Canvas;)I" since="4"/> + <method name="getScaledWidth(Landroid/util/DisplayMetrics;)I" since="4"/> + <method name="getWidth()I"/> + <method name="hasAlpha()Z"/> + <method name="hasMipMap()Z" since="17"/> + <method name="isMutable()Z"/> + <method name="isPremultiplied()Z" since="17"/> + <method name="isRecycled()Z"/> + <method name="prepareToDraw()V" since="4"/> + <method name="reconfigure(IILandroid/graphics/Bitmap$Config;)V" since="19"/> + <method name="recycle()V"/> + <method name="sameAs(Landroid/graphics/Bitmap;)Z" since="12"/> + <method name="setConfig(Landroid/graphics/Bitmap$Config;)V" since="19"/> + <method name="setDensity(I)V" since="4"/> + <method name="setHasAlpha(Z)V" since="12"/> + <method name="setHasMipMap(Z)V" since="17"/> + <method name="setHeight(I)V" since="19"/> + <method name="setPixel(III)V"/> + <method name="setPixels([IIIIIII)V"/> + <method name="setPremultiplied(Z)V" since="19"/> + <method name="setWidth(I)V" since="19"/> + <field name="CREATOR"/> + <field name="DENSITY_NONE" since="4"/> + </class> + <class name="android/graphics/Bitmap$CompressFormat" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/graphics/Bitmap$CompressFormat;"/> + <method name="values()[Landroid/graphics/Bitmap$CompressFormat;"/> + <field name="JPEG"/> + <field name="PNG"/> + <field name="WEBP" since="14"/> + </class> + <class name="android/graphics/Bitmap$Config" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/graphics/Bitmap$Config;"/> + <method name="values()[Landroid/graphics/Bitmap$Config;"/> + <field name="ALPHA_8"/> + <field name="ARGB_4444"/> + <field name="ARGB_8888"/> + <field name="HARDWARE" since="26"/> + <field name="RGBA_F16" since="26"/> + <field name="RGB_565"/> + </class> + <class name="android/graphics/BitmapFactory" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="decodeByteArray([BII)Landroid/graphics/Bitmap;"/> + <method name="decodeByteArray([BIILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;"/> + <method name="decodeFile(Ljava/lang/String;)Landroid/graphics/Bitmap;"/> + <method name="decodeFile(Ljava/lang/String;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;"/> + <method name="decodeFileDescriptor(Ljava/io/FileDescriptor;)Landroid/graphics/Bitmap;"/> + <method name="decodeFileDescriptor(Ljava/io/FileDescriptor;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;"/> + <method name="decodeResource(Landroid/content/res/Resources;I)Landroid/graphics/Bitmap;"/> + <method name="decodeResource(Landroid/content/res/Resources;ILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;"/> + <method name="decodeResourceStream(Landroid/content/res/Resources;Landroid/util/TypedValue;Ljava/io/InputStream;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" since="4"/> + <method name="decodeStream(Ljava/io/InputStream;)Landroid/graphics/Bitmap;"/> + <method name="decodeStream(Ljava/io/InputStream;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;"/> + </class> + <class name="android/graphics/BitmapFactory$Options" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="requestCancelDecode()V" deprecated="24"/> + <field name="inBitmap" since="11"/> + <field name="inDensity" since="4"/> + <field name="inDither" deprecated="24"/> + <field name="inInputShareable" since="4" deprecated="21"/> + <field name="inJustDecodeBounds"/> + <field name="inMutable" since="11"/> + <field name="inPreferQualityOverSpeed" since="10" deprecated="24"/> + <field name="inPreferredColorSpace" since="26"/> + <field name="inPreferredConfig"/> + <field name="inPremultiplied" since="19"/> + <field name="inPurgeable" since="4" deprecated="21"/> + <field name="inSampleSize"/> + <field name="inScaled" since="4"/> + <field name="inScreenDensity" since="4"/> + <field name="inTargetDensity" since="4"/> + <field name="inTempStorage"/> + <field name="mCancel" deprecated="24"/> + <field name="outColorSpace" since="26"/> + <field name="outConfig" since="26"/> + <field name="outHeight"/> + <field name="outMimeType"/> + <field name="outWidth"/> + </class> + <class name="android/graphics/BitmapRegionDecoder" since="10"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="decodeRegion(Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;"/> + <method name="getHeight()I"/> + <method name="getWidth()I"/> + <method name="isRecycled()Z"/> + <method name="newInstance(Ljava/io/FileDescriptor;Z)Landroid/graphics/BitmapRegionDecoder;"/> + <method name="newInstance(Ljava/io/InputStream;Z)Landroid/graphics/BitmapRegionDecoder;"/> + <method name="newInstance(Ljava/lang/String;Z)Landroid/graphics/BitmapRegionDecoder;"/> + <method name="newInstance([BIIZ)Landroid/graphics/BitmapRegionDecoder;"/> + <method name="recycle()V"/> + </class> + <class name="android/graphics/BitmapShader" since="1"> + <extends name="android/graphics/Shader"/> + <method name="<init>(Landroid/graphics/Bitmap;Landroid/graphics/Shader$TileMode;Landroid/graphics/Shader$TileMode;)V"/> + </class> + <class name="android/graphics/BlurMaskFilter" since="1"> + <extends name="android/graphics/MaskFilter"/> + <method name="<init>(FLandroid/graphics/BlurMaskFilter$Blur;)V"/> + </class> + <class name="android/graphics/BlurMaskFilter$Blur" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/graphics/BlurMaskFilter$Blur;"/> + <method name="values()[Landroid/graphics/BlurMaskFilter$Blur;"/> + <field name="INNER"/> + <field name="NORMAL"/> + <field name="OUTER"/> + <field name="SOLID"/> + </class> + <class name="android/graphics/Camera" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="applyToCanvas(Landroid/graphics/Canvas;)V"/> + <method name="dotWithNormal(FFF)F"/> + <method name="getLocationX()F" since="16"/> + <method name="getLocationY()F" since="16"/> + <method name="getLocationZ()F" since="16"/> + <method name="getMatrix(Landroid/graphics/Matrix;)V"/> + <method name="restore()V"/> + <method name="rotate(FFF)V" since="12"/> + <method name="rotateX(F)V"/> + <method name="rotateY(F)V"/> + <method name="rotateZ(F)V"/> + <method name="save()V"/> + <method name="setLocation(FFF)V" since="12"/> + <method name="translate(FFF)V"/> + </class> + <class name="android/graphics/Canvas" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/graphics/Bitmap;)V"/> + <method name="<init>(Ljavax/microedition/khronos/opengles/GL;)V" removed="11"/> + <method name="clipOutPath(Landroid/graphics/Path;)Z" since="26"/> + <method name="clipOutRect(FFFF)Z" since="26"/> + <method name="clipOutRect(IIII)Z" since="26"/> + <method name="clipOutRect(Landroid/graphics/Rect;)Z" since="26"/> + <method name="clipOutRect(Landroid/graphics/RectF;)Z" since="26"/> + <method name="clipPath(Landroid/graphics/Path;)Z"/> + <method name="clipPath(Landroid/graphics/Path;Landroid/graphics/Region$Op;)Z" deprecated="26"/> + <method name="clipRect(FFFF)Z"/> + <method name="clipRect(FFFFLandroid/graphics/Region$Op;)Z" deprecated="26"/> + <method name="clipRect(IIII)Z"/> + <method name="clipRect(Landroid/graphics/Rect;)Z"/> + <method name="clipRect(Landroid/graphics/Rect;Landroid/graphics/Region$Op;)Z" deprecated="26"/> + <method name="clipRect(Landroid/graphics/RectF;)Z"/> + <method name="clipRect(Landroid/graphics/RectF;Landroid/graphics/Region$Op;)Z" deprecated="26"/> + <method name="clipRegion(Landroid/graphics/Region;)Z" deprecated="21" removed="26"/> + <method name="clipRegion(Landroid/graphics/Region;Landroid/graphics/Region$Op;)Z" deprecated="21" removed="26"/> + <method name="concat(Landroid/graphics/Matrix;)V"/> + <method name="drawARGB(IIII)V"/> + <method name="drawArc(FFFFFFZLandroid/graphics/Paint;)V" since="21"/> + <method name="drawArc(Landroid/graphics/RectF;FFZLandroid/graphics/Paint;)V"/> + <method name="drawBitmap(Landroid/graphics/Bitmap;FFLandroid/graphics/Paint;)V"/> + <method name="drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Matrix;Landroid/graphics/Paint;)V"/> + <method name="drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Paint;)V"/> + <method name="drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/RectF;Landroid/graphics/Paint;)V"/> + <method name="drawBitmap([IIIFFIIZLandroid/graphics/Paint;)V" since="3" deprecated="21"/> + <method name="drawBitmap([IIIIIIIZLandroid/graphics/Paint;)V" deprecated="21"/> + <method name="drawBitmapMesh(Landroid/graphics/Bitmap;II[FI[IILandroid/graphics/Paint;)V"/> + <method name="drawCircle(FFFLandroid/graphics/Paint;)V"/> + <method name="drawColor(I)V"/> + <method name="drawColor(ILandroid/graphics/PorterDuff$Mode;)V"/> + <method name="drawLine(FFFFLandroid/graphics/Paint;)V"/> + <method name="drawLines([FIILandroid/graphics/Paint;)V"/> + <method name="drawLines([FLandroid/graphics/Paint;)V"/> + <method name="drawOval(FFFFLandroid/graphics/Paint;)V" since="21"/> + <method name="drawOval(Landroid/graphics/RectF;Landroid/graphics/Paint;)V"/> + <method name="drawPaint(Landroid/graphics/Paint;)V"/> + <method name="drawPath(Landroid/graphics/Path;Landroid/graphics/Paint;)V"/> + <method name="drawPicture(Landroid/graphics/Picture;)V"/> + <method name="drawPicture(Landroid/graphics/Picture;Landroid/graphics/Rect;)V"/> + <method name="drawPicture(Landroid/graphics/Picture;Landroid/graphics/RectF;)V"/> + <method name="drawPoint(FFLandroid/graphics/Paint;)V"/> + <method name="drawPoints([FIILandroid/graphics/Paint;)V"/> + <method name="drawPoints([FLandroid/graphics/Paint;)V"/> + <method name="drawPosText(Ljava/lang/String;[FLandroid/graphics/Paint;)V" deprecated="16"/> + <method name="drawPosText([CII[FLandroid/graphics/Paint;)V" deprecated="16"/> + <method name="drawRGB(III)V"/> + <method name="drawRect(FFFFLandroid/graphics/Paint;)V"/> + <method name="drawRect(Landroid/graphics/Rect;Landroid/graphics/Paint;)V"/> + <method name="drawRect(Landroid/graphics/RectF;Landroid/graphics/Paint;)V"/> + <method name="drawRoundRect(FFFFFFLandroid/graphics/Paint;)V" since="21"/> + <method name="drawRoundRect(Landroid/graphics/RectF;FFLandroid/graphics/Paint;)V"/> + <method name="drawText(Ljava/lang/CharSequence;IIFFLandroid/graphics/Paint;)V"/> + <method name="drawText(Ljava/lang/String;FFLandroid/graphics/Paint;)V"/> + <method name="drawText(Ljava/lang/String;IIFFLandroid/graphics/Paint;)V"/> + <method name="drawText([CIIFFLandroid/graphics/Paint;)V"/> + <method name="drawTextOnPath(Ljava/lang/String;Landroid/graphics/Path;FFLandroid/graphics/Paint;)V"/> + <method name="drawTextOnPath([CIILandroid/graphics/Path;FFLandroid/graphics/Paint;)V"/> + <method name="drawTextRun(Ljava/lang/CharSequence;IIIIFFZLandroid/graphics/Paint;)V" since="23"/> + <method name="drawTextRun([CIIIIFFZLandroid/graphics/Paint;)V" since="23"/> + <method name="drawVertices(Landroid/graphics/Canvas$VertexMode;I[FI[FI[II[SIILandroid/graphics/Paint;)V"/> + <method name="freeGlCaches()V" removed="11"/> + <method name="getClipBounds()Landroid/graphics/Rect;"/> + <method name="getClipBounds(Landroid/graphics/Rect;)Z"/> + <method name="getDensity()I" since="4"/> + <method name="getDrawFilter()Landroid/graphics/DrawFilter;"/> + <method name="getGL()Ljavax/microedition/khronos/opengles/GL;" removed="11"/> + <method name="getHeight()I"/> + <method name="getMatrix()Landroid/graphics/Matrix;" deprecated="16"/> + <method name="getMatrix(Landroid/graphics/Matrix;)V" deprecated="16"/> + <method name="getMaximumBitmapHeight()I" since="14"/> + <method name="getMaximumBitmapWidth()I" since="14"/> + <method name="getSaveCount()I"/> + <method name="getWidth()I"/> + <method name="isHardwareAccelerated()Z" since="11"/> + <method name="isOpaque()Z"/> + <method name="quickReject(FFFFLandroid/graphics/Canvas$EdgeType;)Z"/> + <method name="quickReject(Landroid/graphics/Path;Landroid/graphics/Canvas$EdgeType;)Z"/> + <method name="quickReject(Landroid/graphics/RectF;Landroid/graphics/Canvas$EdgeType;)Z"/> + <method name="restore()V"/> + <method name="restoreToCount(I)V"/> + <method name="rotate(F)V"/> + <method name="rotate(FFF)V"/> + <method name="save()I"/> + <method name="save(I)I" deprecated="26"/> + <method name="saveLayer(FFFFLandroid/graphics/Paint;)I" since="21"/> + <method name="saveLayer(FFFFLandroid/graphics/Paint;I)I" deprecated="26"/> + <method name="saveLayer(Landroid/graphics/RectF;Landroid/graphics/Paint;)I" since="21"/> + <method name="saveLayer(Landroid/graphics/RectF;Landroid/graphics/Paint;I)I" deprecated="26"/> + <method name="saveLayerAlpha(FFFFI)I" since="21"/> + <method name="saveLayerAlpha(FFFFII)I" deprecated="26"/> + <method name="saveLayerAlpha(Landroid/graphics/RectF;I)I" since="21"/> + <method name="saveLayerAlpha(Landroid/graphics/RectF;II)I" deprecated="26"/> + <method name="scale(FF)V"/> + <method name="scale(FFFF)V"/> + <method name="setBitmap(Landroid/graphics/Bitmap;)V"/> + <method name="setDensity(I)V" since="4"/> + <method name="setDrawFilter(Landroid/graphics/DrawFilter;)V"/> + <method name="setMatrix(Landroid/graphics/Matrix;)V"/> + <method name="setViewport(II)V" removed="11"/> + <method name="skew(FF)V"/> + <method name="translate(FF)V"/> + <field name="ALL_SAVE_FLAG"/> + <field name="CLIP_SAVE_FLAG" deprecated="26"/> + <field name="CLIP_TO_LAYER_SAVE_FLAG" deprecated="26"/> + <field name="FULL_COLOR_LAYER_SAVE_FLAG" deprecated="26"/> + <field name="HAS_ALPHA_LAYER_SAVE_FLAG" deprecated="26"/> + <field name="MATRIX_SAVE_FLAG" deprecated="26"/> + </class> + <class name="android/graphics/Canvas$EdgeType" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/graphics/Canvas$EdgeType;"/> + <method name="values()[Landroid/graphics/Canvas$EdgeType;"/> + <field name="AA"/> + <field name="BW"/> + </class> + <class name="android/graphics/Canvas$VertexMode" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/graphics/Canvas$VertexMode;"/> + <method name="values()[Landroid/graphics/Canvas$VertexMode;"/> + <field name="TRIANGLES"/> + <field name="TRIANGLE_FAN"/> + <field name="TRIANGLE_STRIP"/> + </class> + <class name="android/graphics/Color" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="HSVToColor(I[F)I"/> + <method name="HSVToColor([F)I"/> + <method name="RGBToHSV(III[F)V"/> + <method name="alpha()F" since="26"/> + <method name="alpha(I)I"/> + <method name="alpha(J)F" since="26"/> + <method name="argb(FFFF)I" since="26"/> + <method name="argb(IIII)I"/> + <method name="blue()F" since="26"/> + <method name="blue(I)I"/> + <method name="blue(J)F" since="26"/> + <method name="colorSpace(J)Landroid/graphics/ColorSpace;" since="26"/> + <method name="colorToHSV(I[F)V"/> + <method name="convert(FFFFLandroid/graphics/ColorSpace$Connector;)J" since="26"/> + <method name="convert(FFFFLandroid/graphics/ColorSpace;Landroid/graphics/ColorSpace;)J" since="26"/> + <method name="convert(ILandroid/graphics/ColorSpace;)J" since="26"/> + <method name="convert(JLandroid/graphics/ColorSpace$Connector;)J" since="26"/> + <method name="convert(JLandroid/graphics/ColorSpace;)J" since="26"/> + <method name="convert(Landroid/graphics/ColorSpace;)Landroid/graphics/Color;" since="26"/> + <method name="getColorSpace()Landroid/graphics/ColorSpace;" since="26"/> + <method name="getComponent(I)F" since="26"/> + <method name="getComponentCount()I" since="26"/> + <method name="getComponents()[F" since="26"/> + <method name="getComponents([F)[F" since="26"/> + <method name="getModel()Landroid/graphics/ColorSpace$Model;" since="26"/> + <method name="green()F" since="26"/> + <method name="green(I)I"/> + <method name="green(J)F" since="26"/> + <method name="isInColorSpace(JLandroid/graphics/ColorSpace;)Z" since="26"/> + <method name="isSrgb()Z" since="26"/> + <method name="isSrgb(J)Z" since="26"/> + <method name="isWideGamut()Z" since="26"/> + <method name="isWideGamut(J)Z" since="26"/> + <method name="luminance()F" since="26"/> + <method name="luminance(I)F" since="24"/> + <method name="luminance(J)F" since="26"/> + <method name="pack()J" since="26"/> + <method name="pack(FFF)J" since="26"/> + <method name="pack(FFFF)J" since="26"/> + <method name="pack(FFFFLandroid/graphics/ColorSpace;)J" since="26"/> + <method name="pack(I)J" since="26"/> + <method name="parseColor(Ljava/lang/String;)I"/> + <method name="red()F" since="26"/> + <method name="red(I)I"/> + <method name="red(J)F" since="26"/> + <method name="rgb(FFF)I" since="26"/> + <method name="rgb(III)I"/> + <method name="toArgb()I" since="26"/> + <method name="toArgb(J)I" since="26"/> + <method name="valueOf(FFF)Landroid/graphics/Color;" since="26"/> + <method name="valueOf(FFFF)Landroid/graphics/Color;" since="26"/> + <method name="valueOf(FFFFLandroid/graphics/ColorSpace;)Landroid/graphics/Color;" since="26"/> + <method name="valueOf(I)Landroid/graphics/Color;" since="26"/> + <method name="valueOf(J)Landroid/graphics/Color;" since="26"/> + <method name="valueOf([FLandroid/graphics/ColorSpace;)Landroid/graphics/Color;" since="26"/> + <field name="BLACK"/> + <field name="BLUE"/> + <field name="CYAN"/> + <field name="DKGRAY"/> + <field name="GRAY"/> + <field name="GREEN"/> + <field name="LTGRAY"/> + <field name="MAGENTA"/> + <field name="RED"/> + <field name="TRANSPARENT"/> + <field name="WHITE"/> + <field name="YELLOW"/> + </class> + <class name="android/graphics/ColorFilter" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V" deprecated="26"/> + </class> + <class name="android/graphics/ColorMatrix" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/graphics/ColorMatrix;)V"/> + <method name="<init>([F)V"/> + <method name="getArray()[F"/> + <method name="postConcat(Landroid/graphics/ColorMatrix;)V"/> + <method name="preConcat(Landroid/graphics/ColorMatrix;)V"/> + <method name="reset()V"/> + <method name="set(Landroid/graphics/ColorMatrix;)V"/> + <method name="set([F)V"/> + <method name="setConcat(Landroid/graphics/ColorMatrix;Landroid/graphics/ColorMatrix;)V"/> + <method name="setRGB2YUV()V"/> + <method name="setRotate(IF)V"/> + <method name="setSaturation(F)V"/> + <method name="setScale(FFFF)V"/> + <method name="setYUV2RGB()V"/> + </class> + <class name="android/graphics/ColorMatrixColorFilter" since="1"> + <extends name="android/graphics/ColorFilter"/> + <method name="<init>(Landroid/graphics/ColorMatrix;)V"/> + <method name="<init>([F)V"/> + <method name="getColorMatrix(Landroid/graphics/ColorMatrix;)V" since="26"/> + </class> + <class name="android/graphics/ColorSpace" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="adapt(Landroid/graphics/ColorSpace;[F)Landroid/graphics/ColorSpace;"/> + <method name="adapt(Landroid/graphics/ColorSpace;[FLandroid/graphics/ColorSpace$Adaptation;)Landroid/graphics/ColorSpace;"/> + <method name="connect(Landroid/graphics/ColorSpace;)Landroid/graphics/ColorSpace$Connector;"/> + <method name="connect(Landroid/graphics/ColorSpace;Landroid/graphics/ColorSpace$RenderIntent;)Landroid/graphics/ColorSpace$Connector;"/> + <method name="connect(Landroid/graphics/ColorSpace;Landroid/graphics/ColorSpace;)Landroid/graphics/ColorSpace$Connector;"/> + <method name="connect(Landroid/graphics/ColorSpace;Landroid/graphics/ColorSpace;Landroid/graphics/ColorSpace$RenderIntent;)Landroid/graphics/ColorSpace$Connector;"/> + <method name="fromXyz(FFF)[F"/> + <method name="fromXyz([F)[F"/> + <method name="get(Landroid/graphics/ColorSpace$Named;)Landroid/graphics/ColorSpace;"/> + <method name="getComponentCount()I"/> + <method name="getId()I"/> + <method name="getMaxValue(I)F"/> + <method name="getMinValue(I)F"/> + <method name="getModel()Landroid/graphics/ColorSpace$Model;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="isSrgb()Z"/> + <method name="isWideGamut()Z"/> + <method name="match([FLandroid/graphics/ColorSpace$Rgb$TransferParameters;)Landroid/graphics/ColorSpace;"/> + <method name="toXyz(FFF)[F"/> + <method name="toXyz([F)[F"/> + <field name="ILLUMINANT_A"/> + <field name="ILLUMINANT_B"/> + <field name="ILLUMINANT_C"/> + <field name="ILLUMINANT_D50"/> + <field name="ILLUMINANT_D55"/> + <field name="ILLUMINANT_D60"/> + <field name="ILLUMINANT_D65"/> + <field name="ILLUMINANT_D75"/> + <field name="ILLUMINANT_E"/> + <field name="MAX_ID"/> + <field name="MIN_ID"/> + </class> + <class name="android/graphics/ColorSpace$Adaptation" since="26"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/graphics/ColorSpace$Adaptation;"/> + <method name="values()[Landroid/graphics/ColorSpace$Adaptation;"/> + <field name="BRADFORD"/> + <field name="CIECAT02"/> + <field name="VON_KRIES"/> + </class> + <class name="android/graphics/ColorSpace$Connector" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getDestination()Landroid/graphics/ColorSpace;"/> + <method name="getRenderIntent()Landroid/graphics/ColorSpace$RenderIntent;"/> + <method name="getSource()Landroid/graphics/ColorSpace;"/> + <method name="transform(FFF)[F"/> + <method name="transform([F)[F"/> + </class> + <class name="android/graphics/ColorSpace$Model" since="26"> + <extends name="java/lang/Enum"/> + <method name="getComponentCount()I"/> + <method name="valueOf(Ljava/lang/String;)Landroid/graphics/ColorSpace$Model;"/> + <method name="values()[Landroid/graphics/ColorSpace$Model;"/> + <field name="CMYK"/> + <field name="LAB"/> + <field name="RGB"/> + <field name="XYZ"/> + </class> + <class name="android/graphics/ColorSpace$Named" since="26"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/graphics/ColorSpace$Named;"/> + <method name="values()[Landroid/graphics/ColorSpace$Named;"/> + <field name="ACES"/> + <field name="ACESCG"/> + <field name="ADOBE_RGB"/> + <field name="BT2020"/> + <field name="BT709"/> + <field name="CIE_LAB"/> + <field name="CIE_XYZ"/> + <field name="DCI_P3"/> + <field name="DISPLAY_P3"/> + <field name="EXTENDED_SRGB"/> + <field name="LINEAR_EXTENDED_SRGB"/> + <field name="LINEAR_SRGB"/> + <field name="NTSC_1953"/> + <field name="PRO_PHOTO_RGB"/> + <field name="SMPTE_C"/> + <field name="SRGB"/> + </class> + <class name="android/graphics/ColorSpace$RenderIntent" since="26"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/graphics/ColorSpace$RenderIntent;"/> + <method name="values()[Landroid/graphics/ColorSpace$RenderIntent;"/> + <field name="ABSOLUTE"/> + <field name="PERCEPTUAL"/> + <field name="RELATIVE"/> + <field name="SATURATION"/> + </class> + <class name="android/graphics/ColorSpace$Rgb" since="26"> + <extends name="android/graphics/ColorSpace"/> + <method name="<init>(Ljava/lang/String;[FD)V"/> + <method name="<init>(Ljava/lang/String;[FLandroid/graphics/ColorSpace$Rgb$TransferParameters;)V"/> + <method name="<init>(Ljava/lang/String;[FLjava/util/function/DoubleUnaryOperator;Ljava/util/function/DoubleUnaryOperator;)V"/> + <method name="<init>(Ljava/lang/String;[F[FD)V"/> + <method name="<init>(Ljava/lang/String;[F[FLandroid/graphics/ColorSpace$Rgb$TransferParameters;)V"/> + <method name="<init>(Ljava/lang/String;[F[FLjava/util/function/DoubleUnaryOperator;Ljava/util/function/DoubleUnaryOperator;FF)V"/> + <method name="fromLinear(FFF)[F"/> + <method name="fromLinear([F)[F"/> + <method name="getEotf()Ljava/util/function/DoubleUnaryOperator;"/> + <method name="getInverseTransform()[F"/> + <method name="getInverseTransform([F)[F"/> + <method name="getOetf()Ljava/util/function/DoubleUnaryOperator;"/> + <method name="getPrimaries()[F"/> + <method name="getPrimaries([F)[F"/> + <method name="getTransferParameters()Landroid/graphics/ColorSpace$Rgb$TransferParameters;"/> + <method name="getTransform()[F"/> + <method name="getTransform([F)[F"/> + <method name="getWhitePoint()[F"/> + <method name="getWhitePoint([F)[F"/> + <method name="toLinear(FFF)[F"/> + <method name="toLinear([F)[F"/> + </class> + <class name="android/graphics/ColorSpace$Rgb$TransferParameters" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>(DDDDD)V"/> + <method name="<init>(DDDDDDD)V"/> + <field name="a"/> + <field name="b"/> + <field name="c"/> + <field name="d"/> + <field name="e"/> + <field name="f"/> + <field name="g"/> + </class> + <class name="android/graphics/ComposePathEffect" since="1"> + <extends name="android/graphics/PathEffect"/> + <method name="<init>(Landroid/graphics/PathEffect;Landroid/graphics/PathEffect;)V"/> + </class> + <class name="android/graphics/ComposeShader" since="1"> + <extends name="android/graphics/Shader"/> + <method name="<init>(Landroid/graphics/Shader;Landroid/graphics/Shader;Landroid/graphics/PorterDuff$Mode;)V"/> + <method name="<init>(Landroid/graphics/Shader;Landroid/graphics/Shader;Landroid/graphics/Xfermode;)V"/> + </class> + <class name="android/graphics/CornerPathEffect" since="1"> + <extends name="android/graphics/PathEffect"/> + <method name="<init>(F)V"/> + </class> + <class name="android/graphics/DashPathEffect" since="1"> + <extends name="android/graphics/PathEffect"/> + <method name="<init>([FF)V"/> + </class> + <class name="android/graphics/DiscretePathEffect" since="1"> + <extends name="android/graphics/PathEffect"/> + <method name="<init>(FF)V"/> + </class> + <class name="android/graphics/DrawFilter" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/graphics/EmbossMaskFilter" since="1"> + <extends name="android/graphics/MaskFilter"/> + <method name="<init>([FFFF)V"/> + </class> + <class name="android/graphics/ImageFormat" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getBitsPerPixel(I)I"/> + <field name="DEPTH16" since="23"/> + <field name="DEPTH_POINT_CLOUD" since="23"/> + <field name="FLEX_RGBA_8888" since="23"/> + <field name="FLEX_RGB_888" since="23"/> + <field name="JPEG"/> + <field name="NV16"/> + <field name="NV21"/> + <field name="PRIVATE" since="23"/> + <field name="RAW10" since="21"/> + <field name="RAW12" since="23"/> + <field name="RAW_PRIVATE" since="24"/> + <field name="RAW_SENSOR" since="21"/> + <field name="RGB_565"/> + <field name="UNKNOWN"/> + <field name="YUV_420_888" since="19"/> + <field name="YUV_422_888" since="23"/> + <field name="YUV_444_888" since="23"/> + <field name="YUY2"/> + <field name="YV12" since="9"/> + </class> + <class name="android/graphics/Interpolator" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(I)V"/> + <method name="<init>(II)V"/> + <method name="getKeyFrameCount()I"/> + <method name="getValueCount()I"/> + <method name="reset(I)V"/> + <method name="reset(II)V"/> + <method name="setKeyFrame(II[F)V"/> + <method name="setKeyFrame(II[F[F)V"/> + <method name="setRepeatMirror(FZ)V"/> + <method name="timeToValues(I[F)Landroid/graphics/Interpolator$Result;"/> + <method name="timeToValues([F)Landroid/graphics/Interpolator$Result;"/> + </class> + <class name="android/graphics/Interpolator$Result" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/graphics/Interpolator$Result;"/> + <method name="values()[Landroid/graphics/Interpolator$Result;"/> + <field name="FREEZE_END"/> + <field name="FREEZE_START"/> + <field name="NORMAL"/> + </class> + <class name="android/graphics/LayerRasterizer" since="1" deprecated="21" removed="26"> + <extends name="android/graphics/Rasterizer"/> + <method name="<init>()V"/> + <method name="addLayer(Landroid/graphics/Paint;)V"/> + <method name="addLayer(Landroid/graphics/Paint;FF)V"/> + </class> + <class name="android/graphics/LightingColorFilter" since="1"> + <extends name="android/graphics/ColorFilter"/> + <method name="<init>(II)V"/> + <method name="getColorAdd()I" since="26"/> + <method name="getColorMultiply()I" since="26"/> + </class> + <class name="android/graphics/LinearGradient" since="1"> + <extends name="android/graphics/Shader"/> + <method name="<init>(FFFFIILandroid/graphics/Shader$TileMode;)V"/> + <method name="<init>(FFFF[I[FLandroid/graphics/Shader$TileMode;)V"/> + </class> + <class name="android/graphics/MaskFilter" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/graphics/Matrix" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/graphics/Matrix;)V"/> + <method name="getValues([F)V"/> + <method name="invert(Landroid/graphics/Matrix;)Z"/> + <method name="isAffine()Z" since="21"/> + <method name="isIdentity()Z"/> + <method name="mapPoints([F)V"/> + <method name="mapPoints([FI[FII)V"/> + <method name="mapPoints([F[F)V"/> + <method name="mapRadius(F)F"/> + <method name="mapRect(Landroid/graphics/RectF;)Z"/> + <method name="mapRect(Landroid/graphics/RectF;Landroid/graphics/RectF;)Z"/> + <method name="mapVectors([F)V"/> + <method name="mapVectors([FI[FII)V"/> + <method name="mapVectors([F[F)V"/> + <method name="postConcat(Landroid/graphics/Matrix;)Z"/> + <method name="postRotate(F)Z"/> + <method name="postRotate(FFF)Z"/> + <method name="postScale(FF)Z"/> + <method name="postScale(FFFF)Z"/> + <method name="postSkew(FF)Z"/> + <method name="postSkew(FFFF)Z"/> + <method name="postTranslate(FF)Z"/> + <method name="preConcat(Landroid/graphics/Matrix;)Z"/> + <method name="preRotate(F)Z"/> + <method name="preRotate(FFF)Z"/> + <method name="preScale(FF)Z"/> + <method name="preScale(FFFF)Z"/> + <method name="preSkew(FF)Z"/> + <method name="preSkew(FFFF)Z"/> + <method name="preTranslate(FF)Z"/> + <method name="rectStaysRect()Z"/> + <method name="reset()V"/> + <method name="set(Landroid/graphics/Matrix;)V"/> + <method name="setConcat(Landroid/graphics/Matrix;Landroid/graphics/Matrix;)Z"/> + <method name="setPolyToPoly([FI[FII)Z"/> + <method name="setRectToRect(Landroid/graphics/RectF;Landroid/graphics/RectF;Landroid/graphics/Matrix$ScaleToFit;)Z"/> + <method name="setRotate(F)V"/> + <method name="setRotate(FFF)V"/> + <method name="setScale(FF)V"/> + <method name="setScale(FFFF)V"/> + <method name="setSinCos(FF)V"/> + <method name="setSinCos(FFFF)V"/> + <method name="setSkew(FF)V"/> + <method name="setSkew(FFFF)V"/> + <method name="setTranslate(FF)V"/> + <method name="setValues([F)V"/> + <method name="toShortString()Ljava/lang/String;"/> + <field name="MPERSP_0"/> + <field name="MPERSP_1"/> + <field name="MPERSP_2"/> + <field name="MSCALE_X"/> + <field name="MSCALE_Y"/> + <field name="MSKEW_X"/> + <field name="MSKEW_Y"/> + <field name="MTRANS_X"/> + <field name="MTRANS_Y"/> + </class> + <class name="android/graphics/Matrix$ScaleToFit" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/graphics/Matrix$ScaleToFit;"/> + <method name="values()[Landroid/graphics/Matrix$ScaleToFit;"/> + <field name="CENTER"/> + <field name="END"/> + <field name="FILL"/> + <field name="START"/> + </class> + <class name="android/graphics/Movie" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="decodeByteArray([BII)Landroid/graphics/Movie;"/> + <method name="decodeFile(Ljava/lang/String;)Landroid/graphics/Movie;"/> + <method name="decodeStream(Ljava/io/InputStream;)Landroid/graphics/Movie;"/> + <method name="draw(Landroid/graphics/Canvas;FF)V"/> + <method name="draw(Landroid/graphics/Canvas;FFLandroid/graphics/Paint;)V"/> + <method name="duration()I"/> + <method name="height()I"/> + <method name="isOpaque()Z"/> + <method name="setTime(I)Z"/> + <method name="width()I"/> + </class> + <class name="android/graphics/NinePatch" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/graphics/Bitmap;[B)V" since="19"/> + <method name="<init>(Landroid/graphics/Bitmap;[BLjava/lang/String;)V"/> + <method name="draw(Landroid/graphics/Canvas;Landroid/graphics/Rect;)V"/> + <method name="draw(Landroid/graphics/Canvas;Landroid/graphics/Rect;Landroid/graphics/Paint;)V"/> + <method name="draw(Landroid/graphics/Canvas;Landroid/graphics/RectF;)V"/> + <method name="getBitmap()Landroid/graphics/Bitmap;" since="19"/> + <method name="getDensity()I" since="4"/> + <method name="getHeight()I"/> + <method name="getName()Ljava/lang/String;" since="19"/> + <method name="getPaint()Landroid/graphics/Paint;" since="19"/> + <method name="getTransparentRegion(Landroid/graphics/Rect;)Landroid/graphics/Region;"/> + <method name="getWidth()I"/> + <method name="hasAlpha()Z"/> + <method name="isNinePatchChunk([B)Z"/> + <method name="setPaint(Landroid/graphics/Paint;)V"/> + </class> + <class name="android/graphics/Outline" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/graphics/Outline;)V"/> + <method name="canClip()Z"/> + <method name="getAlpha()F"/> + <method name="getRadius()F" since="24"/> + <method name="getRect(Landroid/graphics/Rect;)Z" since="24"/> + <method name="isEmpty()Z"/> + <method name="offset(II)V" since="22"/> + <method name="set(Landroid/graphics/Outline;)V"/> + <method name="setAlpha(F)V"/> + <method name="setConvexPath(Landroid/graphics/Path;)V"/> + <method name="setEmpty()V"/> + <method name="setOval(IIII)V"/> + <method name="setOval(Landroid/graphics/Rect;)V"/> + <method name="setRect(IIII)V"/> + <method name="setRect(Landroid/graphics/Rect;)V"/> + <method name="setRoundRect(IIIIF)V"/> + <method name="setRoundRect(Landroid/graphics/Rect;F)V"/> + </class> + <class name="android/graphics/Paint" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(Landroid/graphics/Paint;)V"/> + <method name="ascent()F"/> + <method name="breakText(Ljava/lang/CharSequence;IIZF[F)I"/> + <method name="breakText(Ljava/lang/String;ZF[F)I"/> + <method name="breakText([CIIF[F)I"/> + <method name="clearShadowLayer()V"/> + <method name="descent()F"/> + <method name="getAlpha()I"/> + <method name="getColor()I"/> + <method name="getColorFilter()Landroid/graphics/ColorFilter;"/> + <method name="getFillPath(Landroid/graphics/Path;Landroid/graphics/Path;)Z"/> + <method name="getFlags()I"/> + <method name="getFontFeatureSettings()Ljava/lang/String;" since="21"/> + <method name="getFontMetrics()Landroid/graphics/Paint$FontMetrics;"/> + <method name="getFontMetrics(Landroid/graphics/Paint$FontMetrics;)F"/> + <method name="getFontMetricsInt()Landroid/graphics/Paint$FontMetricsInt;"/> + <method name="getFontMetricsInt(Landroid/graphics/Paint$FontMetricsInt;)I"/> + <method name="getFontSpacing()F"/> + <method name="getFontVariationSettings()Ljava/lang/String;" since="26"/> + <method name="getHinting()I" since="14"/> + <method name="getLetterSpacing()F" since="21"/> + <method name="getMaskFilter()Landroid/graphics/MaskFilter;"/> + <method name="getOffsetForAdvance(Ljava/lang/CharSequence;IIIIZF)I" since="23"/> + <method name="getOffsetForAdvance([CIIIIZF)I" since="23"/> + <method name="getPathEffect()Landroid/graphics/PathEffect;"/> + <method name="getRasterizer()Landroid/graphics/Rasterizer;" deprecated="21" removed="26"/> + <method name="getRunAdvance(Ljava/lang/CharSequence;IIIIZI)F" since="23"/> + <method name="getRunAdvance([CIIIIZI)F" since="23"/> + <method name="getShader()Landroid/graphics/Shader;"/> + <method name="getStrokeCap()Landroid/graphics/Paint$Cap;"/> + <method name="getStrokeJoin()Landroid/graphics/Paint$Join;"/> + <method name="getStrokeMiter()F"/> + <method name="getStrokeWidth()F"/> + <method name="getStyle()Landroid/graphics/Paint$Style;"/> + <method name="getTextAlign()Landroid/graphics/Paint$Align;"/> + <method name="getTextBounds(Ljava/lang/String;IILandroid/graphics/Rect;)V"/> + <method name="getTextBounds([CIILandroid/graphics/Rect;)V"/> + <method name="getTextLocale()Ljava/util/Locale;" since="17"/> + <method name="getTextLocales()Landroid/os/LocaleList;" since="24"/> + <method name="getTextPath(Ljava/lang/String;IIFFLandroid/graphics/Path;)V"/> + <method name="getTextPath([CIIFFLandroid/graphics/Path;)V"/> + <method name="getTextScaleX()F"/> + <method name="getTextSize()F"/> + <method name="getTextSkewX()F"/> + <method name="getTextWidths(Ljava/lang/CharSequence;II[F)I"/> + <method name="getTextWidths(Ljava/lang/String;II[F)I"/> + <method name="getTextWidths(Ljava/lang/String;[F)I"/> + <method name="getTextWidths([CII[F)I"/> + <method name="getTypeface()Landroid/graphics/Typeface;"/> + <method name="getXfermode()Landroid/graphics/Xfermode;"/> + <method name="hasGlyph(Ljava/lang/String;)Z" since="23"/> + <method name="isAntiAlias()Z"/> + <method name="isDither()Z"/> + <method name="isElegantTextHeight()Z" since="21"/> + <method name="isFakeBoldText()Z"/> + <method name="isFilterBitmap()Z"/> + <method name="isLinearText()Z" deprecated="16"/> + <method name="isStrikeThruText()Z"/> + <method name="isSubpixelText()Z"/> + <method name="isUnderlineText()Z"/> + <method name="measureText(Ljava/lang/CharSequence;II)F"/> + <method name="measureText(Ljava/lang/String;)F"/> + <method name="measureText(Ljava/lang/String;II)F"/> + <method name="measureText([CII)F"/> + <method name="reset()V"/> + <method name="set(Landroid/graphics/Paint;)V"/> + <method name="setARGB(IIII)V"/> + <method name="setAlpha(I)V"/> + <method name="setAntiAlias(Z)V"/> + <method name="setColor(I)V"/> + <method name="setColorFilter(Landroid/graphics/ColorFilter;)Landroid/graphics/ColorFilter;"/> + <method name="setDither(Z)V"/> + <method name="setElegantTextHeight(Z)V" since="21"/> + <method name="setFakeBoldText(Z)V"/> + <method name="setFilterBitmap(Z)V"/> + <method name="setFlags(I)V"/> + <method name="setFontFeatureSettings(Ljava/lang/String;)V" since="21"/> + <method name="setFontVariationSettings(Ljava/lang/String;)Z" since="26"/> + <method name="setHinting(I)V" since="14"/> + <method name="setLetterSpacing(F)V" since="21"/> + <method name="setLinearText(Z)V" deprecated="16"/> + <method name="setMaskFilter(Landroid/graphics/MaskFilter;)Landroid/graphics/MaskFilter;"/> + <method name="setPathEffect(Landroid/graphics/PathEffect;)Landroid/graphics/PathEffect;"/> + <method name="setRasterizer(Landroid/graphics/Rasterizer;)Landroid/graphics/Rasterizer;" deprecated="21" removed="26"/> + <method name="setShader(Landroid/graphics/Shader;)Landroid/graphics/Shader;"/> + <method name="setShadowLayer(FFFI)V"/> + <method name="setStrikeThruText(Z)V"/> + <method name="setStrokeCap(Landroid/graphics/Paint$Cap;)V"/> + <method name="setStrokeJoin(Landroid/graphics/Paint$Join;)V"/> + <method name="setStrokeMiter(F)V"/> + <method name="setStrokeWidth(F)V"/> + <method name="setStyle(Landroid/graphics/Paint$Style;)V"/> + <method name="setSubpixelText(Z)V"/> + <method name="setTextAlign(Landroid/graphics/Paint$Align;)V"/> + <method name="setTextLocale(Ljava/util/Locale;)V" since="17"/> + <method name="setTextLocales(Landroid/os/LocaleList;)V" since="24"/> + <method name="setTextScaleX(F)V"/> + <method name="setTextSize(F)V"/> + <method name="setTextSkewX(F)V"/> + <method name="setTypeface(Landroid/graphics/Typeface;)Landroid/graphics/Typeface;"/> + <method name="setUnderlineText(Z)V"/> + <method name="setXfermode(Landroid/graphics/Xfermode;)Landroid/graphics/Xfermode;"/> + <field name="ANTI_ALIAS_FLAG"/> + <field name="DEV_KERN_TEXT_FLAG"/> + <field name="DITHER_FLAG"/> + <field name="EMBEDDED_BITMAP_TEXT_FLAG" since="19"/> + <field name="FAKE_BOLD_TEXT_FLAG"/> + <field name="FILTER_BITMAP_FLAG"/> + <field name="HINTING_OFF" since="14"/> + <field name="HINTING_ON" since="14"/> + <field name="LINEAR_TEXT_FLAG"/> + <field name="STRIKE_THRU_TEXT_FLAG"/> + <field name="SUBPIXEL_TEXT_FLAG"/> + <field name="UNDERLINE_TEXT_FLAG"/> + </class> + <class name="android/graphics/Paint$Align" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/graphics/Paint$Align;"/> + <method name="values()[Landroid/graphics/Paint$Align;"/> + <field name="CENTER"/> + <field name="LEFT"/> + <field name="RIGHT"/> + </class> + <class name="android/graphics/Paint$Cap" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/graphics/Paint$Cap;"/> + <method name="values()[Landroid/graphics/Paint$Cap;"/> + <field name="BUTT"/> + <field name="ROUND"/> + <field name="SQUARE"/> + </class> + <class name="android/graphics/Paint$FontMetrics" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="ascent"/> + <field name="bottom"/> + <field name="descent"/> + <field name="leading"/> + <field name="top"/> + </class> + <class name="android/graphics/Paint$FontMetricsInt" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="ascent"/> + <field name="bottom"/> + <field name="descent"/> + <field name="leading"/> + <field name="top"/> + </class> + <class name="android/graphics/Paint$Join" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/graphics/Paint$Join;"/> + <method name="values()[Landroid/graphics/Paint$Join;"/> + <field name="BEVEL"/> + <field name="MITER"/> + <field name="ROUND"/> + </class> + <class name="android/graphics/Paint$Style" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/graphics/Paint$Style;"/> + <method name="values()[Landroid/graphics/Paint$Style;"/> + <field name="FILL"/> + <field name="FILL_AND_STROKE"/> + <field name="STROKE"/> + </class> + <class name="android/graphics/PaintFlagsDrawFilter" since="1"> + <extends name="android/graphics/DrawFilter"/> + <method name="<init>(II)V"/> + </class> + <class name="android/graphics/Path" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/graphics/Path;)V"/> + <method name="addArc(FFFFFF)V" since="21"/> + <method name="addArc(Landroid/graphics/RectF;FF)V"/> + <method name="addCircle(FFFLandroid/graphics/Path$Direction;)V"/> + <method name="addOval(FFFFLandroid/graphics/Path$Direction;)V" since="21"/> + <method name="addOval(Landroid/graphics/RectF;Landroid/graphics/Path$Direction;)V"/> + <method name="addPath(Landroid/graphics/Path;)V"/> + <method name="addPath(Landroid/graphics/Path;FF)V"/> + <method name="addPath(Landroid/graphics/Path;Landroid/graphics/Matrix;)V"/> + <method name="addRect(FFFFLandroid/graphics/Path$Direction;)V"/> + <method name="addRect(Landroid/graphics/RectF;Landroid/graphics/Path$Direction;)V"/> + <method name="addRoundRect(FFFFFFLandroid/graphics/Path$Direction;)V" since="21"/> + <method name="addRoundRect(FFFF[FLandroid/graphics/Path$Direction;)V" since="21"/> + <method name="addRoundRect(Landroid/graphics/RectF;FFLandroid/graphics/Path$Direction;)V"/> + <method name="addRoundRect(Landroid/graphics/RectF;[FLandroid/graphics/Path$Direction;)V"/> + <method name="approximate(F)[F" since="26"/> + <method name="arcTo(FFFFFFZ)V" since="21"/> + <method name="arcTo(Landroid/graphics/RectF;FF)V"/> + <method name="arcTo(Landroid/graphics/RectF;FFZ)V"/> + <method name="close()V"/> + <method name="computeBounds(Landroid/graphics/RectF;Z)V"/> + <method name="cubicTo(FFFFFF)V"/> + <method name="getFillType()Landroid/graphics/Path$FillType;"/> + <method name="incReserve(I)V"/> + <method name="isConvex()Z" since="21"/> + <method name="isEmpty()Z"/> + <method name="isInverseFillType()Z"/> + <method name="isRect(Landroid/graphics/RectF;)Z"/> + <method name="lineTo(FF)V"/> + <method name="moveTo(FF)V"/> + <method name="offset(FF)V"/> + <method name="offset(FFLandroid/graphics/Path;)V"/> + <method name="op(Landroid/graphics/Path;Landroid/graphics/Path$Op;)Z" since="19"/> + <method name="op(Landroid/graphics/Path;Landroid/graphics/Path;Landroid/graphics/Path$Op;)Z" since="19"/> + <method name="quadTo(FFFF)V"/> + <method name="rCubicTo(FFFFFF)V"/> + <method name="rLineTo(FF)V"/> + <method name="rMoveTo(FF)V"/> + <method name="rQuadTo(FFFF)V"/> + <method name="reset()V"/> + <method name="rewind()V"/> + <method name="set(Landroid/graphics/Path;)V"/> + <method name="setFillType(Landroid/graphics/Path$FillType;)V"/> + <method name="setLastPoint(FF)V"/> + <method name="toggleInverseFillType()V"/> + <method name="transform(Landroid/graphics/Matrix;)V"/> + <method name="transform(Landroid/graphics/Matrix;Landroid/graphics/Path;)V"/> + </class> + <class name="android/graphics/Path$Direction" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/graphics/Path$Direction;"/> + <method name="values()[Landroid/graphics/Path$Direction;"/> + <field name="CCW"/> + <field name="CW"/> + </class> + <class name="android/graphics/Path$FillType" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/graphics/Path$FillType;"/> + <method name="values()[Landroid/graphics/Path$FillType;"/> + <field name="EVEN_ODD"/> + <field name="INVERSE_EVEN_ODD"/> + <field name="INVERSE_WINDING"/> + <field name="WINDING"/> + </class> + <class name="android/graphics/Path$Op" since="19"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/graphics/Path$Op;"/> + <method name="values()[Landroid/graphics/Path$Op;"/> + <field name="DIFFERENCE"/> + <field name="INTERSECT"/> + <field name="REVERSE_DIFFERENCE"/> + <field name="UNION"/> + <field name="XOR"/> + </class> + <class name="android/graphics/PathDashPathEffect" since="1"> + <extends name="android/graphics/PathEffect"/> + <method name="<init>(Landroid/graphics/Path;FFLandroid/graphics/PathDashPathEffect$Style;)V"/> + </class> + <class name="android/graphics/PathDashPathEffect$Style" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/graphics/PathDashPathEffect$Style;"/> + <method name="values()[Landroid/graphics/PathDashPathEffect$Style;"/> + <field name="MORPH"/> + <field name="ROTATE"/> + <field name="TRANSLATE"/> + </class> + <class name="android/graphics/PathEffect" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/graphics/PathMeasure" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/graphics/Path;Z)V"/> + <method name="getLength()F"/> + <method name="getMatrix(FLandroid/graphics/Matrix;I)Z"/> + <method name="getPosTan(F[F[F)Z"/> + <method name="getSegment(FFLandroid/graphics/Path;Z)Z"/> + <method name="isClosed()Z"/> + <method name="nextContour()Z"/> + <method name="setPath(Landroid/graphics/Path;Z)V"/> + <field name="POSITION_MATRIX_FLAG"/> + <field name="TANGENT_MATRIX_FLAG"/> + </class> + <class name="android/graphics/Picture" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/graphics/Picture;)V"/> + <method name="beginRecording(II)Landroid/graphics/Canvas;"/> + <method name="createFromStream(Ljava/io/InputStream;)Landroid/graphics/Picture;" deprecated="18"/> + <method name="draw(Landroid/graphics/Canvas;)V"/> + <method name="endRecording()V"/> + <method name="getHeight()I"/> + <method name="getWidth()I"/> + <method name="writeToStream(Ljava/io/OutputStream;)V" deprecated="18"/> + </class> + <class name="android/graphics/PixelFormat" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="formatHasAlpha(I)Z"/> + <method name="getPixelFormatInfo(ILandroid/graphics/PixelFormat;)V"/> + <field name="A_8" deprecated="19"/> + <field name="JPEG" deprecated="16"/> + <field name="LA_88" deprecated="16"/> + <field name="L_8" deprecated="19"/> + <field name="OPAQUE"/> + <field name="RGBA_1010102" since="26"/> + <field name="RGBA_4444" deprecated="16"/> + <field name="RGBA_5551" deprecated="16"/> + <field name="RGBA_8888"/> + <field name="RGBA_F16" since="26"/> + <field name="RGBX_8888"/> + <field name="RGB_332" deprecated="16"/> + <field name="RGB_565"/> + <field name="RGB_888"/> + <field name="TRANSLUCENT"/> + <field name="TRANSPARENT"/> + <field name="UNKNOWN"/> + <field name="YCbCr_420_SP" deprecated="16"/> + <field name="YCbCr_422_I" since="5" deprecated="16"/> + <field name="YCbCr_422_SP" deprecated="16"/> + <field name="bitsPerPixel"/> + <field name="bytesPerPixel"/> + </class> + <class name="android/graphics/PixelXorXfermode" since="1" deprecated="16" removed="24"> + <extends name="android/graphics/Xfermode"/> + <method name="<init>(I)V"/> + </class> + <class name="android/graphics/Point" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable" since="13"/> + <method name="<init>()V"/> + <method name="<init>(II)V"/> + <method name="<init>(Landroid/graphics/Point;)V"/> + <method name="equals(II)Z"/> + <method name="negate()V"/> + <method name="offset(II)V"/> + <method name="readFromParcel(Landroid/os/Parcel;)V" since="13"/> + <method name="set(II)V"/> + <field name="CREATOR" since="13"/> + <field name="x"/> + <field name="y"/> + </class> + <class name="android/graphics/PointF" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable" since="13"/> + <method name="<init>()V"/> + <method name="<init>(FF)V"/> + <method name="<init>(Landroid/graphics/Point;)V"/> + <method name="equals(FF)Z"/> + <method name="length()F"/> + <method name="length(FF)F"/> + <method name="negate()V"/> + <method name="offset(FF)V"/> + <method name="readFromParcel(Landroid/os/Parcel;)V" since="13"/> + <method name="set(FF)V"/> + <method name="set(Landroid/graphics/PointF;)V"/> + <field name="CREATOR" since="13"/> + <field name="x"/> + <field name="y"/> + </class> + <class name="android/graphics/PorterDuff" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/graphics/PorterDuff$Mode" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/graphics/PorterDuff$Mode;"/> + <method name="values()[Landroid/graphics/PorterDuff$Mode;"/> + <field name="ADD" since="11"/> + <field name="CLEAR"/> + <field name="DARKEN"/> + <field name="DST"/> + <field name="DST_ATOP"/> + <field name="DST_IN"/> + <field name="DST_OUT"/> + <field name="DST_OVER"/> + <field name="LIGHTEN"/> + <field name="MULTIPLY"/> + <field name="OVERLAY" since="11"/> + <field name="SCREEN"/> + <field name="SRC"/> + <field name="SRC_ATOP"/> + <field name="SRC_IN"/> + <field name="SRC_OUT"/> + <field name="SRC_OVER"/> + <field name="XOR"/> + </class> + <class name="android/graphics/PorterDuffColorFilter" since="1"> + <extends name="android/graphics/ColorFilter"/> + <method name="<init>(ILandroid/graphics/PorterDuff$Mode;)V"/> + </class> + <class name="android/graphics/PorterDuffXfermode" since="1"> + <extends name="android/graphics/Xfermode"/> + <method name="<init>(Landroid/graphics/PorterDuff$Mode;)V"/> + </class> + <class name="android/graphics/RadialGradient" since="1"> + <extends name="android/graphics/Shader"/> + <method name="<init>(FFFIILandroid/graphics/Shader$TileMode;)V"/> + <method name="<init>(FFF[I[FLandroid/graphics/Shader$TileMode;)V"/> + </class> + <class name="android/graphics/Rasterizer" since="1" deprecated="21" removed="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/graphics/Rect" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(IIII)V"/> + <method name="<init>(Landroid/graphics/Rect;)V"/> + <method name="centerX()I"/> + <method name="centerY()I"/> + <method name="contains(II)Z"/> + <method name="contains(IIII)Z"/> + <method name="contains(Landroid/graphics/Rect;)Z"/> + <method name="exactCenterX()F"/> + <method name="exactCenterY()F"/> + <method name="flattenToString()Ljava/lang/String;" since="7"/> + <method name="height()I"/> + <method name="inset(II)V"/> + <method name="intersect(IIII)Z"/> + <method name="intersect(Landroid/graphics/Rect;)Z"/> + <method name="intersects(IIII)Z"/> + <method name="intersects(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z"/> + <method name="isEmpty()Z"/> + <method name="offset(II)V"/> + <method name="offsetTo(II)V"/> + <method name="readFromParcel(Landroid/os/Parcel;)V"/> + <method name="set(IIII)V"/> + <method name="set(Landroid/graphics/Rect;)V"/> + <method name="setEmpty()V"/> + <method name="setIntersect(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z"/> + <method name="sort()V"/> + <method name="toShortString()Ljava/lang/String;" since="3"/> + <method name="unflattenFromString(Ljava/lang/String;)Landroid/graphics/Rect;" since="7"/> + <method name="union(II)V"/> + <method name="union(IIII)V"/> + <method name="union(Landroid/graphics/Rect;)V"/> + <method name="width()I"/> + <field name="CREATOR"/> + <field name="bottom"/> + <field name="left"/> + <field name="right"/> + <field name="top"/> + </class> + <class name="android/graphics/RectF" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable" since="3"/> + <method name="<init>()V"/> + <method name="<init>(FFFF)V"/> + <method name="<init>(Landroid/graphics/Rect;)V"/> + <method name="<init>(Landroid/graphics/RectF;)V"/> + <method name="centerX()F"/> + <method name="centerY()F"/> + <method name="contains(FF)Z"/> + <method name="contains(FFFF)Z"/> + <method name="contains(Landroid/graphics/RectF;)Z"/> + <method name="height()F"/> + <method name="inset(FF)V"/> + <method name="intersect(FFFF)Z"/> + <method name="intersect(Landroid/graphics/RectF;)Z"/> + <method name="intersects(FFFF)Z"/> + <method name="intersects(Landroid/graphics/RectF;Landroid/graphics/RectF;)Z"/> + <method name="isEmpty()Z"/> + <method name="offset(FF)V"/> + <method name="offsetTo(FF)V"/> + <method name="readFromParcel(Landroid/os/Parcel;)V" since="3"/> + <method name="round(Landroid/graphics/Rect;)V"/> + <method name="roundOut(Landroid/graphics/Rect;)V"/> + <method name="set(FFFF)V"/> + <method name="set(Landroid/graphics/Rect;)V"/> + <method name="set(Landroid/graphics/RectF;)V"/> + <method name="setEmpty()V"/> + <method name="setIntersect(Landroid/graphics/RectF;Landroid/graphics/RectF;)Z"/> + <method name="sort()V"/> + <method name="toShortString()Ljava/lang/String;" since="14"/> + <method name="union(FF)V"/> + <method name="union(FFFF)V"/> + <method name="union(Landroid/graphics/RectF;)V"/> + <method name="width()F"/> + <field name="CREATOR" since="3"/> + <field name="bottom"/> + <field name="left"/> + <field name="right"/> + <field name="top"/> + </class> + <class name="android/graphics/Region" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(IIII)V"/> + <method name="<init>(Landroid/graphics/Rect;)V"/> + <method name="<init>(Landroid/graphics/Region;)V"/> + <method name="contains(II)Z"/> + <method name="getBoundaryPath()Landroid/graphics/Path;"/> + <method name="getBoundaryPath(Landroid/graphics/Path;)Z"/> + <method name="getBounds()Landroid/graphics/Rect;"/> + <method name="getBounds(Landroid/graphics/Rect;)Z"/> + <method name="isComplex()Z"/> + <method name="isEmpty()Z"/> + <method name="isRect()Z"/> + <method name="op(IIIILandroid/graphics/Region$Op;)Z"/> + <method name="op(Landroid/graphics/Rect;Landroid/graphics/Region$Op;)Z"/> + <method name="op(Landroid/graphics/Rect;Landroid/graphics/Region;Landroid/graphics/Region$Op;)Z"/> + <method name="op(Landroid/graphics/Region;Landroid/graphics/Region$Op;)Z"/> + <method name="op(Landroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Region$Op;)Z"/> + <method name="quickContains(IIII)Z"/> + <method name="quickContains(Landroid/graphics/Rect;)Z"/> + <method name="quickReject(IIII)Z"/> + <method name="quickReject(Landroid/graphics/Rect;)Z"/> + <method name="quickReject(Landroid/graphics/Region;)Z"/> + <method name="set(IIII)Z"/> + <method name="set(Landroid/graphics/Rect;)Z"/> + <method name="set(Landroid/graphics/Region;)Z"/> + <method name="setEmpty()V"/> + <method name="setPath(Landroid/graphics/Path;Landroid/graphics/Region;)Z"/> + <method name="translate(II)V"/> + <method name="translate(IILandroid/graphics/Region;)V"/> + <method name="union(Landroid/graphics/Rect;)Z"/> + <field name="CREATOR"/> + </class> + <class name="android/graphics/Region$Op" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/graphics/Region$Op;"/> + <method name="values()[Landroid/graphics/Region$Op;"/> + <field name="DIFFERENCE"/> + <field name="INTERSECT"/> + <field name="REPLACE"/> + <field name="REVERSE_DIFFERENCE"/> + <field name="UNION"/> + <field name="XOR"/> + </class> + <class name="android/graphics/RegionIterator" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/graphics/Region;)V"/> + <method name="next(Landroid/graphics/Rect;)Z"/> + </class> + <class name="android/graphics/Shader" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V" deprecated="26"/> + <method name="getLocalMatrix(Landroid/graphics/Matrix;)Z"/> + <method name="setLocalMatrix(Landroid/graphics/Matrix;)V"/> + </class> + <class name="android/graphics/Shader$TileMode" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/graphics/Shader$TileMode;"/> + <method name="values()[Landroid/graphics/Shader$TileMode;"/> + <field name="CLAMP"/> + <field name="MIRROR"/> + <field name="REPEAT"/> + </class> + <class name="android/graphics/SumPathEffect" since="1"> + <extends name="android/graphics/PathEffect"/> + <method name="<init>(Landroid/graphics/PathEffect;Landroid/graphics/PathEffect;)V"/> + </class> + <class name="android/graphics/SurfaceTexture" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>(I)V"/> + <method name="<init>(IZ)V" since="19"/> + <method name="<init>(Z)V" since="26"/> + <method name="attachToGLContext(I)V" since="16"/> + <method name="detachFromGLContext()V" since="16"/> + <method name="getTimestamp()J" since="14"/> + <method name="getTransformMatrix([F)V"/> + <method name="isReleased()Z" since="26"/> + <method name="release()V" since="14"/> + <method name="releaseTexImage()V" since="19"/> + <method name="setDefaultBufferSize(II)V" since="15"/> + <method name="setOnFrameAvailableListener(Landroid/graphics/SurfaceTexture$OnFrameAvailableListener;)V"/> + <method name="setOnFrameAvailableListener(Landroid/graphics/SurfaceTexture$OnFrameAvailableListener;Landroid/os/Handler;)V" since="21"/> + <method name="updateTexImage()V"/> + </class> + <class name="android/graphics/SurfaceTexture$OnFrameAvailableListener" since="11"> + <extends name="java/lang/Object"/> + <method name="onFrameAvailable(Landroid/graphics/SurfaceTexture;)V"/> + </class> + <class name="android/graphics/SurfaceTexture$OutOfResourcesException" since="11" deprecated="19"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/graphics/SweepGradient" since="1"> + <extends name="android/graphics/Shader"/> + <method name="<init>(FFII)V"/> + <method name="<init>(FF[I[F)V"/> + </class> + <class name="android/graphics/Typeface" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="create(Landroid/graphics/Typeface;I)Landroid/graphics/Typeface;"/> + <method name="create(Ljava/lang/String;I)Landroid/graphics/Typeface;"/> + <method name="createFromAsset(Landroid/content/res/AssetManager;Ljava/lang/String;)Landroid/graphics/Typeface;"/> + <method name="createFromFile(Ljava/io/File;)Landroid/graphics/Typeface;" since="4"/> + <method name="createFromFile(Ljava/lang/String;)Landroid/graphics/Typeface;" since="4"/> + <method name="defaultFromStyle(I)Landroid/graphics/Typeface;"/> + <method name="getStyle()I"/> + <method name="isBold()Z"/> + <method name="isItalic()Z"/> + <field name="BOLD"/> + <field name="BOLD_ITALIC"/> + <field name="DEFAULT"/> + <field name="DEFAULT_BOLD"/> + <field name="ITALIC"/> + <field name="MONOSPACE"/> + <field name="NORMAL"/> + <field name="SANS_SERIF"/> + <field name="SERIF"/> + </class> + <class name="android/graphics/Typeface$Builder" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/res/AssetManager;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/io/File;)V"/> + <method name="<init>(Ljava/io/FileDescriptor;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="build()Landroid/graphics/Typeface;"/> + <method name="setFallback(Ljava/lang/String;)Landroid/graphics/Typeface$Builder;"/> + <method name="setFontVariationSettings(Ljava/lang/String;)Landroid/graphics/Typeface$Builder;"/> + <method name="setFontVariationSettings([Landroid/graphics/fonts/FontVariationAxis;)Landroid/graphics/Typeface$Builder;"/> + <method name="setItalic(Z)Landroid/graphics/Typeface$Builder;"/> + <method name="setTtcIndex(I)Landroid/graphics/Typeface$Builder;"/> + <method name="setWeight(I)Landroid/graphics/Typeface$Builder;"/> + </class> + <class name="android/graphics/Xfermode" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/graphics/YuvImage" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>([BIII[I)V"/> + <method name="compressToJpeg(Landroid/graphics/Rect;ILjava/io/OutputStream;)Z"/> + <method name="getHeight()I"/> + <method name="getStrides()[I"/> + <method name="getWidth()I"/> + <method name="getYuvData()[B"/> + <method name="getYuvFormat()I"/> + </class> + <class name="android/graphics/drawable/AdaptiveIconDrawable" since="26"> + <extends name="android/graphics/drawable/Drawable"/> + <implements name="android/graphics/drawable/Drawable$Callback"/> + <method name="<init>(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V"/> + <method name="getBackground()Landroid/graphics/drawable/Drawable;"/> + <method name="getExtraInsetFraction()F"/> + <method name="getForeground()Landroid/graphics/drawable/Drawable;"/> + <method name="getIconMask()Landroid/graphics/Path;"/> + <method name="setOpacity(I)V"/> + </class> + <class name="android/graphics/drawable/Animatable" since="4"> + <extends name="java/lang/Object"/> + <method name="isRunning()Z"/> + <method name="start()V"/> + <method name="stop()V"/> + </class> + <class name="android/graphics/drawable/Animatable2" since="23"> + <extends name="java/lang/Object"/> + <implements name="android/graphics/drawable/Animatable"/> + <method name="clearAnimationCallbacks()V"/> + <method name="registerAnimationCallback(Landroid/graphics/drawable/Animatable2$AnimationCallback;)V"/> + <method name="unregisterAnimationCallback(Landroid/graphics/drawable/Animatable2$AnimationCallback;)Z"/> + </class> + <class name="android/graphics/drawable/Animatable2$AnimationCallback" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onAnimationEnd(Landroid/graphics/drawable/Drawable;)V"/> + <method name="onAnimationStart(Landroid/graphics/drawable/Drawable;)V"/> + </class> + <class name="android/graphics/drawable/AnimatedStateListDrawable" since="21"> + <extends name="android/graphics/drawable/StateListDrawable"/> + <method name="<init>()V"/> + <method name="addState([ILandroid/graphics/drawable/Drawable;I)V"/> + <method name="addTransition(IILandroid/graphics/drawable/Drawable;Z)V"/> + </class> + <class name="android/graphics/drawable/AnimatedVectorDrawable" since="21"> + <extends name="android/graphics/drawable/Drawable"/> + <implements name="android/graphics/drawable/Animatable" removed="23"/> + <implements name="android/graphics/drawable/Animatable2" since="23"/> + <method name="<init>()V"/> + <method name="reset()V" since="23"/> + </class> + <class name="android/graphics/drawable/AnimationDrawable" since="1"> + <extends name="android/graphics/drawable/DrawableContainer"/> + <implements name="android/graphics/drawable/Animatable" since="4"/> + <implements name="java/lang/Runnable"/> + <method name="<init>()V"/> + <method name="addFrame(Landroid/graphics/drawable/Drawable;I)V"/> + <method name="getDuration(I)I"/> + <method name="getFrame(I)Landroid/graphics/drawable/Drawable;"/> + <method name="getNumberOfFrames()I"/> + <method name="isOneShot()Z"/> + <method name="isRunning()Z"/> + <method name="setOneShot(Z)V"/> + <method name="start()V"/> + <method name="stop()V"/> + </class> + <class name="android/graphics/drawable/BitmapDrawable" since="1"> + <extends name="android/graphics/drawable/Drawable"/> + <method name="<init>()V" deprecated="16"/> + <method name="<init>(Landroid/content/res/Resources;)V" since="4" deprecated="18"/> + <method name="<init>(Landroid/content/res/Resources;Landroid/graphics/Bitmap;)V" since="4"/> + <method name="<init>(Landroid/content/res/Resources;Ljava/io/InputStream;)V" since="5"/> + <method name="<init>(Landroid/content/res/Resources;Ljava/lang/String;)V" since="5"/> + <method name="<init>(Landroid/graphics/Bitmap;)V" deprecated="16"/> + <method name="<init>(Ljava/io/InputStream;)V" deprecated="16"/> + <method name="<init>(Ljava/lang/String;)V" deprecated="16"/> + <method name="getBitmap()Landroid/graphics/Bitmap;"/> + <method name="getGravity()I"/> + <method name="getPaint()Landroid/graphics/Paint;"/> + <method name="getTileModeX()Landroid/graphics/Shader$TileMode;"/> + <method name="getTileModeY()Landroid/graphics/Shader$TileMode;"/> + <method name="hasAntiAlias()Z" since="18"/> + <method name="hasMipMap()Z" since="18"/> + <method name="setAntiAlias(Z)V"/> + <method name="setGravity(I)V"/> + <method name="setMipMap(Z)V" since="18"/> + <method name="setTargetDensity(I)V" since="4"/> + <method name="setTargetDensity(Landroid/graphics/Canvas;)V" since="4"/> + <method name="setTargetDensity(Landroid/util/DisplayMetrics;)V" since="4"/> + <method name="setTileModeX(Landroid/graphics/Shader$TileMode;)V"/> + <method name="setTileModeXY(Landroid/graphics/Shader$TileMode;Landroid/graphics/Shader$TileMode;)V"/> + <method name="setTileModeY(Landroid/graphics/Shader$TileMode;)V"/> + </class> + <class name="android/graphics/drawable/ClipDrawable" since="1"> + <extends name="android/graphics/drawable/Drawable" removed="23"/> + <extends name="android/graphics/drawable/DrawableWrapper" since="23"/> + <implements name="android/graphics/drawable/Drawable$Callback" removed="23"/> + <method name="<init>(Landroid/graphics/drawable/Drawable;II)V"/> + <field name="HORIZONTAL"/> + <field name="VERTICAL"/> + </class> + <class name="android/graphics/drawable/ColorDrawable" since="1"> + <extends name="android/graphics/drawable/Drawable"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="getAlpha()I"/> + <method name="getColor()I" since="11"/> + <method name="setColor(I)V" since="11"/> + </class> + <class name="android/graphics/drawable/Drawable" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="applyTheme(Landroid/content/res/Resources$Theme;)V" since="21"/> + <method name="canApplyTheme()Z" since="21"/> + <method name="clearColorFilter()V"/> + <method name="copyBounds()Landroid/graphics/Rect;"/> + <method name="copyBounds(Landroid/graphics/Rect;)V"/> + <method name="createFromPath(Ljava/lang/String;)Landroid/graphics/drawable/Drawable;"/> + <method name="createFromResourceStream(Landroid/content/res/Resources;Landroid/util/TypedValue;Ljava/io/InputStream;Ljava/lang/String;)Landroid/graphics/drawable/Drawable;" since="4"/> + <method name="createFromResourceStream(Landroid/content/res/Resources;Landroid/util/TypedValue;Ljava/io/InputStream;Ljava/lang/String;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/drawable/Drawable;" since="5"/> + <method name="createFromStream(Ljava/io/InputStream;Ljava/lang/String;)Landroid/graphics/drawable/Drawable;"/> + <method name="createFromXml(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;)Landroid/graphics/drawable/Drawable;"/> + <method name="createFromXml(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;" since="21"/> + <method name="createFromXmlInner(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;)Landroid/graphics/drawable/Drawable;"/> + <method name="createFromXmlInner(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;" since="21"/> + <method name="draw(Landroid/graphics/Canvas;)V"/> + <method name="getAlpha()I" since="19"/> + <method name="getBounds()Landroid/graphics/Rect;"/> + <method name="getCallback()Landroid/graphics/drawable/Drawable$Callback;" since="11"/> + <method name="getChangingConfigurations()I"/> + <method name="getColorFilter()Landroid/graphics/ColorFilter;" since="21"/> + <method name="getConstantState()Landroid/graphics/drawable/Drawable$ConstantState;"/> + <method name="getCurrent()Landroid/graphics/drawable/Drawable;"/> + <method name="getDirtyBounds()Landroid/graphics/Rect;" since="21"/> + <method name="getHotspotBounds(Landroid/graphics/Rect;)V" since="23"/> + <method name="getIntrinsicHeight()I"/> + <method name="getIntrinsicWidth()I"/> + <method name="getLayoutDirection()I" since="23"/> + <method name="getLevel()I"/> + <method name="getMinimumHeight()I"/> + <method name="getMinimumWidth()I"/> + <method name="getOpacity()I"/> + <method name="getOutline(Landroid/graphics/Outline;)V" since="21"/> + <method name="getPadding(Landroid/graphics/Rect;)Z"/> + <method name="getState()[I"/> + <method name="getTransparentRegion()Landroid/graphics/Region;"/> + <method name="inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;)V"/> + <method name="inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V" since="21"/> + <method name="invalidateSelf()V"/> + <method name="isAutoMirrored()Z" since="19"/> + <method name="isFilterBitmap()Z" since="23"/> + <method name="isStateful()Z"/> + <method name="isVisible()Z"/> + <method name="jumpToCurrentState()V" since="11"/> + <method name="mutate()Landroid/graphics/drawable/Drawable;" since="3"/> + <method name="onBoundsChange(Landroid/graphics/Rect;)V"/> + <method name="onLayoutDirectionChanged(I)Z" since="23"/> + <method name="onLevelChange(I)Z"/> + <method name="onStateChange([I)Z"/> + <method name="resolveOpacity(II)I"/> + <method name="scheduleSelf(Ljava/lang/Runnable;J)V"/> + <method name="setAlpha(I)V"/> + <method name="setAutoMirrored(Z)V" since="19"/> + <method name="setBounds(IIII)V"/> + <method name="setBounds(Landroid/graphics/Rect;)V"/> + <method name="setCallback(Landroid/graphics/drawable/Drawable$Callback;)V"/> + <method name="setChangingConfigurations(I)V"/> + <method name="setColorFilter(ILandroid/graphics/PorterDuff$Mode;)V"/> + <method name="setColorFilter(Landroid/graphics/ColorFilter;)V"/> + <method name="setDither(Z)V" deprecated="23"/> + <method name="setFilterBitmap(Z)V"/> + <method name="setHotspot(FF)V" since="21"/> + <method name="setHotspotBounds(IIII)V" since="21"/> + <method name="setLayoutDirection(I)Z" since="23"/> + <method name="setLevel(I)Z"/> + <method name="setState([I)Z"/> + <method name="setTint(I)V" since="21"/> + <method name="setTintList(Landroid/content/res/ColorStateList;)V" since="21"/> + <method name="setTintMode(Landroid/graphics/PorterDuff$Mode;)V" since="21"/> + <method name="setVisible(ZZ)Z"/> + <method name="unscheduleSelf(Ljava/lang/Runnable;)V"/> + </class> + <class name="android/graphics/drawable/Drawable$Callback" since="1"> + <extends name="java/lang/Object"/> + <method name="invalidateDrawable(Landroid/graphics/drawable/Drawable;)V"/> + <method name="scheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;J)V"/> + <method name="unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V"/> + </class> + <class name="android/graphics/drawable/Drawable$ConstantState" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="canApplyTheme()Z" since="21"/> + <method name="getChangingConfigurations()I"/> + <method name="newDrawable()Landroid/graphics/drawable/Drawable;"/> + <method name="newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable;" since="5"/> + <method name="newDrawable(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;" since="21"/> + </class> + <class name="android/graphics/drawable/DrawableContainer" since="1"> + <extends name="android/graphics/drawable/Drawable"/> + <implements name="android/graphics/drawable/Drawable$Callback"/> + <method name="<init>()V"/> + <method name="selectDrawable(I)Z"/> + <method name="setConstantState(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;)V"/> + <method name="setEnterFadeDuration(I)V" since="11"/> + <method name="setExitFadeDuration(I)V" since="11"/> + </class> + <class name="android/graphics/drawable/DrawableContainer$DrawableContainerState" since="1"> + <extends name="android/graphics/drawable/Drawable$ConstantState"/> + <method name="<init>()V"/> + <method name="addChild(Landroid/graphics/drawable/Drawable;)I"/> + <method name="canConstantState()Z"/> + <method name="computeConstantSize()V" since="11"/> + <method name="getChild(I)Landroid/graphics/drawable/Drawable;" since="19"/> + <method name="getChildCount()I"/> + <method name="getChildren()[Landroid/graphics/drawable/Drawable;"/> + <method name="getConstantHeight()I"/> + <method name="getConstantMinimumHeight()I"/> + <method name="getConstantMinimumWidth()I"/> + <method name="getConstantPadding()Landroid/graphics/Rect;"/> + <method name="getConstantWidth()I"/> + <method name="getEnterFadeDuration()I" since="11"/> + <method name="getExitFadeDuration()I" since="11"/> + <method name="getOpacity()I"/> + <method name="growArray(II)V"/> + <method name="isConstantSize()Z"/> + <method name="isStateful()Z"/> + <method name="setConstantSize(Z)V"/> + <method name="setEnterFadeDuration(I)V" since="11"/> + <method name="setExitFadeDuration(I)V" since="11"/> + <method name="setVariablePadding(Z)V"/> + </class> + <class name="android/graphics/drawable/DrawableWrapper" since="23"> + <extends name="android/graphics/drawable/Drawable"/> + <implements name="android/graphics/drawable/Drawable$Callback"/> + <method name="<init>(Landroid/graphics/drawable/Drawable;)V"/> + <method name="getDrawable()Landroid/graphics/drawable/Drawable;"/> + <method name="setDrawable(Landroid/graphics/drawable/Drawable;)V"/> + </class> + <class name="android/graphics/drawable/GradientDrawable" since="1"> + <extends name="android/graphics/drawable/Drawable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/graphics/drawable/GradientDrawable$Orientation;[I)V"/> + <method name="getColor()Landroid/content/res/ColorStateList;" since="24"/> + <method name="getColors()[I" since="24"/> + <method name="getCornerRadii()[F" since="24"/> + <method name="getCornerRadius()F" since="24"/> + <method name="getGradientCenterX()F" since="24"/> + <method name="getGradientCenterY()F" since="24"/> + <method name="getGradientRadius()F" since="21"/> + <method name="getGradientType()I" since="24"/> + <method name="getOrientation()Landroid/graphics/drawable/GradientDrawable$Orientation;" since="16"/> + <method name="getShape()I" since="24"/> + <method name="getUseLevel()Z" since="24"/> + <method name="setColor(I)V"/> + <method name="setColor(Landroid/content/res/ColorStateList;)V" since="21"/> + <method name="setColors([I)V" since="16"/> + <method name="setCornerRadii([F)V"/> + <method name="setCornerRadius(F)V"/> + <method name="setGradientCenter(FF)V"/> + <method name="setGradientRadius(F)V"/> + <method name="setGradientType(I)V"/> + <method name="setOrientation(Landroid/graphics/drawable/GradientDrawable$Orientation;)V" since="16"/> + <method name="setShape(I)V"/> + <method name="setSize(II)V"/> + <method name="setStroke(II)V"/> + <method name="setStroke(IIFF)V"/> + <method name="setStroke(ILandroid/content/res/ColorStateList;)V" since="21"/> + <method name="setStroke(ILandroid/content/res/ColorStateList;FF)V" since="21"/> + <method name="setUseLevel(Z)V"/> + <field name="LINE"/> + <field name="LINEAR_GRADIENT"/> + <field name="OVAL"/> + <field name="RADIAL_GRADIENT"/> + <field name="RECTANGLE"/> + <field name="RING"/> + <field name="SWEEP_GRADIENT"/> + </class> + <class name="android/graphics/drawable/GradientDrawable$Orientation" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/graphics/drawable/GradientDrawable$Orientation;"/> + <method name="values()[Landroid/graphics/drawable/GradientDrawable$Orientation;"/> + <field name="BL_TR"/> + <field name="BOTTOM_TOP"/> + <field name="BR_TL"/> + <field name="LEFT_RIGHT"/> + <field name="RIGHT_LEFT"/> + <field name="TL_BR"/> + <field name="TOP_BOTTOM"/> + <field name="TR_BL"/> + </class> + <class name="android/graphics/drawable/Icon" since="23"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="createWithAdaptiveBitmap(Landroid/graphics/Bitmap;)Landroid/graphics/drawable/Icon;" since="26"/> + <method name="createWithBitmap(Landroid/graphics/Bitmap;)Landroid/graphics/drawable/Icon;"/> + <method name="createWithContentUri(Landroid/net/Uri;)Landroid/graphics/drawable/Icon;"/> + <method name="createWithContentUri(Ljava/lang/String;)Landroid/graphics/drawable/Icon;"/> + <method name="createWithData([BII)Landroid/graphics/drawable/Icon;"/> + <method name="createWithFilePath(Ljava/lang/String;)Landroid/graphics/drawable/Icon;"/> + <method name="createWithResource(Landroid/content/Context;I)Landroid/graphics/drawable/Icon;"/> + <method name="createWithResource(Ljava/lang/String;I)Landroid/graphics/drawable/Icon;"/> + <method name="loadDrawable(Landroid/content/Context;)Landroid/graphics/drawable/Drawable;"/> + <method name="loadDrawableAsync(Landroid/content/Context;Landroid/graphics/drawable/Icon$OnDrawableLoadedListener;Landroid/os/Handler;)V"/> + <method name="loadDrawableAsync(Landroid/content/Context;Landroid/os/Message;)V"/> + <method name="setTint(I)Landroid/graphics/drawable/Icon;"/> + <method name="setTintList(Landroid/content/res/ColorStateList;)Landroid/graphics/drawable/Icon;"/> + <method name="setTintMode(Landroid/graphics/PorterDuff$Mode;)Landroid/graphics/drawable/Icon;"/> + <field name="CREATOR"/> + </class> + <class name="android/graphics/drawable/Icon$OnDrawableLoadedListener" since="23"> + <extends name="java/lang/Object"/> + <method name="onDrawableLoaded(Landroid/graphics/drawable/Drawable;)V"/> + </class> + <class name="android/graphics/drawable/InsetDrawable" since="1"> + <extends name="android/graphics/drawable/Drawable" removed="23"/> + <extends name="android/graphics/drawable/DrawableWrapper" since="23"/> + <implements name="android/graphics/drawable/Drawable$Callback" removed="23"/> + <method name="<init>(Landroid/graphics/drawable/Drawable;F)V" since="26"/> + <method name="<init>(Landroid/graphics/drawable/Drawable;FFFF)V" since="26"/> + <method name="<init>(Landroid/graphics/drawable/Drawable;I)V"/> + <method name="<init>(Landroid/graphics/drawable/Drawable;IIII)V"/> + <method name="getDrawable()Landroid/graphics/drawable/Drawable;" since="19" removed="23"/> + </class> + <class name="android/graphics/drawable/LayerDrawable" since="1"> + <extends name="android/graphics/drawable/Drawable"/> + <implements name="android/graphics/drawable/Drawable$Callback"/> + <method name="<init>([Landroid/graphics/drawable/Drawable;)V"/> + <method name="addLayer(Landroid/graphics/drawable/Drawable;)I" since="23"/> + <method name="findDrawableByLayerId(I)Landroid/graphics/drawable/Drawable;"/> + <method name="findIndexByLayerId(I)I" since="23"/> + <method name="getBottomPadding()I" since="23"/> + <method name="getDrawable(I)Landroid/graphics/drawable/Drawable;"/> + <method name="getEndPadding()I" since="23"/> + <method name="getId(I)I"/> + <method name="getLayerGravity(I)I" since="23"/> + <method name="getLayerHeight(I)I" since="23"/> + <method name="getLayerInsetBottom(I)I" since="23"/> + <method name="getLayerInsetEnd(I)I" since="23"/> + <method name="getLayerInsetLeft(I)I" since="23"/> + <method name="getLayerInsetRight(I)I" since="23"/> + <method name="getLayerInsetStart(I)I" since="23"/> + <method name="getLayerInsetTop(I)I" since="23"/> + <method name="getLayerWidth(I)I" since="23"/> + <method name="getLeftPadding()I" since="23"/> + <method name="getNumberOfLayers()I"/> + <method name="getPaddingMode()I" since="21"/> + <method name="getRightPadding()I" since="23"/> + <method name="getStartPadding()I" since="23"/> + <method name="getTopPadding()I" since="23"/> + <method name="setDrawable(ILandroid/graphics/drawable/Drawable;)V" since="23"/> + <method name="setDrawableByLayerId(ILandroid/graphics/drawable/Drawable;)Z"/> + <method name="setId(II)V"/> + <method name="setLayerGravity(II)V" since="23"/> + <method name="setLayerHeight(II)V" since="23"/> + <method name="setLayerInset(IIIII)V"/> + <method name="setLayerInsetBottom(II)V" since="23"/> + <method name="setLayerInsetEnd(II)V" since="23"/> + <method name="setLayerInsetLeft(II)V" since="23"/> + <method name="setLayerInsetRelative(IIIII)V" since="23"/> + <method name="setLayerInsetRight(II)V" since="23"/> + <method name="setLayerInsetStart(II)V" since="23"/> + <method name="setLayerInsetTop(II)V" since="23"/> + <method name="setLayerSize(III)V" since="23"/> + <method name="setLayerWidth(II)V" since="23"/> + <method name="setOpacity(I)V" since="11"/> + <method name="setPadding(IIII)V" since="23"/> + <method name="setPaddingMode(I)V" since="21"/> + <method name="setPaddingRelative(IIII)V" since="23"/> + <field name="INSET_UNDEFINED" since="24"/> + <field name="PADDING_MODE_NEST" since="21"/> + <field name="PADDING_MODE_STACK" since="21"/> + </class> + <class name="android/graphics/drawable/LevelListDrawable" since="1"> + <extends name="android/graphics/drawable/DrawableContainer"/> + <method name="<init>()V"/> + <method name="addLevel(IILandroid/graphics/drawable/Drawable;)V"/> + </class> + <class name="android/graphics/drawable/NinePatchDrawable" since="1"> + <extends name="android/graphics/drawable/Drawable"/> + <method name="<init>(Landroid/content/res/Resources;Landroid/graphics/Bitmap;[BLandroid/graphics/Rect;Ljava/lang/String;)V" since="4"/> + <method name="<init>(Landroid/content/res/Resources;Landroid/graphics/NinePatch;)V" since="4"/> + <method name="<init>(Landroid/graphics/Bitmap;[BLandroid/graphics/Rect;Ljava/lang/String;)V" deprecated="16"/> + <method name="<init>(Landroid/graphics/NinePatch;)V" deprecated="16"/> + <method name="getPaint()Landroid/graphics/Paint;"/> + <method name="setTargetDensity(I)V" since="4"/> + <method name="setTargetDensity(Landroid/graphics/Canvas;)V" since="4"/> + <method name="setTargetDensity(Landroid/util/DisplayMetrics;)V" since="4"/> + </class> + <class name="android/graphics/drawable/PaintDrawable" since="1"> + <extends name="android/graphics/drawable/ShapeDrawable"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="setCornerRadii([F)V"/> + <method name="setCornerRadius(F)V"/> + </class> + <class name="android/graphics/drawable/PictureDrawable" since="1"> + <extends name="android/graphics/drawable/Drawable"/> + <method name="<init>(Landroid/graphics/Picture;)V"/> + <method name="getPicture()Landroid/graphics/Picture;"/> + <method name="setPicture(Landroid/graphics/Picture;)V"/> + </class> + <class name="android/graphics/drawable/RippleDrawable" since="21"> + <extends name="android/graphics/drawable/LayerDrawable"/> + <method name="<init>(Landroid/content/res/ColorStateList;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V"/> + <method name="getRadius()I" since="23"/> + <method name="setColor(Landroid/content/res/ColorStateList;)V"/> + <method name="setRadius(I)V" since="23"/> + <field name="RADIUS_AUTO" since="23"/> + </class> + <class name="android/graphics/drawable/RotateDrawable" since="1"> + <extends name="android/graphics/drawable/Drawable" removed="23"/> + <extends name="android/graphics/drawable/DrawableWrapper" since="23"/> + <implements name="android/graphics/drawable/Drawable$Callback" removed="23"/> + <method name="<init>()V"/> + <method name="getDrawable()Landroid/graphics/drawable/Drawable;" since="3" removed="23"/> + <method name="getFromDegrees()F" since="21"/> + <method name="getPivotX()F" since="21"/> + <method name="getPivotY()F" since="21"/> + <method name="getToDegrees()F" since="21"/> + <method name="isPivotXRelative()Z" since="21"/> + <method name="isPivotYRelative()Z" since="21"/> + <method name="setDrawable(Landroid/graphics/drawable/Drawable;)V" since="21" removed="23"/> + <method name="setFromDegrees(F)V" since="21"/> + <method name="setPivotX(F)V" since="21"/> + <method name="setPivotXRelative(Z)V" since="21"/> + <method name="setPivotY(F)V" since="21"/> + <method name="setPivotYRelative(Z)V" since="21"/> + <method name="setToDegrees(F)V" since="21"/> + </class> + <class name="android/graphics/drawable/ScaleDrawable" since="1"> + <extends name="android/graphics/drawable/Drawable" removed="23"/> + <extends name="android/graphics/drawable/DrawableWrapper" since="23"/> + <implements name="android/graphics/drawable/Drawable$Callback" removed="23"/> + <method name="<init>(Landroid/graphics/drawable/Drawable;IFF)V"/> + <method name="getDrawable()Landroid/graphics/drawable/Drawable;" since="3" removed="23"/> + </class> + <class name="android/graphics/drawable/ShapeDrawable" since="1"> + <extends name="android/graphics/drawable/Drawable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/graphics/drawable/shapes/Shape;)V"/> + <method name="getPaint()Landroid/graphics/Paint;"/> + <method name="getShaderFactory()Landroid/graphics/drawable/ShapeDrawable$ShaderFactory;"/> + <method name="getShape()Landroid/graphics/drawable/shapes/Shape;"/> + <method name="inflateTag(Ljava/lang/String;Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;)Z"/> + <method name="onDraw(Landroid/graphics/drawable/shapes/Shape;Landroid/graphics/Canvas;Landroid/graphics/Paint;)V"/> + <method name="setIntrinsicHeight(I)V"/> + <method name="setIntrinsicWidth(I)V"/> + <method name="setPadding(IIII)V"/> + <method name="setPadding(Landroid/graphics/Rect;)V"/> + <method name="setShaderFactory(Landroid/graphics/drawable/ShapeDrawable$ShaderFactory;)V"/> + <method name="setShape(Landroid/graphics/drawable/shapes/Shape;)V"/> + </class> + <class name="android/graphics/drawable/ShapeDrawable$ShaderFactory" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="resize(II)Landroid/graphics/Shader;"/> + </class> + <class name="android/graphics/drawable/StateListDrawable" since="1"> + <extends name="android/graphics/drawable/DrawableContainer"/> + <method name="<init>()V"/> + <method name="addState([ILandroid/graphics/drawable/Drawable;)V"/> + </class> + <class name="android/graphics/drawable/TransitionDrawable" since="1"> + <extends name="android/graphics/drawable/LayerDrawable"/> + <method name="<init>()V" removed="3"/> + <method name="<init>([Landroid/graphics/drawable/Drawable;)V" since="3"/> + <method name="isCrossFadeEnabled()Z"/> + <method name="resetTransition()V"/> + <method name="reverseTransition(I)V"/> + <method name="setCrossFadeEnabled(Z)V"/> + <method name="startTransition(I)V"/> + </class> + <class name="android/graphics/drawable/VectorDrawable" since="21"> + <extends name="android/graphics/drawable/Drawable"/> + <method name="<init>()V"/> + </class> + <class name="android/graphics/drawable/shapes/ArcShape" since="1"> + <extends name="android/graphics/drawable/shapes/RectShape"/> + <method name="<init>(FF)V"/> + <method name="clone()Landroid/graphics/drawable/shapes/ArcShape;" since="26"/> + <method name="getStartAngle()F" since="26"/> + <method name="getSweepAngle()F" since="26"/> + </class> + <class name="android/graphics/drawable/shapes/OvalShape" since="1"> + <extends name="android/graphics/drawable/shapes/RectShape"/> + <method name="<init>()V"/> + <method name="clone()Landroid/graphics/drawable/shapes/OvalShape;" since="26"/> + </class> + <class name="android/graphics/drawable/shapes/PathShape" since="1"> + <extends name="android/graphics/drawable/shapes/Shape"/> + <method name="<init>(Landroid/graphics/Path;FF)V"/> + <method name="clone()Landroid/graphics/drawable/shapes/PathShape;" since="3"/> + </class> + <class name="android/graphics/drawable/shapes/RectShape" since="1"> + <extends name="android/graphics/drawable/shapes/Shape"/> + <method name="<init>()V"/> + <method name="clone()Landroid/graphics/drawable/shapes/RectShape;" since="3"/> + <method name="rect()Landroid/graphics/RectF;"/> + </class> + <class name="android/graphics/drawable/shapes/RoundRectShape" since="1"> + <extends name="android/graphics/drawable/shapes/RectShape"/> + <method name="<init>([FLandroid/graphics/RectF;[F)V"/> + <method name="clone()Landroid/graphics/drawable/shapes/RoundRectShape;" since="3"/> + </class> + <class name="android/graphics/drawable/shapes/Shape" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable" since="3"/> + <method name="<init>()V"/> + <method name="clone()Landroid/graphics/drawable/shapes/Shape;" since="3"/> + <method name="draw(Landroid/graphics/Canvas;Landroid/graphics/Paint;)V"/> + <method name="getHeight()F"/> + <method name="getOutline(Landroid/graphics/Outline;)V" since="21"/> + <method name="getWidth()F"/> + <method name="hasAlpha()Z"/> + <method name="onResize(FF)V"/> + <method name="resize(FF)V"/> + </class> + <class name="android/graphics/fonts/FontVariationAxis" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;F)V"/> + <method name="fromFontVariationSettings(Ljava/lang/String;)[Landroid/graphics/fonts/FontVariationAxis;"/> + <method name="getStyleValue()F"/> + <method name="getTag()Ljava/lang/String;"/> + <method name="toFontVariationSettings([Landroid/graphics/fonts/FontVariationAxis;)Ljava/lang/String;"/> + </class> + <class name="android/graphics/pdf/PdfDocument" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="close()V"/> + <method name="finishPage(Landroid/graphics/pdf/PdfDocument$Page;)V"/> + <method name="getPages()Ljava/util/List;"/> + <method name="startPage(Landroid/graphics/pdf/PdfDocument$PageInfo;)Landroid/graphics/pdf/PdfDocument$Page;"/> + <method name="writeTo(Ljava/io/OutputStream;)V"/> + </class> + <class name="android/graphics/pdf/PdfDocument$Page" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getCanvas()Landroid/graphics/Canvas;"/> + <method name="getInfo()Landroid/graphics/pdf/PdfDocument$PageInfo;"/> + </class> + <class name="android/graphics/pdf/PdfDocument$PageInfo" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getContentRect()Landroid/graphics/Rect;"/> + <method name="getPageHeight()I"/> + <method name="getPageNumber()I"/> + <method name="getPageWidth()I"/> + </class> + <class name="android/graphics/pdf/PdfDocument$PageInfo$Builder" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>(III)V"/> + <method name="create()Landroid/graphics/pdf/PdfDocument$PageInfo;"/> + <method name="setContentRect(Landroid/graphics/Rect;)Landroid/graphics/pdf/PdfDocument$PageInfo$Builder;"/> + </class> + <class name="android/graphics/pdf/PdfRenderer" since="21"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable"/> + <method name="<init>(Landroid/os/ParcelFileDescriptor;)V"/> + <method name="getPageCount()I"/> + <method name="openPage(I)Landroid/graphics/pdf/PdfRenderer$Page;"/> + <method name="shouldScaleForPrinting()Z"/> + </class> + <class name="android/graphics/pdf/PdfRenderer$Page" since="21"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable"/> + <method name="<init>(Landroid/graphics/pdf/PdfRenderer;)V"/> + <method name="getHeight()I"/> + <method name="getIndex()I"/> + <method name="getWidth()I"/> + <method name="render(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/Matrix;I)V"/> + <field name="RENDER_MODE_FOR_DISPLAY"/> + <field name="RENDER_MODE_FOR_PRINT"/> + </class> + <class name="android/hardware/Camera" since="1" deprecated="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addCallbackBuffer([B)V" since="8"/> + <method name="autoFocus(Landroid/hardware/Camera$AutoFocusCallback;)V"/> + <method name="cancelAutoFocus()V" since="5"/> + <method name="enableShutterSound(Z)Z" since="17"/> + <method name="getCameraInfo(ILandroid/hardware/Camera$CameraInfo;)V" since="9"/> + <method name="getNumberOfCameras()I" since="9"/> + <method name="getParameters()Landroid/hardware/Camera$Parameters;"/> + <method name="lock()V" since="5"/> + <method name="open()Landroid/hardware/Camera;"/> + <method name="open(I)Landroid/hardware/Camera;" since="9"/> + <method name="reconnect()V" since="8"/> + <method name="release()V"/> + <method name="setAutoFocusMoveCallback(Landroid/hardware/Camera$AutoFocusMoveCallback;)V" since="16"/> + <method name="setDisplayOrientation(I)V" since="8"/> + <method name="setErrorCallback(Landroid/hardware/Camera$ErrorCallback;)V"/> + <method name="setFaceDetectionListener(Landroid/hardware/Camera$FaceDetectionListener;)V" since="14"/> + <method name="setOneShotPreviewCallback(Landroid/hardware/Camera$PreviewCallback;)V" since="3"/> + <method name="setParameters(Landroid/hardware/Camera$Parameters;)V"/> + <method name="setPreviewCallback(Landroid/hardware/Camera$PreviewCallback;)V"/> + <method name="setPreviewCallbackWithBuffer(Landroid/hardware/Camera$PreviewCallback;)V" since="8"/> + <method name="setPreviewDisplay(Landroid/view/SurfaceHolder;)V"/> + <method name="setPreviewTexture(Landroid/graphics/SurfaceTexture;)V" since="11"/> + <method name="setZoomChangeListener(Landroid/hardware/Camera$OnZoomChangeListener;)V" since="8"/> + <method name="startFaceDetection()V" since="14"/> + <method name="startPreview()V"/> + <method name="startSmoothZoom(I)V" since="8"/> + <method name="stopFaceDetection()V" since="14"/> + <method name="stopPreview()V"/> + <method name="stopSmoothZoom()V" since="8"/> + <method name="takePicture(Landroid/hardware/Camera$ShutterCallback;Landroid/hardware/Camera$PictureCallback;Landroid/hardware/Camera$PictureCallback;)V"/> + <method name="takePicture(Landroid/hardware/Camera$ShutterCallback;Landroid/hardware/Camera$PictureCallback;Landroid/hardware/Camera$PictureCallback;Landroid/hardware/Camera$PictureCallback;)V" since="5"/> + <method name="unlock()V" since="5"/> + <field name="ACTION_NEW_PICTURE" since="14" deprecated="24"/> + <field name="ACTION_NEW_VIDEO" since="14" deprecated="24"/> + <field name="CAMERA_ERROR_EVICTED" since="23"/> + <field name="CAMERA_ERROR_SERVER_DIED"/> + <field name="CAMERA_ERROR_UNKNOWN"/> + </class> + <class name="android/hardware/Camera$Area" since="14" deprecated="21"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/graphics/Rect;I)V"/> + <field name="rect"/> + <field name="weight"/> + </class> + <class name="android/hardware/Camera$AutoFocusCallback" since="1" deprecated="21"> + <extends name="java/lang/Object"/> + <method name="onAutoFocus(ZLandroid/hardware/Camera;)V"/> + </class> + <class name="android/hardware/Camera$AutoFocusMoveCallback" since="16" deprecated="21"> + <extends name="java/lang/Object"/> + <method name="onAutoFocusMoving(ZLandroid/hardware/Camera;)V"/> + </class> + <class name="android/hardware/Camera$CameraInfo" since="9" deprecated="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="CAMERA_FACING_BACK"/> + <field name="CAMERA_FACING_FRONT"/> + <field name="canDisableShutterSound" since="17"/> + <field name="facing"/> + <field name="orientation"/> + </class> + <class name="android/hardware/Camera$ErrorCallback" since="1" deprecated="21"> + <extends name="java/lang/Object"/> + <method name="onError(ILandroid/hardware/Camera;)V"/> + </class> + <class name="android/hardware/Camera$Face" since="14" deprecated="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="id"/> + <field name="leftEye"/> + <field name="mouth"/> + <field name="rect"/> + <field name="rightEye"/> + <field name="score"/> + </class> + <class name="android/hardware/Camera$FaceDetectionListener" since="14" deprecated="21"> + <extends name="java/lang/Object"/> + <method name="onFaceDetection([Landroid/hardware/Camera$Face;Landroid/hardware/Camera;)V"/> + </class> + <class name="android/hardware/Camera$OnZoomChangeListener" since="8" deprecated="21"> + <extends name="java/lang/Object"/> + <method name="onZoomChange(IZLandroid/hardware/Camera;)V"/> + </class> + <class name="android/hardware/Camera$Parameters" since="1" deprecated="21"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/hardware/Camera;)V"/> + <method name="flatten()Ljava/lang/String;"/> + <method name="get(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getAntibanding()Ljava/lang/String;" since="5"/> + <method name="getAutoExposureLock()Z" since="14"/> + <method name="getAutoWhiteBalanceLock()Z" since="14"/> + <method name="getColorEffect()Ljava/lang/String;" since="5"/> + <method name="getExposureCompensation()I" since="8"/> + <method name="getExposureCompensationStep()F" since="8"/> + <method name="getFlashMode()Ljava/lang/String;" since="5"/> + <method name="getFocalLength()F" since="8"/> + <method name="getFocusAreas()Ljava/util/List;" since="14"/> + <method name="getFocusDistances([F)V" since="9"/> + <method name="getFocusMode()Ljava/lang/String;" since="5"/> + <method name="getHorizontalViewAngle()F" since="8"/> + <method name="getInt(Ljava/lang/String;)I"/> + <method name="getJpegQuality()I" since="5"/> + <method name="getJpegThumbnailQuality()I" since="5"/> + <method name="getJpegThumbnailSize()Landroid/hardware/Camera$Size;" since="5"/> + <method name="getMaxExposureCompensation()I" since="8"/> + <method name="getMaxNumDetectedFaces()I" since="14"/> + <method name="getMaxNumFocusAreas()I" since="14"/> + <method name="getMaxNumMeteringAreas()I" since="14"/> + <method name="getMaxZoom()I" since="8"/> + <method name="getMeteringAreas()Ljava/util/List;" since="14"/> + <method name="getMinExposureCompensation()I" since="8"/> + <method name="getPictureFormat()I"/> + <method name="getPictureSize()Landroid/hardware/Camera$Size;"/> + <method name="getPreferredPreviewSizeForVideo()Landroid/hardware/Camera$Size;" since="11"/> + <method name="getPreviewFormat()I"/> + <method name="getPreviewFpsRange([I)V" since="9"/> + <method name="getPreviewFrameRate()I" deprecated="16"/> + <method name="getPreviewSize()Landroid/hardware/Camera$Size;"/> + <method name="getSceneMode()Ljava/lang/String;" since="5"/> + <method name="getSupportedAntibanding()Ljava/util/List;" since="5"/> + <method name="getSupportedColorEffects()Ljava/util/List;" since="5"/> + <method name="getSupportedFlashModes()Ljava/util/List;" since="5"/> + <method name="getSupportedFocusModes()Ljava/util/List;" since="5"/> + <method name="getSupportedJpegThumbnailSizes()Ljava/util/List;" since="8"/> + <method name="getSupportedPictureFormats()Ljava/util/List;" since="5"/> + <method name="getSupportedPictureSizes()Ljava/util/List;" since="5"/> + <method name="getSupportedPreviewFormats()Ljava/util/List;" since="5"/> + <method name="getSupportedPreviewFpsRange()Ljava/util/List;" since="9"/> + <method name="getSupportedPreviewFrameRates()Ljava/util/List;" since="5" deprecated="16"/> + <method name="getSupportedPreviewSizes()Ljava/util/List;" since="5"/> + <method name="getSupportedSceneModes()Ljava/util/List;" since="5"/> + <method name="getSupportedVideoSizes()Ljava/util/List;" since="11"/> + <method name="getSupportedWhiteBalance()Ljava/util/List;" since="5"/> + <method name="getVerticalViewAngle()F" since="8"/> + <method name="getVideoStabilization()Z" since="15"/> + <method name="getWhiteBalance()Ljava/lang/String;" since="5"/> + <method name="getZoom()I" since="8"/> + <method name="getZoomRatios()Ljava/util/List;" since="8"/> + <method name="isAutoExposureLockSupported()Z" since="14"/> + <method name="isAutoWhiteBalanceLockSupported()Z" since="14"/> + <method name="isSmoothZoomSupported()Z" since="8"/> + <method name="isVideoSnapshotSupported()Z" since="14"/> + <method name="isVideoStabilizationSupported()Z" since="15"/> + <method name="isZoomSupported()Z" since="8"/> + <method name="remove(Ljava/lang/String;)V"/> + <method name="removeGpsData()V" since="5"/> + <method name="set(Ljava/lang/String;I)V"/> + <method name="set(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="setAntibanding(Ljava/lang/String;)V" since="5"/> + <method name="setAutoExposureLock(Z)V" since="14"/> + <method name="setAutoWhiteBalanceLock(Z)V" since="14"/> + <method name="setColorEffect(Ljava/lang/String;)V" since="5"/> + <method name="setExposureCompensation(I)V" since="8"/> + <method name="setFlashMode(Ljava/lang/String;)V" since="5"/> + <method name="setFocusAreas(Ljava/util/List;)V" since="14"/> + <method name="setFocusMode(Ljava/lang/String;)V" since="5"/> + <method name="setGpsAltitude(D)V" since="5"/> + <method name="setGpsLatitude(D)V" since="5"/> + <method name="setGpsLongitude(D)V" since="5"/> + <method name="setGpsProcessingMethod(Ljava/lang/String;)V" since="8"/> + <method name="setGpsTimestamp(J)V" since="5"/> + <method name="setJpegQuality(I)V" since="5"/> + <method name="setJpegThumbnailQuality(I)V" since="5"/> + <method name="setJpegThumbnailSize(II)V" since="5"/> + <method name="setMeteringAreas(Ljava/util/List;)V" since="14"/> + <method name="setPictureFormat(I)V"/> + <method name="setPictureSize(II)V"/> + <method name="setPreviewFormat(I)V"/> + <method name="setPreviewFpsRange(II)V" since="9"/> + <method name="setPreviewFrameRate(I)V" deprecated="16"/> + <method name="setPreviewSize(II)V"/> + <method name="setRecordingHint(Z)V" since="14"/> + <method name="setRotation(I)V" since="5"/> + <method name="setSceneMode(Ljava/lang/String;)V" since="5"/> + <method name="setVideoStabilization(Z)V" since="15"/> + <method name="setWhiteBalance(Ljava/lang/String;)V" since="5"/> + <method name="setZoom(I)V" since="8"/> + <method name="unflatten(Ljava/lang/String;)V"/> + <field name="ANTIBANDING_50HZ" since="5"/> + <field name="ANTIBANDING_60HZ" since="5"/> + <field name="ANTIBANDING_AUTO" since="5"/> + <field name="ANTIBANDING_OFF" since="5"/> + <field name="EFFECT_AQUA" since="5"/> + <field name="EFFECT_BLACKBOARD" since="5"/> + <field name="EFFECT_MONO" since="5"/> + <field name="EFFECT_NEGATIVE" since="5"/> + <field name="EFFECT_NONE" since="5"/> + <field name="EFFECT_POSTERIZE" since="5"/> + <field name="EFFECT_SEPIA" since="5"/> + <field name="EFFECT_SOLARIZE" since="5"/> + <field name="EFFECT_WHITEBOARD" since="5"/> + <field name="FLASH_MODE_AUTO" since="5"/> + <field name="FLASH_MODE_OFF" since="5"/> + <field name="FLASH_MODE_ON" since="5"/> + <field name="FLASH_MODE_RED_EYE" since="5"/> + <field name="FLASH_MODE_TORCH" since="5"/> + <field name="FOCUS_DISTANCE_FAR_INDEX" since="9"/> + <field name="FOCUS_DISTANCE_NEAR_INDEX" since="9"/> + <field name="FOCUS_DISTANCE_OPTIMAL_INDEX" since="9"/> + <field name="FOCUS_MODE_AUTO" since="5"/> + <field name="FOCUS_MODE_CONTINUOUS_PICTURE" since="14"/> + <field name="FOCUS_MODE_CONTINUOUS_VIDEO" since="9"/> + <field name="FOCUS_MODE_EDOF" since="8"/> + <field name="FOCUS_MODE_FIXED" since="5"/> + <field name="FOCUS_MODE_INFINITY" since="5"/> + <field name="FOCUS_MODE_MACRO" since="5"/> + <field name="PREVIEW_FPS_MAX_INDEX" since="9"/> + <field name="PREVIEW_FPS_MIN_INDEX" since="9"/> + <field name="SCENE_MODE_ACTION" since="5"/> + <field name="SCENE_MODE_AUTO" since="5"/> + <field name="SCENE_MODE_BARCODE" since="8"/> + <field name="SCENE_MODE_BEACH" since="5"/> + <field name="SCENE_MODE_CANDLELIGHT" since="5"/> + <field name="SCENE_MODE_FIREWORKS" since="5"/> + <field name="SCENE_MODE_HDR" since="17"/> + <field name="SCENE_MODE_LANDSCAPE" since="5"/> + <field name="SCENE_MODE_NIGHT" since="5"/> + <field name="SCENE_MODE_NIGHT_PORTRAIT" since="5"/> + <field name="SCENE_MODE_PARTY" since="5"/> + <field name="SCENE_MODE_PORTRAIT" since="5"/> + <field name="SCENE_MODE_SNOW" since="5"/> + <field name="SCENE_MODE_SPORTS" since="5"/> + <field name="SCENE_MODE_STEADYPHOTO" since="5"/> + <field name="SCENE_MODE_SUNSET" since="5"/> + <field name="SCENE_MODE_THEATRE" since="5"/> + <field name="WHITE_BALANCE_AUTO" since="5"/> + <field name="WHITE_BALANCE_CLOUDY_DAYLIGHT" since="5"/> + <field name="WHITE_BALANCE_DAYLIGHT" since="5"/> + <field name="WHITE_BALANCE_FLUORESCENT" since="5"/> + <field name="WHITE_BALANCE_INCANDESCENT" since="5"/> + <field name="WHITE_BALANCE_SHADE" since="5"/> + <field name="WHITE_BALANCE_TWILIGHT" since="5"/> + <field name="WHITE_BALANCE_WARM_FLUORESCENT" since="5"/> + </class> + <class name="android/hardware/Camera$PictureCallback" since="1" deprecated="21"> + <extends name="java/lang/Object"/> + <method name="onPictureTaken([BLandroid/hardware/Camera;)V"/> + </class> + <class name="android/hardware/Camera$PreviewCallback" since="1" deprecated="21"> + <extends name="java/lang/Object"/> + <method name="onPreviewFrame([BLandroid/hardware/Camera;)V"/> + </class> + <class name="android/hardware/Camera$ShutterCallback" since="1" deprecated="21"> + <extends name="java/lang/Object"/> + <method name="onShutter()V"/> + </class> + <class name="android/hardware/Camera$Size" since="1" deprecated="21"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/hardware/Camera;II)V"/> + <field name="height"/> + <field name="width"/> + </class> + <class name="android/hardware/ConsumerIrManager" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getCarrierFrequencies()[Landroid/hardware/ConsumerIrManager$CarrierFrequencyRange;"/> + <method name="hasIrEmitter()Z"/> + <method name="transmit(I[I)V"/> + </class> + <class name="android/hardware/ConsumerIrManager$CarrierFrequencyRange" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/hardware/ConsumerIrManager;II)V"/> + <method name="getMaxFrequency()I"/> + <method name="getMinFrequency()I"/> + </class> + <class name="android/hardware/GeomagneticField" since="3"> + <extends name="java/lang/Object"/> + <method name="<init>(FFFJ)V"/> + <method name="getDeclination()F"/> + <method name="getFieldStrength()F"/> + <method name="getHorizontalStrength()F"/> + <method name="getInclination()F"/> + <method name="getX()F"/> + <method name="getY()F"/> + <method name="getZ()F"/> + </class> + <class name="android/hardware/HardwareBuffer" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <implements name="java/lang/AutoCloseable"/> + <method name="<init>()V"/> + <method name="create(IIIIJ)Landroid/hardware/HardwareBuffer;"/> + <method name="getFormat()I"/> + <method name="getHeight()I"/> + <method name="getLayers()I"/> + <method name="getUsage()J"/> + <method name="getWidth()I"/> + <method name="isClosed()Z"/> + <field name="BLOB"/> + <field name="CREATOR"/> + <field name="RGBA_1010102"/> + <field name="RGBA_8888"/> + <field name="RGBA_FP16"/> + <field name="RGBX_8888"/> + <field name="RGB_565"/> + <field name="RGB_888"/> + <field name="USAGE_CPU_READ_OFTEN"/> + <field name="USAGE_CPU_READ_RARELY"/> + <field name="USAGE_CPU_WRITE_OFTEN"/> + <field name="USAGE_CPU_WRITE_RARELY"/> + <field name="USAGE_GPU_COLOR_OUTPUT"/> + <field name="USAGE_GPU_DATA_BUFFER"/> + <field name="USAGE_GPU_SAMPLED_IMAGE"/> + <field name="USAGE_PROTECTED_CONTENT"/> + <field name="USAGE_SENSOR_DIRECT_DATA"/> + <field name="USAGE_VIDEO_ENCODE"/> + </class> + <class name="android/hardware/Sensor" since="3"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getFifoMaxEventCount()I" since="19"/> + <method name="getFifoReservedEventCount()I" since="19"/> + <method name="getHighestDirectReportRateLevel()I" since="26"/> + <method name="getId()I" since="24"/> + <method name="getMaxDelay()I" since="21"/> + <method name="getMaximumRange()F"/> + <method name="getMinDelay()I" since="9"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getPower()F"/> + <method name="getReportingMode()I" since="21"/> + <method name="getResolution()F"/> + <method name="getStringType()Ljava/lang/String;" since="20"/> + <method name="getType()I"/> + <method name="getVendor()Ljava/lang/String;"/> + <method name="getVersion()I"/> + <method name="isAdditionalInfoSupported()Z" since="24"/> + <method name="isDirectChannelTypeSupported(I)Z" since="26"/> + <method name="isDynamicSensor()Z" since="24"/> + <method name="isWakeUpSensor()Z" since="21"/> + <field name="REPORTING_MODE_CONTINUOUS" since="21"/> + <field name="REPORTING_MODE_ONE_SHOT" since="21"/> + <field name="REPORTING_MODE_ON_CHANGE" since="21"/> + <field name="REPORTING_MODE_SPECIAL_TRIGGER" since="21"/> + <field name="STRING_TYPE_ACCELEROMETER" since="20"/> + <field name="STRING_TYPE_ACCELEROMETER_UNCALIBRATED" since="26"/> + <field name="STRING_TYPE_AMBIENT_TEMPERATURE" since="20"/> + <field name="STRING_TYPE_GAME_ROTATION_VECTOR" since="20"/> + <field name="STRING_TYPE_GEOMAGNETIC_ROTATION_VECTOR" since="20"/> + <field name="STRING_TYPE_GRAVITY" since="20"/> + <field name="STRING_TYPE_GYROSCOPE" since="20"/> + <field name="STRING_TYPE_GYROSCOPE_UNCALIBRATED" since="20"/> + <field name="STRING_TYPE_HEART_BEAT" since="24"/> + <field name="STRING_TYPE_HEART_RATE" since="20"/> + <field name="STRING_TYPE_LIGHT" since="20"/> + <field name="STRING_TYPE_LINEAR_ACCELERATION" since="20"/> + <field name="STRING_TYPE_LOW_LATENCY_OFFBODY_DETECT" since="26"/> + <field name="STRING_TYPE_MAGNETIC_FIELD" since="20"/> + <field name="STRING_TYPE_MAGNETIC_FIELD_UNCALIBRATED" since="20"/> + <field name="STRING_TYPE_MOTION_DETECT" since="24"/> + <field name="STRING_TYPE_ORIENTATION" since="20" deprecated="20"/> + <field name="STRING_TYPE_POSE_6DOF" since="24"/> + <field name="STRING_TYPE_PRESSURE" since="20"/> + <field name="STRING_TYPE_PROXIMITY" since="20"/> + <field name="STRING_TYPE_RELATIVE_HUMIDITY" since="20"/> + <field name="STRING_TYPE_ROTATION_VECTOR" since="20"/> + <field name="STRING_TYPE_SIGNIFICANT_MOTION" since="20"/> + <field name="STRING_TYPE_STATIONARY_DETECT" since="24"/> + <field name="STRING_TYPE_STEP_COUNTER" since="20"/> + <field name="STRING_TYPE_STEP_DETECTOR" since="20"/> + <field name="STRING_TYPE_TEMPERATURE" since="20" deprecated="20"/> + <field name="TYPE_ACCELEROMETER"/> + <field name="TYPE_ACCELEROMETER_UNCALIBRATED" since="26"/> + <field name="TYPE_ALL"/> + <field name="TYPE_AMBIENT_TEMPERATURE" since="14"/> + <field name="TYPE_DEVICE_PRIVATE_BASE" since="24"/> + <field name="TYPE_GAME_ROTATION_VECTOR" since="18"/> + <field name="TYPE_GEOMAGNETIC_ROTATION_VECTOR" since="19"/> + <field name="TYPE_GRAVITY" since="9"/> + <field name="TYPE_GYROSCOPE"/> + <field name="TYPE_GYROSCOPE_UNCALIBRATED" since="18"/> + <field name="TYPE_HEART_BEAT" since="24"/> + <field name="TYPE_HEART_RATE" since="20"/> + <field name="TYPE_LIGHT"/> + <field name="TYPE_LINEAR_ACCELERATION" since="9"/> + <field name="TYPE_LOW_LATENCY_OFFBODY_DETECT" since="26"/> + <field name="TYPE_MAGNETIC_FIELD"/> + <field name="TYPE_MAGNETIC_FIELD_UNCALIBRATED" since="18"/> + <field name="TYPE_MOTION_DETECT" since="24"/> + <field name="TYPE_ORIENTATION" deprecated="16"/> + <field name="TYPE_POSE_6DOF" since="24"/> + <field name="TYPE_PRESSURE"/> + <field name="TYPE_PROXIMITY"/> + <field name="TYPE_RELATIVE_HUMIDITY" since="14"/> + <field name="TYPE_ROTATION_VECTOR" since="9"/> + <field name="TYPE_SIGNIFICANT_MOTION" since="18"/> + <field name="TYPE_STATIONARY_DETECT" since="24"/> + <field name="TYPE_STEP_COUNTER" since="19"/> + <field name="TYPE_STEP_DETECTOR" since="19"/> + <field name="TYPE_TEMPERATURE" deprecated="16"/> + </class> + <class name="android/hardware/SensorAdditionalInfo" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="TYPE_FRAME_BEGIN"/> + <field name="TYPE_FRAME_END"/> + <field name="TYPE_INTERNAL_TEMPERATURE"/> + <field name="TYPE_SAMPLING"/> + <field name="TYPE_SENSOR_PLACEMENT"/> + <field name="TYPE_UNTRACKED_DELAY"/> + <field name="TYPE_VEC3_CALIBRATION"/> + <field name="floatValues"/> + <field name="intValues"/> + <field name="sensor"/> + <field name="serial"/> + <field name="type"/> + </class> + <class name="android/hardware/SensorDirectChannel" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/nio/channels/Channel"/> + <method name="<init>()V"/> + <method name="configure(Landroid/hardware/Sensor;I)I"/> + <field name="RATE_FAST"/> + <field name="RATE_NORMAL"/> + <field name="RATE_STOP"/> + <field name="RATE_VERY_FAST"/> + <field name="TYPE_HARDWARE_BUFFER"/> + <field name="TYPE_MEMORY_FILE"/> + </class> + <class name="android/hardware/SensorEvent" since="3"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="accuracy"/> + <field name="sensor"/> + <field name="timestamp"/> + <field name="values"/> + </class> + <class name="android/hardware/SensorEventCallback" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/hardware/SensorEventListener2"/> + <method name="<init>()V"/> + <method name="onSensorAdditionalInfo(Landroid/hardware/SensorAdditionalInfo;)V"/> + </class> + <class name="android/hardware/SensorEventListener" since="3"> + <extends name="java/lang/Object"/> + <method name="onAccuracyChanged(Landroid/hardware/Sensor;I)V"/> + <method name="onSensorChanged(Landroid/hardware/SensorEvent;)V"/> + </class> + <class name="android/hardware/SensorEventListener2" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/hardware/SensorEventListener"/> + <method name="onFlushCompleted(Landroid/hardware/Sensor;)V"/> + </class> + <class name="android/hardware/SensorListener" since="1" deprecated="3"> + <extends name="java/lang/Object"/> + <method name="onAccuracyChanged(II)V"/> + <method name="onSensorChanged(I[F)V"/> + </class> + <class name="android/hardware/SensorManager" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="cancelTriggerSensor(Landroid/hardware/TriggerEventListener;Landroid/hardware/Sensor;)Z" since="18"/> + <method name="createDirectChannel(Landroid/hardware/HardwareBuffer;)Landroid/hardware/SensorDirectChannel;" since="26"/> + <method name="createDirectChannel(Landroid/os/MemoryFile;)Landroid/hardware/SensorDirectChannel;" since="26"/> + <method name="flush(Landroid/hardware/SensorEventListener;)Z" since="19"/> + <method name="getAltitude(FF)F" since="9"/> + <method name="getAngleChange([F[F[F)V" since="9"/> + <method name="getDefaultSensor(I)Landroid/hardware/Sensor;" since="3"/> + <method name="getDefaultSensor(IZ)Landroid/hardware/Sensor;" since="21"/> + <method name="getDynamicSensorList(I)Ljava/util/List;" since="24"/> + <method name="getInclination([F)F" since="3"/> + <method name="getOrientation([F[F)[F" since="3"/> + <method name="getQuaternionFromVector([F[F)V" since="9"/> + <method name="getRotationMatrix([F[F[F[F)Z" since="3"/> + <method name="getRotationMatrixFromVector([F[F)V" since="9"/> + <method name="getSensorList(I)Ljava/util/List;" since="3"/> + <method name="getSensors()I" deprecated="16"/> + <method name="isDynamicSensorDiscoverySupported()Z" since="24"/> + <method name="registerDynamicSensorCallback(Landroid/hardware/SensorManager$DynamicSensorCallback;)V" since="24"/> + <method name="registerDynamicSensorCallback(Landroid/hardware/SensorManager$DynamicSensorCallback;Landroid/os/Handler;)V" since="24"/> + <method name="registerListener(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;I)Z" since="3"/> + <method name="registerListener(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;II)Z" since="19"/> + <method name="registerListener(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;IILandroid/os/Handler;)Z" since="19"/> + <method name="registerListener(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;ILandroid/os/Handler;)Z" since="3"/> + <method name="registerListener(Landroid/hardware/SensorListener;I)Z" deprecated="16"/> + <method name="registerListener(Landroid/hardware/SensorListener;II)Z" deprecated="16"/> + <method name="remapCoordinateSystem([FII[F)Z" since="3"/> + <method name="requestTriggerSensor(Landroid/hardware/TriggerEventListener;Landroid/hardware/Sensor;)Z" since="18"/> + <method name="unregisterDynamicSensorCallback(Landroid/hardware/SensorManager$DynamicSensorCallback;)V" since="24"/> + <method name="unregisterListener(Landroid/hardware/SensorEventListener;)V" since="3"/> + <method name="unregisterListener(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;)V" since="3"/> + <method name="unregisterListener(Landroid/hardware/SensorListener;)V" deprecated="16"/> + <method name="unregisterListener(Landroid/hardware/SensorListener;I)V" deprecated="16"/> + <field name="AXIS_MINUS_X" since="3"/> + <field name="AXIS_MINUS_Y" since="3"/> + <field name="AXIS_MINUS_Z" since="3"/> + <field name="AXIS_X" since="3"/> + <field name="AXIS_Y" since="3"/> + <field name="AXIS_Z" since="3"/> + <field name="DATA_X" deprecated="16"/> + <field name="DATA_Y" deprecated="16"/> + <field name="DATA_Z" deprecated="16"/> + <field name="GRAVITY_DEATH_STAR_I"/> + <field name="GRAVITY_EARTH"/> + <field name="GRAVITY_JUPITER"/> + <field name="GRAVITY_MARS"/> + <field name="GRAVITY_MERCURY"/> + <field name="GRAVITY_MOON"/> + <field name="GRAVITY_NEPTUNE"/> + <field name="GRAVITY_PLUTO"/> + <field name="GRAVITY_SATURN"/> + <field name="GRAVITY_SUN"/> + <field name="GRAVITY_THE_ISLAND"/> + <field name="GRAVITY_URANUS"/> + <field name="GRAVITY_VENUS"/> + <field name="LIGHT_CLOUDY"/> + <field name="LIGHT_FULLMOON"/> + <field name="LIGHT_NO_MOON"/> + <field name="LIGHT_OVERCAST"/> + <field name="LIGHT_SHADE"/> + <field name="LIGHT_SUNLIGHT"/> + <field name="LIGHT_SUNLIGHT_MAX"/> + <field name="LIGHT_SUNRISE"/> + <field name="MAGNETIC_FIELD_EARTH_MAX"/> + <field name="MAGNETIC_FIELD_EARTH_MIN"/> + <field name="PRESSURE_STANDARD_ATMOSPHERE" since="9"/> + <field name="RAW_DATA_INDEX" deprecated="16"/> + <field name="RAW_DATA_X" deprecated="16"/> + <field name="RAW_DATA_Y" deprecated="16"/> + <field name="RAW_DATA_Z" deprecated="16"/> + <field name="SENSOR_ACCELEROMETER" deprecated="16"/> + <field name="SENSOR_ALL" deprecated="16"/> + <field name="SENSOR_DELAY_FASTEST"/> + <field name="SENSOR_DELAY_GAME"/> + <field name="SENSOR_DELAY_NORMAL"/> + <field name="SENSOR_DELAY_UI"/> + <field name="SENSOR_LIGHT" deprecated="16"/> + <field name="SENSOR_MAGNETIC_FIELD" deprecated="16"/> + <field name="SENSOR_MAX" deprecated="16"/> + <field name="SENSOR_MIN" deprecated="16"/> + <field name="SENSOR_ORIENTATION" deprecated="16"/> + <field name="SENSOR_ORIENTATION_RAW" deprecated="16"/> + <field name="SENSOR_PROXIMITY" deprecated="16"/> + <field name="SENSOR_STATUS_ACCURACY_HIGH"/> + <field name="SENSOR_STATUS_ACCURACY_LOW"/> + <field name="SENSOR_STATUS_ACCURACY_MEDIUM"/> + <field name="SENSOR_STATUS_NO_CONTACT" since="20"/> + <field name="SENSOR_STATUS_UNRELIABLE"/> + <field name="SENSOR_TEMPERATURE" deprecated="16"/> + <field name="SENSOR_TRICORDER" deprecated="16"/> + <field name="STANDARD_GRAVITY"/> + </class> + <class name="android/hardware/SensorManager$DynamicSensorCallback" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onDynamicSensorConnected(Landroid/hardware/Sensor;)V"/> + <method name="onDynamicSensorDisconnected(Landroid/hardware/Sensor;)V"/> + </class> + <class name="android/hardware/TriggerEvent" since="18"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="sensor"/> + <field name="timestamp"/> + <field name="values"/> + </class> + <class name="android/hardware/TriggerEventListener" since="18"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onTrigger(Landroid/hardware/TriggerEvent;)V"/> + </class> + <class name="android/hardware/camera2/CameraAccessException" since="21"> + <extends name="android/util/AndroidException"/> + <method name="<init>(I)V"/> + <method name="<init>(ILjava/lang/String;)V"/> + <method name="<init>(ILjava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(ILjava/lang/Throwable;)V"/> + <method name="getReason()I"/> + <field name="CAMERA_DISABLED"/> + <field name="CAMERA_DISCONNECTED"/> + <field name="CAMERA_ERROR"/> + <field name="CAMERA_IN_USE" since="23"/> + <field name="MAX_CAMERAS_IN_USE" since="23"/> + </class> + <class name="android/hardware/camera2/CameraCaptureSession" since="21"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable"/> + <method name="<init>()V"/> + <method name="abortCaptures()V"/> + <method name="capture(Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/CameraCaptureSession$CaptureCallback;Landroid/os/Handler;)I"/> + <method name="captureBurst(Ljava/util/List;Landroid/hardware/camera2/CameraCaptureSession$CaptureCallback;Landroid/os/Handler;)I"/> + <method name="finalizeOutputConfigurations(Ljava/util/List;)V" since="26"/> + <method name="getDevice()Landroid/hardware/camera2/CameraDevice;"/> + <method name="getInputSurface()Landroid/view/Surface;" since="23"/> + <method name="isReprocessable()Z" since="23"/> + <method name="prepare(Landroid/view/Surface;)V" since="23"/> + <method name="setRepeatingBurst(Ljava/util/List;Landroid/hardware/camera2/CameraCaptureSession$CaptureCallback;Landroid/os/Handler;)I"/> + <method name="setRepeatingRequest(Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/CameraCaptureSession$CaptureCallback;Landroid/os/Handler;)I"/> + <method name="stopRepeating()V"/> + </class> + <class name="android/hardware/camera2/CameraCaptureSession$CaptureCallback" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onCaptureBufferLost(Landroid/hardware/camera2/CameraCaptureSession;Landroid/hardware/camera2/CaptureRequest;Landroid/view/Surface;J)V" since="24"/> + <method name="onCaptureCompleted(Landroid/hardware/camera2/CameraCaptureSession;Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/TotalCaptureResult;)V"/> + <method name="onCaptureFailed(Landroid/hardware/camera2/CameraCaptureSession;Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/CaptureFailure;)V"/> + <method name="onCaptureProgressed(Landroid/hardware/camera2/CameraCaptureSession;Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/CaptureResult;)V"/> + <method name="onCaptureSequenceAborted(Landroid/hardware/camera2/CameraCaptureSession;I)V"/> + <method name="onCaptureSequenceCompleted(Landroid/hardware/camera2/CameraCaptureSession;IJ)V"/> + <method name="onCaptureStarted(Landroid/hardware/camera2/CameraCaptureSession;Landroid/hardware/camera2/CaptureRequest;JJ)V"/> + </class> + <class name="android/hardware/camera2/CameraCaptureSession$StateCallback" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onActive(Landroid/hardware/camera2/CameraCaptureSession;)V"/> + <method name="onCaptureQueueEmpty(Landroid/hardware/camera2/CameraCaptureSession;)V" since="26"/> + <method name="onClosed(Landroid/hardware/camera2/CameraCaptureSession;)V"/> + <method name="onConfigureFailed(Landroid/hardware/camera2/CameraCaptureSession;)V"/> + <method name="onConfigured(Landroid/hardware/camera2/CameraCaptureSession;)V"/> + <method name="onReady(Landroid/hardware/camera2/CameraCaptureSession;)V"/> + <method name="onSurfacePrepared(Landroid/hardware/camera2/CameraCaptureSession;Landroid/view/Surface;)V" since="23"/> + </class> + <class name="android/hardware/camera2/CameraCharacteristics" since="21"> + <extends name="android/hardware/camera2/CameraMetadata"/> + <method name="<init>()V"/> + <method name="get(Landroid/hardware/camera2/CameraCharacteristics$Key;)Ljava/lang/Object;"/> + <method name="getAvailableCaptureRequestKeys()Ljava/util/List;"/> + <method name="getAvailableCaptureResultKeys()Ljava/util/List;"/> + <field name="COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES"/> + <field name="CONTROL_AE_AVAILABLE_ANTIBANDING_MODES"/> + <field name="CONTROL_AE_AVAILABLE_MODES"/> + <field name="CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES"/> + <field name="CONTROL_AE_COMPENSATION_RANGE"/> + <field name="CONTROL_AE_COMPENSATION_STEP"/> + <field name="CONTROL_AE_LOCK_AVAILABLE" since="23"/> + <field name="CONTROL_AF_AVAILABLE_MODES"/> + <field name="CONTROL_AVAILABLE_EFFECTS"/> + <field name="CONTROL_AVAILABLE_MODES" since="23"/> + <field name="CONTROL_AVAILABLE_SCENE_MODES"/> + <field name="CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES"/> + <field name="CONTROL_AWB_AVAILABLE_MODES"/> + <field name="CONTROL_AWB_LOCK_AVAILABLE" since="23"/> + <field name="CONTROL_MAX_REGIONS_AE"/> + <field name="CONTROL_MAX_REGIONS_AF"/> + <field name="CONTROL_MAX_REGIONS_AWB"/> + <field name="CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE" since="24"/> + <field name="DEPTH_DEPTH_IS_EXCLUSIVE" since="23"/> + <field name="EDGE_AVAILABLE_EDGE_MODES"/> + <field name="FLASH_INFO_AVAILABLE"/> + <field name="HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES"/> + <field name="INFO_SUPPORTED_HARDWARE_LEVEL"/> + <field name="JPEG_AVAILABLE_THUMBNAIL_SIZES"/> + <field name="LENS_FACING"/> + <field name="LENS_INFO_AVAILABLE_APERTURES"/> + <field name="LENS_INFO_AVAILABLE_FILTER_DENSITIES"/> + <field name="LENS_INFO_AVAILABLE_FOCAL_LENGTHS"/> + <field name="LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION"/> + <field name="LENS_INFO_FOCUS_DISTANCE_CALIBRATION"/> + <field name="LENS_INFO_HYPERFOCAL_DISTANCE"/> + <field name="LENS_INFO_MINIMUM_FOCUS_DISTANCE"/> + <field name="LENS_INTRINSIC_CALIBRATION" since="23"/> + <field name="LENS_POSE_ROTATION" since="23"/> + <field name="LENS_POSE_TRANSLATION" since="23"/> + <field name="LENS_RADIAL_DISTORTION" since="23"/> + <field name="NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES"/> + <field name="REPROCESS_MAX_CAPTURE_STALL" since="23"/> + <field name="REQUEST_AVAILABLE_CAPABILITIES"/> + <field name="REQUEST_MAX_NUM_INPUT_STREAMS" since="23"/> + <field name="REQUEST_MAX_NUM_OUTPUT_PROC"/> + <field name="REQUEST_MAX_NUM_OUTPUT_PROC_STALLING"/> + <field name="REQUEST_MAX_NUM_OUTPUT_RAW"/> + <field name="REQUEST_PARTIAL_RESULT_COUNT"/> + <field name="REQUEST_PIPELINE_MAX_DEPTH"/> + <field name="SCALER_AVAILABLE_MAX_DIGITAL_ZOOM"/> + <field name="SCALER_CROPPING_TYPE"/> + <field name="SCALER_STREAM_CONFIGURATION_MAP"/> + <field name="SENSOR_AVAILABLE_TEST_PATTERN_MODES"/> + <field name="SENSOR_BLACK_LEVEL_PATTERN"/> + <field name="SENSOR_CALIBRATION_TRANSFORM1"/> + <field name="SENSOR_CALIBRATION_TRANSFORM2"/> + <field name="SENSOR_COLOR_TRANSFORM1"/> + <field name="SENSOR_COLOR_TRANSFORM2"/> + <field name="SENSOR_FORWARD_MATRIX1"/> + <field name="SENSOR_FORWARD_MATRIX2"/> + <field name="SENSOR_INFO_ACTIVE_ARRAY_SIZE"/> + <field name="SENSOR_INFO_COLOR_FILTER_ARRANGEMENT"/> + <field name="SENSOR_INFO_EXPOSURE_TIME_RANGE"/> + <field name="SENSOR_INFO_LENS_SHADING_APPLIED" since="23"/> + <field name="SENSOR_INFO_MAX_FRAME_DURATION"/> + <field name="SENSOR_INFO_PHYSICAL_SIZE"/> + <field name="SENSOR_INFO_PIXEL_ARRAY_SIZE"/> + <field name="SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE" since="23"/> + <field name="SENSOR_INFO_SENSITIVITY_RANGE"/> + <field name="SENSOR_INFO_TIMESTAMP_SOURCE"/> + <field name="SENSOR_INFO_WHITE_LEVEL"/> + <field name="SENSOR_MAX_ANALOG_SENSITIVITY"/> + <field name="SENSOR_OPTICAL_BLACK_REGIONS" since="24"/> + <field name="SENSOR_ORIENTATION"/> + <field name="SENSOR_REFERENCE_ILLUMINANT1"/> + <field name="SENSOR_REFERENCE_ILLUMINANT2"/> + <field name="SHADING_AVAILABLE_MODES" since="23"/> + <field name="STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES"/> + <field name="STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES"/> + <field name="STATISTICS_INFO_AVAILABLE_LENS_SHADING_MAP_MODES" since="23"/> + <field name="STATISTICS_INFO_MAX_FACE_COUNT"/> + <field name="SYNC_MAX_LATENCY"/> + <field name="TONEMAP_AVAILABLE_TONE_MAP_MODES"/> + <field name="TONEMAP_MAX_CURVE_POINTS"/> + </class> + <class name="android/hardware/camera2/CameraCharacteristics$Key" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getName()Ljava/lang/String;"/> + </class> + <class name="android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession" since="23"> + <extends name="android/hardware/camera2/CameraCaptureSession"/> + <method name="<init>()V"/> + <method name="createHighSpeedRequestList(Landroid/hardware/camera2/CaptureRequest;)Ljava/util/List;"/> + </class> + <class name="android/hardware/camera2/CameraDevice" since="21"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable"/> + <method name="<init>()V"/> + <method name="createCaptureRequest(I)Landroid/hardware/camera2/CaptureRequest$Builder;"/> + <method name="createCaptureSession(Ljava/util/List;Landroid/hardware/camera2/CameraCaptureSession$StateCallback;Landroid/os/Handler;)V"/> + <method name="createCaptureSessionByOutputConfigurations(Ljava/util/List;Landroid/hardware/camera2/CameraCaptureSession$StateCallback;Landroid/os/Handler;)V" since="24"/> + <method name="createConstrainedHighSpeedCaptureSession(Ljava/util/List;Landroid/hardware/camera2/CameraCaptureSession$StateCallback;Landroid/os/Handler;)V" since="23"/> + <method name="createReprocessCaptureRequest(Landroid/hardware/camera2/TotalCaptureResult;)Landroid/hardware/camera2/CaptureRequest$Builder;" since="23"/> + <method name="createReprocessableCaptureSession(Landroid/hardware/camera2/params/InputConfiguration;Ljava/util/List;Landroid/hardware/camera2/CameraCaptureSession$StateCallback;Landroid/os/Handler;)V" since="23"/> + <method name="createReprocessableCaptureSessionByConfigurations(Landroid/hardware/camera2/params/InputConfiguration;Ljava/util/List;Landroid/hardware/camera2/CameraCaptureSession$StateCallback;Landroid/os/Handler;)V" since="24"/> + <method name="getId()Ljava/lang/String;"/> + <field name="TEMPLATE_MANUAL"/> + <field name="TEMPLATE_PREVIEW"/> + <field name="TEMPLATE_RECORD"/> + <field name="TEMPLATE_STILL_CAPTURE"/> + <field name="TEMPLATE_VIDEO_SNAPSHOT"/> + <field name="TEMPLATE_ZERO_SHUTTER_LAG"/> + </class> + <class name="android/hardware/camera2/CameraDevice$StateCallback" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onClosed(Landroid/hardware/camera2/CameraDevice;)V"/> + <method name="onDisconnected(Landroid/hardware/camera2/CameraDevice;)V"/> + <method name="onError(Landroid/hardware/camera2/CameraDevice;I)V"/> + <method name="onOpened(Landroid/hardware/camera2/CameraDevice;)V"/> + <field name="ERROR_CAMERA_DEVICE"/> + <field name="ERROR_CAMERA_DISABLED"/> + <field name="ERROR_CAMERA_IN_USE"/> + <field name="ERROR_CAMERA_SERVICE"/> + <field name="ERROR_MAX_CAMERAS_IN_USE"/> + </class> + <class name="android/hardware/camera2/CameraManager" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getCameraCharacteristics(Ljava/lang/String;)Landroid/hardware/camera2/CameraCharacteristics;"/> + <method name="getCameraIdList()[Ljava/lang/String;"/> + <method name="openCamera(Ljava/lang/String;Landroid/hardware/camera2/CameraDevice$StateCallback;Landroid/os/Handler;)V"/> + <method name="registerAvailabilityCallback(Landroid/hardware/camera2/CameraManager$AvailabilityCallback;Landroid/os/Handler;)V"/> + <method name="registerTorchCallback(Landroid/hardware/camera2/CameraManager$TorchCallback;Landroid/os/Handler;)V" since="23"/> + <method name="setTorchMode(Ljava/lang/String;Z)V" since="23"/> + <method name="unregisterAvailabilityCallback(Landroid/hardware/camera2/CameraManager$AvailabilityCallback;)V"/> + <method name="unregisterTorchCallback(Landroid/hardware/camera2/CameraManager$TorchCallback;)V" since="23"/> + </class> + <class name="android/hardware/camera2/CameraManager$AvailabilityCallback" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onCameraAvailable(Ljava/lang/String;)V"/> + <method name="onCameraUnavailable(Ljava/lang/String;)V"/> + </class> + <class name="android/hardware/camera2/CameraManager$TorchCallback" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onTorchModeChanged(Ljava/lang/String;Z)V"/> + <method name="onTorchModeUnavailable(Ljava/lang/String;)V"/> + </class> + <class name="android/hardware/camera2/CameraMetadata" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getKeys()Ljava/util/List;"/> + <field name="COLOR_CORRECTION_ABERRATION_MODE_FAST"/> + <field name="COLOR_CORRECTION_ABERRATION_MODE_HIGH_QUALITY"/> + <field name="COLOR_CORRECTION_ABERRATION_MODE_OFF"/> + <field name="COLOR_CORRECTION_MODE_FAST"/> + <field name="COLOR_CORRECTION_MODE_HIGH_QUALITY"/> + <field name="COLOR_CORRECTION_MODE_TRANSFORM_MATRIX"/> + <field name="CONTROL_AE_ANTIBANDING_MODE_50HZ"/> + <field name="CONTROL_AE_ANTIBANDING_MODE_60HZ"/> + <field name="CONTROL_AE_ANTIBANDING_MODE_AUTO"/> + <field name="CONTROL_AE_ANTIBANDING_MODE_OFF"/> + <field name="CONTROL_AE_MODE_OFF"/> + <field name="CONTROL_AE_MODE_ON"/> + <field name="CONTROL_AE_MODE_ON_ALWAYS_FLASH"/> + <field name="CONTROL_AE_MODE_ON_AUTO_FLASH"/> + <field name="CONTROL_AE_MODE_ON_AUTO_FLASH_REDEYE"/> + <field name="CONTROL_AE_PRECAPTURE_TRIGGER_CANCEL" since="23"/> + <field name="CONTROL_AE_PRECAPTURE_TRIGGER_IDLE"/> + <field name="CONTROL_AE_PRECAPTURE_TRIGGER_START"/> + <field name="CONTROL_AE_STATE_CONVERGED"/> + <field name="CONTROL_AE_STATE_FLASH_REQUIRED"/> + <field name="CONTROL_AE_STATE_INACTIVE"/> + <field name="CONTROL_AE_STATE_LOCKED"/> + <field name="CONTROL_AE_STATE_PRECAPTURE"/> + <field name="CONTROL_AE_STATE_SEARCHING"/> + <field name="CONTROL_AF_MODE_AUTO"/> + <field name="CONTROL_AF_MODE_CONTINUOUS_PICTURE"/> + <field name="CONTROL_AF_MODE_CONTINUOUS_VIDEO"/> + <field name="CONTROL_AF_MODE_EDOF"/> + <field name="CONTROL_AF_MODE_MACRO"/> + <field name="CONTROL_AF_MODE_OFF"/> + <field name="CONTROL_AF_STATE_ACTIVE_SCAN"/> + <field name="CONTROL_AF_STATE_FOCUSED_LOCKED"/> + <field name="CONTROL_AF_STATE_INACTIVE"/> + <field name="CONTROL_AF_STATE_NOT_FOCUSED_LOCKED"/> + <field name="CONTROL_AF_STATE_PASSIVE_FOCUSED"/> + <field name="CONTROL_AF_STATE_PASSIVE_SCAN"/> + <field name="CONTROL_AF_STATE_PASSIVE_UNFOCUSED"/> + <field name="CONTROL_AF_TRIGGER_CANCEL"/> + <field name="CONTROL_AF_TRIGGER_IDLE"/> + <field name="CONTROL_AF_TRIGGER_START"/> + <field name="CONTROL_AWB_MODE_AUTO"/> + <field name="CONTROL_AWB_MODE_CLOUDY_DAYLIGHT"/> + <field name="CONTROL_AWB_MODE_DAYLIGHT"/> + <field name="CONTROL_AWB_MODE_FLUORESCENT"/> + <field name="CONTROL_AWB_MODE_INCANDESCENT"/> + <field name="CONTROL_AWB_MODE_OFF"/> + <field name="CONTROL_AWB_MODE_SHADE"/> + <field name="CONTROL_AWB_MODE_TWILIGHT"/> + <field name="CONTROL_AWB_MODE_WARM_FLUORESCENT"/> + <field name="CONTROL_AWB_STATE_CONVERGED"/> + <field name="CONTROL_AWB_STATE_INACTIVE"/> + <field name="CONTROL_AWB_STATE_LOCKED"/> + <field name="CONTROL_AWB_STATE_SEARCHING"/> + <field name="CONTROL_CAPTURE_INTENT_CUSTOM"/> + <field name="CONTROL_CAPTURE_INTENT_MANUAL"/> + <field name="CONTROL_CAPTURE_INTENT_PREVIEW"/> + <field name="CONTROL_CAPTURE_INTENT_STILL_CAPTURE"/> + <field name="CONTROL_CAPTURE_INTENT_VIDEO_RECORD"/> + <field name="CONTROL_CAPTURE_INTENT_VIDEO_SNAPSHOT"/> + <field name="CONTROL_CAPTURE_INTENT_ZERO_SHUTTER_LAG"/> + <field name="CONTROL_EFFECT_MODE_AQUA"/> + <field name="CONTROL_EFFECT_MODE_BLACKBOARD"/> + <field name="CONTROL_EFFECT_MODE_MONO"/> + <field name="CONTROL_EFFECT_MODE_NEGATIVE"/> + <field name="CONTROL_EFFECT_MODE_OFF"/> + <field name="CONTROL_EFFECT_MODE_POSTERIZE"/> + <field name="CONTROL_EFFECT_MODE_SEPIA"/> + <field name="CONTROL_EFFECT_MODE_SOLARIZE"/> + <field name="CONTROL_EFFECT_MODE_WHITEBOARD"/> + <field name="CONTROL_MODE_AUTO"/> + <field name="CONTROL_MODE_OFF"/> + <field name="CONTROL_MODE_OFF_KEEP_STATE"/> + <field name="CONTROL_MODE_USE_SCENE_MODE"/> + <field name="CONTROL_SCENE_MODE_ACTION"/> + <field name="CONTROL_SCENE_MODE_BARCODE"/> + <field name="CONTROL_SCENE_MODE_BEACH"/> + <field name="CONTROL_SCENE_MODE_CANDLELIGHT"/> + <field name="CONTROL_SCENE_MODE_DISABLED"/> + <field name="CONTROL_SCENE_MODE_FACE_PRIORITY"/> + <field name="CONTROL_SCENE_MODE_FIREWORKS"/> + <field name="CONTROL_SCENE_MODE_HDR" since="22"/> + <field name="CONTROL_SCENE_MODE_HIGH_SPEED_VIDEO" deprecated="23"/> + <field name="CONTROL_SCENE_MODE_LANDSCAPE"/> + <field name="CONTROL_SCENE_MODE_NIGHT"/> + <field name="CONTROL_SCENE_MODE_NIGHT_PORTRAIT"/> + <field name="CONTROL_SCENE_MODE_PARTY"/> + <field name="CONTROL_SCENE_MODE_PORTRAIT"/> + <field name="CONTROL_SCENE_MODE_SNOW"/> + <field name="CONTROL_SCENE_MODE_SPORTS"/> + <field name="CONTROL_SCENE_MODE_STEADYPHOTO"/> + <field name="CONTROL_SCENE_MODE_SUNSET"/> + <field name="CONTROL_SCENE_MODE_THEATRE"/> + <field name="CONTROL_VIDEO_STABILIZATION_MODE_OFF"/> + <field name="CONTROL_VIDEO_STABILIZATION_MODE_ON"/> + <field name="EDGE_MODE_FAST"/> + <field name="EDGE_MODE_HIGH_QUALITY"/> + <field name="EDGE_MODE_OFF"/> + <field name="EDGE_MODE_ZERO_SHUTTER_LAG" since="23"/> + <field name="FLASH_MODE_OFF"/> + <field name="FLASH_MODE_SINGLE"/> + <field name="FLASH_MODE_TORCH"/> + <field name="FLASH_STATE_CHARGING"/> + <field name="FLASH_STATE_FIRED"/> + <field name="FLASH_STATE_PARTIAL"/> + <field name="FLASH_STATE_READY"/> + <field name="FLASH_STATE_UNAVAILABLE"/> + <field name="HOT_PIXEL_MODE_FAST"/> + <field name="HOT_PIXEL_MODE_HIGH_QUALITY"/> + <field name="HOT_PIXEL_MODE_OFF"/> + <field name="INFO_SUPPORTED_HARDWARE_LEVEL_3" since="24"/> + <field name="INFO_SUPPORTED_HARDWARE_LEVEL_FULL"/> + <field name="INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY"/> + <field name="INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED"/> + <field name="LENS_FACING_BACK"/> + <field name="LENS_FACING_EXTERNAL" since="23"/> + <field name="LENS_FACING_FRONT"/> + <field name="LENS_INFO_FOCUS_DISTANCE_CALIBRATION_APPROXIMATE"/> + <field name="LENS_INFO_FOCUS_DISTANCE_CALIBRATION_CALIBRATED"/> + <field name="LENS_INFO_FOCUS_DISTANCE_CALIBRATION_UNCALIBRATED"/> + <field name="LENS_OPTICAL_STABILIZATION_MODE_OFF"/> + <field name="LENS_OPTICAL_STABILIZATION_MODE_ON"/> + <field name="LENS_STATE_MOVING"/> + <field name="LENS_STATE_STATIONARY"/> + <field name="NOISE_REDUCTION_MODE_FAST"/> + <field name="NOISE_REDUCTION_MODE_HIGH_QUALITY"/> + <field name="NOISE_REDUCTION_MODE_MINIMAL" since="23"/> + <field name="NOISE_REDUCTION_MODE_OFF"/> + <field name="NOISE_REDUCTION_MODE_ZERO_SHUTTER_LAG" since="23"/> + <field name="REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE"/> + <field name="REQUEST_AVAILABLE_CAPABILITIES_BURST_CAPTURE" since="22"/> + <field name="REQUEST_AVAILABLE_CAPABILITIES_CONSTRAINED_HIGH_SPEED_VIDEO" since="23"/> + <field name="REQUEST_AVAILABLE_CAPABILITIES_DEPTH_OUTPUT" since="23"/> + <field name="REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING"/> + <field name="REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR"/> + <field name="REQUEST_AVAILABLE_CAPABILITIES_PRIVATE_REPROCESSING" since="23"/> + <field name="REQUEST_AVAILABLE_CAPABILITIES_RAW"/> + <field name="REQUEST_AVAILABLE_CAPABILITIES_READ_SENSOR_SETTINGS" since="22"/> + <field name="REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING" since="23"/> + <field name="SCALER_CROPPING_TYPE_CENTER_ONLY"/> + <field name="SCALER_CROPPING_TYPE_FREEFORM"/> + <field name="SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_BGGR"/> + <field name="SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GBRG"/> + <field name="SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GRBG"/> + <field name="SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGB"/> + <field name="SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGGB"/> + <field name="SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME"/> + <field name="SENSOR_INFO_TIMESTAMP_SOURCE_UNKNOWN"/> + <field name="SENSOR_REFERENCE_ILLUMINANT1_CLOUDY_WEATHER"/> + <field name="SENSOR_REFERENCE_ILLUMINANT1_COOL_WHITE_FLUORESCENT"/> + <field name="SENSOR_REFERENCE_ILLUMINANT1_D50"/> + <field name="SENSOR_REFERENCE_ILLUMINANT1_D55"/> + <field name="SENSOR_REFERENCE_ILLUMINANT1_D65"/> + <field name="SENSOR_REFERENCE_ILLUMINANT1_D75"/> + <field name="SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT"/> + <field name="SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT_FLUORESCENT"/> + <field name="SENSOR_REFERENCE_ILLUMINANT1_DAY_WHITE_FLUORESCENT"/> + <field name="SENSOR_REFERENCE_ILLUMINANT1_FINE_WEATHER"/> + <field name="SENSOR_REFERENCE_ILLUMINANT1_FLASH"/> + <field name="SENSOR_REFERENCE_ILLUMINANT1_FLUORESCENT"/> + <field name="SENSOR_REFERENCE_ILLUMINANT1_ISO_STUDIO_TUNGSTEN"/> + <field name="SENSOR_REFERENCE_ILLUMINANT1_SHADE"/> + <field name="SENSOR_REFERENCE_ILLUMINANT1_STANDARD_A"/> + <field name="SENSOR_REFERENCE_ILLUMINANT1_STANDARD_B"/> + <field name="SENSOR_REFERENCE_ILLUMINANT1_STANDARD_C"/> + <field name="SENSOR_REFERENCE_ILLUMINANT1_TUNGSTEN"/> + <field name="SENSOR_REFERENCE_ILLUMINANT1_WHITE_FLUORESCENT"/> + <field name="SENSOR_TEST_PATTERN_MODE_COLOR_BARS"/> + <field name="SENSOR_TEST_PATTERN_MODE_COLOR_BARS_FADE_TO_GRAY"/> + <field name="SENSOR_TEST_PATTERN_MODE_CUSTOM1"/> + <field name="SENSOR_TEST_PATTERN_MODE_OFF"/> + <field name="SENSOR_TEST_PATTERN_MODE_PN9"/> + <field name="SENSOR_TEST_PATTERN_MODE_SOLID_COLOR"/> + <field name="SHADING_MODE_FAST"/> + <field name="SHADING_MODE_HIGH_QUALITY"/> + <field name="SHADING_MODE_OFF"/> + <field name="STATISTICS_FACE_DETECT_MODE_FULL"/> + <field name="STATISTICS_FACE_DETECT_MODE_OFF"/> + <field name="STATISTICS_FACE_DETECT_MODE_SIMPLE"/> + <field name="STATISTICS_LENS_SHADING_MAP_MODE_OFF"/> + <field name="STATISTICS_LENS_SHADING_MAP_MODE_ON"/> + <field name="STATISTICS_SCENE_FLICKER_50HZ"/> + <field name="STATISTICS_SCENE_FLICKER_60HZ"/> + <field name="STATISTICS_SCENE_FLICKER_NONE"/> + <field name="SYNC_MAX_LATENCY_PER_FRAME_CONTROL"/> + <field name="SYNC_MAX_LATENCY_UNKNOWN"/> + <field name="TONEMAP_MODE_CONTRAST_CURVE"/> + <field name="TONEMAP_MODE_FAST"/> + <field name="TONEMAP_MODE_GAMMA_VALUE" since="23"/> + <field name="TONEMAP_MODE_HIGH_QUALITY"/> + <field name="TONEMAP_MODE_PRESET_CURVE" since="23"/> + <field name="TONEMAP_PRESET_CURVE_REC709" since="23"/> + <field name="TONEMAP_PRESET_CURVE_SRGB" since="23"/> + </class> + <class name="android/hardware/camera2/CaptureFailure" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getFrameNumber()J"/> + <method name="getReason()I"/> + <method name="getRequest()Landroid/hardware/camera2/CaptureRequest;"/> + <method name="getSequenceId()I"/> + <method name="wasImageCaptured()Z"/> + <field name="REASON_ERROR"/> + <field name="REASON_FLUSHED"/> + </class> + <class name="android/hardware/camera2/CaptureRequest" since="21"> + <extends name="android/hardware/camera2/CameraMetadata"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="get(Landroid/hardware/camera2/CaptureRequest$Key;)Ljava/lang/Object;"/> + <method name="getTag()Ljava/lang/Object;"/> + <method name="isReprocess()Z" since="23"/> + <field name="BLACK_LEVEL_LOCK"/> + <field name="COLOR_CORRECTION_ABERRATION_MODE"/> + <field name="COLOR_CORRECTION_GAINS"/> + <field name="COLOR_CORRECTION_MODE"/> + <field name="COLOR_CORRECTION_TRANSFORM"/> + <field name="CONTROL_AE_ANTIBANDING_MODE"/> + <field name="CONTROL_AE_EXPOSURE_COMPENSATION"/> + <field name="CONTROL_AE_LOCK"/> + <field name="CONTROL_AE_MODE"/> + <field name="CONTROL_AE_PRECAPTURE_TRIGGER"/> + <field name="CONTROL_AE_REGIONS"/> + <field name="CONTROL_AE_TARGET_FPS_RANGE"/> + <field name="CONTROL_AF_MODE"/> + <field name="CONTROL_AF_REGIONS"/> + <field name="CONTROL_AF_TRIGGER"/> + <field name="CONTROL_AWB_LOCK"/> + <field name="CONTROL_AWB_MODE"/> + <field name="CONTROL_AWB_REGIONS"/> + <field name="CONTROL_CAPTURE_INTENT"/> + <field name="CONTROL_EFFECT_MODE"/> + <field name="CONTROL_ENABLE_ZSL" since="26"/> + <field name="CONTROL_MODE"/> + <field name="CONTROL_POST_RAW_SENSITIVITY_BOOST" since="24"/> + <field name="CONTROL_SCENE_MODE"/> + <field name="CONTROL_VIDEO_STABILIZATION_MODE"/> + <field name="CREATOR"/> + <field name="EDGE_MODE"/> + <field name="FLASH_MODE"/> + <field name="HOT_PIXEL_MODE"/> + <field name="JPEG_GPS_LOCATION"/> + <field name="JPEG_ORIENTATION"/> + <field name="JPEG_QUALITY"/> + <field name="JPEG_THUMBNAIL_QUALITY"/> + <field name="JPEG_THUMBNAIL_SIZE"/> + <field name="LENS_APERTURE"/> + <field name="LENS_FILTER_DENSITY"/> + <field name="LENS_FOCAL_LENGTH"/> + <field name="LENS_FOCUS_DISTANCE"/> + <field name="LENS_OPTICAL_STABILIZATION_MODE"/> + <field name="NOISE_REDUCTION_MODE"/> + <field name="REPROCESS_EFFECTIVE_EXPOSURE_FACTOR" since="23"/> + <field name="SCALER_CROP_REGION"/> + <field name="SENSOR_EXPOSURE_TIME"/> + <field name="SENSOR_FRAME_DURATION"/> + <field name="SENSOR_SENSITIVITY"/> + <field name="SENSOR_TEST_PATTERN_DATA"/> + <field name="SENSOR_TEST_PATTERN_MODE"/> + <field name="SHADING_MODE"/> + <field name="STATISTICS_FACE_DETECT_MODE"/> + <field name="STATISTICS_HOT_PIXEL_MAP_MODE"/> + <field name="STATISTICS_LENS_SHADING_MAP_MODE"/> + <field name="TONEMAP_CURVE"/> + <field name="TONEMAP_GAMMA" since="23"/> + <field name="TONEMAP_MODE"/> + <field name="TONEMAP_PRESET_CURVE" since="23"/> + </class> + <class name="android/hardware/camera2/CaptureRequest$Builder" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addTarget(Landroid/view/Surface;)V"/> + <method name="build()Landroid/hardware/camera2/CaptureRequest;"/> + <method name="get(Landroid/hardware/camera2/CaptureRequest$Key;)Ljava/lang/Object;"/> + <method name="removeTarget(Landroid/view/Surface;)V"/> + <method name="set(Landroid/hardware/camera2/CaptureRequest$Key;Ljava/lang/Object;)V"/> + <method name="setTag(Ljava/lang/Object;)V"/> + </class> + <class name="android/hardware/camera2/CaptureRequest$Key" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getName()Ljava/lang/String;"/> + </class> + <class name="android/hardware/camera2/CaptureResult" since="21"> + <extends name="android/hardware/camera2/CameraMetadata"/> + <method name="<init>()V"/> + <method name="get(Landroid/hardware/camera2/CaptureResult$Key;)Ljava/lang/Object;"/> + <method name="getFrameNumber()J"/> + <method name="getRequest()Landroid/hardware/camera2/CaptureRequest;"/> + <method name="getSequenceId()I"/> + <field name="BLACK_LEVEL_LOCK"/> + <field name="COLOR_CORRECTION_ABERRATION_MODE"/> + <field name="COLOR_CORRECTION_GAINS"/> + <field name="COLOR_CORRECTION_MODE"/> + <field name="COLOR_CORRECTION_TRANSFORM"/> + <field name="CONTROL_AE_ANTIBANDING_MODE"/> + <field name="CONTROL_AE_EXPOSURE_COMPENSATION"/> + <field name="CONTROL_AE_LOCK"/> + <field name="CONTROL_AE_MODE"/> + <field name="CONTROL_AE_PRECAPTURE_TRIGGER"/> + <field name="CONTROL_AE_REGIONS"/> + <field name="CONTROL_AE_STATE"/> + <field name="CONTROL_AE_TARGET_FPS_RANGE"/> + <field name="CONTROL_AF_MODE"/> + <field name="CONTROL_AF_REGIONS"/> + <field name="CONTROL_AF_STATE"/> + <field name="CONTROL_AF_TRIGGER"/> + <field name="CONTROL_AWB_LOCK"/> + <field name="CONTROL_AWB_MODE"/> + <field name="CONTROL_AWB_REGIONS"/> + <field name="CONTROL_AWB_STATE"/> + <field name="CONTROL_CAPTURE_INTENT"/> + <field name="CONTROL_EFFECT_MODE"/> + <field name="CONTROL_ENABLE_ZSL" since="26"/> + <field name="CONTROL_MODE"/> + <field name="CONTROL_POST_RAW_SENSITIVITY_BOOST" since="24"/> + <field name="CONTROL_SCENE_MODE"/> + <field name="CONTROL_VIDEO_STABILIZATION_MODE"/> + <field name="EDGE_MODE"/> + <field name="FLASH_MODE"/> + <field name="FLASH_STATE"/> + <field name="HOT_PIXEL_MODE"/> + <field name="JPEG_GPS_LOCATION"/> + <field name="JPEG_ORIENTATION"/> + <field name="JPEG_QUALITY"/> + <field name="JPEG_THUMBNAIL_QUALITY"/> + <field name="JPEG_THUMBNAIL_SIZE"/> + <field name="LENS_APERTURE"/> + <field name="LENS_FILTER_DENSITY"/> + <field name="LENS_FOCAL_LENGTH"/> + <field name="LENS_FOCUS_DISTANCE"/> + <field name="LENS_FOCUS_RANGE"/> + <field name="LENS_INTRINSIC_CALIBRATION" since="23"/> + <field name="LENS_OPTICAL_STABILIZATION_MODE"/> + <field name="LENS_POSE_ROTATION" since="23"/> + <field name="LENS_POSE_TRANSLATION" since="23"/> + <field name="LENS_RADIAL_DISTORTION" since="23"/> + <field name="LENS_STATE"/> + <field name="NOISE_REDUCTION_MODE"/> + <field name="REPROCESS_EFFECTIVE_EXPOSURE_FACTOR" since="23"/> + <field name="REQUEST_PIPELINE_DEPTH"/> + <field name="SCALER_CROP_REGION"/> + <field name="SENSOR_DYNAMIC_BLACK_LEVEL" since="24"/> + <field name="SENSOR_DYNAMIC_WHITE_LEVEL" since="24"/> + <field name="SENSOR_EXPOSURE_TIME"/> + <field name="SENSOR_FRAME_DURATION"/> + <field name="SENSOR_GREEN_SPLIT"/> + <field name="SENSOR_NEUTRAL_COLOR_POINT"/> + <field name="SENSOR_NOISE_PROFILE"/> + <field name="SENSOR_ROLLING_SHUTTER_SKEW"/> + <field name="SENSOR_SENSITIVITY"/> + <field name="SENSOR_TEST_PATTERN_DATA"/> + <field name="SENSOR_TEST_PATTERN_MODE"/> + <field name="SENSOR_TIMESTAMP"/> + <field name="SHADING_MODE"/> + <field name="STATISTICS_FACES"/> + <field name="STATISTICS_FACE_DETECT_MODE"/> + <field name="STATISTICS_HOT_PIXEL_MAP"/> + <field name="STATISTICS_HOT_PIXEL_MAP_MODE"/> + <field name="STATISTICS_LENS_SHADING_CORRECTION_MAP"/> + <field name="STATISTICS_LENS_SHADING_MAP_MODE"/> + <field name="STATISTICS_SCENE_FLICKER"/> + <field name="TONEMAP_CURVE"/> + <field name="TONEMAP_GAMMA" since="23"/> + <field name="TONEMAP_MODE"/> + <field name="TONEMAP_PRESET_CURVE" since="23"/> + </class> + <class name="android/hardware/camera2/CaptureResult$Key" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getName()Ljava/lang/String;"/> + </class> + <class name="android/hardware/camera2/DngCreator" since="21"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable"/> + <method name="<init>(Landroid/hardware/camera2/CameraCharacteristics;Landroid/hardware/camera2/CaptureResult;)V"/> + <method name="setDescription(Ljava/lang/String;)Landroid/hardware/camera2/DngCreator;"/> + <method name="setLocation(Landroid/location/Location;)Landroid/hardware/camera2/DngCreator;"/> + <method name="setOrientation(I)Landroid/hardware/camera2/DngCreator;"/> + <method name="setThumbnail(Landroid/graphics/Bitmap;)Landroid/hardware/camera2/DngCreator;"/> + <method name="setThumbnail(Landroid/media/Image;)Landroid/hardware/camera2/DngCreator;"/> + <method name="writeByteBuffer(Ljava/io/OutputStream;Landroid/util/Size;Ljava/nio/ByteBuffer;J)V"/> + <method name="writeImage(Ljava/io/OutputStream;Landroid/media/Image;)V"/> + <method name="writeInputStream(Ljava/io/OutputStream;Landroid/util/Size;Ljava/io/InputStream;J)V"/> + <field name="MAX_THUMBNAIL_DIMENSION"/> + </class> + <class name="android/hardware/camera2/TotalCaptureResult" since="21"> + <extends name="android/hardware/camera2/CaptureResult"/> + <method name="<init>()V"/> + <method name="getPartialResults()Ljava/util/List;"/> + </class> + <class name="android/hardware/camera2/params/BlackLevelPattern" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="copyTo([II)V"/> + <method name="getOffsetForIndex(II)I"/> + <field name="COUNT"/> + </class> + <class name="android/hardware/camera2/params/ColorSpaceTransform" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>([I)V"/> + <method name="<init>([Landroid/util/Rational;)V"/> + <method name="copyElements([II)V"/> + <method name="copyElements([Landroid/util/Rational;I)V"/> + <method name="getElement(II)Landroid/util/Rational;"/> + </class> + <class name="android/hardware/camera2/params/Face" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getBounds()Landroid/graphics/Rect;"/> + <method name="getId()I"/> + <method name="getLeftEyePosition()Landroid/graphics/Point;"/> + <method name="getMouthPosition()Landroid/graphics/Point;"/> + <method name="getRightEyePosition()Landroid/graphics/Point;"/> + <method name="getScore()I"/> + <field name="ID_UNSUPPORTED"/> + <field name="SCORE_MAX"/> + <field name="SCORE_MIN"/> + </class> + <class name="android/hardware/camera2/params/InputConfiguration" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>(III)V"/> + <method name="getFormat()I"/> + <method name="getHeight()I"/> + <method name="getWidth()I"/> + </class> + <class name="android/hardware/camera2/params/LensShadingMap" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="copyGainFactors([FI)V"/> + <method name="getColumnCount()I"/> + <method name="getGainFactor(III)F"/> + <method name="getGainFactorCount()I"/> + <method name="getGainFactorVector(II)Landroid/hardware/camera2/params/RggbChannelVector;"/> + <method name="getRowCount()I"/> + <field name="MINIMUM_GAIN_FACTOR"/> + </class> + <class name="android/hardware/camera2/params/MeteringRectangle" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(IIIII)V"/> + <method name="<init>(Landroid/graphics/Point;Landroid/util/Size;I)V"/> + <method name="<init>(Landroid/graphics/Rect;I)V"/> + <method name="equals(Landroid/hardware/camera2/params/MeteringRectangle;)Z"/> + <method name="getHeight()I"/> + <method name="getMeteringWeight()I"/> + <method name="getRect()Landroid/graphics/Rect;"/> + <method name="getSize()Landroid/util/Size;"/> + <method name="getUpperLeftPoint()Landroid/graphics/Point;"/> + <method name="getWidth()I"/> + <method name="getX()I"/> + <method name="getY()I"/> + <field name="METERING_WEIGHT_DONT_CARE"/> + <field name="METERING_WEIGHT_MAX"/> + <field name="METERING_WEIGHT_MIN"/> + </class> + <class name="android/hardware/camera2/params/OutputConfiguration" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(ILandroid/view/Surface;)V"/> + <method name="<init>(Landroid/util/Size;Ljava/lang/Class;)V" since="26"/> + <method name="<init>(Landroid/view/Surface;)V"/> + <method name="addSurface(Landroid/view/Surface;)V" since="26"/> + <method name="enableSurfaceSharing()V" since="26"/> + <method name="getSurface()Landroid/view/Surface;"/> + <method name="getSurfaceGroupId()I"/> + <method name="getSurfaces()Ljava/util/List;" since="26"/> + <field name="CREATOR"/> + <field name="SURFACE_GROUP_ID_NONE"/> + </class> + <class name="android/hardware/camera2/params/RggbChannelVector" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(FFFF)V"/> + <method name="copyTo([FI)V"/> + <method name="getBlue()F"/> + <method name="getComponent(I)F"/> + <method name="getGreenEven()F"/> + <method name="getGreenOdd()F"/> + <method name="getRed()F"/> + <field name="BLUE"/> + <field name="COUNT"/> + <field name="GREEN_EVEN"/> + <field name="GREEN_ODD"/> + <field name="RED"/> + </class> + <class name="android/hardware/camera2/params/StreamConfigurationMap" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getHighResolutionOutputSizes(I)[Landroid/util/Size;" since="23"/> + <method name="getHighSpeedVideoFpsRanges()[Landroid/util/Range;"/> + <method name="getHighSpeedVideoFpsRangesFor(Landroid/util/Size;)[Landroid/util/Range;"/> + <method name="getHighSpeedVideoSizes()[Landroid/util/Size;"/> + <method name="getHighSpeedVideoSizesFor(Landroid/util/Range;)[Landroid/util/Size;"/> + <method name="getInputFormats()[I" since="23"/> + <method name="getInputSizes(I)[Landroid/util/Size;" since="23"/> + <method name="getOutputFormats()[I"/> + <method name="getOutputMinFrameDuration(ILandroid/util/Size;)J"/> + <method name="getOutputMinFrameDuration(Ljava/lang/Class;Landroid/util/Size;)J"/> + <method name="getOutputSizes(I)[Landroid/util/Size;"/> + <method name="getOutputSizes(Ljava/lang/Class;)[Landroid/util/Size;"/> + <method name="getOutputStallDuration(ILandroid/util/Size;)J"/> + <method name="getOutputStallDuration(Ljava/lang/Class;Landroid/util/Size;)J"/> + <method name="getValidOutputFormatsForInput(I)[I" since="23"/> + <method name="isOutputSupportedFor(I)Z"/> + <method name="isOutputSupportedFor(Landroid/view/Surface;)Z"/> + <method name="isOutputSupportedFor(Ljava/lang/Class;)Z"/> + </class> + <class name="android/hardware/camera2/params/TonemapCurve" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>([F[F[F)V"/> + <method name="copyColorCurve(I[FI)V"/> + <method name="getPoint(II)Landroid/graphics/PointF;"/> + <method name="getPointCount(I)I"/> + <field name="CHANNEL_BLUE"/> + <field name="CHANNEL_GREEN"/> + <field name="CHANNEL_RED"/> + <field name="LEVEL_BLACK"/> + <field name="LEVEL_WHITE"/> + <field name="POINT_SIZE"/> + </class> + <class name="android/hardware/display/DisplayManager" since="17"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="createVirtualDisplay(Ljava/lang/String;IIILandroid/view/Surface;I)Landroid/hardware/display/VirtualDisplay;" since="19"/> + <method name="createVirtualDisplay(Ljava/lang/String;IIILandroid/view/Surface;ILandroid/hardware/display/VirtualDisplay$Callback;Landroid/os/Handler;)Landroid/hardware/display/VirtualDisplay;" since="21"/> + <method name="getDisplay(I)Landroid/view/Display;"/> + <method name="getDisplays()[Landroid/view/Display;"/> + <method name="getDisplays(Ljava/lang/String;)[Landroid/view/Display;"/> + <method name="registerDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;Landroid/os/Handler;)V"/> + <method name="unregisterDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;)V"/> + <field name="DISPLAY_CATEGORY_PRESENTATION"/> + <field name="VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR" since="21"/> + <field name="VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY" since="20"/> + <field name="VIRTUAL_DISPLAY_FLAG_PRESENTATION" since="19"/> + <field name="VIRTUAL_DISPLAY_FLAG_PUBLIC" since="19"/> + <field name="VIRTUAL_DISPLAY_FLAG_SECURE" since="19"/> + </class> + <class name="android/hardware/display/DisplayManager$DisplayListener" since="17"> + <extends name="java/lang/Object"/> + <method name="onDisplayAdded(I)V"/> + <method name="onDisplayChanged(I)V"/> + <method name="onDisplayRemoved(I)V"/> + </class> + <class name="android/hardware/display/VirtualDisplay" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getDisplay()Landroid/view/Display;"/> + <method name="getSurface()Landroid/view/Surface;" since="20"/> + <method name="release()V"/> + <method name="resize(III)V" since="21"/> + <method name="setSurface(Landroid/view/Surface;)V" since="20"/> + </class> + <class name="android/hardware/display/VirtualDisplay$Callback" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onPaused()V"/> + <method name="onResumed()V"/> + <method name="onStopped()V"/> + </class> + <class name="android/hardware/fingerprint/FingerprintManager" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="authenticate(Landroid/hardware/fingerprint/FingerprintManager$CryptoObject;Landroid/os/CancellationSignal;ILandroid/hardware/fingerprint/FingerprintManager$AuthenticationCallback;Landroid/os/Handler;)V"/> + <method name="hasEnrolledFingerprints()Z"/> + <method name="isHardwareDetected()Z"/> + <field name="FINGERPRINT_ACQUIRED_GOOD"/> + <field name="FINGERPRINT_ACQUIRED_IMAGER_DIRTY"/> + <field name="FINGERPRINT_ACQUIRED_INSUFFICIENT"/> + <field name="FINGERPRINT_ACQUIRED_PARTIAL"/> + <field name="FINGERPRINT_ACQUIRED_TOO_FAST"/> + <field name="FINGERPRINT_ACQUIRED_TOO_SLOW"/> + <field name="FINGERPRINT_ERROR_CANCELED"/> + <field name="FINGERPRINT_ERROR_HW_UNAVAILABLE"/> + <field name="FINGERPRINT_ERROR_LOCKOUT"/> + <field name="FINGERPRINT_ERROR_NO_SPACE"/> + <field name="FINGERPRINT_ERROR_TIMEOUT"/> + <field name="FINGERPRINT_ERROR_UNABLE_TO_PROCESS"/> + </class> + <class name="android/hardware/fingerprint/FingerprintManager$AuthenticationCallback" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onAuthenticationError(ILjava/lang/CharSequence;)V"/> + <method name="onAuthenticationFailed()V"/> + <method name="onAuthenticationHelp(ILjava/lang/CharSequence;)V"/> + <method name="onAuthenticationSucceeded(Landroid/hardware/fingerprint/FingerprintManager$AuthenticationResult;)V"/> + </class> + <class name="android/hardware/fingerprint/FingerprintManager$AuthenticationResult" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getCryptoObject()Landroid/hardware/fingerprint/FingerprintManager$CryptoObject;"/> + </class> + <class name="android/hardware/fingerprint/FingerprintManager$CryptoObject" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/security/Signature;)V"/> + <method name="<init>(Ljavax/crypto/Cipher;)V"/> + <method name="<init>(Ljavax/crypto/Mac;)V"/> + <method name="getCipher()Ljavax/crypto/Cipher;"/> + <method name="getMac()Ljavax/crypto/Mac;"/> + <method name="getSignature()Ljava/security/Signature;"/> + </class> + <class name="android/hardware/input/InputManager" since="16"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getInputDevice(I)Landroid/view/InputDevice;"/> + <method name="getInputDeviceIds()[I"/> + <method name="registerInputDeviceListener(Landroid/hardware/input/InputManager$InputDeviceListener;Landroid/os/Handler;)V"/> + <method name="unregisterInputDeviceListener(Landroid/hardware/input/InputManager$InputDeviceListener;)V"/> + <field name="ACTION_QUERY_KEYBOARD_LAYOUTS"/> + <field name="META_DATA_KEYBOARD_LAYOUTS"/> + </class> + <class name="android/hardware/input/InputManager$InputDeviceListener" since="16"> + <extends name="java/lang/Object"/> + <method name="onInputDeviceAdded(I)V"/> + <method name="onInputDeviceChanged(I)V"/> + <method name="onInputDeviceRemoved(I)V"/> + </class> + <class name="android/hardware/location/GeofenceHardware" since="18" removed="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addGeofence(IILandroid/hardware/location/GeofenceHardwareRequest;Landroid/hardware/location/GeofenceHardwareCallback;)Z"/> + <method name="getMonitoringTypes()[I"/> + <method name="getStatusOfMonitoringType(I)I"/> + <method name="pauseGeofence(II)Z"/> + <method name="registerForMonitorStateChangeCallback(ILandroid/hardware/location/GeofenceHardwareMonitorCallback;)Z"/> + <method name="removeGeofence(II)Z"/> + <method name="resumeGeofence(III)Z"/> + <method name="unregisterForMonitorStateChangeCallback(ILandroid/hardware/location/GeofenceHardwareMonitorCallback;)Z"/> + <field name="GEOFENCE_ENTERED"/> + <field name="GEOFENCE_ERROR_ID_EXISTS"/> + <field name="GEOFENCE_ERROR_ID_UNKNOWN"/> + <field name="GEOFENCE_ERROR_INVALID_TRANSITION"/> + <field name="GEOFENCE_ERROR_TOO_MANY_GEOFENCES"/> + <field name="GEOFENCE_EXITED"/> + <field name="GEOFENCE_FAILURE"/> + <field name="GEOFENCE_SUCCESS"/> + <field name="GEOFENCE_UNCERTAIN"/> + <field name="MONITORING_TYPE_GPS_HARDWARE"/> + <field name="MONITOR_CURRENTLY_AVAILABLE"/> + <field name="MONITOR_CURRENTLY_UNAVAILABLE"/> + <field name="MONITOR_UNSUPPORTED"/> + </class> + <class name="android/hardware/location/GeofenceHardwareCallback" since="18" removed="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onGeofenceAdd(II)V"/> + <method name="onGeofencePause(II)V"/> + <method name="onGeofenceRemove(II)V"/> + <method name="onGeofenceResume(II)V"/> + <method name="onGeofenceTransition(IILandroid/location/Location;JI)V"/> + </class> + <class name="android/hardware/location/GeofenceHardwareMonitorCallback" since="18" removed="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onMonitoringSystemChange(IZLandroid/location/Location;)V"/> + </class> + <class name="android/hardware/location/GeofenceHardwareRequest" since="18" removed="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="createCircularGeofence(DDD)Landroid/hardware/location/GeofenceHardwareRequest;"/> + <method name="getLastTransition()I"/> + <method name="getLatitude()D"/> + <method name="getLongitude()D"/> + <method name="getMonitorTransitions()I"/> + <method name="getNotificationResponsiveness()I"/> + <method name="getRadius()D"/> + <method name="getUnknownTimer()I"/> + <method name="setLastTransition(I)V"/> + <method name="setMonitorTransitions(I)V"/> + <method name="setNotificationResponsiveness(I)V"/> + <method name="setUnknownTimer(I)V"/> + </class> + <class name="android/hardware/usb/UsbAccessory" since="12"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getDescription()Ljava/lang/String;"/> + <method name="getManufacturer()Ljava/lang/String;"/> + <method name="getModel()Ljava/lang/String;"/> + <method name="getSerial()Ljava/lang/String;"/> + <method name="getUri()Ljava/lang/String;"/> + <method name="getVersion()Ljava/lang/String;"/> + <field name="CREATOR"/> + </class> + <class name="android/hardware/usb/UsbConfiguration" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getId()I"/> + <method name="getInterface(I)Landroid/hardware/usb/UsbInterface;"/> + <method name="getInterfaceCount()I"/> + <method name="getMaxPower()I"/> + <method name="getName()Ljava/lang/String;"/> + <method name="isRemoteWakeup()Z"/> + <method name="isSelfPowered()Z"/> + <field name="CREATOR"/> + </class> + <class name="android/hardware/usb/UsbConstants" since="12"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="USB_CLASS_APP_SPEC"/> + <field name="USB_CLASS_AUDIO"/> + <field name="USB_CLASS_CDC_DATA"/> + <field name="USB_CLASS_COMM"/> + <field name="USB_CLASS_CONTENT_SEC"/> + <field name="USB_CLASS_CSCID"/> + <field name="USB_CLASS_HID"/> + <field name="USB_CLASS_HUB"/> + <field name="USB_CLASS_MASS_STORAGE"/> + <field name="USB_CLASS_MISC"/> + <field name="USB_CLASS_PER_INTERFACE"/> + <field name="USB_CLASS_PHYSICA"/> + <field name="USB_CLASS_PRINTER"/> + <field name="USB_CLASS_STILL_IMAGE"/> + <field name="USB_CLASS_VENDOR_SPEC"/> + <field name="USB_CLASS_VIDEO"/> + <field name="USB_CLASS_WIRELESS_CONTROLLER"/> + <field name="USB_DIR_IN"/> + <field name="USB_DIR_OUT"/> + <field name="USB_ENDPOINT_DIR_MASK"/> + <field name="USB_ENDPOINT_NUMBER_MASK"/> + <field name="USB_ENDPOINT_XFERTYPE_MASK"/> + <field name="USB_ENDPOINT_XFER_BULK"/> + <field name="USB_ENDPOINT_XFER_CONTROL"/> + <field name="USB_ENDPOINT_XFER_INT"/> + <field name="USB_ENDPOINT_XFER_ISOC"/> + <field name="USB_INTERFACE_SUBCLASS_BOOT"/> + <field name="USB_SUBCLASS_VENDOR_SPEC"/> + <field name="USB_TYPE_CLASS"/> + <field name="USB_TYPE_MASK"/> + <field name="USB_TYPE_RESERVED"/> + <field name="USB_TYPE_STANDARD"/> + <field name="USB_TYPE_VENDOR"/> + </class> + <class name="android/hardware/usb/UsbDevice" since="12"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getConfiguration(I)Landroid/hardware/usb/UsbConfiguration;" since="21"/> + <method name="getConfigurationCount()I" since="21"/> + <method name="getDeviceClass()I"/> + <method name="getDeviceId()I"/> + <method name="getDeviceId(Ljava/lang/String;)I"/> + <method name="getDeviceName()Ljava/lang/String;"/> + <method name="getDeviceName(I)Ljava/lang/String;"/> + <method name="getDeviceProtocol()I"/> + <method name="getDeviceSubclass()I"/> + <method name="getInterface(I)Landroid/hardware/usb/UsbInterface;"/> + <method name="getInterfaceCount()I"/> + <method name="getManufacturerName()Ljava/lang/String;" since="21"/> + <method name="getProductId()I"/> + <method name="getProductName()Ljava/lang/String;" since="21"/> + <method name="getSerialNumber()Ljava/lang/String;" since="21"/> + <method name="getVendorId()I"/> + <method name="getVersion()Ljava/lang/String;" since="23"/> + <field name="CREATOR"/> + </class> + <class name="android/hardware/usb/UsbDeviceConnection" since="12"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="bulkTransfer(Landroid/hardware/usb/UsbEndpoint;[BII)I"/> + <method name="bulkTransfer(Landroid/hardware/usb/UsbEndpoint;[BIII)I" since="18"/> + <method name="claimInterface(Landroid/hardware/usb/UsbInterface;Z)Z"/> + <method name="close()V"/> + <method name="controlTransfer(IIII[BII)I"/> + <method name="controlTransfer(IIII[BIII)I" since="18"/> + <method name="getFileDescriptor()I"/> + <method name="getRawDescriptors()[B" since="13"/> + <method name="getSerial()Ljava/lang/String;"/> + <method name="releaseInterface(Landroid/hardware/usb/UsbInterface;)Z"/> + <method name="requestWait()Landroid/hardware/usb/UsbRequest;"/> + <method name="requestWait(J)Landroid/hardware/usb/UsbRequest;" since="26"/> + <method name="setConfiguration(Landroid/hardware/usb/UsbConfiguration;)Z" since="21"/> + <method name="setInterface(Landroid/hardware/usb/UsbInterface;)Z" since="21"/> + </class> + <class name="android/hardware/usb/UsbEndpoint" since="12"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getAddress()I"/> + <method name="getAttributes()I"/> + <method name="getDirection()I"/> + <method name="getEndpointNumber()I"/> + <method name="getInterval()I"/> + <method name="getMaxPacketSize()I"/> + <method name="getType()I"/> + <field name="CREATOR"/> + </class> + <class name="android/hardware/usb/UsbInterface" since="12"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getAlternateSetting()I" since="21"/> + <method name="getEndpoint(I)Landroid/hardware/usb/UsbEndpoint;"/> + <method name="getEndpointCount()I"/> + <method name="getId()I"/> + <method name="getInterfaceClass()I"/> + <method name="getInterfaceProtocol()I"/> + <method name="getInterfaceSubclass()I"/> + <method name="getName()Ljava/lang/String;" since="21"/> + <field name="CREATOR"/> + </class> + <class name="android/hardware/usb/UsbManager" since="12"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAccessoryList()[Landroid/hardware/usb/UsbAccessory;"/> + <method name="getDeviceList()Ljava/util/HashMap;"/> + <method name="hasPermission(Landroid/hardware/usb/UsbAccessory;)Z"/> + <method name="hasPermission(Landroid/hardware/usb/UsbDevice;)Z"/> + <method name="openAccessory(Landroid/hardware/usb/UsbAccessory;)Landroid/os/ParcelFileDescriptor;"/> + <method name="openDevice(Landroid/hardware/usb/UsbDevice;)Landroid/hardware/usb/UsbDeviceConnection;"/> + <method name="requestPermission(Landroid/hardware/usb/UsbAccessory;Landroid/app/PendingIntent;)V"/> + <method name="requestPermission(Landroid/hardware/usb/UsbDevice;Landroid/app/PendingIntent;)V"/> + <field name="ACTION_USB_ACCESSORY_ATTACHED"/> + <field name="ACTION_USB_ACCESSORY_DETACHED"/> + <field name="ACTION_USB_DEVICE_ATTACHED"/> + <field name="ACTION_USB_DEVICE_DETACHED"/> + <field name="EXTRA_ACCESSORY"/> + <field name="EXTRA_DEVICE"/> + <field name="EXTRA_PERMISSION_GRANTED"/> + </class> + <class name="android/hardware/usb/UsbRequest" since="12"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="cancel()Z"/> + <method name="close()V"/> + <method name="getClientData()Ljava/lang/Object;"/> + <method name="getEndpoint()Landroid/hardware/usb/UsbEndpoint;"/> + <method name="initialize(Landroid/hardware/usb/UsbDeviceConnection;Landroid/hardware/usb/UsbEndpoint;)Z"/> + <method name="queue(Ljava/nio/ByteBuffer;)Z" since="26"/> + <method name="queue(Ljava/nio/ByteBuffer;I)Z" deprecated="26"/> + <method name="setClientData(Ljava/lang/Object;)V"/> + </class> + <class name="android/icu/lang/UCharacter" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/icu/lang/UCharacterEnums$ECharacterCategory"/> + <implements name="android/icu/lang/UCharacterEnums$ECharacterDirection"/> + <method name="<init>()V"/> + <method name="charCount(I)I"/> + <method name="codePointAt(Ljava/lang/CharSequence;I)I"/> + <method name="codePointAt([CI)I"/> + <method name="codePointAt([CII)I"/> + <method name="codePointBefore(Ljava/lang/CharSequence;I)I"/> + <method name="codePointBefore([CI)I"/> + <method name="codePointBefore([CII)I"/> + <method name="codePointCount(Ljava/lang/CharSequence;II)I"/> + <method name="codePointCount([CII)I"/> + <method name="digit(I)I"/> + <method name="digit(II)I"/> + <method name="foldCase(II)I"/> + <method name="foldCase(IZ)I"/> + <method name="foldCase(Ljava/lang/String;I)Ljava/lang/String;"/> + <method name="foldCase(Ljava/lang/String;Z)Ljava/lang/String;"/> + <method name="forDigit(II)C"/> + <method name="getAge(I)Landroid/icu/util/VersionInfo;"/> + <method name="getBidiPairedBracket(I)I"/> + <method name="getCharFromExtendedName(Ljava/lang/String;)I"/> + <method name="getCharFromName(Ljava/lang/String;)I"/> + <method name="getCharFromNameAlias(Ljava/lang/String;)I"/> + <method name="getCodePoint(C)I"/> + <method name="getCodePoint(CC)I"/> + <method name="getCombiningClass(I)I"/> + <method name="getDirection(I)I"/> + <method name="getDirectionality(I)B"/> + <method name="getExtendedName(I)Ljava/lang/String;"/> + <method name="getExtendedNameIterator()Landroid/icu/util/ValueIterator;"/> + <method name="getHanNumericValue(I)I"/> + <method name="getIntPropertyMaxValue(I)I"/> + <method name="getIntPropertyMinValue(I)I"/> + <method name="getIntPropertyValue(II)I"/> + <method name="getMirror(I)I"/> + <method name="getName(I)Ljava/lang/String;"/> + <method name="getName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getNameAlias(I)Ljava/lang/String;"/> + <method name="getNameIterator()Landroid/icu/util/ValueIterator;"/> + <method name="getNumericValue(I)I"/> + <method name="getPropertyEnum(Ljava/lang/CharSequence;)I"/> + <method name="getPropertyName(II)Ljava/lang/String;"/> + <method name="getPropertyValueEnum(ILjava/lang/CharSequence;)I"/> + <method name="getPropertyValueName(III)Ljava/lang/String;"/> + <method name="getType(I)I"/> + <method name="getTypeIterator()Landroid/icu/util/RangeValueIterator;"/> + <method name="getUnicodeNumericValue(I)D"/> + <method name="getUnicodeVersion()Landroid/icu/util/VersionInfo;"/> + <method name="hasBinaryProperty(II)Z"/> + <method name="isBMP(I)Z"/> + <method name="isBaseForm(I)Z"/> + <method name="isDefined(I)Z"/> + <method name="isDigit(I)Z"/> + <method name="isHighSurrogate(C)Z"/> + <method name="isISOControl(I)Z"/> + <method name="isIdentifierIgnorable(I)Z"/> + <method name="isJavaIdentifierPart(I)Z"/> + <method name="isJavaIdentifierStart(I)Z"/> + <method name="isLegal(I)Z"/> + <method name="isLegal(Ljava/lang/String;)Z"/> + <method name="isLetter(I)Z"/> + <method name="isLetterOrDigit(I)Z"/> + <method name="isLowSurrogate(C)Z"/> + <method name="isLowerCase(I)Z"/> + <method name="isMirrored(I)Z"/> + <method name="isPrintable(I)Z"/> + <method name="isSpaceChar(I)Z"/> + <method name="isSupplementary(I)Z"/> + <method name="isSupplementaryCodePoint(I)Z"/> + <method name="isSurrogatePair(CC)Z"/> + <method name="isTitleCase(I)Z"/> + <method name="isUAlphabetic(I)Z"/> + <method name="isULowercase(I)Z"/> + <method name="isUUppercase(I)Z"/> + <method name="isUWhiteSpace(I)Z"/> + <method name="isUnicodeIdentifierPart(I)Z"/> + <method name="isUnicodeIdentifierStart(I)Z"/> + <method name="isUpperCase(I)Z"/> + <method name="isValidCodePoint(I)Z"/> + <method name="isWhitespace(I)Z"/> + <method name="offsetByCodePoints(Ljava/lang/CharSequence;II)I"/> + <method name="offsetByCodePoints([CIIII)I"/> + <method name="toChars(I)[C"/> + <method name="toChars(I[CI)I"/> + <method name="toCodePoint(CC)I"/> + <method name="toLowerCase(I)I"/> + <method name="toLowerCase(Landroid/icu/util/ULocale;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="toLowerCase(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="toLowerCase(Ljava/util/Locale;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="toString(I)Ljava/lang/String;"/> + <method name="toTitleCase(I)I"/> + <method name="toTitleCase(Landroid/icu/util/ULocale;Ljava/lang/String;Landroid/icu/text/BreakIterator;)Ljava/lang/String;"/> + <method name="toTitleCase(Landroid/icu/util/ULocale;Ljava/lang/String;Landroid/icu/text/BreakIterator;I)Ljava/lang/String;"/> + <method name="toTitleCase(Ljava/lang/String;Landroid/icu/text/BreakIterator;)Ljava/lang/String;"/> + <method name="toTitleCase(Ljava/util/Locale;Ljava/lang/String;Landroid/icu/text/BreakIterator;)Ljava/lang/String;"/> + <method name="toTitleCase(Ljava/util/Locale;Ljava/lang/String;Landroid/icu/text/BreakIterator;I)Ljava/lang/String;"/> + <method name="toUpperCase(I)I"/> + <method name="toUpperCase(Landroid/icu/util/ULocale;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="toUpperCase(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="toUpperCase(Ljava/util/Locale;Ljava/lang/String;)Ljava/lang/String;"/> + <field name="FOLD_CASE_DEFAULT"/> + <field name="FOLD_CASE_EXCLUDE_SPECIAL_I"/> + <field name="MAX_CODE_POINT"/> + <field name="MAX_HIGH_SURROGATE"/> + <field name="MAX_LOW_SURROGATE"/> + <field name="MAX_RADIX"/> + <field name="MAX_SURROGATE"/> + <field name="MAX_VALUE"/> + <field name="MIN_CODE_POINT"/> + <field name="MIN_HIGH_SURROGATE"/> + <field name="MIN_LOW_SURROGATE"/> + <field name="MIN_RADIX"/> + <field name="MIN_SUPPLEMENTARY_CODE_POINT"/> + <field name="MIN_SURROGATE"/> + <field name="MIN_VALUE"/> + <field name="NO_NUMERIC_VALUE"/> + <field name="REPLACEMENT_CHAR"/> + <field name="SUPPLEMENTARY_MIN_VALUE"/> + <field name="TITLECASE_NO_BREAK_ADJUSTMENT"/> + <field name="TITLECASE_NO_LOWERCASE"/> + </class> + <class name="android/icu/lang/UCharacter$BidiPairedBracketType" since="24"> + <extends name="java/lang/Object"/> + <field name="CLOSE"/> + <field name="NONE"/> + <field name="OPEN"/> + </class> + <class name="android/icu/lang/UCharacter$DecompositionType" since="24"> + <extends name="java/lang/Object"/> + <field name="CANONICAL"/> + <field name="CIRCLE"/> + <field name="COMPAT"/> + <field name="FINAL"/> + <field name="FONT"/> + <field name="FRACTION"/> + <field name="INITIAL"/> + <field name="ISOLATED"/> + <field name="MEDIAL"/> + <field name="NARROW"/> + <field name="NOBREAK"/> + <field name="NONE"/> + <field name="SMALL"/> + <field name="SQUARE"/> + <field name="SUB"/> + <field name="SUPER"/> + <field name="VERTICAL"/> + <field name="WIDE"/> + </class> + <class name="android/icu/lang/UCharacter$EastAsianWidth" since="24"> + <extends name="java/lang/Object"/> + <field name="AMBIGUOUS"/> + <field name="FULLWIDTH"/> + <field name="HALFWIDTH"/> + <field name="NARROW"/> + <field name="NEUTRAL"/> + <field name="WIDE"/> + </class> + <class name="android/icu/lang/UCharacter$GraphemeClusterBreak" since="24"> + <extends name="java/lang/Object"/> + <field name="CONTROL"/> + <field name="CR"/> + <field name="EXTEND"/> + <field name="E_BASE" since="26"/> + <field name="E_BASE_GAZ" since="26"/> + <field name="E_MODIFIER" since="26"/> + <field name="GLUE_AFTER_ZWJ" since="26"/> + <field name="L"/> + <field name="LF"/> + <field name="LV"/> + <field name="LVT"/> + <field name="OTHER"/> + <field name="PREPEND"/> + <field name="REGIONAL_INDICATOR"/> + <field name="SPACING_MARK"/> + <field name="T"/> + <field name="V"/> + <field name="ZWJ" since="26"/> + </class> + <class name="android/icu/lang/UCharacter$HangulSyllableType" since="24"> + <extends name="java/lang/Object"/> + <field name="LEADING_JAMO"/> + <field name="LVT_SYLLABLE"/> + <field name="LV_SYLLABLE"/> + <field name="NOT_APPLICABLE"/> + <field name="TRAILING_JAMO"/> + <field name="VOWEL_JAMO"/> + </class> + <class name="android/icu/lang/UCharacter$JoiningGroup" since="24"> + <extends name="java/lang/Object"/> + <field name="AFRICAN_FEH" since="26"/> + <field name="AFRICAN_NOON" since="26"/> + <field name="AFRICAN_QAF" since="26"/> + <field name="AIN"/> + <field name="ALAPH"/> + <field name="ALEF"/> + <field name="BEH"/> + <field name="BETH"/> + <field name="BURUSHASKI_YEH_BARREE"/> + <field name="DAL"/> + <field name="DALATH_RISH"/> + <field name="E"/> + <field name="FARSI_YEH"/> + <field name="FE"/> + <field name="FEH"/> + <field name="FINAL_SEMKATH"/> + <field name="GAF"/> + <field name="GAMAL"/> + <field name="HAH"/> + <field name="HAMZA_ON_HEH_GOAL"/> + <field name="HE"/> + <field name="HEH"/> + <field name="HEH_GOAL"/> + <field name="HETH"/> + <field name="KAF"/> + <field name="KAPH"/> + <field name="KHAPH"/> + <field name="KNOTTED_HEH"/> + <field name="LAM"/> + <field name="LAMADH"/> + <field name="MANICHAEAN_ALEPH"/> + <field name="MANICHAEAN_AYIN"/> + <field name="MANICHAEAN_BETH"/> + <field name="MANICHAEAN_DALETH"/> + <field name="MANICHAEAN_DHAMEDH"/> + <field name="MANICHAEAN_FIVE"/> + <field name="MANICHAEAN_GIMEL"/> + <field name="MANICHAEAN_HETH"/> + <field name="MANICHAEAN_HUNDRED"/> + <field name="MANICHAEAN_KAPH"/> + <field name="MANICHAEAN_LAMEDH"/> + <field name="MANICHAEAN_MEM"/> + <field name="MANICHAEAN_NUN"/> + <field name="MANICHAEAN_ONE"/> + <field name="MANICHAEAN_PE"/> + <field name="MANICHAEAN_QOPH"/> + <field name="MANICHAEAN_RESH"/> + <field name="MANICHAEAN_SADHE"/> + <field name="MANICHAEAN_SAMEKH"/> + <field name="MANICHAEAN_TAW"/> + <field name="MANICHAEAN_TEN"/> + <field name="MANICHAEAN_TETH"/> + <field name="MANICHAEAN_THAMEDH"/> + <field name="MANICHAEAN_TWENTY"/> + <field name="MANICHAEAN_WAW"/> + <field name="MANICHAEAN_YODH"/> + <field name="MANICHAEAN_ZAYIN"/> + <field name="MEEM"/> + <field name="MIM"/> + <field name="NOON"/> + <field name="NO_JOINING_GROUP"/> + <field name="NUN"/> + <field name="NYA"/> + <field name="PE"/> + <field name="QAF"/> + <field name="QAPH"/> + <field name="REH"/> + <field name="REVERSED_PE"/> + <field name="ROHINGYA_YEH"/> + <field name="SAD"/> + <field name="SADHE"/> + <field name="SEEN"/> + <field name="SEMKATH"/> + <field name="SHIN"/> + <field name="STRAIGHT_WAW"/> + <field name="SWASH_KAF"/> + <field name="SYRIAC_WAW"/> + <field name="TAH"/> + <field name="TAW"/> + <field name="TEH_MARBUTA"/> + <field name="TEH_MARBUTA_GOAL"/> + <field name="TETH"/> + <field name="WAW"/> + <field name="YEH"/> + <field name="YEH_BARREE"/> + <field name="YEH_WITH_TAIL"/> + <field name="YUDH"/> + <field name="YUDH_HE"/> + <field name="ZAIN"/> + <field name="ZHAIN"/> + </class> + <class name="android/icu/lang/UCharacter$JoiningType" since="24"> + <extends name="java/lang/Object"/> + <field name="DUAL_JOINING"/> + <field name="JOIN_CAUSING"/> + <field name="LEFT_JOINING"/> + <field name="NON_JOINING"/> + <field name="RIGHT_JOINING"/> + <field name="TRANSPARENT"/> + </class> + <class name="android/icu/lang/UCharacter$LineBreak" since="24"> + <extends name="java/lang/Object"/> + <field name="ALPHABETIC"/> + <field name="AMBIGUOUS"/> + <field name="BREAK_AFTER"/> + <field name="BREAK_BEFORE"/> + <field name="BREAK_BOTH"/> + <field name="BREAK_SYMBOLS"/> + <field name="CARRIAGE_RETURN"/> + <field name="CLOSE_PARENTHESIS"/> + <field name="CLOSE_PUNCTUATION"/> + <field name="COMBINING_MARK"/> + <field name="COMPLEX_CONTEXT"/> + <field name="CONDITIONAL_JAPANESE_STARTER"/> + <field name="CONTINGENT_BREAK"/> + <field name="EXCLAMATION"/> + <field name="E_BASE" since="26"/> + <field name="E_MODIFIER" since="26"/> + <field name="GLUE"/> + <field name="H2"/> + <field name="H3"/> + <field name="HEBREW_LETTER"/> + <field name="HYPHEN"/> + <field name="IDEOGRAPHIC"/> + <field name="INFIX_NUMERIC"/> + <field name="INSEPARABLE"/> + <field name="INSEPERABLE"/> + <field name="JL"/> + <field name="JT"/> + <field name="JV"/> + <field name="LINE_FEED"/> + <field name="MANDATORY_BREAK"/> + <field name="NEXT_LINE"/> + <field name="NONSTARTER"/> + <field name="NUMERIC"/> + <field name="OPEN_PUNCTUATION"/> + <field name="POSTFIX_NUMERIC"/> + <field name="PREFIX_NUMERIC"/> + <field name="QUOTATION"/> + <field name="REGIONAL_INDICATOR"/> + <field name="SPACE"/> + <field name="SURROGATE"/> + <field name="UNKNOWN"/> + <field name="WORD_JOINER"/> + <field name="ZWJ" since="26"/> + <field name="ZWSPACE"/> + </class> + <class name="android/icu/lang/UCharacter$NumericType" since="24"> + <extends name="java/lang/Object"/> + <field name="DECIMAL"/> + <field name="DIGIT"/> + <field name="NONE"/> + <field name="NUMERIC"/> + </class> + <class name="android/icu/lang/UCharacter$SentenceBreak" since="24"> + <extends name="java/lang/Object"/> + <field name="ATERM"/> + <field name="CLOSE"/> + <field name="CR"/> + <field name="EXTEND"/> + <field name="FORMAT"/> + <field name="LF"/> + <field name="LOWER"/> + <field name="NUMERIC"/> + <field name="OLETTER"/> + <field name="OTHER"/> + <field name="SCONTINUE"/> + <field name="SEP"/> + <field name="SP"/> + <field name="STERM"/> + <field name="UPPER"/> + </class> + <class name="android/icu/lang/UCharacter$UnicodeBlock" since="24"> + <extends name="java/lang/Character$Subset"/> + <method name="<init>()V"/> + <method name="forName(Ljava/lang/String;)Landroid/icu/lang/UCharacter$UnicodeBlock;"/> + <method name="getID()I"/> + <method name="getInstance(I)Landroid/icu/lang/UCharacter$UnicodeBlock;"/> + <method name="of(I)Landroid/icu/lang/UCharacter$UnicodeBlock;"/> + <field name="ADLAM" since="26"/> + <field name="ADLAM_ID" since="26"/> + <field name="AEGEAN_NUMBERS"/> + <field name="AEGEAN_NUMBERS_ID"/> + <field name="AHOM"/> + <field name="AHOM_ID"/> + <field name="ALCHEMICAL_SYMBOLS"/> + <field name="ALCHEMICAL_SYMBOLS_ID"/> + <field name="ALPHABETIC_PRESENTATION_FORMS"/> + <field name="ALPHABETIC_PRESENTATION_FORMS_ID"/> + <field name="ANATOLIAN_HIEROGLYPHS"/> + <field name="ANATOLIAN_HIEROGLYPHS_ID"/> + <field name="ANCIENT_GREEK_MUSICAL_NOTATION"/> + <field name="ANCIENT_GREEK_MUSICAL_NOTATION_ID"/> + <field name="ANCIENT_GREEK_NUMBERS"/> + <field name="ANCIENT_GREEK_NUMBERS_ID"/> + <field name="ANCIENT_SYMBOLS"/> + <field name="ANCIENT_SYMBOLS_ID"/> + <field name="ARABIC"/> + <field name="ARABIC_EXTENDED_A"/> + <field name="ARABIC_EXTENDED_A_ID"/> + <field name="ARABIC_ID"/> + <field name="ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS"/> + <field name="ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS_ID"/> + <field name="ARABIC_PRESENTATION_FORMS_A"/> + <field name="ARABIC_PRESENTATION_FORMS_A_ID"/> + <field name="ARABIC_PRESENTATION_FORMS_B"/> + <field name="ARABIC_PRESENTATION_FORMS_B_ID"/> + <field name="ARABIC_SUPPLEMENT"/> + <field name="ARABIC_SUPPLEMENT_ID"/> + <field name="ARMENIAN"/> + <field name="ARMENIAN_ID"/> + <field name="ARROWS"/> + <field name="ARROWS_ID"/> + <field name="AVESTAN"/> + <field name="AVESTAN_ID"/> + <field name="BALINESE"/> + <field name="BALINESE_ID"/> + <field name="BAMUM"/> + <field name="BAMUM_ID"/> + <field name="BAMUM_SUPPLEMENT"/> + <field name="BAMUM_SUPPLEMENT_ID"/> + <field name="BASIC_LATIN"/> + <field name="BASIC_LATIN_ID"/> + <field name="BASSA_VAH"/> + <field name="BASSA_VAH_ID"/> + <field name="BATAK"/> + <field name="BATAK_ID"/> + <field name="BENGALI"/> + <field name="BENGALI_ID"/> + <field name="BHAIKSUKI" since="26"/> + <field name="BHAIKSUKI_ID" since="26"/> + <field name="BLOCK_ELEMENTS"/> + <field name="BLOCK_ELEMENTS_ID"/> + <field name="BOPOMOFO"/> + <field name="BOPOMOFO_EXTENDED"/> + <field name="BOPOMOFO_EXTENDED_ID"/> + <field name="BOPOMOFO_ID"/> + <field name="BOX_DRAWING"/> + <field name="BOX_DRAWING_ID"/> + <field name="BRAHMI"/> + <field name="BRAHMI_ID"/> + <field name="BRAILLE_PATTERNS"/> + <field name="BRAILLE_PATTERNS_ID"/> + <field name="BUGINESE"/> + <field name="BUGINESE_ID"/> + <field name="BUHID"/> + <field name="BUHID_ID"/> + <field name="BYZANTINE_MUSICAL_SYMBOLS"/> + <field name="BYZANTINE_MUSICAL_SYMBOLS_ID"/> + <field name="CARIAN"/> + <field name="CARIAN_ID"/> + <field name="CAUCASIAN_ALBANIAN"/> + <field name="CAUCASIAN_ALBANIAN_ID"/> + <field name="CHAKMA"/> + <field name="CHAKMA_ID"/> + <field name="CHAM"/> + <field name="CHAM_ID"/> + <field name="CHEROKEE"/> + <field name="CHEROKEE_ID"/> + <field name="CHEROKEE_SUPPLEMENT"/> + <field name="CHEROKEE_SUPPLEMENT_ID"/> + <field name="CJK_COMPATIBILITY"/> + <field name="CJK_COMPATIBILITY_FORMS"/> + <field name="CJK_COMPATIBILITY_FORMS_ID"/> + <field name="CJK_COMPATIBILITY_ID"/> + <field name="CJK_COMPATIBILITY_IDEOGRAPHS"/> + <field name="CJK_COMPATIBILITY_IDEOGRAPHS_ID"/> + <field name="CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT"/> + <field name="CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_ID"/> + <field name="CJK_RADICALS_SUPPLEMENT"/> + <field name="CJK_RADICALS_SUPPLEMENT_ID"/> + <field name="CJK_STROKES"/> + <field name="CJK_STROKES_ID"/> + <field name="CJK_SYMBOLS_AND_PUNCTUATION"/> + <field name="CJK_SYMBOLS_AND_PUNCTUATION_ID"/> + <field name="CJK_UNIFIED_IDEOGRAPHS"/> + <field name="CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A"/> + <field name="CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_ID"/> + <field name="CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B"/> + <field name="CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_ID"/> + <field name="CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C"/> + <field name="CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C_ID"/> + <field name="CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D"/> + <field name="CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D_ID"/> + <field name="CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E"/> + <field name="CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E_ID"/> + <field name="CJK_UNIFIED_IDEOGRAPHS_ID"/> + <field name="COMBINING_DIACRITICAL_MARKS"/> + <field name="COMBINING_DIACRITICAL_MARKS_EXTENDED"/> + <field name="COMBINING_DIACRITICAL_MARKS_EXTENDED_ID"/> + <field name="COMBINING_DIACRITICAL_MARKS_ID"/> + <field name="COMBINING_DIACRITICAL_MARKS_SUPPLEMENT"/> + <field name="COMBINING_DIACRITICAL_MARKS_SUPPLEMENT_ID"/> + <field name="COMBINING_HALF_MARKS"/> + <field name="COMBINING_HALF_MARKS_ID"/> + <field name="COMBINING_MARKS_FOR_SYMBOLS"/> + <field name="COMBINING_MARKS_FOR_SYMBOLS_ID"/> + <field name="COMMON_INDIC_NUMBER_FORMS"/> + <field name="COMMON_INDIC_NUMBER_FORMS_ID"/> + <field name="CONTROL_PICTURES"/> + <field name="CONTROL_PICTURES_ID"/> + <field name="COPTIC"/> + <field name="COPTIC_EPACT_NUMBERS"/> + <field name="COPTIC_EPACT_NUMBERS_ID"/> + <field name="COPTIC_ID"/> + <field name="COUNTING_ROD_NUMERALS"/> + <field name="COUNTING_ROD_NUMERALS_ID"/> + <field name="CUNEIFORM"/> + <field name="CUNEIFORM_ID"/> + <field name="CUNEIFORM_NUMBERS_AND_PUNCTUATION"/> + <field name="CUNEIFORM_NUMBERS_AND_PUNCTUATION_ID"/> + <field name="CURRENCY_SYMBOLS"/> + <field name="CURRENCY_SYMBOLS_ID"/> + <field name="CYPRIOT_SYLLABARY"/> + <field name="CYPRIOT_SYLLABARY_ID"/> + <field name="CYRILLIC"/> + <field name="CYRILLIC_EXTENDED_A"/> + <field name="CYRILLIC_EXTENDED_A_ID"/> + <field name="CYRILLIC_EXTENDED_B"/> + <field name="CYRILLIC_EXTENDED_B_ID"/> + <field name="CYRILLIC_EXTENDED_C" since="26"/> + <field name="CYRILLIC_EXTENDED_C_ID" since="26"/> + <field name="CYRILLIC_ID"/> + <field name="CYRILLIC_SUPPLEMENT"/> + <field name="CYRILLIC_SUPPLEMENTARY"/> + <field name="CYRILLIC_SUPPLEMENTARY_ID"/> + <field name="CYRILLIC_SUPPLEMENT_ID"/> + <field name="DESERET"/> + <field name="DESERET_ID"/> + <field name="DEVANAGARI"/> + <field name="DEVANAGARI_EXTENDED"/> + <field name="DEVANAGARI_EXTENDED_ID"/> + <field name="DEVANAGARI_ID"/> + <field name="DINGBATS"/> + <field name="DINGBATS_ID"/> + <field name="DOMINO_TILES"/> + <field name="DOMINO_TILES_ID"/> + <field name="DUPLOYAN"/> + <field name="DUPLOYAN_ID"/> + <field name="EARLY_DYNASTIC_CUNEIFORM"/> + <field name="EARLY_DYNASTIC_CUNEIFORM_ID"/> + <field name="EGYPTIAN_HIEROGLYPHS"/> + <field name="EGYPTIAN_HIEROGLYPHS_ID"/> + <field name="ELBASAN"/> + <field name="ELBASAN_ID"/> + <field name="EMOTICONS"/> + <field name="EMOTICONS_ID"/> + <field name="ENCLOSED_ALPHANUMERICS"/> + <field name="ENCLOSED_ALPHANUMERICS_ID"/> + <field name="ENCLOSED_ALPHANUMERIC_SUPPLEMENT"/> + <field name="ENCLOSED_ALPHANUMERIC_SUPPLEMENT_ID"/> + <field name="ENCLOSED_CJK_LETTERS_AND_MONTHS"/> + <field name="ENCLOSED_CJK_LETTERS_AND_MONTHS_ID"/> + <field name="ENCLOSED_IDEOGRAPHIC_SUPPLEMENT"/> + <field name="ENCLOSED_IDEOGRAPHIC_SUPPLEMENT_ID"/> + <field name="ETHIOPIC"/> + <field name="ETHIOPIC_EXTENDED"/> + <field name="ETHIOPIC_EXTENDED_A"/> + <field name="ETHIOPIC_EXTENDED_A_ID"/> + <field name="ETHIOPIC_EXTENDED_ID"/> + <field name="ETHIOPIC_ID"/> + <field name="ETHIOPIC_SUPPLEMENT"/> + <field name="ETHIOPIC_SUPPLEMENT_ID"/> + <field name="GENERAL_PUNCTUATION"/> + <field name="GENERAL_PUNCTUATION_ID"/> + <field name="GEOMETRIC_SHAPES"/> + <field name="GEOMETRIC_SHAPES_EXTENDED"/> + <field name="GEOMETRIC_SHAPES_EXTENDED_ID"/> + <field name="GEOMETRIC_SHAPES_ID"/> + <field name="GEORGIAN"/> + <field name="GEORGIAN_ID"/> + <field name="GEORGIAN_SUPPLEMENT"/> + <field name="GEORGIAN_SUPPLEMENT_ID"/> + <field name="GLAGOLITIC"/> + <field name="GLAGOLITIC_ID"/> + <field name="GLAGOLITIC_SUPPLEMENT" since="26"/> + <field name="GLAGOLITIC_SUPPLEMENT_ID" since="26"/> + <field name="GOTHIC"/> + <field name="GOTHIC_ID"/> + <field name="GRANTHA"/> + <field name="GRANTHA_ID"/> + <field name="GREEK"/> + <field name="GREEK_EXTENDED"/> + <field name="GREEK_EXTENDED_ID"/> + <field name="GREEK_ID"/> + <field name="GUJARATI"/> + <field name="GUJARATI_ID"/> + <field name="GURMUKHI"/> + <field name="GURMUKHI_ID"/> + <field name="HALFWIDTH_AND_FULLWIDTH_FORMS"/> + <field name="HALFWIDTH_AND_FULLWIDTH_FORMS_ID"/> + <field name="HANGUL_COMPATIBILITY_JAMO"/> + <field name="HANGUL_COMPATIBILITY_JAMO_ID"/> + <field name="HANGUL_JAMO"/> + <field name="HANGUL_JAMO_EXTENDED_A"/> + <field name="HANGUL_JAMO_EXTENDED_A_ID"/> + <field name="HANGUL_JAMO_EXTENDED_B"/> + <field name="HANGUL_JAMO_EXTENDED_B_ID"/> + <field name="HANGUL_JAMO_ID"/> + <field name="HANGUL_SYLLABLES"/> + <field name="HANGUL_SYLLABLES_ID"/> + <field name="HANUNOO"/> + <field name="HANUNOO_ID"/> + <field name="HATRAN"/> + <field name="HATRAN_ID"/> + <field name="HEBREW"/> + <field name="HEBREW_ID"/> + <field name="HIGH_PRIVATE_USE_SURROGATES"/> + <field name="HIGH_PRIVATE_USE_SURROGATES_ID"/> + <field name="HIGH_SURROGATES"/> + <field name="HIGH_SURROGATES_ID"/> + <field name="HIRAGANA"/> + <field name="HIRAGANA_ID"/> + <field name="IDEOGRAPHIC_DESCRIPTION_CHARACTERS"/> + <field name="IDEOGRAPHIC_DESCRIPTION_CHARACTERS_ID"/> + <field name="IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION" since="26"/> + <field name="IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION_ID" since="26"/> + <field name="IMPERIAL_ARAMAIC"/> + <field name="IMPERIAL_ARAMAIC_ID"/> + <field name="INSCRIPTIONAL_PAHLAVI"/> + <field name="INSCRIPTIONAL_PAHLAVI_ID"/> + <field name="INSCRIPTIONAL_PARTHIAN"/> + <field name="INSCRIPTIONAL_PARTHIAN_ID"/> + <field name="INVALID_CODE"/> + <field name="INVALID_CODE_ID"/> + <field name="IPA_EXTENSIONS"/> + <field name="IPA_EXTENSIONS_ID"/> + <field name="JAVANESE"/> + <field name="JAVANESE_ID"/> + <field name="KAITHI"/> + <field name="KAITHI_ID"/> + <field name="KANA_SUPPLEMENT"/> + <field name="KANA_SUPPLEMENT_ID"/> + <field name="KANBUN"/> + <field name="KANBUN_ID"/> + <field name="KANGXI_RADICALS"/> + <field name="KANGXI_RADICALS_ID"/> + <field name="KANNADA"/> + <field name="KANNADA_ID"/> + <field name="KATAKANA"/> + <field name="KATAKANA_ID"/> + <field name="KATAKANA_PHONETIC_EXTENSIONS"/> + <field name="KATAKANA_PHONETIC_EXTENSIONS_ID"/> + <field name="KAYAH_LI"/> + <field name="KAYAH_LI_ID"/> + <field name="KHAROSHTHI"/> + <field name="KHAROSHTHI_ID"/> + <field name="KHMER"/> + <field name="KHMER_ID"/> + <field name="KHMER_SYMBOLS"/> + <field name="KHMER_SYMBOLS_ID"/> + <field name="KHOJKI"/> + <field name="KHOJKI_ID"/> + <field name="KHUDAWADI"/> + <field name="KHUDAWADI_ID"/> + <field name="LAO"/> + <field name="LAO_ID"/> + <field name="LATIN_1_SUPPLEMENT"/> + <field name="LATIN_1_SUPPLEMENT_ID"/> + <field name="LATIN_EXTENDED_A"/> + <field name="LATIN_EXTENDED_ADDITIONAL"/> + <field name="LATIN_EXTENDED_ADDITIONAL_ID"/> + <field name="LATIN_EXTENDED_A_ID"/> + <field name="LATIN_EXTENDED_B"/> + <field name="LATIN_EXTENDED_B_ID"/> + <field name="LATIN_EXTENDED_C"/> + <field name="LATIN_EXTENDED_C_ID"/> + <field name="LATIN_EXTENDED_D"/> + <field name="LATIN_EXTENDED_D_ID"/> + <field name="LATIN_EXTENDED_E"/> + <field name="LATIN_EXTENDED_E_ID"/> + <field name="LEPCHA"/> + <field name="LEPCHA_ID"/> + <field name="LETTERLIKE_SYMBOLS"/> + <field name="LETTERLIKE_SYMBOLS_ID"/> + <field name="LIMBU"/> + <field name="LIMBU_ID"/> + <field name="LINEAR_A"/> + <field name="LINEAR_A_ID"/> + <field name="LINEAR_B_IDEOGRAMS"/> + <field name="LINEAR_B_IDEOGRAMS_ID"/> + <field name="LINEAR_B_SYLLABARY"/> + <field name="LINEAR_B_SYLLABARY_ID"/> + <field name="LISU"/> + <field name="LISU_ID"/> + <field name="LOW_SURROGATES"/> + <field name="LOW_SURROGATES_ID"/> + <field name="LYCIAN"/> + <field name="LYCIAN_ID"/> + <field name="LYDIAN"/> + <field name="LYDIAN_ID"/> + <field name="MAHAJANI"/> + <field name="MAHAJANI_ID"/> + <field name="MAHJONG_TILES"/> + <field name="MAHJONG_TILES_ID"/> + <field name="MALAYALAM"/> + <field name="MALAYALAM_ID"/> + <field name="MANDAIC"/> + <field name="MANDAIC_ID"/> + <field name="MANICHAEAN"/> + <field name="MANICHAEAN_ID"/> + <field name="MARCHEN" since="26"/> + <field name="MARCHEN_ID" since="26"/> + <field name="MATHEMATICAL_ALPHANUMERIC_SYMBOLS"/> + <field name="MATHEMATICAL_ALPHANUMERIC_SYMBOLS_ID"/> + <field name="MATHEMATICAL_OPERATORS"/> + <field name="MATHEMATICAL_OPERATORS_ID"/> + <field name="MEETEI_MAYEK"/> + <field name="MEETEI_MAYEK_EXTENSIONS"/> + <field name="MEETEI_MAYEK_EXTENSIONS_ID"/> + <field name="MEETEI_MAYEK_ID"/> + <field name="MENDE_KIKAKUI"/> + <field name="MENDE_KIKAKUI_ID"/> + <field name="MEROITIC_CURSIVE"/> + <field name="MEROITIC_CURSIVE_ID"/> + <field name="MEROITIC_HIEROGLYPHS"/> + <field name="MEROITIC_HIEROGLYPHS_ID"/> + <field name="MIAO"/> + <field name="MIAO_ID"/> + <field name="MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A"/> + <field name="MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A_ID"/> + <field name="MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B"/> + <field name="MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B_ID"/> + <field name="MISCELLANEOUS_SYMBOLS"/> + <field name="MISCELLANEOUS_SYMBOLS_AND_ARROWS"/> + <field name="MISCELLANEOUS_SYMBOLS_AND_ARROWS_ID"/> + <field name="MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS"/> + <field name="MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS_ID"/> + <field name="MISCELLANEOUS_SYMBOLS_ID"/> + <field name="MISCELLANEOUS_TECHNICAL"/> + <field name="MISCELLANEOUS_TECHNICAL_ID"/> + <field name="MODI"/> + <field name="MODIFIER_TONE_LETTERS"/> + <field name="MODIFIER_TONE_LETTERS_ID"/> + <field name="MODI_ID"/> + <field name="MONGOLIAN"/> + <field name="MONGOLIAN_ID"/> + <field name="MONGOLIAN_SUPPLEMENT" since="26"/> + <field name="MONGOLIAN_SUPPLEMENT_ID" since="26"/> + <field name="MRO"/> + <field name="MRO_ID"/> + <field name="MULTANI"/> + <field name="MULTANI_ID"/> + <field name="MUSICAL_SYMBOLS"/> + <field name="MUSICAL_SYMBOLS_ID"/> + <field name="MYANMAR"/> + <field name="MYANMAR_EXTENDED_A"/> + <field name="MYANMAR_EXTENDED_A_ID"/> + <field name="MYANMAR_EXTENDED_B"/> + <field name="MYANMAR_EXTENDED_B_ID"/> + <field name="MYANMAR_ID"/> + <field name="NABATAEAN"/> + <field name="NABATAEAN_ID"/> + <field name="NEWA" since="26"/> + <field name="NEWA_ID" since="26"/> + <field name="NEW_TAI_LUE"/> + <field name="NEW_TAI_LUE_ID"/> + <field name="NKO"/> + <field name="NKO_ID"/> + <field name="NO_BLOCK"/> + <field name="NUMBER_FORMS"/> + <field name="NUMBER_FORMS_ID"/> + <field name="OGHAM"/> + <field name="OGHAM_ID"/> + <field name="OLD_HUNGARIAN"/> + <field name="OLD_HUNGARIAN_ID"/> + <field name="OLD_ITALIC"/> + <field name="OLD_ITALIC_ID"/> + <field name="OLD_NORTH_ARABIAN"/> + <field name="OLD_NORTH_ARABIAN_ID"/> + <field name="OLD_PERMIC"/> + <field name="OLD_PERMIC_ID"/> + <field name="OLD_PERSIAN"/> + <field name="OLD_PERSIAN_ID"/> + <field name="OLD_SOUTH_ARABIAN"/> + <field name="OLD_SOUTH_ARABIAN_ID"/> + <field name="OLD_TURKIC"/> + <field name="OLD_TURKIC_ID"/> + <field name="OL_CHIKI"/> + <field name="OL_CHIKI_ID"/> + <field name="OPTICAL_CHARACTER_RECOGNITION"/> + <field name="OPTICAL_CHARACTER_RECOGNITION_ID"/> + <field name="ORIYA"/> + <field name="ORIYA_ID"/> + <field name="ORNAMENTAL_DINGBATS"/> + <field name="ORNAMENTAL_DINGBATS_ID"/> + <field name="OSAGE" since="26"/> + <field name="OSAGE_ID" since="26"/> + <field name="OSMANYA"/> + <field name="OSMANYA_ID"/> + <field name="PAHAWH_HMONG"/> + <field name="PAHAWH_HMONG_ID"/> + <field name="PALMYRENE"/> + <field name="PALMYRENE_ID"/> + <field name="PAU_CIN_HAU"/> + <field name="PAU_CIN_HAU_ID"/> + <field name="PHAGS_PA"/> + <field name="PHAGS_PA_ID"/> + <field name="PHAISTOS_DISC"/> + <field name="PHAISTOS_DISC_ID"/> + <field name="PHOENICIAN"/> + <field name="PHOENICIAN_ID"/> + <field name="PHONETIC_EXTENSIONS"/> + <field name="PHONETIC_EXTENSIONS_ID"/> + <field name="PHONETIC_EXTENSIONS_SUPPLEMENT"/> + <field name="PHONETIC_EXTENSIONS_SUPPLEMENT_ID"/> + <field name="PLAYING_CARDS"/> + <field name="PLAYING_CARDS_ID"/> + <field name="PRIVATE_USE"/> + <field name="PRIVATE_USE_AREA"/> + <field name="PRIVATE_USE_AREA_ID"/> + <field name="PRIVATE_USE_ID"/> + <field name="PSALTER_PAHLAVI"/> + <field name="PSALTER_PAHLAVI_ID"/> + <field name="REJANG"/> + <field name="REJANG_ID"/> + <field name="RUMI_NUMERAL_SYMBOLS"/> + <field name="RUMI_NUMERAL_SYMBOLS_ID"/> + <field name="RUNIC"/> + <field name="RUNIC_ID"/> + <field name="SAMARITAN"/> + <field name="SAMARITAN_ID"/> + <field name="SAURASHTRA"/> + <field name="SAURASHTRA_ID"/> + <field name="SHARADA"/> + <field name="SHARADA_ID"/> + <field name="SHAVIAN"/> + <field name="SHAVIAN_ID"/> + <field name="SHORTHAND_FORMAT_CONTROLS"/> + <field name="SHORTHAND_FORMAT_CONTROLS_ID"/> + <field name="SIDDHAM"/> + <field name="SIDDHAM_ID"/> + <field name="SINHALA"/> + <field name="SINHALA_ARCHAIC_NUMBERS"/> + <field name="SINHALA_ARCHAIC_NUMBERS_ID"/> + <field name="SINHALA_ID"/> + <field name="SMALL_FORM_VARIANTS"/> + <field name="SMALL_FORM_VARIANTS_ID"/> + <field name="SORA_SOMPENG"/> + <field name="SORA_SOMPENG_ID"/> + <field name="SPACING_MODIFIER_LETTERS"/> + <field name="SPACING_MODIFIER_LETTERS_ID"/> + <field name="SPECIALS"/> + <field name="SPECIALS_ID"/> + <field name="SUNDANESE"/> + <field name="SUNDANESE_ID"/> + <field name="SUNDANESE_SUPPLEMENT"/> + <field name="SUNDANESE_SUPPLEMENT_ID"/> + <field name="SUPERSCRIPTS_AND_SUBSCRIPTS"/> + <field name="SUPERSCRIPTS_AND_SUBSCRIPTS_ID"/> + <field name="SUPPLEMENTAL_ARROWS_A"/> + <field name="SUPPLEMENTAL_ARROWS_A_ID"/> + <field name="SUPPLEMENTAL_ARROWS_B"/> + <field name="SUPPLEMENTAL_ARROWS_B_ID"/> + <field name="SUPPLEMENTAL_ARROWS_C"/> + <field name="SUPPLEMENTAL_ARROWS_C_ID"/> + <field name="SUPPLEMENTAL_MATHEMATICAL_OPERATORS"/> + <field name="SUPPLEMENTAL_MATHEMATICAL_OPERATORS_ID"/> + <field name="SUPPLEMENTAL_PUNCTUATION"/> + <field name="SUPPLEMENTAL_PUNCTUATION_ID"/> + <field name="SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS"/> + <field name="SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS_ID"/> + <field name="SUPPLEMENTARY_PRIVATE_USE_AREA_A"/> + <field name="SUPPLEMENTARY_PRIVATE_USE_AREA_A_ID"/> + <field name="SUPPLEMENTARY_PRIVATE_USE_AREA_B"/> + <field name="SUPPLEMENTARY_PRIVATE_USE_AREA_B_ID"/> + <field name="SUTTON_SIGNWRITING"/> + <field name="SUTTON_SIGNWRITING_ID"/> + <field name="SYLOTI_NAGRI"/> + <field name="SYLOTI_NAGRI_ID"/> + <field name="SYRIAC"/> + <field name="SYRIAC_ID"/> + <field name="TAGALOG"/> + <field name="TAGALOG_ID"/> + <field name="TAGBANWA"/> + <field name="TAGBANWA_ID"/> + <field name="TAGS"/> + <field name="TAGS_ID"/> + <field name="TAI_LE"/> + <field name="TAI_LE_ID"/> + <field name="TAI_THAM"/> + <field name="TAI_THAM_ID"/> + <field name="TAI_VIET"/> + <field name="TAI_VIET_ID"/> + <field name="TAI_XUAN_JING_SYMBOLS"/> + <field name="TAI_XUAN_JING_SYMBOLS_ID"/> + <field name="TAKRI"/> + <field name="TAKRI_ID"/> + <field name="TAMIL"/> + <field name="TAMIL_ID"/> + <field name="TANGUT" since="26"/> + <field name="TANGUT_COMPONENTS" since="26"/> + <field name="TANGUT_COMPONENTS_ID" since="26"/> + <field name="TANGUT_ID" since="26"/> + <field name="TELUGU"/> + <field name="TELUGU_ID"/> + <field name="THAANA"/> + <field name="THAANA_ID"/> + <field name="THAI"/> + <field name="THAI_ID"/> + <field name="TIBETAN"/> + <field name="TIBETAN_ID"/> + <field name="TIFINAGH"/> + <field name="TIFINAGH_ID"/> + <field name="TIRHUTA"/> + <field name="TIRHUTA_ID"/> + <field name="TRANSPORT_AND_MAP_SYMBOLS"/> + <field name="TRANSPORT_AND_MAP_SYMBOLS_ID"/> + <field name="UGARITIC"/> + <field name="UGARITIC_ID"/> + <field name="UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS"/> + <field name="UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED"/> + <field name="UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_ID"/> + <field name="UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_ID"/> + <field name="VAI"/> + <field name="VAI_ID"/> + <field name="VARIATION_SELECTORS"/> + <field name="VARIATION_SELECTORS_ID"/> + <field name="VARIATION_SELECTORS_SUPPLEMENT"/> + <field name="VARIATION_SELECTORS_SUPPLEMENT_ID"/> + <field name="VEDIC_EXTENSIONS"/> + <field name="VEDIC_EXTENSIONS_ID"/> + <field name="VERTICAL_FORMS"/> + <field name="VERTICAL_FORMS_ID"/> + <field name="WARANG_CITI"/> + <field name="WARANG_CITI_ID"/> + <field name="YIJING_HEXAGRAM_SYMBOLS"/> + <field name="YIJING_HEXAGRAM_SYMBOLS_ID"/> + <field name="YI_RADICALS"/> + <field name="YI_RADICALS_ID"/> + <field name="YI_SYLLABLES"/> + <field name="YI_SYLLABLES_ID"/> + </class> + <class name="android/icu/lang/UCharacter$WordBreak" since="24"> + <extends name="java/lang/Object"/> + <field name="ALETTER"/> + <field name="CR"/> + <field name="DOUBLE_QUOTE"/> + <field name="EXTEND"/> + <field name="EXTENDNUMLET"/> + <field name="E_BASE" since="26"/> + <field name="E_BASE_GAZ" since="26"/> + <field name="E_MODIFIER" since="26"/> + <field name="FORMAT"/> + <field name="GLUE_AFTER_ZWJ" since="26"/> + <field name="HEBREW_LETTER"/> + <field name="KATAKANA"/> + <field name="LF"/> + <field name="MIDLETTER"/> + <field name="MIDNUM"/> + <field name="MIDNUMLET"/> + <field name="NEWLINE"/> + <field name="NUMERIC"/> + <field name="OTHER"/> + <field name="REGIONAL_INDICATOR"/> + <field name="SINGLE_QUOTE"/> + <field name="ZWJ" since="26"/> + </class> + <class name="android/icu/lang/UCharacterCategory" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/icu/lang/UCharacterEnums$ECharacterCategory"/> + <method name="<init>()V"/> + <method name="toString(I)Ljava/lang/String;"/> + </class> + <class name="android/icu/lang/UCharacterDirection" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/icu/lang/UCharacterEnums$ECharacterDirection"/> + <method name="<init>()V"/> + <method name="toString(I)Ljava/lang/String;"/> + </class> + <class name="android/icu/lang/UCharacterEnums" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/icu/lang/UCharacterEnums$ECharacterCategory" since="24"> + <extends name="java/lang/Object"/> + <field name="COMBINING_SPACING_MARK"/> + <field name="CONNECTOR_PUNCTUATION"/> + <field name="CONTROL"/> + <field name="CURRENCY_SYMBOL"/> + <field name="DASH_PUNCTUATION"/> + <field name="DECIMAL_DIGIT_NUMBER"/> + <field name="ENCLOSING_MARK"/> + <field name="END_PUNCTUATION"/> + <field name="FINAL_PUNCTUATION"/> + <field name="FINAL_QUOTE_PUNCTUATION"/> + <field name="FORMAT"/> + <field name="GENERAL_OTHER_TYPES"/> + <field name="INITIAL_PUNCTUATION"/> + <field name="INITIAL_QUOTE_PUNCTUATION"/> + <field name="LETTER_NUMBER"/> + <field name="LINE_SEPARATOR"/> + <field name="LOWERCASE_LETTER"/> + <field name="MATH_SYMBOL"/> + <field name="MODIFIER_LETTER"/> + <field name="MODIFIER_SYMBOL"/> + <field name="NON_SPACING_MARK"/> + <field name="OTHER_LETTER"/> + <field name="OTHER_NUMBER"/> + <field name="OTHER_PUNCTUATION"/> + <field name="OTHER_SYMBOL"/> + <field name="PARAGRAPH_SEPARATOR"/> + <field name="PRIVATE_USE"/> + <field name="SPACE_SEPARATOR"/> + <field name="START_PUNCTUATION"/> + <field name="SURROGATE"/> + <field name="TITLECASE_LETTER"/> + <field name="UNASSIGNED"/> + <field name="UPPERCASE_LETTER"/> + </class> + <class name="android/icu/lang/UCharacterEnums$ECharacterDirection" since="24"> + <extends name="java/lang/Object"/> + <field name="ARABIC_NUMBER"/> + <field name="BLOCK_SEPARATOR"/> + <field name="BOUNDARY_NEUTRAL"/> + <field name="COMMON_NUMBER_SEPARATOR"/> + <field name="DIRECTIONALITY_ARABIC_NUMBER"/> + <field name="DIRECTIONALITY_BOUNDARY_NEUTRAL"/> + <field name="DIRECTIONALITY_COMMON_NUMBER_SEPARATOR"/> + <field name="DIRECTIONALITY_EUROPEAN_NUMBER"/> + <field name="DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR"/> + <field name="DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR"/> + <field name="DIRECTIONALITY_LEFT_TO_RIGHT"/> + <field name="DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING"/> + <field name="DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE"/> + <field name="DIRECTIONALITY_NONSPACING_MARK"/> + <field name="DIRECTIONALITY_OTHER_NEUTRALS"/> + <field name="DIRECTIONALITY_PARAGRAPH_SEPARATOR"/> + <field name="DIRECTIONALITY_POP_DIRECTIONAL_FORMAT"/> + <field name="DIRECTIONALITY_RIGHT_TO_LEFT"/> + <field name="DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC"/> + <field name="DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING"/> + <field name="DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE"/> + <field name="DIRECTIONALITY_SEGMENT_SEPARATOR"/> + <field name="DIRECTIONALITY_UNDEFINED"/> + <field name="DIRECTIONALITY_WHITESPACE"/> + <field name="DIR_NON_SPACING_MARK"/> + <field name="EUROPEAN_NUMBER"/> + <field name="EUROPEAN_NUMBER_SEPARATOR"/> + <field name="EUROPEAN_NUMBER_TERMINATOR"/> + <field name="FIRST_STRONG_ISOLATE"/> + <field name="LEFT_TO_RIGHT"/> + <field name="LEFT_TO_RIGHT_EMBEDDING"/> + <field name="LEFT_TO_RIGHT_ISOLATE"/> + <field name="LEFT_TO_RIGHT_OVERRIDE"/> + <field name="OTHER_NEUTRAL"/> + <field name="POP_DIRECTIONAL_FORMAT"/> + <field name="POP_DIRECTIONAL_ISOLATE"/> + <field name="RIGHT_TO_LEFT"/> + <field name="RIGHT_TO_LEFT_ARABIC"/> + <field name="RIGHT_TO_LEFT_EMBEDDING"/> + <field name="RIGHT_TO_LEFT_ISOLATE"/> + <field name="RIGHT_TO_LEFT_OVERRIDE"/> + <field name="SEGMENT_SEPARATOR"/> + <field name="WHITE_SPACE_NEUTRAL"/> + </class> + <class name="android/icu/lang/UProperty" since="24"> + <extends name="java/lang/Object"/> + <field name="AGE"/> + <field name="ALPHABETIC"/> + <field name="ASCII_HEX_DIGIT"/> + <field name="BIDI_CLASS"/> + <field name="BIDI_CONTROL"/> + <field name="BIDI_MIRRORED"/> + <field name="BIDI_MIRRORING_GLYPH"/> + <field name="BIDI_PAIRED_BRACKET"/> + <field name="BIDI_PAIRED_BRACKET_TYPE"/> + <field name="BINARY_START"/> + <field name="BLOCK"/> + <field name="CANONICAL_COMBINING_CLASS"/> + <field name="CASED"/> + <field name="CASE_FOLDING"/> + <field name="CASE_IGNORABLE"/> + <field name="CASE_SENSITIVE"/> + <field name="CHANGES_WHEN_CASEFOLDED"/> + <field name="CHANGES_WHEN_CASEMAPPED"/> + <field name="CHANGES_WHEN_LOWERCASED"/> + <field name="CHANGES_WHEN_NFKC_CASEFOLDED"/> + <field name="CHANGES_WHEN_TITLECASED"/> + <field name="CHANGES_WHEN_UPPERCASED"/> + <field name="DASH"/> + <field name="DECOMPOSITION_TYPE"/> + <field name="DEFAULT_IGNORABLE_CODE_POINT"/> + <field name="DEPRECATED"/> + <field name="DIACRITIC"/> + <field name="DOUBLE_START"/> + <field name="EAST_ASIAN_WIDTH"/> + <field name="EXTENDER"/> + <field name="FULL_COMPOSITION_EXCLUSION"/> + <field name="GENERAL_CATEGORY"/> + <field name="GENERAL_CATEGORY_MASK"/> + <field name="GRAPHEME_BASE"/> + <field name="GRAPHEME_CLUSTER_BREAK"/> + <field name="GRAPHEME_EXTEND"/> + <field name="GRAPHEME_LINK"/> + <field name="HANGUL_SYLLABLE_TYPE"/> + <field name="HEX_DIGIT"/> + <field name="HYPHEN"/> + <field name="IDEOGRAPHIC"/> + <field name="IDS_BINARY_OPERATOR"/> + <field name="IDS_TRINARY_OPERATOR"/> + <field name="ID_CONTINUE"/> + <field name="ID_START"/> + <field name="INT_START"/> + <field name="JOINING_GROUP"/> + <field name="JOINING_TYPE"/> + <field name="JOIN_CONTROL"/> + <field name="LEAD_CANONICAL_COMBINING_CLASS"/> + <field name="LINE_BREAK"/> + <field name="LOGICAL_ORDER_EXCEPTION"/> + <field name="LOWERCASE"/> + <field name="LOWERCASE_MAPPING"/> + <field name="MASK_START"/> + <field name="MATH"/> + <field name="NAME"/> + <field name="NFC_INERT"/> + <field name="NFC_QUICK_CHECK"/> + <field name="NFD_INERT"/> + <field name="NFD_QUICK_CHECK"/> + <field name="NFKC_INERT"/> + <field name="NFKC_QUICK_CHECK"/> + <field name="NFKD_INERT"/> + <field name="NFKD_QUICK_CHECK"/> + <field name="NONCHARACTER_CODE_POINT"/> + <field name="NUMERIC_TYPE"/> + <field name="NUMERIC_VALUE"/> + <field name="OTHER_PROPERTY_START"/> + <field name="PATTERN_SYNTAX"/> + <field name="PATTERN_WHITE_SPACE"/> + <field name="POSIX_ALNUM"/> + <field name="POSIX_BLANK"/> + <field name="POSIX_GRAPH"/> + <field name="POSIX_PRINT"/> + <field name="POSIX_XDIGIT"/> + <field name="QUOTATION_MARK"/> + <field name="RADICAL"/> + <field name="SCRIPT"/> + <field name="SCRIPT_EXTENSIONS"/> + <field name="SEGMENT_STARTER"/> + <field name="SENTENCE_BREAK"/> + <field name="SIMPLE_CASE_FOLDING"/> + <field name="SIMPLE_LOWERCASE_MAPPING"/> + <field name="SIMPLE_TITLECASE_MAPPING"/> + <field name="SIMPLE_UPPERCASE_MAPPING"/> + <field name="SOFT_DOTTED"/> + <field name="STRING_START"/> + <field name="S_TERM"/> + <field name="TERMINAL_PUNCTUATION"/> + <field name="TITLECASE_MAPPING"/> + <field name="TRAIL_CANONICAL_COMBINING_CLASS"/> + <field name="UNIFIED_IDEOGRAPH"/> + <field name="UPPERCASE"/> + <field name="UPPERCASE_MAPPING"/> + <field name="VARIATION_SELECTOR"/> + <field name="WHITE_SPACE"/> + <field name="WORD_BREAK"/> + <field name="XID_CONTINUE"/> + <field name="XID_START"/> + </class> + <class name="android/icu/lang/UProperty$NameChoice" since="24"> + <extends name="java/lang/Object"/> + <field name="LONG"/> + <field name="SHORT"/> + </class> + <class name="android/icu/lang/UScript" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="breaksBetweenLetters(I)Z"/> + <method name="getCode(Landroid/icu/util/ULocale;)[I"/> + <method name="getCode(Ljava/lang/String;)[I"/> + <method name="getCode(Ljava/util/Locale;)[I"/> + <method name="getCodeFromName(Ljava/lang/String;)I"/> + <method name="getName(I)Ljava/lang/String;"/> + <method name="getSampleString(I)Ljava/lang/String;"/> + <method name="getScript(I)I"/> + <method name="getScriptExtensions(ILjava/util/BitSet;)I"/> + <method name="getShortName(I)Ljava/lang/String;"/> + <method name="getUsage(I)Landroid/icu/lang/UScript$ScriptUsage;"/> + <method name="hasScript(II)Z"/> + <method name="isCased(I)Z"/> + <method name="isRightToLeft(I)Z"/> + <field name="ADLAM" since="26"/> + <field name="AFAKA"/> + <field name="AHOM"/> + <field name="ANATOLIAN_HIEROGLYPHS"/> + <field name="ARABIC"/> + <field name="ARMENIAN"/> + <field name="AVESTAN"/> + <field name="BALINESE"/> + <field name="BAMUM"/> + <field name="BASSA_VAH"/> + <field name="BATAK"/> + <field name="BENGALI"/> + <field name="BHAIKSUKI" since="26"/> + <field name="BLISSYMBOLS"/> + <field name="BOOK_PAHLAVI"/> + <field name="BOPOMOFO"/> + <field name="BRAHMI"/> + <field name="BRAILLE"/> + <field name="BUGINESE"/> + <field name="BUHID"/> + <field name="CANADIAN_ABORIGINAL"/> + <field name="CARIAN"/> + <field name="CAUCASIAN_ALBANIAN"/> + <field name="CHAKMA"/> + <field name="CHAM"/> + <field name="CHEROKEE"/> + <field name="CIRTH"/> + <field name="COMMON"/> + <field name="COPTIC"/> + <field name="CUNEIFORM"/> + <field name="CYPRIOT"/> + <field name="CYRILLIC"/> + <field name="DEMOTIC_EGYPTIAN"/> + <field name="DESERET"/> + <field name="DEVANAGARI"/> + <field name="DUPLOYAN"/> + <field name="EASTERN_SYRIAC"/> + <field name="EGYPTIAN_HIEROGLYPHS"/> + <field name="ELBASAN"/> + <field name="ESTRANGELO_SYRIAC"/> + <field name="ETHIOPIC"/> + <field name="GEORGIAN"/> + <field name="GLAGOLITIC"/> + <field name="GOTHIC"/> + <field name="GRANTHA"/> + <field name="GREEK"/> + <field name="GUJARATI"/> + <field name="GURMUKHI"/> + <field name="HAN"/> + <field name="HANGUL"/> + <field name="HANUNOO"/> + <field name="HAN_WITH_BOPOMOFO" since="26"/> + <field name="HARAPPAN_INDUS"/> + <field name="HATRAN"/> + <field name="HEBREW"/> + <field name="HIERATIC_EGYPTIAN"/> + <field name="HIRAGANA"/> + <field name="IMPERIAL_ARAMAIC"/> + <field name="INHERITED"/> + <field name="INSCRIPTIONAL_PAHLAVI"/> + <field name="INSCRIPTIONAL_PARTHIAN"/> + <field name="INVALID_CODE"/> + <field name="JAMO" since="26"/> + <field name="JAPANESE"/> + <field name="JAVANESE"/> + <field name="JURCHEN"/> + <field name="KAITHI"/> + <field name="KANNADA"/> + <field name="KATAKANA"/> + <field name="KATAKANA_OR_HIRAGANA"/> + <field name="KAYAH_LI"/> + <field name="KHAROSHTHI"/> + <field name="KHMER"/> + <field name="KHOJKI"/> + <field name="KHUDAWADI"/> + <field name="KHUTSURI"/> + <field name="KOREAN"/> + <field name="KPELLE"/> + <field name="LANNA"/> + <field name="LAO"/> + <field name="LATIN"/> + <field name="LATIN_FRAKTUR"/> + <field name="LATIN_GAELIC"/> + <field name="LEPCHA"/> + <field name="LIMBU"/> + <field name="LINEAR_A"/> + <field name="LINEAR_B"/> + <field name="LISU"/> + <field name="LOMA"/> + <field name="LYCIAN"/> + <field name="LYDIAN"/> + <field name="MAHAJANI"/> + <field name="MALAYALAM"/> + <field name="MANDAEAN"/> + <field name="MANDAIC"/> + <field name="MANICHAEAN"/> + <field name="MARCHEN" since="26"/> + <field name="MATHEMATICAL_NOTATION"/> + <field name="MAYAN_HIEROGLYPHS"/> + <field name="MEITEI_MAYEK"/> + <field name="MENDE"/> + <field name="MEROITIC"/> + <field name="MEROITIC_CURSIVE"/> + <field name="MEROITIC_HIEROGLYPHS"/> + <field name="MIAO"/> + <field name="MODI"/> + <field name="MONGOLIAN"/> + <field name="MOON"/> + <field name="MRO"/> + <field name="MULTANI"/> + <field name="MYANMAR"/> + <field name="NABATAEAN"/> + <field name="NAKHI_GEBA"/> + <field name="NEWA" since="26"/> + <field name="NEW_TAI_LUE"/> + <field name="NKO"/> + <field name="NUSHU"/> + <field name="OGHAM"/> + <field name="OLD_CHURCH_SLAVONIC_CYRILLIC"/> + <field name="OLD_HUNGARIAN"/> + <field name="OLD_ITALIC"/> + <field name="OLD_NORTH_ARABIAN"/> + <field name="OLD_PERMIC"/> + <field name="OLD_PERSIAN"/> + <field name="OLD_SOUTH_ARABIAN"/> + <field name="OL_CHIKI"/> + <field name="ORIYA"/> + <field name="ORKHON"/> + <field name="OSAGE" since="26"/> + <field name="OSMANYA"/> + <field name="PAHAWH_HMONG"/> + <field name="PALMYRENE"/> + <field name="PAU_CIN_HAU"/> + <field name="PHAGS_PA"/> + <field name="PHOENICIAN"/> + <field name="PHONETIC_POLLARD"/> + <field name="PSALTER_PAHLAVI"/> + <field name="REJANG"/> + <field name="RONGORONGO"/> + <field name="RUNIC"/> + <field name="SAMARITAN"/> + <field name="SARATI"/> + <field name="SAURASHTRA"/> + <field name="SHARADA"/> + <field name="SHAVIAN"/> + <field name="SIDDHAM"/> + <field name="SIGN_WRITING"/> + <field name="SIMPLIFIED_HAN"/> + <field name="SINDHI"/> + <field name="SINHALA"/> + <field name="SORA_SOMPENG"/> + <field name="SUNDANESE"/> + <field name="SYLOTI_NAGRI"/> + <field name="SYMBOLS"/> + <field name="SYMBOLS_EMOJI" since="26"/> + <field name="SYRIAC"/> + <field name="TAGALOG"/> + <field name="TAGBANWA"/> + <field name="TAI_LE"/> + <field name="TAI_VIET"/> + <field name="TAKRI"/> + <field name="TAMIL"/> + <field name="TANGUT"/> + <field name="TELUGU"/> + <field name="TENGWAR"/> + <field name="THAANA"/> + <field name="THAI"/> + <field name="TIBETAN"/> + <field name="TIFINAGH"/> + <field name="TIRHUTA"/> + <field name="TRADITIONAL_HAN"/> + <field name="UCAS"/> + <field name="UGARITIC"/> + <field name="UNKNOWN"/> + <field name="UNWRITTEN_LANGUAGES"/> + <field name="VAI"/> + <field name="VISIBLE_SPEECH"/> + <field name="WARANG_CITI"/> + <field name="WESTERN_SYRIAC"/> + <field name="WOLEAI"/> + <field name="YI"/> + </class> + <class name="android/icu/lang/UScript$ScriptUsage" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/lang/UScript$ScriptUsage;"/> + <method name="values()[Landroid/icu/lang/UScript$ScriptUsage;"/> + <field name="ASPIRATIONAL"/> + <field name="EXCLUDED"/> + <field name="LIMITED_USE"/> + <field name="NOT_ENCODED"/> + <field name="RECOMMENDED"/> + <field name="UNKNOWN"/> + </class> + <class name="android/icu/math/BigDecimal" since="24"> + <extends name="java/lang/Number"/> + <implements name="java/lang/Comparable"/> + <method name="<init>(D)V"/> + <method name="<init>(I)V"/> + <method name="<init>(J)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/math/BigDecimal;)V"/> + <method name="<init>(Ljava/math/BigInteger;)V"/> + <method name="<init>(Ljava/math/BigInteger;I)V"/> + <method name="<init>([C)V"/> + <method name="<init>([CII)V"/> + <method name="abs()Landroid/icu/math/BigDecimal;"/> + <method name="abs(Landroid/icu/math/MathContext;)Landroid/icu/math/BigDecimal;"/> + <method name="add(Landroid/icu/math/BigDecimal;)Landroid/icu/math/BigDecimal;"/> + <method name="add(Landroid/icu/math/BigDecimal;Landroid/icu/math/MathContext;)Landroid/icu/math/BigDecimal;"/> + <method name="byteValueExact()B"/> + <method name="compareTo(Landroid/icu/math/BigDecimal;)I"/> + <method name="compareTo(Landroid/icu/math/BigDecimal;Landroid/icu/math/MathContext;)I"/> + <method name="divide(Landroid/icu/math/BigDecimal;)Landroid/icu/math/BigDecimal;"/> + <method name="divide(Landroid/icu/math/BigDecimal;I)Landroid/icu/math/BigDecimal;"/> + <method name="divide(Landroid/icu/math/BigDecimal;II)Landroid/icu/math/BigDecimal;"/> + <method name="divide(Landroid/icu/math/BigDecimal;Landroid/icu/math/MathContext;)Landroid/icu/math/BigDecimal;"/> + <method name="divideInteger(Landroid/icu/math/BigDecimal;)Landroid/icu/math/BigDecimal;"/> + <method name="divideInteger(Landroid/icu/math/BigDecimal;Landroid/icu/math/MathContext;)Landroid/icu/math/BigDecimal;"/> + <method name="format(II)Ljava/lang/String;"/> + <method name="format(IIIIII)Ljava/lang/String;"/> + <method name="intValueExact()I"/> + <method name="longValueExact()J"/> + <method name="max(Landroid/icu/math/BigDecimal;)Landroid/icu/math/BigDecimal;"/> + <method name="max(Landroid/icu/math/BigDecimal;Landroid/icu/math/MathContext;)Landroid/icu/math/BigDecimal;"/> + <method name="min(Landroid/icu/math/BigDecimal;)Landroid/icu/math/BigDecimal;"/> + <method name="min(Landroid/icu/math/BigDecimal;Landroid/icu/math/MathContext;)Landroid/icu/math/BigDecimal;"/> + <method name="movePointLeft(I)Landroid/icu/math/BigDecimal;"/> + <method name="movePointRight(I)Landroid/icu/math/BigDecimal;"/> + <method name="multiply(Landroid/icu/math/BigDecimal;)Landroid/icu/math/BigDecimal;"/> + <method name="multiply(Landroid/icu/math/BigDecimal;Landroid/icu/math/MathContext;)Landroid/icu/math/BigDecimal;"/> + <method name="negate()Landroid/icu/math/BigDecimal;"/> + <method name="negate(Landroid/icu/math/MathContext;)Landroid/icu/math/BigDecimal;"/> + <method name="plus()Landroid/icu/math/BigDecimal;"/> + <method name="plus(Landroid/icu/math/MathContext;)Landroid/icu/math/BigDecimal;"/> + <method name="pow(Landroid/icu/math/BigDecimal;)Landroid/icu/math/BigDecimal;"/> + <method name="pow(Landroid/icu/math/BigDecimal;Landroid/icu/math/MathContext;)Landroid/icu/math/BigDecimal;"/> + <method name="remainder(Landroid/icu/math/BigDecimal;)Landroid/icu/math/BigDecimal;"/> + <method name="remainder(Landroid/icu/math/BigDecimal;Landroid/icu/math/MathContext;)Landroid/icu/math/BigDecimal;"/> + <method name="scale()I"/> + <method name="setScale(I)Landroid/icu/math/BigDecimal;"/> + <method name="setScale(II)Landroid/icu/math/BigDecimal;"/> + <method name="shortValueExact()S"/> + <method name="signum()I"/> + <method name="subtract(Landroid/icu/math/BigDecimal;)Landroid/icu/math/BigDecimal;"/> + <method name="subtract(Landroid/icu/math/BigDecimal;Landroid/icu/math/MathContext;)Landroid/icu/math/BigDecimal;"/> + <method name="toBigDecimal()Ljava/math/BigDecimal;"/> + <method name="toBigInteger()Ljava/math/BigInteger;"/> + <method name="toBigIntegerExact()Ljava/math/BigInteger;"/> + <method name="toCharArray()[C"/> + <method name="unscaledValue()Ljava/math/BigInteger;"/> + <method name="valueOf(D)Landroid/icu/math/BigDecimal;"/> + <method name="valueOf(J)Landroid/icu/math/BigDecimal;"/> + <method name="valueOf(JI)Landroid/icu/math/BigDecimal;"/> + <field name="ONE"/> + <field name="ROUND_CEILING"/> + <field name="ROUND_DOWN"/> + <field name="ROUND_FLOOR"/> + <field name="ROUND_HALF_DOWN"/> + <field name="ROUND_HALF_EVEN"/> + <field name="ROUND_HALF_UP"/> + <field name="ROUND_UNNECESSARY"/> + <field name="ROUND_UP"/> + <field name="TEN"/> + <field name="ZERO"/> + </class> + <class name="android/icu/math/MathContext" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(I)V"/> + <method name="<init>(II)V"/> + <method name="<init>(IIZ)V"/> + <method name="<init>(IIZI)V"/> + <method name="getDigits()I"/> + <method name="getForm()I"/> + <method name="getLostDigits()Z"/> + <method name="getRoundingMode()I"/> + <field name="DEFAULT"/> + <field name="ENGINEERING"/> + <field name="PLAIN"/> + <field name="ROUND_CEILING"/> + <field name="ROUND_DOWN"/> + <field name="ROUND_FLOOR"/> + <field name="ROUND_HALF_DOWN"/> + <field name="ROUND_HALF_EVEN"/> + <field name="ROUND_HALF_UP"/> + <field name="ROUND_UNNECESSARY"/> + <field name="ROUND_UP"/> + <field name="SCIENTIFIC"/> + </class> + <class name="android/icu/text/AlphabeticIndex" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Iterable"/> + <method name="<init>(Landroid/icu/text/RuleBasedCollator;)V"/> + <method name="<init>(Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Ljava/util/Locale;)V"/> + <method name="addLabels(Landroid/icu/text/UnicodeSet;)Landroid/icu/text/AlphabeticIndex;"/> + <method name="addLabels([Landroid/icu/util/ULocale;)Landroid/icu/text/AlphabeticIndex;"/> + <method name="addLabels([Ljava/util/Locale;)Landroid/icu/text/AlphabeticIndex;"/> + <method name="addRecord(Ljava/lang/CharSequence;Ljava/lang/Object;)Landroid/icu/text/AlphabeticIndex;"/> + <method name="buildImmutableIndex()Landroid/icu/text/AlphabeticIndex$ImmutableIndex;"/> + <method name="clearRecords()Landroid/icu/text/AlphabeticIndex;"/> + <method name="getBucketCount()I"/> + <method name="getBucketIndex(Ljava/lang/CharSequence;)I"/> + <method name="getBucketLabels()Ljava/util/List;"/> + <method name="getCollator()Landroid/icu/text/RuleBasedCollator;"/> + <method name="getInflowLabel()Ljava/lang/String;"/> + <method name="getMaxLabelCount()I"/> + <method name="getOverflowLabel()Ljava/lang/String;"/> + <method name="getRecordCount()I"/> + <method name="getUnderflowLabel()Ljava/lang/String;"/> + <method name="setInflowLabel(Ljava/lang/String;)Landroid/icu/text/AlphabeticIndex;"/> + <method name="setMaxLabelCount(I)Landroid/icu/text/AlphabeticIndex;"/> + <method name="setOverflowLabel(Ljava/lang/String;)Landroid/icu/text/AlphabeticIndex;"/> + <method name="setUnderflowLabel(Ljava/lang/String;)Landroid/icu/text/AlphabeticIndex;"/> + </class> + <class name="android/icu/text/AlphabeticIndex$Bucket" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Iterable"/> + <method name="<init>()V"/> + <method name="getLabel()Ljava/lang/String;"/> + <method name="getLabelType()Landroid/icu/text/AlphabeticIndex$Bucket$LabelType;"/> + <method name="size()I"/> + </class> + <class name="android/icu/text/AlphabeticIndex$Bucket$LabelType" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/AlphabeticIndex$Bucket$LabelType;"/> + <method name="values()[Landroid/icu/text/AlphabeticIndex$Bucket$LabelType;"/> + <field name="INFLOW"/> + <field name="NORMAL"/> + <field name="OVERFLOW"/> + <field name="UNDERFLOW"/> + </class> + <class name="android/icu/text/AlphabeticIndex$ImmutableIndex" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Iterable"/> + <method name="<init>()V"/> + <method name="getBucket(I)Landroid/icu/text/AlphabeticIndex$Bucket;"/> + <method name="getBucketCount()I"/> + <method name="getBucketIndex(Ljava/lang/CharSequence;)I"/> + </class> + <class name="android/icu/text/AlphabeticIndex$Record" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getData()Ljava/lang/Object;"/> + <method name="getName()Ljava/lang/CharSequence;"/> + </class> + <class name="android/icu/text/BreakIterator" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="current()I"/> + <method name="first()I"/> + <method name="following(I)I"/> + <method name="getAvailableLocales()[Ljava/util/Locale;"/> + <method name="getCharacterInstance()Landroid/icu/text/BreakIterator;"/> + <method name="getCharacterInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/BreakIterator;"/> + <method name="getCharacterInstance(Ljava/util/Locale;)Landroid/icu/text/BreakIterator;"/> + <method name="getLineInstance()Landroid/icu/text/BreakIterator;"/> + <method name="getLineInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/BreakIterator;"/> + <method name="getLineInstance(Ljava/util/Locale;)Landroid/icu/text/BreakIterator;"/> + <method name="getRuleStatus()I"/> + <method name="getRuleStatusVec([I)I"/> + <method name="getSentenceInstance()Landroid/icu/text/BreakIterator;"/> + <method name="getSentenceInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/BreakIterator;"/> + <method name="getSentenceInstance(Ljava/util/Locale;)Landroid/icu/text/BreakIterator;"/> + <method name="getText()Ljava/text/CharacterIterator;"/> + <method name="getTitleInstance()Landroid/icu/text/BreakIterator;"/> + <method name="getTitleInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/BreakIterator;"/> + <method name="getTitleInstance(Ljava/util/Locale;)Landroid/icu/text/BreakIterator;"/> + <method name="getWordInstance()Landroid/icu/text/BreakIterator;"/> + <method name="getWordInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/BreakIterator;"/> + <method name="getWordInstance(Ljava/util/Locale;)Landroid/icu/text/BreakIterator;"/> + <method name="isBoundary(I)Z"/> + <method name="last()I"/> + <method name="next()I"/> + <method name="next(I)I"/> + <method name="preceding(I)I"/> + <method name="previous()I"/> + <method name="setText(Ljava/lang/String;)V"/> + <method name="setText(Ljava/text/CharacterIterator;)V"/> + <field name="DONE"/> + <field name="KIND_CHARACTER"/> + <field name="KIND_LINE"/> + <field name="KIND_SENTENCE"/> + <field name="KIND_TITLE"/> + <field name="KIND_WORD"/> + <field name="WORD_IDEO"/> + <field name="WORD_IDEO_LIMIT"/> + <field name="WORD_KANA"/> + <field name="WORD_KANA_LIMIT"/> + <field name="WORD_LETTER"/> + <field name="WORD_LETTER_LIMIT"/> + <field name="WORD_NONE"/> + <field name="WORD_NONE_LIMIT"/> + <field name="WORD_NUMBER"/> + <field name="WORD_NUMBER_LIMIT"/> + </class> + <class name="android/icu/text/CollationElementIterator" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getMaxExpansion(I)I"/> + <method name="getOffset()I"/> + <method name="next()I"/> + <method name="previous()I"/> + <method name="primaryOrder(I)I"/> + <method name="reset()V"/> + <method name="secondaryOrder(I)I"/> + <method name="setOffset(I)V"/> + <method name="setText(Landroid/icu/text/UCharacterIterator;)V"/> + <method name="setText(Ljava/lang/String;)V"/> + <method name="setText(Ljava/text/CharacterIterator;)V"/> + <method name="tertiaryOrder(I)I"/> + <field name="IGNORABLE"/> + <field name="NULLORDER"/> + </class> + <class name="android/icu/text/CollationKey" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Comparable"/> + <method name="<init>(Ljava/lang/String;[B)V"/> + <method name="compareTo(Landroid/icu/text/CollationKey;)I"/> + <method name="equals(Landroid/icu/text/CollationKey;)Z"/> + <method name="getBound(II)Landroid/icu/text/CollationKey;"/> + <method name="getSourceString()Ljava/lang/String;"/> + <method name="merge(Landroid/icu/text/CollationKey;)Landroid/icu/text/CollationKey;"/> + <method name="toByteArray()[B"/> + </class> + <class name="android/icu/text/CollationKey$BoundMode" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="LOWER"/> + <field name="UPPER"/> + <field name="UPPER_LONG"/> + </class> + <class name="android/icu/text/Collator" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/icu/util/Freezable"/> + <implements name="java/lang/Cloneable"/> + <implements name="java/util/Comparator"/> + <method name="<init>()V"/> + <method name="cloneAsThawed()Landroid/icu/text/Collator;"/> + <method name="compare(Ljava/lang/String;Ljava/lang/String;)I"/> + <method name="equals(Ljava/lang/String;Ljava/lang/String;)Z"/> + <method name="freeze()Landroid/icu/text/Collator;"/> + <method name="getAvailableLocales()[Ljava/util/Locale;"/> + <method name="getAvailableULocales()[Landroid/icu/util/ULocale;"/> + <method name="getCollationKey(Ljava/lang/String;)Landroid/icu/text/CollationKey;"/> + <method name="getDecomposition()I"/> + <method name="getDisplayName(Landroid/icu/util/ULocale;)Ljava/lang/String;"/> + <method name="getDisplayName(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Ljava/lang/String;"/> + <method name="getDisplayName(Ljava/util/Locale;)Ljava/lang/String;"/> + <method name="getDisplayName(Ljava/util/Locale;Ljava/util/Locale;)Ljava/lang/String;"/> + <method name="getEquivalentReorderCodes(I)[I"/> + <method name="getFunctionalEquivalent(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/util/ULocale;"/> + <method name="getFunctionalEquivalent(Ljava/lang/String;Landroid/icu/util/ULocale;[Z)Landroid/icu/util/ULocale;"/> + <method name="getInstance()Landroid/icu/text/Collator;"/> + <method name="getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/Collator;"/> + <method name="getInstance(Ljava/util/Locale;)Landroid/icu/text/Collator;"/> + <method name="getKeywordValues(Ljava/lang/String;)[Ljava/lang/String;"/> + <method name="getKeywordValuesForLocale(Ljava/lang/String;Landroid/icu/util/ULocale;Z)[Ljava/lang/String;"/> + <method name="getKeywords()[Ljava/lang/String;"/> + <method name="getMaxVariable()I"/> + <method name="getReorderCodes()[I"/> + <method name="getStrength()I"/> + <method name="getTailoredSet()Landroid/icu/text/UnicodeSet;"/> + <method name="getUCAVersion()Landroid/icu/util/VersionInfo;"/> + <method name="getVariableTop()I"/> + <method name="getVersion()Landroid/icu/util/VersionInfo;"/> + <method name="setDecomposition(I)V"/> + <method name="setMaxVariable(I)Landroid/icu/text/Collator;"/> + <method name="setReorderCodes([I)V"/> + <method name="setStrength(I)V"/> + <field name="CANONICAL_DECOMPOSITION"/> + <field name="FULL_DECOMPOSITION"/> + <field name="IDENTICAL"/> + <field name="NO_DECOMPOSITION"/> + <field name="PRIMARY"/> + <field name="QUATERNARY"/> + <field name="SECONDARY"/> + <field name="TERTIARY"/> + </class> + <class name="android/icu/text/Collator$ReorderCodes" since="24"> + <extends name="java/lang/Object"/> + <field name="CURRENCY"/> + <field name="DEFAULT"/> + <field name="DIGIT"/> + <field name="FIRST"/> + <field name="NONE"/> + <field name="OTHERS"/> + <field name="PUNCTUATION"/> + <field name="SPACE"/> + <field name="SYMBOL"/> + </class> + <class name="android/icu/text/CompactDecimalFormat" since="24"> + <extends name="android/icu/text/DecimalFormat"/> + <method name="<init>()V"/> + <method name="getInstance(Landroid/icu/util/ULocale;Landroid/icu/text/CompactDecimalFormat$CompactStyle;)Landroid/icu/text/CompactDecimalFormat;"/> + <method name="getInstance(Ljava/util/Locale;Landroid/icu/text/CompactDecimalFormat$CompactStyle;)Landroid/icu/text/CompactDecimalFormat;"/> + </class> + <class name="android/icu/text/CompactDecimalFormat$CompactStyle" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/CompactDecimalFormat$CompactStyle;"/> + <method name="values()[Landroid/icu/text/CompactDecimalFormat$CompactStyle;"/> + <field name="LONG"/> + <field name="SHORT"/> + </class> + <class name="android/icu/text/CurrencyPluralInfo" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Ljava/util/Locale;)V"/> + <method name="getCurrencyPluralPattern(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getInstance()Landroid/icu/text/CurrencyPluralInfo;"/> + <method name="getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/CurrencyPluralInfo;"/> + <method name="getInstance(Ljava/util/Locale;)Landroid/icu/text/CurrencyPluralInfo;"/> + <method name="getLocale()Landroid/icu/util/ULocale;"/> + <method name="getPluralRules()Landroid/icu/text/PluralRules;"/> + <method name="setCurrencyPluralPattern(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="setLocale(Landroid/icu/util/ULocale;)V"/> + <method name="setPluralRules(Ljava/lang/String;)V"/> + </class> + <class name="android/icu/text/DateFormat" since="24"> + <extends name="android/icu/text/UFormat"/> + <method name="<init>()V"/> + <method name="format(Landroid/icu/util/Calendar;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;"/> + <method name="format(Ljava/util/Date;)Ljava/lang/String;"/> + <method name="format(Ljava/util/Date;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;"/> + <method name="getAvailableLocales()[Ljava/util/Locale;"/> + <method name="getBooleanAttribute(Landroid/icu/text/DateFormat$BooleanAttribute;)Z"/> + <method name="getCalendar()Landroid/icu/util/Calendar;"/> + <method name="getContext(Landroid/icu/text/DisplayContext$Type;)Landroid/icu/text/DisplayContext;"/> + <method name="getDateInstance()Landroid/icu/text/DateFormat;"/> + <method name="getDateInstance(I)Landroid/icu/text/DateFormat;"/> + <method name="getDateInstance(ILandroid/icu/util/ULocale;)Landroid/icu/text/DateFormat;"/> + <method name="getDateInstance(ILjava/util/Locale;)Landroid/icu/text/DateFormat;"/> + <method name="getDateInstance(Landroid/icu/util/Calendar;I)Landroid/icu/text/DateFormat;"/> + <method name="getDateInstance(Landroid/icu/util/Calendar;ILandroid/icu/util/ULocale;)Landroid/icu/text/DateFormat;"/> + <method name="getDateInstance(Landroid/icu/util/Calendar;ILjava/util/Locale;)Landroid/icu/text/DateFormat;"/> + <method name="getDateTimeInstance()Landroid/icu/text/DateFormat;"/> + <method name="getDateTimeInstance(II)Landroid/icu/text/DateFormat;"/> + <method name="getDateTimeInstance(IILandroid/icu/util/ULocale;)Landroid/icu/text/DateFormat;"/> + <method name="getDateTimeInstance(IILjava/util/Locale;)Landroid/icu/text/DateFormat;"/> + <method name="getDateTimeInstance(Landroid/icu/util/Calendar;II)Landroid/icu/text/DateFormat;"/> + <method name="getDateTimeInstance(Landroid/icu/util/Calendar;IILandroid/icu/util/ULocale;)Landroid/icu/text/DateFormat;"/> + <method name="getDateTimeInstance(Landroid/icu/util/Calendar;IILjava/util/Locale;)Landroid/icu/text/DateFormat;"/> + <method name="getInstance()Landroid/icu/text/DateFormat;"/> + <method name="getInstance(Landroid/icu/util/Calendar;)Landroid/icu/text/DateFormat;"/> + <method name="getInstance(Landroid/icu/util/Calendar;Ljava/util/Locale;)Landroid/icu/text/DateFormat;"/> + <method name="getInstanceForSkeleton(Landroid/icu/util/Calendar;Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormat;"/> + <method name="getInstanceForSkeleton(Landroid/icu/util/Calendar;Ljava/lang/String;Ljava/util/Locale;)Landroid/icu/text/DateFormat;"/> + <method name="getInstanceForSkeleton(Ljava/lang/String;)Landroid/icu/text/DateFormat;"/> + <method name="getInstanceForSkeleton(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormat;"/> + <method name="getInstanceForSkeleton(Ljava/lang/String;Ljava/util/Locale;)Landroid/icu/text/DateFormat;"/> + <method name="getNumberFormat()Landroid/icu/text/NumberFormat;"/> + <method name="getPatternInstance(Landroid/icu/util/Calendar;Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormat;"/> + <method name="getPatternInstance(Landroid/icu/util/Calendar;Ljava/lang/String;Ljava/util/Locale;)Landroid/icu/text/DateFormat;"/> + <method name="getPatternInstance(Ljava/lang/String;)Landroid/icu/text/DateFormat;"/> + <method name="getPatternInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormat;"/> + <method name="getPatternInstance(Ljava/lang/String;Ljava/util/Locale;)Landroid/icu/text/DateFormat;"/> + <method name="getTimeInstance()Landroid/icu/text/DateFormat;"/> + <method name="getTimeInstance(I)Landroid/icu/text/DateFormat;"/> + <method name="getTimeInstance(ILandroid/icu/util/ULocale;)Landroid/icu/text/DateFormat;"/> + <method name="getTimeInstance(ILjava/util/Locale;)Landroid/icu/text/DateFormat;"/> + <method name="getTimeInstance(Landroid/icu/util/Calendar;I)Landroid/icu/text/DateFormat;"/> + <method name="getTimeInstance(Landroid/icu/util/Calendar;ILandroid/icu/util/ULocale;)Landroid/icu/text/DateFormat;"/> + <method name="getTimeInstance(Landroid/icu/util/Calendar;ILjava/util/Locale;)Landroid/icu/text/DateFormat;"/> + <method name="getTimeZone()Landroid/icu/util/TimeZone;"/> + <method name="isCalendarLenient()Z"/> + <method name="isLenient()Z"/> + <method name="parse(Ljava/lang/String;)Ljava/util/Date;"/> + <method name="parse(Ljava/lang/String;Landroid/icu/util/Calendar;Ljava/text/ParsePosition;)V"/> + <method name="parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/util/Date;"/> + <method name="setBooleanAttribute(Landroid/icu/text/DateFormat$BooleanAttribute;Z)Landroid/icu/text/DateFormat;"/> + <method name="setCalendar(Landroid/icu/util/Calendar;)V"/> + <method name="setCalendarLenient(Z)V"/> + <method name="setContext(Landroid/icu/text/DisplayContext;)V"/> + <method name="setLenient(Z)V"/> + <method name="setNumberFormat(Landroid/icu/text/NumberFormat;)V"/> + <method name="setTimeZone(Landroid/icu/util/TimeZone;)V"/> + <field name="ABBR_GENERIC_TZ"/> + <field name="ABBR_MONTH"/> + <field name="ABBR_MONTH_DAY"/> + <field name="ABBR_MONTH_WEEKDAY_DAY"/> + <field name="ABBR_QUARTER"/> + <field name="ABBR_SPECIFIC_TZ"/> + <field name="ABBR_UTC_TZ"/> + <field name="ABBR_WEEKDAY"/> + <field name="AM_PM_FIELD"/> + <field name="AM_PM_MIDNIGHT_NOON_FIELD" since="27"/> + <field name="DATE_FIELD"/> + <field name="DAY"/> + <field name="DAY_OF_WEEK_FIELD"/> + <field name="DAY_OF_WEEK_IN_MONTH_FIELD"/> + <field name="DAY_OF_YEAR_FIELD"/> + <field name="DEFAULT"/> + <field name="DOW_LOCAL_FIELD"/> + <field name="ERA_FIELD"/> + <field name="EXTENDED_YEAR_FIELD"/> + <field name="FLEXIBLE_DAY_PERIOD_FIELD" since="27"/> + <field name="FRACTIONAL_SECOND_FIELD"/> + <field name="FULL"/> + <field name="GENERIC_TZ"/> + <field name="HOUR"/> + <field name="HOUR0_FIELD"/> + <field name="HOUR1_FIELD"/> + <field name="HOUR24"/> + <field name="HOUR24_MINUTE"/> + <field name="HOUR24_MINUTE_SECOND"/> + <field name="HOUR_MINUTE"/> + <field name="HOUR_MINUTE_SECOND"/> + <field name="HOUR_OF_DAY0_FIELD"/> + <field name="HOUR_OF_DAY1_FIELD"/> + <field name="JULIAN_DAY_FIELD"/> + <field name="LOCATION_TZ"/> + <field name="LONG"/> + <field name="MEDIUM"/> + <field name="MILLISECONDS_IN_DAY_FIELD"/> + <field name="MILLISECOND_FIELD"/> + <field name="MINUTE"/> + <field name="MINUTE_FIELD"/> + <field name="MINUTE_SECOND"/> + <field name="MONTH"/> + <field name="MONTH_DAY"/> + <field name="MONTH_FIELD"/> + <field name="MONTH_WEEKDAY_DAY"/> + <field name="NONE"/> + <field name="NUM_MONTH"/> + <field name="NUM_MONTH_DAY"/> + <field name="NUM_MONTH_WEEKDAY_DAY"/> + <field name="QUARTER"/> + <field name="QUARTER_FIELD"/> + <field name="RELATIVE"/> + <field name="RELATIVE_DEFAULT"/> + <field name="RELATIVE_FULL"/> + <field name="RELATIVE_LONG"/> + <field name="RELATIVE_MEDIUM"/> + <field name="RELATIVE_SHORT"/> + <field name="SECOND"/> + <field name="SECOND_FIELD"/> + <field name="SHORT"/> + <field name="SPECIFIC_TZ"/> + <field name="STANDALONE_DAY_FIELD"/> + <field name="STANDALONE_MONTH_FIELD"/> + <field name="STANDALONE_QUARTER_FIELD"/> + <field name="TIMEZONE_FIELD"/> + <field name="TIMEZONE_GENERIC_FIELD"/> + <field name="TIMEZONE_ISO_FIELD"/> + <field name="TIMEZONE_ISO_LOCAL_FIELD"/> + <field name="TIMEZONE_LOCALIZED_GMT_OFFSET_FIELD"/> + <field name="TIMEZONE_RFC_FIELD"/> + <field name="TIMEZONE_SPECIAL_FIELD"/> + <field name="WEEKDAY"/> + <field name="WEEK_OF_MONTH_FIELD"/> + <field name="WEEK_OF_YEAR_FIELD"/> + <field name="YEAR"/> + <field name="YEAR_ABBR_MONTH"/> + <field name="YEAR_ABBR_MONTH_DAY"/> + <field name="YEAR_ABBR_MONTH_WEEKDAY_DAY"/> + <field name="YEAR_ABBR_QUARTER"/> + <field name="YEAR_FIELD"/> + <field name="YEAR_MONTH"/> + <field name="YEAR_MONTH_DAY"/> + <field name="YEAR_MONTH_WEEKDAY_DAY"/> + <field name="YEAR_NAME_FIELD"/> + <field name="YEAR_NUM_MONTH"/> + <field name="YEAR_NUM_MONTH_DAY"/> + <field name="YEAR_NUM_MONTH_WEEKDAY_DAY"/> + <field name="YEAR_QUARTER"/> + <field name="YEAR_WOY_FIELD"/> + <field name="calendar"/> + <field name="numberFormat"/> + </class> + <class name="android/icu/text/DateFormat$BooleanAttribute" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/DateFormat$BooleanAttribute;"/> + <method name="values()[Landroid/icu/text/DateFormat$BooleanAttribute;"/> + <field name="PARSE_ALLOW_NUMERIC"/> + <field name="PARSE_ALLOW_WHITESPACE"/> + <field name="PARSE_MULTIPLE_PATTERNS_FOR_MATCH" since="26"/> + <field name="PARSE_PARTIAL_LITERAL_MATCH" since="26"/> + </class> + <class name="android/icu/text/DateFormat$Field" since="24"> + <extends name="java/text/Format$Field"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="getCalendarField()I"/> + <method name="ofCalendarField(I)Landroid/icu/text/DateFormat$Field;"/> + <field name="AM_PM"/> + <field name="AM_PM_MIDNIGHT_NOON" since="27"/> + <field name="DAY_OF_MONTH"/> + <field name="DAY_OF_WEEK"/> + <field name="DAY_OF_WEEK_IN_MONTH"/> + <field name="DAY_OF_YEAR"/> + <field name="DOW_LOCAL"/> + <field name="ERA"/> + <field name="EXTENDED_YEAR"/> + <field name="FLEXIBLE_DAY_PERIOD" since="27"/> + <field name="HOUR0"/> + <field name="HOUR1"/> + <field name="HOUR_OF_DAY0"/> + <field name="HOUR_OF_DAY1"/> + <field name="JULIAN_DAY"/> + <field name="MILLISECOND"/> + <field name="MILLISECONDS_IN_DAY"/> + <field name="MINUTE"/> + <field name="MONTH"/> + <field name="QUARTER"/> + <field name="SECOND"/> + <field name="TIME_ZONE"/> + <field name="WEEK_OF_MONTH"/> + <field name="WEEK_OF_YEAR"/> + <field name="YEAR"/> + <field name="YEAR_WOY"/> + </class> + <class name="android/icu/text/DateFormatSymbols" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Landroid/icu/util/Calendar;Ljava/util/Locale;)V"/> + <method name="<init>(Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Ljava/lang/Class;Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Ljava/lang/Class;Ljava/util/Locale;)V"/> + <method name="<init>(Ljava/util/Locale;)V"/> + <method name="<init>(Ljava/util/ResourceBundle;Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Ljava/util/ResourceBundle;Ljava/util/Locale;)V"/> + <method name="getAmPmStrings()[Ljava/lang/String;"/> + <method name="getAvailableLocales()[Ljava/util/Locale;"/> + <method name="getEraNames()[Ljava/lang/String;"/> + <method name="getEras()[Ljava/lang/String;"/> + <method name="getInstance()Landroid/icu/text/DateFormatSymbols;"/> + <method name="getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormatSymbols;"/> + <method name="getInstance(Ljava/util/Locale;)Landroid/icu/text/DateFormatSymbols;"/> + <method name="getLocalPatternChars()Ljava/lang/String;"/> + <method name="getMonths()[Ljava/lang/String;"/> + <method name="getMonths(II)[Ljava/lang/String;"/> + <method name="getQuarters(II)[Ljava/lang/String;"/> + <method name="getShortMonths()[Ljava/lang/String;"/> + <method name="getShortWeekdays()[Ljava/lang/String;"/> + <method name="getWeekdays()[Ljava/lang/String;"/> + <method name="getWeekdays(II)[Ljava/lang/String;"/> + <method name="getYearNames(II)[Ljava/lang/String;"/> + <method name="getZodiacNames(II)[Ljava/lang/String;"/> + <method name="getZoneStrings()[[Ljava/lang/String;"/> + <method name="initializeData(Landroid/icu/util/ULocale;Ljava/lang/String;)V"/> + <method name="setAmPmStrings([Ljava/lang/String;)V"/> + <method name="setEraNames([Ljava/lang/String;)V"/> + <method name="setEras([Ljava/lang/String;)V"/> + <method name="setLocalPatternChars(Ljava/lang/String;)V"/> + <method name="setMonths([Ljava/lang/String;)V"/> + <method name="setMonths([Ljava/lang/String;II)V"/> + <method name="setQuarters([Ljava/lang/String;II)V"/> + <method name="setShortMonths([Ljava/lang/String;)V"/> + <method name="setShortWeekdays([Ljava/lang/String;)V"/> + <method name="setWeekdays([Ljava/lang/String;)V"/> + <method name="setWeekdays([Ljava/lang/String;II)V"/> + <method name="setYearNames([Ljava/lang/String;II)V"/> + <method name="setZodiacNames([Ljava/lang/String;II)V"/> + <method name="setZoneStrings([[Ljava/lang/String;)V"/> + <field name="ABBREVIATED"/> + <field name="FORMAT"/> + <field name="NARROW"/> + <field name="SHORT"/> + <field name="STANDALONE"/> + <field name="WIDE"/> + </class> + <class name="android/icu/text/DateIntervalFormat" since="24"> + <extends name="android/icu/text/UFormat"/> + <method name="<init>()V"/> + <method name="format(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;"/> + <method name="format(Landroid/icu/util/DateInterval;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;"/> + <method name="getDateFormat()Landroid/icu/text/DateFormat;"/> + <method name="getDateIntervalInfo()Landroid/icu/text/DateIntervalInfo;"/> + <method name="getInstance(Ljava/lang/String;)Landroid/icu/text/DateIntervalFormat;"/> + <method name="getInstance(Ljava/lang/String;Landroid/icu/text/DateIntervalInfo;)Landroid/icu/text/DateIntervalFormat;"/> + <method name="getInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateIntervalFormat;"/> + <method name="getInstance(Ljava/lang/String;Landroid/icu/util/ULocale;Landroid/icu/text/DateIntervalInfo;)Landroid/icu/text/DateIntervalFormat;"/> + <method name="getInstance(Ljava/lang/String;Ljava/util/Locale;)Landroid/icu/text/DateIntervalFormat;"/> + <method name="getInstance(Ljava/lang/String;Ljava/util/Locale;Landroid/icu/text/DateIntervalInfo;)Landroid/icu/text/DateIntervalFormat;"/> + <method name="getTimeZone()Landroid/icu/util/TimeZone;"/> + <method name="setDateIntervalInfo(Landroid/icu/text/DateIntervalInfo;)V"/> + <method name="setTimeZone(Landroid/icu/util/TimeZone;)V"/> + </class> + <class name="android/icu/text/DateIntervalInfo" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/icu/util/Freezable"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>(Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Ljava/util/Locale;)V"/> + <method name="cloneAsThawed()Landroid/icu/text/DateIntervalInfo;"/> + <method name="freeze()Landroid/icu/text/DateIntervalInfo;"/> + <method name="getDefaultOrder()Z"/> + <method name="getFallbackIntervalPattern()Ljava/lang/String;"/> + <method name="getIntervalPattern(Ljava/lang/String;I)Landroid/icu/text/DateIntervalInfo$PatternInfo;"/> + <method name="setFallbackIntervalPattern(Ljava/lang/String;)V"/> + <method name="setIntervalPattern(Ljava/lang/String;ILjava/lang/String;)V"/> + </class> + <class name="android/icu/text/DateIntervalInfo$PatternInfo" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Z)V"/> + <method name="firstDateInPtnIsLaterDate()Z"/> + <method name="getFirstPart()Ljava/lang/String;"/> + <method name="getSecondPart()Ljava/lang/String;"/> + </class> + <class name="android/icu/text/DateTimePatternGenerator" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/icu/util/Freezable"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="addPattern(Ljava/lang/String;ZLandroid/icu/text/DateTimePatternGenerator$PatternInfo;)Landroid/icu/text/DateTimePatternGenerator;"/> + <method name="cloneAsThawed()Landroid/icu/text/DateTimePatternGenerator;"/> + <method name="freeze()Landroid/icu/text/DateTimePatternGenerator;"/> + <method name="getAppendItemFormat(I)Ljava/lang/String;"/> + <method name="getAppendItemName(I)Ljava/lang/String;"/> + <method name="getBaseSkeleton(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getBaseSkeletons(Ljava/util/Set;)Ljava/util/Set;"/> + <method name="getBestPattern(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getBestPattern(Ljava/lang/String;I)Ljava/lang/String;"/> + <method name="getDateTimeFormat()Ljava/lang/String;"/> + <method name="getDecimal()Ljava/lang/String;"/> + <method name="getEmptyInstance()Landroid/icu/text/DateTimePatternGenerator;"/> + <method name="getInstance()Landroid/icu/text/DateTimePatternGenerator;"/> + <method name="getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/DateTimePatternGenerator;"/> + <method name="getInstance(Ljava/util/Locale;)Landroid/icu/text/DateTimePatternGenerator;"/> + <method name="getSkeleton(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getSkeletons(Ljava/util/Map;)Ljava/util/Map;"/> + <method name="replaceFieldTypes(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="replaceFieldTypes(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;"/> + <method name="setAppendItemFormat(ILjava/lang/String;)V"/> + <method name="setAppendItemName(ILjava/lang/String;)V"/> + <method name="setDateTimeFormat(Ljava/lang/String;)V"/> + <method name="setDecimal(Ljava/lang/String;)V"/> + <field name="DAY"/> + <field name="DAYPERIOD"/> + <field name="DAY_OF_WEEK_IN_MONTH"/> + <field name="DAY_OF_YEAR"/> + <field name="ERA"/> + <field name="FRACTIONAL_SECOND"/> + <field name="HOUR"/> + <field name="MATCH_ALL_FIELDS_LENGTH"/> + <field name="MATCH_HOUR_FIELD_LENGTH"/> + <field name="MATCH_NO_OPTIONS"/> + <field name="MINUTE"/> + <field name="MONTH"/> + <field name="QUARTER"/> + <field name="SECOND"/> + <field name="WEEKDAY"/> + <field name="WEEK_OF_MONTH"/> + <field name="WEEK_OF_YEAR"/> + <field name="YEAR"/> + <field name="ZONE"/> + </class> + <class name="android/icu/text/DateTimePatternGenerator$PatternInfo" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="BASE_CONFLICT"/> + <field name="CONFLICT"/> + <field name="OK"/> + <field name="conflictingPattern"/> + <field name="status"/> + </class> + <class name="android/icu/text/DecimalFormat" since="24"> + <extends name="android/icu/text/NumberFormat"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;)V"/> + <method name="<init>(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/CurrencyPluralInfo;I)V"/> + <method name="applyLocalizedPattern(Ljava/lang/String;)V"/> + <method name="applyPattern(Ljava/lang/String;)V"/> + <method name="areSignificantDigitsUsed()Z"/> + <method name="getCurrencyPluralInfo()Landroid/icu/text/CurrencyPluralInfo;"/> + <method name="getCurrencyUsage()Landroid/icu/util/Currency$CurrencyUsage;"/> + <method name="getDecimalFormatSymbols()Landroid/icu/text/DecimalFormatSymbols;"/> + <method name="getFormatWidth()I"/> + <method name="getGroupingSize()I"/> + <method name="getMathContext()Ljava/math/MathContext;"/> + <method name="getMathContextICU()Landroid/icu/math/MathContext;"/> + <method name="getMaximumSignificantDigits()I"/> + <method name="getMinimumExponentDigits()B"/> + <method name="getMinimumSignificantDigits()I"/> + <method name="getMultiplier()I"/> + <method name="getNegativePrefix()Ljava/lang/String;"/> + <method name="getNegativeSuffix()Ljava/lang/String;"/> + <method name="getPadCharacter()C"/> + <method name="getPadPosition()I"/> + <method name="getParseMaxDigits()I" deprecated="27"/> + <method name="getPositivePrefix()Ljava/lang/String;"/> + <method name="getPositiveSuffix()Ljava/lang/String;"/> + <method name="getRoundingIncrement()Ljava/math/BigDecimal;"/> + <method name="getSecondaryGroupingSize()I"/> + <method name="isDecimalPatternMatchRequired()Z"/> + <method name="isDecimalSeparatorAlwaysShown()Z"/> + <method name="isExponentSignAlwaysShown()Z"/> + <method name="isParseBigDecimal()Z"/> + <method name="isScientificNotation()Z"/> + <method name="setCurrencyPluralInfo(Landroid/icu/text/CurrencyPluralInfo;)V"/> + <method name="setCurrencyUsage(Landroid/icu/util/Currency$CurrencyUsage;)V"/> + <method name="setDecimalFormatSymbols(Landroid/icu/text/DecimalFormatSymbols;)V"/> + <method name="setDecimalPatternMatchRequired(Z)V"/> + <method name="setDecimalSeparatorAlwaysShown(Z)V"/> + <method name="setExponentSignAlwaysShown(Z)V"/> + <method name="setFormatWidth(I)V"/> + <method name="setGroupingSize(I)V"/> + <method name="setMathContext(Ljava/math/MathContext;)V"/> + <method name="setMathContextICU(Landroid/icu/math/MathContext;)V"/> + <method name="setMaximumSignificantDigits(I)V"/> + <method name="setMinimumExponentDigits(B)V"/> + <method name="setMinimumSignificantDigits(I)V"/> + <method name="setMultiplier(I)V"/> + <method name="setNegativePrefix(Ljava/lang/String;)V"/> + <method name="setNegativeSuffix(Ljava/lang/String;)V"/> + <method name="setPadCharacter(C)V"/> + <method name="setPadPosition(I)V"/> + <method name="setParseBigDecimal(Z)V"/> + <method name="setParseMaxDigits(I)V" deprecated="27"/> + <method name="setPositivePrefix(Ljava/lang/String;)V"/> + <method name="setPositiveSuffix(Ljava/lang/String;)V"/> + <method name="setRoundingIncrement(D)V"/> + <method name="setRoundingIncrement(Landroid/icu/math/BigDecimal;)V"/> + <method name="setRoundingIncrement(Ljava/math/BigDecimal;)V"/> + <method name="setScientificNotation(Z)V"/> + <method name="setSecondaryGroupingSize(I)V"/> + <method name="setSignificantDigitsUsed(Z)V"/> + <method name="toLocalizedPattern()Ljava/lang/String;"/> + <method name="toPattern()Ljava/lang/String;"/> + <field name="PAD_AFTER_PREFIX"/> + <field name="PAD_AFTER_SUFFIX"/> + <field name="PAD_BEFORE_PREFIX"/> + <field name="PAD_BEFORE_SUFFIX"/> + </class> + <class name="android/icu/text/DecimalFormatSymbols" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Ljava/util/Locale;)V"/> + <method name="getAvailableLocales()[Ljava/util/Locale;"/> + <method name="getCurrency()Landroid/icu/util/Currency;"/> + <method name="getCurrencySymbol()Ljava/lang/String;"/> + <method name="getDecimalSeparator()C"/> + <method name="getDigit()C"/> + <method name="getDigits()[C"/> + <method name="getExponentMultiplicationSign()Ljava/lang/String;"/> + <method name="getExponentSeparator()Ljava/lang/String;"/> + <method name="getGroupingSeparator()C"/> + <method name="getInfinity()Ljava/lang/String;"/> + <method name="getInstance()Landroid/icu/text/DecimalFormatSymbols;"/> + <method name="getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/DecimalFormatSymbols;"/> + <method name="getInstance(Ljava/util/Locale;)Landroid/icu/text/DecimalFormatSymbols;"/> + <method name="getInternationalCurrencySymbol()Ljava/lang/String;"/> + <method name="getLocale()Ljava/util/Locale;"/> + <method name="getMinusSign()C"/> + <method name="getMonetaryDecimalSeparator()C"/> + <method name="getMonetaryGroupingSeparator()C"/> + <method name="getNaN()Ljava/lang/String;"/> + <method name="getPadEscape()C"/> + <method name="getPatternForCurrencySpacing(IZ)Ljava/lang/String;"/> + <method name="getPatternSeparator()C"/> + <method name="getPerMill()C"/> + <method name="getPercent()C"/> + <method name="getPlusSign()C"/> + <method name="getSignificantDigit()C"/> + <method name="getULocale()Landroid/icu/util/ULocale;"/> + <method name="getZeroDigit()C"/> + <method name="setCurrency(Landroid/icu/util/Currency;)V"/> + <method name="setCurrencySymbol(Ljava/lang/String;)V"/> + <method name="setDecimalSeparator(C)V"/> + <method name="setDigit(C)V"/> + <method name="setExponentMultiplicationSign(Ljava/lang/String;)V"/> + <method name="setExponentSeparator(Ljava/lang/String;)V"/> + <method name="setGroupingSeparator(C)V"/> + <method name="setInfinity(Ljava/lang/String;)V"/> + <method name="setInternationalCurrencySymbol(Ljava/lang/String;)V"/> + <method name="setMinusSign(C)V"/> + <method name="setMonetaryDecimalSeparator(C)V"/> + <method name="setMonetaryGroupingSeparator(C)V"/> + <method name="setNaN(Ljava/lang/String;)V"/> + <method name="setPadEscape(C)V"/> + <method name="setPatternForCurrencySpacing(IZLjava/lang/String;)V"/> + <method name="setPatternSeparator(C)V"/> + <method name="setPerMill(C)V"/> + <method name="setPercent(C)V"/> + <method name="setPlusSign(C)V"/> + <method name="setSignificantDigit(C)V"/> + <method name="setZeroDigit(C)V"/> + <field name="CURRENCY_SPC_CURRENCY_MATCH"/> + <field name="CURRENCY_SPC_INSERT"/> + <field name="CURRENCY_SPC_SURROUNDING_MATCH"/> + </class> + <class name="android/icu/text/DisplayContext" since="24"> + <extends name="java/lang/Enum"/> + <method name="type()Landroid/icu/text/DisplayContext$Type;"/> + <method name="value()I"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/DisplayContext;"/> + <method name="values()[Landroid/icu/text/DisplayContext;"/> + <field name="CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE"/> + <field name="CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE"/> + <field name="CAPITALIZATION_FOR_STANDALONE"/> + <field name="CAPITALIZATION_FOR_UI_LIST_OR_MENU"/> + <field name="CAPITALIZATION_NONE"/> + <field name="DIALECT_NAMES"/> + <field name="LENGTH_FULL"/> + <field name="LENGTH_SHORT"/> + <field name="STANDARD_NAMES"/> + </class> + <class name="android/icu/text/DisplayContext$Type" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/DisplayContext$Type;"/> + <method name="values()[Landroid/icu/text/DisplayContext$Type;"/> + <field name="CAPITALIZATION"/> + <field name="DIALECT_HANDLING"/> + <field name="DISPLAY_LENGTH"/> + </class> + <class name="android/icu/text/IDNA" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getUTS46Instance(I)Landroid/icu/text/IDNA;"/> + <method name="labelToASCII(Ljava/lang/CharSequence;Ljava/lang/StringBuilder;Landroid/icu/text/IDNA$Info;)Ljava/lang/StringBuilder;"/> + <method name="labelToUnicode(Ljava/lang/CharSequence;Ljava/lang/StringBuilder;Landroid/icu/text/IDNA$Info;)Ljava/lang/StringBuilder;"/> + <method name="nameToASCII(Ljava/lang/CharSequence;Ljava/lang/StringBuilder;Landroid/icu/text/IDNA$Info;)Ljava/lang/StringBuilder;"/> + <method name="nameToUnicode(Ljava/lang/CharSequence;Ljava/lang/StringBuilder;Landroid/icu/text/IDNA$Info;)Ljava/lang/StringBuilder;"/> + <field name="CHECK_BIDI"/> + <field name="CHECK_CONTEXTJ"/> + <field name="CHECK_CONTEXTO"/> + <field name="DEFAULT"/> + <field name="NONTRANSITIONAL_TO_ASCII"/> + <field name="NONTRANSITIONAL_TO_UNICODE"/> + <field name="USE_STD3_RULES"/> + </class> + <class name="android/icu/text/IDNA$Error" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/IDNA$Error;"/> + <method name="values()[Landroid/icu/text/IDNA$Error;"/> + <field name="BIDI"/> + <field name="CONTEXTJ"/> + <field name="CONTEXTO_DIGITS"/> + <field name="CONTEXTO_PUNCTUATION"/> + <field name="DISALLOWED"/> + <field name="DOMAIN_NAME_TOO_LONG"/> + <field name="EMPTY_LABEL"/> + <field name="HYPHEN_3_4"/> + <field name="INVALID_ACE_LABEL"/> + <field name="LABEL_HAS_DOT"/> + <field name="LABEL_TOO_LONG"/> + <field name="LEADING_COMBINING_MARK"/> + <field name="LEADING_HYPHEN"/> + <field name="PUNYCODE"/> + <field name="TRAILING_HYPHEN"/> + </class> + <class name="android/icu/text/IDNA$Info" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getErrors()Ljava/util/Set;"/> + <method name="hasErrors()Z"/> + <method name="isTransitionalDifferent()Z"/> + </class> + <class name="android/icu/text/ListFormatter" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="format(Ljava/util/Collection;)Ljava/lang/String;"/> + <method name="format([Ljava/lang/Object;)Ljava/lang/String;"/> + <method name="getInstance()Landroid/icu/text/ListFormatter;"/> + <method name="getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/ListFormatter;"/> + <method name="getInstance(Ljava/util/Locale;)Landroid/icu/text/ListFormatter;"/> + <method name="getPatternForNumItems(I)Ljava/lang/String;"/> + </class> + <class name="android/icu/text/LocaleDisplayNames" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getContext(Landroid/icu/text/DisplayContext$Type;)Landroid/icu/text/DisplayContext;"/> + <method name="getDialectHandling()Landroid/icu/text/LocaleDisplayNames$DialectHandling;"/> + <method name="getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/LocaleDisplayNames;"/> + <method name="getInstance(Landroid/icu/util/ULocale;Landroid/icu/text/LocaleDisplayNames$DialectHandling;)Landroid/icu/text/LocaleDisplayNames;"/> + <method name="getInstance(Landroid/icu/util/ULocale;[Landroid/icu/text/DisplayContext;)Landroid/icu/text/LocaleDisplayNames;"/> + <method name="getInstance(Ljava/util/Locale;)Landroid/icu/text/LocaleDisplayNames;"/> + <method name="getInstance(Ljava/util/Locale;[Landroid/icu/text/DisplayContext;)Landroid/icu/text/LocaleDisplayNames;"/> + <method name="getLocale()Landroid/icu/util/ULocale;"/> + <method name="getUiList(Ljava/util/Set;ZLjava/util/Comparator;)Ljava/util/List;" since="26"/> + <method name="getUiListCompareWholeItems(Ljava/util/Set;Ljava/util/Comparator;)Ljava/util/List;" since="26"/> + <method name="keyDisplayName(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="keyValueDisplayName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="languageDisplayName(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="localeDisplayName(Landroid/icu/util/ULocale;)Ljava/lang/String;"/> + <method name="localeDisplayName(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="localeDisplayName(Ljava/util/Locale;)Ljava/lang/String;"/> + <method name="regionDisplayName(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="scriptDisplayName(I)Ljava/lang/String;"/> + <method name="scriptDisplayName(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="variantDisplayName(Ljava/lang/String;)Ljava/lang/String;"/> + </class> + <class name="android/icu/text/LocaleDisplayNames$DialectHandling" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/LocaleDisplayNames$DialectHandling;"/> + <method name="values()[Landroid/icu/text/LocaleDisplayNames$DialectHandling;"/> + <field name="DIALECT_NAMES"/> + <field name="STANDARD_NAMES"/> + </class> + <class name="android/icu/text/LocaleDisplayNames$UiListItem" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="getComparator(Ljava/util/Comparator;Z)Ljava/util/Comparator;"/> + <field name="minimized"/> + <field name="modified"/> + <field name="nameInDisplayLocale"/> + <field name="nameInSelf"/> + </class> + <class name="android/icu/text/MeasureFormat" since="24"> + <extends name="android/icu/text/UFormat"/> + <method name="<init>()V"/> + <method name="formatMeasurePerUnit(Landroid/icu/util/Measure;Landroid/icu/util/MeasureUnit;Ljava/lang/StringBuilder;Ljava/text/FieldPosition;)Ljava/lang/StringBuilder;" since="26"/> + <method name="formatMeasures(Ljava/lang/StringBuilder;Ljava/text/FieldPosition;[Landroid/icu/util/Measure;)Ljava/lang/StringBuilder;"/> + <method name="formatMeasures([Landroid/icu/util/Measure;)Ljava/lang/String;"/> + <method name="getCurrencyFormat()Landroid/icu/text/MeasureFormat;"/> + <method name="getCurrencyFormat(Landroid/icu/util/ULocale;)Landroid/icu/text/MeasureFormat;"/> + <method name="getCurrencyFormat(Ljava/util/Locale;)Landroid/icu/text/MeasureFormat;"/> + <method name="getInstance(Landroid/icu/util/ULocale;Landroid/icu/text/MeasureFormat$FormatWidth;)Landroid/icu/text/MeasureFormat;"/> + <method name="getInstance(Landroid/icu/util/ULocale;Landroid/icu/text/MeasureFormat$FormatWidth;Landroid/icu/text/NumberFormat;)Landroid/icu/text/MeasureFormat;"/> + <method name="getInstance(Ljava/util/Locale;Landroid/icu/text/MeasureFormat$FormatWidth;)Landroid/icu/text/MeasureFormat;"/> + <method name="getInstance(Ljava/util/Locale;Landroid/icu/text/MeasureFormat$FormatWidth;Landroid/icu/text/NumberFormat;)Landroid/icu/text/MeasureFormat;"/> + <method name="getLocale()Landroid/icu/util/ULocale;"/> + <method name="getNumberFormat()Landroid/icu/text/NumberFormat;"/> + <method name="getWidth()Landroid/icu/text/MeasureFormat$FormatWidth;"/> + <method name="parseObject(Ljava/lang/String;Ljava/text/ParsePosition;)Landroid/icu/util/Measure;"/> + </class> + <class name="android/icu/text/MeasureFormat$FormatWidth" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/MeasureFormat$FormatWidth;"/> + <method name="values()[Landroid/icu/text/MeasureFormat$FormatWidth;"/> + <field name="NARROW"/> + <field name="NUMERIC"/> + <field name="SHORT"/> + <field name="WIDE"/> + </class> + <class name="android/icu/text/MessageFormat" since="24"> + <extends name="android/icu/text/UFormat"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/util/Locale;)V"/> + <method name="applyPattern(Ljava/lang/String;)V"/> + <method name="applyPattern(Ljava/lang/String;Landroid/icu/text/MessagePattern$ApostropheMode;)V"/> + <method name="autoQuoteApostrophe(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="format(Ljava/lang/String;Ljava/util/Map;)Ljava/lang/String;"/> + <method name="format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;"/> + <method name="format(Ljava/util/Map;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;"/> + <method name="format([Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;"/> + <method name="getApostropheMode()Landroid/icu/text/MessagePattern$ApostropheMode;"/> + <method name="getArgumentNames()Ljava/util/Set;"/> + <method name="getFormatByArgumentName(Ljava/lang/String;)Ljava/text/Format;"/> + <method name="getFormats()[Ljava/text/Format;"/> + <method name="getFormatsByArgumentIndex()[Ljava/text/Format;"/> + <method name="getLocale()Ljava/util/Locale;"/> + <method name="getULocale()Landroid/icu/util/ULocale;"/> + <method name="parse(Ljava/lang/String;)[Ljava/lang/Object;"/> + <method name="parse(Ljava/lang/String;Ljava/text/ParsePosition;)[Ljava/lang/Object;"/> + <method name="parseToMap(Ljava/lang/String;)Ljava/util/Map;"/> + <method name="parseToMap(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/util/Map;"/> + <method name="setFormat(ILjava/text/Format;)V"/> + <method name="setFormatByArgumentIndex(ILjava/text/Format;)V"/> + <method name="setFormatByArgumentName(Ljava/lang/String;Ljava/text/Format;)V"/> + <method name="setFormats([Ljava/text/Format;)V"/> + <method name="setFormatsByArgumentIndex([Ljava/text/Format;)V"/> + <method name="setFormatsByArgumentName(Ljava/util/Map;)V"/> + <method name="setLocale(Landroid/icu/util/ULocale;)V"/> + <method name="setLocale(Ljava/util/Locale;)V"/> + <method name="toPattern()Ljava/lang/String;"/> + <method name="usesNamedArguments()Z"/> + </class> + <class name="android/icu/text/MessageFormat$Field" since="24"> + <extends name="java/text/Format$Field"/> + <method name="<init>(Ljava/lang/String;)V"/> + <field name="ARGUMENT"/> + </class> + <class name="android/icu/text/MessagePattern" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/icu/util/Freezable"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/icu/text/MessagePattern$ApostropheMode;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="autoQuoteApostropheDeep()Ljava/lang/String;"/> + <method name="clear()V"/> + <method name="clearPatternAndSetApostropheMode(Landroid/icu/text/MessagePattern$ApostropheMode;)V"/> + <method name="cloneAsThawed()Landroid/icu/text/MessagePattern;"/> + <method name="countParts()I"/> + <method name="freeze()Landroid/icu/text/MessagePattern;"/> + <method name="getApostropheMode()Landroid/icu/text/MessagePattern$ApostropheMode;"/> + <method name="getLimitPartIndex(I)I"/> + <method name="getNumericValue(Landroid/icu/text/MessagePattern$Part;)D"/> + <method name="getPart(I)Landroid/icu/text/MessagePattern$Part;"/> + <method name="getPartType(I)Landroid/icu/text/MessagePattern$Part$Type;"/> + <method name="getPatternIndex(I)I"/> + <method name="getPatternString()Ljava/lang/String;"/> + <method name="getPluralOffset(I)D"/> + <method name="getSubstring(Landroid/icu/text/MessagePattern$Part;)Ljava/lang/String;"/> + <method name="hasNamedArguments()Z"/> + <method name="hasNumberedArguments()Z"/> + <method name="parse(Ljava/lang/String;)Landroid/icu/text/MessagePattern;"/> + <method name="parseChoiceStyle(Ljava/lang/String;)Landroid/icu/text/MessagePattern;"/> + <method name="parsePluralStyle(Ljava/lang/String;)Landroid/icu/text/MessagePattern;"/> + <method name="parseSelectStyle(Ljava/lang/String;)Landroid/icu/text/MessagePattern;"/> + <method name="partSubstringMatches(Landroid/icu/text/MessagePattern$Part;Ljava/lang/String;)Z"/> + <method name="validateArgumentName(Ljava/lang/String;)I"/> + <field name="ARG_NAME_NOT_NUMBER"/> + <field name="ARG_NAME_NOT_VALID"/> + <field name="NO_NUMERIC_VALUE"/> + </class> + <class name="android/icu/text/MessagePattern$ApostropheMode" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/MessagePattern$ApostropheMode;"/> + <method name="values()[Landroid/icu/text/MessagePattern$ApostropheMode;"/> + <field name="DOUBLE_OPTIONAL"/> + <field name="DOUBLE_REQUIRED"/> + </class> + <class name="android/icu/text/MessagePattern$ArgType" since="24"> + <extends name="java/lang/Enum"/> + <method name="hasPluralStyle()Z"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/MessagePattern$ArgType;"/> + <method name="values()[Landroid/icu/text/MessagePattern$ArgType;"/> + <field name="CHOICE"/> + <field name="NONE"/> + <field name="PLURAL"/> + <field name="SELECT"/> + <field name="SELECTORDINAL"/> + <field name="SIMPLE"/> + </class> + <class name="android/icu/text/MessagePattern$Part" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getArgType()Landroid/icu/text/MessagePattern$ArgType;"/> + <method name="getIndex()I"/> + <method name="getLength()I"/> + <method name="getLimit()I"/> + <method name="getType()Landroid/icu/text/MessagePattern$Part$Type;"/> + <method name="getValue()I"/> + </class> + <class name="android/icu/text/MessagePattern$Part$Type" since="24"> + <extends name="java/lang/Enum"/> + <method name="hasNumericValue()Z"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/MessagePattern$Part$Type;"/> + <method name="values()[Landroid/icu/text/MessagePattern$Part$Type;"/> + <field name="ARG_DOUBLE"/> + <field name="ARG_INT"/> + <field name="ARG_LIMIT"/> + <field name="ARG_NAME"/> + <field name="ARG_NUMBER"/> + <field name="ARG_SELECTOR"/> + <field name="ARG_START"/> + <field name="ARG_STYLE"/> + <field name="ARG_TYPE"/> + <field name="INSERT_CHAR"/> + <field name="MSG_LIMIT"/> + <field name="MSG_START"/> + <field name="REPLACE_NUMBER"/> + <field name="SKIP_SYNTAX"/> + </class> + <class name="android/icu/text/Normalizer" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="compare(III)I"/> + <method name="compare(ILjava/lang/String;I)I"/> + <method name="compare(Ljava/lang/String;Ljava/lang/String;I)I"/> + <method name="compare([CII[CIII)I"/> + <method name="compare([C[CI)I"/> + <field name="COMPARE_CODE_POINT_ORDER"/> + <field name="COMPARE_IGNORE_CASE"/> + <field name="FOLD_CASE_DEFAULT"/> + <field name="FOLD_CASE_EXCLUDE_SPECIAL_I"/> + <field name="INPUT_IS_FCD"/> + <field name="MAYBE"/> + <field name="NO"/> + <field name="YES"/> + </class> + <class name="android/icu/text/Normalizer$QuickCheckResult" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/icu/text/Normalizer2" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="append(Ljava/lang/StringBuilder;Ljava/lang/CharSequence;)Ljava/lang/StringBuilder;"/> + <method name="composePair(II)I"/> + <method name="getCombiningClass(I)I"/> + <method name="getDecomposition(I)Ljava/lang/String;"/> + <method name="getInstance(Ljava/io/InputStream;Ljava/lang/String;Landroid/icu/text/Normalizer2$Mode;)Landroid/icu/text/Normalizer2;"/> + <method name="getNFCInstance()Landroid/icu/text/Normalizer2;"/> + <method name="getNFDInstance()Landroid/icu/text/Normalizer2;"/> + <method name="getNFKCCasefoldInstance()Landroid/icu/text/Normalizer2;"/> + <method name="getNFKCInstance()Landroid/icu/text/Normalizer2;"/> + <method name="getNFKDInstance()Landroid/icu/text/Normalizer2;"/> + <method name="getRawDecomposition(I)Ljava/lang/String;"/> + <method name="hasBoundaryAfter(I)Z"/> + <method name="hasBoundaryBefore(I)Z"/> + <method name="isInert(I)Z"/> + <method name="isNormalized(Ljava/lang/CharSequence;)Z"/> + <method name="normalize(Ljava/lang/CharSequence;)Ljava/lang/String;"/> + <method name="normalize(Ljava/lang/CharSequence;Ljava/lang/Appendable;)Ljava/lang/Appendable;"/> + <method name="normalize(Ljava/lang/CharSequence;Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder;"/> + <method name="normalizeSecondAndAppend(Ljava/lang/StringBuilder;Ljava/lang/CharSequence;)Ljava/lang/StringBuilder;"/> + <method name="quickCheck(Ljava/lang/CharSequence;)Landroid/icu/text/Normalizer$QuickCheckResult;"/> + <method name="spanQuickCheckYes(Ljava/lang/CharSequence;)I"/> + </class> + <class name="android/icu/text/Normalizer2$Mode" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/Normalizer2$Mode;"/> + <method name="values()[Landroid/icu/text/Normalizer2$Mode;"/> + <field name="COMPOSE"/> + <field name="COMPOSE_CONTIGUOUS"/> + <field name="DECOMPOSE"/> + <field name="FCD"/> + </class> + <class name="android/icu/text/NumberFormat" since="24"> + <extends name="android/icu/text/UFormat"/> + <method name="<init>()V"/> + <method name="format(D)Ljava/lang/String;"/> + <method name="format(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;"/> + <method name="format(J)Ljava/lang/String;"/> + <method name="format(JLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;"/> + <method name="format(Landroid/icu/math/BigDecimal;)Ljava/lang/String;"/> + <method name="format(Landroid/icu/math/BigDecimal;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;"/> + <method name="format(Landroid/icu/util/CurrencyAmount;)Ljava/lang/String;"/> + <method name="format(Landroid/icu/util/CurrencyAmount;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;"/> + <method name="format(Ljava/math/BigDecimal;)Ljava/lang/String;"/> + <method name="format(Ljava/math/BigDecimal;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;"/> + <method name="format(Ljava/math/BigInteger;)Ljava/lang/String;"/> + <method name="format(Ljava/math/BigInteger;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;"/> + <method name="getAvailableLocales()[Ljava/util/Locale;"/> + <method name="getContext(Landroid/icu/text/DisplayContext$Type;)Landroid/icu/text/DisplayContext;"/> + <method name="getCurrency()Landroid/icu/util/Currency;"/> + <method name="getCurrencyInstance()Landroid/icu/text/NumberFormat;"/> + <method name="getCurrencyInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/NumberFormat;"/> + <method name="getCurrencyInstance(Ljava/util/Locale;)Landroid/icu/text/NumberFormat;"/> + <method name="getInstance()Landroid/icu/text/NumberFormat;"/> + <method name="getInstance(I)Landroid/icu/text/NumberFormat;"/> + <method name="getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/NumberFormat;"/> + <method name="getInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/NumberFormat;"/> + <method name="getInstance(Ljava/util/Locale;)Landroid/icu/text/NumberFormat;"/> + <method name="getInstance(Ljava/util/Locale;I)Landroid/icu/text/NumberFormat;"/> + <method name="getIntegerInstance()Landroid/icu/text/NumberFormat;"/> + <method name="getIntegerInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/NumberFormat;"/> + <method name="getIntegerInstance(Ljava/util/Locale;)Landroid/icu/text/NumberFormat;"/> + <method name="getMaximumFractionDigits()I"/> + <method name="getMaximumIntegerDigits()I"/> + <method name="getMinimumFractionDigits()I"/> + <method name="getMinimumIntegerDigits()I"/> + <method name="getNumberInstance()Landroid/icu/text/NumberFormat;"/> + <method name="getNumberInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/NumberFormat;"/> + <method name="getNumberInstance(Ljava/util/Locale;)Landroid/icu/text/NumberFormat;"/> + <method name="getPattern(Landroid/icu/util/ULocale;I)Ljava/lang/String;"/> + <method name="getPercentInstance()Landroid/icu/text/NumberFormat;"/> + <method name="getPercentInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/NumberFormat;"/> + <method name="getPercentInstance(Ljava/util/Locale;)Landroid/icu/text/NumberFormat;"/> + <method name="getRoundingMode()I"/> + <method name="getScientificInstance()Landroid/icu/text/NumberFormat;"/> + <method name="getScientificInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/NumberFormat;"/> + <method name="getScientificInstance(Ljava/util/Locale;)Landroid/icu/text/NumberFormat;"/> + <method name="isGroupingUsed()Z"/> + <method name="isParseIntegerOnly()Z"/> + <method name="isParseStrict()Z"/> + <method name="parse(Ljava/lang/String;)Ljava/lang/Number;"/> + <method name="parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Number;"/> + <method name="parseCurrency(Ljava/lang/CharSequence;Ljava/text/ParsePosition;)Landroid/icu/util/CurrencyAmount;"/> + <method name="setContext(Landroid/icu/text/DisplayContext;)V"/> + <method name="setCurrency(Landroid/icu/util/Currency;)V"/> + <method name="setGroupingUsed(Z)V"/> + <method name="setMaximumFractionDigits(I)V"/> + <method name="setMaximumIntegerDigits(I)V"/> + <method name="setMinimumFractionDigits(I)V"/> + <method name="setMinimumIntegerDigits(I)V"/> + <method name="setParseIntegerOnly(Z)V"/> + <method name="setParseStrict(Z)V"/> + <method name="setRoundingMode(I)V"/> + <field name="ACCOUNTINGCURRENCYSTYLE"/> + <field name="CASHCURRENCYSTYLE"/> + <field name="CURRENCYSTYLE"/> + <field name="FRACTION_FIELD"/> + <field name="INTEGERSTYLE"/> + <field name="INTEGER_FIELD"/> + <field name="ISOCURRENCYSTYLE"/> + <field name="NUMBERSTYLE"/> + <field name="PERCENTSTYLE"/> + <field name="PLURALCURRENCYSTYLE"/> + <field name="SCIENTIFICSTYLE"/> + <field name="STANDARDCURRENCYSTYLE" since="26"/> + </class> + <class name="android/icu/text/NumberFormat$Field" since="24"> + <extends name="java/text/Format$Field"/> + <method name="<init>(Ljava/lang/String;)V"/> + <field name="CURRENCY"/> + <field name="DECIMAL_SEPARATOR"/> + <field name="EXPONENT"/> + <field name="EXPONENT_SIGN"/> + <field name="EXPONENT_SYMBOL"/> + <field name="FRACTION"/> + <field name="GROUPING_SEPARATOR"/> + <field name="INTEGER"/> + <field name="PERCENT"/> + <field name="PERMILLE"/> + <field name="SIGN"/> + </class> + <class name="android/icu/text/NumberingSystem" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAvailableNames()[Ljava/lang/String;"/> + <method name="getDescription()Ljava/lang/String;"/> + <method name="getInstance()Landroid/icu/text/NumberingSystem;"/> + <method name="getInstance(IZLjava/lang/String;)Landroid/icu/text/NumberingSystem;"/> + <method name="getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/NumberingSystem;"/> + <method name="getInstance(Ljava/util/Locale;)Landroid/icu/text/NumberingSystem;"/> + <method name="getInstanceByName(Ljava/lang/String;)Landroid/icu/text/NumberingSystem;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getRadix()I"/> + <method name="isAlgorithmic()Z"/> + <method name="isValidDigitString(Ljava/lang/String;)Z"/> + </class> + <class name="android/icu/text/PluralFormat" since="24"> + <extends name="android/icu/text/UFormat"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/icu/text/PluralRules;)V"/> + <method name="<init>(Landroid/icu/text/PluralRules;Ljava/lang/String;)V"/> + <method name="<init>(Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Landroid/icu/util/ULocale;Landroid/icu/text/PluralRules$PluralType;)V"/> + <method name="<init>(Landroid/icu/util/ULocale;Landroid/icu/text/PluralRules$PluralType;Ljava/lang/String;)V"/> + <method name="<init>(Landroid/icu/util/ULocale;Landroid/icu/text/PluralRules;)V"/> + <method name="<init>(Landroid/icu/util/ULocale;Landroid/icu/text/PluralRules;Ljava/lang/String;)V"/> + <method name="<init>(Landroid/icu/util/ULocale;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/util/Locale;)V"/> + <method name="<init>(Ljava/util/Locale;Landroid/icu/text/PluralRules$PluralType;)V"/> + <method name="<init>(Ljava/util/Locale;Landroid/icu/text/PluralRules;)V"/> + <method name="applyPattern(Ljava/lang/String;)V"/> + <method name="equals(Landroid/icu/text/PluralFormat;)Z"/> + <method name="format(D)Ljava/lang/String;"/> + <method name="parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Number;"/> + <method name="setNumberFormat(Landroid/icu/text/NumberFormat;)V"/> + <method name="toPattern()Ljava/lang/String;"/> + </class> + <class name="android/icu/text/PluralRules" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="createRules(Ljava/lang/String;)Landroid/icu/text/PluralRules;"/> + <method name="equals(Landroid/icu/text/PluralRules;)Z"/> + <method name="forLocale(Landroid/icu/util/ULocale;)Landroid/icu/text/PluralRules;"/> + <method name="forLocale(Landroid/icu/util/ULocale;Landroid/icu/text/PluralRules$PluralType;)Landroid/icu/text/PluralRules;"/> + <method name="forLocale(Ljava/util/Locale;)Landroid/icu/text/PluralRules;"/> + <method name="forLocale(Ljava/util/Locale;Landroid/icu/text/PluralRules$PluralType;)Landroid/icu/text/PluralRules;"/> + <method name="getAllKeywordValues(Ljava/lang/String;)Ljava/util/Collection;"/> + <method name="getKeywords()Ljava/util/Set;"/> + <method name="getSamples(Ljava/lang/String;)Ljava/util/Collection;"/> + <method name="getUniqueKeywordValue(Ljava/lang/String;)D"/> + <method name="parseDescription(Ljava/lang/String;)Landroid/icu/text/PluralRules;"/> + <method name="select(D)Ljava/lang/String;"/> + <field name="DEFAULT"/> + <field name="KEYWORD_FEW"/> + <field name="KEYWORD_MANY"/> + <field name="KEYWORD_ONE"/> + <field name="KEYWORD_OTHER"/> + <field name="KEYWORD_TWO"/> + <field name="KEYWORD_ZERO"/> + <field name="NO_UNIQUE_VALUE"/> + </class> + <class name="android/icu/text/PluralRules$PluralType" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/PluralRules$PluralType;"/> + <method name="values()[Landroid/icu/text/PluralRules$PluralType;"/> + <field name="CARDINAL"/> + <field name="ORDINAL"/> + </class> + <class name="android/icu/text/RelativeDateTimeFormatter" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="combineDateAndTime(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="format(DLandroid/icu/text/RelativeDateTimeFormatter$Direction;Landroid/icu/text/RelativeDateTimeFormatter$RelativeUnit;)Ljava/lang/String;"/> + <method name="format(DLandroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeUnit;)Ljava/lang/String;" since="27"/> + <method name="format(Landroid/icu/text/RelativeDateTimeFormatter$Direction;Landroid/icu/text/RelativeDateTimeFormatter$AbsoluteUnit;)Ljava/lang/String;"/> + <method name="formatNumeric(DLandroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeUnit;)Ljava/lang/String;" since="27"/> + <method name="getCapitalizationContext()Landroid/icu/text/DisplayContext;"/> + <method name="getFormatStyle()Landroid/icu/text/RelativeDateTimeFormatter$Style;"/> + <method name="getInstance()Landroid/icu/text/RelativeDateTimeFormatter;"/> + <method name="getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/RelativeDateTimeFormatter;"/> + <method name="getInstance(Landroid/icu/util/ULocale;Landroid/icu/text/NumberFormat;)Landroid/icu/text/RelativeDateTimeFormatter;"/> + <method name="getInstance(Landroid/icu/util/ULocale;Landroid/icu/text/NumberFormat;Landroid/icu/text/RelativeDateTimeFormatter$Style;Landroid/icu/text/DisplayContext;)Landroid/icu/text/RelativeDateTimeFormatter;"/> + <method name="getInstance(Ljava/util/Locale;)Landroid/icu/text/RelativeDateTimeFormatter;"/> + <method name="getInstance(Ljava/util/Locale;Landroid/icu/text/NumberFormat;)Landroid/icu/text/RelativeDateTimeFormatter;"/> + <method name="getNumberFormat()Landroid/icu/text/NumberFormat;"/> + </class> + <class name="android/icu/text/RelativeDateTimeFormatter$AbsoluteUnit" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/RelativeDateTimeFormatter$AbsoluteUnit;"/> + <method name="values()[Landroid/icu/text/RelativeDateTimeFormatter$AbsoluteUnit;"/> + <field name="DAY"/> + <field name="FRIDAY"/> + <field name="MONDAY"/> + <field name="MONTH"/> + <field name="NOW"/> + <field name="SATURDAY"/> + <field name="SUNDAY"/> + <field name="THURSDAY"/> + <field name="TUESDAY"/> + <field name="WEDNESDAY"/> + <field name="WEEK"/> + <field name="YEAR"/> + </class> + <class name="android/icu/text/RelativeDateTimeFormatter$Direction" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/RelativeDateTimeFormatter$Direction;"/> + <method name="values()[Landroid/icu/text/RelativeDateTimeFormatter$Direction;"/> + <field name="LAST"/> + <field name="LAST_2"/> + <field name="NEXT"/> + <field name="NEXT_2"/> + <field name="PLAIN"/> + <field name="THIS"/> + </class> + <class name="android/icu/text/RelativeDateTimeFormatter$RelativeDateTimeUnit" since="27"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeUnit;"/> + <method name="values()[Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeUnit;"/> + <field name="DAY"/> + <field name="FRIDAY"/> + <field name="HOUR"/> + <field name="MINUTE"/> + <field name="MONDAY"/> + <field name="MONTH"/> + <field name="QUARTER"/> + <field name="SATURDAY"/> + <field name="SECOND"/> + <field name="SUNDAY"/> + <field name="THURSDAY"/> + <field name="TUESDAY"/> + <field name="WEDNESDAY"/> + <field name="WEEK"/> + <field name="YEAR"/> + </class> + <class name="android/icu/text/RelativeDateTimeFormatter$RelativeUnit" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/RelativeDateTimeFormatter$RelativeUnit;"/> + <method name="values()[Landroid/icu/text/RelativeDateTimeFormatter$RelativeUnit;"/> + <field name="DAYS"/> + <field name="HOURS"/> + <field name="MINUTES"/> + <field name="MONTHS"/> + <field name="SECONDS"/> + <field name="WEEKS"/> + <field name="YEARS"/> + </class> + <class name="android/icu/text/RelativeDateTimeFormatter$Style" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/RelativeDateTimeFormatter$Style;"/> + <method name="values()[Landroid/icu/text/RelativeDateTimeFormatter$Style;"/> + <field name="LONG"/> + <field name="NARROW"/> + <field name="SHORT"/> + </class> + <class name="android/icu/text/Replaceable" since="24"> + <extends name="java/lang/Object"/> + <method name="char32At(I)I"/> + <method name="charAt(I)C"/> + <method name="copy(III)V"/> + <method name="getChars(II[CI)V"/> + <method name="hasMetaData()Z"/> + <method name="length()I"/> + <method name="replace(IILjava/lang/String;)V"/> + <method name="replace(II[CII)V"/> + </class> + <class name="android/icu/text/RuleBasedCollator" since="24"> + <extends name="android/icu/text/Collator"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="cloneAsThawed()Landroid/icu/text/RuleBasedCollator;"/> + <method name="getCollationElementIterator(Landroid/icu/text/UCharacterIterator;)Landroid/icu/text/CollationElementIterator;"/> + <method name="getCollationElementIterator(Ljava/lang/String;)Landroid/icu/text/CollationElementIterator;"/> + <method name="getCollationElementIterator(Ljava/text/CharacterIterator;)Landroid/icu/text/CollationElementIterator;"/> + <method name="getContractionsAndExpansions(Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;Z)V"/> + <method name="getNumericCollation()Z"/> + <method name="getRules()Ljava/lang/String;"/> + <method name="getRules(Z)Ljava/lang/String;"/> + <method name="isAlternateHandlingShifted()Z"/> + <method name="isCaseLevel()Z"/> + <method name="isFrenchCollation()Z"/> + <method name="isLowerCaseFirst()Z"/> + <method name="isUpperCaseFirst()Z"/> + <method name="setAlternateHandlingDefault()V"/> + <method name="setAlternateHandlingShifted(Z)V"/> + <method name="setCaseFirstDefault()V"/> + <method name="setCaseLevel(Z)V"/> + <method name="setCaseLevelDefault()V"/> + <method name="setDecompositionDefault()V"/> + <method name="setFrenchCollation(Z)V"/> + <method name="setFrenchCollationDefault()V"/> + <method name="setLowerCaseFirst(Z)V"/> + <method name="setMaxVariable(I)Landroid/icu/text/RuleBasedCollator;"/> + <method name="setNumericCollation(Z)V"/> + <method name="setNumericCollationDefault()V"/> + <method name="setStrengthDefault()V"/> + <method name="setUpperCaseFirst(Z)V"/> + </class> + <class name="android/icu/text/ScientificNumberFormatter" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="format(Ljava/lang/Object;)Ljava/lang/String;"/> + <method name="getMarkupInstance(Landroid/icu/text/DecimalFormat;Ljava/lang/String;Ljava/lang/String;)Landroid/icu/text/ScientificNumberFormatter;"/> + <method name="getMarkupInstance(Landroid/icu/util/ULocale;Ljava/lang/String;Ljava/lang/String;)Landroid/icu/text/ScientificNumberFormatter;"/> + <method name="getSuperscriptInstance(Landroid/icu/text/DecimalFormat;)Landroid/icu/text/ScientificNumberFormatter;"/> + <method name="getSuperscriptInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/ScientificNumberFormatter;"/> + </class> + <class name="android/icu/text/SearchIterator" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/text/CharacterIterator;Landroid/icu/text/BreakIterator;)V"/> + <method name="first()I"/> + <method name="following(I)I"/> + <method name="getBreakIterator()Landroid/icu/text/BreakIterator;"/> + <method name="getElementComparisonType()Landroid/icu/text/SearchIterator$ElementComparisonType;"/> + <method name="getIndex()I"/> + <method name="getMatchLength()I"/> + <method name="getMatchStart()I"/> + <method name="getMatchedText()Ljava/lang/String;"/> + <method name="getTarget()Ljava/text/CharacterIterator;"/> + <method name="handleNext(I)I"/> + <method name="handlePrevious(I)I"/> + <method name="isOverlapping()Z"/> + <method name="last()I"/> + <method name="next()I"/> + <method name="preceding(I)I"/> + <method name="previous()I"/> + <method name="reset()V"/> + <method name="setBreakIterator(Landroid/icu/text/BreakIterator;)V"/> + <method name="setElementComparisonType(Landroid/icu/text/SearchIterator$ElementComparisonType;)V"/> + <method name="setIndex(I)V"/> + <method name="setMatchLength(I)V"/> + <method name="setOverlapping(Z)V"/> + <method name="setTarget(Ljava/text/CharacterIterator;)V"/> + <field name="DONE"/> + <field name="breakIterator"/> + <field name="matchLength"/> + <field name="targetText"/> + </class> + <class name="android/icu/text/SearchIterator$ElementComparisonType" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/SearchIterator$ElementComparisonType;"/> + <method name="values()[Landroid/icu/text/SearchIterator$ElementComparisonType;"/> + <field name="ANY_BASE_WEIGHT_IS_WILDCARD"/> + <field name="PATTERN_BASE_WEIGHT_IS_WILDCARD"/> + <field name="STANDARD_ELEMENT_COMPARISON"/> + </class> + <class name="android/icu/text/SelectFormat" since="24"> + <extends name="java/text/Format"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="applyPattern(Ljava/lang/String;)V"/> + <method name="format(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="toPattern()Ljava/lang/String;"/> + </class> + <class name="android/icu/text/SimpleDateFormat" since="24"> + <extends name="android/icu/text/DateFormat"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Landroid/icu/text/DateFormatSymbols;)V"/> + <method name="<init>(Ljava/lang/String;Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/util/Locale;)V"/> + <method name="applyLocalizedPattern(Ljava/lang/String;)V"/> + <method name="applyPattern(Ljava/lang/String;)V"/> + <method name="get2DigitYearStart()Ljava/util/Date;"/> + <method name="getDateFormatSymbols()Landroid/icu/text/DateFormatSymbols;"/> + <method name="getNumberFormat(C)Landroid/icu/text/NumberFormat;"/> + <method name="getSymbols()Landroid/icu/text/DateFormatSymbols;"/> + <method name="getTimeZoneFormat()Landroid/icu/text/TimeZoneFormat;"/> + <method name="matchQuarterString(Ljava/lang/String;II[Ljava/lang/String;Landroid/icu/util/Calendar;)I"/> + <method name="matchString(Ljava/lang/String;II[Ljava/lang/String;Landroid/icu/util/Calendar;)I"/> + <method name="patternCharToDateFormatField(C)Landroid/icu/text/DateFormat$Field;"/> + <method name="set2DigitYearStart(Ljava/util/Date;)V"/> + <method name="setDateFormatSymbols(Landroid/icu/text/DateFormatSymbols;)V"/> + <method name="setNumberFormat(Ljava/lang/String;Landroid/icu/text/NumberFormat;)V"/> + <method name="setTimeZoneFormat(Landroid/icu/text/TimeZoneFormat;)V"/> + <method name="subFormat(CIILjava/text/FieldPosition;Landroid/icu/text/DateFormatSymbols;Landroid/icu/util/Calendar;)Ljava/lang/String;"/> + <method name="subParse(Ljava/lang/String;ICIZZ[ZLandroid/icu/util/Calendar;)I"/> + <method name="toLocalizedPattern()Ljava/lang/String;"/> + <method name="toPattern()Ljava/lang/String;"/> + <method name="zeroPaddingNumber(JII)Ljava/lang/String;"/> + </class> + <class name="android/icu/text/StringPrepParseException" since="24"> + <extends name="java/text/ParseException"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="<init>(Ljava/lang/String;ILjava/lang/String;I)V"/> + <method name="<init>(Ljava/lang/String;ILjava/lang/String;II)V"/> + <method name="getError()I"/> + <field name="ACE_PREFIX_ERROR"/> + <field name="BUFFER_OVERFLOW_ERROR"/> + <field name="CHECK_BIDI_ERROR"/> + <field name="DOMAIN_NAME_TOO_LONG_ERROR"/> + <field name="ILLEGAL_CHAR_FOUND"/> + <field name="INVALID_CHAR_FOUND"/> + <field name="LABEL_TOO_LONG_ERROR"/> + <field name="PROHIBITED_ERROR"/> + <field name="STD3_ASCII_RULES_ERROR"/> + <field name="UNASSIGNED_ERROR"/> + <field name="VERIFICATION_ERROR"/> + <field name="ZERO_LENGTH_LABEL"/> + </class> + <class name="android/icu/text/StringSearch" since="24"> + <extends name="android/icu/text/SearchIterator"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/text/CharacterIterator;Landroid/icu/text/RuleBasedCollator;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/text/CharacterIterator;Landroid/icu/text/RuleBasedCollator;Landroid/icu/text/BreakIterator;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/text/CharacterIterator;Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/text/CharacterIterator;Ljava/util/Locale;)V"/> + <method name="getCollator()Landroid/icu/text/RuleBasedCollator;"/> + <method name="getPattern()Ljava/lang/String;"/> + <method name="isCanonical()Z"/> + <method name="setCanonical(Z)V"/> + <method name="setCollator(Landroid/icu/text/RuleBasedCollator;)V"/> + <method name="setPattern(Ljava/lang/String;)V"/> + </class> + <class name="android/icu/text/SymbolTable" since="24"> + <extends name="java/lang/Object"/> + <method name="lookup(Ljava/lang/String;)[C"/> + <method name="lookupMatcher(I)Landroid/icu/text/UnicodeMatcher;"/> + <method name="parseReference(Ljava/lang/String;Ljava/text/ParsePosition;I)Ljava/lang/String;"/> + <field name="SYMBOL_REF"/> + </class> + <class name="android/icu/text/TimeZoneFormat" since="24"> + <extends name="android/icu/text/UFormat"/> + <implements name="android/icu/util/Freezable"/> + <method name="<init>(Landroid/icu/util/ULocale;)V"/> + <method name="cloneAsThawed()Landroid/icu/text/TimeZoneFormat;"/> + <method name="format(Landroid/icu/text/TimeZoneFormat$Style;Landroid/icu/util/TimeZone;J)Ljava/lang/String;"/> + <method name="format(Landroid/icu/text/TimeZoneFormat$Style;Landroid/icu/util/TimeZone;JLandroid/icu/util/Output;)Ljava/lang/String;"/> + <method name="formatOffsetISO8601Basic(IZZZ)Ljava/lang/String;"/> + <method name="formatOffsetISO8601Extended(IZZZ)Ljava/lang/String;"/> + <method name="formatOffsetLocalizedGMT(I)Ljava/lang/String;"/> + <method name="formatOffsetShortLocalizedGMT(I)Ljava/lang/String;"/> + <method name="freeze()Landroid/icu/text/TimeZoneFormat;"/> + <method name="getDefaultParseOptions()Ljava/util/EnumSet;"/> + <method name="getGMTOffsetDigits()Ljava/lang/String;"/> + <method name="getGMTOffsetPattern(Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;)Ljava/lang/String;"/> + <method name="getGMTPattern()Ljava/lang/String;"/> + <method name="getGMTZeroFormat()Ljava/lang/String;"/> + <method name="getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/TimeZoneFormat;"/> + <method name="getInstance(Ljava/util/Locale;)Landroid/icu/text/TimeZoneFormat;"/> + <method name="getTimeZoneNames()Landroid/icu/text/TimeZoneNames;"/> + <method name="parse(Landroid/icu/text/TimeZoneFormat$Style;Ljava/lang/String;Ljava/text/ParsePosition;Landroid/icu/util/Output;)Landroid/icu/util/TimeZone;"/> + <method name="parse(Landroid/icu/text/TimeZoneFormat$Style;Ljava/lang/String;Ljava/text/ParsePosition;Ljava/util/EnumSet;Landroid/icu/util/Output;)Landroid/icu/util/TimeZone;"/> + <method name="parse(Ljava/lang/String;)Landroid/icu/util/TimeZone;"/> + <method name="parse(Ljava/lang/String;Ljava/text/ParsePosition;)Landroid/icu/util/TimeZone;"/> + <method name="parseOffsetISO8601(Ljava/lang/String;Ljava/text/ParsePosition;)I"/> + <method name="parseOffsetLocalizedGMT(Ljava/lang/String;Ljava/text/ParsePosition;)I"/> + <method name="parseOffsetShortLocalizedGMT(Ljava/lang/String;Ljava/text/ParsePosition;)I"/> + <method name="setDefaultParseOptions(Ljava/util/EnumSet;)Landroid/icu/text/TimeZoneFormat;"/> + <method name="setGMTOffsetDigits(Ljava/lang/String;)Landroid/icu/text/TimeZoneFormat;"/> + <method name="setGMTOffsetPattern(Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;Ljava/lang/String;)Landroid/icu/text/TimeZoneFormat;"/> + <method name="setGMTPattern(Ljava/lang/String;)Landroid/icu/text/TimeZoneFormat;"/> + <method name="setGMTZeroFormat(Ljava/lang/String;)Landroid/icu/text/TimeZoneFormat;"/> + <method name="setTimeZoneNames(Landroid/icu/text/TimeZoneNames;)Landroid/icu/text/TimeZoneFormat;"/> + </class> + <class name="android/icu/text/TimeZoneFormat$GMTOffsetPatternType" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;"/> + <method name="values()[Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;"/> + <field name="NEGATIVE_H"/> + <field name="NEGATIVE_HM"/> + <field name="NEGATIVE_HMS"/> + <field name="POSITIVE_H"/> + <field name="POSITIVE_HM"/> + <field name="POSITIVE_HMS"/> + </class> + <class name="android/icu/text/TimeZoneFormat$ParseOption" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/TimeZoneFormat$ParseOption;"/> + <method name="values()[Landroid/icu/text/TimeZoneFormat$ParseOption;"/> + <field name="ALL_STYLES"/> + <field name="TZ_DATABASE_ABBREVIATIONS"/> + </class> + <class name="android/icu/text/TimeZoneFormat$Style" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/TimeZoneFormat$Style;"/> + <method name="values()[Landroid/icu/text/TimeZoneFormat$Style;"/> + <field name="EXEMPLAR_LOCATION"/> + <field name="GENERIC_LOCATION"/> + <field name="GENERIC_LONG"/> + <field name="GENERIC_SHORT"/> + <field name="ISO_BASIC_FIXED"/> + <field name="ISO_BASIC_FULL"/> + <field name="ISO_BASIC_LOCAL_FIXED"/> + <field name="ISO_BASIC_LOCAL_FULL"/> + <field name="ISO_BASIC_LOCAL_SHORT"/> + <field name="ISO_BASIC_SHORT"/> + <field name="ISO_EXTENDED_FIXED"/> + <field name="ISO_EXTENDED_FULL"/> + <field name="ISO_EXTENDED_LOCAL_FIXED"/> + <field name="ISO_EXTENDED_LOCAL_FULL"/> + <field name="LOCALIZED_GMT"/> + <field name="LOCALIZED_GMT_SHORT"/> + <field name="SPECIFIC_LONG"/> + <field name="SPECIFIC_SHORT"/> + <field name="ZONE_ID"/> + <field name="ZONE_ID_SHORT"/> + </class> + <class name="android/icu/text/TimeZoneFormat$TimeType" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/TimeZoneFormat$TimeType;"/> + <method name="values()[Landroid/icu/text/TimeZoneFormat$TimeType;"/> + <field name="DAYLIGHT"/> + <field name="STANDARD"/> + <field name="UNKNOWN"/> + </class> + <class name="android/icu/text/TimeZoneNames" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="getAvailableMetaZoneIDs()Ljava/util/Set;"/> + <method name="getAvailableMetaZoneIDs(Ljava/lang/String;)Ljava/util/Set;"/> + <method name="getDisplayName(Ljava/lang/String;Landroid/icu/text/TimeZoneNames$NameType;J)Ljava/lang/String;"/> + <method name="getExemplarLocationName(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/TimeZoneNames;"/> + <method name="getInstance(Ljava/util/Locale;)Landroid/icu/text/TimeZoneNames;"/> + <method name="getMetaZoneDisplayName(Ljava/lang/String;Landroid/icu/text/TimeZoneNames$NameType;)Ljava/lang/String;"/> + <method name="getMetaZoneID(Ljava/lang/String;J)Ljava/lang/String;"/> + <method name="getReferenceZoneID(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getTZDBInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/TimeZoneNames;"/> + <method name="getTimeZoneDisplayName(Ljava/lang/String;Landroid/icu/text/TimeZoneNames$NameType;)Ljava/lang/String;"/> + </class> + <class name="android/icu/text/TimeZoneNames$NameType" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/TimeZoneNames$NameType;"/> + <method name="values()[Landroid/icu/text/TimeZoneNames$NameType;"/> + <field name="EXEMPLAR_LOCATION"/> + <field name="LONG_DAYLIGHT"/> + <field name="LONG_GENERIC"/> + <field name="LONG_STANDARD"/> + <field name="SHORT_DAYLIGHT"/> + <field name="SHORT_GENERIC"/> + <field name="SHORT_STANDARD"/> + </class> + <class name="android/icu/text/UCharacterIterator" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="current()I"/> + <method name="currentCodePoint()I"/> + <method name="getCharacterIterator()Ljava/text/CharacterIterator;"/> + <method name="getIndex()I"/> + <method name="getInstance(Landroid/icu/text/Replaceable;)Landroid/icu/text/UCharacterIterator;"/> + <method name="getInstance(Ljava/lang/String;)Landroid/icu/text/UCharacterIterator;"/> + <method name="getInstance(Ljava/lang/StringBuffer;)Landroid/icu/text/UCharacterIterator;"/> + <method name="getInstance(Ljava/text/CharacterIterator;)Landroid/icu/text/UCharacterIterator;"/> + <method name="getInstance([C)Landroid/icu/text/UCharacterIterator;"/> + <method name="getInstance([CII)Landroid/icu/text/UCharacterIterator;"/> + <method name="getLength()I"/> + <method name="getText()Ljava/lang/String;"/> + <method name="getText([C)I"/> + <method name="getText([CI)I"/> + <method name="moveCodePointIndex(I)I"/> + <method name="moveIndex(I)I"/> + <method name="next()I"/> + <method name="nextCodePoint()I"/> + <method name="previous()I"/> + <method name="previousCodePoint()I"/> + <method name="setIndex(I)V"/> + <method name="setToLimit()V"/> + <method name="setToStart()V"/> + <field name="DONE"/> + </class> + <class name="android/icu/text/UFormat" since="24"> + <extends name="java/text/Format"/> + <method name="<init>()V"/> + </class> + <class name="android/icu/text/UnicodeFilter" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/icu/text/UnicodeMatcher"/> + <method name="<init>()V"/> + <method name="contains(I)Z"/> + </class> + <class name="android/icu/text/UnicodeMatcher" since="24"> + <extends name="java/lang/Object"/> + <method name="addMatchSetTo(Landroid/icu/text/UnicodeSet;)V"/> + <method name="matches(Landroid/icu/text/Replaceable;[IIZ)I"/> + <method name="matchesIndexValue(I)Z"/> + <method name="toPattern(Z)Ljava/lang/String;"/> + <field name="ETHER"/> + <field name="U_MATCH"/> + <field name="U_MISMATCH"/> + <field name="U_PARTIAL_MATCH"/> + </class> + <class name="android/icu/text/UnicodeSet" since="24"> + <extends name="android/icu/text/UnicodeFilter"/> + <implements name="android/icu/util/Freezable"/> + <implements name="java/lang/Comparable"/> + <implements name="java/lang/Iterable"/> + <method name="<init>()V"/> + <method name="<init>(II)V"/> + <method name="<init>(Landroid/icu/text/UnicodeSet;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="<init>(Ljava/lang/String;Ljava/text/ParsePosition;Landroid/icu/text/SymbolTable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/text/ParsePosition;Landroid/icu/text/SymbolTable;I)V"/> + <method name="<init>(Ljava/lang/String;Z)V"/> + <method name="<init>([I)V"/> + <method name="_generatePattern(Ljava/lang/StringBuffer;Z)Ljava/lang/StringBuffer;"/> + <method name="_generatePattern(Ljava/lang/StringBuffer;ZZ)Ljava/lang/StringBuffer;"/> + <method name="add(I)Landroid/icu/text/UnicodeSet;"/> + <method name="add(II)Landroid/icu/text/UnicodeSet;"/> + <method name="add(Ljava/lang/CharSequence;)Landroid/icu/text/UnicodeSet;"/> + <method name="add(Ljava/lang/Iterable;)Landroid/icu/text/UnicodeSet;"/> + <method name="addAll(II)Landroid/icu/text/UnicodeSet;"/> + <method name="addAll(Landroid/icu/text/UnicodeSet;)Landroid/icu/text/UnicodeSet;"/> + <method name="addAll(Ljava/lang/CharSequence;)Landroid/icu/text/UnicodeSet;"/> + <method name="addAll(Ljava/lang/Iterable;)Landroid/icu/text/UnicodeSet;"/> + <method name="addAll([Ljava/lang/CharSequence;)Landroid/icu/text/UnicodeSet;"/> + <method name="addAllTo(Ljava/util/Collection;)Ljava/util/Collection;"/> + <method name="applyIntPropertyValue(II)Landroid/icu/text/UnicodeSet;"/> + <method name="applyPattern(Ljava/lang/String;)Landroid/icu/text/UnicodeSet;"/> + <method name="applyPattern(Ljava/lang/String;I)Landroid/icu/text/UnicodeSet;"/> + <method name="applyPattern(Ljava/lang/String;Z)Landroid/icu/text/UnicodeSet;"/> + <method name="applyPropertyAlias(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/text/UnicodeSet;"/> + <method name="applyPropertyAlias(Ljava/lang/String;Ljava/lang/String;Landroid/icu/text/SymbolTable;)Landroid/icu/text/UnicodeSet;"/> + <method name="charAt(I)I"/> + <method name="clear()Landroid/icu/text/UnicodeSet;"/> + <method name="cloneAsThawed()Landroid/icu/text/UnicodeSet;"/> + <method name="closeOver(I)Landroid/icu/text/UnicodeSet;"/> + <method name="compact()Landroid/icu/text/UnicodeSet;"/> + <method name="compareTo(Landroid/icu/text/UnicodeSet;)I"/> + <method name="compareTo(Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet$ComparisonStyle;)I"/> + <method name="compareTo(Ljava/lang/Iterable;)I"/> + <method name="complement()Landroid/icu/text/UnicodeSet;"/> + <method name="complement(I)Landroid/icu/text/UnicodeSet;"/> + <method name="complement(II)Landroid/icu/text/UnicodeSet;"/> + <method name="complement(Ljava/lang/CharSequence;)Landroid/icu/text/UnicodeSet;"/> + <method name="complementAll(Landroid/icu/text/UnicodeSet;)Landroid/icu/text/UnicodeSet;"/> + <method name="complementAll(Ljava/lang/CharSequence;)Landroid/icu/text/UnicodeSet;"/> + <method name="contains(II)Z"/> + <method name="contains(Ljava/lang/CharSequence;)Z"/> + <method name="containsAll(Landroid/icu/text/UnicodeSet;)Z"/> + <method name="containsAll(Ljava/lang/Iterable;)Z"/> + <method name="containsAll(Ljava/lang/String;)Z"/> + <method name="containsNone(II)Z"/> + <method name="containsNone(Landroid/icu/text/UnicodeSet;)Z"/> + <method name="containsNone(Ljava/lang/CharSequence;)Z"/> + <method name="containsNone(Ljava/lang/Iterable;)Z"/> + <method name="containsSome(II)Z"/> + <method name="containsSome(Landroid/icu/text/UnicodeSet;)Z"/> + <method name="containsSome(Ljava/lang/CharSequence;)Z"/> + <method name="containsSome(Ljava/lang/Iterable;)Z"/> + <method name="freeze()Landroid/icu/text/UnicodeSet;"/> + <method name="from(Ljava/lang/CharSequence;)Landroid/icu/text/UnicodeSet;"/> + <method name="fromAll(Ljava/lang/CharSequence;)Landroid/icu/text/UnicodeSet;"/> + <method name="getRangeCount()I"/> + <method name="getRangeEnd(I)I"/> + <method name="getRangeStart(I)I"/> + <method name="indexOf(I)I"/> + <method name="isEmpty()Z"/> + <method name="ranges()Ljava/lang/Iterable;"/> + <method name="remove(I)Landroid/icu/text/UnicodeSet;"/> + <method name="remove(II)Landroid/icu/text/UnicodeSet;"/> + <method name="remove(Ljava/lang/CharSequence;)Landroid/icu/text/UnicodeSet;"/> + <method name="removeAll(Landroid/icu/text/UnicodeSet;)Landroid/icu/text/UnicodeSet;"/> + <method name="removeAll(Ljava/lang/CharSequence;)Landroid/icu/text/UnicodeSet;"/> + <method name="removeAll(Ljava/lang/Iterable;)Landroid/icu/text/UnicodeSet;"/> + <method name="removeAllStrings()Landroid/icu/text/UnicodeSet;"/> + <method name="retain(I)Landroid/icu/text/UnicodeSet;"/> + <method name="retain(II)Landroid/icu/text/UnicodeSet;"/> + <method name="retain(Ljava/lang/CharSequence;)Landroid/icu/text/UnicodeSet;"/> + <method name="retainAll(Landroid/icu/text/UnicodeSet;)Landroid/icu/text/UnicodeSet;"/> + <method name="retainAll(Ljava/lang/CharSequence;)Landroid/icu/text/UnicodeSet;"/> + <method name="retainAll(Ljava/lang/Iterable;)Landroid/icu/text/UnicodeSet;"/> + <method name="set(II)Landroid/icu/text/UnicodeSet;"/> + <method name="set(Landroid/icu/text/UnicodeSet;)Landroid/icu/text/UnicodeSet;"/> + <method name="size()I"/> + <method name="span(Ljava/lang/CharSequence;ILandroid/icu/text/UnicodeSet$SpanCondition;)I"/> + <method name="span(Ljava/lang/CharSequence;Landroid/icu/text/UnicodeSet$SpanCondition;)I"/> + <method name="spanBack(Ljava/lang/CharSequence;ILandroid/icu/text/UnicodeSet$SpanCondition;)I"/> + <method name="spanBack(Ljava/lang/CharSequence;Landroid/icu/text/UnicodeSet$SpanCondition;)I"/> + <method name="strings()Ljava/util/Collection;"/> + <field name="ADD_CASE_MAPPINGS"/> + <field name="ALL_CODE_POINTS"/> + <field name="CASE"/> + <field name="CASE_INSENSITIVE"/> + <field name="EMPTY"/> + <field name="IGNORE_SPACE"/> + <field name="MAX_VALUE"/> + <field name="MIN_VALUE"/> + </class> + <class name="android/icu/text/UnicodeSet$ComparisonStyle" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/UnicodeSet$ComparisonStyle;"/> + <method name="values()[Landroid/icu/text/UnicodeSet$ComparisonStyle;"/> + <field name="LEXICOGRAPHIC"/> + <field name="LONGER_FIRST"/> + <field name="SHORTER_FIRST"/> + </class> + <class name="android/icu/text/UnicodeSet$EntryRange" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="codepoint"/> + <field name="codepointEnd"/> + </class> + <class name="android/icu/text/UnicodeSet$SpanCondition" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/UnicodeSet$SpanCondition;"/> + <method name="values()[Landroid/icu/text/UnicodeSet$SpanCondition;"/> + <field name="CONDITION_COUNT"/> + <field name="CONTAINED"/> + <field name="NOT_CONTAINED"/> + <field name="SIMPLE"/> + </class> + <class name="android/icu/text/UnicodeSetIterator" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/icu/text/UnicodeSet;)V"/> + <method name="getString()Ljava/lang/String;"/> + <method name="next()Z"/> + <method name="nextRange()Z"/> + <method name="reset()V"/> + <method name="reset(Landroid/icu/text/UnicodeSet;)V"/> + <field name="IS_STRING"/> + <field name="codepoint"/> + <field name="codepointEnd"/> + <field name="string"/> + </class> + <class name="android/icu/text/UnicodeSetSpanner" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/icu/text/UnicodeSet;)V"/> + <method name="countIn(Ljava/lang/CharSequence;)I"/> + <method name="countIn(Ljava/lang/CharSequence;Landroid/icu/text/UnicodeSetSpanner$CountMethod;)I"/> + <method name="countIn(Ljava/lang/CharSequence;Landroid/icu/text/UnicodeSetSpanner$CountMethod;Landroid/icu/text/UnicodeSet$SpanCondition;)I"/> + <method name="deleteFrom(Ljava/lang/CharSequence;)Ljava/lang/String;"/> + <method name="deleteFrom(Ljava/lang/CharSequence;Landroid/icu/text/UnicodeSet$SpanCondition;)Ljava/lang/String;"/> + <method name="getUnicodeSet()Landroid/icu/text/UnicodeSet;"/> + <method name="replaceFrom(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;"/> + <method name="replaceFrom(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/icu/text/UnicodeSetSpanner$CountMethod;)Ljava/lang/String;"/> + <method name="replaceFrom(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/icu/text/UnicodeSetSpanner$CountMethod;Landroid/icu/text/UnicodeSet$SpanCondition;)Ljava/lang/String;"/> + <method name="trim(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;"/> + <method name="trim(Ljava/lang/CharSequence;Landroid/icu/text/UnicodeSetSpanner$TrimOption;)Ljava/lang/CharSequence;"/> + <method name="trim(Ljava/lang/CharSequence;Landroid/icu/text/UnicodeSetSpanner$TrimOption;Landroid/icu/text/UnicodeSet$SpanCondition;)Ljava/lang/CharSequence;"/> + </class> + <class name="android/icu/text/UnicodeSetSpanner$CountMethod" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/UnicodeSetSpanner$CountMethod;"/> + <method name="values()[Landroid/icu/text/UnicodeSetSpanner$CountMethod;"/> + <field name="MIN_ELEMENTS"/> + <field name="WHOLE_SPAN"/> + </class> + <class name="android/icu/text/UnicodeSetSpanner$TrimOption" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/text/UnicodeSetSpanner$TrimOption;"/> + <method name="values()[Landroid/icu/text/UnicodeSetSpanner$TrimOption;"/> + <field name="BOTH"/> + <field name="LEADING"/> + <field name="TRAILING"/> + </class> + <class name="android/icu/util/BuddhistCalendar" since="24"> + <extends name="android/icu/util/GregorianCalendar"/> + <method name="<init>()V"/> + <method name="<init>(III)V"/> + <method name="<init>(IIIIII)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;Ljava/util/Locale;)V"/> + <method name="<init>(Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Ljava/util/Date;)V"/> + <method name="<init>(Ljava/util/Locale;)V"/> + <field name="BE"/> + </class> + <class name="android/icu/util/CECalendar" since="24"> + <extends name="android/icu/util/Calendar"/> + <method name="<init>()V"/> + <method name="<init>(III)V"/> + <method name="<init>(IIIIII)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;Ljava/util/Locale;)V"/> + <method name="<init>(Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Ljava/util/Date;)V"/> + <method name="<init>(Ljava/util/Locale;)V"/> + </class> + <class name="android/icu/util/Calendar" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <implements name="java/lang/Comparable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;Ljava/util/Locale;)V"/> + <method name="add(II)V"/> + <method name="after(Ljava/lang/Object;)Z"/> + <method name="before(Ljava/lang/Object;)Z"/> + <method name="clear()V"/> + <method name="clear(I)V"/> + <method name="compareTo(Landroid/icu/util/Calendar;)I"/> + <method name="complete()V"/> + <method name="computeFields()V"/> + <method name="computeGregorianFields(I)V"/> + <method name="computeGregorianMonthStart(II)I"/> + <method name="computeJulianDay()I"/> + <method name="computeMillisInDay()I" deprecated="26"/> + <method name="computeTime()V"/> + <method name="computeZoneOffset(JI)I" deprecated="26"/> + <method name="fieldDifference(Ljava/util/Date;I)I"/> + <method name="fieldName(I)Ljava/lang/String;"/> + <method name="floorDivide(II)I"/> + <method name="floorDivide(II[I)I"/> + <method name="floorDivide(JI[I)I"/> + <method name="floorDivide(JJ)J"/> + <method name="get(I)I"/> + <method name="getActualMaximum(I)I"/> + <method name="getActualMinimum(I)I"/> + <method name="getAvailableLocales()[Ljava/util/Locale;"/> + <method name="getDateTimeFormat(IILandroid/icu/util/ULocale;)Landroid/icu/text/DateFormat;"/> + <method name="getDateTimeFormat(IILjava/util/Locale;)Landroid/icu/text/DateFormat;"/> + <method name="getDisplayName(Landroid/icu/util/ULocale;)Ljava/lang/String;"/> + <method name="getDisplayName(Ljava/util/Locale;)Ljava/lang/String;"/> + <method name="getFieldCount()I"/> + <method name="getFieldResolutionTable()[[[I"/> + <method name="getFirstDayOfWeek()I"/> + <method name="getGreatestMinimum(I)I"/> + <method name="getGregorianDayOfMonth()I"/> + <method name="getGregorianDayOfYear()I"/> + <method name="getGregorianMonth()I"/> + <method name="getGregorianYear()I"/> + <method name="getInstance()Landroid/icu/util/Calendar;"/> + <method name="getInstance(Landroid/icu/util/TimeZone;)Landroid/icu/util/Calendar;"/> + <method name="getInstance(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar;"/> + <method name="getInstance(Landroid/icu/util/TimeZone;Ljava/util/Locale;)Landroid/icu/util/Calendar;"/> + <method name="getInstance(Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar;"/> + <method name="getInstance(Ljava/util/Locale;)Landroid/icu/util/Calendar;"/> + <method name="getKeywordValuesForLocale(Ljava/lang/String;Landroid/icu/util/ULocale;Z)[Ljava/lang/String;"/> + <method name="getLeastMaximum(I)I"/> + <method name="getLimit(II)I"/> + <method name="getMaximum(I)I"/> + <method name="getMinimalDaysInFirstWeek()I"/> + <method name="getMinimum(I)I"/> + <method name="getRepeatedWallTimeOption()I"/> + <method name="getSkippedWallTimeOption()I"/> + <method name="getStamp(I)I"/> + <method name="getTime()Ljava/util/Date;"/> + <method name="getTimeInMillis()J"/> + <method name="getTimeZone()Landroid/icu/util/TimeZone;"/> + <method name="getType()Ljava/lang/String;"/> + <method name="getWeekData()Landroid/icu/util/Calendar$WeekData;"/> + <method name="getWeekDataForRegion(Ljava/lang/String;)Landroid/icu/util/Calendar$WeekData;"/> + <method name="gregorianMonthLength(II)I"/> + <method name="gregorianPreviousMonthLength(II)I"/> + <method name="handleComputeFields(I)V"/> + <method name="handleComputeJulianDay(I)I"/> + <method name="handleComputeMonthStart(IIZ)I"/> + <method name="handleCreateFields()[I"/> + <method name="handleGetDateFormat(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormat;"/> + <method name="handleGetDateFormat(Ljava/lang/String;Ljava/lang/String;Ljava/util/Locale;)Landroid/icu/text/DateFormat;"/> + <method name="handleGetDateFormat(Ljava/lang/String;Ljava/util/Locale;)Landroid/icu/text/DateFormat;"/> + <method name="handleGetExtendedYear()I"/> + <method name="handleGetLimit(II)I"/> + <method name="handleGetMonthLength(II)I"/> + <method name="handleGetYearLength(I)I"/> + <method name="internalGet(I)I"/> + <method name="internalGet(II)I"/> + <method name="internalGetTimeInMillis()J"/> + <method name="internalSet(II)V"/> + <method name="isEquivalentTo(Landroid/icu/util/Calendar;)Z"/> + <method name="isGregorianLeapYear(I)Z"/> + <method name="isLenient()Z"/> + <method name="isSet(I)Z"/> + <method name="isWeekend()Z"/> + <method name="isWeekend(Ljava/util/Date;)Z"/> + <method name="julianDayToDayOfWeek(I)I"/> + <method name="julianDayToMillis(I)J"/> + <method name="millisToJulianDay(J)I"/> + <method name="newerField(II)I"/> + <method name="newestStamp(III)I"/> + <method name="pinField(I)V"/> + <method name="prepareGetActual(IZ)V"/> + <method name="resolveFields([[[I)I"/> + <method name="roll(II)V"/> + <method name="roll(IZ)V"/> + <method name="set(II)V"/> + <method name="set(III)V"/> + <method name="set(IIIII)V"/> + <method name="set(IIIIII)V"/> + <method name="setFirstDayOfWeek(I)V"/> + <method name="setLenient(Z)V"/> + <method name="setMinimalDaysInFirstWeek(I)V"/> + <method name="setRepeatedWallTimeOption(I)V"/> + <method name="setSkippedWallTimeOption(I)V"/> + <method name="setTime(Ljava/util/Date;)V"/> + <method name="setTimeInMillis(J)V"/> + <method name="setTimeZone(Landroid/icu/util/TimeZone;)V"/> + <method name="setWeekData(Landroid/icu/util/Calendar$WeekData;)Landroid/icu/util/Calendar;"/> + <method name="validateField(I)V"/> + <method name="validateField(III)V"/> + <method name="validateFields()V"/> + <method name="weekNumber(II)I"/> + <method name="weekNumber(III)I"/> + <field name="AM"/> + <field name="AM_PM"/> + <field name="APRIL"/> + <field name="AUGUST"/> + <field name="BASE_FIELD_COUNT" deprecated="26"/> + <field name="DATE"/> + <field name="DAY_OF_MONTH"/> + <field name="DAY_OF_WEEK"/> + <field name="DAY_OF_WEEK_IN_MONTH"/> + <field name="DAY_OF_YEAR"/> + <field name="DECEMBER"/> + <field name="DOW_LOCAL"/> + <field name="DST_OFFSET"/> + <field name="EPOCH_JULIAN_DAY"/> + <field name="ERA"/> + <field name="EXTENDED_YEAR"/> + <field name="FEBRUARY"/> + <field name="FRIDAY"/> + <field name="GREATEST_MINIMUM"/> + <field name="HOUR"/> + <field name="HOUR_OF_DAY"/> + <field name="INTERNALLY_SET"/> + <field name="IS_LEAP_MONTH"/> + <field name="JANUARY"/> + <field name="JAN_1_1_JULIAN_DAY"/> + <field name="JULIAN_DAY"/> + <field name="JULY"/> + <field name="JUNE"/> + <field name="LEAST_MAXIMUM"/> + <field name="MARCH"/> + <field name="MAXIMUM"/> + <field name="MAX_DATE"/> + <field name="MAX_FIELD_COUNT" deprecated="26"/> + <field name="MAX_JULIAN"/> + <field name="MAX_MILLIS"/> + <field name="MAY"/> + <field name="MILLISECOND"/> + <field name="MILLISECONDS_IN_DAY"/> + <field name="MINIMUM"/> + <field name="MINIMUM_USER_STAMP"/> + <field name="MINUTE"/> + <field name="MIN_DATE"/> + <field name="MIN_JULIAN"/> + <field name="MIN_MILLIS"/> + <field name="MONDAY"/> + <field name="MONTH"/> + <field name="NOVEMBER"/> + <field name="OCTOBER"/> + <field name="ONE_DAY"/> + <field name="ONE_HOUR"/> + <field name="ONE_MINUTE"/> + <field name="ONE_SECOND"/> + <field name="ONE_WEEK"/> + <field name="PM"/> + <field name="RESOLVE_REMAP"/> + <field name="SATURDAY"/> + <field name="SECOND"/> + <field name="SEPTEMBER"/> + <field name="SUNDAY"/> + <field name="THURSDAY"/> + <field name="TUESDAY"/> + <field name="UNDECIMBER"/> + <field name="UNSET"/> + <field name="WALLTIME_FIRST"/> + <field name="WALLTIME_LAST"/> + <field name="WALLTIME_NEXT_VALID"/> + <field name="WEDNESDAY"/> + <field name="WEEK_OF_MONTH"/> + <field name="WEEK_OF_YEAR"/> + <field name="YEAR"/> + <field name="YEAR_WOY"/> + <field name="ZONE_OFFSET"/> + </class> + <class name="android/icu/util/Calendar$WeekData" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>(IIIIII)V"/> + <field name="firstDayOfWeek"/> + <field name="minimalDaysInFirstWeek"/> + <field name="weekendCease"/> + <field name="weekendCeaseMillis"/> + <field name="weekendOnset"/> + <field name="weekendOnsetMillis"/> + </class> + <class name="android/icu/util/ChineseCalendar" since="24"> + <extends name="android/icu/util/Calendar"/> + <method name="<init>()V"/> + <method name="<init>(IIII)V"/> + <method name="<init>(IIIII)V"/> + <method name="<init>(IIIIIII)V"/> + <method name="<init>(IIIIIIII)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;Ljava/util/Locale;)V"/> + <method name="<init>(Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Ljava/util/Date;)V"/> + <method name="<init>(Ljava/util/Locale;)V"/> + <method name="handleGetDateFormat(Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormat;"/> + </class> + <class name="android/icu/util/CopticCalendar" since="24"> + <extends name="android/icu/util/CECalendar"/> + <method name="<init>()V"/> + <method name="<init>(III)V"/> + <method name="<init>(IIIIII)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;Ljava/util/Locale;)V"/> + <method name="<init>(Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Ljava/util/Date;)V"/> + <method name="<init>(Ljava/util/Locale;)V"/> + <field name="AMSHIR"/> + <field name="BABA"/> + <field name="BARAMHAT"/> + <field name="BARAMOUDA"/> + <field name="BASHANS"/> + <field name="EPEP"/> + <field name="HATOR"/> + <field name="KIAHK"/> + <field name="MESRA"/> + <field name="NASIE"/> + <field name="PAONA"/> + <field name="TOBA"/> + <field name="TOUT"/> + </class> + <class name="android/icu/util/Currency" since="24"> + <extends name="android/icu/util/MeasureUnit"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getAvailableCurrencies()Ljava/util/Set;"/> + <method name="getAvailableCurrencyCodes(Landroid/icu/util/ULocale;Ljava/util/Date;)[Ljava/lang/String;"/> + <method name="getAvailableCurrencyCodes(Ljava/util/Locale;Ljava/util/Date;)[Ljava/lang/String;"/> + <method name="getAvailableLocales()[Ljava/util/Locale;"/> + <method name="getAvailableULocales()[Landroid/icu/util/ULocale;"/> + <method name="getCurrencyCode()Ljava/lang/String;"/> + <method name="getDefaultFractionDigits()I"/> + <method name="getDefaultFractionDigits(Landroid/icu/util/Currency$CurrencyUsage;)I"/> + <method name="getDisplayName()Ljava/lang/String;"/> + <method name="getDisplayName(Ljava/util/Locale;)Ljava/lang/String;"/> + <method name="getInstance(Landroid/icu/util/ULocale;)Landroid/icu/util/Currency;"/> + <method name="getInstance(Ljava/lang/String;)Landroid/icu/util/Currency;"/> + <method name="getInstance(Ljava/util/Locale;)Landroid/icu/util/Currency;"/> + <method name="getKeywordValuesForLocale(Ljava/lang/String;Landroid/icu/util/ULocale;Z)[Ljava/lang/String;"/> + <method name="getName(Landroid/icu/util/ULocale;ILjava/lang/String;[Z)Ljava/lang/String;"/> + <method name="getName(Landroid/icu/util/ULocale;I[Z)Ljava/lang/String;"/> + <method name="getName(Ljava/util/Locale;ILjava/lang/String;[Z)Ljava/lang/String;"/> + <method name="getName(Ljava/util/Locale;I[Z)Ljava/lang/String;"/> + <method name="getNumericCode()I"/> + <method name="getRoundingIncrement()D"/> + <method name="getRoundingIncrement(Landroid/icu/util/Currency$CurrencyUsage;)D"/> + <method name="getSymbol()Ljava/lang/String;"/> + <method name="getSymbol(Landroid/icu/util/ULocale;)Ljava/lang/String;"/> + <method name="getSymbol(Ljava/util/Locale;)Ljava/lang/String;"/> + <method name="isAvailable(Ljava/lang/String;Ljava/util/Date;Ljava/util/Date;)Z"/> + <field name="LONG_NAME"/> + <field name="PLURAL_LONG_NAME"/> + <field name="SYMBOL_NAME"/> + </class> + <class name="android/icu/util/Currency$CurrencyUsage" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/util/Currency$CurrencyUsage;"/> + <method name="values()[Landroid/icu/util/Currency$CurrencyUsage;"/> + <field name="CASH"/> + <field name="STANDARD"/> + </class> + <class name="android/icu/util/CurrencyAmount" since="24"> + <extends name="android/icu/util/Measure"/> + <method name="<init>(DLandroid/icu/util/Currency;)V"/> + <method name="<init>(Ljava/lang/Number;Landroid/icu/util/Currency;)V"/> + <method name="getCurrency()Landroid/icu/util/Currency;"/> + </class> + <class name="android/icu/util/DateInterval" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(JJ)V"/> + <method name="getFromDate()J"/> + <method name="getToDate()J"/> + </class> + <class name="android/icu/util/EthiopicCalendar" since="26"> + <extends name="android/icu/util/CECalendar"/> + <method name="<init>()V"/> + <method name="<init>(III)V"/> + <method name="<init>(IIIIII)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;Ljava/util/Locale;)V"/> + <method name="<init>(Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Ljava/util/Date;)V"/> + <method name="<init>(Ljava/util/Locale;)V"/> + <method name="isAmeteAlemEra()Z"/> + <method name="setAmeteAlemEra(Z)V"/> + <field name="GENBOT"/> + <field name="HAMLE"/> + <field name="HEDAR"/> + <field name="MEGABIT"/> + <field name="MESKEREM"/> + <field name="MIAZIA"/> + <field name="NEHASSE"/> + <field name="PAGUMEN"/> + <field name="SENE"/> + <field name="TAHSAS"/> + <field name="TEKEMT"/> + <field name="TER"/> + <field name="YEKATIT"/> + </class> + <class name="android/icu/util/Freezable" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <method name="cloneAsThawed()Ljava/lang/Object;"/> + <method name="freeze()Ljava/lang/Object;"/> + <method name="isFrozen()Z"/> + </class> + <class name="android/icu/util/GregorianCalendar" since="24"> + <extends name="android/icu/util/Calendar"/> + <method name="<init>()V"/> + <method name="<init>(III)V"/> + <method name="<init>(IIIII)V"/> + <method name="<init>(IIIIII)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;Ljava/util/Locale;)V"/> + <method name="<init>(Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Ljava/util/Locale;)V"/> + <method name="getGregorianChange()Ljava/util/Date;"/> + <method name="isLeapYear(I)Z"/> + <method name="setGregorianChange(Ljava/util/Date;)V"/> + <field name="AD"/> + <field name="BC"/> + <field name="invertGregorian"/> + <field name="isGregorian"/> + </class> + <class name="android/icu/util/HebrewCalendar" since="24"> + <extends name="android/icu/util/Calendar"/> + <method name="<init>()V"/> + <method name="<init>(III)V"/> + <method name="<init>(IIIIII)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;Ljava/util/Locale;)V"/> + <method name="<init>(Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Ljava/util/Date;)V"/> + <method name="<init>(Ljava/util/Locale;)V"/> + <field name="ADAR"/> + <field name="ADAR_1"/> + <field name="AV"/> + <field name="ELUL"/> + <field name="HESHVAN"/> + <field name="IYAR"/> + <field name="KISLEV"/> + <field name="NISAN"/> + <field name="SHEVAT"/> + <field name="SIVAN"/> + <field name="TAMUZ"/> + <field name="TEVET"/> + <field name="TISHRI"/> + </class> + <class name="android/icu/util/ICUUncheckedIOException" since="24"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="android/icu/util/IndianCalendar" since="24"> + <extends name="android/icu/util/Calendar"/> + <method name="<init>()V"/> + <method name="<init>(III)V"/> + <method name="<init>(IIIIII)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;Ljava/util/Locale;)V"/> + <method name="<init>(Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Ljava/util/Date;)V"/> + <method name="<init>(Ljava/util/Locale;)V"/> + <field name="AGRAHAYANA"/> + <field name="ASADHA"/> + <field name="ASVINA"/> + <field name="BHADRA"/> + <field name="CHAITRA"/> + <field name="IE"/> + <field name="JYAISTHA"/> + <field name="KARTIKA"/> + <field name="MAGHA"/> + <field name="PAUSA"/> + <field name="PHALGUNA"/> + <field name="SRAVANA"/> + <field name="VAISAKHA"/> + </class> + <class name="android/icu/util/IslamicCalendar" since="24"> + <extends name="android/icu/util/Calendar"/> + <method name="<init>()V"/> + <method name="<init>(III)V"/> + <method name="<init>(IIIIII)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;Ljava/util/Locale;)V"/> + <method name="<init>(Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Ljava/util/Date;)V"/> + <method name="<init>(Ljava/util/Locale;)V"/> + <method name="getCalculationType()Landroid/icu/util/IslamicCalendar$CalculationType;"/> + <method name="setCalculationType(Landroid/icu/util/IslamicCalendar$CalculationType;)V"/> + <field name="DHU_AL_HIJJAH"/> + <field name="DHU_AL_QIDAH"/> + <field name="JUMADA_1"/> + <field name="JUMADA_2"/> + <field name="MUHARRAM"/> + <field name="RABI_1"/> + <field name="RABI_2"/> + <field name="RAJAB"/> + <field name="RAMADAN"/> + <field name="SAFAR"/> + <field name="SHABAN"/> + <field name="SHAWWAL"/> + </class> + <class name="android/icu/util/IslamicCalendar$CalculationType" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/util/IslamicCalendar$CalculationType;"/> + <method name="values()[Landroid/icu/util/IslamicCalendar$CalculationType;"/> + <field name="ISLAMIC"/> + <field name="ISLAMIC_CIVIL"/> + <field name="ISLAMIC_TBLA"/> + <field name="ISLAMIC_UMALQURA"/> + </class> + <class name="android/icu/util/JapaneseCalendar" since="24"> + <extends name="android/icu/util/GregorianCalendar"/> + <method name="<init>()V"/> + <method name="<init>(III)V"/> + <method name="<init>(IIII)V"/> + <method name="<init>(IIIIII)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;Ljava/util/Locale;)V"/> + <method name="<init>(Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Ljava/util/Date;)V"/> + <method name="<init>(Ljava/util/Locale;)V"/> + <field name="CURRENT_ERA"/> + <field name="HEISEI"/> + <field name="MEIJI"/> + <field name="SHOWA"/> + <field name="TAISHO"/> + </class> + <class name="android/icu/util/Measure" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/Number;Landroid/icu/util/MeasureUnit;)V"/> + <method name="getNumber()Ljava/lang/Number;"/> + <method name="getUnit()Landroid/icu/util/MeasureUnit;"/> + </class> + <class name="android/icu/util/MeasureUnit" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="getAvailable()Ljava/util/Set;"/> + <method name="getAvailable(Ljava/lang/String;)Ljava/util/Set;"/> + <method name="getAvailableTypes()Ljava/util/Set;"/> + <method name="getSubtype()Ljava/lang/String;"/> + <method name="getType()Ljava/lang/String;"/> + <field name="ACRE"/> + <field name="ACRE_FOOT"/> + <field name="AMPERE"/> + <field name="ARC_MINUTE"/> + <field name="ARC_SECOND"/> + <field name="ASTRONOMICAL_UNIT"/> + <field name="BIT"/> + <field name="BUSHEL"/> + <field name="BYTE"/> + <field name="CALORIE"/> + <field name="CARAT"/> + <field name="CELSIUS"/> + <field name="CENTILITER"/> + <field name="CENTIMETER"/> + <field name="CENTURY" since="26"/> + <field name="CUBIC_CENTIMETER"/> + <field name="CUBIC_FOOT"/> + <field name="CUBIC_INCH"/> + <field name="CUBIC_KILOMETER"/> + <field name="CUBIC_METER"/> + <field name="CUBIC_MILE"/> + <field name="CUBIC_YARD"/> + <field name="CUP"/> + <field name="CUP_METRIC" since="26"/> + <field name="DAY"/> + <field name="DECILITER"/> + <field name="DECIMETER"/> + <field name="DEGREE"/> + <field name="FAHRENHEIT"/> + <field name="FATHOM"/> + <field name="FLUID_OUNCE"/> + <field name="FOODCALORIE"/> + <field name="FOOT"/> + <field name="FURLONG"/> + <field name="GALLON"/> + <field name="GALLON_IMPERIAL" since="27"/> + <field name="GENERIC_TEMPERATURE" since="26"/> + <field name="GIGABIT"/> + <field name="GIGABYTE"/> + <field name="GIGAHERTZ"/> + <field name="GIGAWATT"/> + <field name="GRAM"/> + <field name="G_FORCE"/> + <field name="HECTARE"/> + <field name="HECTOLITER"/> + <field name="HECTOPASCAL"/> + <field name="HERTZ"/> + <field name="HORSEPOWER"/> + <field name="HOUR"/> + <field name="INCH"/> + <field name="INCH_HG"/> + <field name="JOULE"/> + <field name="KARAT"/> + <field name="KELVIN"/> + <field name="KILOBIT"/> + <field name="KILOBYTE"/> + <field name="KILOCALORIE"/> + <field name="KILOGRAM"/> + <field name="KILOHERTZ"/> + <field name="KILOJOULE"/> + <field name="KILOMETER"/> + <field name="KILOMETER_PER_HOUR"/> + <field name="KILOWATT"/> + <field name="KILOWATT_HOUR"/> + <field name="KNOT" since="26"/> + <field name="LIGHT_YEAR"/> + <field name="LITER"/> + <field name="LITER_PER_100KILOMETERS" since="26"/> + <field name="LITER_PER_KILOMETER"/> + <field name="LUX"/> + <field name="MEGABIT"/> + <field name="MEGABYTE"/> + <field name="MEGAHERTZ"/> + <field name="MEGALITER"/> + <field name="MEGAWATT"/> + <field name="METER"/> + <field name="METER_PER_SECOND"/> + <field name="METER_PER_SECOND_SQUARED"/> + <field name="METRIC_TON"/> + <field name="MICROGRAM"/> + <field name="MICROMETER"/> + <field name="MICROSECOND"/> + <field name="MILE"/> + <field name="MILE_PER_GALLON"/> + <field name="MILE_PER_GALLON_IMPERIAL" since="27"/> + <field name="MILE_PER_HOUR"/> + <field name="MILE_SCANDINAVIAN" since="26"/> + <field name="MILLIAMPERE"/> + <field name="MILLIBAR"/> + <field name="MILLIGRAM"/> + <field name="MILLIGRAM_PER_DECILITER" since="27"/> + <field name="MILLILITER"/> + <field name="MILLIMETER"/> + <field name="MILLIMETER_OF_MERCURY"/> + <field name="MILLISECOND"/> + <field name="MILLIWATT"/> + <field name="MINUTE"/> + <field name="MONTH"/> + <field name="NANOMETER"/> + <field name="NANOSECOND"/> + <field name="NAUTICAL_MILE"/> + <field name="OHM"/> + <field name="OUNCE"/> + <field name="OUNCE_TROY"/> + <field name="PARSEC"/> + <field name="PICOMETER"/> + <field name="PINT"/> + <field name="PINT_METRIC" since="26"/> + <field name="POUND"/> + <field name="POUND_PER_SQUARE_INCH"/> + <field name="QUART"/> + <field name="RADIAN"/> + <field name="REVOLUTION_ANGLE" since="26"/> + <field name="SECOND"/> + <field name="SQUARE_CENTIMETER"/> + <field name="SQUARE_FOOT"/> + <field name="SQUARE_INCH"/> + <field name="SQUARE_KILOMETER"/> + <field name="SQUARE_METER"/> + <field name="SQUARE_MILE"/> + <field name="SQUARE_YARD"/> + <field name="STONE"/> + <field name="TABLESPOON"/> + <field name="TEASPOON"/> + <field name="TERABIT"/> + <field name="TERABYTE"/> + <field name="TON"/> + <field name="VOLT"/> + <field name="WATT"/> + <field name="WEEK"/> + <field name="YARD"/> + <field name="YEAR"/> + </class> + <class name="android/icu/util/Output" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/Object;)V"/> + <field name="value"/> + </class> + <class name="android/icu/util/RangeValueIterator" since="24"> + <extends name="java/lang/Object"/> + <method name="next(Landroid/icu/util/RangeValueIterator$Element;)Z"/> + <method name="reset()V"/> + </class> + <class name="android/icu/util/RangeValueIterator$Element" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="limit"/> + <field name="start"/> + <field name="value"/> + </class> + <class name="android/icu/util/TaiwanCalendar" since="24"> + <extends name="android/icu/util/GregorianCalendar"/> + <method name="<init>()V"/> + <method name="<init>(III)V"/> + <method name="<init>(IIIIII)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Landroid/icu/util/TimeZone;Ljava/util/Locale;)V"/> + <method name="<init>(Landroid/icu/util/ULocale;)V"/> + <method name="<init>(Ljava/util/Date;)V"/> + <method name="<init>(Ljava/util/Locale;)V"/> + <field name="BEFORE_MINGUO"/> + <field name="MINGUO"/> + </class> + <class name="android/icu/util/TimeUnit" since="24"> + <extends name="android/icu/util/MeasureUnit"/> + <method name="<init>()V"/> + <method name="values()[Landroid/icu/util/TimeUnit;"/> + </class> + <class name="android/icu/util/TimeZone" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/icu/util/Freezable"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="cloneAsThawed()Landroid/icu/util/TimeZone;"/> + <method name="countEquivalentIDs(Ljava/lang/String;)I"/> + <method name="freeze()Landroid/icu/util/TimeZone;"/> + <method name="getAvailableIDs()[Ljava/lang/String;"/> + <method name="getAvailableIDs(I)[Ljava/lang/String;"/> + <method name="getAvailableIDs(Landroid/icu/util/TimeZone$SystemTimeZoneType;Ljava/lang/String;Ljava/lang/Integer;)Ljava/util/Set;"/> + <method name="getAvailableIDs(Ljava/lang/String;)[Ljava/lang/String;"/> + <method name="getCanonicalID(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getCanonicalID(Ljava/lang/String;[Z)Ljava/lang/String;"/> + <method name="getDSTSavings()I"/> + <method name="getDefault()Landroid/icu/util/TimeZone;"/> + <method name="getDisplayName()Ljava/lang/String;"/> + <method name="getDisplayName(Landroid/icu/util/ULocale;)Ljava/lang/String;"/> + <method name="getDisplayName(Ljava/util/Locale;)Ljava/lang/String;"/> + <method name="getDisplayName(ZI)Ljava/lang/String;"/> + <method name="getDisplayName(ZILandroid/icu/util/ULocale;)Ljava/lang/String;"/> + <method name="getDisplayName(ZILjava/util/Locale;)Ljava/lang/String;"/> + <method name="getEquivalentID(Ljava/lang/String;I)Ljava/lang/String;"/> + <method name="getFrozenTimeZone(Ljava/lang/String;)Landroid/icu/util/TimeZone;"/> + <method name="getID()Ljava/lang/String;"/> + <method name="getIDForWindowsID(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getOffset(IIIIII)I"/> + <method name="getOffset(J)I"/> + <method name="getOffset(JZ[I)V"/> + <method name="getRawOffset()I"/> + <method name="getRegion(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getTZDataVersion()Ljava/lang/String;"/> + <method name="getTimeZone(Ljava/lang/String;)Landroid/icu/util/TimeZone;"/> + <method name="getTimeZone(Ljava/lang/String;I)Landroid/icu/util/TimeZone;"/> + <method name="getWindowsID(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="hasSameRules(Landroid/icu/util/TimeZone;)Z"/> + <method name="inDaylightTime(Ljava/util/Date;)Z"/> + <method name="observesDaylightTime()Z"/> + <method name="setID(Ljava/lang/String;)V"/> + <method name="setRawOffset(I)V"/> + <method name="useDaylightTime()Z"/> + <field name="GENERIC_LOCATION"/> + <field name="GMT_ZONE"/> + <field name="LONG"/> + <field name="LONG_GENERIC"/> + <field name="LONG_GMT"/> + <field name="SHORT"/> + <field name="SHORT_COMMONLY_USED"/> + <field name="SHORT_GENERIC"/> + <field name="SHORT_GMT"/> + <field name="TIMEZONE_ICU" since="26"/> + <field name="TIMEZONE_JDK" since="26"/> + <field name="UNKNOWN_ZONE"/> + <field name="UNKNOWN_ZONE_ID"/> + </class> + <class name="android/icu/util/TimeZone$SystemTimeZoneType" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/util/TimeZone$SystemTimeZoneType;"/> + <method name="values()[Landroid/icu/util/TimeZone$SystemTimeZoneType;"/> + </class> + <class name="android/icu/util/ULocale" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Comparable"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="acceptLanguage(Ljava/lang/String;[Landroid/icu/util/ULocale;[Z)Landroid/icu/util/ULocale;"/> + <method name="acceptLanguage(Ljava/lang/String;[Z)Landroid/icu/util/ULocale;"/> + <method name="acceptLanguage([Landroid/icu/util/ULocale;[Landroid/icu/util/ULocale;[Z)Landroid/icu/util/ULocale;"/> + <method name="acceptLanguage([Landroid/icu/util/ULocale;[Z)Landroid/icu/util/ULocale;"/> + <method name="addLikelySubtags(Landroid/icu/util/ULocale;)Landroid/icu/util/ULocale;"/> + <method name="canonicalize(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="compareTo(Landroid/icu/util/ULocale;)I"/> + <method name="createCanonical(Ljava/lang/String;)Landroid/icu/util/ULocale;"/> + <method name="forLanguageTag(Ljava/lang/String;)Landroid/icu/util/ULocale;"/> + <method name="forLocale(Ljava/util/Locale;)Landroid/icu/util/ULocale;"/> + <method name="getAvailableLocales()[Landroid/icu/util/ULocale;"/> + <method name="getBaseName()Ljava/lang/String;"/> + <method name="getBaseName(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getCharacterOrientation()Ljava/lang/String;"/> + <method name="getCountry()Ljava/lang/String;"/> + <method name="getCountry(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getDefault()Landroid/icu/util/ULocale;"/> + <method name="getDefault(Landroid/icu/util/ULocale$Category;)Landroid/icu/util/ULocale;"/> + <method name="getDisplayCountry()Ljava/lang/String;"/> + <method name="getDisplayCountry(Landroid/icu/util/ULocale;)Ljava/lang/String;"/> + <method name="getDisplayCountry(Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/lang/String;"/> + <method name="getDisplayCountry(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getDisplayKeyword(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getDisplayKeyword(Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/lang/String;"/> + <method name="getDisplayKeyword(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getDisplayKeywordValue(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getDisplayKeywordValue(Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/lang/String;"/> + <method name="getDisplayKeywordValue(Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/lang/String;"/> + <method name="getDisplayKeywordValue(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getDisplayLanguage()Ljava/lang/String;"/> + <method name="getDisplayLanguage(Landroid/icu/util/ULocale;)Ljava/lang/String;"/> + <method name="getDisplayLanguage(Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/lang/String;"/> + <method name="getDisplayLanguage(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getDisplayLanguageWithDialect()Ljava/lang/String;"/> + <method name="getDisplayLanguageWithDialect(Landroid/icu/util/ULocale;)Ljava/lang/String;"/> + <method name="getDisplayLanguageWithDialect(Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/lang/String;"/> + <method name="getDisplayLanguageWithDialect(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getDisplayName()Ljava/lang/String;"/> + <method name="getDisplayName(Landroid/icu/util/ULocale;)Ljava/lang/String;"/> + <method name="getDisplayName(Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/lang/String;"/> + <method name="getDisplayName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getDisplayNameWithDialect()Ljava/lang/String;"/> + <method name="getDisplayNameWithDialect(Landroid/icu/util/ULocale;)Ljava/lang/String;"/> + <method name="getDisplayNameWithDialect(Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/lang/String;"/> + <method name="getDisplayNameWithDialect(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getDisplayScript()Ljava/lang/String;"/> + <method name="getDisplayScript(Landroid/icu/util/ULocale;)Ljava/lang/String;"/> + <method name="getDisplayScript(Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/lang/String;"/> + <method name="getDisplayScript(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getDisplayVariant()Ljava/lang/String;"/> + <method name="getDisplayVariant(Landroid/icu/util/ULocale;)Ljava/lang/String;"/> + <method name="getDisplayVariant(Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/lang/String;"/> + <method name="getDisplayVariant(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getExtension(C)Ljava/lang/String;"/> + <method name="getExtensionKeys()Ljava/util/Set;"/> + <method name="getFallback()Landroid/icu/util/ULocale;"/> + <method name="getFallback(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getISO3Country()Ljava/lang/String;"/> + <method name="getISO3Country(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getISO3Language()Ljava/lang/String;"/> + <method name="getISO3Language(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getISOCountries()[Ljava/lang/String;"/> + <method name="getISOLanguages()[Ljava/lang/String;"/> + <method name="getKeywordValue(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getKeywordValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getKeywords()Ljava/util/Iterator;"/> + <method name="getKeywords(Ljava/lang/String;)Ljava/util/Iterator;"/> + <method name="getLanguage()Ljava/lang/String;"/> + <method name="getLanguage(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getLineOrientation()Ljava/lang/String;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getName(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getScript()Ljava/lang/String;"/> + <method name="getScript(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getUnicodeLocaleAttributes()Ljava/util/Set;"/> + <method name="getUnicodeLocaleKeys()Ljava/util/Set;"/> + <method name="getUnicodeLocaleType(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getVariant()Ljava/lang/String;"/> + <method name="getVariant(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="isRightToLeft()Z"/> + <method name="minimizeSubtags(Landroid/icu/util/ULocale;)Landroid/icu/util/ULocale;"/> + <method name="setKeywordValue(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/ULocale;"/> + <method name="setKeywordValue(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="toLanguageTag()Ljava/lang/String;"/> + <method name="toLegacyKey(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="toLegacyType(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="toLocale()Ljava/util/Locale;"/> + <method name="toUnicodeLocaleKey(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="toUnicodeLocaleType(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <field name="CANADA"/> + <field name="CANADA_FRENCH"/> + <field name="CHINA"/> + <field name="CHINESE"/> + <field name="ENGLISH"/> + <field name="FRANCE"/> + <field name="FRENCH"/> + <field name="GERMAN"/> + <field name="GERMANY"/> + <field name="ITALIAN"/> + <field name="ITALY"/> + <field name="JAPAN"/> + <field name="JAPANESE"/> + <field name="KOREA"/> + <field name="KOREAN"/> + <field name="PRC"/> + <field name="PRIVATE_USE_EXTENSION"/> + <field name="ROOT"/> + <field name="SIMPLIFIED_CHINESE"/> + <field name="TAIWAN"/> + <field name="TRADITIONAL_CHINESE"/> + <field name="UK"/> + <field name="UNICODE_LOCALE_EXTENSION"/> + <field name="US"/> + </class> + <class name="android/icu/util/ULocale$Builder" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addUnicodeLocaleAttribute(Ljava/lang/String;)Landroid/icu/util/ULocale$Builder;"/> + <method name="build()Landroid/icu/util/ULocale;"/> + <method name="clear()Landroid/icu/util/ULocale$Builder;"/> + <method name="clearExtensions()Landroid/icu/util/ULocale$Builder;"/> + <method name="removeUnicodeLocaleAttribute(Ljava/lang/String;)Landroid/icu/util/ULocale$Builder;"/> + <method name="setExtension(CLjava/lang/String;)Landroid/icu/util/ULocale$Builder;"/> + <method name="setLanguage(Ljava/lang/String;)Landroid/icu/util/ULocale$Builder;"/> + <method name="setLanguageTag(Ljava/lang/String;)Landroid/icu/util/ULocale$Builder;"/> + <method name="setLocale(Landroid/icu/util/ULocale;)Landroid/icu/util/ULocale$Builder;"/> + <method name="setRegion(Ljava/lang/String;)Landroid/icu/util/ULocale$Builder;"/> + <method name="setScript(Ljava/lang/String;)Landroid/icu/util/ULocale$Builder;"/> + <method name="setUnicodeLocaleKeyword(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/ULocale$Builder;"/> + <method name="setVariant(Ljava/lang/String;)Landroid/icu/util/ULocale$Builder;"/> + </class> + <class name="android/icu/util/ULocale$Category" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/icu/util/ULocale$Category;"/> + <method name="values()[Landroid/icu/util/ULocale$Category;"/> + <field name="DISPLAY"/> + <field name="FORMAT"/> + </class> + <class name="android/icu/util/UniversalTimeScale" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="bigDecimalFrom(DI)Landroid/icu/math/BigDecimal;"/> + <method name="bigDecimalFrom(JI)Landroid/icu/math/BigDecimal;"/> + <method name="bigDecimalFrom(Landroid/icu/math/BigDecimal;I)Landroid/icu/math/BigDecimal;"/> + <method name="from(JI)J"/> + <method name="getTimeScaleValue(II)J"/> + <method name="toBigDecimal(JI)Landroid/icu/math/BigDecimal;"/> + <method name="toBigDecimal(Landroid/icu/math/BigDecimal;I)Landroid/icu/math/BigDecimal;"/> + <method name="toLong(JI)J"/> + <field name="DB2_TIME"/> + <field name="DOTNET_DATE_TIME"/> + <field name="EPOCH_OFFSET_PLUS_1_VALUE"/> + <field name="EPOCH_OFFSET_VALUE"/> + <field name="EXCEL_TIME"/> + <field name="FROM_MAX_VALUE"/> + <field name="FROM_MIN_VALUE"/> + <field name="ICU4C_TIME"/> + <field name="JAVA_TIME"/> + <field name="MAC_OLD_TIME"/> + <field name="MAC_TIME"/> + <field name="MAX_SCALE" deprecated="27"/> + <field name="TO_MAX_VALUE"/> + <field name="TO_MIN_VALUE"/> + <field name="UNITS_VALUE"/> + <field name="UNIX_MICROSECONDS_TIME"/> + <field name="UNIX_TIME"/> + <field name="WINDOWS_FILE_TIME"/> + </class> + <class name="android/icu/util/ValueIterator" since="24"> + <extends name="java/lang/Object"/> + <method name="next(Landroid/icu/util/ValueIterator$Element;)Z"/> + <method name="reset()V"/> + <method name="setRange(II)V"/> + </class> + <class name="android/icu/util/ValueIterator$Element" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="integer"/> + <field name="value"/> + </class> + <class name="android/icu/util/VersionInfo" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Comparable"/> + <method name="<init>()V"/> + <method name="compareTo(Landroid/icu/util/VersionInfo;)I"/> + <method name="getInstance(I)Landroid/icu/util/VersionInfo;"/> + <method name="getInstance(II)Landroid/icu/util/VersionInfo;"/> + <method name="getInstance(III)Landroid/icu/util/VersionInfo;"/> + <method name="getInstance(IIII)Landroid/icu/util/VersionInfo;"/> + <method name="getInstance(Ljava/lang/String;)Landroid/icu/util/VersionInfo;"/> + <method name="getMajor()I"/> + <method name="getMicro()I"/> + <method name="getMilli()I"/> + <method name="getMinor()I"/> + <field name="ICU_VERSION"/> + <field name="UCOL_BUILDER_VERSION"/> + <field name="UCOL_RUNTIME_VERSION"/> + <field name="UNICODE_1_0"/> + <field name="UNICODE_1_0_1"/> + <field name="UNICODE_1_1_0"/> + <field name="UNICODE_1_1_5"/> + <field name="UNICODE_2_0"/> + <field name="UNICODE_2_1_2"/> + <field name="UNICODE_2_1_5"/> + <field name="UNICODE_2_1_8"/> + <field name="UNICODE_2_1_9"/> + <field name="UNICODE_3_0"/> + <field name="UNICODE_3_0_1"/> + <field name="UNICODE_3_1_0"/> + <field name="UNICODE_3_1_1"/> + <field name="UNICODE_3_2"/> + <field name="UNICODE_4_0"/> + <field name="UNICODE_4_0_1"/> + <field name="UNICODE_4_1"/> + <field name="UNICODE_5_0"/> + <field name="UNICODE_5_1"/> + <field name="UNICODE_5_2"/> + <field name="UNICODE_6_0"/> + <field name="UNICODE_6_1"/> + <field name="UNICODE_6_2"/> + <field name="UNICODE_6_3"/> + <field name="UNICODE_7_0"/> + <field name="UNICODE_8_0"/> + <field name="UNICODE_9_0" since="26"/> + </class> + <class name="android/inputmethodservice/AbstractInputMethodService" since="3"> + <extends name="android/app/Service"/> + <implements name="android/view/KeyEvent$Callback"/> + <method name="<init>()V"/> + <method name="getKeyDispatcherState()Landroid/view/KeyEvent$DispatcherState;" since="5"/> + <method name="onCreateInputMethodInterface()Landroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodImpl;"/> + <method name="onCreateInputMethodSessionInterface()Landroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl;"/> + <method name="onGenericMotionEvent(Landroid/view/MotionEvent;)Z" since="17"/> + <method name="onTrackballEvent(Landroid/view/MotionEvent;)Z"/> + </class> + <class name="android/inputmethodservice/AbstractInputMethodService$AbstractInputMethodImpl" since="3"> + <extends name="java/lang/Object"/> + <implements name="android/view/inputmethod/InputMethod"/> + <method name="<init>(Landroid/inputmethodservice/AbstractInputMethodService;)V"/> + </class> + <class name="android/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl" since="3"> + <extends name="java/lang/Object"/> + <implements name="android/view/inputmethod/InputMethodSession"/> + <method name="<init>(Landroid/inputmethodservice/AbstractInputMethodService;)V"/> + <method name="isEnabled()Z"/> + <method name="isRevoked()Z"/> + <method name="revokeSelf()V"/> + <method name="setEnabled(Z)V"/> + </class> + <class name="android/inputmethodservice/ExtractEditText" since="3"> + <extends name="android/widget/EditText"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="finishInternalChanges()V"/> + <method name="hasVerticalScrollBar()Z"/> + <method name="startInternalChanges()V"/> + </class> + <class name="android/inputmethodservice/InputMethodService" since="3"> + <extends name="android/inputmethodservice/AbstractInputMethodService"/> + <method name="<init>()V"/> + <method name="enableHardwareAcceleration()Z" since="17" deprecated="21"/> + <method name="getBackDisposition()I" since="11"/> + <method name="getCandidatesHiddenVisibility()I"/> + <method name="getCurrentInputBinding()Landroid/view/inputmethod/InputBinding;"/> + <method name="getCurrentInputConnection()Landroid/view/inputmethod/InputConnection;"/> + <method name="getCurrentInputEditorInfo()Landroid/view/inputmethod/EditorInfo;"/> + <method name="getCurrentInputStarted()Z"/> + <method name="getInputMethodWindowRecommendedHeight()I" since="21"/> + <method name="getLayoutInflater()Landroid/view/LayoutInflater;"/> + <method name="getMaxWidth()I"/> + <method name="getTextForImeAction(I)Ljava/lang/CharSequence;"/> + <method name="getWindow()Landroid/app/Dialog;"/> + <method name="hideStatusIcon()V"/> + <method name="hideWindow()V"/> + <method name="isExtractViewShown()Z"/> + <method name="isFullscreenMode()Z"/> + <method name="isInputViewShown()Z"/> + <method name="isShowInputRequested()Z"/> + <method name="onAppPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)V"/> + <method name="onBindInput()V"/> + <method name="onComputeInsets(Landroid/inputmethodservice/InputMethodService$Insets;)V"/> + <method name="onConfigureWindow(Landroid/view/Window;ZZ)V"/> + <method name="onCreateCandidatesView()Landroid/view/View;"/> + <method name="onCreateExtractTextView()Landroid/view/View;"/> + <method name="onCreateInputView()Landroid/view/View;"/> + <method name="onCurrentInputMethodSubtypeChanged(Landroid/view/inputmethod/InputMethodSubtype;)V" since="11"/> + <method name="onDisplayCompletions([Landroid/view/inputmethod/CompletionInfo;)V"/> + <method name="onEvaluateFullscreenMode()Z"/> + <method name="onEvaluateInputViewShown()Z"/> + <method name="onExtractTextContextMenuItem(I)Z"/> + <method name="onExtractedCursorMovement(II)V"/> + <method name="onExtractedSelectionChanged(II)V"/> + <method name="onExtractedTextClicked()V"/> + <method name="onExtractingInputChanged(Landroid/view/inputmethod/EditorInfo;)V"/> + <method name="onFinishCandidatesView(Z)V"/> + <method name="onFinishInput()V"/> + <method name="onFinishInputView(Z)V"/> + <method name="onInitializeInterface()V"/> + <method name="onShowInputRequested(IZ)Z"/> + <method name="onStartCandidatesView(Landroid/view/inputmethod/EditorInfo;Z)V"/> + <method name="onStartInput(Landroid/view/inputmethod/EditorInfo;Z)V"/> + <method name="onStartInputView(Landroid/view/inputmethod/EditorInfo;Z)V"/> + <method name="onUnbindInput()V"/> + <method name="onUpdateCursor(Landroid/graphics/Rect;)V" deprecated="21"/> + <method name="onUpdateCursorAnchorInfo(Landroid/view/inputmethod/CursorAnchorInfo;)V" since="21"/> + <method name="onUpdateExtractedText(ILandroid/view/inputmethod/ExtractedText;)V"/> + <method name="onUpdateExtractingViews(Landroid/view/inputmethod/EditorInfo;)V"/> + <method name="onUpdateExtractingVisibility(Landroid/view/inputmethod/EditorInfo;)V"/> + <method name="onUpdateSelection(IIIIII)V"/> + <method name="onViewClicked(Z)V" since="14"/> + <method name="onWindowHidden()V"/> + <method name="onWindowShown()V"/> + <method name="requestHideSelf(I)V"/> + <method name="sendDefaultEditorAction(Z)Z"/> + <method name="sendDownUpKeyEvents(I)V"/> + <method name="sendKeyChar(C)V"/> + <method name="setBackDisposition(I)V" since="11"/> + <method name="setCandidatesView(Landroid/view/View;)V"/> + <method name="setCandidatesViewShown(Z)V"/> + <method name="setExtractView(Landroid/view/View;)V"/> + <method name="setExtractViewShown(Z)V"/> + <method name="setInputView(Landroid/view/View;)V"/> + <method name="showStatusIcon(I)V"/> + <method name="showWindow(Z)V"/> + <method name="switchInputMethod(Ljava/lang/String;)V"/> + <method name="updateFullscreenMode()V"/> + <method name="updateInputViewShown()V"/> + <field name="BACK_DISPOSITION_DEFAULT" since="11"/> + <field name="BACK_DISPOSITION_WILL_DISMISS" since="11"/> + <field name="BACK_DISPOSITION_WILL_NOT_DISMISS" since="11"/> + </class> + <class name="android/inputmethodservice/InputMethodService$InputMethodImpl" since="3"> + <extends name="android/inputmethodservice/AbstractInputMethodService$AbstractInputMethodImpl"/> + <method name="<init>(Landroid/inputmethodservice/InputMethodService;)V"/> + </class> + <class name="android/inputmethodservice/InputMethodService$InputMethodSessionImpl" since="3"> + <extends name="android/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl"/> + <method name="<init>(Landroid/inputmethodservice/InputMethodService;)V"/> + </class> + <class name="android/inputmethodservice/InputMethodService$Insets" since="3"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="TOUCHABLE_INSETS_CONTENT"/> + <field name="TOUCHABLE_INSETS_FRAME"/> + <field name="TOUCHABLE_INSETS_REGION" since="11"/> + <field name="TOUCHABLE_INSETS_VISIBLE"/> + <field name="contentTopInsets"/> + <field name="touchableInsets"/> + <field name="touchableRegion" since="11"/> + <field name="visibleTopInsets"/> + </class> + <class name="android/inputmethodservice/Keyboard" since="3"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;I)V"/> + <method name="<init>(Landroid/content/Context;II)V"/> + <method name="<init>(Landroid/content/Context;IIII)V" since="11"/> + <method name="<init>(Landroid/content/Context;ILjava/lang/CharSequence;II)V"/> + <method name="createKeyFromXml(Landroid/content/res/Resources;Landroid/inputmethodservice/Keyboard$Row;IILandroid/content/res/XmlResourceParser;)Landroid/inputmethodservice/Keyboard$Key;"/> + <method name="createRowFromXml(Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;)Landroid/inputmethodservice/Keyboard$Row;"/> + <method name="getHeight()I"/> + <method name="getHorizontalGap()I"/> + <method name="getKeyHeight()I"/> + <method name="getKeyWidth()I"/> + <method name="getKeys()Ljava/util/List;"/> + <method name="getMinWidth()I"/> + <method name="getModifierKeys()Ljava/util/List;"/> + <method name="getNearestKeys(II)[I"/> + <method name="getShiftKeyIndex()I"/> + <method name="getVerticalGap()I"/> + <method name="isShifted()Z"/> + <method name="setHorizontalGap(I)V"/> + <method name="setKeyHeight(I)V"/> + <method name="setKeyWidth(I)V"/> + <method name="setShifted(Z)Z"/> + <method name="setVerticalGap(I)V"/> + <field name="EDGE_BOTTOM"/> + <field name="EDGE_LEFT"/> + <field name="EDGE_RIGHT"/> + <field name="EDGE_TOP"/> + <field name="KEYCODE_ALT"/> + <field name="KEYCODE_CANCEL"/> + <field name="KEYCODE_DELETE"/> + <field name="KEYCODE_DONE"/> + <field name="KEYCODE_MODE_CHANGE"/> + <field name="KEYCODE_SHIFT"/> + </class> + <class name="android/inputmethodservice/Keyboard$Key" since="3"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/res/Resources;Landroid/inputmethodservice/Keyboard$Row;IILandroid/content/res/XmlResourceParser;)V"/> + <method name="<init>(Landroid/inputmethodservice/Keyboard$Row;)V"/> + <method name="getCurrentDrawableState()[I"/> + <method name="isInside(II)Z"/> + <method name="onPressed()V"/> + <method name="onReleased(Z)V"/> + <method name="squaredDistanceFrom(II)I"/> + <field name="codes"/> + <field name="edgeFlags"/> + <field name="gap"/> + <field name="height"/> + <field name="icon"/> + <field name="iconPreview"/> + <field name="label"/> + <field name="modifier"/> + <field name="on"/> + <field name="popupCharacters"/> + <field name="popupResId"/> + <field name="pressed"/> + <field name="repeatable"/> + <field name="sticky"/> + <field name="text"/> + <field name="width"/> + <field name="x"/> + <field name="y"/> + </class> + <class name="android/inputmethodservice/Keyboard$Row" since="3"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/res/Resources;Landroid/inputmethodservice/Keyboard;Landroid/content/res/XmlResourceParser;)V"/> + <method name="<init>(Landroid/inputmethodservice/Keyboard;)V"/> + <field name="defaultHeight"/> + <field name="defaultHorizontalGap"/> + <field name="defaultWidth"/> + <field name="mode"/> + <field name="rowEdgeFlags"/> + <field name="verticalGap"/> + </class> + <class name="android/inputmethodservice/KeyboardView" since="3"> + <extends name="android/view/View"/> + <implements name="android/view/View$OnClickListener"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="closing()V"/> + <method name="getKeyboard()Landroid/inputmethodservice/Keyboard;"/> + <method name="getOnKeyboardActionListener()Landroid/inputmethodservice/KeyboardView$OnKeyboardActionListener;"/> + <method name="handleBack()Z"/> + <method name="invalidateAllKeys()V" since="4"/> + <method name="invalidateKey(I)V" since="4"/> + <method name="isPreviewEnabled()Z"/> + <method name="isProximityCorrectionEnabled()Z"/> + <method name="isShifted()Z"/> + <method name="onLongPress(Landroid/inputmethodservice/Keyboard$Key;)Z"/> + <method name="setKeyboard(Landroid/inputmethodservice/Keyboard;)V"/> + <method name="setOnKeyboardActionListener(Landroid/inputmethodservice/KeyboardView$OnKeyboardActionListener;)V"/> + <method name="setPopupOffset(II)V"/> + <method name="setPopupParent(Landroid/view/View;)V"/> + <method name="setPreviewEnabled(Z)V"/> + <method name="setProximityCorrectionEnabled(Z)V"/> + <method name="setShifted(Z)Z"/> + <method name="setVerticalCorrection(I)V"/> + <method name="swipeDown()V"/> + <method name="swipeLeft()V"/> + <method name="swipeRight()V"/> + <method name="swipeUp()V"/> + </class> + <class name="android/inputmethodservice/KeyboardView$OnKeyboardActionListener" since="3"> + <extends name="java/lang/Object"/> + <method name="onKey(I[I)V"/> + <method name="onPress(I)V"/> + <method name="onRelease(I)V"/> + <method name="onText(Ljava/lang/CharSequence;)V"/> + <method name="swipeDown()V"/> + <method name="swipeLeft()V"/> + <method name="swipeRight()V"/> + <method name="swipeUp()V"/> + </class> + <class name="android/location/Address" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Ljava/util/Locale;)V"/> + <method name="clearLatitude()V"/> + <method name="clearLongitude()V"/> + <method name="getAddressLine(I)Ljava/lang/String;"/> + <method name="getAdminArea()Ljava/lang/String;"/> + <method name="getCountryCode()Ljava/lang/String;"/> + <method name="getCountryName()Ljava/lang/String;"/> + <method name="getExtras()Landroid/os/Bundle;"/> + <method name="getFeatureName()Ljava/lang/String;"/> + <method name="getLatitude()D"/> + <method name="getLocale()Ljava/util/Locale;"/> + <method name="getLocality()Ljava/lang/String;"/> + <method name="getLongitude()D"/> + <method name="getMaxAddressLineIndex()I"/> + <method name="getPhone()Ljava/lang/String;"/> + <method name="getPostalCode()Ljava/lang/String;"/> + <method name="getPremises()Ljava/lang/String;" since="4"/> + <method name="getSubAdminArea()Ljava/lang/String;"/> + <method name="getSubLocality()Ljava/lang/String;" since="4"/> + <method name="getSubThoroughfare()Ljava/lang/String;" since="4"/> + <method name="getThoroughfare()Ljava/lang/String;"/> + <method name="getUrl()Ljava/lang/String;"/> + <method name="hasLatitude()Z"/> + <method name="hasLongitude()Z"/> + <method name="setAddressLine(ILjava/lang/String;)V"/> + <method name="setAdminArea(Ljava/lang/String;)V"/> + <method name="setCountryCode(Ljava/lang/String;)V"/> + <method name="setCountryName(Ljava/lang/String;)V"/> + <method name="setExtras(Landroid/os/Bundle;)V"/> + <method name="setFeatureName(Ljava/lang/String;)V"/> + <method name="setLatitude(D)V"/> + <method name="setLocality(Ljava/lang/String;)V"/> + <method name="setLongitude(D)V"/> + <method name="setPhone(Ljava/lang/String;)V"/> + <method name="setPostalCode(Ljava/lang/String;)V"/> + <method name="setPremises(Ljava/lang/String;)V" since="4"/> + <method name="setSubAdminArea(Ljava/lang/String;)V"/> + <method name="setSubLocality(Ljava/lang/String;)V" since="4"/> + <method name="setSubThoroughfare(Ljava/lang/String;)V" since="4"/> + <method name="setThoroughfare(Ljava/lang/String;)V"/> + <method name="setUrl(Ljava/lang/String;)V"/> + <field name="CREATOR"/> + </class> + <class name="android/location/Criteria" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/location/Criteria;)V"/> + <method name="getAccuracy()I"/> + <method name="getBearingAccuracy()I" since="9"/> + <method name="getHorizontalAccuracy()I" since="9"/> + <method name="getPowerRequirement()I"/> + <method name="getSpeedAccuracy()I" since="9"/> + <method name="getVerticalAccuracy()I" since="9"/> + <method name="isAltitudeRequired()Z"/> + <method name="isBearingRequired()Z"/> + <method name="isCostAllowed()Z"/> + <method name="isSpeedRequired()Z"/> + <method name="setAccuracy(I)V"/> + <method name="setAltitudeRequired(Z)V"/> + <method name="setBearingAccuracy(I)V" since="9"/> + <method name="setBearingRequired(Z)V"/> + <method name="setCostAllowed(Z)V"/> + <method name="setHorizontalAccuracy(I)V" since="9"/> + <method name="setPowerRequirement(I)V"/> + <method name="setSpeedAccuracy(I)V" since="9"/> + <method name="setSpeedRequired(Z)V"/> + <method name="setVerticalAccuracy(I)V" since="9"/> + <field name="ACCURACY_COARSE"/> + <field name="ACCURACY_FINE"/> + <field name="ACCURACY_HIGH" since="9"/> + <field name="ACCURACY_LOW" since="9"/> + <field name="ACCURACY_MEDIUM" since="9"/> + <field name="CREATOR"/> + <field name="NO_REQUIREMENT"/> + <field name="POWER_HIGH"/> + <field name="POWER_LOW"/> + <field name="POWER_MEDIUM"/> + </class> + <class name="android/location/Geocoder" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Ljava/util/Locale;)V"/> + <method name="getFromLocation(DDI)Ljava/util/List;"/> + <method name="getFromLocationName(Ljava/lang/String;I)Ljava/util/List;"/> + <method name="getFromLocationName(Ljava/lang/String;IDDDD)Ljava/util/List;"/> + <method name="isPresent()Z" since="9"/> + </class> + <class name="android/location/GnssClock" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getBiasNanos()D"/> + <method name="getBiasUncertaintyNanos()D"/> + <method name="getDriftNanosPerSecond()D"/> + <method name="getDriftUncertaintyNanosPerSecond()D"/> + <method name="getFullBiasNanos()J"/> + <method name="getHardwareClockDiscontinuityCount()I"/> + <method name="getLeapSecond()I"/> + <method name="getTimeNanos()J"/> + <method name="getTimeUncertaintyNanos()D"/> + <method name="hasBiasNanos()Z"/> + <method name="hasBiasUncertaintyNanos()Z"/> + <method name="hasDriftNanosPerSecond()Z"/> + <method name="hasDriftUncertaintyNanosPerSecond()Z"/> + <method name="hasFullBiasNanos()Z"/> + <method name="hasLeapSecond()Z"/> + <method name="hasTimeUncertaintyNanos()Z"/> + <field name="CREATOR"/> + </class> + <class name="android/location/GnssMeasurement" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getAccumulatedDeltaRangeMeters()D"/> + <method name="getAccumulatedDeltaRangeState()I"/> + <method name="getAccumulatedDeltaRangeUncertaintyMeters()D"/> + <method name="getAutomaticGainControlLevelDb()D" since="26"/> + <method name="getCarrierCycles()J"/> + <method name="getCarrierFrequencyHz()F"/> + <method name="getCarrierPhase()D"/> + <method name="getCarrierPhaseUncertainty()D"/> + <method name="getCn0DbHz()D"/> + <method name="getConstellationType()I"/> + <method name="getMultipathIndicator()I"/> + <method name="getPseudorangeRateMetersPerSecond()D"/> + <method name="getPseudorangeRateUncertaintyMetersPerSecond()D"/> + <method name="getReceivedSvTimeNanos()J"/> + <method name="getReceivedSvTimeUncertaintyNanos()J"/> + <method name="getSnrInDb()D"/> + <method name="getState()I"/> + <method name="getSvid()I"/> + <method name="getTimeOffsetNanos()D"/> + <method name="hasAutomaticGainControlLevelDb()Z" since="26"/> + <method name="hasCarrierCycles()Z"/> + <method name="hasCarrierFrequencyHz()Z"/> + <method name="hasCarrierPhase()Z"/> + <method name="hasCarrierPhaseUncertainty()Z"/> + <method name="hasSnrInDb()Z"/> + <field name="ADR_STATE_CYCLE_SLIP"/> + <field name="ADR_STATE_RESET"/> + <field name="ADR_STATE_UNKNOWN"/> + <field name="ADR_STATE_VALID"/> + <field name="CREATOR"/> + <field name="MULTIPATH_INDICATOR_DETECTED"/> + <field name="MULTIPATH_INDICATOR_NOT_DETECTED"/> + <field name="MULTIPATH_INDICATOR_UNKNOWN"/> + <field name="STATE_BDS_D2_BIT_SYNC"/> + <field name="STATE_BDS_D2_SUBFRAME_SYNC"/> + <field name="STATE_BIT_SYNC"/> + <field name="STATE_CODE_LOCK"/> + <field name="STATE_GAL_E1BC_CODE_LOCK"/> + <field name="STATE_GAL_E1B_PAGE_SYNC"/> + <field name="STATE_GAL_E1C_2ND_CODE_LOCK"/> + <field name="STATE_GLO_STRING_SYNC"/> + <field name="STATE_GLO_TOD_DECODED"/> + <field name="STATE_GLO_TOD_KNOWN" since="26"/> + <field name="STATE_MSEC_AMBIGUOUS"/> + <field name="STATE_SBAS_SYNC"/> + <field name="STATE_SUBFRAME_SYNC"/> + <field name="STATE_SYMBOL_SYNC"/> + <field name="STATE_TOW_DECODED"/> + <field name="STATE_TOW_KNOWN" since="26"/> + <field name="STATE_UNKNOWN"/> + </class> + <class name="android/location/GnssMeasurementsEvent" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getClock()Landroid/location/GnssClock;"/> + <method name="getMeasurements()Ljava/util/Collection;"/> + <field name="CREATOR"/> + </class> + <class name="android/location/GnssMeasurementsEvent$Callback" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onGnssMeasurementsReceived(Landroid/location/GnssMeasurementsEvent;)V"/> + <method name="onStatusChanged(I)V"/> + <field name="STATUS_LOCATION_DISABLED"/> + <field name="STATUS_NOT_SUPPORTED"/> + <field name="STATUS_READY"/> + </class> + <class name="android/location/GnssNavigationMessage" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getData()[B"/> + <method name="getMessageId()I"/> + <method name="getStatus()I"/> + <method name="getSubmessageId()I"/> + <method name="getSvid()I"/> + <method name="getType()I"/> + <field name="CREATOR"/> + <field name="STATUS_PARITY_PASSED"/> + <field name="STATUS_PARITY_REBUILT"/> + <field name="STATUS_UNKNOWN"/> + <field name="TYPE_BDS_D1"/> + <field name="TYPE_BDS_D2"/> + <field name="TYPE_GAL_F"/> + <field name="TYPE_GAL_I"/> + <field name="TYPE_GLO_L1CA"/> + <field name="TYPE_GPS_CNAV2"/> + <field name="TYPE_GPS_L1CA"/> + <field name="TYPE_GPS_L2CNAV"/> + <field name="TYPE_GPS_L5CNAV"/> + <field name="TYPE_UNKNOWN"/> + </class> + <class name="android/location/GnssNavigationMessage$Callback" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onGnssNavigationMessageReceived(Landroid/location/GnssNavigationMessage;)V"/> + <method name="onStatusChanged(I)V"/> + <field name="STATUS_LOCATION_DISABLED"/> + <field name="STATUS_NOT_SUPPORTED"/> + <field name="STATUS_READY"/> + </class> + <class name="android/location/GnssStatus" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAzimuthDegrees(I)F"/> + <method name="getCarrierFrequencyHz(I)F" since="26"/> + <method name="getCn0DbHz(I)F"/> + <method name="getConstellationType(I)I"/> + <method name="getElevationDegrees(I)F"/> + <method name="getSatelliteCount()I"/> + <method name="getSvid(I)I"/> + <method name="hasAlmanacData(I)Z"/> + <method name="hasCarrierFrequencyHz(I)Z" since="26"/> + <method name="hasEphemerisData(I)Z"/> + <method name="usedInFix(I)Z"/> + <field name="CONSTELLATION_BEIDOU"/> + <field name="CONSTELLATION_GALILEO"/> + <field name="CONSTELLATION_GLONASS"/> + <field name="CONSTELLATION_GPS"/> + <field name="CONSTELLATION_QZSS"/> + <field name="CONSTELLATION_SBAS"/> + <field name="CONSTELLATION_UNKNOWN"/> + </class> + <class name="android/location/GnssStatus$Callback" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onFirstFix(I)V"/> + <method name="onSatelliteStatusChanged(Landroid/location/GnssStatus;)V"/> + <method name="onStarted()V"/> + <method name="onStopped()V"/> + </class> + <class name="android/location/GpsSatellite" since="3" deprecated="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAzimuth()F"/> + <method name="getElevation()F"/> + <method name="getPrn()I"/> + <method name="getSnr()F"/> + <method name="hasAlmanac()Z"/> + <method name="hasEphemeris()Z"/> + <method name="usedInFix()Z"/> + </class> + <class name="android/location/GpsStatus" since="3" deprecated="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getMaxSatellites()I"/> + <method name="getSatellites()Ljava/lang/Iterable;"/> + <method name="getTimeToFirstFix()I"/> + <field name="GPS_EVENT_FIRST_FIX"/> + <field name="GPS_EVENT_SATELLITE_STATUS"/> + <field name="GPS_EVENT_STARTED"/> + <field name="GPS_EVENT_STOPPED"/> + </class> + <class name="android/location/GpsStatus$Listener" since="3" deprecated="24"> + <extends name="java/lang/Object"/> + <method name="onGpsStatusChanged(I)V"/> + </class> + <class name="android/location/GpsStatus$NmeaListener" since="5" deprecated="24"> + <extends name="java/lang/Object"/> + <method name="onNmeaReceived(JLjava/lang/String;)V"/> + </class> + <class name="android/location/Location" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/location/Location;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="bearingTo(Landroid/location/Location;)F"/> + <method name="convert(DI)Ljava/lang/String;"/> + <method name="convert(Ljava/lang/String;)D"/> + <method name="distanceBetween(DDDD[F)V"/> + <method name="distanceTo(Landroid/location/Location;)F"/> + <method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" since="3"/> + <method name="getAccuracy()F"/> + <method name="getAltitude()D"/> + <method name="getBearing()F"/> + <method name="getBearingAccuracyDegrees()F" since="26"/> + <method name="getElapsedRealtimeNanos()J" since="17"/> + <method name="getExtras()Landroid/os/Bundle;"/> + <method name="getLatitude()D"/> + <method name="getLongitude()D"/> + <method name="getProvider()Ljava/lang/String;"/> + <method name="getSpeed()F"/> + <method name="getSpeedAccuracyMetersPerSecond()F" since="26"/> + <method name="getTime()J"/> + <method name="getVerticalAccuracyMeters()F" since="26"/> + <method name="hasAccuracy()Z"/> + <method name="hasAltitude()Z"/> + <method name="hasBearing()Z"/> + <method name="hasBearingAccuracy()Z" since="26"/> + <method name="hasSpeed()Z"/> + <method name="hasSpeedAccuracy()Z" since="26"/> + <method name="hasVerticalAccuracy()Z" since="26"/> + <method name="isFromMockProvider()Z" since="18"/> + <method name="removeAccuracy()V" deprecated="26"/> + <method name="removeAltitude()V" deprecated="26"/> + <method name="removeBearing()V" deprecated="26"/> + <method name="removeSpeed()V" deprecated="26"/> + <method name="reset()V"/> + <method name="set(Landroid/location/Location;)V"/> + <method name="setAccuracy(F)V"/> + <method name="setAltitude(D)V"/> + <method name="setBearing(F)V"/> + <method name="setBearingAccuracyDegrees(F)V" since="26"/> + <method name="setElapsedRealtimeNanos(J)V" since="17"/> + <method name="setExtras(Landroid/os/Bundle;)V"/> + <method name="setLatitude(D)V"/> + <method name="setLongitude(D)V"/> + <method name="setProvider(Ljava/lang/String;)V"/> + <method name="setSpeed(F)V"/> + <method name="setSpeedAccuracyMetersPerSecond(F)V" since="26"/> + <method name="setTime(J)V"/> + <method name="setVerticalAccuracyMeters(F)V" since="26"/> + <field name="CREATOR"/> + <field name="FORMAT_DEGREES"/> + <field name="FORMAT_MINUTES"/> + <field name="FORMAT_SECONDS"/> + </class> + <class name="android/location/LocationListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onLocationChanged(Landroid/location/Location;)V"/> + <method name="onProviderDisabled(Ljava/lang/String;)V"/> + <method name="onProviderEnabled(Ljava/lang/String;)V"/> + <method name="onStatusChanged(Ljava/lang/String;ILandroid/os/Bundle;)V"/> + </class> + <class name="android/location/LocationManager" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addGpsStatusListener(Landroid/location/GpsStatus$Listener;)Z" since="3" deprecated="24"/> + <method name="addNmeaListener(Landroid/location/GpsStatus$NmeaListener;)Z" since="5" deprecated="24"/> + <method name="addNmeaListener(Landroid/location/OnNmeaMessageListener;)Z" since="24"/> + <method name="addNmeaListener(Landroid/location/OnNmeaMessageListener;Landroid/os/Handler;)Z" since="24"/> + <method name="addProximityAlert(DDFJLandroid/app/PendingIntent;)V"/> + <method name="addTestProvider(Ljava/lang/String;ZZZZZZZII)V" since="3"/> + <method name="clearTestProviderEnabled(Ljava/lang/String;)V" since="3"/> + <method name="clearTestProviderLocation(Ljava/lang/String;)V" since="3"/> + <method name="clearTestProviderStatus(Ljava/lang/String;)V" since="3"/> + <method name="getAllProviders()Ljava/util/List;"/> + <method name="getBestProvider(Landroid/location/Criteria;Z)Ljava/lang/String;"/> + <method name="getGpsStatus(Landroid/location/GpsStatus;)Landroid/location/GpsStatus;" since="3" deprecated="24"/> + <method name="getLastKnownLocation(Ljava/lang/String;)Landroid/location/Location;"/> + <method name="getProvider(Ljava/lang/String;)Landroid/location/LocationProvider;"/> + <method name="getProviders(Landroid/location/Criteria;Z)Ljava/util/List;"/> + <method name="getProviders(Z)Ljava/util/List;"/> + <method name="isProviderEnabled(Ljava/lang/String;)Z"/> + <method name="registerGnssMeasurementsCallback(Landroid/location/GnssMeasurementsEvent$Callback;)Z" since="24"/> + <method name="registerGnssMeasurementsCallback(Landroid/location/GnssMeasurementsEvent$Callback;Landroid/os/Handler;)Z" since="24"/> + <method name="registerGnssNavigationMessageCallback(Landroid/location/GnssNavigationMessage$Callback;)Z" since="24"/> + <method name="registerGnssNavigationMessageCallback(Landroid/location/GnssNavigationMessage$Callback;Landroid/os/Handler;)Z" since="24"/> + <method name="registerGnssStatusCallback(Landroid/location/GnssStatus$Callback;)Z" since="24"/> + <method name="registerGnssStatusCallback(Landroid/location/GnssStatus$Callback;Landroid/os/Handler;)Z" since="24"/> + <method name="removeGpsStatusListener(Landroid/location/GpsStatus$Listener;)V" since="3" deprecated="24"/> + <method name="removeNmeaListener(Landroid/location/GpsStatus$NmeaListener;)V" since="5" deprecated="24"/> + <method name="removeNmeaListener(Landroid/location/OnNmeaMessageListener;)V" since="24"/> + <method name="removeProximityAlert(Landroid/app/PendingIntent;)V"/> + <method name="removeTestProvider(Ljava/lang/String;)V" since="3"/> + <method name="removeUpdates(Landroid/app/PendingIntent;)V" since="3"/> + <method name="removeUpdates(Landroid/location/LocationListener;)V"/> + <method name="requestLocationUpdates(JFLandroid/location/Criteria;Landroid/app/PendingIntent;)V" since="9"/> + <method name="requestLocationUpdates(JFLandroid/location/Criteria;Landroid/location/LocationListener;Landroid/os/Looper;)V" since="9"/> + <method name="requestLocationUpdates(Ljava/lang/String;JFLandroid/app/PendingIntent;)V" since="3"/> + <method name="requestLocationUpdates(Ljava/lang/String;JFLandroid/location/LocationListener;)V"/> + <method name="requestLocationUpdates(Ljava/lang/String;JFLandroid/location/LocationListener;Landroid/os/Looper;)V"/> + <method name="requestSingleUpdate(Landroid/location/Criteria;Landroid/app/PendingIntent;)V" since="9"/> + <method name="requestSingleUpdate(Landroid/location/Criteria;Landroid/location/LocationListener;Landroid/os/Looper;)V" since="9"/> + <method name="requestSingleUpdate(Ljava/lang/String;Landroid/app/PendingIntent;)V" since="9"/> + <method name="requestSingleUpdate(Ljava/lang/String;Landroid/location/LocationListener;Landroid/os/Looper;)V" since="9"/> + <method name="sendExtraCommand(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Z" since="3"/> + <method name="setTestProviderEnabled(Ljava/lang/String;Z)V" since="3"/> + <method name="setTestProviderLocation(Ljava/lang/String;Landroid/location/Location;)V" since="3"/> + <method name="setTestProviderStatus(Ljava/lang/String;ILandroid/os/Bundle;J)V" since="3"/> + <method name="unregisterGnssMeasurementsCallback(Landroid/location/GnssMeasurementsEvent$Callback;)V" since="24"/> + <method name="unregisterGnssNavigationMessageCallback(Landroid/location/GnssNavigationMessage$Callback;)V" since="24"/> + <method name="unregisterGnssStatusCallback(Landroid/location/GnssStatus$Callback;)V" since="24"/> + <field name="GPS_PROVIDER"/> + <field name="KEY_LOCATION_CHANGED" since="3"/> + <field name="KEY_PROVIDER_ENABLED" since="3"/> + <field name="KEY_PROXIMITY_ENTERING"/> + <field name="KEY_STATUS_CHANGED" since="3"/> + <field name="MODE_CHANGED_ACTION" since="19"/> + <field name="NETWORK_PROVIDER"/> + <field name="PASSIVE_PROVIDER" since="8"/> + <field name="PROVIDERS_CHANGED_ACTION" since="9"/> + </class> + <class name="android/location/LocationProvider" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAccuracy()I"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getPowerRequirement()I"/> + <method name="hasMonetaryCost()Z"/> + <method name="meetsCriteria(Landroid/location/Criteria;)Z"/> + <method name="requiresCell()Z"/> + <method name="requiresNetwork()Z"/> + <method name="requiresSatellite()Z"/> + <method name="supportsAltitude()Z"/> + <method name="supportsBearing()Z"/> + <method name="supportsSpeed()Z"/> + <field name="AVAILABLE"/> + <field name="OUT_OF_SERVICE"/> + <field name="TEMPORARILY_UNAVAILABLE"/> + </class> + <class name="android/location/OnNmeaMessageListener" since="24"> + <extends name="java/lang/Object"/> + <method name="onNmeaMessage(Ljava/lang/String;J)V"/> + </class> + <class name="android/location/SettingInjectorService" since="19"> + <extends name="android/app/Service"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="onGetEnabled()Z"/> + <method name="onGetSummary()Ljava/lang/String;" deprecated="21"/> + <field name="ACTION_INJECTED_SETTING_CHANGED"/> + <field name="ACTION_SERVICE_INTENT"/> + <field name="ATTRIBUTES_NAME"/> + <field name="META_DATA_NAME"/> + </class> + <class name="android/media/AsyncPlayer" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="play(Landroid/content/Context;Landroid/net/Uri;ZI)V" deprecated="23"/> + <method name="play(Landroid/content/Context;Landroid/net/Uri;ZLandroid/media/AudioAttributes;)V" since="23"/> + <method name="stop()V"/> + </class> + <class name="android/media/AudioAttributes" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getContentType()I"/> + <method name="getFlags()I"/> + <method name="getUsage()I"/> + <method name="getVolumeControlStream()I" since="26"/> + <field name="CONTENT_TYPE_MOVIE"/> + <field name="CONTENT_TYPE_MUSIC"/> + <field name="CONTENT_TYPE_SONIFICATION"/> + <field name="CONTENT_TYPE_SPEECH"/> + <field name="CONTENT_TYPE_UNKNOWN"/> + <field name="CREATOR"/> + <field name="FLAG_AUDIBILITY_ENFORCED"/> + <field name="FLAG_HW_AV_SYNC"/> + <field name="FLAG_LOW_LATENCY" since="24" deprecated="26"/> + <field name="USAGE_ALARM"/> + <field name="USAGE_ASSISTANCE_ACCESSIBILITY"/> + <field name="USAGE_ASSISTANCE_NAVIGATION_GUIDANCE"/> + <field name="USAGE_ASSISTANCE_SONIFICATION"/> + <field name="USAGE_ASSISTANT" since="26"/> + <field name="USAGE_GAME"/> + <field name="USAGE_MEDIA"/> + <field name="USAGE_NOTIFICATION"/> + <field name="USAGE_NOTIFICATION_COMMUNICATION_DELAYED"/> + <field name="USAGE_NOTIFICATION_COMMUNICATION_INSTANT"/> + <field name="USAGE_NOTIFICATION_COMMUNICATION_REQUEST"/> + <field name="USAGE_NOTIFICATION_EVENT"/> + <field name="USAGE_NOTIFICATION_RINGTONE"/> + <field name="USAGE_UNKNOWN"/> + <field name="USAGE_VOICE_COMMUNICATION"/> + <field name="USAGE_VOICE_COMMUNICATION_SIGNALLING"/> + </class> + <class name="android/media/AudioAttributes$Builder" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/media/AudioAttributes;)V"/> + <method name="build()Landroid/media/AudioAttributes;"/> + <method name="setContentType(I)Landroid/media/AudioAttributes$Builder;"/> + <method name="setFlags(I)Landroid/media/AudioAttributes$Builder;"/> + <method name="setLegacyStreamType(I)Landroid/media/AudioAttributes$Builder;"/> + <method name="setUsage(I)Landroid/media/AudioAttributes$Builder;"/> + </class> + <class name="android/media/AudioDeviceCallback" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onAudioDevicesAdded([Landroid/media/AudioDeviceInfo;)V"/> + <method name="onAudioDevicesRemoved([Landroid/media/AudioDeviceInfo;)V"/> + </class> + <class name="android/media/AudioDeviceInfo" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getChannelCounts()[I"/> + <method name="getChannelIndexMasks()[I"/> + <method name="getChannelMasks()[I"/> + <method name="getEncodings()[I"/> + <method name="getId()I"/> + <method name="getProductName()Ljava/lang/CharSequence;"/> + <method name="getSampleRates()[I"/> + <method name="getType()I"/> + <method name="isSink()Z"/> + <method name="isSource()Z"/> + <field name="TYPE_AUX_LINE"/> + <field name="TYPE_BLUETOOTH_A2DP"/> + <field name="TYPE_BLUETOOTH_SCO"/> + <field name="TYPE_BUILTIN_EARPIECE"/> + <field name="TYPE_BUILTIN_MIC"/> + <field name="TYPE_BUILTIN_SPEAKER"/> + <field name="TYPE_BUS" since="24"/> + <field name="TYPE_DOCK"/> + <field name="TYPE_FM"/> + <field name="TYPE_FM_TUNER"/> + <field name="TYPE_HDMI"/> + <field name="TYPE_HDMI_ARC"/> + <field name="TYPE_IP"/> + <field name="TYPE_LINE_ANALOG"/> + <field name="TYPE_LINE_DIGITAL"/> + <field name="TYPE_TELEPHONY"/> + <field name="TYPE_TV_TUNER"/> + <field name="TYPE_UNKNOWN"/> + <field name="TYPE_USB_ACCESSORY"/> + <field name="TYPE_USB_DEVICE"/> + <field name="TYPE_USB_HEADSET" since="26"/> + <field name="TYPE_WIRED_HEADPHONES"/> + <field name="TYPE_WIRED_HEADSET"/> + </class> + <class name="android/media/AudioFocusRequest" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="acceptsDelayedFocusGain()Z"/> + <method name="getAudioAttributes()Landroid/media/AudioAttributes;"/> + <method name="getFocusGain()I"/> + <method name="willPauseWhenDucked()Z"/> + </class> + <class name="android/media/AudioFocusRequest$Builder" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>(I)V"/> + <method name="<init>(Landroid/media/AudioFocusRequest;)V"/> + <method name="build()Landroid/media/AudioFocusRequest;"/> + <method name="setAcceptsDelayedFocusGain(Z)Landroid/media/AudioFocusRequest$Builder;"/> + <method name="setAudioAttributes(Landroid/media/AudioAttributes;)Landroid/media/AudioFocusRequest$Builder;"/> + <method name="setFocusGain(I)Landroid/media/AudioFocusRequest$Builder;"/> + <method name="setOnAudioFocusChangeListener(Landroid/media/AudioManager$OnAudioFocusChangeListener;)Landroid/media/AudioFocusRequest$Builder;"/> + <method name="setOnAudioFocusChangeListener(Landroid/media/AudioManager$OnAudioFocusChangeListener;Landroid/os/Handler;)Landroid/media/AudioFocusRequest$Builder;"/> + <method name="setWillPauseWhenDucked(Z)Landroid/media/AudioFocusRequest$Builder;"/> + </class> + <class name="android/media/AudioFormat" since="3"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable" since="24"/> + <method name="<init>()V"/> + <method name="getChannelCount()I" since="23"/> + <method name="getChannelIndexMask()I" since="23"/> + <method name="getChannelMask()I" since="21"/> + <method name="getEncoding()I" since="21"/> + <method name="getSampleRate()I" since="21"/> + <field name="CHANNEL_CONFIGURATION_DEFAULT" deprecated="16"/> + <field name="CHANNEL_CONFIGURATION_INVALID" deprecated="16"/> + <field name="CHANNEL_CONFIGURATION_MONO" deprecated="16"/> + <field name="CHANNEL_CONFIGURATION_STEREO" deprecated="16"/> + <field name="CHANNEL_INVALID" since="5"/> + <field name="CHANNEL_IN_BACK" since="5"/> + <field name="CHANNEL_IN_BACK_PROCESSED" since="5"/> + <field name="CHANNEL_IN_DEFAULT" since="5"/> + <field name="CHANNEL_IN_FRONT" since="5"/> + <field name="CHANNEL_IN_FRONT_PROCESSED" since="5"/> + <field name="CHANNEL_IN_LEFT" since="5"/> + <field name="CHANNEL_IN_LEFT_PROCESSED" since="5"/> + <field name="CHANNEL_IN_MONO" since="5"/> + <field name="CHANNEL_IN_PRESSURE" since="5"/> + <field name="CHANNEL_IN_RIGHT" since="5"/> + <field name="CHANNEL_IN_RIGHT_PROCESSED" since="5"/> + <field name="CHANNEL_IN_STEREO" since="5"/> + <field name="CHANNEL_IN_VOICE_DNLINK" since="5"/> + <field name="CHANNEL_IN_VOICE_UPLINK" since="5"/> + <field name="CHANNEL_IN_X_AXIS" since="5"/> + <field name="CHANNEL_IN_Y_AXIS" since="5"/> + <field name="CHANNEL_IN_Z_AXIS" since="5"/> + <field name="CHANNEL_OUT_5POINT1" since="5"/> + <field name="CHANNEL_OUT_7POINT1" since="5" deprecated="23"/> + <field name="CHANNEL_OUT_7POINT1_SURROUND" since="23"/> + <field name="CHANNEL_OUT_BACK_CENTER" since="5"/> + <field name="CHANNEL_OUT_BACK_LEFT" since="5"/> + <field name="CHANNEL_OUT_BACK_RIGHT" since="5"/> + <field name="CHANNEL_OUT_DEFAULT" since="5"/> + <field name="CHANNEL_OUT_FRONT_CENTER" since="5"/> + <field name="CHANNEL_OUT_FRONT_LEFT" since="5"/> + <field name="CHANNEL_OUT_FRONT_LEFT_OF_CENTER" since="5"/> + <field name="CHANNEL_OUT_FRONT_RIGHT" since="5"/> + <field name="CHANNEL_OUT_FRONT_RIGHT_OF_CENTER" since="5"/> + <field name="CHANNEL_OUT_LOW_FREQUENCY" since="5"/> + <field name="CHANNEL_OUT_MONO" since="5"/> + <field name="CHANNEL_OUT_QUAD" since="5"/> + <field name="CHANNEL_OUT_SIDE_LEFT" since="21"/> + <field name="CHANNEL_OUT_SIDE_RIGHT" since="21"/> + <field name="CHANNEL_OUT_STEREO" since="5"/> + <field name="CHANNEL_OUT_SURROUND" since="5"/> + <field name="CREATOR" since="24"/> + <field name="ENCODING_AC3" since="21"/> + <field name="ENCODING_DEFAULT"/> + <field name="ENCODING_DOLBY_TRUEHD" since="25"/> + <field name="ENCODING_DTS" since="23"/> + <field name="ENCODING_DTS_HD" since="23"/> + <field name="ENCODING_E_AC3" since="21"/> + <field name="ENCODING_IEC61937" since="24"/> + <field name="ENCODING_INVALID"/> + <field name="ENCODING_PCM_16BIT"/> + <field name="ENCODING_PCM_8BIT"/> + <field name="ENCODING_PCM_FLOAT" since="21"/> + <field name="SAMPLE_RATE_UNSPECIFIED" since="24"/> + </class> + <class name="android/media/AudioFormat$Builder" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/media/AudioFormat;)V"/> + <method name="build()Landroid/media/AudioFormat;"/> + <method name="setChannelIndexMask(I)Landroid/media/AudioFormat$Builder;" since="23"/> + <method name="setChannelMask(I)Landroid/media/AudioFormat$Builder;"/> + <method name="setEncoding(I)Landroid/media/AudioFormat$Builder;"/> + <method name="setSampleRate(I)Landroid/media/AudioFormat$Builder;"/> + </class> + <class name="android/media/AudioManager" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="abandonAudioFocus(Landroid/media/AudioManager$OnAudioFocusChangeListener;)I" since="8" deprecated="26"/> + <method name="abandonAudioFocusRequest(Landroid/media/AudioFocusRequest;)I" since="26"/> + <method name="adjustStreamVolume(III)V"/> + <method name="adjustSuggestedStreamVolume(III)V"/> + <method name="adjustVolume(II)V"/> + <method name="dispatchMediaKeyEvent(Landroid/view/KeyEvent;)V" since="19"/> + <method name="generateAudioSessionId()I" since="21"/> + <method name="getActivePlaybackConfigurations()Ljava/util/List;" since="26"/> + <method name="getActiveRecordingConfigurations()Ljava/util/List;" since="24"/> + <method name="getDevices(I)[Landroid/media/AudioDeviceInfo;" since="23"/> + <method name="getMode()I"/> + <method name="getParameters(Ljava/lang/String;)Ljava/lang/String;" since="5"/> + <method name="getProperty(Ljava/lang/String;)Ljava/lang/String;" since="17"/> + <method name="getRingerMode()I"/> + <method name="getRouting(I)I" deprecated="16"/> + <method name="getStreamMaxVolume(I)I"/> + <method name="getStreamVolume(I)I"/> + <method name="getVibrateSetting(I)I" deprecated="16"/> + <method name="isBluetoothA2dpOn()Z" since="3" deprecated="26"/> + <method name="isBluetoothScoAvailableOffCall()Z" since="8"/> + <method name="isBluetoothScoOn()Z"/> + <method name="isMicrophoneMute()Z"/> + <method name="isMusicActive()Z"/> + <method name="isSpeakerphoneOn()Z"/> + <method name="isStreamMute(I)Z" since="23"/> + <method name="isVolumeFixed()Z" since="21"/> + <method name="isWiredHeadsetOn()Z" since="5" deprecated="16"/> + <method name="loadSoundEffects()V"/> + <method name="playSoundEffect(I)V"/> + <method name="playSoundEffect(IF)V" since="3"/> + <method name="registerAudioDeviceCallback(Landroid/media/AudioDeviceCallback;Landroid/os/Handler;)V" since="23"/> + <method name="registerAudioPlaybackCallback(Landroid/media/AudioManager$AudioPlaybackCallback;Landroid/os/Handler;)V" since="26"/> + <method name="registerAudioRecordingCallback(Landroid/media/AudioManager$AudioRecordingCallback;Landroid/os/Handler;)V" since="24"/> + <method name="registerMediaButtonEventReceiver(Landroid/app/PendingIntent;)V" since="18" deprecated="21"/> + <method name="registerMediaButtonEventReceiver(Landroid/content/ComponentName;)V" since="8" deprecated="21"/> + <method name="registerRemoteControlClient(Landroid/media/RemoteControlClient;)V" since="14" deprecated="21"/> + <method name="registerRemoteController(Landroid/media/RemoteController;)Z" since="19" deprecated="21"/> + <method name="requestAudioFocus(Landroid/media/AudioFocusRequest;)I" since="26"/> + <method name="requestAudioFocus(Landroid/media/AudioManager$OnAudioFocusChangeListener;II)I" since="8" deprecated="26"/> + <method name="setBluetoothA2dpOn(Z)V" since="3" deprecated="16"/> + <method name="setBluetoothScoOn(Z)V"/> + <method name="setMicrophoneMute(Z)V"/> + <method name="setMode(I)V"/> + <method name="setParameters(Ljava/lang/String;)V" since="5"/> + <method name="setRingerMode(I)V"/> + <method name="setRouting(III)V" deprecated="16"/> + <method name="setSpeakerphoneOn(Z)V"/> + <method name="setStreamMute(IZ)V" deprecated="23"/> + <method name="setStreamSolo(IZ)V" deprecated="23"/> + <method name="setStreamVolume(III)V"/> + <method name="setVibrateSetting(II)V" deprecated="16"/> + <method name="setWiredHeadsetOn(Z)V" since="5" deprecated="16"/> + <method name="shouldVibrate(I)Z" deprecated="16"/> + <method name="startBluetoothSco()V" since="8"/> + <method name="stopBluetoothSco()V" since="8"/> + <method name="unloadSoundEffects()V"/> + <method name="unregisterAudioDeviceCallback(Landroid/media/AudioDeviceCallback;)V" since="23"/> + <method name="unregisterAudioPlaybackCallback(Landroid/media/AudioManager$AudioPlaybackCallback;)V" since="26"/> + <method name="unregisterAudioRecordingCallback(Landroid/media/AudioManager$AudioRecordingCallback;)V" since="24"/> + <method name="unregisterMediaButtonEventReceiver(Landroid/app/PendingIntent;)V" since="18" deprecated="21"/> + <method name="unregisterMediaButtonEventReceiver(Landroid/content/ComponentName;)V" since="8" deprecated="21"/> + <method name="unregisterRemoteControlClient(Landroid/media/RemoteControlClient;)V" since="14" deprecated="21"/> + <method name="unregisterRemoteController(Landroid/media/RemoteController;)V" since="19" deprecated="21"/> + <field name="ACTION_AUDIO_BECOMING_NOISY" since="3"/> + <field name="ACTION_HDMI_AUDIO_PLUG" since="21"/> + <field name="ACTION_HEADSET_PLUG" since="21"/> + <field name="ACTION_SCO_AUDIO_STATE_CHANGED" since="8" deprecated="16"/> + <field name="ACTION_SCO_AUDIO_STATE_UPDATED" since="14"/> + <field name="ADJUST_LOWER"/> + <field name="ADJUST_MUTE" since="23"/> + <field name="ADJUST_RAISE"/> + <field name="ADJUST_SAME"/> + <field name="ADJUST_TOGGLE_MUTE" since="23"/> + <field name="ADJUST_UNMUTE" since="23"/> + <field name="AUDIOFOCUS_GAIN" since="8"/> + <field name="AUDIOFOCUS_GAIN_TRANSIENT" since="8"/> + <field name="AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE" since="19"/> + <field name="AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK" since="8"/> + <field name="AUDIOFOCUS_LOSS" since="8"/> + <field name="AUDIOFOCUS_LOSS_TRANSIENT" since="8"/> + <field name="AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK" since="8"/> + <field name="AUDIOFOCUS_NONE" since="26"/> + <field name="AUDIOFOCUS_REQUEST_DELAYED" since="26"/> + <field name="AUDIOFOCUS_REQUEST_FAILED" since="8"/> + <field name="AUDIOFOCUS_REQUEST_GRANTED" since="8"/> + <field name="AUDIO_SESSION_ID_GENERATE" since="21"/> + <field name="ERROR" since="21"/> + <field name="ERROR_DEAD_OBJECT" since="21"/> + <field name="EXTRA_AUDIO_PLUG_STATE" since="21"/> + <field name="EXTRA_ENCODINGS" since="21"/> + <field name="EXTRA_MAX_CHANNEL_COUNT" since="21"/> + <field name="EXTRA_RINGER_MODE"/> + <field name="EXTRA_SCO_AUDIO_PREVIOUS_STATE" since="14"/> + <field name="EXTRA_SCO_AUDIO_STATE" since="8"/> + <field name="EXTRA_VIBRATE_SETTING" deprecated="16"/> + <field name="EXTRA_VIBRATE_TYPE" deprecated="16"/> + <field name="FLAG_ALLOW_RINGER_MODES"/> + <field name="FLAG_PLAY_SOUND"/> + <field name="FLAG_REMOVE_SOUND_AND_VIBRATE"/> + <field name="FLAG_SHOW_UI"/> + <field name="FLAG_VIBRATE"/> + <field name="FX_FOCUS_NAVIGATION_DOWN"/> + <field name="FX_FOCUS_NAVIGATION_LEFT"/> + <field name="FX_FOCUS_NAVIGATION_RIGHT"/> + <field name="FX_FOCUS_NAVIGATION_UP"/> + <field name="FX_KEYPRESS_DELETE" since="3"/> + <field name="FX_KEYPRESS_INVALID" since="19"/> + <field name="FX_KEYPRESS_RETURN" since="3"/> + <field name="FX_KEYPRESS_SPACEBAR" since="3"/> + <field name="FX_KEYPRESS_STANDARD" since="3"/> + <field name="FX_KEY_CLICK"/> + <field name="GET_DEVICES_ALL" since="23"/> + <field name="GET_DEVICES_INPUTS" since="23"/> + <field name="GET_DEVICES_OUTPUTS" since="23"/> + <field name="MODE_CURRENT"/> + <field name="MODE_INVALID"/> + <field name="MODE_IN_CALL"/> + <field name="MODE_IN_COMMUNICATION" since="11"/> + <field name="MODE_NORMAL"/> + <field name="MODE_RINGTONE"/> + <field name="NUM_STREAMS" deprecated="16"/> + <field name="PROPERTY_OUTPUT_FRAMES_PER_BUFFER" since="17"/> + <field name="PROPERTY_OUTPUT_SAMPLE_RATE" since="17"/> + <field name="PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED" since="24"/> + <field name="PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND" since="23"/> + <field name="PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND" since="23"/> + <field name="RINGER_MODE_CHANGED_ACTION"/> + <field name="RINGER_MODE_NORMAL"/> + <field name="RINGER_MODE_SILENT"/> + <field name="RINGER_MODE_VIBRATE"/> + <field name="ROUTE_ALL" deprecated="16"/> + <field name="ROUTE_BLUETOOTH" deprecated="16"/> + <field name="ROUTE_BLUETOOTH_A2DP" since="3" deprecated="16"/> + <field name="ROUTE_BLUETOOTH_SCO" since="3" deprecated="16"/> + <field name="ROUTE_EARPIECE" deprecated="16"/> + <field name="ROUTE_HEADSET" deprecated="16"/> + <field name="ROUTE_SPEAKER" deprecated="16"/> + <field name="SCO_AUDIO_STATE_CONNECTED" since="8"/> + <field name="SCO_AUDIO_STATE_CONNECTING" since="14"/> + <field name="SCO_AUDIO_STATE_DISCONNECTED" since="8"/> + <field name="SCO_AUDIO_STATE_ERROR" since="8"/> + <field name="STREAM_ACCESSIBILITY" since="26"/> + <field name="STREAM_ALARM"/> + <field name="STREAM_DTMF" since="5"/> + <field name="STREAM_MUSIC"/> + <field name="STREAM_NOTIFICATION" since="3"/> + <field name="STREAM_RING"/> + <field name="STREAM_SYSTEM"/> + <field name="STREAM_VOICE_CALL"/> + <field name="USE_DEFAULT_STREAM_TYPE"/> + <field name="VIBRATE_SETTING_CHANGED_ACTION" deprecated="16"/> + <field name="VIBRATE_SETTING_OFF" deprecated="16"/> + <field name="VIBRATE_SETTING_ON" deprecated="16"/> + <field name="VIBRATE_SETTING_ONLY_SILENT" deprecated="16"/> + <field name="VIBRATE_TYPE_NOTIFICATION" deprecated="16"/> + <field name="VIBRATE_TYPE_RINGER" deprecated="16"/> + </class> + <class name="android/media/AudioManager$AudioPlaybackCallback" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onPlaybackConfigChanged(Ljava/util/List;)V"/> + </class> + <class name="android/media/AudioManager$AudioRecordingCallback" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onRecordingConfigChanged(Ljava/util/List;)V"/> + </class> + <class name="android/media/AudioManager$OnAudioFocusChangeListener" since="8"> + <extends name="java/lang/Object"/> + <method name="onAudioFocusChange(I)V"/> + </class> + <class name="android/media/AudioPlaybackConfiguration" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getAudioAttributes()Landroid/media/AudioAttributes;"/> + <field name="CREATOR"/> + </class> + <class name="android/media/AudioRecord" since="3"> + <extends name="java/lang/Object"/> + <implements name="android/media/AudioRouting" since="24"/> + <method name="<init>(IIIII)V"/> + <method name="addOnRoutingChangedListener(Landroid/media/AudioRecord$OnRoutingChangedListener;Landroid/os/Handler;)V" since="23" deprecated="24"/> + <method name="getAudioFormat()I"/> + <method name="getAudioSessionId()I" since="16"/> + <method name="getAudioSource()I"/> + <method name="getBufferSizeInFrames()I" since="23"/> + <method name="getChannelConfiguration()I"/> + <method name="getChannelCount()I"/> + <method name="getFormat()Landroid/media/AudioFormat;" since="23"/> + <method name="getMinBufferSize(III)I"/> + <method name="getNotificationMarkerPosition()I"/> + <method name="getPositionNotificationPeriod()I"/> + <method name="getPreferredDevice()Landroid/media/AudioDeviceInfo;" since="23"/> + <method name="getRecordingState()I"/> + <method name="getRoutedDevice()Landroid/media/AudioDeviceInfo;" since="23"/> + <method name="getSampleRate()I"/> + <method name="getState()I"/> + <method name="getTimestamp(Landroid/media/AudioTimestamp;I)I" since="24"/> + <method name="read(Ljava/nio/ByteBuffer;I)I"/> + <method name="read(Ljava/nio/ByteBuffer;II)I" since="23"/> + <method name="read([BII)I"/> + <method name="read([BIII)I" since="23"/> + <method name="read([FIII)I" since="23"/> + <method name="read([SII)I"/> + <method name="read([SIII)I" since="23"/> + <method name="release()V"/> + <method name="removeOnRoutingChangedListener(Landroid/media/AudioRecord$OnRoutingChangedListener;)V" since="23" deprecated="24"/> + <method name="setNotificationMarkerPosition(I)I"/> + <method name="setPositionNotificationPeriod(I)I"/> + <method name="setPreferredDevice(Landroid/media/AudioDeviceInfo;)Z" since="23"/> + <method name="setRecordPositionUpdateListener(Landroid/media/AudioRecord$OnRecordPositionUpdateListener;)V"/> + <method name="setRecordPositionUpdateListener(Landroid/media/AudioRecord$OnRecordPositionUpdateListener;Landroid/os/Handler;)V"/> + <method name="startRecording()V"/> + <method name="startRecording(Landroid/media/MediaSyncEvent;)V" since="16"/> + <method name="stop()V"/> + <field name="ERROR"/> + <field name="ERROR_BAD_VALUE"/> + <field name="ERROR_DEAD_OBJECT" since="24"/> + <field name="ERROR_INVALID_OPERATION"/> + <field name="READ_BLOCKING" since="23"/> + <field name="READ_NON_BLOCKING" since="23"/> + <field name="RECORDSTATE_RECORDING"/> + <field name="RECORDSTATE_STOPPED"/> + <field name="STATE_INITIALIZED"/> + <field name="STATE_UNINITIALIZED"/> + <field name="SUCCESS"/> + </class> + <class name="android/media/AudioRecord$Builder" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="build()Landroid/media/AudioRecord;"/> + <method name="setAudioFormat(Landroid/media/AudioFormat;)Landroid/media/AudioRecord$Builder;"/> + <method name="setAudioSource(I)Landroid/media/AudioRecord$Builder;"/> + <method name="setBufferSizeInBytes(I)Landroid/media/AudioRecord$Builder;"/> + </class> + <class name="android/media/AudioRecord$OnRecordPositionUpdateListener" since="3"> + <extends name="java/lang/Object"/> + <method name="onMarkerReached(Landroid/media/AudioRecord;)V"/> + <method name="onPeriodicNotification(Landroid/media/AudioRecord;)V"/> + </class> + <class name="android/media/AudioRecord$OnRoutingChangedListener" since="23" deprecated="24"> + <extends name="java/lang/Object"/> + <implements name="android/media/AudioRouting$OnRoutingChangedListener" since="24"/> + <method name="onRoutingChanged(Landroid/media/AudioRecord;)V"/> + </class> + <class name="android/media/AudioRecordingConfiguration" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getAudioDevice()Landroid/media/AudioDeviceInfo;"/> + <method name="getClientAudioSessionId()I"/> + <method name="getClientAudioSource()I"/> + <method name="getClientFormat()Landroid/media/AudioFormat;"/> + <method name="getFormat()Landroid/media/AudioFormat;"/> + <field name="CREATOR"/> + </class> + <class name="android/media/AudioRouting" since="24"> + <extends name="java/lang/Object"/> + <method name="addOnRoutingChangedListener(Landroid/media/AudioRouting$OnRoutingChangedListener;Landroid/os/Handler;)V"/> + <method name="getPreferredDevice()Landroid/media/AudioDeviceInfo;"/> + <method name="getRoutedDevice()Landroid/media/AudioDeviceInfo;"/> + <method name="removeOnRoutingChangedListener(Landroid/media/AudioRouting$OnRoutingChangedListener;)V"/> + <method name="setPreferredDevice(Landroid/media/AudioDeviceInfo;)Z"/> + </class> + <class name="android/media/AudioRouting$OnRoutingChangedListener" since="24"> + <extends name="java/lang/Object"/> + <method name="onRoutingChanged(Landroid/media/AudioRouting;)V"/> + </class> + <class name="android/media/AudioTimestamp" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="TIMEBASE_BOOTTIME" since="24"/> + <field name="TIMEBASE_MONOTONIC" since="24"/> + <field name="framePosition"/> + <field name="nanoTime"/> + </class> + <class name="android/media/AudioTrack" since="3"> + <extends name="java/lang/Object"/> + <implements name="android/media/AudioRouting" since="24"/> + <implements name="android/media/VolumeAutomation" since="26"/> + <method name="<init>(IIIIII)V" deprecated="26"/> + <method name="<init>(IIIIIII)V" since="9" deprecated="26"/> + <method name="<init>(Landroid/media/AudioAttributes;Landroid/media/AudioFormat;III)V" since="21"/> + <method name="addOnRoutingChangedListener(Landroid/media/AudioTrack$OnRoutingChangedListener;Landroid/os/Handler;)V" since="23" deprecated="24"/> + <method name="attachAuxEffect(I)I" since="9"/> + <method name="flush()V"/> + <method name="getAudioFormat()I"/> + <method name="getAudioSessionId()I" since="9"/> + <method name="getBufferCapacityInFrames()I" since="24"/> + <method name="getBufferSizeInFrames()I" since="23"/> + <method name="getChannelConfiguration()I"/> + <method name="getChannelCount()I"/> + <method name="getFormat()Landroid/media/AudioFormat;" since="23"/> + <method name="getMaxVolume()F"/> + <method name="getMinBufferSize(III)I"/> + <method name="getMinVolume()F"/> + <method name="getNativeFrameCount()I" deprecated="19"/> + <method name="getNativeOutputSampleRate(I)I"/> + <method name="getNotificationMarkerPosition()I"/> + <method name="getPerformanceMode()I" since="26"/> + <method name="getPlayState()I"/> + <method name="getPlaybackHeadPosition()I"/> + <method name="getPlaybackParams()Landroid/media/PlaybackParams;" since="23"/> + <method name="getPlaybackRate()I"/> + <method name="getPositionNotificationPeriod()I"/> + <method name="getPreferredDevice()Landroid/media/AudioDeviceInfo;" since="23"/> + <method name="getRoutedDevice()Landroid/media/AudioDeviceInfo;" since="23"/> + <method name="getSampleRate()I"/> + <method name="getState()I"/> + <method name="getStreamType()I"/> + <method name="getTimestamp(Landroid/media/AudioTimestamp;)Z" since="19"/> + <method name="getUnderrunCount()I" since="24"/> + <method name="pause()V"/> + <method name="play()V"/> + <method name="release()V"/> + <method name="reloadStaticData()I"/> + <method name="removeOnRoutingChangedListener(Landroid/media/AudioTrack$OnRoutingChangedListener;)V" since="23" deprecated="24"/> + <method name="setAuxEffectSendLevel(F)I" since="9"/> + <method name="setBufferSizeInFrames(I)I" since="24"/> + <method name="setLoopPoints(III)I"/> + <method name="setNotificationMarkerPosition(I)I"/> + <method name="setPlaybackHeadPosition(I)I"/> + <method name="setPlaybackParams(Landroid/media/PlaybackParams;)V" since="23"/> + <method name="setPlaybackPositionUpdateListener(Landroid/media/AudioTrack$OnPlaybackPositionUpdateListener;)V"/> + <method name="setPlaybackPositionUpdateListener(Landroid/media/AudioTrack$OnPlaybackPositionUpdateListener;Landroid/os/Handler;)V"/> + <method name="setPlaybackRate(I)I"/> + <method name="setPositionNotificationPeriod(I)I"/> + <method name="setPreferredDevice(Landroid/media/AudioDeviceInfo;)Z" since="23"/> + <method name="setState(I)V" deprecated="19"/> + <method name="setStereoVolume(FF)I" deprecated="21"/> + <method name="setVolume(F)I" since="21"/> + <method name="stop()V"/> + <method name="write(Ljava/nio/ByteBuffer;II)I" since="21"/> + <method name="write(Ljava/nio/ByteBuffer;IIJ)I" since="23"/> + <method name="write([BII)I"/> + <method name="write([BIII)I" since="23"/> + <method name="write([FIII)I" since="21"/> + <method name="write([SII)I"/> + <method name="write([SIII)I" since="23"/> + <field name="ERROR"/> + <field name="ERROR_BAD_VALUE"/> + <field name="ERROR_DEAD_OBJECT" since="24"/> + <field name="ERROR_INVALID_OPERATION"/> + <field name="MODE_STATIC"/> + <field name="MODE_STREAM"/> + <field name="PERFORMANCE_MODE_LOW_LATENCY" since="26"/> + <field name="PERFORMANCE_MODE_NONE" since="26"/> + <field name="PERFORMANCE_MODE_POWER_SAVING" since="26"/> + <field name="PLAYSTATE_PAUSED"/> + <field name="PLAYSTATE_PLAYING"/> + <field name="PLAYSTATE_STOPPED"/> + <field name="STATE_INITIALIZED"/> + <field name="STATE_NO_STATIC_DATA"/> + <field name="STATE_UNINITIALIZED"/> + <field name="SUCCESS"/> + <field name="WRITE_BLOCKING" since="21"/> + <field name="WRITE_NON_BLOCKING" since="21"/> + </class> + <class name="android/media/AudioTrack$Builder" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="build()Landroid/media/AudioTrack;"/> + <method name="setAudioAttributes(Landroid/media/AudioAttributes;)Landroid/media/AudioTrack$Builder;"/> + <method name="setAudioFormat(Landroid/media/AudioFormat;)Landroid/media/AudioTrack$Builder;"/> + <method name="setBufferSizeInBytes(I)Landroid/media/AudioTrack$Builder;"/> + <method name="setPerformanceMode(I)Landroid/media/AudioTrack$Builder;" since="26"/> + <method name="setSessionId(I)Landroid/media/AudioTrack$Builder;"/> + <method name="setTransferMode(I)Landroid/media/AudioTrack$Builder;"/> + </class> + <class name="android/media/AudioTrack$OnPlaybackPositionUpdateListener" since="3"> + <extends name="java/lang/Object"/> + <method name="onMarkerReached(Landroid/media/AudioTrack;)V"/> + <method name="onPeriodicNotification(Landroid/media/AudioTrack;)V"/> + </class> + <class name="android/media/AudioTrack$OnRoutingChangedListener" since="23" deprecated="24"> + <extends name="java/lang/Object"/> + <implements name="android/media/AudioRouting$OnRoutingChangedListener" since="24"/> + <method name="onRoutingChanged(Landroid/media/AudioTrack;)V"/> + </class> + <class name="android/media/CamcorderProfile" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="get(I)Landroid/media/CamcorderProfile;"/> + <method name="get(II)Landroid/media/CamcorderProfile;" since="9"/> + <method name="hasProfile(I)Z" since="11"/> + <method name="hasProfile(II)Z" since="11"/> + <field name="QUALITY_1080P" since="11"/> + <field name="QUALITY_2160P" since="21"/> + <field name="QUALITY_480P" since="11"/> + <field name="QUALITY_720P" since="11"/> + <field name="QUALITY_CIF" since="11"/> + <field name="QUALITY_HIGH"/> + <field name="QUALITY_HIGH_SPEED_1080P" since="21"/> + <field name="QUALITY_HIGH_SPEED_2160P" since="21"/> + <field name="QUALITY_HIGH_SPEED_480P" since="21"/> + <field name="QUALITY_HIGH_SPEED_720P" since="21"/> + <field name="QUALITY_HIGH_SPEED_HIGH" since="21"/> + <field name="QUALITY_HIGH_SPEED_LOW" since="21"/> + <field name="QUALITY_LOW"/> + <field name="QUALITY_QCIF" since="11"/> + <field name="QUALITY_QVGA" since="15"/> + <field name="QUALITY_TIME_LAPSE_1080P" since="11"/> + <field name="QUALITY_TIME_LAPSE_2160P" since="21"/> + <field name="QUALITY_TIME_LAPSE_480P" since="11"/> + <field name="QUALITY_TIME_LAPSE_720P" since="11"/> + <field name="QUALITY_TIME_LAPSE_CIF" since="11"/> + <field name="QUALITY_TIME_LAPSE_HIGH" since="11"/> + <field name="QUALITY_TIME_LAPSE_LOW" since="11"/> + <field name="QUALITY_TIME_LAPSE_QCIF" since="11"/> + <field name="QUALITY_TIME_LAPSE_QVGA" since="15"/> + <field name="audioBitRate"/> + <field name="audioChannels"/> + <field name="audioCodec"/> + <field name="audioSampleRate"/> + <field name="duration"/> + <field name="fileFormat"/> + <field name="quality"/> + <field name="videoBitRate"/> + <field name="videoCodec"/> + <field name="videoFrameHeight"/> + <field name="videoFrameRate"/> + <field name="videoFrameWidth"/> + </class> + <class name="android/media/CameraProfile" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getJpegEncodingQualityParameter(I)I"/> + <method name="getJpegEncodingQualityParameter(II)I" since="9"/> + <field name="QUALITY_HIGH"/> + <field name="QUALITY_LOW"/> + <field name="QUALITY_MEDIUM"/> + </class> + <class name="android/media/DeniedByServerException" since="18"> + <extends name="android/media/MediaDrmException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/media/DrmInitData" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="get(Ljava/util/UUID;)Landroid/media/DrmInitData$SchemeInitData;"/> + </class> + <class name="android/media/DrmInitData$SchemeInitData" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="data"/> + <field name="mimeType"/> + </class> + <class name="android/media/ExifInterface" since="5"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/io/FileDescriptor;)V" since="24"/> + <method name="<init>(Ljava/io/InputStream;)V" since="24"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getAltitude(D)D" since="9"/> + <method name="getAttribute(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getAttributeDouble(Ljava/lang/String;D)D" since="8"/> + <method name="getAttributeInt(Ljava/lang/String;I)I"/> + <method name="getLatLong([F)Z"/> + <method name="getThumbnail()[B"/> + <method name="getThumbnailBitmap()Landroid/graphics/Bitmap;" since="26"/> + <method name="getThumbnailBytes()[B" since="26"/> + <method name="getThumbnailRange()[J" since="24"/> + <method name="hasThumbnail()Z"/> + <method name="isThumbnailCompressed()Z" since="26"/> + <method name="saveAttributes()V"/> + <method name="setAttribute(Ljava/lang/String;Ljava/lang/String;)V"/> + <field name="ORIENTATION_FLIP_HORIZONTAL"/> + <field name="ORIENTATION_FLIP_VERTICAL"/> + <field name="ORIENTATION_NORMAL"/> + <field name="ORIENTATION_ROTATE_180"/> + <field name="ORIENTATION_ROTATE_270"/> + <field name="ORIENTATION_ROTATE_90"/> + <field name="ORIENTATION_TRANSPOSE"/> + <field name="ORIENTATION_TRANSVERSE"/> + <field name="ORIENTATION_UNDEFINED"/> + <field name="TAG_APERTURE" since="11" deprecated="24"/> + <field name="TAG_APERTURE_VALUE" since="24"/> + <field name="TAG_ARTIST" since="24"/> + <field name="TAG_BITS_PER_SAMPLE" since="24"/> + <field name="TAG_BRIGHTNESS_VALUE" since="24"/> + <field name="TAG_CFA_PATTERN" since="24"/> + <field name="TAG_COLOR_SPACE" since="24"/> + <field name="TAG_COMPONENTS_CONFIGURATION" since="24"/> + <field name="TAG_COMPRESSED_BITS_PER_PIXEL" since="24"/> + <field name="TAG_COMPRESSION" since="24"/> + <field name="TAG_CONTRAST" since="24"/> + <field name="TAG_COPYRIGHT" since="24"/> + <field name="TAG_CUSTOM_RENDERED" since="24"/> + <field name="TAG_DATETIME"/> + <field name="TAG_DATETIME_DIGITIZED" since="23"/> + <field name="TAG_DATETIME_ORIGINAL" since="24"/> + <field name="TAG_DEFAULT_CROP_SIZE" since="26"/> + <field name="TAG_DEVICE_SETTING_DESCRIPTION" since="24"/> + <field name="TAG_DIGITAL_ZOOM_RATIO" since="24"/> + <field name="TAG_DNG_VERSION" since="26"/> + <field name="TAG_EXIF_VERSION" since="24"/> + <field name="TAG_EXPOSURE_BIAS_VALUE" since="24"/> + <field name="TAG_EXPOSURE_INDEX" since="24"/> + <field name="TAG_EXPOSURE_MODE" since="24"/> + <field name="TAG_EXPOSURE_PROGRAM" since="24"/> + <field name="TAG_EXPOSURE_TIME" since="11"/> + <field name="TAG_FILE_SOURCE" since="24"/> + <field name="TAG_FLASH"/> + <field name="TAG_FLASHPIX_VERSION" since="24"/> + <field name="TAG_FLASH_ENERGY" since="24"/> + <field name="TAG_FOCAL_LENGTH" since="8"/> + <field name="TAG_FOCAL_LENGTH_IN_35MM_FILM" since="24"/> + <field name="TAG_FOCAL_PLANE_RESOLUTION_UNIT" since="24"/> + <field name="TAG_FOCAL_PLANE_X_RESOLUTION" since="24"/> + <field name="TAG_FOCAL_PLANE_Y_RESOLUTION" since="24"/> + <field name="TAG_F_NUMBER" since="24"/> + <field name="TAG_GAIN_CONTROL" since="24"/> + <field name="TAG_GPS_ALTITUDE" since="9"/> + <field name="TAG_GPS_ALTITUDE_REF" since="9"/> + <field name="TAG_GPS_AREA_INFORMATION" since="24"/> + <field name="TAG_GPS_DATESTAMP" since="8"/> + <field name="TAG_GPS_DEST_BEARING" since="24"/> + <field name="TAG_GPS_DEST_BEARING_REF" since="24"/> + <field name="TAG_GPS_DEST_DISTANCE" since="24"/> + <field name="TAG_GPS_DEST_DISTANCE_REF" since="24"/> + <field name="TAG_GPS_DEST_LATITUDE" since="24"/> + <field name="TAG_GPS_DEST_LATITUDE_REF" since="24"/> + <field name="TAG_GPS_DEST_LONGITUDE" since="24"/> + <field name="TAG_GPS_DEST_LONGITUDE_REF" since="24"/> + <field name="TAG_GPS_DIFFERENTIAL" since="24"/> + <field name="TAG_GPS_DOP" since="24"/> + <field name="TAG_GPS_IMG_DIRECTION" since="24"/> + <field name="TAG_GPS_IMG_DIRECTION_REF" since="24"/> + <field name="TAG_GPS_LATITUDE"/> + <field name="TAG_GPS_LATITUDE_REF"/> + <field name="TAG_GPS_LONGITUDE"/> + <field name="TAG_GPS_LONGITUDE_REF"/> + <field name="TAG_GPS_MAP_DATUM" since="24"/> + <field name="TAG_GPS_MEASURE_MODE" since="24"/> + <field name="TAG_GPS_PROCESSING_METHOD" since="8"/> + <field name="TAG_GPS_SATELLITES" since="24"/> + <field name="TAG_GPS_SPEED" since="24"/> + <field name="TAG_GPS_SPEED_REF" since="24"/> + <field name="TAG_GPS_STATUS" since="24"/> + <field name="TAG_GPS_TIMESTAMP" since="8"/> + <field name="TAG_GPS_TRACK" since="24"/> + <field name="TAG_GPS_TRACK_REF" since="24"/> + <field name="TAG_GPS_VERSION_ID" since="24"/> + <field name="TAG_IMAGE_DESCRIPTION" since="24"/> + <field name="TAG_IMAGE_LENGTH"/> + <field name="TAG_IMAGE_UNIQUE_ID" since="24"/> + <field name="TAG_IMAGE_WIDTH"/> + <field name="TAG_INTEROPERABILITY_INDEX" since="24"/> + <field name="TAG_ISO" since="11" deprecated="24"/> + <field name="TAG_ISO_SPEED_RATINGS" since="24"/> + <field name="TAG_JPEG_INTERCHANGE_FORMAT" since="24"/> + <field name="TAG_JPEG_INTERCHANGE_FORMAT_LENGTH" since="24"/> + <field name="TAG_LIGHT_SOURCE" since="24"/> + <field name="TAG_MAKE"/> + <field name="TAG_MAKER_NOTE" since="24"/> + <field name="TAG_MAX_APERTURE_VALUE" since="24"/> + <field name="TAG_METERING_MODE" since="24"/> + <field name="TAG_MODEL"/> + <field name="TAG_NEW_SUBFILE_TYPE" since="26"/> + <field name="TAG_OECF" since="24"/> + <field name="TAG_ORF_ASPECT_FRAME" since="26"/> + <field name="TAG_ORF_PREVIEW_IMAGE_LENGTH" since="26"/> + <field name="TAG_ORF_PREVIEW_IMAGE_START" since="26"/> + <field name="TAG_ORF_THUMBNAIL_IMAGE" since="26"/> + <field name="TAG_ORIENTATION"/> + <field name="TAG_PHOTOMETRIC_INTERPRETATION" since="24"/> + <field name="TAG_PIXEL_X_DIMENSION" since="24"/> + <field name="TAG_PIXEL_Y_DIMENSION" since="24"/> + <field name="TAG_PLANAR_CONFIGURATION" since="24"/> + <field name="TAG_PRIMARY_CHROMATICITIES" since="24"/> + <field name="TAG_REFERENCE_BLACK_WHITE" since="24"/> + <field name="TAG_RELATED_SOUND_FILE" since="24"/> + <field name="TAG_RESOLUTION_UNIT" since="24"/> + <field name="TAG_ROWS_PER_STRIP" since="24"/> + <field name="TAG_RW2_ISO" since="26"/> + <field name="TAG_RW2_JPG_FROM_RAW" since="26"/> + <field name="TAG_RW2_SENSOR_BOTTOM_BORDER" since="26"/> + <field name="TAG_RW2_SENSOR_LEFT_BORDER" since="26"/> + <field name="TAG_RW2_SENSOR_RIGHT_BORDER" since="26"/> + <field name="TAG_RW2_SENSOR_TOP_BORDER" since="26"/> + <field name="TAG_SAMPLES_PER_PIXEL" since="24"/> + <field name="TAG_SATURATION" since="24"/> + <field name="TAG_SCENE_CAPTURE_TYPE" since="24"/> + <field name="TAG_SCENE_TYPE" since="24"/> + <field name="TAG_SENSING_METHOD" since="24"/> + <field name="TAG_SHARPNESS" since="24"/> + <field name="TAG_SHUTTER_SPEED_VALUE" since="24"/> + <field name="TAG_SOFTWARE" since="24"/> + <field name="TAG_SPATIAL_FREQUENCY_RESPONSE" since="24"/> + <field name="TAG_SPECTRAL_SENSITIVITY" since="24"/> + <field name="TAG_STRIP_BYTE_COUNTS" since="24"/> + <field name="TAG_STRIP_OFFSETS" since="24"/> + <field name="TAG_SUBFILE_TYPE" since="26"/> + <field name="TAG_SUBJECT_AREA" since="24"/> + <field name="TAG_SUBJECT_DISTANCE" since="24"/> + <field name="TAG_SUBJECT_DISTANCE_RANGE" since="24"/> + <field name="TAG_SUBJECT_LOCATION" since="24"/> + <field name="TAG_SUBSEC_TIME" since="23"/> + <field name="TAG_SUBSEC_TIME_DIG" since="23" deprecated="24"/> + <field name="TAG_SUBSEC_TIME_DIGITIZED" since="24"/> + <field name="TAG_SUBSEC_TIME_ORIG" since="23" deprecated="24"/> + <field name="TAG_SUBSEC_TIME_ORIGINAL" since="24"/> + <field name="TAG_THUMBNAIL_IMAGE_LENGTH" since="24"/> + <field name="TAG_THUMBNAIL_IMAGE_WIDTH" since="24"/> + <field name="TAG_TRANSFER_FUNCTION" since="24"/> + <field name="TAG_USER_COMMENT" since="24"/> + <field name="TAG_WHITE_BALANCE"/> + <field name="TAG_WHITE_POINT" since="24"/> + <field name="TAG_X_RESOLUTION" since="24"/> + <field name="TAG_Y_CB_CR_COEFFICIENTS" since="24"/> + <field name="TAG_Y_CB_CR_POSITIONING" since="24"/> + <field name="TAG_Y_CB_CR_SUB_SAMPLING" since="24"/> + <field name="TAG_Y_RESOLUTION" since="24"/> + <field name="WHITEBALANCE_AUTO"/> + <field name="WHITEBALANCE_MANUAL"/> + </class> + <class name="android/media/FaceDetector" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(III)V"/> + <method name="findFaces(Landroid/graphics/Bitmap;[Landroid/media/FaceDetector$Face;)I"/> + </class> + <class name="android/media/FaceDetector$Face" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/media/FaceDetector;)V"/> + <method name="confidence()F"/> + <method name="eyesDistance()F"/> + <method name="getMidPoint(Landroid/graphics/PointF;)V"/> + <method name="pose(I)F"/> + <field name="CONFIDENCE_THRESHOLD"/> + <field name="EULER_X"/> + <field name="EULER_Y"/> + <field name="EULER_Z"/> + </class> + <class name="android/media/Image" since="19"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable"/> + <method name="<init>()V"/> + <method name="getCropRect()Landroid/graphics/Rect;" since="21"/> + <method name="getFormat()I"/> + <method name="getHeight()I"/> + <method name="getPlanes()[Landroid/media/Image$Plane;"/> + <method name="getTimestamp()J"/> + <method name="getWidth()I"/> + <method name="setCropRect(Landroid/graphics/Rect;)V" since="21"/> + <method name="setTimestamp(J)V" since="23"/> + </class> + <class name="android/media/Image$Plane" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getBuffer()Ljava/nio/ByteBuffer;"/> + <method name="getPixelStride()I"/> + <method name="getRowStride()I"/> + </class> + <class name="android/media/ImageReader" since="19"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable"/> + <method name="<init>()V"/> + <method name="acquireLatestImage()Landroid/media/Image;"/> + <method name="acquireNextImage()Landroid/media/Image;"/> + <method name="getHeight()I"/> + <method name="getImageFormat()I"/> + <method name="getMaxImages()I"/> + <method name="getSurface()Landroid/view/Surface;"/> + <method name="getWidth()I"/> + <method name="newInstance(IIII)Landroid/media/ImageReader;"/> + <method name="setOnImageAvailableListener(Landroid/media/ImageReader$OnImageAvailableListener;Landroid/os/Handler;)V"/> + </class> + <class name="android/media/ImageReader$OnImageAvailableListener" since="19"> + <extends name="java/lang/Object"/> + <method name="onImageAvailable(Landroid/media/ImageReader;)V"/> + </class> + <class name="android/media/ImageWriter" since="23"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable"/> + <method name="<init>()V"/> + <method name="dequeueInputImage()Landroid/media/Image;"/> + <method name="getFormat()I"/> + <method name="getMaxImages()I"/> + <method name="newInstance(Landroid/view/Surface;I)Landroid/media/ImageWriter;"/> + <method name="queueInputImage(Landroid/media/Image;)V"/> + <method name="setOnImageReleasedListener(Landroid/media/ImageWriter$OnImageReleasedListener;Landroid/os/Handler;)V"/> + </class> + <class name="android/media/ImageWriter$OnImageReleasedListener" since="23"> + <extends name="java/lang/Object"/> + <method name="onImageReleased(Landroid/media/ImageWriter;)V"/> + </class> + <class name="android/media/JetPlayer" since="3"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="clearQueue()Z"/> + <method name="closeJetFile()Z"/> + <method name="getJetPlayer()Landroid/media/JetPlayer;"/> + <method name="getMaxTracks()I"/> + <method name="loadJetFile(Landroid/content/res/AssetFileDescriptor;)Z"/> + <method name="loadJetFile(Ljava/lang/String;)Z"/> + <method name="pause()Z"/> + <method name="play()Z"/> + <method name="queueJetSegment(IIIIIB)Z"/> + <method name="queueJetSegmentMuteArray(IIII[ZB)Z"/> + <method name="release()V"/> + <method name="setEventListener(Landroid/media/JetPlayer$OnJetEventListener;)V"/> + <method name="setEventListener(Landroid/media/JetPlayer$OnJetEventListener;Landroid/os/Handler;)V"/> + <method name="setMuteArray([ZZ)Z"/> + <method name="setMuteFlag(IZZ)Z"/> + <method name="setMuteFlags(IZ)Z"/> + <method name="triggerClip(I)Z"/> + </class> + <class name="android/media/JetPlayer$OnJetEventListener" since="3"> + <extends name="java/lang/Object"/> + <method name="onJetEvent(Landroid/media/JetPlayer;SBBBB)V"/> + <method name="onJetNumQueuedSegmentUpdate(Landroid/media/JetPlayer;I)V"/> + <method name="onJetPauseUpdate(Landroid/media/JetPlayer;I)V"/> + <method name="onJetUserIdUpdate(Landroid/media/JetPlayer;II)V"/> + </class> + <class name="android/media/MediaActionSound" since="16"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="load(I)V"/> + <method name="play(I)V"/> + <method name="release()V"/> + <field name="FOCUS_COMPLETE"/> + <field name="SHUTTER_CLICK"/> + <field name="START_VIDEO_RECORDING"/> + <field name="STOP_VIDEO_RECORDING"/> + </class> + <class name="android/media/MediaCas" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable"/> + <method name="<init>(I)V"/> + <method name="enumeratePlugins()[Landroid/media/MediaCas$PluginDescriptor;"/> + <method name="isSystemIdSupported(I)Z"/> + <method name="openSession()Landroid/media/MediaCas$Session;"/> + <method name="processEmm([B)V"/> + <method name="processEmm([BII)V"/> + <method name="provision(Ljava/lang/String;)V"/> + <method name="refreshEntitlements(I[B)V"/> + <method name="sendEvent(II[B)V"/> + <method name="setEventListener(Landroid/media/MediaCas$EventListener;Landroid/os/Handler;)V"/> + <method name="setPrivateData([B)V"/> + </class> + <class name="android/media/MediaCas$EventListener" since="26"> + <extends name="java/lang/Object"/> + <method name="onEvent(Landroid/media/MediaCas;II[B)V"/> + </class> + <class name="android/media/MediaCas$PluginDescriptor" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getSystemId()I"/> + </class> + <class name="android/media/MediaCas$Session" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable"/> + <method name="<init>(Landroid/media/MediaCas;)V"/> + <method name="processEcm([B)V"/> + <method name="processEcm([BII)V"/> + <method name="setPrivateData([B)V"/> + </class> + <class name="android/media/MediaCasException" since="26"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + </class> + <class name="android/media/MediaCasException$DeniedByServerException" since="26"> + <extends name="android/media/MediaCasException"/> + <method name="<init>()V"/> + </class> + <class name="android/media/MediaCasException$NotProvisionedException" since="26"> + <extends name="android/media/MediaCasException"/> + <method name="<init>()V"/> + </class> + <class name="android/media/MediaCasException$ResourceBusyException" since="26"> + <extends name="android/media/MediaCasException"/> + <method name="<init>()V"/> + </class> + <class name="android/media/MediaCasException$UnsupportedCasException" since="26"> + <extends name="android/media/MediaCasException"/> + <method name="<init>()V"/> + </class> + <class name="android/media/MediaCasStateException" since="26"> + <extends name="java/lang/IllegalStateException"/> + <method name="<init>()V"/> + <method name="getDiagnosticInfo()Ljava/lang/String;"/> + </class> + <class name="android/media/MediaCodec" since="16"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="configure(Landroid/media/MediaFormat;Landroid/view/Surface;ILandroid/media/MediaDescrambler;)V" since="26"/> + <method name="configure(Landroid/media/MediaFormat;Landroid/view/Surface;Landroid/media/MediaCrypto;I)V"/> + <method name="createByCodecName(Ljava/lang/String;)Landroid/media/MediaCodec;"/> + <method name="createDecoderByType(Ljava/lang/String;)Landroid/media/MediaCodec;"/> + <method name="createEncoderByType(Ljava/lang/String;)Landroid/media/MediaCodec;"/> + <method name="createInputSurface()Landroid/view/Surface;" since="18"/> + <method name="createPersistentInputSurface()Landroid/view/Surface;" since="23"/> + <method name="dequeueInputBuffer(J)I"/> + <method name="dequeueOutputBuffer(Landroid/media/MediaCodec$BufferInfo;J)I"/> + <method name="flush()V"/> + <method name="getCodecInfo()Landroid/media/MediaCodecInfo;" since="18"/> + <method name="getInputBuffer(I)Ljava/nio/ByteBuffer;" since="21"/> + <method name="getInputBuffers()[Ljava/nio/ByteBuffer;" deprecated="21"/> + <method name="getInputFormat()Landroid/media/MediaFormat;" since="21"/> + <method name="getInputImage(I)Landroid/media/Image;" since="21"/> + <method name="getMetrics()Landroid/os/PersistableBundle;" since="26"/> + <method name="getName()Ljava/lang/String;" since="18"/> + <method name="getOutputBuffer(I)Ljava/nio/ByteBuffer;" since="21"/> + <method name="getOutputBuffers()[Ljava/nio/ByteBuffer;" deprecated="21"/> + <method name="getOutputFormat()Landroid/media/MediaFormat;"/> + <method name="getOutputFormat(I)Landroid/media/MediaFormat;" since="21"/> + <method name="getOutputImage(I)Landroid/media/Image;" since="21"/> + <method name="queueInputBuffer(IIIJI)V"/> + <method name="queueSecureInputBuffer(IILandroid/media/MediaCodec$CryptoInfo;JI)V"/> + <method name="release()V"/> + <method name="releaseOutputBuffer(IJ)V" since="21"/> + <method name="releaseOutputBuffer(IZ)V"/> + <method name="reset()V" since="21"/> + <method name="setCallback(Landroid/media/MediaCodec$Callback;)V" since="21"/> + <method name="setCallback(Landroid/media/MediaCodec$Callback;Landroid/os/Handler;)V" since="23"/> + <method name="setInputSurface(Landroid/view/Surface;)V" since="23"/> + <method name="setOnFrameRenderedListener(Landroid/media/MediaCodec$OnFrameRenderedListener;Landroid/os/Handler;)V" since="23"/> + <method name="setOutputSurface(Landroid/view/Surface;)V" since="23"/> + <method name="setParameters(Landroid/os/Bundle;)V" since="19"/> + <method name="setVideoScalingMode(I)V"/> + <method name="signalEndOfInputStream()V" since="18"/> + <method name="start()V"/> + <method name="stop()V"/> + <field name="BUFFER_FLAG_CODEC_CONFIG"/> + <field name="BUFFER_FLAG_END_OF_STREAM"/> + <field name="BUFFER_FLAG_KEY_FRAME" since="21"/> + <field name="BUFFER_FLAG_PARTIAL_FRAME" since="26"/> + <field name="BUFFER_FLAG_SYNC_FRAME" deprecated="21"/> + <field name="CONFIGURE_FLAG_ENCODE"/> + <field name="CRYPTO_MODE_AES_CBC" since="24"/> + <field name="CRYPTO_MODE_AES_CTR"/> + <field name="CRYPTO_MODE_UNENCRYPTED"/> + <field name="INFO_OUTPUT_BUFFERS_CHANGED" deprecated="21"/> + <field name="INFO_OUTPUT_FORMAT_CHANGED"/> + <field name="INFO_TRY_AGAIN_LATER"/> + <field name="PARAMETER_KEY_REQUEST_SYNC_FRAME" since="19"/> + <field name="PARAMETER_KEY_SUSPEND" since="19"/> + <field name="PARAMETER_KEY_VIDEO_BITRATE" since="19"/> + <field name="VIDEO_SCALING_MODE_SCALE_TO_FIT"/> + <field name="VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING"/> + </class> + <class name="android/media/MediaCodec$BufferInfo" since="16"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="set(IIJI)V"/> + <field name="flags"/> + <field name="offset"/> + <field name="presentationTimeUs"/> + <field name="size"/> + </class> + <class name="android/media/MediaCodec$Callback" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onError(Landroid/media/MediaCodec;Landroid/media/MediaCodec$CodecException;)V"/> + <method name="onInputBufferAvailable(Landroid/media/MediaCodec;I)V"/> + <method name="onOutputBufferAvailable(Landroid/media/MediaCodec;ILandroid/media/MediaCodec$BufferInfo;)V"/> + <method name="onOutputFormatChanged(Landroid/media/MediaCodec;Landroid/media/MediaFormat;)V"/> + </class> + <class name="android/media/MediaCodec$CodecException" since="21"> + <extends name="java/lang/IllegalStateException"/> + <method name="<init>()V"/> + <method name="getDiagnosticInfo()Ljava/lang/String;"/> + <method name="getErrorCode()I" since="23"/> + <method name="isRecoverable()Z"/> + <method name="isTransient()Z"/> + <field name="ERROR_INSUFFICIENT_RESOURCE" since="23"/> + <field name="ERROR_RECLAIMED" since="23"/> + </class> + <class name="android/media/MediaCodec$CryptoException" since="16"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>(ILjava/lang/String;)V"/> + <method name="getErrorCode()I"/> + <field name="ERROR_INSUFFICIENT_OUTPUT_PROTECTION" since="21"/> + <field name="ERROR_KEY_EXPIRED" since="19"/> + <field name="ERROR_NO_KEY" since="19"/> + <field name="ERROR_RESOURCE_BUSY" since="19"/> + <field name="ERROR_SESSION_NOT_OPENED" since="23"/> + <field name="ERROR_UNSUPPORTED_OPERATION" since="24"/> + </class> + <class name="android/media/MediaCodec$CryptoInfo" since="16"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="set(I[I[I[B[BI)V"/> + <method name="setPattern(Landroid/media/MediaCodec$CryptoInfo$Pattern;)V" since="24"/> + <field name="iv"/> + <field name="key"/> + <field name="mode"/> + <field name="numBytesOfClearData"/> + <field name="numBytesOfEncryptedData"/> + <field name="numSubSamples"/> + </class> + <class name="android/media/MediaCodec$CryptoInfo$Pattern" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>(II)V"/> + <method name="getEncryptBlocks()I"/> + <method name="getSkipBlocks()I"/> + <method name="set(II)V"/> + </class> + <class name="android/media/MediaCodec$MetricsConstants" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="CODEC"/> + <field name="ENCODER"/> + <field name="HEIGHT"/> + <field name="MIME_TYPE"/> + <field name="MODE"/> + <field name="MODE_AUDIO"/> + <field name="MODE_VIDEO"/> + <field name="ROTATION"/> + <field name="SECURE"/> + <field name="WIDTH"/> + </class> + <class name="android/media/MediaCodec$OnFrameRenderedListener" since="23"> + <extends name="java/lang/Object"/> + <method name="onFrameRendered(Landroid/media/MediaCodec;JJ)V"/> + </class> + <class name="android/media/MediaCodecInfo" since="16"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getCapabilitiesForType(Ljava/lang/String;)Landroid/media/MediaCodecInfo$CodecCapabilities;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getSupportedTypes()[Ljava/lang/String;"/> + <method name="isEncoder()Z"/> + </class> + <class name="android/media/MediaCodecInfo$AudioCapabilities" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getBitrateRange()Landroid/util/Range;"/> + <method name="getMaxInputChannelCount()I"/> + <method name="getSupportedSampleRateRanges()[Landroid/util/Range;"/> + <method name="getSupportedSampleRates()[I"/> + <method name="isSampleRateSupported(I)Z"/> + </class> + <class name="android/media/MediaCodecInfo$CodecCapabilities" since="16"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="createFromProfileLevel(Ljava/lang/String;II)Landroid/media/MediaCodecInfo$CodecCapabilities;" since="21"/> + <method name="getAudioCapabilities()Landroid/media/MediaCodecInfo$AudioCapabilities;" since="21"/> + <method name="getDefaultFormat()Landroid/media/MediaFormat;" since="21"/> + <method name="getEncoderCapabilities()Landroid/media/MediaCodecInfo$EncoderCapabilities;" since="21"/> + <method name="getMaxSupportedInstances()I" since="23"/> + <method name="getMimeType()Ljava/lang/String;" since="21"/> + <method name="getVideoCapabilities()Landroid/media/MediaCodecInfo$VideoCapabilities;" since="21"/> + <method name="isFeatureRequired(Ljava/lang/String;)Z" since="21"/> + <method name="isFeatureSupported(Ljava/lang/String;)Z" since="19"/> + <method name="isFormatSupported(Landroid/media/MediaFormat;)Z" since="21"/> + <field name="COLOR_Format12bitRGB444" deprecated="23"/> + <field name="COLOR_Format16bitARGB1555" deprecated="23"/> + <field name="COLOR_Format16bitARGB4444" deprecated="23"/> + <field name="COLOR_Format16bitBGR565" deprecated="23"/> + <field name="COLOR_Format16bitRGB565"/> + <field name="COLOR_Format18BitBGR666" deprecated="23"/> + <field name="COLOR_Format18bitARGB1665" deprecated="23"/> + <field name="COLOR_Format18bitRGB666" deprecated="23"/> + <field name="COLOR_Format19bitARGB1666" deprecated="23"/> + <field name="COLOR_Format24BitABGR6666" deprecated="23"/> + <field name="COLOR_Format24BitARGB6666" deprecated="23"/> + <field name="COLOR_Format24bitARGB1887" deprecated="23"/> + <field name="COLOR_Format24bitBGR888"/> + <field name="COLOR_Format24bitRGB888" deprecated="23"/> + <field name="COLOR_Format25bitARGB1888" deprecated="23"/> + <field name="COLOR_Format32bitABGR8888" since="23"/> + <field name="COLOR_Format32bitARGB8888" deprecated="23"/> + <field name="COLOR_Format32bitBGRA8888" deprecated="23"/> + <field name="COLOR_Format8bitRGB332" deprecated="23"/> + <field name="COLOR_FormatCbYCrY" deprecated="23"/> + <field name="COLOR_FormatCrYCbY" deprecated="23"/> + <field name="COLOR_FormatL16"/> + <field name="COLOR_FormatL2" deprecated="23"/> + <field name="COLOR_FormatL24" deprecated="23"/> + <field name="COLOR_FormatL32" deprecated="23"/> + <field name="COLOR_FormatL4" deprecated="23"/> + <field name="COLOR_FormatL8"/> + <field name="COLOR_FormatMonochrome" deprecated="23"/> + <field name="COLOR_FormatRGBAFlexible" since="23"/> + <field name="COLOR_FormatRGBFlexible" since="23"/> + <field name="COLOR_FormatRawBayer10bit"/> + <field name="COLOR_FormatRawBayer8bit"/> + <field name="COLOR_FormatRawBayer8bitcompressed"/> + <field name="COLOR_FormatSurface" since="18"/> + <field name="COLOR_FormatYCbYCr" deprecated="23"/> + <field name="COLOR_FormatYCrYCb" deprecated="23"/> + <field name="COLOR_FormatYUV411PackedPlanar" deprecated="23"/> + <field name="COLOR_FormatYUV411Planar" deprecated="23"/> + <field name="COLOR_FormatYUV420Flexible" since="21"/> + <field name="COLOR_FormatYUV420PackedPlanar" deprecated="23"/> + <field name="COLOR_FormatYUV420PackedSemiPlanar" deprecated="23"/> + <field name="COLOR_FormatYUV420Planar" deprecated="23"/> + <field name="COLOR_FormatYUV420SemiPlanar" deprecated="23"/> + <field name="COLOR_FormatYUV422Flexible" since="23"/> + <field name="COLOR_FormatYUV422PackedPlanar" deprecated="23"/> + <field name="COLOR_FormatYUV422PackedSemiPlanar" deprecated="23"/> + <field name="COLOR_FormatYUV422Planar" deprecated="23"/> + <field name="COLOR_FormatYUV422SemiPlanar" deprecated="23"/> + <field name="COLOR_FormatYUV444Flexible" since="23"/> + <field name="COLOR_FormatYUV444Interleaved" deprecated="23"/> + <field name="COLOR_QCOM_FormatYUV420SemiPlanar" deprecated="23"/> + <field name="COLOR_TI_FormatYUV420PackedSemiPlanar" deprecated="23"/> + <field name="FEATURE_AdaptivePlayback" since="19"/> + <field name="FEATURE_IntraRefresh" since="24"/> + <field name="FEATURE_PartialFrame" since="26"/> + <field name="FEATURE_SecurePlayback" since="21"/> + <field name="FEATURE_TunneledPlayback" since="21"/> + <field name="colorFormats"/> + <field name="profileLevels"/> + </class> + <class name="android/media/MediaCodecInfo$CodecProfileLevel" since="16"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="AACObjectELD"/> + <field name="AACObjectERLC"/> + <field name="AACObjectERScalable" since="26"/> + <field name="AACObjectHE"/> + <field name="AACObjectHE_PS"/> + <field name="AACObjectLC"/> + <field name="AACObjectLD"/> + <field name="AACObjectLTP"/> + <field name="AACObjectMain"/> + <field name="AACObjectSSR"/> + <field name="AACObjectScalable"/> + <field name="AVCLevel1"/> + <field name="AVCLevel11"/> + <field name="AVCLevel12"/> + <field name="AVCLevel13"/> + <field name="AVCLevel1b"/> + <field name="AVCLevel2"/> + <field name="AVCLevel21"/> + <field name="AVCLevel22"/> + <field name="AVCLevel3"/> + <field name="AVCLevel31"/> + <field name="AVCLevel32"/> + <field name="AVCLevel4"/> + <field name="AVCLevel41"/> + <field name="AVCLevel42"/> + <field name="AVCLevel5"/> + <field name="AVCLevel51"/> + <field name="AVCLevel52" since="21"/> + <field name="AVCProfileBaseline"/> + <field name="AVCProfileExtended"/> + <field name="AVCProfileHigh"/> + <field name="AVCProfileHigh10"/> + <field name="AVCProfileHigh422"/> + <field name="AVCProfileHigh444"/> + <field name="AVCProfileMain"/> + <field name="DolbyVisionLevelFhd24" since="24"/> + <field name="DolbyVisionLevelFhd30" since="24"/> + <field name="DolbyVisionLevelFhd60" since="24"/> + <field name="DolbyVisionLevelHd24" since="24"/> + <field name="DolbyVisionLevelHd30" since="24"/> + <field name="DolbyVisionLevelUhd24" since="24"/> + <field name="DolbyVisionLevelUhd30" since="24"/> + <field name="DolbyVisionLevelUhd48" since="24"/> + <field name="DolbyVisionLevelUhd60" since="24"/> + <field name="DolbyVisionProfileDvavPen" since="24"/> + <field name="DolbyVisionProfileDvavPer" since="24"/> + <field name="DolbyVisionProfileDvheDen" since="24"/> + <field name="DolbyVisionProfileDvheDer" since="24"/> + <field name="DolbyVisionProfileDvheDtb" since="24"/> + <field name="DolbyVisionProfileDvheDth" since="24"/> + <field name="DolbyVisionProfileDvheDtr" since="24"/> + <field name="DolbyVisionProfileDvheStn" since="24"/> + <field name="H263Level10"/> + <field name="H263Level20"/> + <field name="H263Level30"/> + <field name="H263Level40"/> + <field name="H263Level45"/> + <field name="H263Level50"/> + <field name="H263Level60"/> + <field name="H263Level70"/> + <field name="H263ProfileBackwardCompatible"/> + <field name="H263ProfileBaseline"/> + <field name="H263ProfileH320Coding"/> + <field name="H263ProfileHighCompression"/> + <field name="H263ProfileHighLatency"/> + <field name="H263ProfileISWV2"/> + <field name="H263ProfileISWV3"/> + <field name="H263ProfileInterlace"/> + <field name="H263ProfileInternet"/> + <field name="HEVCHighTierLevel1" since="21"/> + <field name="HEVCHighTierLevel2" since="21"/> + <field name="HEVCHighTierLevel21" since="21"/> + <field name="HEVCHighTierLevel3" since="21"/> + <field name="HEVCHighTierLevel31" since="21"/> + <field name="HEVCHighTierLevel4" since="21"/> + <field name="HEVCHighTierLevel41" since="21"/> + <field name="HEVCHighTierLevel5" since="21"/> + <field name="HEVCHighTierLevel51" since="21"/> + <field name="HEVCHighTierLevel52" since="21"/> + <field name="HEVCHighTierLevel6" since="21"/> + <field name="HEVCHighTierLevel61" since="21"/> + <field name="HEVCHighTierLevel62" since="21"/> + <field name="HEVCMainTierLevel1" since="21"/> + <field name="HEVCMainTierLevel2" since="21"/> + <field name="HEVCMainTierLevel21" since="21"/> + <field name="HEVCMainTierLevel3" since="21"/> + <field name="HEVCMainTierLevel31" since="21"/> + <field name="HEVCMainTierLevel4" since="21"/> + <field name="HEVCMainTierLevel41" since="21"/> + <field name="HEVCMainTierLevel5" since="21"/> + <field name="HEVCMainTierLevel51" since="21"/> + <field name="HEVCMainTierLevel52" since="21"/> + <field name="HEVCMainTierLevel6" since="21"/> + <field name="HEVCMainTierLevel61" since="21"/> + <field name="HEVCMainTierLevel62" since="21"/> + <field name="HEVCProfileMain" since="21"/> + <field name="HEVCProfileMain10" since="21"/> + <field name="HEVCProfileMain10HDR10" since="24"/> + <field name="MPEG2LevelH14" since="23"/> + <field name="MPEG2LevelHL" since="23"/> + <field name="MPEG2LevelHP" since="24"/> + <field name="MPEG2LevelLL" since="23"/> + <field name="MPEG2LevelML" since="23"/> + <field name="MPEG2Profile422" since="23"/> + <field name="MPEG2ProfileHigh" since="23"/> + <field name="MPEG2ProfileMain" since="23"/> + <field name="MPEG2ProfileSNR" since="23"/> + <field name="MPEG2ProfileSimple" since="23"/> + <field name="MPEG2ProfileSpatial" since="23"/> + <field name="MPEG4Level0"/> + <field name="MPEG4Level0b"/> + <field name="MPEG4Level1"/> + <field name="MPEG4Level2"/> + <field name="MPEG4Level3"/> + <field name="MPEG4Level3b" since="24"/> + <field name="MPEG4Level4"/> + <field name="MPEG4Level4a"/> + <field name="MPEG4Level5"/> + <field name="MPEG4Level6" since="24"/> + <field name="MPEG4ProfileAdvancedCoding"/> + <field name="MPEG4ProfileAdvancedCore"/> + <field name="MPEG4ProfileAdvancedRealTime"/> + <field name="MPEG4ProfileAdvancedScalable"/> + <field name="MPEG4ProfileAdvancedSimple"/> + <field name="MPEG4ProfileBasicAnimated"/> + <field name="MPEG4ProfileCore"/> + <field name="MPEG4ProfileCoreScalable"/> + <field name="MPEG4ProfileHybrid"/> + <field name="MPEG4ProfileMain"/> + <field name="MPEG4ProfileNbit"/> + <field name="MPEG4ProfileScalableTexture"/> + <field name="MPEG4ProfileSimple"/> + <field name="MPEG4ProfileSimpleFBA"/> + <field name="MPEG4ProfileSimpleFace"/> + <field name="MPEG4ProfileSimpleScalable"/> + <field name="VP8Level_Version0" since="18"/> + <field name="VP8Level_Version1" since="18"/> + <field name="VP8Level_Version2" since="18"/> + <field name="VP8Level_Version3" since="18"/> + <field name="VP8ProfileMain" since="18"/> + <field name="VP9Level1" since="24"/> + <field name="VP9Level11" since="24"/> + <field name="VP9Level2" since="24"/> + <field name="VP9Level21" since="24"/> + <field name="VP9Level3" since="24"/> + <field name="VP9Level31" since="24"/> + <field name="VP9Level4" since="24"/> + <field name="VP9Level41" since="24"/> + <field name="VP9Level5" since="24"/> + <field name="VP9Level51" since="24"/> + <field name="VP9Level52" since="24"/> + <field name="VP9Level6" since="24"/> + <field name="VP9Level61" since="24"/> + <field name="VP9Level62" since="24"/> + <field name="VP9Profile0" since="24"/> + <field name="VP9Profile1" since="24"/> + <field name="VP9Profile2" since="24"/> + <field name="VP9Profile2HDR" since="24"/> + <field name="VP9Profile3" since="24"/> + <field name="VP9Profile3HDR" since="24"/> + <field name="level"/> + <field name="profile"/> + </class> + <class name="android/media/MediaCodecInfo$EncoderCapabilities" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getComplexityRange()Landroid/util/Range;"/> + <method name="isBitrateModeSupported(I)Z"/> + <field name="BITRATE_MODE_CBR"/> + <field name="BITRATE_MODE_CQ"/> + <field name="BITRATE_MODE_VBR"/> + </class> + <class name="android/media/MediaCodecInfo$VideoCapabilities" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="areSizeAndRateSupported(IID)Z"/> + <method name="getAchievableFrameRatesFor(II)Landroid/util/Range;" since="23"/> + <method name="getBitrateRange()Landroid/util/Range;"/> + <method name="getHeightAlignment()I"/> + <method name="getSupportedFrameRates()Landroid/util/Range;"/> + <method name="getSupportedFrameRatesFor(II)Landroid/util/Range;"/> + <method name="getSupportedHeights()Landroid/util/Range;"/> + <method name="getSupportedHeightsFor(I)Landroid/util/Range;"/> + <method name="getSupportedWidths()Landroid/util/Range;"/> + <method name="getSupportedWidthsFor(I)Landroid/util/Range;"/> + <method name="getWidthAlignment()I"/> + <method name="isSizeSupported(II)Z"/> + </class> + <class name="android/media/MediaCodecList" since="16"> + <extends name="java/lang/Object"/> + <method name="<init>()V" removed="21"/> + <method name="<init>(I)V" since="21"/> + <method name="findDecoderForFormat(Landroid/media/MediaFormat;)Ljava/lang/String;" since="21"/> + <method name="findEncoderForFormat(Landroid/media/MediaFormat;)Ljava/lang/String;" since="21"/> + <method name="getCodecCount()I" deprecated="21"/> + <method name="getCodecInfoAt(I)Landroid/media/MediaCodecInfo;" deprecated="21"/> + <method name="getCodecInfos()[Landroid/media/MediaCodecInfo;" since="21"/> + <field name="ALL_CODECS" since="21"/> + <field name="REGULAR_CODECS" since="21"/> + </class> + <class name="android/media/MediaCrypto" since="16"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/util/UUID;[B)V"/> + <method name="isCryptoSchemeSupported(Ljava/util/UUID;)Z"/> + <method name="release()V"/> + <method name="requiresSecureDecoderComponent(Ljava/lang/String;)Z"/> + <method name="setMediaDrmSession([B)V" since="23"/> + </class> + <class name="android/media/MediaCryptoException" since="16"> + <extends name="java/lang/Exception"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/media/MediaDataSource" since="23"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable"/> + <method name="<init>()V"/> + <method name="getSize()J"/> + <method name="readAt(J[BII)I"/> + </class> + <class name="android/media/MediaDescrambler" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable"/> + <method name="<init>(I)V"/> + <method name="descramble(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;Landroid/media/MediaCodec$CryptoInfo;)I"/> + <method name="requiresSecureDecoderComponent(Ljava/lang/String;)Z"/> + <method name="setMediaCasSession(Landroid/media/MediaCas$Session;)V"/> + </class> + <class name="android/media/MediaDescription" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getDescription()Ljava/lang/CharSequence;"/> + <method name="getExtras()Landroid/os/Bundle;"/> + <method name="getIconBitmap()Landroid/graphics/Bitmap;"/> + <method name="getIconUri()Landroid/net/Uri;"/> + <method name="getMediaId()Ljava/lang/String;"/> + <method name="getMediaUri()Landroid/net/Uri;" since="23"/> + <method name="getSubtitle()Ljava/lang/CharSequence;"/> + <method name="getTitle()Ljava/lang/CharSequence;"/> + <field name="BT_FOLDER_TYPE_ALBUMS" since="26"/> + <field name="BT_FOLDER_TYPE_ARTISTS" since="26"/> + <field name="BT_FOLDER_TYPE_GENRES" since="26"/> + <field name="BT_FOLDER_TYPE_MIXED" since="26"/> + <field name="BT_FOLDER_TYPE_PLAYLISTS" since="26"/> + <field name="BT_FOLDER_TYPE_TITLES" since="26"/> + <field name="BT_FOLDER_TYPE_YEARS" since="26"/> + <field name="CREATOR"/> + <field name="EXTRA_BT_FOLDER_TYPE" since="26"/> + </class> + <class name="android/media/MediaDescription$Builder" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="build()Landroid/media/MediaDescription;"/> + <method name="setDescription(Ljava/lang/CharSequence;)Landroid/media/MediaDescription$Builder;"/> + <method name="setExtras(Landroid/os/Bundle;)Landroid/media/MediaDescription$Builder;"/> + <method name="setIconBitmap(Landroid/graphics/Bitmap;)Landroid/media/MediaDescription$Builder;"/> + <method name="setIconUri(Landroid/net/Uri;)Landroid/media/MediaDescription$Builder;"/> + <method name="setMediaId(Ljava/lang/String;)Landroid/media/MediaDescription$Builder;"/> + <method name="setMediaUri(Landroid/net/Uri;)Landroid/media/MediaDescription$Builder;" since="23"/> + <method name="setSubtitle(Ljava/lang/CharSequence;)Landroid/media/MediaDescription$Builder;"/> + <method name="setTitle(Ljava/lang/CharSequence;)Landroid/media/MediaDescription$Builder;"/> + </class> + <class name="android/media/MediaDrm" since="18"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/util/UUID;)V"/> + <method name="closeSession([B)V"/> + <method name="getCryptoSession([BLjava/lang/String;Ljava/lang/String;)Landroid/media/MediaDrm$CryptoSession;"/> + <method name="getKeyRequest([B[BLjava/lang/String;ILjava/util/HashMap;)Landroid/media/MediaDrm$KeyRequest;"/> + <method name="getPropertyByteArray(Ljava/lang/String;)[B"/> + <method name="getPropertyString(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getProvisionRequest()Landroid/media/MediaDrm$ProvisionRequest;"/> + <method name="getSecureStop([B)[B" since="22"/> + <method name="getSecureStops()Ljava/util/List;"/> + <method name="isCryptoSchemeSupported(Ljava/util/UUID;)Z"/> + <method name="isCryptoSchemeSupported(Ljava/util/UUID;Ljava/lang/String;)Z" since="19"/> + <method name="openSession()[B"/> + <method name="provideKeyResponse([B[B)[B"/> + <method name="provideProvisionResponse([B)V"/> + <method name="queryKeyStatus([B)Ljava/util/HashMap;"/> + <method name="release()V"/> + <method name="releaseAllSecureStops()V" since="22"/> + <method name="releaseSecureStops([B)V"/> + <method name="removeKeys([B)V"/> + <method name="restoreKeys([B[B)V"/> + <method name="setOnEventListener(Landroid/media/MediaDrm$OnEventListener;)V"/> + <method name="setOnExpirationUpdateListener(Landroid/media/MediaDrm$OnExpirationUpdateListener;Landroid/os/Handler;)V" since="23"/> + <method name="setOnKeyStatusChangeListener(Landroid/media/MediaDrm$OnKeyStatusChangeListener;Landroid/os/Handler;)V" since="23"/> + <method name="setPropertyByteArray(Ljava/lang/String;[B)V"/> + <method name="setPropertyString(Ljava/lang/String;Ljava/lang/String;)V"/> + <field name="EVENT_KEY_EXPIRED" deprecated="26"/> + <field name="EVENT_KEY_REQUIRED"/> + <field name="EVENT_PROVISION_REQUIRED" deprecated="23"/> + <field name="EVENT_SESSION_RECLAIMED" since="23"/> + <field name="EVENT_VENDOR_DEFINED"/> + <field name="KEY_TYPE_OFFLINE"/> + <field name="KEY_TYPE_RELEASE"/> + <field name="KEY_TYPE_STREAMING"/> + <field name="PROPERTY_ALGORITHMS"/> + <field name="PROPERTY_DESCRIPTION"/> + <field name="PROPERTY_DEVICE_UNIQUE_ID"/> + <field name="PROPERTY_VENDOR"/> + <field name="PROPERTY_VERSION"/> + </class> + <class name="android/media/MediaDrm$CryptoSession" since="18"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/media/MediaDrm;)V"/> + <method name="decrypt([B[B[B)[B"/> + <method name="encrypt([B[B[B)[B"/> + <method name="sign([B[B)[B"/> + <method name="verify([B[B[B)Z"/> + </class> + <class name="android/media/MediaDrm$KeyRequest" since="18"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getData()[B"/> + <method name="getDefaultUrl()Ljava/lang/String;"/> + <method name="getRequestType()I" since="23"/> + <field name="REQUEST_TYPE_INITIAL" since="23"/> + <field name="REQUEST_TYPE_RELEASE" since="23"/> + <field name="REQUEST_TYPE_RENEWAL" since="23"/> + </class> + <class name="android/media/MediaDrm$KeyStatus" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getKeyId()[B"/> + <method name="getStatusCode()I"/> + <field name="STATUS_EXPIRED"/> + <field name="STATUS_INTERNAL_ERROR"/> + <field name="STATUS_OUTPUT_NOT_ALLOWED"/> + <field name="STATUS_PENDING"/> + <field name="STATUS_USABLE"/> + </class> + <class name="android/media/MediaDrm$MediaDrmStateException" since="21"> + <extends name="java/lang/IllegalStateException"/> + <method name="<init>()V"/> + <method name="getDiagnosticInfo()Ljava/lang/String;"/> + </class> + <class name="android/media/MediaDrm$OnEventListener" since="18"> + <extends name="java/lang/Object"/> + <method name="onEvent(Landroid/media/MediaDrm;[BII[B)V"/> + </class> + <class name="android/media/MediaDrm$OnExpirationUpdateListener" since="23"> + <extends name="java/lang/Object"/> + <method name="onExpirationUpdate(Landroid/media/MediaDrm;[BJ)V"/> + </class> + <class name="android/media/MediaDrm$OnKeyStatusChangeListener" since="23"> + <extends name="java/lang/Object"/> + <method name="onKeyStatusChange(Landroid/media/MediaDrm;[BLjava/util/List;Z)V"/> + </class> + <class name="android/media/MediaDrm$ProvisionRequest" since="18"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getData()[B"/> + <method name="getDefaultUrl()Ljava/lang/String;"/> + </class> + <class name="android/media/MediaDrmException" since="18"> + <extends name="java/lang/Exception"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/media/MediaDrmResetException" since="23"> + <extends name="java/lang/IllegalStateException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/media/MediaExtractor" since="16"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="advance()Z"/> + <method name="getCachedDuration()J"/> + <method name="getCasInfo(I)Landroid/media/MediaExtractor$CasInfo;" since="26"/> + <method name="getDrmInitData()Landroid/media/DrmInitData;" since="24"/> + <method name="getMetrics()Landroid/os/PersistableBundle;" since="26"/> + <method name="getPsshInfo()Ljava/util/Map;" since="18"/> + <method name="getSampleCryptoInfo(Landroid/media/MediaCodec$CryptoInfo;)Z"/> + <method name="getSampleFlags()I"/> + <method name="getSampleTime()J"/> + <method name="getSampleTrackIndex()I"/> + <method name="getTrackCount()I"/> + <method name="getTrackFormat(I)Landroid/media/MediaFormat;"/> + <method name="hasCacheReachedEndOfStream()Z"/> + <method name="readSampleData(Ljava/nio/ByteBuffer;I)I"/> + <method name="release()V"/> + <method name="seekTo(JI)V"/> + <method name="selectTrack(I)V"/> + <method name="setDataSource(Landroid/content/Context;Landroid/net/Uri;Ljava/util/Map;)V"/> + <method name="setDataSource(Landroid/content/res/AssetFileDescriptor;)V" since="24"/> + <method name="setDataSource(Landroid/media/MediaDataSource;)V" since="23"/> + <method name="setDataSource(Ljava/io/FileDescriptor;)V"/> + <method name="setDataSource(Ljava/io/FileDescriptor;JJ)V"/> + <method name="setDataSource(Ljava/lang/String;)V"/> + <method name="setDataSource(Ljava/lang/String;Ljava/util/Map;)V"/> + <method name="setMediaCas(Landroid/media/MediaCas;)V" since="26"/> + <method name="unselectTrack(I)V"/> + <field name="SAMPLE_FLAG_ENCRYPTED"/> + <field name="SAMPLE_FLAG_PARTIAL_FRAME" since="26"/> + <field name="SAMPLE_FLAG_SYNC"/> + <field name="SEEK_TO_CLOSEST_SYNC"/> + <field name="SEEK_TO_NEXT_SYNC"/> + <field name="SEEK_TO_PREVIOUS_SYNC"/> + </class> + <class name="android/media/MediaExtractor$CasInfo" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getSession()Landroid/media/MediaCas$Session;"/> + <method name="getSystemId()I"/> + </class> + <class name="android/media/MediaExtractor$MetricsConstants" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="FORMAT"/> + <field name="MIME_TYPE"/> + <field name="TRACKS"/> + </class> + <class name="android/media/MediaFormat" since="16"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="containsKey(Ljava/lang/String;)Z"/> + <method name="createAudioFormat(Ljava/lang/String;II)Landroid/media/MediaFormat;"/> + <method name="createSubtitleFormat(Ljava/lang/String;Ljava/lang/String;)Landroid/media/MediaFormat;" since="19"/> + <method name="createVideoFormat(Ljava/lang/String;II)Landroid/media/MediaFormat;"/> + <method name="getByteBuffer(Ljava/lang/String;)Ljava/nio/ByteBuffer;"/> + <method name="getFeatureEnabled(Ljava/lang/String;)Z" since="21"/> + <method name="getFloat(Ljava/lang/String;)F"/> + <method name="getInteger(Ljava/lang/String;)I"/> + <method name="getLong(Ljava/lang/String;)J"/> + <method name="getString(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="setByteBuffer(Ljava/lang/String;Ljava/nio/ByteBuffer;)V"/> + <method name="setFeatureEnabled(Ljava/lang/String;Z)V" since="21"/> + <method name="setFloat(Ljava/lang/String;F)V"/> + <method name="setInteger(Ljava/lang/String;I)V"/> + <method name="setLong(Ljava/lang/String;J)V"/> + <method name="setString(Ljava/lang/String;Ljava/lang/String;)V"/> + <field name="COLOR_RANGE_FULL" since="24"/> + <field name="COLOR_RANGE_LIMITED" since="24"/> + <field name="COLOR_STANDARD_BT2020" since="24"/> + <field name="COLOR_STANDARD_BT601_NTSC" since="24"/> + <field name="COLOR_STANDARD_BT601_PAL" since="24"/> + <field name="COLOR_STANDARD_BT709" since="24"/> + <field name="COLOR_TRANSFER_HLG" since="24"/> + <field name="COLOR_TRANSFER_LINEAR" since="24"/> + <field name="COLOR_TRANSFER_SDR_VIDEO" since="24"/> + <field name="COLOR_TRANSFER_ST2084" since="24"/> + <field name="KEY_AAC_DRC_ATTENUATION_FACTOR" since="21"/> + <field name="KEY_AAC_DRC_BOOST_FACTOR" since="21"/> + <field name="KEY_AAC_DRC_HEAVY_COMPRESSION" since="21"/> + <field name="KEY_AAC_DRC_TARGET_REFERENCE_LEVEL" since="21"/> + <field name="KEY_AAC_ENCODED_TARGET_LEVEL" since="21"/> + <field name="KEY_AAC_MAX_OUTPUT_CHANNEL_COUNT" since="21"/> + <field name="KEY_AAC_PROFILE"/> + <field name="KEY_AAC_SBR_MODE" since="21"/> + <field name="KEY_AUDIO_SESSION_ID" since="21"/> + <field name="KEY_BITRATE_MODE" since="21"/> + <field name="KEY_BIT_RATE"/> + <field name="KEY_CAPTURE_RATE" since="21"/> + <field name="KEY_CHANNEL_COUNT"/> + <field name="KEY_CHANNEL_MASK"/> + <field name="KEY_COLOR_FORMAT"/> + <field name="KEY_COLOR_RANGE" since="24"/> + <field name="KEY_COLOR_STANDARD" since="24"/> + <field name="KEY_COLOR_TRANSFER" since="24"/> + <field name="KEY_COMPLEXITY" since="21"/> + <field name="KEY_DURATION"/> + <field name="KEY_FLAC_COMPRESSION_LEVEL"/> + <field name="KEY_FRAME_RATE"/> + <field name="KEY_HDR_STATIC_INFO" since="24"/> + <field name="KEY_HEIGHT"/> + <field name="KEY_INTRA_REFRESH_PERIOD" since="24"/> + <field name="KEY_IS_ADTS"/> + <field name="KEY_IS_AUTOSELECT" since="19"/> + <field name="KEY_IS_DEFAULT" since="19"/> + <field name="KEY_IS_FORCED_SUBTITLE" since="19"/> + <field name="KEY_I_FRAME_INTERVAL"/> + <field name="KEY_LANGUAGE" since="19"/> + <field name="KEY_LATENCY" since="26"/> + <field name="KEY_LEVEL" since="23"/> + <field name="KEY_MAX_HEIGHT" since="19"/> + <field name="KEY_MAX_INPUT_SIZE"/> + <field name="KEY_MAX_WIDTH" since="19"/> + <field name="KEY_MIME"/> + <field name="KEY_OPERATING_RATE" since="23"/> + <field name="KEY_PCM_ENCODING" since="24"/> + <field name="KEY_PRIORITY" since="23"/> + <field name="KEY_PROFILE" since="21"/> + <field name="KEY_PUSH_BLANK_BUFFERS_ON_STOP" since="19"/> + <field name="KEY_REPEAT_PREVIOUS_FRAME_AFTER" since="19"/> + <field name="KEY_ROTATION" since="23"/> + <field name="KEY_SAMPLE_RATE"/> + <field name="KEY_SLICE_HEIGHT" since="23"/> + <field name="KEY_STRIDE" since="23"/> + <field name="KEY_TEMPORAL_LAYERING" since="21"/> + <field name="KEY_TRACK_ID" since="24"/> + <field name="KEY_WIDTH"/> + <field name="MIMETYPE_AUDIO_AAC" since="21"/> + <field name="MIMETYPE_AUDIO_AC3" since="21"/> + <field name="MIMETYPE_AUDIO_AMR_NB" since="21"/> + <field name="MIMETYPE_AUDIO_AMR_WB" since="21"/> + <field name="MIMETYPE_AUDIO_EAC3" since="23"/> + <field name="MIMETYPE_AUDIO_FLAC" since="21"/> + <field name="MIMETYPE_AUDIO_G711_ALAW" since="21"/> + <field name="MIMETYPE_AUDIO_G711_MLAW" since="21"/> + <field name="MIMETYPE_AUDIO_MPEG" since="21"/> + <field name="MIMETYPE_AUDIO_MSGSM" since="21"/> + <field name="MIMETYPE_AUDIO_OPUS" since="21"/> + <field name="MIMETYPE_AUDIO_QCELP" since="21"/> + <field name="MIMETYPE_AUDIO_RAW" since="21"/> + <field name="MIMETYPE_AUDIO_SCRAMBLED" since="26"/> + <field name="MIMETYPE_AUDIO_VORBIS" since="21"/> + <field name="MIMETYPE_TEXT_CEA_608" since="21"/> + <field name="MIMETYPE_TEXT_VTT" since="21"/> + <field name="MIMETYPE_VIDEO_AVC" since="21"/> + <field name="MIMETYPE_VIDEO_DOLBY_VISION" since="24"/> + <field name="MIMETYPE_VIDEO_H263" since="21"/> + <field name="MIMETYPE_VIDEO_HEVC" since="21"/> + <field name="MIMETYPE_VIDEO_MPEG2" since="21"/> + <field name="MIMETYPE_VIDEO_MPEG4" since="21"/> + <field name="MIMETYPE_VIDEO_RAW" since="21"/> + <field name="MIMETYPE_VIDEO_SCRAMBLED" since="26"/> + <field name="MIMETYPE_VIDEO_VP8" since="21"/> + <field name="MIMETYPE_VIDEO_VP9" since="21"/> + </class> + <class name="android/media/MediaMetadata" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="containsKey(Ljava/lang/String;)Z"/> + <method name="getBitmap(Ljava/lang/String;)Landroid/graphics/Bitmap;"/> + <method name="getDescription()Landroid/media/MediaDescription;"/> + <method name="getLong(Ljava/lang/String;)J"/> + <method name="getRating(Ljava/lang/String;)Landroid/media/Rating;"/> + <method name="getString(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getText(Ljava/lang/String;)Ljava/lang/CharSequence;"/> + <method name="keySet()Ljava/util/Set;"/> + <method name="size()I"/> + <field name="CREATOR"/> + <field name="METADATA_KEY_ALBUM"/> + <field name="METADATA_KEY_ALBUM_ART"/> + <field name="METADATA_KEY_ALBUM_ARTIST"/> + <field name="METADATA_KEY_ALBUM_ART_URI"/> + <field name="METADATA_KEY_ART"/> + <field name="METADATA_KEY_ARTIST"/> + <field name="METADATA_KEY_ART_URI"/> + <field name="METADATA_KEY_AUTHOR"/> + <field name="METADATA_KEY_BT_FOLDER_TYPE" since="26"/> + <field name="METADATA_KEY_COMPILATION"/> + <field name="METADATA_KEY_COMPOSER"/> + <field name="METADATA_KEY_DATE"/> + <field name="METADATA_KEY_DISC_NUMBER"/> + <field name="METADATA_KEY_DISPLAY_DESCRIPTION"/> + <field name="METADATA_KEY_DISPLAY_ICON"/> + <field name="METADATA_KEY_DISPLAY_ICON_URI"/> + <field name="METADATA_KEY_DISPLAY_SUBTITLE"/> + <field name="METADATA_KEY_DISPLAY_TITLE"/> + <field name="METADATA_KEY_DURATION"/> + <field name="METADATA_KEY_GENRE"/> + <field name="METADATA_KEY_MEDIA_ID"/> + <field name="METADATA_KEY_MEDIA_URI" since="26"/> + <field name="METADATA_KEY_NUM_TRACKS"/> + <field name="METADATA_KEY_RATING"/> + <field name="METADATA_KEY_TITLE"/> + <field name="METADATA_KEY_TRACK_NUMBER"/> + <field name="METADATA_KEY_USER_RATING"/> + <field name="METADATA_KEY_WRITER"/> + <field name="METADATA_KEY_YEAR"/> + </class> + <class name="android/media/MediaMetadata$Builder" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/media/MediaMetadata;)V"/> + <method name="build()Landroid/media/MediaMetadata;"/> + <method name="putBitmap(Ljava/lang/String;Landroid/graphics/Bitmap;)Landroid/media/MediaMetadata$Builder;"/> + <method name="putLong(Ljava/lang/String;J)Landroid/media/MediaMetadata$Builder;"/> + <method name="putRating(Ljava/lang/String;Landroid/media/Rating;)Landroid/media/MediaMetadata$Builder;"/> + <method name="putString(Ljava/lang/String;Ljava/lang/String;)Landroid/media/MediaMetadata$Builder;"/> + <method name="putText(Ljava/lang/String;Ljava/lang/CharSequence;)Landroid/media/MediaMetadata$Builder;"/> + </class> + <class name="android/media/MediaMetadataEditor" since="19" deprecated="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addEditableKey(I)V"/> + <method name="apply()V"/> + <method name="clear()V"/> + <method name="getBitmap(ILandroid/graphics/Bitmap;)Landroid/graphics/Bitmap;"/> + <method name="getEditableKeys()[I"/> + <method name="getLong(IJ)J"/> + <method name="getObject(ILjava/lang/Object;)Ljava/lang/Object;"/> + <method name="getString(ILjava/lang/String;)Ljava/lang/String;"/> + <method name="putBitmap(ILandroid/graphics/Bitmap;)Landroid/media/MediaMetadataEditor;"/> + <method name="putLong(IJ)Landroid/media/MediaMetadataEditor;"/> + <method name="putObject(ILjava/lang/Object;)Landroid/media/MediaMetadataEditor;"/> + <method name="putString(ILjava/lang/String;)Landroid/media/MediaMetadataEditor;"/> + <method name="removeEditableKeys()V"/> + <field name="BITMAP_KEY_ARTWORK"/> + <field name="RATING_KEY_BY_OTHERS"/> + <field name="RATING_KEY_BY_USER"/> + </class> + <class name="android/media/MediaMetadataRetriever" since="10"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="extractMetadata(I)Ljava/lang/String;"/> + <method name="getEmbeddedPicture()[B"/> + <method name="getFrameAtTime()Landroid/graphics/Bitmap;"/> + <method name="getFrameAtTime(J)Landroid/graphics/Bitmap;"/> + <method name="getFrameAtTime(JI)Landroid/graphics/Bitmap;"/> + <method name="release()V"/> + <method name="setDataSource(Landroid/content/Context;Landroid/net/Uri;)V"/> + <method name="setDataSource(Landroid/media/MediaDataSource;)V" since="23"/> + <method name="setDataSource(Ljava/io/FileDescriptor;)V"/> + <method name="setDataSource(Ljava/io/FileDescriptor;JJ)V"/> + <method name="setDataSource(Ljava/lang/String;)V"/> + <method name="setDataSource(Ljava/lang/String;Ljava/util/Map;)V" since="14"/> + <field name="METADATA_KEY_ALBUM"/> + <field name="METADATA_KEY_ALBUMARTIST"/> + <field name="METADATA_KEY_ARTIST"/> + <field name="METADATA_KEY_AUTHOR"/> + <field name="METADATA_KEY_BITRATE" since="14"/> + <field name="METADATA_KEY_CAPTURE_FRAMERATE" since="23"/> + <field name="METADATA_KEY_CD_TRACK_NUMBER"/> + <field name="METADATA_KEY_COMPILATION"/> + <field name="METADATA_KEY_COMPOSER"/> + <field name="METADATA_KEY_DATE"/> + <field name="METADATA_KEY_DISC_NUMBER"/> + <field name="METADATA_KEY_DURATION"/> + <field name="METADATA_KEY_GENRE"/> + <field name="METADATA_KEY_HAS_AUDIO" since="14"/> + <field name="METADATA_KEY_HAS_VIDEO" since="14"/> + <field name="METADATA_KEY_LOCATION" since="15"/> + <field name="METADATA_KEY_MIMETYPE"/> + <field name="METADATA_KEY_NUM_TRACKS"/> + <field name="METADATA_KEY_TITLE"/> + <field name="METADATA_KEY_VIDEO_HEIGHT" since="14"/> + <field name="METADATA_KEY_VIDEO_ROTATION" since="17"/> + <field name="METADATA_KEY_VIDEO_WIDTH" since="14"/> + <field name="METADATA_KEY_WRITER"/> + <field name="METADATA_KEY_YEAR"/> + <field name="OPTION_CLOSEST"/> + <field name="OPTION_CLOSEST_SYNC"/> + <field name="OPTION_NEXT_SYNC"/> + <field name="OPTION_PREVIOUS_SYNC"/> + </class> + <class name="android/media/MediaMuxer" since="18"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/io/FileDescriptor;I)V" since="26"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="addTrack(Landroid/media/MediaFormat;)I"/> + <method name="release()V"/> + <method name="setLocation(FF)V" since="19"/> + <method name="setOrientationHint(I)V"/> + <method name="start()V"/> + <method name="stop()V"/> + <method name="writeSampleData(ILjava/nio/ByteBuffer;Landroid/media/MediaCodec$BufferInfo;)V"/> + </class> + <class name="android/media/MediaMuxer$OutputFormat" since="18"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="MUXER_OUTPUT_3GPP" since="26"/> + <field name="MUXER_OUTPUT_MPEG_4"/> + <field name="MUXER_OUTPUT_WEBM" since="21"/> + </class> + <class name="android/media/MediaPlayer" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/media/VolumeAutomation" since="26"/> + <method name="<init>()V"/> + <method name="addTimedTextSource(Landroid/content/Context;Landroid/net/Uri;Ljava/lang/String;)V" since="16"/> + <method name="addTimedTextSource(Ljava/io/FileDescriptor;JJLjava/lang/String;)V" since="16"/> + <method name="addTimedTextSource(Ljava/io/FileDescriptor;Ljava/lang/String;)V" since="16"/> + <method name="addTimedTextSource(Ljava/lang/String;Ljava/lang/String;)V" since="16"/> + <method name="attachAuxEffect(I)V" since="9"/> + <method name="create(Landroid/content/Context;I)Landroid/media/MediaPlayer;"/> + <method name="create(Landroid/content/Context;ILandroid/media/AudioAttributes;I)Landroid/media/MediaPlayer;" since="21"/> + <method name="create(Landroid/content/Context;Landroid/net/Uri;)Landroid/media/MediaPlayer;"/> + <method name="create(Landroid/content/Context;Landroid/net/Uri;Landroid/view/SurfaceHolder;)Landroid/media/MediaPlayer;"/> + <method name="create(Landroid/content/Context;Landroid/net/Uri;Landroid/view/SurfaceHolder;Landroid/media/AudioAttributes;I)Landroid/media/MediaPlayer;" since="21"/> + <method name="deselectTrack(I)V" since="16"/> + <method name="getAudioSessionId()I" since="9"/> + <method name="getCurrentPosition()I"/> + <method name="getDrmInfo()Landroid/media/MediaPlayer$DrmInfo;" since="26"/> + <method name="getDrmPropertyString(Ljava/lang/String;)Ljava/lang/String;" since="26"/> + <method name="getDuration()I"/> + <method name="getKeyRequest([B[BLjava/lang/String;ILjava/util/Map;)Landroid/media/MediaDrm$KeyRequest;" since="26"/> + <method name="getMetrics()Landroid/os/PersistableBundle;" since="26"/> + <method name="getPlaybackParams()Landroid/media/PlaybackParams;" since="23"/> + <method name="getSelectedTrack(I)I" since="21"/> + <method name="getSyncParams()Landroid/media/SyncParams;" since="23"/> + <method name="getTimestamp()Landroid/media/MediaTimestamp;" since="23"/> + <method name="getTrackInfo()[Landroid/media/MediaPlayer$TrackInfo;" since="16"/> + <method name="getVideoHeight()I"/> + <method name="getVideoWidth()I"/> + <method name="isLooping()Z" since="3"/> + <method name="isPlaying()Z"/> + <method name="pause()V"/> + <method name="prepare()V"/> + <method name="prepareAsync()V"/> + <method name="prepareDrm(Ljava/util/UUID;)V" since="26"/> + <method name="provideKeyResponse([B[B)[B" since="26"/> + <method name="release()V"/> + <method name="releaseDrm()V" since="26"/> + <method name="reset()V"/> + <method name="restoreKeys([B)V" since="26"/> + <method name="seekTo(I)V"/> + <method name="seekTo(JI)V" since="26"/> + <method name="selectTrack(I)V" since="16"/> + <method name="setAudioAttributes(Landroid/media/AudioAttributes;)V" since="21"/> + <method name="setAudioSessionId(I)V" since="9"/> + <method name="setAudioStreamType(I)V" deprecated="26"/> + <method name="setAuxEffectSendLevel(F)V" since="9"/> + <method name="setDataSource(Landroid/content/Context;Landroid/net/Uri;)V"/> + <method name="setDataSource(Landroid/content/Context;Landroid/net/Uri;Ljava/util/Map;)V" since="14"/> + <method name="setDataSource(Landroid/content/Context;Landroid/net/Uri;Ljava/util/Map;Ljava/util/List;)V" since="26"/> + <method name="setDataSource(Landroid/content/res/AssetFileDescriptor;)V" since="24"/> + <method name="setDataSource(Landroid/media/MediaDataSource;)V" since="23"/> + <method name="setDataSource(Ljava/io/FileDescriptor;)V"/> + <method name="setDataSource(Ljava/io/FileDescriptor;JJ)V"/> + <method name="setDataSource(Ljava/lang/String;)V"/> + <method name="setDisplay(Landroid/view/SurfaceHolder;)V"/> + <method name="setDrmPropertyString(Ljava/lang/String;Ljava/lang/String;)V" since="26"/> + <method name="setLooping(Z)V"/> + <method name="setNextMediaPlayer(Landroid/media/MediaPlayer;)V" since="16"/> + <method name="setOnBufferingUpdateListener(Landroid/media/MediaPlayer$OnBufferingUpdateListener;)V"/> + <method name="setOnCompletionListener(Landroid/media/MediaPlayer$OnCompletionListener;)V"/> + <method name="setOnDrmConfigHelper(Landroid/media/MediaPlayer$OnDrmConfigHelper;)V" since="26"/> + <method name="setOnDrmInfoListener(Landroid/media/MediaPlayer$OnDrmInfoListener;)V" since="26"/> + <method name="setOnDrmInfoListener(Landroid/media/MediaPlayer$OnDrmInfoListener;Landroid/os/Handler;)V" since="26"/> + <method name="setOnDrmPreparedListener(Landroid/media/MediaPlayer$OnDrmPreparedListener;)V" since="26"/> + <method name="setOnDrmPreparedListener(Landroid/media/MediaPlayer$OnDrmPreparedListener;Landroid/os/Handler;)V" since="26"/> + <method name="setOnErrorListener(Landroid/media/MediaPlayer$OnErrorListener;)V"/> + <method name="setOnInfoListener(Landroid/media/MediaPlayer$OnInfoListener;)V" since="3"/> + <method name="setOnPreparedListener(Landroid/media/MediaPlayer$OnPreparedListener;)V"/> + <method name="setOnSeekCompleteListener(Landroid/media/MediaPlayer$OnSeekCompleteListener;)V"/> + <method name="setOnTimedMetaDataAvailableListener(Landroid/media/MediaPlayer$OnTimedMetaDataAvailableListener;)V" since="23"/> + <method name="setOnTimedTextListener(Landroid/media/MediaPlayer$OnTimedTextListener;)V" since="16"/> + <method name="setOnVideoSizeChangedListener(Landroid/media/MediaPlayer$OnVideoSizeChangedListener;)V" since="3"/> + <method name="setPlaybackParams(Landroid/media/PlaybackParams;)V" since="23"/> + <method name="setScreenOnWhilePlaying(Z)V"/> + <method name="setSurface(Landroid/view/Surface;)V" since="14"/> + <method name="setSyncParams(Landroid/media/SyncParams;)V" since="23"/> + <method name="setVideoScalingMode(I)V" since="16"/> + <method name="setVolume(FF)V"/> + <method name="setWakeMode(Landroid/content/Context;I)V"/> + <method name="start()V"/> + <method name="stop()V"/> + <field name="MEDIA_ERROR_IO" since="17"/> + <field name="MEDIA_ERROR_MALFORMED" since="17"/> + <field name="MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK" since="3"/> + <field name="MEDIA_ERROR_SERVER_DIED"/> + <field name="MEDIA_ERROR_TIMED_OUT" since="17"/> + <field name="MEDIA_ERROR_UNKNOWN"/> + <field name="MEDIA_ERROR_UNSUPPORTED" since="17"/> + <field name="MEDIA_INFO_AUDIO_NOT_PLAYING" since="26"/> + <field name="MEDIA_INFO_BAD_INTERLEAVING" since="3"/> + <field name="MEDIA_INFO_BUFFERING_END" since="9"/> + <field name="MEDIA_INFO_BUFFERING_START" since="9"/> + <field name="MEDIA_INFO_METADATA_UPDATE" since="5"/> + <field name="MEDIA_INFO_NOT_SEEKABLE" since="3"/> + <field name="MEDIA_INFO_SUBTITLE_TIMED_OUT" since="19"/> + <field name="MEDIA_INFO_UNKNOWN" since="3"/> + <field name="MEDIA_INFO_UNSUPPORTED_SUBTITLE" since="19"/> + <field name="MEDIA_INFO_VIDEO_NOT_PLAYING" since="26"/> + <field name="MEDIA_INFO_VIDEO_RENDERING_START" since="17"/> + <field name="MEDIA_INFO_VIDEO_TRACK_LAGGING" since="3"/> + <field name="MEDIA_MIMETYPE_TEXT_SUBRIP" since="16"/> + <field name="PREPARE_DRM_STATUS_PREPARATION_ERROR" since="26"/> + <field name="PREPARE_DRM_STATUS_PROVISIONING_NETWORK_ERROR" since="26"/> + <field name="PREPARE_DRM_STATUS_PROVISIONING_SERVER_ERROR" since="26"/> + <field name="PREPARE_DRM_STATUS_SUCCESS" since="26"/> + <field name="SEEK_CLOSEST" since="26"/> + <field name="SEEK_CLOSEST_SYNC" since="26"/> + <field name="SEEK_NEXT_SYNC" since="26"/> + <field name="SEEK_PREVIOUS_SYNC" since="26"/> + <field name="VIDEO_SCALING_MODE_SCALE_TO_FIT" since="16"/> + <field name="VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING" since="16"/> + </class> + <class name="android/media/MediaPlayer$DrmInfo" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getPssh()Ljava/util/Map;"/> + <method name="getSupportedSchemes()[Ljava/util/UUID;"/> + </class> + <class name="android/media/MediaPlayer$MetricsConstants" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="CODEC_AUDIO"/> + <field name="CODEC_VIDEO"/> + <field name="DURATION"/> + <field name="ERRORS"/> + <field name="ERROR_CODE"/> + <field name="FRAMES"/> + <field name="FRAMES_DROPPED"/> + <field name="HEIGHT"/> + <field name="MIME_TYPE_AUDIO"/> + <field name="MIME_TYPE_VIDEO"/> + <field name="PLAYING"/> + <field name="WIDTH"/> + </class> + <class name="android/media/MediaPlayer$NoDrmSchemeException" since="26"> + <extends name="android/media/MediaDrmException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/media/MediaPlayer$OnBufferingUpdateListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onBufferingUpdate(Landroid/media/MediaPlayer;I)V"/> + </class> + <class name="android/media/MediaPlayer$OnCompletionListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onCompletion(Landroid/media/MediaPlayer;)V"/> + </class> + <class name="android/media/MediaPlayer$OnDrmConfigHelper" since="26"> + <extends name="java/lang/Object"/> + <method name="onDrmConfig(Landroid/media/MediaPlayer;)V"/> + </class> + <class name="android/media/MediaPlayer$OnDrmInfoListener" since="26"> + <extends name="java/lang/Object"/> + <method name="onDrmInfo(Landroid/media/MediaPlayer;Landroid/media/MediaPlayer$DrmInfo;)V"/> + </class> + <class name="android/media/MediaPlayer$OnDrmPreparedListener" since="26"> + <extends name="java/lang/Object"/> + <method name="onDrmPrepared(Landroid/media/MediaPlayer;I)V"/> + </class> + <class name="android/media/MediaPlayer$OnErrorListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onError(Landroid/media/MediaPlayer;II)Z"/> + </class> + <class name="android/media/MediaPlayer$OnInfoListener" since="3"> + <extends name="java/lang/Object"/> + <method name="onInfo(Landroid/media/MediaPlayer;II)Z"/> + </class> + <class name="android/media/MediaPlayer$OnPreparedListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onPrepared(Landroid/media/MediaPlayer;)V"/> + </class> + <class name="android/media/MediaPlayer$OnSeekCompleteListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onSeekComplete(Landroid/media/MediaPlayer;)V"/> + </class> + <class name="android/media/MediaPlayer$OnTimedMetaDataAvailableListener" since="23"> + <extends name="java/lang/Object"/> + <method name="onTimedMetaDataAvailable(Landroid/media/MediaPlayer;Landroid/media/TimedMetaData;)V"/> + </class> + <class name="android/media/MediaPlayer$OnTimedTextListener" since="16"> + <extends name="java/lang/Object"/> + <method name="onTimedText(Landroid/media/MediaPlayer;Landroid/media/TimedText;)V"/> + </class> + <class name="android/media/MediaPlayer$OnVideoSizeChangedListener" since="3"> + <extends name="java/lang/Object"/> + <method name="onVideoSizeChanged(Landroid/media/MediaPlayer;II)V"/> + </class> + <class name="android/media/MediaPlayer$ProvisioningNetworkErrorException" since="26"> + <extends name="android/media/MediaDrmException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/media/MediaPlayer$ProvisioningServerErrorException" since="26"> + <extends name="android/media/MediaDrmException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/media/MediaPlayer$TrackInfo" since="16"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getFormat()Landroid/media/MediaFormat;" since="19"/> + <method name="getLanguage()Ljava/lang/String;"/> + <method name="getTrackType()I"/> + <field name="MEDIA_TRACK_TYPE_AUDIO"/> + <field name="MEDIA_TRACK_TYPE_METADATA" since="23"/> + <field name="MEDIA_TRACK_TYPE_SUBTITLE" since="21"/> + <field name="MEDIA_TRACK_TYPE_TIMEDTEXT"/> + <field name="MEDIA_TRACK_TYPE_UNKNOWN"/> + <field name="MEDIA_TRACK_TYPE_VIDEO"/> + </class> + <class name="android/media/MediaRecorder" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAudioSourceMax()I" since="4"/> + <method name="getMaxAmplitude()I"/> + <method name="getMetrics()Landroid/os/PersistableBundle;" since="26"/> + <method name="getSurface()Landroid/view/Surface;" since="21"/> + <method name="pause()V" since="24"/> + <method name="prepare()V"/> + <method name="release()V"/> + <method name="reset()V"/> + <method name="resume()V" since="24"/> + <method name="setAudioChannels(I)V" since="8"/> + <method name="setAudioEncoder(I)V"/> + <method name="setAudioEncodingBitRate(I)V" since="8"/> + <method name="setAudioSamplingRate(I)V" since="8"/> + <method name="setAudioSource(I)V"/> + <method name="setAuxiliaryOutputFile(Ljava/io/FileDescriptor;)V" since="11" removed="16"/> + <method name="setAuxiliaryOutputFile(Ljava/lang/String;)V" since="11" removed="16"/> + <method name="setCamera(Landroid/hardware/Camera;)V" since="3" deprecated="21"/> + <method name="setCaptureRate(D)V" since="11"/> + <method name="setInputSurface(Landroid/view/Surface;)V" since="23"/> + <method name="setLocation(FF)V" since="14"/> + <method name="setMaxDuration(I)V" since="3"/> + <method name="setMaxFileSize(J)V" since="3"/> + <method name="setNextOutputFile(Ljava/io/File;)V" since="26"/> + <method name="setNextOutputFile(Ljava/io/FileDescriptor;)V" since="26"/> + <method name="setOnErrorListener(Landroid/media/MediaRecorder$OnErrorListener;)V" since="3"/> + <method name="setOnInfoListener(Landroid/media/MediaRecorder$OnInfoListener;)V" since="3"/> + <method name="setOrientationHint(I)V" since="9"/> + <method name="setOutputFile(Ljava/io/File;)V" since="26"/> + <method name="setOutputFile(Ljava/io/FileDescriptor;)V" since="3"/> + <method name="setOutputFile(Ljava/lang/String;)V"/> + <method name="setOutputFormat(I)V"/> + <method name="setPreviewDisplay(Landroid/view/Surface;)V"/> + <method name="setProfile(Landroid/media/CamcorderProfile;)V" since="8"/> + <method name="setVideoEncoder(I)V" since="3"/> + <method name="setVideoEncodingBitRate(I)V" since="8"/> + <method name="setVideoEncodingProfileLevel(II)V" since="26"/> + <method name="setVideoFrameRate(I)V" since="3"/> + <method name="setVideoSize(II)V" since="3"/> + <method name="setVideoSource(I)V" since="3"/> + <method name="start()V"/> + <method name="stop()V"/> + <field name="MEDIA_ERROR_SERVER_DIED" since="17"/> + <field name="MEDIA_RECORDER_ERROR_UNKNOWN" since="3"/> + <field name="MEDIA_RECORDER_INFO_MAX_DURATION_REACHED" since="3"/> + <field name="MEDIA_RECORDER_INFO_MAX_FILESIZE_APPROACHING" since="26"/> + <field name="MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED" since="3"/> + <field name="MEDIA_RECORDER_INFO_NEXT_OUTPUT_FILE_STARTED" since="26"/> + <field name="MEDIA_RECORDER_INFO_UNKNOWN" since="3"/> + </class> + <class name="android/media/MediaRecorder$AudioEncoder" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/media/MediaRecorder;)V"/> + <field name="AAC" since="10"/> + <field name="AAC_ELD" since="16"/> + <field name="AMR_NB"/> + <field name="AMR_WB" since="10"/> + <field name="DEFAULT"/> + <field name="HE_AAC" since="16"/> + <field name="VORBIS" since="21"/> + </class> + <class name="android/media/MediaRecorder$AudioSource" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/media/MediaRecorder;)V"/> + <field name="CAMCORDER" since="7"/> + <field name="DEFAULT"/> + <field name="MIC"/> + <field name="REMOTE_SUBMIX" since="19"/> + <field name="UNPROCESSED" since="24"/> + <field name="VOICE_CALL" since="4"/> + <field name="VOICE_COMMUNICATION" since="11"/> + <field name="VOICE_DOWNLINK" since="4"/> + <field name="VOICE_RECOGNITION" since="7"/> + <field name="VOICE_UPLINK" since="4"/> + </class> + <class name="android/media/MediaRecorder$MetricsConstants" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="AUDIO_BITRATE"/> + <field name="AUDIO_CHANNELS"/> + <field name="AUDIO_SAMPLERATE"/> + <field name="AUDIO_TIMESCALE"/> + <field name="CAPTURE_FPS"/> + <field name="CAPTURE_FPS_ENABLE"/> + <field name="FRAMERATE"/> + <field name="HEIGHT"/> + <field name="MOVIE_TIMESCALE"/> + <field name="ROTATION"/> + <field name="VIDEO_BITRATE"/> + <field name="VIDEO_IFRAME_INTERVAL"/> + <field name="VIDEO_LEVEL"/> + <field name="VIDEO_PROFILE"/> + <field name="VIDEO_TIMESCALE"/> + <field name="WIDTH"/> + </class> + <class name="android/media/MediaRecorder$OnErrorListener" since="3"> + <extends name="java/lang/Object"/> + <method name="onError(Landroid/media/MediaRecorder;II)V"/> + </class> + <class name="android/media/MediaRecorder$OnInfoListener" since="3"> + <extends name="java/lang/Object"/> + <method name="onInfo(Landroid/media/MediaRecorder;II)V"/> + </class> + <class name="android/media/MediaRecorder$OutputFormat" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/media/MediaRecorder;)V"/> + <field name="AAC_ADTS" since="16"/> + <field name="AMR_NB" since="10"/> + <field name="AMR_WB" since="10"/> + <field name="DEFAULT"/> + <field name="MPEG_2_TS" since="26"/> + <field name="MPEG_4"/> + <field name="RAW_AMR" since="3" deprecated="16"/> + <field name="THREE_GPP"/> + <field name="WEBM" since="21"/> + </class> + <class name="android/media/MediaRecorder$VideoEncoder" since="3"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/media/MediaRecorder;)V"/> + <field name="DEFAULT"/> + <field name="H263"/> + <field name="H264"/> + <field name="HEVC" since="24"/> + <field name="MPEG_4_SP"/> + <field name="VP8" since="21"/> + </class> + <class name="android/media/MediaRecorder$VideoSource" since="3"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/media/MediaRecorder;)V"/> + <field name="CAMERA"/> + <field name="DEFAULT"/> + <field name="SURFACE" since="21"/> + </class> + <class name="android/media/MediaRouter" since="16"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addCallback(ILandroid/media/MediaRouter$Callback;)V"/> + <method name="addCallback(ILandroid/media/MediaRouter$Callback;I)V" since="18"/> + <method name="addUserRoute(Landroid/media/MediaRouter$UserRouteInfo;)V"/> + <method name="clearUserRoutes()V"/> + <method name="createRouteCategory(IZ)Landroid/media/MediaRouter$RouteCategory;"/> + <method name="createRouteCategory(Ljava/lang/CharSequence;Z)Landroid/media/MediaRouter$RouteCategory;"/> + <method name="createUserRoute(Landroid/media/MediaRouter$RouteCategory;)Landroid/media/MediaRouter$UserRouteInfo;"/> + <method name="getCategoryAt(I)Landroid/media/MediaRouter$RouteCategory;"/> + <method name="getCategoryCount()I"/> + <method name="getDefaultRoute()Landroid/media/MediaRouter$RouteInfo;" since="18"/> + <method name="getRouteAt(I)Landroid/media/MediaRouter$RouteInfo;"/> + <method name="getRouteCount()I"/> + <method name="getSelectedRoute(I)Landroid/media/MediaRouter$RouteInfo;"/> + <method name="removeCallback(Landroid/media/MediaRouter$Callback;)V"/> + <method name="removeUserRoute(Landroid/media/MediaRouter$UserRouteInfo;)V"/> + <method name="selectRoute(ILandroid/media/MediaRouter$RouteInfo;)V"/> + <field name="CALLBACK_FLAG_PERFORM_ACTIVE_SCAN" since="18"/> + <field name="CALLBACK_FLAG_UNFILTERED_EVENTS" since="18"/> + <field name="ROUTE_TYPE_LIVE_AUDIO"/> + <field name="ROUTE_TYPE_LIVE_VIDEO" since="17"/> + <field name="ROUTE_TYPE_USER"/> + </class> + <class name="android/media/MediaRouter$Callback" since="16"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onRouteAdded(Landroid/media/MediaRouter;Landroid/media/MediaRouter$RouteInfo;)V"/> + <method name="onRouteChanged(Landroid/media/MediaRouter;Landroid/media/MediaRouter$RouteInfo;)V"/> + <method name="onRouteGrouped(Landroid/media/MediaRouter;Landroid/media/MediaRouter$RouteInfo;Landroid/media/MediaRouter$RouteGroup;I)V"/> + <method name="onRoutePresentationDisplayChanged(Landroid/media/MediaRouter;Landroid/media/MediaRouter$RouteInfo;)V" since="17"/> + <method name="onRouteRemoved(Landroid/media/MediaRouter;Landroid/media/MediaRouter$RouteInfo;)V"/> + <method name="onRouteSelected(Landroid/media/MediaRouter;ILandroid/media/MediaRouter$RouteInfo;)V"/> + <method name="onRouteUngrouped(Landroid/media/MediaRouter;Landroid/media/MediaRouter$RouteInfo;Landroid/media/MediaRouter$RouteGroup;)V"/> + <method name="onRouteUnselected(Landroid/media/MediaRouter;ILandroid/media/MediaRouter$RouteInfo;)V"/> + <method name="onRouteVolumeChanged(Landroid/media/MediaRouter;Landroid/media/MediaRouter$RouteInfo;)V"/> + </class> + <class name="android/media/MediaRouter$RouteCategory" since="16"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getName()Ljava/lang/CharSequence;"/> + <method name="getName(Landroid/content/Context;)Ljava/lang/CharSequence;"/> + <method name="getRoutes(Ljava/util/List;)Ljava/util/List;"/> + <method name="getSupportedTypes()I"/> + <method name="isGroupable()Z"/> + </class> + <class name="android/media/MediaRouter$RouteGroup" since="16"> + <extends name="android/media/MediaRouter$RouteInfo"/> + <method name="<init>()V"/> + <method name="addRoute(Landroid/media/MediaRouter$RouteInfo;)V"/> + <method name="addRoute(Landroid/media/MediaRouter$RouteInfo;I)V"/> + <method name="getRouteAt(I)Landroid/media/MediaRouter$RouteInfo;"/> + <method name="getRouteCount()I"/> + <method name="removeRoute(I)V"/> + <method name="removeRoute(Landroid/media/MediaRouter$RouteInfo;)V"/> + <method name="setIconDrawable(Landroid/graphics/drawable/Drawable;)V"/> + <method name="setIconResource(I)V"/> + </class> + <class name="android/media/MediaRouter$RouteInfo" since="16"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getCategory()Landroid/media/MediaRouter$RouteCategory;"/> + <method name="getDescription()Ljava/lang/CharSequence;" since="18"/> + <method name="getDeviceType()I" since="24"/> + <method name="getGroup()Landroid/media/MediaRouter$RouteGroup;"/> + <method name="getIconDrawable()Landroid/graphics/drawable/Drawable;"/> + <method name="getName()Ljava/lang/CharSequence;"/> + <method name="getName(Landroid/content/Context;)Ljava/lang/CharSequence;"/> + <method name="getPlaybackStream()I"/> + <method name="getPlaybackType()I"/> + <method name="getPresentationDisplay()Landroid/view/Display;" since="17"/> + <method name="getStatus()Ljava/lang/CharSequence;"/> + <method name="getSupportedTypes()I"/> + <method name="getTag()Ljava/lang/Object;"/> + <method name="getVolume()I"/> + <method name="getVolumeHandling()I"/> + <method name="getVolumeMax()I"/> + <method name="isConnecting()Z" since="18"/> + <method name="isEnabled()Z" since="17"/> + <method name="requestSetVolume(I)V"/> + <method name="requestUpdateVolume(I)V"/> + <method name="setTag(Ljava/lang/Object;)V"/> + <field name="DEVICE_TYPE_BLUETOOTH" since="24"/> + <field name="DEVICE_TYPE_SPEAKER" since="24"/> + <field name="DEVICE_TYPE_TV" since="24"/> + <field name="DEVICE_TYPE_UNKNOWN" since="24"/> + <field name="PLAYBACK_TYPE_LOCAL"/> + <field name="PLAYBACK_TYPE_REMOTE"/> + <field name="PLAYBACK_VOLUME_FIXED"/> + <field name="PLAYBACK_VOLUME_VARIABLE"/> + </class> + <class name="android/media/MediaRouter$SimpleCallback" since="16"> + <extends name="android/media/MediaRouter$Callback"/> + <method name="<init>()V"/> + </class> + <class name="android/media/MediaRouter$UserRouteInfo" since="16"> + <extends name="android/media/MediaRouter$RouteInfo"/> + <method name="<init>()V"/> + <method name="getRemoteControlClient()Landroid/media/RemoteControlClient;"/> + <method name="setDescription(Ljava/lang/CharSequence;)V" since="18"/> + <method name="setIconDrawable(Landroid/graphics/drawable/Drawable;)V"/> + <method name="setIconResource(I)V"/> + <method name="setName(I)V"/> + <method name="setName(Ljava/lang/CharSequence;)V"/> + <method name="setPlaybackStream(I)V"/> + <method name="setPlaybackType(I)V"/> + <method name="setRemoteControlClient(Landroid/media/RemoteControlClient;)V"/> + <method name="setStatus(Ljava/lang/CharSequence;)V"/> + <method name="setVolume(I)V"/> + <method name="setVolumeCallback(Landroid/media/MediaRouter$VolumeCallback;)V"/> + <method name="setVolumeHandling(I)V"/> + <method name="setVolumeMax(I)V"/> + </class> + <class name="android/media/MediaRouter$VolumeCallback" since="16"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onVolumeSetRequest(Landroid/media/MediaRouter$RouteInfo;I)V"/> + <method name="onVolumeUpdateRequest(Landroid/media/MediaRouter$RouteInfo;I)V"/> + </class> + <class name="android/media/MediaScannerConnection" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/content/ServiceConnection"/> + <method name="<init>(Landroid/content/Context;Landroid/media/MediaScannerConnection$MediaScannerConnectionClient;)V"/> + <method name="connect()V"/> + <method name="disconnect()V"/> + <method name="isConnected()Z"/> + <method name="scanFile(Landroid/content/Context;[Ljava/lang/String;[Ljava/lang/String;Landroid/media/MediaScannerConnection$OnScanCompletedListener;)V" since="8"/> + <method name="scanFile(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="android/media/MediaScannerConnection$MediaScannerConnectionClient" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/media/MediaScannerConnection$OnScanCompletedListener" since="8"/> + <method name="onMediaScannerConnected()V"/> + <method name="onScanCompleted(Ljava/lang/String;Landroid/net/Uri;)V"/> + </class> + <class name="android/media/MediaScannerConnection$OnScanCompletedListener" since="8"> + <extends name="java/lang/Object"/> + <method name="onScanCompleted(Ljava/lang/String;Landroid/net/Uri;)V"/> + </class> + <class name="android/media/MediaSync" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="createInputSurface()Landroid/view/Surface;"/> + <method name="flush()V"/> + <method name="getPlaybackParams()Landroid/media/PlaybackParams;"/> + <method name="getSyncParams()Landroid/media/SyncParams;"/> + <method name="getTimestamp()Landroid/media/MediaTimestamp;"/> + <method name="queueAudio(Ljava/nio/ByteBuffer;IJ)V"/> + <method name="release()V"/> + <method name="setAudioTrack(Landroid/media/AudioTrack;)V"/> + <method name="setCallback(Landroid/media/MediaSync$Callback;Landroid/os/Handler;)V"/> + <method name="setOnErrorListener(Landroid/media/MediaSync$OnErrorListener;Landroid/os/Handler;)V"/> + <method name="setPlaybackParams(Landroid/media/PlaybackParams;)V"/> + <method name="setSurface(Landroid/view/Surface;)V"/> + <method name="setSyncParams(Landroid/media/SyncParams;)V"/> + <field name="MEDIASYNC_ERROR_AUDIOTRACK_FAIL"/> + <field name="MEDIASYNC_ERROR_SURFACE_FAIL"/> + </class> + <class name="android/media/MediaSync$Callback" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onAudioBufferConsumed(Landroid/media/MediaSync;Ljava/nio/ByteBuffer;I)V"/> + </class> + <class name="android/media/MediaSync$OnErrorListener" since="23"> + <extends name="java/lang/Object"/> + <method name="onError(Landroid/media/MediaSync;II)V"/> + </class> + <class name="android/media/MediaSyncEvent" since="16"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="createEvent(I)Landroid/media/MediaSyncEvent;"/> + <method name="getAudioSessionId()I"/> + <method name="getType()I"/> + <method name="setAudioSessionId(I)Landroid/media/MediaSyncEvent;"/> + <field name="SYNC_EVENT_NONE"/> + <field name="SYNC_EVENT_PRESENTATION_COMPLETE"/> + </class> + <class name="android/media/MediaTimestamp" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAnchorMediaTimeUs()J"/> + <method name="getAnchorSytemNanoTime()J"/> + <method name="getMediaClockRate()F"/> + </class> + <class name="android/media/NotProvisionedException" since="18"> + <extends name="android/media/MediaDrmException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/media/PlaybackParams" since="23"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="allowDefaults()Landroid/media/PlaybackParams;"/> + <method name="getAudioFallbackMode()I"/> + <method name="getPitch()F"/> + <method name="getSpeed()F"/> + <method name="setAudioFallbackMode(I)Landroid/media/PlaybackParams;"/> + <method name="setPitch(F)Landroid/media/PlaybackParams;"/> + <method name="setSpeed(F)Landroid/media/PlaybackParams;"/> + <field name="AUDIO_FALLBACK_MODE_DEFAULT"/> + <field name="AUDIO_FALLBACK_MODE_FAIL"/> + <field name="AUDIO_FALLBACK_MODE_MUTE"/> + <field name="CREATOR"/> + </class> + <class name="android/media/Rating" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getPercentRating()F"/> + <method name="getRatingStyle()I"/> + <method name="getStarRating()F"/> + <method name="hasHeart()Z"/> + <method name="isRated()Z"/> + <method name="isThumbUp()Z"/> + <method name="newHeartRating(Z)Landroid/media/Rating;"/> + <method name="newPercentageRating(F)Landroid/media/Rating;"/> + <method name="newStarRating(IF)Landroid/media/Rating;"/> + <method name="newThumbRating(Z)Landroid/media/Rating;"/> + <method name="newUnratedRating(I)Landroid/media/Rating;"/> + <field name="CREATOR"/> + <field name="RATING_3_STARS"/> + <field name="RATING_4_STARS"/> + <field name="RATING_5_STARS"/> + <field name="RATING_HEART"/> + <field name="RATING_NONE" since="21"/> + <field name="RATING_PERCENTAGE"/> + <field name="RATING_THUMB_UP_DOWN"/> + </class> + <class name="android/media/RemoteControlClient" since="14" deprecated="21"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/app/PendingIntent;)V"/> + <method name="<init>(Landroid/app/PendingIntent;Landroid/os/Looper;)V"/> + <method name="editMetadata(Z)Landroid/media/RemoteControlClient$MetadataEditor;"/> + <method name="getMediaSession()Landroid/media/session/MediaSession;" since="21"/> + <method name="setMetadataUpdateListener(Landroid/media/RemoteControlClient$OnMetadataUpdateListener;)V" since="19"/> + <method name="setOnGetPlaybackPositionListener(Landroid/media/RemoteControlClient$OnGetPlaybackPositionListener;)V" since="18"/> + <method name="setPlaybackPositionUpdateListener(Landroid/media/RemoteControlClient$OnPlaybackPositionUpdateListener;)V" since="18"/> + <method name="setPlaybackState(I)V"/> + <method name="setPlaybackState(IJF)V" since="18"/> + <method name="setTransportControlFlags(I)V"/> + <field name="FLAG_KEY_MEDIA_FAST_FORWARD"/> + <field name="FLAG_KEY_MEDIA_NEXT"/> + <field name="FLAG_KEY_MEDIA_PAUSE"/> + <field name="FLAG_KEY_MEDIA_PLAY"/> + <field name="FLAG_KEY_MEDIA_PLAY_PAUSE"/> + <field name="FLAG_KEY_MEDIA_POSITION_UPDATE" since="18"/> + <field name="FLAG_KEY_MEDIA_PREVIOUS"/> + <field name="FLAG_KEY_MEDIA_RATING" since="19"/> + <field name="FLAG_KEY_MEDIA_REWIND"/> + <field name="FLAG_KEY_MEDIA_STOP"/> + <field name="PLAYSTATE_BUFFERING"/> + <field name="PLAYSTATE_ERROR"/> + <field name="PLAYSTATE_FAST_FORWARDING"/> + <field name="PLAYSTATE_PAUSED"/> + <field name="PLAYSTATE_PLAYING"/> + <field name="PLAYSTATE_REWINDING"/> + <field name="PLAYSTATE_SKIPPING_BACKWARDS"/> + <field name="PLAYSTATE_SKIPPING_FORWARDS"/> + <field name="PLAYSTATE_STOPPED"/> + </class> + <class name="android/media/RemoteControlClient$MetadataEditor" since="14" deprecated="21"> + <extends name="android/media/MediaMetadataEditor" since="19"/> + <extends name="java/lang/Object" removed="19"/> + <method name="<init>(Landroid/media/RemoteControlClient;)V"/> + <method name="apply()V"/> + <method name="clear()V"/> + <method name="putBitmap(ILandroid/graphics/Bitmap;)Landroid/media/RemoteControlClient$MetadataEditor;"/> + <method name="putLong(IJ)Landroid/media/RemoteControlClient$MetadataEditor;"/> + <method name="putObject(ILjava/lang/Object;)Landroid/media/RemoteControlClient$MetadataEditor;" since="22"/> + <method name="putString(ILjava/lang/String;)Landroid/media/RemoteControlClient$MetadataEditor;"/> + <field name="BITMAP_KEY_ARTWORK"/> + </class> + <class name="android/media/RemoteControlClient$OnGetPlaybackPositionListener" since="18"> + <extends name="java/lang/Object"/> + <method name="onGetPlaybackPosition()J"/> + </class> + <class name="android/media/RemoteControlClient$OnMetadataUpdateListener" since="19"> + <extends name="java/lang/Object"/> + <method name="onMetadataUpdate(ILjava/lang/Object;)V"/> + </class> + <class name="android/media/RemoteControlClient$OnPlaybackPositionUpdateListener" since="18"> + <extends name="java/lang/Object"/> + <method name="onPlaybackPositionUpdate(J)V"/> + </class> + <class name="android/media/RemoteController" since="19" deprecated="21"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;Landroid/media/RemoteController$OnClientUpdateListener;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/media/RemoteController$OnClientUpdateListener;Landroid/os/Looper;)V"/> + <method name="clearArtworkConfiguration()Z"/> + <method name="editMetadata()Landroid/media/RemoteController$MetadataEditor;"/> + <method name="getEstimatedMediaPosition()J"/> + <method name="seekTo(J)Z"/> + <method name="sendMediaKeyEvent(Landroid/view/KeyEvent;)Z"/> + <method name="setArtworkConfiguration(II)Z"/> + <method name="setSynchronizationMode(I)Z"/> + <field name="POSITION_SYNCHRONIZATION_CHECK"/> + <field name="POSITION_SYNCHRONIZATION_NONE"/> + </class> + <class name="android/media/RemoteController$MetadataEditor" since="19"> + <extends name="android/media/MediaMetadataEditor"/> + <method name="<init>(Landroid/media/RemoteController;)V"/> + </class> + <class name="android/media/RemoteController$OnClientUpdateListener" since="19"> + <extends name="java/lang/Object"/> + <method name="onClientChange(Z)V"/> + <method name="onClientMetadataUpdate(Landroid/media/RemoteController$MetadataEditor;)V"/> + <method name="onClientPlaybackStateUpdate(I)V"/> + <method name="onClientPlaybackStateUpdate(IJJF)V"/> + <method name="onClientTransportControlUpdate(I)V"/> + </class> + <class name="android/media/ResourceBusyException" since="19"> + <extends name="android/media/MediaDrmException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/media/Ringtone" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAudioAttributes()Landroid/media/AudioAttributes;" since="21"/> + <method name="getStreamType()I" deprecated="21"/> + <method name="getTitle(Landroid/content/Context;)Ljava/lang/String;"/> + <method name="isPlaying()Z"/> + <method name="play()V"/> + <method name="setAudioAttributes(Landroid/media/AudioAttributes;)V" since="21"/> + <method name="setStreamType(I)V" deprecated="21"/> + <method name="stop()V"/> + </class> + <class name="android/media/RingtoneManager" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/app/Activity;)V"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="getActualDefaultRingtoneUri(Landroid/content/Context;I)Landroid/net/Uri;"/> + <method name="getCursor()Landroid/database/Cursor;"/> + <method name="getDefaultType(Landroid/net/Uri;)I"/> + <method name="getDefaultUri(I)Landroid/net/Uri;"/> + <method name="getIncludeDrm()Z" deprecated="19"/> + <method name="getRingtone(I)Landroid/media/Ringtone;"/> + <method name="getRingtone(Landroid/content/Context;Landroid/net/Uri;)Landroid/media/Ringtone;"/> + <method name="getRingtonePosition(Landroid/net/Uri;)I"/> + <method name="getRingtoneUri(I)Landroid/net/Uri;"/> + <method name="getStopPreviousRingtone()Z"/> + <method name="getValidRingtoneUri(Landroid/content/Context;)Landroid/net/Uri;"/> + <method name="inferStreamType()I" since="3"/> + <method name="isDefault(Landroid/net/Uri;)Z"/> + <method name="setActualDefaultRingtoneUri(Landroid/content/Context;ILandroid/net/Uri;)V"/> + <method name="setIncludeDrm(Z)V" deprecated="19"/> + <method name="setStopPreviousRingtone(Z)V"/> + <method name="setType(I)V"/> + <method name="stopPreviousRingtone()V"/> + <field name="ACTION_RINGTONE_PICKER"/> + <field name="EXTRA_RINGTONE_DEFAULT_URI"/> + <field name="EXTRA_RINGTONE_EXISTING_URI"/> + <field name="EXTRA_RINGTONE_INCLUDE_DRM" deprecated="19"/> + <field name="EXTRA_RINGTONE_PICKED_URI"/> + <field name="EXTRA_RINGTONE_SHOW_DEFAULT"/> + <field name="EXTRA_RINGTONE_SHOW_SILENT"/> + <field name="EXTRA_RINGTONE_TITLE"/> + <field name="EXTRA_RINGTONE_TYPE"/> + <field name="ID_COLUMN_INDEX"/> + <field name="TITLE_COLUMN_INDEX"/> + <field name="TYPE_ALARM"/> + <field name="TYPE_ALL"/> + <field name="TYPE_NOTIFICATION"/> + <field name="TYPE_RINGTONE"/> + <field name="URI_COLUMN_INDEX"/> + </class> + <class name="android/media/SoundPool" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(III)V" deprecated="21"/> + <method name="autoPause()V" since="8"/> + <method name="autoResume()V" since="8"/> + <method name="load(Landroid/content/Context;II)I"/> + <method name="load(Landroid/content/res/AssetFileDescriptor;I)I" since="3"/> + <method name="load(Ljava/io/FileDescriptor;JJI)I" since="3"/> + <method name="load(Ljava/lang/String;I)I"/> + <method name="pause(I)V"/> + <method name="play(IFFIIF)I"/> + <method name="release()V"/> + <method name="resume(I)V"/> + <method name="setLoop(II)V"/> + <method name="setOnLoadCompleteListener(Landroid/media/SoundPool$OnLoadCompleteListener;)V" since="8"/> + <method name="setPriority(II)V"/> + <method name="setRate(IF)V"/> + <method name="setVolume(IFF)V"/> + <method name="stop(I)V"/> + <method name="unload(I)Z"/> + </class> + <class name="android/media/SoundPool$Builder" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="build()Landroid/media/SoundPool;"/> + <method name="setAudioAttributes(Landroid/media/AudioAttributes;)Landroid/media/SoundPool$Builder;"/> + <method name="setMaxStreams(I)Landroid/media/SoundPool$Builder;"/> + </class> + <class name="android/media/SoundPool$OnLoadCompleteListener" since="8"> + <extends name="java/lang/Object"/> + <method name="onLoadComplete(Landroid/media/SoundPool;II)V"/> + </class> + <class name="android/media/SyncParams" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="allowDefaults()Landroid/media/SyncParams;"/> + <method name="getAudioAdjustMode()I"/> + <method name="getFrameRate()F"/> + <method name="getSyncSource()I"/> + <method name="getTolerance()F"/> + <method name="setAudioAdjustMode(I)Landroid/media/SyncParams;"/> + <method name="setFrameRate(F)Landroid/media/SyncParams;"/> + <method name="setSyncSource(I)Landroid/media/SyncParams;"/> + <method name="setTolerance(F)Landroid/media/SyncParams;"/> + <field name="AUDIO_ADJUST_MODE_DEFAULT"/> + <field name="AUDIO_ADJUST_MODE_RESAMPLE"/> + <field name="AUDIO_ADJUST_MODE_STRETCH"/> + <field name="SYNC_SOURCE_AUDIO"/> + <field name="SYNC_SOURCE_DEFAULT"/> + <field name="SYNC_SOURCE_SYSTEM_CLOCK"/> + <field name="SYNC_SOURCE_VSYNC"/> + </class> + <class name="android/media/ThumbnailUtils" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="createVideoThumbnail(Ljava/lang/String;I)Landroid/graphics/Bitmap;"/> + <method name="extractThumbnail(Landroid/graphics/Bitmap;II)Landroid/graphics/Bitmap;"/> + <method name="extractThumbnail(Landroid/graphics/Bitmap;III)Landroid/graphics/Bitmap;"/> + <field name="OPTIONS_RECYCLE_INPUT"/> + </class> + <class name="android/media/TimedMetaData" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getMetaData()[B"/> + <method name="getTimestamp()J"/> + </class> + <class name="android/media/TimedText" since="16"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getBounds()Landroid/graphics/Rect;"/> + <method name="getText()Ljava/lang/String;"/> + </class> + <class name="android/media/ToneGenerator" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(II)V"/> + <method name="getAudioSessionId()I" since="16"/> + <method name="release()V"/> + <method name="startTone(I)Z"/> + <method name="startTone(II)Z" since="5"/> + <method name="stopTone()V"/> + <field name="MAX_VOLUME"/> + <field name="MIN_VOLUME"/> + <field name="TONE_CDMA_ABBR_ALERT" since="4"/> + <field name="TONE_CDMA_ABBR_INTERCEPT" since="4"/> + <field name="TONE_CDMA_ABBR_REORDER" since="4"/> + <field name="TONE_CDMA_ALERT_AUTOREDIAL_LITE" since="4"/> + <field name="TONE_CDMA_ALERT_CALL_GUARD" since="4"/> + <field name="TONE_CDMA_ALERT_INCALL_LITE" since="4"/> + <field name="TONE_CDMA_ALERT_NETWORK_LITE" since="4"/> + <field name="TONE_CDMA_ANSWER" since="4"/> + <field name="TONE_CDMA_CALLDROP_LITE" since="4"/> + <field name="TONE_CDMA_CALL_SIGNAL_ISDN_INTERGROUP" since="4"/> + <field name="TONE_CDMA_CALL_SIGNAL_ISDN_NORMAL" since="4"/> + <field name="TONE_CDMA_CALL_SIGNAL_ISDN_PAT3" since="4"/> + <field name="TONE_CDMA_CALL_SIGNAL_ISDN_PAT5" since="4"/> + <field name="TONE_CDMA_CALL_SIGNAL_ISDN_PAT6" since="4"/> + <field name="TONE_CDMA_CALL_SIGNAL_ISDN_PAT7" since="4"/> + <field name="TONE_CDMA_CALL_SIGNAL_ISDN_PING_RING" since="4"/> + <field name="TONE_CDMA_CALL_SIGNAL_ISDN_SP_PRI" since="4"/> + <field name="TONE_CDMA_CONFIRM" since="4"/> + <field name="TONE_CDMA_DIAL_TONE_LITE" since="4"/> + <field name="TONE_CDMA_EMERGENCY_RINGBACK" since="4"/> + <field name="TONE_CDMA_HIGH_L" since="4"/> + <field name="TONE_CDMA_HIGH_PBX_L" since="4"/> + <field name="TONE_CDMA_HIGH_PBX_SLS" since="4"/> + <field name="TONE_CDMA_HIGH_PBX_SS" since="4"/> + <field name="TONE_CDMA_HIGH_PBX_SSL" since="4"/> + <field name="TONE_CDMA_HIGH_PBX_S_X4" since="4"/> + <field name="TONE_CDMA_HIGH_SLS" since="4"/> + <field name="TONE_CDMA_HIGH_SS" since="4"/> + <field name="TONE_CDMA_HIGH_SSL" since="4"/> + <field name="TONE_CDMA_HIGH_SS_2" since="4"/> + <field name="TONE_CDMA_HIGH_S_X4" since="4"/> + <field name="TONE_CDMA_INTERCEPT" since="4"/> + <field name="TONE_CDMA_KEYPAD_VOLUME_KEY_LITE" since="4"/> + <field name="TONE_CDMA_LOW_L" since="4"/> + <field name="TONE_CDMA_LOW_PBX_L" since="4"/> + <field name="TONE_CDMA_LOW_PBX_SLS" since="4"/> + <field name="TONE_CDMA_LOW_PBX_SS" since="4"/> + <field name="TONE_CDMA_LOW_PBX_SSL" since="4"/> + <field name="TONE_CDMA_LOW_PBX_S_X4" since="4"/> + <field name="TONE_CDMA_LOW_SLS" since="4"/> + <field name="TONE_CDMA_LOW_SS" since="4"/> + <field name="TONE_CDMA_LOW_SSL" since="4"/> + <field name="TONE_CDMA_LOW_SS_2" since="4"/> + <field name="TONE_CDMA_LOW_S_X4" since="4"/> + <field name="TONE_CDMA_MED_L" since="4"/> + <field name="TONE_CDMA_MED_PBX_L" since="4"/> + <field name="TONE_CDMA_MED_PBX_SLS" since="4"/> + <field name="TONE_CDMA_MED_PBX_SS" since="4"/> + <field name="TONE_CDMA_MED_PBX_SSL" since="4"/> + <field name="TONE_CDMA_MED_PBX_S_X4" since="4"/> + <field name="TONE_CDMA_MED_SLS" since="4"/> + <field name="TONE_CDMA_MED_SS" since="4"/> + <field name="TONE_CDMA_MED_SSL" since="4"/> + <field name="TONE_CDMA_MED_SS_2" since="4"/> + <field name="TONE_CDMA_MED_S_X4" since="4"/> + <field name="TONE_CDMA_NETWORK_BUSY" since="4"/> + <field name="TONE_CDMA_NETWORK_BUSY_ONE_SHOT" since="4"/> + <field name="TONE_CDMA_NETWORK_CALLWAITING" since="4"/> + <field name="TONE_CDMA_NETWORK_USA_RINGBACK" since="4"/> + <field name="TONE_CDMA_ONE_MIN_BEEP" since="4"/> + <field name="TONE_CDMA_PIP" since="4"/> + <field name="TONE_CDMA_PRESSHOLDKEY_LITE" since="4"/> + <field name="TONE_CDMA_REORDER" since="4"/> + <field name="TONE_CDMA_SIGNAL_OFF" since="4"/> + <field name="TONE_CDMA_SOFT_ERROR_LITE" since="4"/> + <field name="TONE_DTMF_0"/> + <field name="TONE_DTMF_1"/> + <field name="TONE_DTMF_2"/> + <field name="TONE_DTMF_3"/> + <field name="TONE_DTMF_4"/> + <field name="TONE_DTMF_5"/> + <field name="TONE_DTMF_6"/> + <field name="TONE_DTMF_7"/> + <field name="TONE_DTMF_8"/> + <field name="TONE_DTMF_9"/> + <field name="TONE_DTMF_A"/> + <field name="TONE_DTMF_B"/> + <field name="TONE_DTMF_C"/> + <field name="TONE_DTMF_D"/> + <field name="TONE_DTMF_P"/> + <field name="TONE_DTMF_S"/> + <field name="TONE_PROP_ACK"/> + <field name="TONE_PROP_BEEP"/> + <field name="TONE_PROP_BEEP2"/> + <field name="TONE_PROP_NACK"/> + <field name="TONE_PROP_PROMPT"/> + <field name="TONE_SUP_BUSY"/> + <field name="TONE_SUP_CALL_WAITING"/> + <field name="TONE_SUP_CONFIRM" since="4"/> + <field name="TONE_SUP_CONGESTION"/> + <field name="TONE_SUP_CONGESTION_ABBREV" since="4"/> + <field name="TONE_SUP_DIAL"/> + <field name="TONE_SUP_ERROR"/> + <field name="TONE_SUP_INTERCEPT" since="4"/> + <field name="TONE_SUP_INTERCEPT_ABBREV" since="4"/> + <field name="TONE_SUP_PIP" since="4"/> + <field name="TONE_SUP_RADIO_ACK"/> + <field name="TONE_SUP_RADIO_NOTAVAIL"/> + <field name="TONE_SUP_RINGTONE"/> + </class> + <class name="android/media/UnsupportedSchemeException" since="18"> + <extends name="android/media/MediaDrmException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/media/VolumeAutomation" since="26"> + <extends name="java/lang/Object"/> + <method name="createVolumeShaper(Landroid/media/VolumeShaper$Configuration;)Landroid/media/VolumeShaper;"/> + </class> + <class name="android/media/VolumeProvider" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(III)V"/> + <method name="getCurrentVolume()I"/> + <method name="getMaxVolume()I"/> + <method name="getVolumeControl()I"/> + <method name="onAdjustVolume(I)V"/> + <method name="onSetVolumeTo(I)V"/> + <method name="setCurrentVolume(I)V"/> + <field name="VOLUME_CONTROL_ABSOLUTE"/> + <field name="VOLUME_CONTROL_FIXED"/> + <field name="VOLUME_CONTROL_RELATIVE"/> + </class> + <class name="android/media/VolumeShaper" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable"/> + <method name="<init>()V"/> + <method name="apply(Landroid/media/VolumeShaper$Operation;)V"/> + <method name="getVolume()F"/> + <method name="replace(Landroid/media/VolumeShaper$Configuration;Landroid/media/VolumeShaper$Operation;Z)V"/> + </class> + <class name="android/media/VolumeShaper$Configuration" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getDuration()J"/> + <method name="getInterpolatorType()I"/> + <method name="getMaximumCurvePoints()I"/> + <method name="getTimes()[F"/> + <method name="getVolumes()[F"/> + <field name="CREATOR"/> + <field name="CUBIC_RAMP"/> + <field name="INTERPOLATOR_TYPE_CUBIC"/> + <field name="INTERPOLATOR_TYPE_CUBIC_MONOTONIC"/> + <field name="INTERPOLATOR_TYPE_LINEAR"/> + <field name="INTERPOLATOR_TYPE_STEP"/> + <field name="LINEAR_RAMP"/> + <field name="SCURVE_RAMP"/> + <field name="SINE_RAMP"/> + </class> + <class name="android/media/VolumeShaper$Configuration$Builder" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/media/VolumeShaper$Configuration;)V"/> + <method name="build()Landroid/media/VolumeShaper$Configuration;"/> + <method name="invertVolumes()Landroid/media/VolumeShaper$Configuration$Builder;"/> + <method name="reflectTimes()Landroid/media/VolumeShaper$Configuration$Builder;"/> + <method name="scaleToEndVolume(F)Landroid/media/VolumeShaper$Configuration$Builder;"/> + <method name="scaleToStartVolume(F)Landroid/media/VolumeShaper$Configuration$Builder;"/> + <method name="setCurve([F[F)Landroid/media/VolumeShaper$Configuration$Builder;"/> + <method name="setDuration(J)Landroid/media/VolumeShaper$Configuration$Builder;"/> + <method name="setInterpolatorType(I)Landroid/media/VolumeShaper$Configuration$Builder;"/> + </class> + <class name="android/media/VolumeShaper$Operation" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <field name="CREATOR"/> + <field name="PLAY"/> + <field name="REVERSE"/> + </class> + <class name="android/media/audiofx/AcousticEchoCanceler" since="16"> + <extends name="android/media/audiofx/AudioEffect"/> + <method name="<init>()V"/> + <method name="create(I)Landroid/media/audiofx/AcousticEchoCanceler;"/> + <method name="isAvailable()Z"/> + </class> + <class name="android/media/audiofx/AudioEffect" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getDescriptor()Landroid/media/audiofx/AudioEffect$Descriptor;"/> + <method name="getEnabled()Z"/> + <method name="getId()I"/> + <method name="hasControl()Z"/> + <method name="queryEffects()[Landroid/media/audiofx/AudioEffect$Descriptor;"/> + <method name="release()V"/> + <method name="setControlStatusListener(Landroid/media/audiofx/AudioEffect$OnControlStatusChangeListener;)V"/> + <method name="setEnableStatusListener(Landroid/media/audiofx/AudioEffect$OnEnableStatusChangeListener;)V"/> + <method name="setEnabled(Z)I"/> + <field name="ACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION"/> + <field name="ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL"/> + <field name="ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION"/> + <field name="ALREADY_EXISTS"/> + <field name="CONTENT_TYPE_GAME"/> + <field name="CONTENT_TYPE_MOVIE"/> + <field name="CONTENT_TYPE_MUSIC"/> + <field name="CONTENT_TYPE_VOICE"/> + <field name="EFFECT_AUXILIARY"/> + <field name="EFFECT_INSERT"/> + <field name="EFFECT_TYPE_AEC" since="18"/> + <field name="EFFECT_TYPE_AGC" since="18"/> + <field name="EFFECT_TYPE_BASS_BOOST" since="18"/> + <field name="EFFECT_TYPE_ENV_REVERB" since="18"/> + <field name="EFFECT_TYPE_EQUALIZER" since="18"/> + <field name="EFFECT_TYPE_LOUDNESS_ENHANCER" since="19"/> + <field name="EFFECT_TYPE_NS" since="18"/> + <field name="EFFECT_TYPE_PRESET_REVERB" since="18"/> + <field name="EFFECT_TYPE_VIRTUALIZER" since="18"/> + <field name="ERROR"/> + <field name="ERROR_BAD_VALUE"/> + <field name="ERROR_DEAD_OBJECT"/> + <field name="ERROR_INVALID_OPERATION"/> + <field name="ERROR_NO_INIT"/> + <field name="ERROR_NO_MEMORY"/> + <field name="EXTRA_AUDIO_SESSION"/> + <field name="EXTRA_CONTENT_TYPE"/> + <field name="EXTRA_PACKAGE_NAME"/> + <field name="SUCCESS"/> + </class> + <class name="android/media/audiofx/AudioEffect$Descriptor" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <field name="connectMode"/> + <field name="implementor"/> + <field name="name"/> + <field name="type"/> + <field name="uuid"/> + </class> + <class name="android/media/audiofx/AudioEffect$OnControlStatusChangeListener" since="9"> + <extends name="java/lang/Object"/> + <method name="onControlStatusChange(Landroid/media/audiofx/AudioEffect;Z)V"/> + </class> + <class name="android/media/audiofx/AudioEffect$OnEnableStatusChangeListener" since="9"> + <extends name="java/lang/Object"/> + <method name="onEnableStatusChange(Landroid/media/audiofx/AudioEffect;Z)V"/> + </class> + <class name="android/media/audiofx/AutomaticGainControl" since="16"> + <extends name="android/media/audiofx/AudioEffect"/> + <method name="<init>()V"/> + <method name="create(I)Landroid/media/audiofx/AutomaticGainControl;"/> + <method name="isAvailable()Z"/> + </class> + <class name="android/media/audiofx/BassBoost" since="9"> + <extends name="android/media/audiofx/AudioEffect"/> + <method name="<init>(II)V"/> + <method name="getProperties()Landroid/media/audiofx/BassBoost$Settings;"/> + <method name="getRoundedStrength()S"/> + <method name="getStrengthSupported()Z"/> + <method name="setParameterListener(Landroid/media/audiofx/BassBoost$OnParameterChangeListener;)V"/> + <method name="setProperties(Landroid/media/audiofx/BassBoost$Settings;)V"/> + <method name="setStrength(S)V"/> + <field name="PARAM_STRENGTH"/> + <field name="PARAM_STRENGTH_SUPPORTED"/> + </class> + <class name="android/media/audiofx/BassBoost$OnParameterChangeListener" since="9"> + <extends name="java/lang/Object"/> + <method name="onParameterChange(Landroid/media/audiofx/BassBoost;IIS)V"/> + </class> + <class name="android/media/audiofx/BassBoost$Settings" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <field name="strength"/> + </class> + <class name="android/media/audiofx/EnvironmentalReverb" since="9"> + <extends name="android/media/audiofx/AudioEffect"/> + <method name="<init>(II)V"/> + <method name="getDecayHFRatio()S"/> + <method name="getDecayTime()I"/> + <method name="getDensity()S"/> + <method name="getDiffusion()S"/> + <method name="getProperties()Landroid/media/audiofx/EnvironmentalReverb$Settings;"/> + <method name="getReflectionsDelay()I"/> + <method name="getReflectionsLevel()S"/> + <method name="getReverbDelay()I"/> + <method name="getReverbLevel()S"/> + <method name="getRoomHFLevel()S"/> + <method name="getRoomLevel()S"/> + <method name="setDecayHFRatio(S)V"/> + <method name="setDecayTime(I)V"/> + <method name="setDensity(S)V"/> + <method name="setDiffusion(S)V"/> + <method name="setParameterListener(Landroid/media/audiofx/EnvironmentalReverb$OnParameterChangeListener;)V"/> + <method name="setProperties(Landroid/media/audiofx/EnvironmentalReverb$Settings;)V"/> + <method name="setReflectionsDelay(I)V"/> + <method name="setReflectionsLevel(S)V"/> + <method name="setReverbDelay(I)V"/> + <method name="setReverbLevel(S)V"/> + <method name="setRoomHFLevel(S)V"/> + <method name="setRoomLevel(S)V"/> + <field name="PARAM_DECAY_HF_RATIO"/> + <field name="PARAM_DECAY_TIME"/> + <field name="PARAM_DENSITY"/> + <field name="PARAM_DIFFUSION"/> + <field name="PARAM_REFLECTIONS_DELAY"/> + <field name="PARAM_REFLECTIONS_LEVEL"/> + <field name="PARAM_REVERB_DELAY"/> + <field name="PARAM_REVERB_LEVEL"/> + <field name="PARAM_ROOM_HF_LEVEL"/> + <field name="PARAM_ROOM_LEVEL"/> + </class> + <class name="android/media/audiofx/EnvironmentalReverb$OnParameterChangeListener" since="9"> + <extends name="java/lang/Object"/> + <method name="onParameterChange(Landroid/media/audiofx/EnvironmentalReverb;III)V"/> + </class> + <class name="android/media/audiofx/EnvironmentalReverb$Settings" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <field name="decayHFRatio"/> + <field name="decayTime"/> + <field name="density"/> + <field name="diffusion"/> + <field name="reflectionsDelay"/> + <field name="reflectionsLevel"/> + <field name="reverbDelay"/> + <field name="reverbLevel"/> + <field name="roomHFLevel"/> + <field name="roomLevel"/> + </class> + <class name="android/media/audiofx/Equalizer" since="9"> + <extends name="android/media/audiofx/AudioEffect"/> + <method name="<init>(II)V"/> + <method name="getBand(I)S"/> + <method name="getBandFreqRange(S)[I"/> + <method name="getBandLevel(S)S"/> + <method name="getBandLevelRange()[S"/> + <method name="getCenterFreq(S)I"/> + <method name="getCurrentPreset()S"/> + <method name="getNumberOfBands()S"/> + <method name="getNumberOfPresets()S"/> + <method name="getPresetName(S)Ljava/lang/String;"/> + <method name="getProperties()Landroid/media/audiofx/Equalizer$Settings;"/> + <method name="setBandLevel(SS)V"/> + <method name="setParameterListener(Landroid/media/audiofx/Equalizer$OnParameterChangeListener;)V"/> + <method name="setProperties(Landroid/media/audiofx/Equalizer$Settings;)V"/> + <method name="usePreset(S)V"/> + <field name="PARAM_BAND_FREQ_RANGE"/> + <field name="PARAM_BAND_LEVEL"/> + <field name="PARAM_CENTER_FREQ"/> + <field name="PARAM_CURRENT_PRESET"/> + <field name="PARAM_GET_BAND"/> + <field name="PARAM_GET_NUM_OF_PRESETS"/> + <field name="PARAM_GET_PRESET_NAME"/> + <field name="PARAM_LEVEL_RANGE"/> + <field name="PARAM_NUM_BANDS"/> + <field name="PARAM_STRING_SIZE_MAX"/> + </class> + <class name="android/media/audiofx/Equalizer$OnParameterChangeListener" since="9"> + <extends name="java/lang/Object"/> + <method name="onParameterChange(Landroid/media/audiofx/Equalizer;IIII)V"/> + </class> + <class name="android/media/audiofx/Equalizer$Settings" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <field name="bandLevels"/> + <field name="curPreset"/> + <field name="numBands"/> + </class> + <class name="android/media/audiofx/LoudnessEnhancer" since="19"> + <extends name="android/media/audiofx/AudioEffect"/> + <method name="<init>(I)V"/> + <method name="getTargetGain()F"/> + <method name="setTargetGain(I)V"/> + <field name="PARAM_TARGET_GAIN_MB"/> + </class> + <class name="android/media/audiofx/NoiseSuppressor" since="16"> + <extends name="android/media/audiofx/AudioEffect"/> + <method name="<init>()V"/> + <method name="create(I)Landroid/media/audiofx/NoiseSuppressor;"/> + <method name="isAvailable()Z"/> + </class> + <class name="android/media/audiofx/PresetReverb" since="9"> + <extends name="android/media/audiofx/AudioEffect"/> + <method name="<init>(II)V"/> + <method name="getPreset()S"/> + <method name="getProperties()Landroid/media/audiofx/PresetReverb$Settings;"/> + <method name="setParameterListener(Landroid/media/audiofx/PresetReverb$OnParameterChangeListener;)V"/> + <method name="setPreset(S)V"/> + <method name="setProperties(Landroid/media/audiofx/PresetReverb$Settings;)V"/> + <field name="PARAM_PRESET"/> + <field name="PRESET_LARGEHALL"/> + <field name="PRESET_LARGEROOM"/> + <field name="PRESET_MEDIUMHALL"/> + <field name="PRESET_MEDIUMROOM"/> + <field name="PRESET_NONE"/> + <field name="PRESET_PLATE"/> + <field name="PRESET_SMALLROOM"/> + </class> + <class name="android/media/audiofx/PresetReverb$OnParameterChangeListener" since="9"> + <extends name="java/lang/Object"/> + <method name="onParameterChange(Landroid/media/audiofx/PresetReverb;IIS)V"/> + </class> + <class name="android/media/audiofx/PresetReverb$Settings" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <field name="preset"/> + </class> + <class name="android/media/audiofx/Virtualizer" since="9"> + <extends name="android/media/audiofx/AudioEffect"/> + <method name="<init>(II)V"/> + <method name="canVirtualize(II)Z" since="21"/> + <method name="forceVirtualizationMode(I)Z" since="21"/> + <method name="getProperties()Landroid/media/audiofx/Virtualizer$Settings;"/> + <method name="getRoundedStrength()S"/> + <method name="getSpeakerAngles(II[I)Z" since="21"/> + <method name="getStrengthSupported()Z"/> + <method name="getVirtualizationMode()I" since="21"/> + <method name="setParameterListener(Landroid/media/audiofx/Virtualizer$OnParameterChangeListener;)V"/> + <method name="setProperties(Landroid/media/audiofx/Virtualizer$Settings;)V"/> + <method name="setStrength(S)V"/> + <field name="PARAM_STRENGTH"/> + <field name="PARAM_STRENGTH_SUPPORTED"/> + <field name="VIRTUALIZATION_MODE_AUTO" since="21"/> + <field name="VIRTUALIZATION_MODE_BINAURAL" since="21"/> + <field name="VIRTUALIZATION_MODE_OFF" since="21"/> + <field name="VIRTUALIZATION_MODE_TRANSAURAL" since="21"/> + </class> + <class name="android/media/audiofx/Virtualizer$OnParameterChangeListener" since="9"> + <extends name="java/lang/Object"/> + <method name="onParameterChange(Landroid/media/audiofx/Virtualizer;IIS)V"/> + </class> + <class name="android/media/audiofx/Virtualizer$Settings" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <field name="strength"/> + </class> + <class name="android/media/audiofx/Visualizer" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>(I)V"/> + <method name="getCaptureSize()I"/> + <method name="getCaptureSizeRange()[I"/> + <method name="getEnabled()Z"/> + <method name="getFft([B)I"/> + <method name="getMaxCaptureRate()I"/> + <method name="getMeasurementMode()I" since="19"/> + <method name="getMeasurementPeakRms(Landroid/media/audiofx/Visualizer$MeasurementPeakRms;)I" since="19"/> + <method name="getSamplingRate()I"/> + <method name="getScalingMode()I" since="16"/> + <method name="getWaveForm([B)I"/> + <method name="release()V"/> + <method name="setCaptureSize(I)I"/> + <method name="setDataCaptureListener(Landroid/media/audiofx/Visualizer$OnDataCaptureListener;IZZ)I"/> + <method name="setEnabled(Z)I"/> + <method name="setMeasurementMode(I)I" since="19"/> + <method name="setScalingMode(I)I" since="16"/> + <field name="ALREADY_EXISTS"/> + <field name="ERROR"/> + <field name="ERROR_BAD_VALUE"/> + <field name="ERROR_DEAD_OBJECT"/> + <field name="ERROR_INVALID_OPERATION"/> + <field name="ERROR_NO_INIT"/> + <field name="ERROR_NO_MEMORY"/> + <field name="MEASUREMENT_MODE_NONE" since="19"/> + <field name="MEASUREMENT_MODE_PEAK_RMS" since="19"/> + <field name="SCALING_MODE_AS_PLAYED" since="16"/> + <field name="SCALING_MODE_NORMALIZED" since="16"/> + <field name="STATE_ENABLED"/> + <field name="STATE_INITIALIZED"/> + <field name="STATE_UNINITIALIZED"/> + <field name="SUCCESS"/> + </class> + <class name="android/media/audiofx/Visualizer$MeasurementPeakRms" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="mPeak"/> + <field name="mRms"/> + </class> + <class name="android/media/audiofx/Visualizer$OnDataCaptureListener" since="9"> + <extends name="java/lang/Object"/> + <method name="onFftDataCapture(Landroid/media/audiofx/Visualizer;[BI)V"/> + <method name="onWaveFormDataCapture(Landroid/media/audiofx/Visualizer;[BI)V"/> + </class> + <class name="android/media/browse/MediaBrowser" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;Landroid/content/ComponentName;Landroid/media/browse/MediaBrowser$ConnectionCallback;Landroid/os/Bundle;)V"/> + <method name="connect()V"/> + <method name="disconnect()V"/> + <method name="getExtras()Landroid/os/Bundle;"/> + <method name="getItem(Ljava/lang/String;Landroid/media/browse/MediaBrowser$ItemCallback;)V" since="23"/> + <method name="getRoot()Ljava/lang/String;"/> + <method name="getServiceComponent()Landroid/content/ComponentName;"/> + <method name="getSessionToken()Landroid/media/session/MediaSession$Token;"/> + <method name="isConnected()Z"/> + <method name="subscribe(Ljava/lang/String;Landroid/media/browse/MediaBrowser$SubscriptionCallback;)V"/> + <method name="subscribe(Ljava/lang/String;Landroid/os/Bundle;Landroid/media/browse/MediaBrowser$SubscriptionCallback;)V" since="24"/> + <method name="unsubscribe(Ljava/lang/String;)V"/> + <method name="unsubscribe(Ljava/lang/String;Landroid/media/browse/MediaBrowser$SubscriptionCallback;)V" since="24"/> + <field name="EXTRA_PAGE" since="24"/> + <field name="EXTRA_PAGE_SIZE" since="24"/> + </class> + <class name="android/media/browse/MediaBrowser$ConnectionCallback" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onConnected()V"/> + <method name="onConnectionFailed()V"/> + <method name="onConnectionSuspended()V"/> + </class> + <class name="android/media/browse/MediaBrowser$ItemCallback" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onError(Ljava/lang/String;)V"/> + <method name="onItemLoaded(Landroid/media/browse/MediaBrowser$MediaItem;)V"/> + </class> + <class name="android/media/browse/MediaBrowser$MediaItem" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/media/MediaDescription;I)V"/> + <method name="getDescription()Landroid/media/MediaDescription;"/> + <method name="getFlags()I"/> + <method name="getMediaId()Ljava/lang/String;"/> + <method name="isBrowsable()Z"/> + <method name="isPlayable()Z"/> + <field name="CREATOR"/> + <field name="FLAG_BROWSABLE"/> + <field name="FLAG_PLAYABLE"/> + </class> + <class name="android/media/browse/MediaBrowser$SubscriptionCallback" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onChildrenLoaded(Ljava/lang/String;Ljava/util/List;)V"/> + <method name="onChildrenLoaded(Ljava/lang/String;Ljava/util/List;Landroid/os/Bundle;)V" since="24"/> + <method name="onError(Ljava/lang/String;)V"/> + <method name="onError(Ljava/lang/String;Landroid/os/Bundle;)V" since="24"/> + </class> + <class name="android/media/effect/Effect" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="apply(IIII)V"/> + <method name="getName()Ljava/lang/String;"/> + <method name="release()V"/> + <method name="setParameter(Ljava/lang/String;Ljava/lang/Object;)V"/> + <method name="setUpdateListener(Landroid/media/effect/EffectUpdateListener;)V"/> + </class> + <class name="android/media/effect/EffectContext" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="createWithCurrentGlContext()Landroid/media/effect/EffectContext;"/> + <method name="getFactory()Landroid/media/effect/EffectFactory;"/> + <method name="release()V"/> + </class> + <class name="android/media/effect/EffectFactory" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="createEffect(Ljava/lang/String;)Landroid/media/effect/Effect;"/> + <method name="isEffectSupported(Ljava/lang/String;)Z"/> + <field name="EFFECT_AUTOFIX"/> + <field name="EFFECT_BACKDROPPER"/> + <field name="EFFECT_BITMAPOVERLAY"/> + <field name="EFFECT_BLACKWHITE"/> + <field name="EFFECT_BRIGHTNESS"/> + <field name="EFFECT_CONTRAST"/> + <field name="EFFECT_CROP"/> + <field name="EFFECT_CROSSPROCESS"/> + <field name="EFFECT_DOCUMENTARY"/> + <field name="EFFECT_DUOTONE"/> + <field name="EFFECT_FILLLIGHT"/> + <field name="EFFECT_FISHEYE"/> + <field name="EFFECT_FLIP"/> + <field name="EFFECT_GRAIN"/> + <field name="EFFECT_GRAYSCALE"/> + <field name="EFFECT_LOMOISH"/> + <field name="EFFECT_NEGATIVE"/> + <field name="EFFECT_POSTERIZE"/> + <field name="EFFECT_REDEYE"/> + <field name="EFFECT_ROTATE"/> + <field name="EFFECT_SATURATE"/> + <field name="EFFECT_SEPIA"/> + <field name="EFFECT_SHARPEN"/> + <field name="EFFECT_STRAIGHTEN"/> + <field name="EFFECT_TEMPERATURE"/> + <field name="EFFECT_TINT"/> + <field name="EFFECT_VIGNETTE"/> + </class> + <class name="android/media/effect/EffectUpdateListener" since="14"> + <extends name="java/lang/Object"/> + <method name="onEffectUpdated(Landroid/media/effect/Effect;Ljava/lang/Object;)V"/> + </class> + <class name="android/media/midi/MidiDevice" since="23"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable"/> + <method name="<init>()V"/> + <method name="connectPorts(Landroid/media/midi/MidiInputPort;I)Landroid/media/midi/MidiDevice$MidiConnection;"/> + <method name="getInfo()Landroid/media/midi/MidiDeviceInfo;"/> + <method name="openInputPort(I)Landroid/media/midi/MidiInputPort;"/> + <method name="openOutputPort(I)Landroid/media/midi/MidiOutputPort;"/> + </class> + <class name="android/media/midi/MidiDevice$MidiConnection" since="23"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable"/> + <method name="<init>(Landroid/media/midi/MidiDevice;)V"/> + </class> + <class name="android/media/midi/MidiDeviceInfo" since="23"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getId()I"/> + <method name="getInputPortCount()I"/> + <method name="getOutputPortCount()I"/> + <method name="getPorts()[Landroid/media/midi/MidiDeviceInfo$PortInfo;"/> + <method name="getProperties()Landroid/os/Bundle;"/> + <method name="getType()I"/> + <method name="isPrivate()Z"/> + <field name="CREATOR"/> + <field name="PROPERTY_BLUETOOTH_DEVICE"/> + <field name="PROPERTY_MANUFACTURER"/> + <field name="PROPERTY_NAME"/> + <field name="PROPERTY_PRODUCT"/> + <field name="PROPERTY_SERIAL_NUMBER"/> + <field name="PROPERTY_USB_DEVICE"/> + <field name="PROPERTY_VERSION"/> + <field name="TYPE_BLUETOOTH"/> + <field name="TYPE_USB"/> + <field name="TYPE_VIRTUAL"/> + </class> + <class name="android/media/midi/MidiDeviceInfo$PortInfo" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getPortNumber()I"/> + <method name="getType()I"/> + <field name="TYPE_INPUT"/> + <field name="TYPE_OUTPUT"/> + </class> + <class name="android/media/midi/MidiDeviceService" since="23"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="getDeviceInfo()Landroid/media/midi/MidiDeviceInfo;"/> + <method name="getOutputPortReceivers()[Landroid/media/midi/MidiReceiver;"/> + <method name="onClose()V"/> + <method name="onDeviceStatusChanged(Landroid/media/midi/MidiDeviceStatus;)V"/> + <method name="onGetInputPortReceivers()[Landroid/media/midi/MidiReceiver;"/> + <field name="SERVICE_INTERFACE"/> + </class> + <class name="android/media/midi/MidiDeviceStatus" since="23"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getDeviceInfo()Landroid/media/midi/MidiDeviceInfo;"/> + <method name="getOutputPortOpenCount(I)I"/> + <method name="isInputPortOpen(I)Z"/> + <field name="CREATOR"/> + </class> + <class name="android/media/midi/MidiInputPort" since="23"> + <extends name="android/media/midi/MidiReceiver"/> + <implements name="java/io/Closeable"/> + <method name="<init>()V"/> + <method name="getPortNumber()I"/> + </class> + <class name="android/media/midi/MidiManager" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getDevices()[Landroid/media/midi/MidiDeviceInfo;"/> + <method name="openBluetoothDevice(Landroid/bluetooth/BluetoothDevice;Landroid/media/midi/MidiManager$OnDeviceOpenedListener;Landroid/os/Handler;)V"/> + <method name="openDevice(Landroid/media/midi/MidiDeviceInfo;Landroid/media/midi/MidiManager$OnDeviceOpenedListener;Landroid/os/Handler;)V"/> + <method name="registerDeviceCallback(Landroid/media/midi/MidiManager$DeviceCallback;Landroid/os/Handler;)V"/> + <method name="unregisterDeviceCallback(Landroid/media/midi/MidiManager$DeviceCallback;)V"/> + </class> + <class name="android/media/midi/MidiManager$DeviceCallback" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onDeviceAdded(Landroid/media/midi/MidiDeviceInfo;)V"/> + <method name="onDeviceRemoved(Landroid/media/midi/MidiDeviceInfo;)V"/> + <method name="onDeviceStatusChanged(Landroid/media/midi/MidiDeviceStatus;)V"/> + </class> + <class name="android/media/midi/MidiManager$OnDeviceOpenedListener" since="23"> + <extends name="java/lang/Object"/> + <method name="onDeviceOpened(Landroid/media/midi/MidiDevice;)V"/> + </class> + <class name="android/media/midi/MidiOutputPort" since="23"> + <extends name="android/media/midi/MidiSender"/> + <implements name="java/io/Closeable"/> + <method name="<init>()V"/> + <method name="getPortNumber()I"/> + </class> + <class name="android/media/midi/MidiReceiver" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="flush()V"/> + <method name="getMaxMessageSize()I"/> + <method name="onFlush()V"/> + <method name="onSend([BIIJ)V"/> + <method name="send([BII)V"/> + <method name="send([BIIJ)V"/> + </class> + <class name="android/media/midi/MidiSender" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="connect(Landroid/media/midi/MidiReceiver;)V"/> + <method name="disconnect(Landroid/media/midi/MidiReceiver;)V"/> + <method name="onConnect(Landroid/media/midi/MidiReceiver;)V"/> + <method name="onDisconnect(Landroid/media/midi/MidiReceiver;)V"/> + </class> + <class name="android/media/projection/MediaProjection" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="createVirtualDisplay(Ljava/lang/String;IIIILandroid/view/Surface;Landroid/hardware/display/VirtualDisplay$Callback;Landroid/os/Handler;)Landroid/hardware/display/VirtualDisplay;"/> + <method name="registerCallback(Landroid/media/projection/MediaProjection$Callback;Landroid/os/Handler;)V"/> + <method name="stop()V"/> + <method name="unregisterCallback(Landroid/media/projection/MediaProjection$Callback;)V"/> + </class> + <class name="android/media/projection/MediaProjection$Callback" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onStop()V"/> + </class> + <class name="android/media/projection/MediaProjectionManager" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="createScreenCaptureIntent()Landroid/content/Intent;"/> + <method name="getMediaProjection(ILandroid/content/Intent;)Landroid/media/projection/MediaProjection;"/> + </class> + <class name="android/media/session/MediaController" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;Landroid/media/session/MediaSession$Token;)V"/> + <method name="adjustVolume(II)V"/> + <method name="dispatchMediaButtonEvent(Landroid/view/KeyEvent;)Z"/> + <method name="getExtras()Landroid/os/Bundle;"/> + <method name="getFlags()J"/> + <method name="getMetadata()Landroid/media/MediaMetadata;"/> + <method name="getPackageName()Ljava/lang/String;"/> + <method name="getPlaybackInfo()Landroid/media/session/MediaController$PlaybackInfo;"/> + <method name="getPlaybackState()Landroid/media/session/PlaybackState;"/> + <method name="getQueue()Ljava/util/List;"/> + <method name="getQueueTitle()Ljava/lang/CharSequence;"/> + <method name="getRatingType()I"/> + <method name="getSessionActivity()Landroid/app/PendingIntent;"/> + <method name="getSessionToken()Landroid/media/session/MediaSession$Token;"/> + <method name="getTransportControls()Landroid/media/session/MediaController$TransportControls;"/> + <method name="registerCallback(Landroid/media/session/MediaController$Callback;)V"/> + <method name="registerCallback(Landroid/media/session/MediaController$Callback;Landroid/os/Handler;)V"/> + <method name="sendCommand(Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ResultReceiver;)V"/> + <method name="setVolumeTo(II)V"/> + <method name="unregisterCallback(Landroid/media/session/MediaController$Callback;)V"/> + </class> + <class name="android/media/session/MediaController$Callback" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onAudioInfoChanged(Landroid/media/session/MediaController$PlaybackInfo;)V"/> + <method name="onExtrasChanged(Landroid/os/Bundle;)V"/> + <method name="onMetadataChanged(Landroid/media/MediaMetadata;)V"/> + <method name="onPlaybackStateChanged(Landroid/media/session/PlaybackState;)V"/> + <method name="onQueueChanged(Ljava/util/List;)V"/> + <method name="onQueueTitleChanged(Ljava/lang/CharSequence;)V"/> + <method name="onSessionDestroyed()V"/> + <method name="onSessionEvent(Ljava/lang/String;Landroid/os/Bundle;)V"/> + </class> + <class name="android/media/session/MediaController$PlaybackInfo" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAudioAttributes()Landroid/media/AudioAttributes;"/> + <method name="getCurrentVolume()I"/> + <method name="getMaxVolume()I"/> + <method name="getPlaybackType()I"/> + <method name="getVolumeControl()I"/> + <field name="PLAYBACK_TYPE_LOCAL"/> + <field name="PLAYBACK_TYPE_REMOTE"/> + </class> + <class name="android/media/session/MediaController$TransportControls" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/media/session/MediaController;)V"/> + <method name="fastForward()V"/> + <method name="pause()V"/> + <method name="play()V"/> + <method name="playFromMediaId(Ljava/lang/String;Landroid/os/Bundle;)V"/> + <method name="playFromSearch(Ljava/lang/String;Landroid/os/Bundle;)V"/> + <method name="playFromUri(Landroid/net/Uri;Landroid/os/Bundle;)V" since="23"/> + <method name="prepare()V" since="24"/> + <method name="prepareFromMediaId(Ljava/lang/String;Landroid/os/Bundle;)V" since="24"/> + <method name="prepareFromSearch(Ljava/lang/String;Landroid/os/Bundle;)V" since="24"/> + <method name="prepareFromUri(Landroid/net/Uri;Landroid/os/Bundle;)V" since="24"/> + <method name="rewind()V"/> + <method name="seekTo(J)V"/> + <method name="sendCustomAction(Landroid/media/session/PlaybackState$CustomAction;Landroid/os/Bundle;)V"/> + <method name="sendCustomAction(Ljava/lang/String;Landroid/os/Bundle;)V"/> + <method name="setRating(Landroid/media/Rating;)V"/> + <method name="skipToNext()V"/> + <method name="skipToPrevious()V"/> + <method name="skipToQueueItem(J)V"/> + <method name="stop()V"/> + </class> + <class name="android/media/session/MediaSession" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;Ljava/lang/String;)V"/> + <method name="getController()Landroid/media/session/MediaController;"/> + <method name="getSessionToken()Landroid/media/session/MediaSession$Token;"/> + <method name="isActive()Z"/> + <method name="release()V"/> + <method name="sendSessionEvent(Ljava/lang/String;Landroid/os/Bundle;)V"/> + <method name="setActive(Z)V"/> + <method name="setCallback(Landroid/media/session/MediaSession$Callback;)V"/> + <method name="setCallback(Landroid/media/session/MediaSession$Callback;Landroid/os/Handler;)V"/> + <method name="setExtras(Landroid/os/Bundle;)V"/> + <method name="setFlags(I)V"/> + <method name="setMediaButtonReceiver(Landroid/app/PendingIntent;)V"/> + <method name="setMetadata(Landroid/media/MediaMetadata;)V"/> + <method name="setPlaybackState(Landroid/media/session/PlaybackState;)V"/> + <method name="setPlaybackToLocal(Landroid/media/AudioAttributes;)V"/> + <method name="setPlaybackToRemote(Landroid/media/VolumeProvider;)V"/> + <method name="setQueue(Ljava/util/List;)V"/> + <method name="setQueueTitle(Ljava/lang/CharSequence;)V"/> + <method name="setRatingType(I)V" since="22"/> + <method name="setSessionActivity(Landroid/app/PendingIntent;)V"/> + <field name="FLAG_HANDLES_MEDIA_BUTTONS" deprecated="26"/> + <field name="FLAG_HANDLES_TRANSPORT_CONTROLS" deprecated="26"/> + </class> + <class name="android/media/session/MediaSession$Callback" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onCommand(Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ResultReceiver;)V"/> + <method name="onCustomAction(Ljava/lang/String;Landroid/os/Bundle;)V"/> + <method name="onFastForward()V"/> + <method name="onMediaButtonEvent(Landroid/content/Intent;)Z"/> + <method name="onPause()V"/> + <method name="onPlay()V"/> + <method name="onPlayFromMediaId(Ljava/lang/String;Landroid/os/Bundle;)V"/> + <method name="onPlayFromSearch(Ljava/lang/String;Landroid/os/Bundle;)V"/> + <method name="onPlayFromUri(Landroid/net/Uri;Landroid/os/Bundle;)V" since="23"/> + <method name="onPrepare()V" since="24"/> + <method name="onPrepareFromMediaId(Ljava/lang/String;Landroid/os/Bundle;)V" since="24"/> + <method name="onPrepareFromSearch(Ljava/lang/String;Landroid/os/Bundle;)V" since="24"/> + <method name="onPrepareFromUri(Landroid/net/Uri;Landroid/os/Bundle;)V" since="24"/> + <method name="onRewind()V"/> + <method name="onSeekTo(J)V"/> + <method name="onSetRating(Landroid/media/Rating;)V"/> + <method name="onSkipToNext()V"/> + <method name="onSkipToPrevious()V"/> + <method name="onSkipToQueueItem(J)V"/> + <method name="onStop()V"/> + </class> + <class name="android/media/session/MediaSession$QueueItem" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/media/MediaDescription;J)V"/> + <method name="getDescription()Landroid/media/MediaDescription;"/> + <method name="getQueueId()J"/> + <field name="CREATOR"/> + <field name="UNKNOWN_ID"/> + </class> + <class name="android/media/session/MediaSession$Token" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <field name="CREATOR"/> + </class> + <class name="android/media/session/MediaSessionManager" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addOnActiveSessionsChangedListener(Landroid/media/session/MediaSessionManager$OnActiveSessionsChangedListener;Landroid/content/ComponentName;)V"/> + <method name="addOnActiveSessionsChangedListener(Landroid/media/session/MediaSessionManager$OnActiveSessionsChangedListener;Landroid/content/ComponentName;Landroid/os/Handler;)V"/> + <method name="getActiveSessions(Landroid/content/ComponentName;)Ljava/util/List;"/> + <method name="removeOnActiveSessionsChangedListener(Landroid/media/session/MediaSessionManager$OnActiveSessionsChangedListener;)V"/> + </class> + <class name="android/media/session/MediaSessionManager$OnActiveSessionsChangedListener" since="21"> + <extends name="java/lang/Object"/> + <method name="onActiveSessionsChanged(Ljava/util/List;)V"/> + </class> + <class name="android/media/session/PlaybackState" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getActions()J"/> + <method name="getActiveQueueItemId()J"/> + <method name="getBufferedPosition()J"/> + <method name="getCustomActions()Ljava/util/List;"/> + <method name="getErrorMessage()Ljava/lang/CharSequence;"/> + <method name="getExtras()Landroid/os/Bundle;" since="22"/> + <method name="getLastPositionUpdateTime()J"/> + <method name="getPlaybackSpeed()F"/> + <method name="getPosition()J"/> + <method name="getState()I"/> + <field name="ACTION_FAST_FORWARD"/> + <field name="ACTION_PAUSE"/> + <field name="ACTION_PLAY"/> + <field name="ACTION_PLAY_FROM_MEDIA_ID"/> + <field name="ACTION_PLAY_FROM_SEARCH"/> + <field name="ACTION_PLAY_FROM_URI" since="23"/> + <field name="ACTION_PLAY_PAUSE"/> + <field name="ACTION_PREPARE" since="24"/> + <field name="ACTION_PREPARE_FROM_MEDIA_ID" since="24"/> + <field name="ACTION_PREPARE_FROM_SEARCH" since="24"/> + <field name="ACTION_PREPARE_FROM_URI" since="24"/> + <field name="ACTION_REWIND"/> + <field name="ACTION_SEEK_TO"/> + <field name="ACTION_SET_RATING"/> + <field name="ACTION_SKIP_TO_NEXT"/> + <field name="ACTION_SKIP_TO_PREVIOUS"/> + <field name="ACTION_SKIP_TO_QUEUE_ITEM"/> + <field name="ACTION_STOP"/> + <field name="CREATOR"/> + <field name="PLAYBACK_POSITION_UNKNOWN"/> + <field name="STATE_BUFFERING"/> + <field name="STATE_CONNECTING"/> + <field name="STATE_ERROR"/> + <field name="STATE_FAST_FORWARDING"/> + <field name="STATE_NONE"/> + <field name="STATE_PAUSED"/> + <field name="STATE_PLAYING"/> + <field name="STATE_REWINDING"/> + <field name="STATE_SKIPPING_TO_NEXT"/> + <field name="STATE_SKIPPING_TO_PREVIOUS"/> + <field name="STATE_SKIPPING_TO_QUEUE_ITEM"/> + <field name="STATE_STOPPED"/> + </class> + <class name="android/media/session/PlaybackState$Builder" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/media/session/PlaybackState;)V"/> + <method name="addCustomAction(Landroid/media/session/PlaybackState$CustomAction;)Landroid/media/session/PlaybackState$Builder;"/> + <method name="addCustomAction(Ljava/lang/String;Ljava/lang/String;I)Landroid/media/session/PlaybackState$Builder;"/> + <method name="build()Landroid/media/session/PlaybackState;"/> + <method name="setActions(J)Landroid/media/session/PlaybackState$Builder;"/> + <method name="setActiveQueueItemId(J)Landroid/media/session/PlaybackState$Builder;"/> + <method name="setBufferedPosition(J)Landroid/media/session/PlaybackState$Builder;"/> + <method name="setErrorMessage(Ljava/lang/CharSequence;)Landroid/media/session/PlaybackState$Builder;"/> + <method name="setExtras(Landroid/os/Bundle;)Landroid/media/session/PlaybackState$Builder;" since="22"/> + <method name="setState(IJF)Landroid/media/session/PlaybackState$Builder;"/> + <method name="setState(IJFJ)Landroid/media/session/PlaybackState$Builder;"/> + </class> + <class name="android/media/session/PlaybackState$CustomAction" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getAction()Ljava/lang/String;"/> + <method name="getExtras()Landroid/os/Bundle;"/> + <method name="getIcon()I"/> + <method name="getName()Ljava/lang/CharSequence;"/> + <field name="CREATOR"/> + </class> + <class name="android/media/session/PlaybackState$CustomAction$Builder" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/CharSequence;I)V"/> + <method name="build()Landroid/media/session/PlaybackState$CustomAction;"/> + <method name="setExtras(Landroid/os/Bundle;)Landroid/media/session/PlaybackState$CustomAction$Builder;"/> + </class> + <class name="android/media/tv/TvContentRating" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="contains(Landroid/media/tv/TvContentRating;)Z" since="24"/> + <method name="createRating(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Landroid/media/tv/TvContentRating;"/> + <method name="flattenToString()Ljava/lang/String;"/> + <method name="getDomain()Ljava/lang/String;"/> + <method name="getMainRating()Ljava/lang/String;"/> + <method name="getRatingSystem()Ljava/lang/String;"/> + <method name="getSubRatings()Ljava/util/List;"/> + <method name="unflattenFromString(Ljava/lang/String;)Landroid/media/tv/TvContentRating;"/> + <field name="UNRATED" since="23"/> + </class> + <class name="android/media/tv/TvContract" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="buildChannelLogoUri(J)Landroid/net/Uri;"/> + <method name="buildChannelLogoUri(Landroid/net/Uri;)Landroid/net/Uri;"/> + <method name="buildChannelUri(J)Landroid/net/Uri;"/> + <method name="buildChannelUriForPassthroughInput(Ljava/lang/String;)Landroid/net/Uri;"/> + <method name="buildChannelsUriForInput(Ljava/lang/String;)Landroid/net/Uri;"/> + <method name="buildInputId(Landroid/content/ComponentName;)Ljava/lang/String;"/> + <method name="buildPreviewProgramUri(J)Landroid/net/Uri;" since="26"/> + <method name="buildPreviewProgramsUriForChannel(J)Landroid/net/Uri;" since="26"/> + <method name="buildPreviewProgramsUriForChannel(Landroid/net/Uri;)Landroid/net/Uri;" since="26"/> + <method name="buildProgramUri(J)Landroid/net/Uri;"/> + <method name="buildProgramsUriForChannel(J)Landroid/net/Uri;"/> + <method name="buildProgramsUriForChannel(JJJ)Landroid/net/Uri;"/> + <method name="buildProgramsUriForChannel(Landroid/net/Uri;)Landroid/net/Uri;"/> + <method name="buildProgramsUriForChannel(Landroid/net/Uri;JJ)Landroid/net/Uri;"/> + <method name="buildRecordedProgramUri(J)Landroid/net/Uri;" since="24"/> + <method name="buildWatchNextProgramUri(J)Landroid/net/Uri;" since="26"/> + <method name="isChannelUri(Landroid/net/Uri;)Z" since="24"/> + <method name="isChannelUriForPassthroughInput(Landroid/net/Uri;)Z" since="24"/> + <method name="isChannelUriForTunerInput(Landroid/net/Uri;)Z" since="24"/> + <method name="isProgramUri(Landroid/net/Uri;)Z" since="24"/> + <method name="requestChannelBrowsable(Landroid/content/Context;J)V" since="26"/> + <field name="ACTION_INITIALIZE_PROGRAMS" since="26"/> + <field name="ACTION_PREVIEW_PROGRAM_ADDED_TO_WATCH_NEXT" since="26"/> + <field name="ACTION_PREVIEW_PROGRAM_BROWSABLE_DISABLED" since="26"/> + <field name="ACTION_REQUEST_CHANNEL_BROWSABLE" since="26"/> + <field name="ACTION_WATCH_NEXT_PROGRAM_BROWSABLE_DISABLED" since="26"/> + <field name="AUTHORITY"/> + <field name="EXTRA_CHANNEL_ID" since="26"/> + <field name="EXTRA_PREVIEW_PROGRAM_ID" since="26"/> + <field name="EXTRA_WATCH_NEXT_PROGRAM_ID" since="26"/> + </class> + <class name="android/media/tv/TvContract$BaseTvColumns" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <field name="COLUMN_PACKAGE_NAME"/> + </class> + <class name="android/media/tv/TvContract$Channels" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/media/tv/TvContract$BaseTvColumns"/> + <method name="<init>()V"/> + <method name="getVideoResolution(Ljava/lang/String;)Ljava/lang/String;"/> + <field name="COLUMN_APP_LINK_COLOR" since="23"/> + <field name="COLUMN_APP_LINK_ICON_URI" since="23"/> + <field name="COLUMN_APP_LINK_INTENT_URI" since="23"/> + <field name="COLUMN_APP_LINK_POSTER_ART_URI" since="23"/> + <field name="COLUMN_APP_LINK_TEXT" since="23"/> + <field name="COLUMN_BROWSABLE" since="26"/> + <field name="COLUMN_DESCRIPTION"/> + <field name="COLUMN_DISPLAY_NAME"/> + <field name="COLUMN_DISPLAY_NUMBER"/> + <field name="COLUMN_INPUT_ID"/> + <field name="COLUMN_INTERNAL_PROVIDER_DATA"/> + <field name="COLUMN_INTERNAL_PROVIDER_FLAG1" since="23"/> + <field name="COLUMN_INTERNAL_PROVIDER_FLAG2" since="23"/> + <field name="COLUMN_INTERNAL_PROVIDER_FLAG3" since="23"/> + <field name="COLUMN_INTERNAL_PROVIDER_FLAG4" since="23"/> + <field name="COLUMN_INTERNAL_PROVIDER_ID" since="26"/> + <field name="COLUMN_LOCKED" since="26"/> + <field name="COLUMN_NETWORK_AFFILIATION"/> + <field name="COLUMN_ORIGINAL_NETWORK_ID"/> + <field name="COLUMN_SEARCHABLE"/> + <field name="COLUMN_SERVICE_ID"/> + <field name="COLUMN_SERVICE_TYPE"/> + <field name="COLUMN_TRANSIENT" since="26"/> + <field name="COLUMN_TRANSPORT_STREAM_ID"/> + <field name="COLUMN_TYPE"/> + <field name="COLUMN_VERSION_NUMBER"/> + <field name="COLUMN_VIDEO_FORMAT"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="CONTENT_TYPE"/> + <field name="CONTENT_URI"/> + <field name="SERVICE_TYPE_AUDIO"/> + <field name="SERVICE_TYPE_AUDIO_VIDEO"/> + <field name="SERVICE_TYPE_OTHER"/> + <field name="TYPE_1SEG"/> + <field name="TYPE_ATSC_C"/> + <field name="TYPE_ATSC_M_H"/> + <field name="TYPE_ATSC_T"/> + <field name="TYPE_CMMB"/> + <field name="TYPE_DTMB"/> + <field name="TYPE_DVB_C"/> + <field name="TYPE_DVB_C2"/> + <field name="TYPE_DVB_H"/> + <field name="TYPE_DVB_S"/> + <field name="TYPE_DVB_S2"/> + <field name="TYPE_DVB_SH"/> + <field name="TYPE_DVB_T"/> + <field name="TYPE_DVB_T2"/> + <field name="TYPE_ISDB_C"/> + <field name="TYPE_ISDB_S"/> + <field name="TYPE_ISDB_T"/> + <field name="TYPE_ISDB_TB"/> + <field name="TYPE_NTSC"/> + <field name="TYPE_OTHER"/> + <field name="TYPE_PAL"/> + <field name="TYPE_PREVIEW" since="26"/> + <field name="TYPE_SECAM"/> + <field name="TYPE_S_DMB"/> + <field name="TYPE_T_DMB"/> + <field name="VIDEO_FORMAT_1080I"/> + <field name="VIDEO_FORMAT_1080P"/> + <field name="VIDEO_FORMAT_2160P"/> + <field name="VIDEO_FORMAT_240P"/> + <field name="VIDEO_FORMAT_360P"/> + <field name="VIDEO_FORMAT_4320P"/> + <field name="VIDEO_FORMAT_480I"/> + <field name="VIDEO_FORMAT_480P"/> + <field name="VIDEO_FORMAT_576I"/> + <field name="VIDEO_FORMAT_576P"/> + <field name="VIDEO_FORMAT_720P"/> + <field name="VIDEO_RESOLUTION_ED"/> + <field name="VIDEO_RESOLUTION_FHD"/> + <field name="VIDEO_RESOLUTION_HD"/> + <field name="VIDEO_RESOLUTION_SD"/> + <field name="VIDEO_RESOLUTION_UHD"/> + </class> + <class name="android/media/tv/TvContract$Channels$Logo" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="CONTENT_DIRECTORY"/> + </class> + <class name="android/media/tv/TvContract$PreviewPrograms" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/media/tv/TvContract$BaseTvColumns"/> + <method name="<init>()V"/> + <field name="ASPECT_RATIO_16_9"/> + <field name="ASPECT_RATIO_1_1"/> + <field name="ASPECT_RATIO_2_3"/> + <field name="ASPECT_RATIO_3_2"/> + <field name="ASPECT_RATIO_4_3"/> + <field name="AVAILABILITY_AVAILABLE"/> + <field name="AVAILABILITY_FREE_WITH_SUBSCRIPTION"/> + <field name="AVAILABILITY_PAID_CONTENT"/> + <field name="COLUMN_AUDIO_LANGUAGE"/> + <field name="COLUMN_AUTHOR"/> + <field name="COLUMN_AVAILABILITY"/> + <field name="COLUMN_BROWSABLE"/> + <field name="COLUMN_CANONICAL_GENRE"/> + <field name="COLUMN_CHANNEL_ID"/> + <field name="COLUMN_CONTENT_ID"/> + <field name="COLUMN_CONTENT_RATING"/> + <field name="COLUMN_DURATION_MILLIS"/> + <field name="COLUMN_EPISODE_DISPLAY_NUMBER"/> + <field name="COLUMN_EPISODE_TITLE"/> + <field name="COLUMN_INTENT_URI"/> + <field name="COLUMN_INTERACTION_COUNT"/> + <field name="COLUMN_INTERACTION_TYPE"/> + <field name="COLUMN_INTERNAL_PROVIDER_DATA"/> + <field name="COLUMN_INTERNAL_PROVIDER_FLAG1"/> + <field name="COLUMN_INTERNAL_PROVIDER_FLAG2"/> + <field name="COLUMN_INTERNAL_PROVIDER_FLAG3"/> + <field name="COLUMN_INTERNAL_PROVIDER_FLAG4"/> + <field name="COLUMN_INTERNAL_PROVIDER_ID"/> + <field name="COLUMN_ITEM_COUNT"/> + <field name="COLUMN_LAST_PLAYBACK_POSITION_MILLIS"/> + <field name="COLUMN_LIVE"/> + <field name="COLUMN_LOGO_URI"/> + <field name="COLUMN_LONG_DESCRIPTION"/> + <field name="COLUMN_OFFER_PRICE"/> + <field name="COLUMN_POSTER_ART_ASPECT_RATIO"/> + <field name="COLUMN_POSTER_ART_URI"/> + <field name="COLUMN_PREVIEW_VIDEO_URI"/> + <field name="COLUMN_RELEASE_DATE"/> + <field name="COLUMN_REVIEW_RATING"/> + <field name="COLUMN_REVIEW_RATING_STYLE"/> + <field name="COLUMN_SEARCHABLE"/> + <field name="COLUMN_SEASON_DISPLAY_NUMBER"/> + <field name="COLUMN_SEASON_TITLE"/> + <field name="COLUMN_SHORT_DESCRIPTION"/> + <field name="COLUMN_STARTING_PRICE"/> + <field name="COLUMN_THUMBNAIL_ASPECT_RATIO"/> + <field name="COLUMN_THUMBNAIL_URI"/> + <field name="COLUMN_TITLE"/> + <field name="COLUMN_TRANSIENT"/> + <field name="COLUMN_TYPE"/> + <field name="COLUMN_VERSION_NUMBER"/> + <field name="COLUMN_VIDEO_HEIGHT"/> + <field name="COLUMN_VIDEO_WIDTH"/> + <field name="COLUMN_WEIGHT"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="CONTENT_TYPE"/> + <field name="CONTENT_URI"/> + <field name="INTERACTION_TYPE_FANS"/> + <field name="INTERACTION_TYPE_FOLLOWERS"/> + <field name="INTERACTION_TYPE_LIKES"/> + <field name="INTERACTION_TYPE_LISTENS"/> + <field name="INTERACTION_TYPE_THUMBS"/> + <field name="INTERACTION_TYPE_VIEWERS"/> + <field name="INTERACTION_TYPE_VIEWS"/> + <field name="REVIEW_RATING_STYLE_PERCENTAGE"/> + <field name="REVIEW_RATING_STYLE_STARS"/> + <field name="REVIEW_RATING_STYLE_THUMBS_UP_DOWN"/> + <field name="TYPE_ALBUM"/> + <field name="TYPE_ARTIST"/> + <field name="TYPE_CHANNEL"/> + <field name="TYPE_CLIP"/> + <field name="TYPE_EVENT"/> + <field name="TYPE_MOVIE"/> + <field name="TYPE_PLAYLIST"/> + <field name="TYPE_STATION"/> + <field name="TYPE_TRACK"/> + <field name="TYPE_TV_EPISODE"/> + <field name="TYPE_TV_SEASON"/> + <field name="TYPE_TV_SERIES"/> + </class> + <class name="android/media/tv/TvContract$Programs" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/media/tv/TvContract$BaseTvColumns"/> + <method name="<init>()V"/> + <field name="COLUMN_AUDIO_LANGUAGE"/> + <field name="COLUMN_BROADCAST_GENRE"/> + <field name="COLUMN_CANONICAL_GENRE"/> + <field name="COLUMN_CHANNEL_ID"/> + <field name="COLUMN_CONTENT_RATING"/> + <field name="COLUMN_END_TIME_UTC_MILLIS"/> + <field name="COLUMN_EPISODE_DISPLAY_NUMBER" since="24"/> + <field name="COLUMN_EPISODE_NUMBER" deprecated="24"/> + <field name="COLUMN_EPISODE_TITLE"/> + <field name="COLUMN_INTERNAL_PROVIDER_DATA"/> + <field name="COLUMN_INTERNAL_PROVIDER_FLAG1" since="23"/> + <field name="COLUMN_INTERNAL_PROVIDER_FLAG2" since="23"/> + <field name="COLUMN_INTERNAL_PROVIDER_FLAG3" since="23"/> + <field name="COLUMN_INTERNAL_PROVIDER_FLAG4" since="23"/> + <field name="COLUMN_LONG_DESCRIPTION"/> + <field name="COLUMN_POSTER_ART_URI"/> + <field name="COLUMN_RECORDING_PROHIBITED" since="24"/> + <field name="COLUMN_REVIEW_RATING" since="26"/> + <field name="COLUMN_REVIEW_RATING_STYLE" since="26"/> + <field name="COLUMN_SEARCHABLE" since="23"/> + <field name="COLUMN_SEASON_DISPLAY_NUMBER" since="24"/> + <field name="COLUMN_SEASON_NUMBER" deprecated="24"/> + <field name="COLUMN_SEASON_TITLE" since="24"/> + <field name="COLUMN_SHORT_DESCRIPTION"/> + <field name="COLUMN_START_TIME_UTC_MILLIS"/> + <field name="COLUMN_THUMBNAIL_URI"/> + <field name="COLUMN_TITLE"/> + <field name="COLUMN_VERSION_NUMBER"/> + <field name="COLUMN_VIDEO_HEIGHT"/> + <field name="COLUMN_VIDEO_WIDTH"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="CONTENT_TYPE"/> + <field name="CONTENT_URI"/> + <field name="REVIEW_RATING_STYLE_PERCENTAGE" since="26"/> + <field name="REVIEW_RATING_STYLE_STARS" since="26"/> + <field name="REVIEW_RATING_STYLE_THUMBS_UP_DOWN" since="26"/> + </class> + <class name="android/media/tv/TvContract$Programs$Genres" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="decode(Ljava/lang/String;)[Ljava/lang/String;"/> + <method name="encode([Ljava/lang/String;)Ljava/lang/String;"/> + <method name="isCanonical(Ljava/lang/String;)Z" since="24"/> + <field name="ANIMAL_WILDLIFE"/> + <field name="ARTS" since="22"/> + <field name="COMEDY"/> + <field name="DRAMA"/> + <field name="EDUCATION"/> + <field name="ENTERTAINMENT" since="22"/> + <field name="FAMILY_KIDS"/> + <field name="GAMING"/> + <field name="LIFE_STYLE" since="22"/> + <field name="MOVIES"/> + <field name="MUSIC" since="22"/> + <field name="NEWS"/> + <field name="PREMIER" since="22"/> + <field name="SHOPPING"/> + <field name="SPORTS"/> + <field name="TECH_SCIENCE" since="22"/> + <field name="TRAVEL"/> + </class> + <class name="android/media/tv/TvContract$RecordedPrograms" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/media/tv/TvContract$BaseTvColumns"/> + <method name="<init>()V"/> + <field name="COLUMN_AUDIO_LANGUAGE"/> + <field name="COLUMN_BROADCAST_GENRE"/> + <field name="COLUMN_CANONICAL_GENRE"/> + <field name="COLUMN_CHANNEL_ID"/> + <field name="COLUMN_CONTENT_RATING"/> + <field name="COLUMN_END_TIME_UTC_MILLIS"/> + <field name="COLUMN_EPISODE_DISPLAY_NUMBER"/> + <field name="COLUMN_EPISODE_TITLE"/> + <field name="COLUMN_INPUT_ID"/> + <field name="COLUMN_INTERNAL_PROVIDER_DATA"/> + <field name="COLUMN_INTERNAL_PROVIDER_FLAG1"/> + <field name="COLUMN_INTERNAL_PROVIDER_FLAG2"/> + <field name="COLUMN_INTERNAL_PROVIDER_FLAG3"/> + <field name="COLUMN_INTERNAL_PROVIDER_FLAG4"/> + <field name="COLUMN_LONG_DESCRIPTION"/> + <field name="COLUMN_POSTER_ART_URI"/> + <field name="COLUMN_RECORDING_DATA_BYTES"/> + <field name="COLUMN_RECORDING_DATA_URI"/> + <field name="COLUMN_RECORDING_DURATION_MILLIS"/> + <field name="COLUMN_RECORDING_EXPIRE_TIME_UTC_MILLIS"/> + <field name="COLUMN_REVIEW_RATING" since="26"/> + <field name="COLUMN_REVIEW_RATING_STYLE" since="26"/> + <field name="COLUMN_SEARCHABLE"/> + <field name="COLUMN_SEASON_DISPLAY_NUMBER"/> + <field name="COLUMN_SEASON_TITLE"/> + <field name="COLUMN_SHORT_DESCRIPTION"/> + <field name="COLUMN_START_TIME_UTC_MILLIS"/> + <field name="COLUMN_THUMBNAIL_URI"/> + <field name="COLUMN_TITLE"/> + <field name="COLUMN_VERSION_NUMBER"/> + <field name="COLUMN_VIDEO_HEIGHT"/> + <field name="COLUMN_VIDEO_WIDTH"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="CONTENT_TYPE"/> + <field name="CONTENT_URI"/> + <field name="REVIEW_RATING_STYLE_PERCENTAGE" since="26"/> + <field name="REVIEW_RATING_STYLE_STARS" since="26"/> + <field name="REVIEW_RATING_STYLE_THUMBS_UP_DOWN" since="26"/> + </class> + <class name="android/media/tv/TvContract$WatchNextPrograms" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/media/tv/TvContract$BaseTvColumns"/> + <method name="<init>()V"/> + <field name="ASPECT_RATIO_16_9"/> + <field name="ASPECT_RATIO_1_1"/> + <field name="ASPECT_RATIO_2_3"/> + <field name="ASPECT_RATIO_3_2"/> + <field name="ASPECT_RATIO_4_3"/> + <field name="AVAILABILITY_AVAILABLE"/> + <field name="AVAILABILITY_FREE_WITH_SUBSCRIPTION"/> + <field name="AVAILABILITY_PAID_CONTENT"/> + <field name="COLUMN_AUDIO_LANGUAGE"/> + <field name="COLUMN_AUTHOR"/> + <field name="COLUMN_AVAILABILITY"/> + <field name="COLUMN_BROWSABLE"/> + <field name="COLUMN_CANONICAL_GENRE"/> + <field name="COLUMN_CONTENT_ID"/> + <field name="COLUMN_CONTENT_RATING"/> + <field name="COLUMN_DURATION_MILLIS"/> + <field name="COLUMN_EPISODE_DISPLAY_NUMBER"/> + <field name="COLUMN_EPISODE_TITLE"/> + <field name="COLUMN_INTENT_URI"/> + <field name="COLUMN_INTERACTION_COUNT"/> + <field name="COLUMN_INTERACTION_TYPE"/> + <field name="COLUMN_INTERNAL_PROVIDER_DATA"/> + <field name="COLUMN_INTERNAL_PROVIDER_FLAG1"/> + <field name="COLUMN_INTERNAL_PROVIDER_FLAG2"/> + <field name="COLUMN_INTERNAL_PROVIDER_FLAG3"/> + <field name="COLUMN_INTERNAL_PROVIDER_FLAG4"/> + <field name="COLUMN_INTERNAL_PROVIDER_ID"/> + <field name="COLUMN_ITEM_COUNT"/> + <field name="COLUMN_LAST_ENGAGEMENT_TIME_UTC_MILLIS"/> + <field name="COLUMN_LAST_PLAYBACK_POSITION_MILLIS"/> + <field name="COLUMN_LIVE"/> + <field name="COLUMN_LOGO_URI"/> + <field name="COLUMN_LONG_DESCRIPTION"/> + <field name="COLUMN_OFFER_PRICE"/> + <field name="COLUMN_POSTER_ART_ASPECT_RATIO"/> + <field name="COLUMN_POSTER_ART_URI"/> + <field name="COLUMN_PREVIEW_VIDEO_URI"/> + <field name="COLUMN_RELEASE_DATE"/> + <field name="COLUMN_REVIEW_RATING"/> + <field name="COLUMN_REVIEW_RATING_STYLE"/> + <field name="COLUMN_SEARCHABLE"/> + <field name="COLUMN_SEASON_DISPLAY_NUMBER"/> + <field name="COLUMN_SEASON_TITLE"/> + <field name="COLUMN_SHORT_DESCRIPTION"/> + <field name="COLUMN_STARTING_PRICE"/> + <field name="COLUMN_THUMBNAIL_ASPECT_RATIO"/> + <field name="COLUMN_THUMBNAIL_URI"/> + <field name="COLUMN_TITLE"/> + <field name="COLUMN_TRANSIENT"/> + <field name="COLUMN_TYPE"/> + <field name="COLUMN_VERSION_NUMBER"/> + <field name="COLUMN_VIDEO_HEIGHT"/> + <field name="COLUMN_VIDEO_WIDTH"/> + <field name="COLUMN_WATCH_NEXT_TYPE"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="CONTENT_TYPE"/> + <field name="CONTENT_URI"/> + <field name="INTERACTION_TYPE_FANS"/> + <field name="INTERACTION_TYPE_FOLLOWERS"/> + <field name="INTERACTION_TYPE_LIKES"/> + <field name="INTERACTION_TYPE_LISTENS"/> + <field name="INTERACTION_TYPE_THUMBS"/> + <field name="INTERACTION_TYPE_VIEWERS"/> + <field name="INTERACTION_TYPE_VIEWS"/> + <field name="REVIEW_RATING_STYLE_PERCENTAGE"/> + <field name="REVIEW_RATING_STYLE_STARS"/> + <field name="REVIEW_RATING_STYLE_THUMBS_UP_DOWN"/> + <field name="TYPE_ALBUM"/> + <field name="TYPE_ARTIST"/> + <field name="TYPE_CHANNEL"/> + <field name="TYPE_CLIP"/> + <field name="TYPE_EVENT"/> + <field name="TYPE_MOVIE"/> + <field name="TYPE_PLAYLIST"/> + <field name="TYPE_STATION"/> + <field name="TYPE_TRACK"/> + <field name="TYPE_TV_EPISODE"/> + <field name="TYPE_TV_SEASON"/> + <field name="TYPE_TV_SERIES"/> + <field name="WATCH_NEXT_TYPE_CONTINUE"/> + <field name="WATCH_NEXT_TYPE_NEW"/> + <field name="WATCH_NEXT_TYPE_NEXT"/> + <field name="WATCH_NEXT_TYPE_WATCHLIST"/> + </class> + <class name="android/media/tv/TvInputInfo" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="canRecord()Z" since="24"/> + <method name="createSettingsIntent()Landroid/content/Intent;" deprecated="26"/> + <method name="createSetupIntent()Landroid/content/Intent;"/> + <method name="getExtras()Landroid/os/Bundle;" since="24"/> + <method name="getId()Ljava/lang/String;"/> + <method name="getParentId()Ljava/lang/String;"/> + <method name="getServiceInfo()Landroid/content/pm/ServiceInfo;"/> + <method name="getTunerCount()I" since="24"/> + <method name="getType()I"/> + <method name="isHidden(Landroid/content/Context;)Z" since="24"/> + <method name="isPassthroughInput()Z"/> + <method name="loadCustomLabel(Landroid/content/Context;)Ljava/lang/CharSequence;" since="24"/> + <method name="loadIcon(Landroid/content/Context;)Landroid/graphics/drawable/Drawable;"/> + <method name="loadLabel(Landroid/content/Context;)Ljava/lang/CharSequence;"/> + <field name="CREATOR"/> + <field name="EXTRA_INPUT_ID"/> + <field name="TYPE_COMPONENT"/> + <field name="TYPE_COMPOSITE"/> + <field name="TYPE_DISPLAY_PORT"/> + <field name="TYPE_DVI"/> + <field name="TYPE_HDMI"/> + <field name="TYPE_OTHER"/> + <field name="TYPE_SCART"/> + <field name="TYPE_SVIDEO"/> + <field name="TYPE_TUNER"/> + <field name="TYPE_VGA"/> + </class> + <class name="android/media/tv/TvInputInfo$Builder" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;Landroid/content/ComponentName;)V"/> + <method name="build()Landroid/media/tv/TvInputInfo;"/> + <method name="setCanRecord(Z)Landroid/media/tv/TvInputInfo$Builder;"/> + <method name="setExtras(Landroid/os/Bundle;)Landroid/media/tv/TvInputInfo$Builder;"/> + <method name="setTunerCount(I)Landroid/media/tv/TvInputInfo$Builder;"/> + </class> + <class name="android/media/tv/TvInputManager" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getInputState(Ljava/lang/String;)I"/> + <method name="getTvInputInfo(Ljava/lang/String;)Landroid/media/tv/TvInputInfo;"/> + <method name="getTvInputList()Ljava/util/List;"/> + <method name="isParentalControlsEnabled()Z"/> + <method name="isRatingBlocked(Landroid/media/tv/TvContentRating;)Z"/> + <method name="registerCallback(Landroid/media/tv/TvInputManager$TvInputCallback;Landroid/os/Handler;)V"/> + <method name="unregisterCallback(Landroid/media/tv/TvInputManager$TvInputCallback;)V"/> + <method name="updateTvInputInfo(Landroid/media/tv/TvInputInfo;)V" since="24"/> + <field name="ACTION_BLOCKED_RATINGS_CHANGED"/> + <field name="ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED"/> + <field name="ACTION_QUERY_CONTENT_RATING_SYSTEMS"/> + <field name="ACTION_SETUP_INPUTS" since="24"/> + <field name="ACTION_VIEW_RECORDING_SCHEDULES" since="26"/> + <field name="INPUT_STATE_CONNECTED"/> + <field name="INPUT_STATE_CONNECTED_STANDBY"/> + <field name="INPUT_STATE_DISCONNECTED"/> + <field name="META_DATA_CONTENT_RATING_SYSTEMS"/> + <field name="RECORDING_ERROR_INSUFFICIENT_SPACE" since="24"/> + <field name="RECORDING_ERROR_RESOURCE_BUSY" since="24"/> + <field name="RECORDING_ERROR_UNKNOWN" since="24"/> + <field name="TIME_SHIFT_INVALID_TIME" since="23"/> + <field name="TIME_SHIFT_STATUS_AVAILABLE" since="23"/> + <field name="TIME_SHIFT_STATUS_UNAVAILABLE" since="23"/> + <field name="TIME_SHIFT_STATUS_UNKNOWN" since="23"/> + <field name="TIME_SHIFT_STATUS_UNSUPPORTED" since="23"/> + <field name="VIDEO_UNAVAILABLE_REASON_AUDIO_ONLY" since="23"/> + <field name="VIDEO_UNAVAILABLE_REASON_BUFFERING"/> + <field name="VIDEO_UNAVAILABLE_REASON_TUNING"/> + <field name="VIDEO_UNAVAILABLE_REASON_UNKNOWN"/> + <field name="VIDEO_UNAVAILABLE_REASON_WEAK_SIGNAL"/> + </class> + <class name="android/media/tv/TvInputManager$TvInputCallback" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onInputAdded(Ljava/lang/String;)V"/> + <method name="onInputRemoved(Ljava/lang/String;)V"/> + <method name="onInputStateChanged(Ljava/lang/String;I)V"/> + <method name="onInputUpdated(Ljava/lang/String;)V" since="24"/> + <method name="onTvInputInfoUpdated(Landroid/media/tv/TvInputInfo;)V" since="24"/> + </class> + <class name="android/media/tv/TvInputService" since="21"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="onCreateRecordingSession(Ljava/lang/String;)Landroid/media/tv/TvInputService$RecordingSession;" since="24"/> + <method name="onCreateSession(Ljava/lang/String;)Landroid/media/tv/TvInputService$Session;"/> + <field name="SERVICE_INTERFACE"/> + <field name="SERVICE_META_DATA"/> + </class> + <class name="android/media/tv/TvInputService$HardwareSession" since="21"> + <extends name="android/media/tv/TvInputService$Session"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="getHardwareInputId()Ljava/lang/String;"/> + <method name="onHardwareVideoAvailable()V"/> + <method name="onHardwareVideoUnavailable(I)V"/> + </class> + <class name="android/media/tv/TvInputService$RecordingSession" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="notifyError(I)V"/> + <method name="notifyRecordingStopped(Landroid/net/Uri;)V"/> + <method name="notifyTuned(Landroid/net/Uri;)V"/> + <method name="onAppPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)V"/> + <method name="onRelease()V"/> + <method name="onStartRecording(Landroid/net/Uri;)V"/> + <method name="onStopRecording()V"/> + <method name="onTune(Landroid/net/Uri;)V"/> + <method name="onTune(Landroid/net/Uri;Landroid/os/Bundle;)V"/> + </class> + <class name="android/media/tv/TvInputService$Session" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/view/KeyEvent$Callback"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="layoutSurface(IIII)V" since="23"/> + <method name="notifyChannelRetuned(Landroid/net/Uri;)V"/> + <method name="notifyContentAllowed()V"/> + <method name="notifyContentBlocked(Landroid/media/tv/TvContentRating;)V"/> + <method name="notifyTimeShiftStatusChanged(I)V" since="23"/> + <method name="notifyTrackSelected(ILjava/lang/String;)V"/> + <method name="notifyTracksChanged(Ljava/util/List;)V"/> + <method name="notifyVideoAvailable()V"/> + <method name="notifyVideoUnavailable(I)V"/> + <method name="onAppPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)V" since="24"/> + <method name="onCreateOverlayView()Landroid/view/View;"/> + <method name="onGenericMotionEvent(Landroid/view/MotionEvent;)Z"/> + <method name="onOverlayViewSizeChanged(II)V" since="23"/> + <method name="onRelease()V"/> + <method name="onSelectTrack(ILjava/lang/String;)Z"/> + <method name="onSetCaptionEnabled(Z)V"/> + <method name="onSetStreamVolume(F)V"/> + <method name="onSetSurface(Landroid/view/Surface;)Z"/> + <method name="onSurfaceChanged(III)V"/> + <method name="onTimeShiftGetCurrentPosition()J" since="23"/> + <method name="onTimeShiftGetStartPosition()J" since="23"/> + <method name="onTimeShiftPause()V" since="23"/> + <method name="onTimeShiftPlay(Landroid/net/Uri;)V" since="24"/> + <method name="onTimeShiftResume()V" since="23"/> + <method name="onTimeShiftSeekTo(J)V" since="23"/> + <method name="onTimeShiftSetPlaybackParams(Landroid/media/PlaybackParams;)V" since="23"/> + <method name="onTouchEvent(Landroid/view/MotionEvent;)Z"/> + <method name="onTrackballEvent(Landroid/view/MotionEvent;)Z"/> + <method name="onTune(Landroid/net/Uri;)Z"/> + <method name="onTune(Landroid/net/Uri;Landroid/os/Bundle;)Z" since="24"/> + <method name="onUnblockContent(Landroid/media/tv/TvContentRating;)V"/> + <method name="setOverlayViewEnabled(Z)V"/> + </class> + <class name="android/media/tv/TvRecordingClient" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;Ljava/lang/String;Landroid/media/tv/TvRecordingClient$RecordingCallback;Landroid/os/Handler;)V"/> + <method name="release()V"/> + <method name="sendAppPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)V"/> + <method name="startRecording(Landroid/net/Uri;)V"/> + <method name="stopRecording()V"/> + <method name="tune(Ljava/lang/String;Landroid/net/Uri;)V"/> + <method name="tune(Ljava/lang/String;Landroid/net/Uri;Landroid/os/Bundle;)V"/> + </class> + <class name="android/media/tv/TvRecordingClient$RecordingCallback" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onConnectionFailed(Ljava/lang/String;)V"/> + <method name="onDisconnected(Ljava/lang/String;)V"/> + <method name="onError(I)V"/> + <method name="onRecordingStopped(Landroid/net/Uri;)V"/> + <method name="onTuned(Landroid/net/Uri;)V"/> + </class> + <class name="android/media/tv/TvTrackInfo" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getAudioChannelCount()I"/> + <method name="getAudioSampleRate()I"/> + <method name="getDescription()Ljava/lang/CharSequence;" since="23"/> + <method name="getExtra()Landroid/os/Bundle;"/> + <method name="getId()Ljava/lang/String;"/> + <method name="getLanguage()Ljava/lang/String;"/> + <method name="getType()I"/> + <method name="getVideoActiveFormatDescription()B" since="24"/> + <method name="getVideoFrameRate()F"/> + <method name="getVideoHeight()I"/> + <method name="getVideoPixelAspectRatio()F" since="23"/> + <method name="getVideoWidth()I"/> + <field name="CREATOR"/> + <field name="TYPE_AUDIO"/> + <field name="TYPE_SUBTITLE"/> + <field name="TYPE_VIDEO"/> + </class> + <class name="android/media/tv/TvTrackInfo$Builder" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(ILjava/lang/String;)V"/> + <method name="build()Landroid/media/tv/TvTrackInfo;"/> + <method name="setAudioChannelCount(I)Landroid/media/tv/TvTrackInfo$Builder;"/> + <method name="setAudioSampleRate(I)Landroid/media/tv/TvTrackInfo$Builder;"/> + <method name="setDescription(Ljava/lang/CharSequence;)Landroid/media/tv/TvTrackInfo$Builder;" since="23"/> + <method name="setExtra(Landroid/os/Bundle;)Landroid/media/tv/TvTrackInfo$Builder;"/> + <method name="setLanguage(Ljava/lang/String;)Landroid/media/tv/TvTrackInfo$Builder;"/> + <method name="setVideoActiveFormatDescription(B)Landroid/media/tv/TvTrackInfo$Builder;" since="24"/> + <method name="setVideoFrameRate(F)Landroid/media/tv/TvTrackInfo$Builder;"/> + <method name="setVideoHeight(I)Landroid/media/tv/TvTrackInfo$Builder;"/> + <method name="setVideoPixelAspectRatio(F)Landroid/media/tv/TvTrackInfo$Builder;" since="23"/> + <method name="setVideoWidth(I)Landroid/media/tv/TvTrackInfo$Builder;"/> + </class> + <class name="android/media/tv/TvView" since="21"> + <extends name="android/view/ViewGroup"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="dispatchUnhandledInputEvent(Landroid/view/InputEvent;)Z"/> + <method name="getSelectedTrack(I)Ljava/lang/String;"/> + <method name="getTracks(I)Ljava/util/List;"/> + <method name="onUnhandledInputEvent(Landroid/view/InputEvent;)Z"/> + <method name="reset()V"/> + <method name="selectTrack(ILjava/lang/String;)V"/> + <method name="sendAppPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)V" since="24"/> + <method name="setCallback(Landroid/media/tv/TvView$TvInputCallback;)V"/> + <method name="setCaptionEnabled(Z)V"/> + <method name="setOnUnhandledInputEventListener(Landroid/media/tv/TvView$OnUnhandledInputEventListener;)V"/> + <method name="setStreamVolume(F)V"/> + <method name="setTimeShiftPositionCallback(Landroid/media/tv/TvView$TimeShiftPositionCallback;)V" since="23"/> + <method name="setZOrderMediaOverlay(Z)V" since="24"/> + <method name="setZOrderOnTop(Z)V" since="24"/> + <method name="timeShiftPause()V" since="23"/> + <method name="timeShiftPlay(Ljava/lang/String;Landroid/net/Uri;)V" since="24"/> + <method name="timeShiftResume()V" since="23"/> + <method name="timeShiftSeekTo(J)V" since="23"/> + <method name="timeShiftSetPlaybackParams(Landroid/media/PlaybackParams;)V" since="23"/> + <method name="tune(Ljava/lang/String;Landroid/net/Uri;)V"/> + <method name="tune(Ljava/lang/String;Landroid/net/Uri;Landroid/os/Bundle;)V" since="24"/> + </class> + <class name="android/media/tv/TvView$OnUnhandledInputEventListener" since="21"> + <extends name="java/lang/Object"/> + <method name="onUnhandledInputEvent(Landroid/view/InputEvent;)Z"/> + </class> + <class name="android/media/tv/TvView$TimeShiftPositionCallback" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onTimeShiftCurrentPositionChanged(Ljava/lang/String;J)V"/> + <method name="onTimeShiftStartPositionChanged(Ljava/lang/String;J)V"/> + </class> + <class name="android/media/tv/TvView$TvInputCallback" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onChannelRetuned(Ljava/lang/String;Landroid/net/Uri;)V"/> + <method name="onConnectionFailed(Ljava/lang/String;)V"/> + <method name="onContentAllowed(Ljava/lang/String;)V"/> + <method name="onContentBlocked(Ljava/lang/String;Landroid/media/tv/TvContentRating;)V"/> + <method name="onDisconnected(Ljava/lang/String;)V"/> + <method name="onTimeShiftStatusChanged(Ljava/lang/String;I)V" since="23"/> + <method name="onTrackSelected(Ljava/lang/String;ILjava/lang/String;)V"/> + <method name="onTracksChanged(Ljava/lang/String;Ljava/util/List;)V"/> + <method name="onVideoAvailable(Ljava/lang/String;)V"/> + <method name="onVideoSizeChanged(Ljava/lang/String;II)V"/> + <method name="onVideoUnavailable(Ljava/lang/String;I)V"/> + </class> + <class name="android/mtp/MtpConstants" since="12"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="isAbstractObject(I)Z"/> + <field name="ASSOCIATION_TYPE_GENERIC_FOLDER"/> + <field name="FORMAT_3GP_CONTAINER"/> + <field name="FORMAT_AAC"/> + <field name="FORMAT_ABSTRACT_AUDIO_ALBUM"/> + <field name="FORMAT_ABSTRACT_AUDIO_PLAYLIST"/> + <field name="FORMAT_ABSTRACT_AV_PLAYLIST"/> + <field name="FORMAT_ABSTRACT_DOCUMENT"/> + <field name="FORMAT_ABSTRACT_IMAGE_ALBUM"/> + <field name="FORMAT_ABSTRACT_MEDIACAST"/> + <field name="FORMAT_ABSTRACT_MULTIMEDIA_ALBUM"/> + <field name="FORMAT_ABSTRACT_VIDEO_ALBUM"/> + <field name="FORMAT_ABSTRACT_VIDEO_PLAYLIST"/> + <field name="FORMAT_AIFF"/> + <field name="FORMAT_ASF"/> + <field name="FORMAT_ASSOCIATION"/> + <field name="FORMAT_ASX_PLAYLIST"/> + <field name="FORMAT_AUDIBLE"/> + <field name="FORMAT_AVI"/> + <field name="FORMAT_BMP"/> + <field name="FORMAT_DEFINED" since="24"/> + <field name="FORMAT_DNG" since="24"/> + <field name="FORMAT_DPOF"/> + <field name="FORMAT_EXECUTABLE"/> + <field name="FORMAT_EXIF_JPEG"/> + <field name="FORMAT_FLAC"/> + <field name="FORMAT_GIF"/> + <field name="FORMAT_HTML"/> + <field name="FORMAT_JFIF"/> + <field name="FORMAT_JP2"/> + <field name="FORMAT_JPX"/> + <field name="FORMAT_M3U_PLAYLIST"/> + <field name="FORMAT_MP2"/> + <field name="FORMAT_MP3"/> + <field name="FORMAT_MP4_CONTAINER"/> + <field name="FORMAT_MPEG"/> + <field name="FORMAT_MPL_PLAYLIST"/> + <field name="FORMAT_MS_EXCEL_SPREADSHEET"/> + <field name="FORMAT_MS_POWERPOINT_PRESENTATION"/> + <field name="FORMAT_MS_WORD_DOCUMENT"/> + <field name="FORMAT_OGG"/> + <field name="FORMAT_PICT"/> + <field name="FORMAT_PLS_PLAYLIST"/> + <field name="FORMAT_PNG"/> + <field name="FORMAT_SCRIPT"/> + <field name="FORMAT_TEXT"/> + <field name="FORMAT_TIFF"/> + <field name="FORMAT_TIFF_EP"/> + <field name="FORMAT_UNDEFINED"/> + <field name="FORMAT_UNDEFINED_AUDIO"/> + <field name="FORMAT_UNDEFINED_COLLECTION"/> + <field name="FORMAT_UNDEFINED_DOCUMENT"/> + <field name="FORMAT_UNDEFINED_FIRMWARE"/> + <field name="FORMAT_UNDEFINED_VIDEO"/> + <field name="FORMAT_WAV"/> + <field name="FORMAT_WINDOWS_IMAGE_FORMAT"/> + <field name="FORMAT_WMA"/> + <field name="FORMAT_WMV"/> + <field name="FORMAT_WPL_PLAYLIST"/> + <field name="FORMAT_XML_DOCUMENT"/> + <field name="OPERATION_CLOSE_SESSION" since="24"/> + <field name="OPERATION_COPY_OBJECT" since="24"/> + <field name="OPERATION_DELETE_OBJECT" since="24"/> + <field name="OPERATION_FORMAT_STORE" since="24"/> + <field name="OPERATION_GET_DEVICE_INFO" since="24"/> + <field name="OPERATION_GET_DEVICE_PROP_DESC" since="24"/> + <field name="OPERATION_GET_DEVICE_PROP_VALUE" since="24"/> + <field name="OPERATION_GET_NUM_OBJECTS" since="24"/> + <field name="OPERATION_GET_OBJECT" since="24"/> + <field name="OPERATION_GET_OBJECT_HANDLES" since="24"/> + <field name="OPERATION_GET_OBJECT_INFO" since="24"/> + <field name="OPERATION_GET_OBJECT_PROPS_SUPPORTED" since="24"/> + <field name="OPERATION_GET_OBJECT_PROP_DESC" since="24"/> + <field name="OPERATION_GET_OBJECT_PROP_VALUE" since="24"/> + <field name="OPERATION_GET_OBJECT_REFERENCES" since="24"/> + <field name="OPERATION_GET_PARTIAL_OBJECT" since="24"/> + <field name="OPERATION_GET_PARTIAL_OBJECT_64" since="24"/> + <field name="OPERATION_GET_STORAGE_INFO" since="24"/> + <field name="OPERATION_GET_STORAGE_I_DS" since="24"/> + <field name="OPERATION_GET_THUMB" since="24"/> + <field name="OPERATION_INITIATE_CAPTURE" since="24"/> + <field name="OPERATION_INITIATE_OPEN_CAPTURE" since="24"/> + <field name="OPERATION_MOVE_OBJECT" since="24"/> + <field name="OPERATION_OPEN_SESSION" since="24"/> + <field name="OPERATION_POWER_DOWN" since="24"/> + <field name="OPERATION_RESET_DEVICE" since="24"/> + <field name="OPERATION_RESET_DEVICE_PROP_VALUE" since="24"/> + <field name="OPERATION_SELF_TEST" since="24"/> + <field name="OPERATION_SEND_OBJECT" since="24"/> + <field name="OPERATION_SEND_OBJECT_INFO" since="24"/> + <field name="OPERATION_SET_DEVICE_PROP_VALUE" since="24"/> + <field name="OPERATION_SET_OBJECT_PROP_VALUE" since="24"/> + <field name="OPERATION_SET_OBJECT_PROTECTION" since="24"/> + <field name="OPERATION_SET_OBJECT_REFERENCES" since="24"/> + <field name="OPERATION_SKIP" since="24"/> + <field name="OPERATION_TERMINATE_OPEN_CAPTURE" since="24"/> + <field name="PROTECTION_STATUS_NONE"/> + <field name="PROTECTION_STATUS_NON_TRANSFERABLE_DATA"/> + <field name="PROTECTION_STATUS_READ_ONLY"/> + <field name="PROTECTION_STATUS_READ_ONLY_DATA"/> + </class> + <class name="android/mtp/MtpDevice" since="12"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/hardware/usb/UsbDevice;)V"/> + <method name="close()V"/> + <method name="deleteObject(I)Z"/> + <method name="getDeviceId()I"/> + <method name="getDeviceInfo()Landroid/mtp/MtpDeviceInfo;"/> + <method name="getDeviceName()Ljava/lang/String;"/> + <method name="getObject(II)[B"/> + <method name="getObjectHandles(III)[I"/> + <method name="getObjectInfo(I)Landroid/mtp/MtpObjectInfo;"/> + <method name="getParent(I)J"/> + <method name="getPartialObject(IJJ[B)J" since="24"/> + <method name="getPartialObject64(IJJ[B)J" since="24"/> + <method name="getStorageId(I)J"/> + <method name="getStorageIds()[I"/> + <method name="getStorageInfo(I)Landroid/mtp/MtpStorageInfo;"/> + <method name="getThumbnail(I)[B"/> + <method name="importFile(ILandroid/os/ParcelFileDescriptor;)Z" since="24"/> + <method name="importFile(ILjava/lang/String;)Z"/> + <method name="open(Landroid/hardware/usb/UsbDeviceConnection;)Z"/> + <method name="readEvent(Landroid/os/CancellationSignal;)Landroid/mtp/MtpEvent;" since="24"/> + <method name="sendObject(IJLandroid/os/ParcelFileDescriptor;)Z" since="24"/> + <method name="sendObjectInfo(Landroid/mtp/MtpObjectInfo;)Landroid/mtp/MtpObjectInfo;" since="24"/> + </class> + <class name="android/mtp/MtpDeviceInfo" since="12"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getEventsSupported()[I" since="24"/> + <method name="getManufacturer()Ljava/lang/String;"/> + <method name="getModel()Ljava/lang/String;"/> + <method name="getOperationsSupported()[I" since="24"/> + <method name="getSerialNumber()Ljava/lang/String;"/> + <method name="getVersion()Ljava/lang/String;"/> + <method name="isEventSupported(I)Z" since="24"/> + <method name="isOperationSupported(I)Z" since="24"/> + </class> + <class name="android/mtp/MtpEvent" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getDevicePropCode()I"/> + <method name="getEventCode()I"/> + <method name="getObjectFormatCode()I"/> + <method name="getObjectHandle()I"/> + <method name="getObjectPropCode()I"/> + <method name="getParameter1()I"/> + <method name="getParameter2()I"/> + <method name="getParameter3()I"/> + <method name="getStorageId()I"/> + <method name="getTransactionId()I"/> + <field name="EVENT_CANCEL_TRANSACTION"/> + <field name="EVENT_CAPTURE_COMPLETE"/> + <field name="EVENT_DEVICE_INFO_CHANGED"/> + <field name="EVENT_DEVICE_PROP_CHANGED"/> + <field name="EVENT_DEVICE_RESET"/> + <field name="EVENT_OBJECT_ADDED"/> + <field name="EVENT_OBJECT_INFO_CHANGED"/> + <field name="EVENT_OBJECT_PROP_CHANGED"/> + <field name="EVENT_OBJECT_PROP_DESC_CHANGED"/> + <field name="EVENT_OBJECT_REFERENCES_CHANGED"/> + <field name="EVENT_OBJECT_REMOVED"/> + <field name="EVENT_REQUEST_OBJECT_TRANSFER"/> + <field name="EVENT_STORAGE_INFO_CHANGED"/> + <field name="EVENT_STORE_ADDED"/> + <field name="EVENT_STORE_FULL"/> + <field name="EVENT_STORE_REMOVED"/> + <field name="EVENT_UNDEFINED"/> + <field name="EVENT_UNREPORTED_STATUS"/> + </class> + <class name="android/mtp/MtpObjectInfo" since="12"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAssociationDesc()I"/> + <method name="getAssociationType()I"/> + <method name="getCompressedSize()I"/> + <method name="getCompressedSizeLong()J" since="24"/> + <method name="getDateCreated()J"/> + <method name="getDateModified()J"/> + <method name="getFormat()I"/> + <method name="getImagePixDepth()I"/> + <method name="getImagePixDepthLong()J" since="24"/> + <method name="getImagePixHeight()I"/> + <method name="getImagePixHeightLong()J" since="24"/> + <method name="getImagePixWidth()I"/> + <method name="getImagePixWidthLong()J" since="24"/> + <method name="getKeywords()Ljava/lang/String;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getObjectHandle()I"/> + <method name="getParent()I"/> + <method name="getProtectionStatus()I"/> + <method name="getSequenceNumber()I"/> + <method name="getSequenceNumberLong()J" since="24"/> + <method name="getStorageId()I"/> + <method name="getThumbCompressedSize()I"/> + <method name="getThumbCompressedSizeLong()J" since="24"/> + <method name="getThumbFormat()I"/> + <method name="getThumbPixHeight()I"/> + <method name="getThumbPixHeightLong()J" since="24"/> + <method name="getThumbPixWidth()I"/> + <method name="getThumbPixWidthLong()J" since="24"/> + </class> + <class name="android/mtp/MtpObjectInfo$Builder" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/mtp/MtpObjectInfo;)V"/> + <method name="build()Landroid/mtp/MtpObjectInfo;"/> + <method name="setAssociationDesc(I)Landroid/mtp/MtpObjectInfo$Builder;"/> + <method name="setAssociationType(I)Landroid/mtp/MtpObjectInfo$Builder;"/> + <method name="setCompressedSize(J)Landroid/mtp/MtpObjectInfo$Builder;"/> + <method name="setDateCreated(J)Landroid/mtp/MtpObjectInfo$Builder;"/> + <method name="setDateModified(J)Landroid/mtp/MtpObjectInfo$Builder;"/> + <method name="setFormat(I)Landroid/mtp/MtpObjectInfo$Builder;"/> + <method name="setImagePixDepth(J)Landroid/mtp/MtpObjectInfo$Builder;"/> + <method name="setImagePixHeight(J)Landroid/mtp/MtpObjectInfo$Builder;"/> + <method name="setImagePixWidth(J)Landroid/mtp/MtpObjectInfo$Builder;"/> + <method name="setKeywords(Ljava/lang/String;)Landroid/mtp/MtpObjectInfo$Builder;"/> + <method name="setName(Ljava/lang/String;)Landroid/mtp/MtpObjectInfo$Builder;"/> + <method name="setObjectHandle(I)Landroid/mtp/MtpObjectInfo$Builder;"/> + <method name="setParent(I)Landroid/mtp/MtpObjectInfo$Builder;"/> + <method name="setProtectionStatus(I)Landroid/mtp/MtpObjectInfo$Builder;"/> + <method name="setSequenceNumber(J)Landroid/mtp/MtpObjectInfo$Builder;"/> + <method name="setStorageId(I)Landroid/mtp/MtpObjectInfo$Builder;"/> + <method name="setThumbCompressedSize(J)Landroid/mtp/MtpObjectInfo$Builder;"/> + <method name="setThumbFormat(I)Landroid/mtp/MtpObjectInfo$Builder;"/> + <method name="setThumbPixHeight(J)Landroid/mtp/MtpObjectInfo$Builder;"/> + <method name="setThumbPixWidth(J)Landroid/mtp/MtpObjectInfo$Builder;"/> + </class> + <class name="android/mtp/MtpStorageInfo" since="12"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getDescription()Ljava/lang/String;"/> + <method name="getFreeSpace()J"/> + <method name="getMaxCapacity()J"/> + <method name="getStorageId()I"/> + <method name="getVolumeIdentifier()Ljava/lang/String;"/> + </class> + <class name="android/net/CaptivePortal" since="23"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="ignoreNetwork()V"/> + <method name="reportCaptivePortalDismissed()V"/> + <field name="CREATOR"/> + </class> + <class name="android/net/ConnectivityManager" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addDefaultNetworkActiveListener(Landroid/net/ConnectivityManager$OnNetworkActiveListener;)V" since="21"/> + <method name="bindProcessToNetwork(Landroid/net/Network;)Z" since="23"/> + <method name="getActiveNetwork()Landroid/net/Network;" since="23"/> + <method name="getActiveNetworkInfo()Landroid/net/NetworkInfo;"/> + <method name="getAllNetworkInfo()[Landroid/net/NetworkInfo;" deprecated="23"/> + <method name="getAllNetworks()[Landroid/net/Network;" since="21"/> + <method name="getBackgroundDataSetting()Z" since="3" deprecated="16"/> + <method name="getBoundNetworkForProcess()Landroid/net/Network;" since="23"/> + <method name="getDefaultProxy()Landroid/net/ProxyInfo;" since="23"/> + <method name="getLinkProperties(Landroid/net/Network;)Landroid/net/LinkProperties;" since="21"/> + <method name="getMultipathPreference(Landroid/net/Network;)I" since="26"/> + <method name="getNetworkCapabilities(Landroid/net/Network;)Landroid/net/NetworkCapabilities;" since="21"/> + <method name="getNetworkInfo(I)Landroid/net/NetworkInfo;" deprecated="23"/> + <method name="getNetworkInfo(Landroid/net/Network;)Landroid/net/NetworkInfo;" since="21"/> + <method name="getNetworkPreference()I" deprecated="21"/> + <method name="getProcessDefaultNetwork()Landroid/net/Network;" since="21" deprecated="23"/> + <method name="getRestrictBackgroundStatus()I" since="24"/> + <method name="isActiveNetworkMetered()Z" since="16"/> + <method name="isDefaultNetworkActive()Z" since="21"/> + <method name="isNetworkTypeValid(I)Z" deprecated="23"/> + <method name="registerDefaultNetworkCallback(Landroid/net/ConnectivityManager$NetworkCallback;)V" since="24"/> + <method name="registerDefaultNetworkCallback(Landroid/net/ConnectivityManager$NetworkCallback;Landroid/os/Handler;)V" since="26"/> + <method name="registerNetworkCallback(Landroid/net/NetworkRequest;Landroid/app/PendingIntent;)V" since="23"/> + <method name="registerNetworkCallback(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;)V" since="21"/> + <method name="registerNetworkCallback(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;Landroid/os/Handler;)V" since="26"/> + <method name="releaseNetworkRequest(Landroid/app/PendingIntent;)V" since="22"/> + <method name="removeDefaultNetworkActiveListener(Landroid/net/ConnectivityManager$OnNetworkActiveListener;)V" since="21"/> + <method name="reportBadNetwork(Landroid/net/Network;)V" since="21" deprecated="23"/> + <method name="reportNetworkConnectivity(Landroid/net/Network;Z)V" since="23"/> + <method name="requestBandwidthUpdate(Landroid/net/Network;)Z" since="23"/> + <method name="requestNetwork(Landroid/net/NetworkRequest;Landroid/app/PendingIntent;)V" since="22"/> + <method name="requestNetwork(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;)V" since="21"/> + <method name="requestNetwork(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;I)V" since="26"/> + <method name="requestNetwork(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;Landroid/os/Handler;)V" since="26"/> + <method name="requestNetwork(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;Landroid/os/Handler;I)V" since="26"/> + <method name="requestRouteToHost(II)Z" deprecated="21" removed="26"/> + <method name="setNetworkPreference(I)V" deprecated="21"/> + <method name="setProcessDefaultNetwork(Landroid/net/Network;)Z" since="21" deprecated="23"/> + <method name="startUsingNetworkFeature(ILjava/lang/String;)I" deprecated="21" removed="26"/> + <method name="stopUsingNetworkFeature(ILjava/lang/String;)I" deprecated="21" removed="26"/> + <method name="unregisterNetworkCallback(Landroid/app/PendingIntent;)V" since="23"/> + <method name="unregisterNetworkCallback(Landroid/net/ConnectivityManager$NetworkCallback;)V" since="21"/> + <field name="ACTION_BACKGROUND_DATA_SETTING_CHANGED" since="3" deprecated="16"/> + <field name="ACTION_CAPTIVE_PORTAL_SIGN_IN" since="23"/> + <field name="ACTION_RESTRICT_BACKGROUND_CHANGED" since="24"/> + <field name="CONNECTIVITY_ACTION"/> + <field name="DEFAULT_NETWORK_PREFERENCE" deprecated="18"/> + <field name="EXTRA_CAPTIVE_PORTAL" since="23"/> + <field name="EXTRA_CAPTIVE_PORTAL_URL" since="24"/> + <field name="EXTRA_EXTRA_INFO"/> + <field name="EXTRA_IS_FAILOVER"/> + <field name="EXTRA_NETWORK" since="22"/> + <field name="EXTRA_NETWORK_INFO" deprecated="16"/> + <field name="EXTRA_NETWORK_REQUEST" since="22"/> + <field name="EXTRA_NETWORK_TYPE" since="17"/> + <field name="EXTRA_NO_CONNECTIVITY"/> + <field name="EXTRA_OTHER_NETWORK_INFO"/> + <field name="EXTRA_REASON"/> + <field name="MULTIPATH_PREFERENCE_HANDOVER" since="26"/> + <field name="MULTIPATH_PREFERENCE_PERFORMANCE" since="26"/> + <field name="MULTIPATH_PREFERENCE_RELIABILITY" since="26"/> + <field name="RESTRICT_BACKGROUND_STATUS_DISABLED" since="24"/> + <field name="RESTRICT_BACKGROUND_STATUS_ENABLED" since="24"/> + <field name="RESTRICT_BACKGROUND_STATUS_WHITELISTED" since="24"/> + <field name="TYPE_BLUETOOTH" since="13"/> + <field name="TYPE_DUMMY" since="14"/> + <field name="TYPE_ETHERNET" since="13"/> + <field name="TYPE_MOBILE"/> + <field name="TYPE_MOBILE_DUN" since="8"/> + <field name="TYPE_MOBILE_HIPRI" since="8" deprecated="23"/> + <field name="TYPE_MOBILE_MMS" since="8" deprecated="23"/> + <field name="TYPE_MOBILE_SUPL" since="8" deprecated="23"/> + <field name="TYPE_VPN" since="21"/> + <field name="TYPE_WIFI"/> + <field name="TYPE_WIMAX" since="8"/> + </class> + <class name="android/net/ConnectivityManager$NetworkCallback" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onAvailable(Landroid/net/Network;)V"/> + <method name="onCapabilitiesChanged(Landroid/net/Network;Landroid/net/NetworkCapabilities;)V"/> + <method name="onLinkPropertiesChanged(Landroid/net/Network;Landroid/net/LinkProperties;)V"/> + <method name="onLosing(Landroid/net/Network;I)V"/> + <method name="onLost(Landroid/net/Network;)V"/> + <method name="onUnavailable()V" since="26"/> + </class> + <class name="android/net/ConnectivityManager$OnNetworkActiveListener" since="21"> + <extends name="java/lang/Object"/> + <method name="onNetworkActive()V"/> + </class> + <class name="android/net/Credentials" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(III)V"/> + <method name="getGid()I"/> + <method name="getPid()I"/> + <method name="getUid()I"/> + </class> + <class name="android/net/DhcpInfo" since="1" deprecated="18"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <field name="dns1"/> + <field name="dns2"/> + <field name="gateway"/> + <field name="ipAddress"/> + <field name="leaseDuration"/> + <field name="netmask"/> + <field name="serverAddress"/> + </class> + <class name="android/net/IpPrefix" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="contains(Ljava/net/InetAddress;)Z" since="23"/> + <method name="getAddress()Ljava/net/InetAddress;"/> + <method name="getPrefixLength()I"/> + <method name="getRawAddress()[B"/> + <field name="CREATOR"/> + </class> + <class name="android/net/IpSecAlgorithm" since="27"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Ljava/lang/String;[B)V"/> + <method name="<init>(Ljava/lang/String;[BI)V"/> + <method name="getKey()[B"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getTruncationLengthBits()I"/> + <field name="AUTH_CRYPT_AES_GCM"/> + <field name="AUTH_HMAC_MD5"/> + <field name="AUTH_HMAC_SHA1"/> + <field name="AUTH_HMAC_SHA256"/> + <field name="AUTH_HMAC_SHA384"/> + <field name="AUTH_HMAC_SHA512"/> + <field name="CREATOR"/> + <field name="CRYPT_AES_CBC"/> + </class> + <class name="android/net/IpSecManager" since="27"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="applyTransportModeTransform(Ljava/io/FileDescriptor;Landroid/net/IpSecTransform;)V"/> + <method name="openUdpEncapsulationSocket()Landroid/net/IpSecManager$UdpEncapsulationSocket;"/> + <method name="openUdpEncapsulationSocket(I)Landroid/net/IpSecManager$UdpEncapsulationSocket;"/> + <method name="removeTransportModeTransform(Ljava/io/FileDescriptor;Landroid/net/IpSecTransform;)V"/> + <method name="reserveSecurityParameterIndex(ILjava/net/InetAddress;)Landroid/net/IpSecManager$SecurityParameterIndex;"/> + <method name="reserveSecurityParameterIndex(ILjava/net/InetAddress;I)Landroid/net/IpSecManager$SecurityParameterIndex;"/> + <field name="INVALID_SECURITY_PARAMETER_INDEX"/> + </class> + <class name="android/net/IpSecManager$ResourceUnavailableException" since="27"> + <extends name="android/util/AndroidException"/> + <method name="<init>()V"/> + </class> + <class name="android/net/IpSecManager$SecurityParameterIndex" since="27"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable"/> + <method name="<init>()V"/> + <method name="getSpi()I"/> + </class> + <class name="android/net/IpSecManager$SpiUnavailableException" since="27"> + <extends name="android/util/AndroidException"/> + <method name="<init>()V"/> + <method name="getSpi()I"/> + </class> + <class name="android/net/IpSecManager$UdpEncapsulationSocket" since="27"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable"/> + <method name="<init>()V"/> + <method name="getPort()I"/> + <method name="getSocket()Ljava/io/FileDescriptor;"/> + </class> + <class name="android/net/IpSecTransform" since="27"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable"/> + <method name="<init>()V"/> + <field name="DIRECTION_IN"/> + <field name="DIRECTION_OUT"/> + </class> + <class name="android/net/IpSecTransform$Builder" since="27"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="buildTransportModeTransform(Ljava/net/InetAddress;)Landroid/net/IpSecTransform;"/> + <method name="setAuthenticatedEncryption(ILandroid/net/IpSecAlgorithm;)Landroid/net/IpSecTransform$Builder;"/> + <method name="setAuthentication(ILandroid/net/IpSecAlgorithm;)Landroid/net/IpSecTransform$Builder;"/> + <method name="setEncryption(ILandroid/net/IpSecAlgorithm;)Landroid/net/IpSecTransform$Builder;"/> + <method name="setIpv4Encapsulation(Landroid/net/IpSecManager$UdpEncapsulationSocket;I)Landroid/net/IpSecTransform$Builder;"/> + <method name="setSpi(ILandroid/net/IpSecManager$SecurityParameterIndex;)Landroid/net/IpSecTransform$Builder;"/> + </class> + <class name="android/net/LinkAddress" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getAddress()Ljava/net/InetAddress;"/> + <method name="getFlags()I"/> + <method name="getPrefixLength()I"/> + <method name="getScope()I"/> + <field name="CREATOR"/> + </class> + <class name="android/net/LinkProperties" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getDnsServers()Ljava/util/List;"/> + <method name="getDomains()Ljava/lang/String;"/> + <method name="getHttpProxy()Landroid/net/ProxyInfo;"/> + <method name="getInterfaceName()Ljava/lang/String;"/> + <method name="getLinkAddresses()Ljava/util/List;"/> + <method name="getRoutes()Ljava/util/List;"/> + <field name="CREATOR"/> + </class> + <class name="android/net/LocalServerSocket" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/io/FileDescriptor;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="accept()Landroid/net/LocalSocket;"/> + <method name="close()V"/> + <method name="getFileDescriptor()Ljava/io/FileDescriptor;"/> + <method name="getLocalSocketAddress()Landroid/net/LocalSocketAddress;"/> + </class> + <class name="android/net/LocalSocket" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable" since="17"/> + <method name="<init>()V"/> + <method name="<init>(I)V" since="19"/> + <method name="bind(Landroid/net/LocalSocketAddress;)V"/> + <method name="close()V"/> + <method name="connect(Landroid/net/LocalSocketAddress;)V"/> + <method name="connect(Landroid/net/LocalSocketAddress;I)V"/> + <method name="getAncillaryFileDescriptors()[Ljava/io/FileDescriptor;"/> + <method name="getFileDescriptor()Ljava/io/FileDescriptor;"/> + <method name="getInputStream()Ljava/io/InputStream;"/> + <method name="getLocalSocketAddress()Landroid/net/LocalSocketAddress;"/> + <method name="getOutputStream()Ljava/io/OutputStream;"/> + <method name="getPeerCredentials()Landroid/net/Credentials;"/> + <method name="getReceiveBufferSize()I"/> + <method name="getRemoteSocketAddress()Landroid/net/LocalSocketAddress;"/> + <method name="getSendBufferSize()I"/> + <method name="getSoTimeout()I"/> + <method name="isBound()Z"/> + <method name="isClosed()Z"/> + <method name="isConnected()Z"/> + <method name="isInputShutdown()Z"/> + <method name="isOutputShutdown()Z"/> + <method name="setFileDescriptorsForSend([Ljava/io/FileDescriptor;)V"/> + <method name="setReceiveBufferSize(I)V"/> + <method name="setSendBufferSize(I)V"/> + <method name="setSoTimeout(I)V"/> + <method name="shutdownInput()V"/> + <method name="shutdownOutput()V"/> + <field name="SOCKET_DGRAM" since="19"/> + <field name="SOCKET_SEQPACKET" since="19"/> + <field name="SOCKET_STREAM" since="19"/> + </class> + <class name="android/net/LocalSocketAddress" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Landroid/net/LocalSocketAddress$Namespace;)V"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getNamespace()Landroid/net/LocalSocketAddress$Namespace;"/> + </class> + <class name="android/net/LocalSocketAddress$Namespace" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/net/LocalSocketAddress$Namespace;"/> + <method name="values()[Landroid/net/LocalSocketAddress$Namespace;"/> + <field name="ABSTRACT"/> + <field name="FILESYSTEM"/> + <field name="RESERVED"/> + </class> + <class name="android/net/MailTo" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getBody()Ljava/lang/String;"/> + <method name="getCc()Ljava/lang/String;"/> + <method name="getHeaders()Ljava/util/Map;"/> + <method name="getSubject()Ljava/lang/String;"/> + <method name="getTo()Ljava/lang/String;"/> + <method name="isMailTo(Ljava/lang/String;)Z"/> + <method name="parse(Ljava/lang/String;)Landroid/net/MailTo;"/> + <field name="MAILTO_SCHEME"/> + </class> + <class name="android/net/Network" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="bindSocket(Ljava/io/FileDescriptor;)V" since="23"/> + <method name="bindSocket(Ljava/net/DatagramSocket;)V" since="22"/> + <method name="bindSocket(Ljava/net/Socket;)V"/> + <method name="getAllByName(Ljava/lang/String;)[Ljava/net/InetAddress;"/> + <method name="getByName(Ljava/lang/String;)Ljava/net/InetAddress;"/> + <method name="getNetworkHandle()J" since="23"/> + <method name="getSocketFactory()Ljavax/net/SocketFactory;"/> + <method name="openConnection(Ljava/net/URL;)Ljava/net/URLConnection;"/> + <method name="openConnection(Ljava/net/URL;Ljava/net/Proxy;)Ljava/net/URLConnection;" since="23"/> + <field name="CREATOR"/> + </class> + <class name="android/net/NetworkCapabilities" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/net/NetworkCapabilities;)V"/> + <method name="getLinkDownstreamBandwidthKbps()I"/> + <method name="getLinkUpstreamBandwidthKbps()I"/> + <method name="hasCapability(I)Z"/> + <method name="hasTransport(I)Z"/> + <field name="CREATOR"/> + <field name="NET_CAPABILITY_CAPTIVE_PORTAL" since="23"/> + <field name="NET_CAPABILITY_CBS"/> + <field name="NET_CAPABILITY_DUN"/> + <field name="NET_CAPABILITY_EIMS"/> + <field name="NET_CAPABILITY_FOTA"/> + <field name="NET_CAPABILITY_IA"/> + <field name="NET_CAPABILITY_IMS"/> + <field name="NET_CAPABILITY_INTERNET"/> + <field name="NET_CAPABILITY_MMS"/> + <field name="NET_CAPABILITY_NOT_METERED"/> + <field name="NET_CAPABILITY_NOT_RESTRICTED"/> + <field name="NET_CAPABILITY_NOT_ROAMING" since="27"/> + <field name="NET_CAPABILITY_NOT_VPN"/> + <field name="NET_CAPABILITY_RCS"/> + <field name="NET_CAPABILITY_SUPL"/> + <field name="NET_CAPABILITY_TRUSTED"/> + <field name="NET_CAPABILITY_VALIDATED" since="23"/> + <field name="NET_CAPABILITY_WIFI_P2P"/> + <field name="NET_CAPABILITY_XCAP"/> + <field name="TRANSPORT_BLUETOOTH"/> + <field name="TRANSPORT_CELLULAR"/> + <field name="TRANSPORT_ETHERNET"/> + <field name="TRANSPORT_LOWPAN" since="27"/> + <field name="TRANSPORT_VPN"/> + <field name="TRANSPORT_WIFI"/> + <field name="TRANSPORT_WIFI_AWARE" since="26"/> + </class> + <class name="android/net/NetworkInfo" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V" since="3"/> + <method name="<init>(I)V" removed="3"/> + <method name="getDetailedState()Landroid/net/NetworkInfo$DetailedState;"/> + <method name="getExtraInfo()Ljava/lang/String;"/> + <method name="getReason()Ljava/lang/String;"/> + <method name="getState()Landroid/net/NetworkInfo$State;"/> + <method name="getSubtype()I" since="3"/> + <method name="getSubtypeName()Ljava/lang/String;" since="3"/> + <method name="getType()I"/> + <method name="getTypeName()Ljava/lang/String;"/> + <method name="isAvailable()Z"/> + <method name="isConnected()Z"/> + <method name="isConnectedOrConnecting()Z"/> + <method name="isFailover()Z"/> + <method name="isRoaming()Z" since="3" deprecated="27"/> + <field name="CREATOR" since="24"/> + </class> + <class name="android/net/NetworkInfo$DetailedState" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/net/NetworkInfo$DetailedState;"/> + <method name="values()[Landroid/net/NetworkInfo$DetailedState;"/> + <field name="AUTHENTICATING"/> + <field name="BLOCKED" since="14"/> + <field name="CAPTIVE_PORTAL_CHECK" since="17"/> + <field name="CONNECTED"/> + <field name="CONNECTING"/> + <field name="DISCONNECTED"/> + <field name="DISCONNECTING"/> + <field name="FAILED"/> + <field name="IDLE"/> + <field name="OBTAINING_IPADDR"/> + <field name="SCANNING"/> + <field name="SUSPENDED"/> + <field name="VERIFYING_POOR_LINK" since="16"/> + </class> + <class name="android/net/NetworkInfo$State" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/net/NetworkInfo$State;"/> + <method name="values()[Landroid/net/NetworkInfo$State;"/> + <field name="CONNECTED"/> + <field name="CONNECTING"/> + <field name="DISCONNECTED"/> + <field name="DISCONNECTING"/> + <field name="SUSPENDED"/> + <field name="UNKNOWN"/> + </class> + <class name="android/net/NetworkRequest" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <field name="CREATOR"/> + </class> + <class name="android/net/NetworkRequest$Builder" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addCapability(I)Landroid/net/NetworkRequest$Builder;"/> + <method name="addTransportType(I)Landroid/net/NetworkRequest$Builder;"/> + <method name="build()Landroid/net/NetworkRequest;"/> + <method name="removeCapability(I)Landroid/net/NetworkRequest$Builder;"/> + <method name="removeTransportType(I)Landroid/net/NetworkRequest$Builder;"/> + <method name="setNetworkSpecifier(Landroid/net/NetworkSpecifier;)Landroid/net/NetworkRequest$Builder;" since="26"/> + <method name="setNetworkSpecifier(Ljava/lang/String;)Landroid/net/NetworkRequest$Builder;"/> + </class> + <class name="android/net/NetworkSpecifier" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/net/ParseException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <field name="response"/> + </class> + <class name="android/net/Proxy" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getDefaultHost()Ljava/lang/String;" deprecated="16"/> + <method name="getDefaultPort()I" deprecated="16"/> + <method name="getHost(Landroid/content/Context;)Ljava/lang/String;" deprecated="16"/> + <method name="getPort(Landroid/content/Context;)I" deprecated="16"/> + <field name="EXTRA_PROXY_INFO" since="21" deprecated="23"/> + <field name="PROXY_CHANGE_ACTION"/> + </class> + <class name="android/net/ProxyInfo" since="21" deprecated="22"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="buildDirectProxy(Ljava/lang/String;I)Landroid/net/ProxyInfo;"/> + <method name="buildDirectProxy(Ljava/lang/String;ILjava/util/List;)Landroid/net/ProxyInfo;"/> + <method name="buildPacProxy(Landroid/net/Uri;)Landroid/net/ProxyInfo;"/> + <method name="getExclusionList()[Ljava/lang/String;"/> + <method name="getHost()Ljava/lang/String;"/> + <method name="getPacFileUrl()Landroid/net/Uri;"/> + <method name="getPort()I"/> + <field name="CREATOR"/> + </class> + <class name="android/net/PskKeyManager" since="21" removed="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="chooseClientKeyIdentity(Ljava/lang/String;Ljava/net/Socket;)Ljava/lang/String;"/> + <method name="chooseClientKeyIdentity(Ljava/lang/String;Ljavax/net/ssl/SSLEngine;)Ljava/lang/String;"/> + <method name="chooseServerKeyIdentityHint(Ljava/net/Socket;)Ljava/lang/String;"/> + <method name="chooseServerKeyIdentityHint(Ljavax/net/ssl/SSLEngine;)Ljava/lang/String;"/> + <method name="getKey(Ljava/lang/String;Ljava/lang/String;Ljava/net/Socket;)Ljavax/crypto/SecretKey;"/> + <method name="getKey(Ljava/lang/String;Ljava/lang/String;Ljavax/net/ssl/SSLEngine;)Ljavax/crypto/SecretKey;"/> + <field name="MAX_IDENTITY_HINT_LENGTH_BYTES"/> + <field name="MAX_IDENTITY_LENGTH_BYTES"/> + <field name="MAX_KEY_LENGTH_BYTES"/> + </class> + <class name="android/net/RouteInfo" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getDestination()Landroid/net/IpPrefix;"/> + <method name="getGateway()Ljava/net/InetAddress;"/> + <method name="getInterface()Ljava/lang/String;"/> + <method name="isDefaultRoute()Z"/> + <method name="matches(Ljava/net/InetAddress;)Z"/> + <field name="CREATOR"/> + </class> + <class name="android/net/SSLCertificateSocketFactory" since="1"> + <extends name="javax/net/ssl/SSLSocketFactory"/> + <method name="<init>(I)V" deprecated="16"/> + <method name="getDefault(I)Ljavax/net/SocketFactory;"/> + <method name="getDefault(ILandroid/net/SSLSessionCache;)Ljavax/net/ssl/SSLSocketFactory;" since="8"/> + <method name="getHttpSocketFactory(ILandroid/net/SSLSessionCache;)Lorg/apache/http/conn/ssl/SSLSocketFactory;" since="8" deprecated="22" removed="23"/> + <method name="getInsecure(ILandroid/net/SSLSessionCache;)Ljavax/net/ssl/SSLSocketFactory;" since="8"/> + <method name="getNpnSelectedProtocol(Ljava/net/Socket;)[B" since="16"/> + <method name="setHostname(Ljava/net/Socket;Ljava/lang/String;)V" since="17"/> + <method name="setKeyManagers([Ljavax/net/ssl/KeyManager;)V" since="14"/> + <method name="setNpnProtocols([[B)V" since="16"/> + <method name="setTrustManagers([Ljavax/net/ssl/TrustManager;)V" since="14"/> + <method name="setUseSessionTickets(Ljava/net/Socket;Z)V" since="17"/> + </class> + <class name="android/net/SSLSessionCache" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Ljava/io/File;)V"/> + </class> + <class name="android/net/TrafficStats" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="clearThreadStatsTag()V" since="14"/> + <method name="getAndSetThreadStatsTag(I)I" since="26"/> + <method name="getMobileRxBytes()J"/> + <method name="getMobileRxPackets()J"/> + <method name="getMobileTxBytes()J"/> + <method name="getMobileTxPackets()J"/> + <method name="getThreadStatsTag()I" since="14"/> + <method name="getTotalRxBytes()J"/> + <method name="getTotalRxPackets()J"/> + <method name="getTotalTxBytes()J"/> + <method name="getTotalTxPackets()J"/> + <method name="getUidRxBytes(I)J"/> + <method name="getUidRxPackets(I)J" since="12"/> + <method name="getUidTcpRxBytes(I)J" since="12" deprecated="18"/> + <method name="getUidTcpRxSegments(I)J" since="12" deprecated="18"/> + <method name="getUidTcpTxBytes(I)J" since="12" deprecated="18"/> + <method name="getUidTcpTxSegments(I)J" since="12" deprecated="18"/> + <method name="getUidTxBytes(I)J"/> + <method name="getUidTxPackets(I)J" since="12"/> + <method name="getUidUdpRxBytes(I)J" since="12" deprecated="18"/> + <method name="getUidUdpRxPackets(I)J" since="12" deprecated="18"/> + <method name="getUidUdpTxBytes(I)J" since="12" deprecated="18"/> + <method name="getUidUdpTxPackets(I)J" since="12" deprecated="18"/> + <method name="incrementOperationCount(I)V" since="14"/> + <method name="incrementOperationCount(II)V" since="14"/> + <method name="setThreadStatsTag(I)V" since="14"/> + <method name="tagDatagramSocket(Ljava/net/DatagramSocket;)V" since="24"/> + <method name="tagSocket(Ljava/net/Socket;)V" since="14"/> + <method name="untagDatagramSocket(Ljava/net/DatagramSocket;)V" since="24"/> + <method name="untagSocket(Ljava/net/Socket;)V" since="14"/> + <field name="UNSUPPORTED"/> + </class> + <class name="android/net/Uri" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <implements name="java/lang/Comparable"/> + <method name="<init>()V"/> + <method name="buildUpon()Landroid/net/Uri$Builder;"/> + <method name="compareTo(Landroid/net/Uri;)I"/> + <method name="decode(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="encode(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="encode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="fromFile(Ljava/io/File;)Landroid/net/Uri;"/> + <method name="fromParts(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;"/> + <method name="getAuthority()Ljava/lang/String;"/> + <method name="getBooleanQueryParameter(Ljava/lang/String;Z)Z" since="11"/> + <method name="getEncodedAuthority()Ljava/lang/String;"/> + <method name="getEncodedFragment()Ljava/lang/String;"/> + <method name="getEncodedPath()Ljava/lang/String;"/> + <method name="getEncodedQuery()Ljava/lang/String;"/> + <method name="getEncodedSchemeSpecificPart()Ljava/lang/String;"/> + <method name="getEncodedUserInfo()Ljava/lang/String;"/> + <method name="getFragment()Ljava/lang/String;"/> + <method name="getHost()Ljava/lang/String;"/> + <method name="getLastPathSegment()Ljava/lang/String;"/> + <method name="getPath()Ljava/lang/String;"/> + <method name="getPathSegments()Ljava/util/List;"/> + <method name="getPort()I"/> + <method name="getQuery()Ljava/lang/String;"/> + <method name="getQueryParameter(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getQueryParameterNames()Ljava/util/Set;" since="11"/> + <method name="getQueryParameters(Ljava/lang/String;)Ljava/util/List;"/> + <method name="getScheme()Ljava/lang/String;"/> + <method name="getSchemeSpecificPart()Ljava/lang/String;"/> + <method name="getUserInfo()Ljava/lang/String;"/> + <method name="isAbsolute()Z"/> + <method name="isHierarchical()Z"/> + <method name="isOpaque()Z"/> + <method name="isRelative()Z"/> + <method name="normalizeScheme()Landroid/net/Uri;" since="16"/> + <method name="parse(Ljava/lang/String;)Landroid/net/Uri;"/> + <method name="withAppendedPath(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri;"/> + <method name="writeToParcel(Landroid/os/Parcel;Landroid/net/Uri;)V"/> + <field name="CREATOR"/> + <field name="EMPTY"/> + </class> + <class name="android/net/Uri$Builder" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="appendEncodedPath(Ljava/lang/String;)Landroid/net/Uri$Builder;"/> + <method name="appendPath(Ljava/lang/String;)Landroid/net/Uri$Builder;"/> + <method name="appendQueryParameter(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri$Builder;"/> + <method name="authority(Ljava/lang/String;)Landroid/net/Uri$Builder;"/> + <method name="build()Landroid/net/Uri;"/> + <method name="clearQuery()Landroid/net/Uri$Builder;" since="11"/> + <method name="encodedAuthority(Ljava/lang/String;)Landroid/net/Uri$Builder;"/> + <method name="encodedFragment(Ljava/lang/String;)Landroid/net/Uri$Builder;"/> + <method name="encodedOpaquePart(Ljava/lang/String;)Landroid/net/Uri$Builder;"/> + <method name="encodedPath(Ljava/lang/String;)Landroid/net/Uri$Builder;"/> + <method name="encodedQuery(Ljava/lang/String;)Landroid/net/Uri$Builder;"/> + <method name="fragment(Ljava/lang/String;)Landroid/net/Uri$Builder;"/> + <method name="opaquePart(Ljava/lang/String;)Landroid/net/Uri$Builder;"/> + <method name="path(Ljava/lang/String;)Landroid/net/Uri$Builder;"/> + <method name="query(Ljava/lang/String;)Landroid/net/Uri$Builder;"/> + <method name="scheme(Ljava/lang/String;)Landroid/net/Uri$Builder;"/> + </class> + <class name="android/net/UrlQuerySanitizer" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="addSanitizedEntry(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="clear()V"/> + <method name="decodeHexDigit(C)I"/> + <method name="getAllButNulAndAngleBracketsLegal()Landroid/net/UrlQuerySanitizer$ValueSanitizer;"/> + <method name="getAllButNulLegal()Landroid/net/UrlQuerySanitizer$ValueSanitizer;"/> + <method name="getAllButWhitespaceLegal()Landroid/net/UrlQuerySanitizer$ValueSanitizer;"/> + <method name="getAllIllegal()Landroid/net/UrlQuerySanitizer$ValueSanitizer;"/> + <method name="getAllowUnregisteredParamaters()Z"/> + <method name="getAmpAndSpaceLegal()Landroid/net/UrlQuerySanitizer$ValueSanitizer;"/> + <method name="getAmpLegal()Landroid/net/UrlQuerySanitizer$ValueSanitizer;"/> + <method name="getEffectiveValueSanitizer(Ljava/lang/String;)Landroid/net/UrlQuerySanitizer$ValueSanitizer;"/> + <method name="getParameterList()Ljava/util/List;"/> + <method name="getParameterSet()Ljava/util/Set;"/> + <method name="getPreferFirstRepeatedParameter()Z"/> + <method name="getSpaceLegal()Landroid/net/UrlQuerySanitizer$ValueSanitizer;"/> + <method name="getUnregisteredParameterValueSanitizer()Landroid/net/UrlQuerySanitizer$ValueSanitizer;"/> + <method name="getUrlAndSpaceLegal()Landroid/net/UrlQuerySanitizer$ValueSanitizer;"/> + <method name="getUrlLegal()Landroid/net/UrlQuerySanitizer$ValueSanitizer;"/> + <method name="getValue(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getValueSanitizer(Ljava/lang/String;)Landroid/net/UrlQuerySanitizer$ValueSanitizer;"/> + <method name="hasParameter(Ljava/lang/String;)Z"/> + <method name="isHexDigit(C)Z"/> + <method name="parseEntry(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="parseQuery(Ljava/lang/String;)V"/> + <method name="parseUrl(Ljava/lang/String;)V"/> + <method name="registerParameter(Ljava/lang/String;Landroid/net/UrlQuerySanitizer$ValueSanitizer;)V"/> + <method name="registerParameters([Ljava/lang/String;Landroid/net/UrlQuerySanitizer$ValueSanitizer;)V"/> + <method name="setAllowUnregisteredParamaters(Z)V"/> + <method name="setPreferFirstRepeatedParameter(Z)V"/> + <method name="setUnregisteredParameterValueSanitizer(Landroid/net/UrlQuerySanitizer$ValueSanitizer;)V"/> + <method name="unescape(Ljava/lang/String;)Ljava/lang/String;"/> + </class> + <class name="android/net/UrlQuerySanitizer$IllegalCharacterValueSanitizer" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/net/UrlQuerySanitizer$ValueSanitizer"/> + <method name="<init>(I)V"/> + <field name="ALL_BUT_NUL_AND_ANGLE_BRACKETS_LEGAL"/> + <field name="ALL_BUT_NUL_LEGAL"/> + <field name="ALL_BUT_WHITESPACE_LEGAL"/> + <field name="ALL_ILLEGAL"/> + <field name="ALL_OK"/> + <field name="ALL_WHITESPACE_OK"/> + <field name="AMP_AND_SPACE_LEGAL"/> + <field name="AMP_LEGAL"/> + <field name="AMP_OK"/> + <field name="DQUOTE_OK"/> + <field name="GT_OK"/> + <field name="LT_OK"/> + <field name="NON_7_BIT_ASCII_OK"/> + <field name="NUL_OK"/> + <field name="OTHER_WHITESPACE_OK"/> + <field name="PCT_OK"/> + <field name="SCRIPT_URL_OK"/> + <field name="SPACE_LEGAL"/> + <field name="SPACE_OK"/> + <field name="SQUOTE_OK"/> + <field name="URL_AND_SPACE_LEGAL"/> + <field name="URL_LEGAL"/> + </class> + <class name="android/net/UrlQuerySanitizer$ParameterValuePair" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/net/UrlQuerySanitizer;Ljava/lang/String;Ljava/lang/String;)V"/> + <field name="mParameter"/> + <field name="mValue"/> + </class> + <class name="android/net/UrlQuerySanitizer$ValueSanitizer" since="1"> + <extends name="java/lang/Object"/> + <method name="sanitize(Ljava/lang/String;)Ljava/lang/String;"/> + </class> + <class name="android/net/VpnService" since="14"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="onRevoke()V"/> + <method name="prepare(Landroid/content/Context;)Landroid/content/Intent;"/> + <method name="protect(I)Z"/> + <method name="protect(Ljava/net/DatagramSocket;)Z"/> + <method name="protect(Ljava/net/Socket;)Z"/> + <method name="setUnderlyingNetworks([Landroid/net/Network;)Z" since="22"/> + <field name="SERVICE_INTERFACE"/> + <field name="SERVICE_META_DATA_SUPPORTS_ALWAYS_ON" since="27"/> + </class> + <class name="android/net/VpnService$Builder" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/net/VpnService;)V"/> + <method name="addAddress(Ljava/lang/String;I)Landroid/net/VpnService$Builder;"/> + <method name="addAddress(Ljava/net/InetAddress;I)Landroid/net/VpnService$Builder;"/> + <method name="addAllowedApplication(Ljava/lang/String;)Landroid/net/VpnService$Builder;" since="21"/> + <method name="addDisallowedApplication(Ljava/lang/String;)Landroid/net/VpnService$Builder;" since="21"/> + <method name="addDnsServer(Ljava/lang/String;)Landroid/net/VpnService$Builder;"/> + <method name="addDnsServer(Ljava/net/InetAddress;)Landroid/net/VpnService$Builder;"/> + <method name="addRoute(Ljava/lang/String;I)Landroid/net/VpnService$Builder;"/> + <method name="addRoute(Ljava/net/InetAddress;I)Landroid/net/VpnService$Builder;"/> + <method name="addSearchDomain(Ljava/lang/String;)Landroid/net/VpnService$Builder;"/> + <method name="allowBypass()Landroid/net/VpnService$Builder;" since="21"/> + <method name="allowFamily(I)Landroid/net/VpnService$Builder;" since="21"/> + <method name="establish()Landroid/os/ParcelFileDescriptor;"/> + <method name="setBlocking(Z)Landroid/net/VpnService$Builder;" since="21"/> + <method name="setConfigureIntent(Landroid/app/PendingIntent;)Landroid/net/VpnService$Builder;"/> + <method name="setMtu(I)Landroid/net/VpnService$Builder;"/> + <method name="setSession(Ljava/lang/String;)Landroid/net/VpnService$Builder;"/> + <method name="setUnderlyingNetworks([Landroid/net/Network;)Landroid/net/VpnService$Builder;" since="22"/> + </class> + <class name="android/net/http/AndroidHttpClient" since="8" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/client/HttpClient"/> + <method name="<init>()V"/> + <method name="close()V"/> + <method name="disableCurlLogging()V"/> + <method name="enableCurlLogging(Ljava/lang/String;I)V"/> + <method name="getCompressedEntity([BLandroid/content/ContentResolver;)Lorg/apache/http/entity/AbstractHttpEntity;"/> + <method name="getMinGzipSize(Landroid/content/ContentResolver;)J"/> + <method name="getUngzippedContent(Lorg/apache/http/HttpEntity;)Ljava/io/InputStream;"/> + <method name="modifyRequestToAcceptGzipResponse(Lorg/apache/http/HttpRequest;)V"/> + <method name="newInstance(Ljava/lang/String;)Landroid/net/http/AndroidHttpClient;" deprecated="22"/> + <method name="newInstance(Ljava/lang/String;Landroid/content/Context;)Landroid/net/http/AndroidHttpClient;" deprecated="22"/> + <method name="parseDate(Ljava/lang/String;)J"/> + <field name="DEFAULT_SYNC_MIN_GZIP_BYTES"/> + </class> + <class name="android/net/http/HttpResponseCache" since="14"> + <extends name="java/net/ResponseCache"/> + <implements name="java/io/Closeable"/> + <method name="<init>()V"/> + <method name="delete()V"/> + <method name="flush()V"/> + <method name="getHitCount()I"/> + <method name="getInstalled()Landroid/net/http/HttpResponseCache;"/> + <method name="getNetworkCount()I"/> + <method name="getRequestCount()I"/> + <method name="install(Ljava/io/File;J)Landroid/net/http/HttpResponseCache;"/> + <method name="maxSize()J"/> + <method name="size()J"/> + </class> + <class name="android/net/http/SslCertificate" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" deprecated="16"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/util/Date;Ljava/util/Date;)V" since="8" deprecated="16"/> + <method name="<init>(Ljava/security/cert/X509Certificate;)V"/> + <method name="getIssuedBy()Landroid/net/http/SslCertificate$DName;"/> + <method name="getIssuedTo()Landroid/net/http/SslCertificate$DName;"/> + <method name="getValidNotAfter()Ljava/lang/String;" deprecated="16"/> + <method name="getValidNotAfterDate()Ljava/util/Date;" since="8"/> + <method name="getValidNotBefore()Ljava/lang/String;" deprecated="16"/> + <method name="getValidNotBeforeDate()Ljava/util/Date;" since="8"/> + <method name="restoreState(Landroid/os/Bundle;)Landroid/net/http/SslCertificate;"/> + <method name="saveState(Landroid/net/http/SslCertificate;)Landroid/os/Bundle;"/> + </class> + <class name="android/net/http/SslCertificate$DName" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/net/http/SslCertificate;Ljava/lang/String;)V"/> + <method name="getCName()Ljava/lang/String;"/> + <method name="getDName()Ljava/lang/String;"/> + <method name="getOName()Ljava/lang/String;"/> + <method name="getUName()Ljava/lang/String;"/> + </class> + <class name="android/net/http/SslError" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>(ILandroid/net/http/SslCertificate;)V" deprecated="16"/> + <method name="<init>(ILandroid/net/http/SslCertificate;Ljava/lang/String;)V" since="14"/> + <method name="<init>(ILjava/security/cert/X509Certificate;)V" deprecated="16"/> + <method name="<init>(ILjava/security/cert/X509Certificate;Ljava/lang/String;)V" since="14"/> + <method name="addError(I)Z"/> + <method name="getCertificate()Landroid/net/http/SslCertificate;"/> + <method name="getPrimaryError()I"/> + <method name="getUrl()Ljava/lang/String;" since="14"/> + <method name="hasError(I)Z"/> + <field name="SSL_DATE_INVALID" since="14"/> + <field name="SSL_EXPIRED"/> + <field name="SSL_IDMISMATCH"/> + <field name="SSL_INVALID" since="14"/> + <field name="SSL_MAX_ERROR" deprecated="16"/> + <field name="SSL_NOTYETVALID"/> + <field name="SSL_UNTRUSTED"/> + </class> + <class name="android/net/http/X509TrustManagerExtensions" since="17"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljavax/net/ssl/X509TrustManager;)V"/> + <method name="checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;"/> + <method name="isUserAddedCertificate(Ljava/security/cert/X509Certificate;)Z" since="21"/> + </class> + <class name="android/net/nsd/NsdManager" since="16"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="discoverServices(Ljava/lang/String;ILandroid/net/nsd/NsdManager$DiscoveryListener;)V"/> + <method name="registerService(Landroid/net/nsd/NsdServiceInfo;ILandroid/net/nsd/NsdManager$RegistrationListener;)V"/> + <method name="resolveService(Landroid/net/nsd/NsdServiceInfo;Landroid/net/nsd/NsdManager$ResolveListener;)V"/> + <method name="stopServiceDiscovery(Landroid/net/nsd/NsdManager$DiscoveryListener;)V"/> + <method name="unregisterService(Landroid/net/nsd/NsdManager$RegistrationListener;)V"/> + <field name="ACTION_NSD_STATE_CHANGED"/> + <field name="EXTRA_NSD_STATE"/> + <field name="FAILURE_ALREADY_ACTIVE"/> + <field name="FAILURE_INTERNAL_ERROR"/> + <field name="FAILURE_MAX_LIMIT"/> + <field name="NSD_STATE_DISABLED"/> + <field name="NSD_STATE_ENABLED"/> + <field name="PROTOCOL_DNS_SD"/> + </class> + <class name="android/net/nsd/NsdManager$DiscoveryListener" since="16"> + <extends name="java/lang/Object"/> + <method name="onDiscoveryStarted(Ljava/lang/String;)V"/> + <method name="onDiscoveryStopped(Ljava/lang/String;)V"/> + <method name="onServiceFound(Landroid/net/nsd/NsdServiceInfo;)V"/> + <method name="onServiceLost(Landroid/net/nsd/NsdServiceInfo;)V"/> + <method name="onStartDiscoveryFailed(Ljava/lang/String;I)V"/> + <method name="onStopDiscoveryFailed(Ljava/lang/String;I)V"/> + </class> + <class name="android/net/nsd/NsdManager$RegistrationListener" since="16"> + <extends name="java/lang/Object"/> + <method name="onRegistrationFailed(Landroid/net/nsd/NsdServiceInfo;I)V"/> + <method name="onServiceRegistered(Landroid/net/nsd/NsdServiceInfo;)V"/> + <method name="onServiceUnregistered(Landroid/net/nsd/NsdServiceInfo;)V"/> + <method name="onUnregistrationFailed(Landroid/net/nsd/NsdServiceInfo;I)V"/> + </class> + <class name="android/net/nsd/NsdManager$ResolveListener" since="16"> + <extends name="java/lang/Object"/> + <method name="onResolveFailed(Landroid/net/nsd/NsdServiceInfo;I)V"/> + <method name="onServiceResolved(Landroid/net/nsd/NsdServiceInfo;)V"/> + </class> + <class name="android/net/nsd/NsdServiceInfo" since="16"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getAttributes()Ljava/util/Map;" since="21"/> + <method name="getHost()Ljava/net/InetAddress;"/> + <method name="getPort()I"/> + <method name="getServiceName()Ljava/lang/String;"/> + <method name="getServiceType()Ljava/lang/String;"/> + <method name="removeAttribute(Ljava/lang/String;)V" since="21"/> + <method name="setAttribute(Ljava/lang/String;Ljava/lang/String;)V" since="21"/> + <method name="setHost(Ljava/net/InetAddress;)V"/> + <method name="setPort(I)V"/> + <method name="setServiceName(Ljava/lang/String;)V"/> + <method name="setServiceType(Ljava/lang/String;)V"/> + <field name="CREATOR"/> + </class> + <class name="android/net/rtp/AudioCodec" since="12"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getCodec(ILjava/lang/String;Ljava/lang/String;)Landroid/net/rtp/AudioCodec;"/> + <method name="getCodecs()[Landroid/net/rtp/AudioCodec;"/> + <field name="AMR"/> + <field name="GSM"/> + <field name="GSM_EFR"/> + <field name="PCMA"/> + <field name="PCMU"/> + <field name="fmtp"/> + <field name="rtpmap"/> + <field name="type"/> + </class> + <class name="android/net/rtp/AudioGroup" since="12"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="clear()V"/> + <method name="getMode()I"/> + <method name="getStreams()[Landroid/net/rtp/AudioStream;"/> + <method name="sendDtmf(I)V"/> + <method name="setMode(I)V"/> + <field name="MODE_ECHO_SUPPRESSION"/> + <field name="MODE_MUTED"/> + <field name="MODE_NORMAL"/> + <field name="MODE_ON_HOLD"/> + </class> + <class name="android/net/rtp/AudioStream" since="12"> + <extends name="android/net/rtp/RtpStream"/> + <method name="<init>(Ljava/net/InetAddress;)V"/> + <method name="getCodec()Landroid/net/rtp/AudioCodec;"/> + <method name="getDtmfType()I"/> + <method name="getGroup()Landroid/net/rtp/AudioGroup;"/> + <method name="join(Landroid/net/rtp/AudioGroup;)V"/> + <method name="setCodec(Landroid/net/rtp/AudioCodec;)V"/> + <method name="setDtmfType(I)V"/> + </class> + <class name="android/net/rtp/RtpStream" since="12"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="associate(Ljava/net/InetAddress;I)V"/> + <method name="getLocalAddress()Ljava/net/InetAddress;"/> + <method name="getLocalPort()I"/> + <method name="getMode()I"/> + <method name="getRemoteAddress()Ljava/net/InetAddress;"/> + <method name="getRemotePort()I"/> + <method name="isBusy()Z"/> + <method name="release()V"/> + <method name="setMode(I)V"/> + <field name="MODE_NORMAL"/> + <field name="MODE_RECEIVE_ONLY"/> + <field name="MODE_SEND_ONLY"/> + </class> + <class name="android/net/sip/SipAudioCall" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;Landroid/net/sip/SipProfile;)V"/> + <method name="answerCall(I)V"/> + <method name="attachCall(Landroid/net/sip/SipSession;Ljava/lang/String;)V"/> + <method name="close()V"/> + <method name="continueCall(I)V"/> + <method name="endCall()V"/> + <method name="getLocalProfile()Landroid/net/sip/SipProfile;"/> + <method name="getPeerProfile()Landroid/net/sip/SipProfile;"/> + <method name="getState()I"/> + <method name="holdCall(I)V"/> + <method name="isInCall()Z"/> + <method name="isMuted()Z"/> + <method name="isOnHold()Z"/> + <method name="makeCall(Landroid/net/sip/SipProfile;Landroid/net/sip/SipSession;I)V"/> + <method name="sendDtmf(I)V"/> + <method name="sendDtmf(ILandroid/os/Message;)V"/> + <method name="setListener(Landroid/net/sip/SipAudioCall$Listener;)V"/> + <method name="setListener(Landroid/net/sip/SipAudioCall$Listener;Z)V"/> + <method name="setSpeakerMode(Z)V"/> + <method name="startAudio()V"/> + <method name="toggleMute()V"/> + </class> + <class name="android/net/sip/SipAudioCall$Listener" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onCallBusy(Landroid/net/sip/SipAudioCall;)V"/> + <method name="onCallEnded(Landroid/net/sip/SipAudioCall;)V"/> + <method name="onCallEstablished(Landroid/net/sip/SipAudioCall;)V"/> + <method name="onCallHeld(Landroid/net/sip/SipAudioCall;)V"/> + <method name="onCalling(Landroid/net/sip/SipAudioCall;)V"/> + <method name="onChanged(Landroid/net/sip/SipAudioCall;)V"/> + <method name="onError(Landroid/net/sip/SipAudioCall;ILjava/lang/String;)V"/> + <method name="onReadyToCall(Landroid/net/sip/SipAudioCall;)V"/> + <method name="onRinging(Landroid/net/sip/SipAudioCall;Landroid/net/sip/SipProfile;)V"/> + <method name="onRingingBack(Landroid/net/sip/SipAudioCall;)V"/> + </class> + <class name="android/net/sip/SipErrorCode" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="toString(I)Ljava/lang/String;"/> + <field name="CLIENT_ERROR"/> + <field name="CROSS_DOMAIN_AUTHENTICATION"/> + <field name="DATA_CONNECTION_LOST"/> + <field name="INVALID_CREDENTIALS"/> + <field name="INVALID_REMOTE_URI"/> + <field name="IN_PROGRESS"/> + <field name="NO_ERROR"/> + <field name="PEER_NOT_REACHABLE"/> + <field name="SERVER_ERROR"/> + <field name="SERVER_UNREACHABLE"/> + <field name="SOCKET_ERROR"/> + <field name="TIME_OUT"/> + <field name="TRANSACTION_TERMINTED"/> + </class> + <class name="android/net/sip/SipException" since="9"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + </class> + <class name="android/net/sip/SipManager" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="close(Ljava/lang/String;)V"/> + <method name="createSipSession(Landroid/net/sip/SipProfile;Landroid/net/sip/SipSession$Listener;)Landroid/net/sip/SipSession;"/> + <method name="getCallId(Landroid/content/Intent;)Ljava/lang/String;"/> + <method name="getOfferSessionDescription(Landroid/content/Intent;)Ljava/lang/String;"/> + <method name="getSessionFor(Landroid/content/Intent;)Landroid/net/sip/SipSession;"/> + <method name="isApiSupported(Landroid/content/Context;)Z"/> + <method name="isIncomingCallIntent(Landroid/content/Intent;)Z"/> + <method name="isOpened(Ljava/lang/String;)Z"/> + <method name="isRegistered(Ljava/lang/String;)Z"/> + <method name="isSipWifiOnly(Landroid/content/Context;)Z"/> + <method name="isVoipSupported(Landroid/content/Context;)Z"/> + <method name="makeAudioCall(Landroid/net/sip/SipProfile;Landroid/net/sip/SipProfile;Landroid/net/sip/SipAudioCall$Listener;I)Landroid/net/sip/SipAudioCall;"/> + <method name="makeAudioCall(Ljava/lang/String;Ljava/lang/String;Landroid/net/sip/SipAudioCall$Listener;I)Landroid/net/sip/SipAudioCall;"/> + <method name="newInstance(Landroid/content/Context;)Landroid/net/sip/SipManager;"/> + <method name="open(Landroid/net/sip/SipProfile;)V"/> + <method name="open(Landroid/net/sip/SipProfile;Landroid/app/PendingIntent;Landroid/net/sip/SipRegistrationListener;)V"/> + <method name="register(Landroid/net/sip/SipProfile;ILandroid/net/sip/SipRegistrationListener;)V"/> + <method name="setRegistrationListener(Ljava/lang/String;Landroid/net/sip/SipRegistrationListener;)V"/> + <method name="takeAudioCall(Landroid/content/Intent;Landroid/net/sip/SipAudioCall$Listener;)Landroid/net/sip/SipAudioCall;"/> + <method name="unregister(Landroid/net/sip/SipProfile;Landroid/net/sip/SipRegistrationListener;)V"/> + <field name="EXTRA_CALL_ID"/> + <field name="EXTRA_OFFER_SD"/> + <field name="INCOMING_CALL_RESULT_CODE"/> + </class> + <class name="android/net/sip/SipProfile" since="9"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="getAuthUserName()Ljava/lang/String;" since="12"/> + <method name="getAutoRegistration()Z"/> + <method name="getDisplayName()Ljava/lang/String;"/> + <method name="getPassword()Ljava/lang/String;"/> + <method name="getPort()I"/> + <method name="getProfileName()Ljava/lang/String;"/> + <method name="getProtocol()Ljava/lang/String;"/> + <method name="getProxyAddress()Ljava/lang/String;"/> + <method name="getSendKeepAlive()Z"/> + <method name="getSipDomain()Ljava/lang/String;"/> + <method name="getUriString()Ljava/lang/String;"/> + <method name="getUserName()Ljava/lang/String;"/> + <field name="CREATOR"/> + </class> + <class name="android/net/sip/SipProfile$Builder" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/net/sip/SipProfile;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="build()Landroid/net/sip/SipProfile;"/> + <method name="setAuthUserName(Ljava/lang/String;)Landroid/net/sip/SipProfile$Builder;" since="12"/> + <method name="setAutoRegistration(Z)Landroid/net/sip/SipProfile$Builder;"/> + <method name="setDisplayName(Ljava/lang/String;)Landroid/net/sip/SipProfile$Builder;"/> + <method name="setOutboundProxy(Ljava/lang/String;)Landroid/net/sip/SipProfile$Builder;"/> + <method name="setPassword(Ljava/lang/String;)Landroid/net/sip/SipProfile$Builder;"/> + <method name="setPort(I)Landroid/net/sip/SipProfile$Builder;"/> + <method name="setProfileName(Ljava/lang/String;)Landroid/net/sip/SipProfile$Builder;"/> + <method name="setProtocol(Ljava/lang/String;)Landroid/net/sip/SipProfile$Builder;"/> + <method name="setSendKeepAlive(Z)Landroid/net/sip/SipProfile$Builder;"/> + </class> + <class name="android/net/sip/SipRegistrationListener" since="9"> + <extends name="java/lang/Object"/> + <method name="onRegistering(Ljava/lang/String;)V"/> + <method name="onRegistrationDone(Ljava/lang/String;J)V"/> + <method name="onRegistrationFailed(Ljava/lang/String;ILjava/lang/String;)V"/> + </class> + <class name="android/net/sip/SipSession" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="answerCall(Ljava/lang/String;I)V"/> + <method name="changeCall(Ljava/lang/String;I)V"/> + <method name="endCall()V"/> + <method name="getCallId()Ljava/lang/String;"/> + <method name="getLocalIp()Ljava/lang/String;"/> + <method name="getLocalProfile()Landroid/net/sip/SipProfile;"/> + <method name="getPeerProfile()Landroid/net/sip/SipProfile;"/> + <method name="getState()I"/> + <method name="isInCall()Z"/> + <method name="makeCall(Landroid/net/sip/SipProfile;Ljava/lang/String;I)V"/> + <method name="register(I)V"/> + <method name="setListener(Landroid/net/sip/SipSession$Listener;)V"/> + <method name="unregister()V"/> + </class> + <class name="android/net/sip/SipSession$Listener" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onCallBusy(Landroid/net/sip/SipSession;)V"/> + <method name="onCallChangeFailed(Landroid/net/sip/SipSession;ILjava/lang/String;)V"/> + <method name="onCallEnded(Landroid/net/sip/SipSession;)V"/> + <method name="onCallEstablished(Landroid/net/sip/SipSession;Ljava/lang/String;)V"/> + <method name="onCalling(Landroid/net/sip/SipSession;)V"/> + <method name="onError(Landroid/net/sip/SipSession;ILjava/lang/String;)V"/> + <method name="onRegistering(Landroid/net/sip/SipSession;)V"/> + <method name="onRegistrationDone(Landroid/net/sip/SipSession;I)V"/> + <method name="onRegistrationFailed(Landroid/net/sip/SipSession;ILjava/lang/String;)V"/> + <method name="onRegistrationTimeout(Landroid/net/sip/SipSession;)V"/> + <method name="onRinging(Landroid/net/sip/SipSession;Landroid/net/sip/SipProfile;Ljava/lang/String;)V"/> + <method name="onRingingBack(Landroid/net/sip/SipSession;)V"/> + </class> + <class name="android/net/sip/SipSession$State" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="toString(I)Ljava/lang/String;"/> + <field name="DEREGISTERING"/> + <field name="INCOMING_CALL"/> + <field name="INCOMING_CALL_ANSWERING"/> + <field name="IN_CALL"/> + <field name="NOT_DEFINED"/> + <field name="OUTGOING_CALL"/> + <field name="OUTGOING_CALL_CANCELING"/> + <field name="OUTGOING_CALL_RING_BACK"/> + <field name="PINGING"/> + <field name="READY_TO_CALL"/> + <field name="REGISTERING"/> + </class> + <class name="android/net/wifi/ScanResult" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="is80211mcResponder()Z" since="23"/> + <method name="isPasspointNetwork()Z" since="23"/> + <field name="BSSID"/> + <field name="CHANNEL_WIDTH_160MHZ" since="23"/> + <field name="CHANNEL_WIDTH_20MHZ" since="23"/> + <field name="CHANNEL_WIDTH_40MHZ" since="23"/> + <field name="CHANNEL_WIDTH_80MHZ" since="23"/> + <field name="CHANNEL_WIDTH_80MHZ_PLUS_MHZ" since="23"/> + <field name="SSID"/> + <field name="capabilities"/> + <field name="centerFreq0" since="23"/> + <field name="centerFreq1" since="23"/> + <field name="channelWidth" since="23"/> + <field name="frequency"/> + <field name="level"/> + <field name="operatorFriendlyName" since="23"/> + <field name="timestamp" since="17"/> + <field name="venueName" since="23"/> + </class> + <class name="android/net/wifi/SupplicantState" since="1"> + <extends name="java/lang/Enum"/> + <implements name="android/os/Parcelable"/> + <method name="isValidState(Landroid/net/wifi/SupplicantState;)Z"/> + <method name="valueOf(Ljava/lang/String;)Landroid/net/wifi/SupplicantState;"/> + <method name="values()[Landroid/net/wifi/SupplicantState;"/> + <field name="ASSOCIATED"/> + <field name="ASSOCIATING"/> + <field name="AUTHENTICATING" since="14"/> + <field name="COMPLETED"/> + <field name="DISCONNECTED"/> + <field name="DORMANT"/> + <field name="FOUR_WAY_HANDSHAKE"/> + <field name="GROUP_HANDSHAKE"/> + <field name="INACTIVE"/> + <field name="INTERFACE_DISABLED" since="14"/> + <field name="INVALID"/> + <field name="SCANNING"/> + <field name="UNINITIALIZED"/> + </class> + <class name="android/net/wifi/WifiConfiguration" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getHttpProxy()Landroid/net/ProxyInfo;" since="26"/> + <method name="isPasspoint()Z" since="23"/> + <method name="setHttpProxy(Landroid/net/ProxyInfo;)V" since="26"/> + <field name="BSSID"/> + <field name="FQDN" since="21"/> + <field name="SSID"/> + <field name="allowedAuthAlgorithms"/> + <field name="allowedGroupCiphers"/> + <field name="allowedKeyManagement"/> + <field name="allowedPairwiseCiphers"/> + <field name="allowedProtocols"/> + <field name="enterpriseConfig" since="18"/> + <field name="hiddenSSID"/> + <field name="isHomeProviderNetwork" since="26"/> + <field name="networkId"/> + <field name="preSharedKey"/> + <field name="priority" deprecated="26"/> + <field name="providerFriendlyName" since="23"/> + <field name="roamingConsortiumIds" since="23"/> + <field name="status"/> + <field name="wepKeys"/> + <field name="wepTxKeyIndex"/> + </class> + <class name="android/net/wifi/WifiConfiguration$AuthAlgorithm" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="LEAP"/> + <field name="OPEN"/> + <field name="SHARED"/> + <field name="strings"/> + <field name="varName"/> + </class> + <class name="android/net/wifi/WifiConfiguration$GroupCipher" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="CCMP"/> + <field name="TKIP"/> + <field name="WEP104"/> + <field name="WEP40"/> + <field name="strings"/> + <field name="varName"/> + </class> + <class name="android/net/wifi/WifiConfiguration$KeyMgmt" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="IEEE8021X"/> + <field name="NONE"/> + <field name="WPA_EAP"/> + <field name="WPA_PSK"/> + <field name="strings"/> + <field name="varName"/> + </class> + <class name="android/net/wifi/WifiConfiguration$PairwiseCipher" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="CCMP"/> + <field name="NONE"/> + <field name="TKIP"/> + <field name="strings"/> + <field name="varName"/> + </class> + <class name="android/net/wifi/WifiConfiguration$Protocol" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="RSN"/> + <field name="WPA"/> + <field name="strings"/> + <field name="varName"/> + </class> + <class name="android/net/wifi/WifiConfiguration$Status" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="CURRENT"/> + <field name="DISABLED"/> + <field name="ENABLED"/> + <field name="strings"/> + </class> + <class name="android/net/wifi/WifiEnterpriseConfig" since="18"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/net/wifi/WifiEnterpriseConfig;)V"/> + <method name="getAltSubjectMatch()Ljava/lang/String;" since="23"/> + <method name="getAnonymousIdentity()Ljava/lang/String;"/> + <method name="getCaCertificate()Ljava/security/cert/X509Certificate;"/> + <method name="getCaCertificates()[Ljava/security/cert/X509Certificate;" since="24"/> + <method name="getClientCertificate()Ljava/security/cert/X509Certificate;"/> + <method name="getClientCertificateChain()[Ljava/security/cert/X509Certificate;" since="26"/> + <method name="getDomainSuffixMatch()Ljava/lang/String;" since="23"/> + <method name="getEapMethod()I"/> + <method name="getIdentity()Ljava/lang/String;"/> + <method name="getPassword()Ljava/lang/String;"/> + <method name="getPhase2Method()I"/> + <method name="getPlmn()Ljava/lang/String;" since="23"/> + <method name="getRealm()Ljava/lang/String;" since="23"/> + <method name="getSubjectMatch()Ljava/lang/String;" deprecated="23"/> + <method name="setAltSubjectMatch(Ljava/lang/String;)V" since="23"/> + <method name="setAnonymousIdentity(Ljava/lang/String;)V"/> + <method name="setCaCertificate(Ljava/security/cert/X509Certificate;)V"/> + <method name="setCaCertificates([Ljava/security/cert/X509Certificate;)V" since="24"/> + <method name="setClientKeyEntry(Ljava/security/PrivateKey;Ljava/security/cert/X509Certificate;)V"/> + <method name="setClientKeyEntryWithCertificateChain(Ljava/security/PrivateKey;[Ljava/security/cert/X509Certificate;)V" since="26"/> + <method name="setDomainSuffixMatch(Ljava/lang/String;)V" since="23"/> + <method name="setEapMethod(I)V"/> + <method name="setIdentity(Ljava/lang/String;)V"/> + <method name="setPassword(Ljava/lang/String;)V"/> + <method name="setPhase2Method(I)V"/> + <method name="setPlmn(Ljava/lang/String;)V" since="23"/> + <method name="setRealm(Ljava/lang/String;)V" since="23"/> + <method name="setSubjectMatch(Ljava/lang/String;)V" deprecated="23"/> + <field name="CREATOR"/> + </class> + <class name="android/net/wifi/WifiEnterpriseConfig$Eap" since="18"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="AKA" since="21"/> + <field name="AKA_PRIME" since="23"/> + <field name="NONE"/> + <field name="PEAP"/> + <field name="PWD"/> + <field name="SIM" since="21"/> + <field name="TLS"/> + <field name="TTLS"/> + <field name="UNAUTH_TLS" since="24"/> + </class> + <class name="android/net/wifi/WifiEnterpriseConfig$Phase2" since="18"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="AKA" since="26"/> + <field name="AKA_PRIME" since="26"/> + <field name="GTC"/> + <field name="MSCHAP"/> + <field name="MSCHAPV2"/> + <field name="NONE"/> + <field name="PAP"/> + <field name="SIM" since="26"/> + </class> + <class name="android/net/wifi/WifiInfo" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getBSSID()Ljava/lang/String;"/> + <method name="getDetailedStateOf(Landroid/net/wifi/SupplicantState;)Landroid/net/NetworkInfo$DetailedState;"/> + <method name="getFrequency()I" since="21"/> + <method name="getHiddenSSID()Z"/> + <method name="getIpAddress()I"/> + <method name="getLinkSpeed()I"/> + <method name="getMacAddress()Ljava/lang/String;"/> + <method name="getNetworkId()I"/> + <method name="getRssi()I"/> + <method name="getSSID()Ljava/lang/String;"/> + <method name="getSupplicantState()Landroid/net/wifi/SupplicantState;"/> + <field name="FREQUENCY_UNITS" since="21"/> + <field name="LINK_SPEED_UNITS"/> + </class> + <class name="android/net/wifi/WifiManager" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addNetwork(Landroid/net/wifi/WifiConfiguration;)I"/> + <method name="addOrUpdatePasspointConfiguration(Landroid/net/wifi/hotspot2/PasspointConfiguration;)V" since="26"/> + <method name="calculateSignalLevel(II)I"/> + <method name="cancelWps(Landroid/net/wifi/WifiManager$WpsCallback;)V" since="21"/> + <method name="compareSignalLevel(II)I"/> + <method name="createMulticastLock(Ljava/lang/String;)Landroid/net/wifi/WifiManager$MulticastLock;" since="4"/> + <method name="createWifiLock(ILjava/lang/String;)Landroid/net/wifi/WifiManager$WifiLock;" since="3"/> + <method name="createWifiLock(Ljava/lang/String;)Landroid/net/wifi/WifiManager$WifiLock;"/> + <method name="disableNetwork(I)Z"/> + <method name="disconnect()Z"/> + <method name="enableNetwork(IZ)Z"/> + <method name="getConfiguredNetworks()Ljava/util/List;"/> + <method name="getConnectionInfo()Landroid/net/wifi/WifiInfo;"/> + <method name="getDhcpInfo()Landroid/net/DhcpInfo;" deprecated="18"/> + <method name="getPasspointConfigurations()Ljava/util/List;" since="26"/> + <method name="getScanResults()Ljava/util/List;"/> + <method name="getWifiState()I"/> + <method name="is5GHzBandSupported()Z" since="21"/> + <method name="isDeviceToApRttSupported()Z" since="21"/> + <method name="isEnhancedPowerReportingSupported()Z" since="21"/> + <method name="isP2pSupported()Z" since="21"/> + <method name="isPreferredNetworkOffloadSupported()Z" since="21"/> + <method name="isScanAlwaysAvailable()Z" since="18"/> + <method name="isTdlsSupported()Z" since="21"/> + <method name="isWifiEnabled()Z"/> + <method name="pingSupplicant()Z" deprecated="26"/> + <method name="reassociate()Z"/> + <method name="reconnect()Z"/> + <method name="removeNetwork(I)Z"/> + <method name="removePasspointConfiguration(Ljava/lang/String;)V" since="26"/> + <method name="saveConfiguration()Z" deprecated="26"/> + <method name="setTdlsEnabled(Ljava/net/InetAddress;Z)V" since="19"/> + <method name="setTdlsEnabledWithMacAddress(Ljava/lang/String;Z)V" since="19"/> + <method name="setWifiEnabled(Z)Z"/> + <method name="startLocalOnlyHotspot(Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallback;Landroid/os/Handler;)V" since="26"/> + <method name="startScan()Z"/> + <method name="startWps(Landroid/net/wifi/WpsInfo;Landroid/net/wifi/WifiManager$WpsCallback;)V" since="21"/> + <method name="updateNetwork(Landroid/net/wifi/WifiConfiguration;)I"/> + <field name="ACTION_PICK_WIFI_NETWORK"/> + <field name="ACTION_REQUEST_SCAN_ALWAYS_AVAILABLE" since="18"/> + <field name="ERROR_AUTHENTICATING"/> + <field name="EXTRA_BSSID"/> + <field name="EXTRA_NETWORK_INFO"/> + <field name="EXTRA_NEW_RSSI"/> + <field name="EXTRA_NEW_STATE"/> + <field name="EXTRA_PREVIOUS_WIFI_STATE"/> + <field name="EXTRA_RESULTS_UPDATED" since="23"/> + <field name="EXTRA_SUPPLICANT_CONNECTED"/> + <field name="EXTRA_SUPPLICANT_ERROR"/> + <field name="EXTRA_WIFI_INFO" since="14"/> + <field name="EXTRA_WIFI_STATE"/> + <field name="NETWORK_IDS_CHANGED_ACTION"/> + <field name="NETWORK_STATE_CHANGED_ACTION"/> + <field name="RSSI_CHANGED_ACTION"/> + <field name="SCAN_RESULTS_AVAILABLE_ACTION"/> + <field name="SUPPLICANT_CONNECTION_CHANGE_ACTION"/> + <field name="SUPPLICANT_STATE_CHANGED_ACTION"/> + <field name="WIFI_MODE_FULL" since="3"/> + <field name="WIFI_MODE_FULL_HIGH_PERF" since="12"/> + <field name="WIFI_MODE_SCAN_ONLY" since="3"/> + <field name="WIFI_STATE_CHANGED_ACTION"/> + <field name="WIFI_STATE_DISABLED"/> + <field name="WIFI_STATE_DISABLING"/> + <field name="WIFI_STATE_ENABLED"/> + <field name="WIFI_STATE_ENABLING"/> + <field name="WIFI_STATE_UNKNOWN"/> + <field name="WPS_AUTH_FAILURE" since="21"/> + <field name="WPS_OVERLAP_ERROR" since="21"/> + <field name="WPS_TIMED_OUT" since="21"/> + <field name="WPS_TKIP_ONLY_PROHIBITED" since="21"/> + <field name="WPS_WEP_PROHIBITED" since="21"/> + </class> + <class name="android/net/wifi/WifiManager$LocalOnlyHotspotCallback" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onFailed(I)V"/> + <method name="onStarted(Landroid/net/wifi/WifiManager$LocalOnlyHotspotReservation;)V"/> + <method name="onStopped()V"/> + <field name="ERROR_GENERIC"/> + <field name="ERROR_INCOMPATIBLE_MODE"/> + <field name="ERROR_NO_CHANNEL"/> + <field name="ERROR_TETHERING_DISALLOWED"/> + </class> + <class name="android/net/wifi/WifiManager$LocalOnlyHotspotReservation" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable"/> + <method name="<init>(Landroid/net/wifi/WifiManager;)V"/> + <method name="getWifiConfiguration()Landroid/net/wifi/WifiConfiguration;"/> + </class> + <class name="android/net/wifi/WifiManager$MulticastLock" since="4"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/net/wifi/WifiManager;)V"/> + <method name="acquire()V"/> + <method name="isHeld()Z"/> + <method name="release()V"/> + <method name="setReferenceCounted(Z)V"/> + </class> + <class name="android/net/wifi/WifiManager$WifiLock" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/net/wifi/WifiManager;)V"/> + <method name="acquire()V"/> + <method name="isHeld()Z"/> + <method name="release()V"/> + <method name="setReferenceCounted(Z)V"/> + <method name="setWorkSource(Landroid/os/WorkSource;)V" since="9"/> + </class> + <class name="android/net/wifi/WifiManager$WpsCallback" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onFailed(I)V"/> + <method name="onStarted(Ljava/lang/String;)V"/> + <method name="onSucceeded()V"/> + </class> + <class name="android/net/wifi/WpsInfo" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/net/wifi/WpsInfo;)V"/> + <field name="BSSID" since="21"/> + <field name="CREATOR"/> + <field name="DISPLAY"/> + <field name="INVALID"/> + <field name="KEYPAD"/> + <field name="LABEL"/> + <field name="PBC"/> + <field name="pin"/> + <field name="setup"/> + </class> + <class name="android/net/wifi/aware/AttachCallback" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onAttachFailed()V"/> + <method name="onAttached(Landroid/net/wifi/aware/WifiAwareSession;)V"/> + </class> + <class name="android/net/wifi/aware/Characteristics" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getMaxMatchFilterLength()I"/> + <method name="getMaxServiceNameLength()I"/> + <method name="getMaxServiceSpecificInfoLength()I"/> + <field name="CREATOR"/> + </class> + <class name="android/net/wifi/aware/DiscoverySession" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable"/> + <method name="<init>()V"/> + <method name="createNetworkSpecifierOpen(Landroid/net/wifi/aware/PeerHandle;)Landroid/net/NetworkSpecifier;"/> + <method name="createNetworkSpecifierPassphrase(Landroid/net/wifi/aware/PeerHandle;Ljava/lang/String;)Landroid/net/NetworkSpecifier;"/> + <method name="sendMessage(Landroid/net/wifi/aware/PeerHandle;I[B)V"/> + </class> + <class name="android/net/wifi/aware/DiscoverySessionCallback" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onMessageReceived(Landroid/net/wifi/aware/PeerHandle;[B)V"/> + <method name="onMessageSendFailed(I)V"/> + <method name="onMessageSendSucceeded(I)V"/> + <method name="onPublishStarted(Landroid/net/wifi/aware/PublishDiscoverySession;)V"/> + <method name="onServiceDiscovered(Landroid/net/wifi/aware/PeerHandle;[BLjava/util/List;)V"/> + <method name="onSessionConfigFailed()V"/> + <method name="onSessionConfigUpdated()V"/> + <method name="onSessionTerminated()V"/> + <method name="onSubscribeStarted(Landroid/net/wifi/aware/SubscribeDiscoverySession;)V"/> + </class> + <class name="android/net/wifi/aware/IdentityChangedListener" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onIdentityChanged([B)V"/> + </class> + <class name="android/net/wifi/aware/PeerHandle" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/net/wifi/aware/PublishConfig" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <field name="CREATOR"/> + <field name="PUBLISH_TYPE_SOLICITED"/> + <field name="PUBLISH_TYPE_UNSOLICITED"/> + </class> + <class name="android/net/wifi/aware/PublishConfig$Builder" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="build()Landroid/net/wifi/aware/PublishConfig;"/> + <method name="setMatchFilter(Ljava/util/List;)Landroid/net/wifi/aware/PublishConfig$Builder;"/> + <method name="setPublishType(I)Landroid/net/wifi/aware/PublishConfig$Builder;"/> + <method name="setServiceName(Ljava/lang/String;)Landroid/net/wifi/aware/PublishConfig$Builder;"/> + <method name="setServiceSpecificInfo([B)Landroid/net/wifi/aware/PublishConfig$Builder;"/> + <method name="setTerminateNotificationEnabled(Z)Landroid/net/wifi/aware/PublishConfig$Builder;"/> + <method name="setTtlSec(I)Landroid/net/wifi/aware/PublishConfig$Builder;"/> + </class> + <class name="android/net/wifi/aware/PublishDiscoverySession" since="26"> + <extends name="android/net/wifi/aware/DiscoverySession"/> + <method name="<init>()V"/> + <method name="updatePublish(Landroid/net/wifi/aware/PublishConfig;)V"/> + </class> + <class name="android/net/wifi/aware/SubscribeConfig" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <field name="CREATOR"/> + <field name="SUBSCRIBE_TYPE_ACTIVE"/> + <field name="SUBSCRIBE_TYPE_PASSIVE"/> + </class> + <class name="android/net/wifi/aware/SubscribeConfig$Builder" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="build()Landroid/net/wifi/aware/SubscribeConfig;"/> + <method name="setMatchFilter(Ljava/util/List;)Landroid/net/wifi/aware/SubscribeConfig$Builder;"/> + <method name="setServiceName(Ljava/lang/String;)Landroid/net/wifi/aware/SubscribeConfig$Builder;"/> + <method name="setServiceSpecificInfo([B)Landroid/net/wifi/aware/SubscribeConfig$Builder;"/> + <method name="setSubscribeType(I)Landroid/net/wifi/aware/SubscribeConfig$Builder;"/> + <method name="setTerminateNotificationEnabled(Z)Landroid/net/wifi/aware/SubscribeConfig$Builder;"/> + <method name="setTtlSec(I)Landroid/net/wifi/aware/SubscribeConfig$Builder;"/> + </class> + <class name="android/net/wifi/aware/SubscribeDiscoverySession" since="26"> + <extends name="android/net/wifi/aware/DiscoverySession"/> + <method name="<init>()V"/> + <method name="updateSubscribe(Landroid/net/wifi/aware/SubscribeConfig;)V"/> + </class> + <class name="android/net/wifi/aware/WifiAwareManager" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="attach(Landroid/net/wifi/aware/AttachCallback;Landroid/net/wifi/aware/IdentityChangedListener;Landroid/os/Handler;)V"/> + <method name="attach(Landroid/net/wifi/aware/AttachCallback;Landroid/os/Handler;)V"/> + <method name="getCharacteristics()Landroid/net/wifi/aware/Characteristics;"/> + <method name="isAvailable()Z"/> + <field name="ACTION_WIFI_AWARE_STATE_CHANGED"/> + <field name="WIFI_AWARE_DATA_PATH_ROLE_INITIATOR"/> + <field name="WIFI_AWARE_DATA_PATH_ROLE_RESPONDER"/> + </class> + <class name="android/net/wifi/aware/WifiAwareSession" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable"/> + <method name="<init>()V"/> + <method name="createNetworkSpecifierOpen(I[B)Landroid/net/NetworkSpecifier;"/> + <method name="createNetworkSpecifierPassphrase(I[BLjava/lang/String;)Landroid/net/NetworkSpecifier;"/> + <method name="publish(Landroid/net/wifi/aware/PublishConfig;Landroid/net/wifi/aware/DiscoverySessionCallback;Landroid/os/Handler;)V"/> + <method name="subscribe(Landroid/net/wifi/aware/SubscribeConfig;Landroid/net/wifi/aware/DiscoverySessionCallback;Landroid/os/Handler;)V"/> + </class> + <class name="android/net/wifi/hotspot2/ConfigParser" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="parsePasspointConfig(Ljava/lang/String;[B)Landroid/net/wifi/hotspot2/PasspointConfiguration;"/> + </class> + <class name="android/net/wifi/hotspot2/PasspointConfiguration" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/net/wifi/hotspot2/PasspointConfiguration;)V"/> + <method name="getCredential()Landroid/net/wifi/hotspot2/pps/Credential;"/> + <method name="getHomeSp()Landroid/net/wifi/hotspot2/pps/HomeSp;"/> + <method name="setCredential(Landroid/net/wifi/hotspot2/pps/Credential;)V"/> + <method name="setHomeSp(Landroid/net/wifi/hotspot2/pps/HomeSp;)V"/> + <field name="CREATOR"/> + </class> + <class name="android/net/wifi/hotspot2/omadm/PpsMoParser" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="parseMoText(Ljava/lang/String;)Landroid/net/wifi/hotspot2/PasspointConfiguration;"/> + </class> + <class name="android/net/wifi/hotspot2/pps/Credential" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/net/wifi/hotspot2/pps/Credential;)V"/> + <method name="getCaCertificate()Ljava/security/cert/X509Certificate;"/> + <method name="getCertCredential()Landroid/net/wifi/hotspot2/pps/Credential$CertificateCredential;"/> + <method name="getClientCertificateChain()[Ljava/security/cert/X509Certificate;"/> + <method name="getClientPrivateKey()Ljava/security/PrivateKey;"/> + <method name="getRealm()Ljava/lang/String;"/> + <method name="getSimCredential()Landroid/net/wifi/hotspot2/pps/Credential$SimCredential;"/> + <method name="getUserCredential()Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;"/> + <method name="setCaCertificate(Ljava/security/cert/X509Certificate;)V"/> + <method name="setCertCredential(Landroid/net/wifi/hotspot2/pps/Credential$CertificateCredential;)V"/> + <method name="setClientCertificateChain([Ljava/security/cert/X509Certificate;)V"/> + <method name="setClientPrivateKey(Ljava/security/PrivateKey;)V"/> + <method name="setRealm(Ljava/lang/String;)V"/> + <method name="setSimCredential(Landroid/net/wifi/hotspot2/pps/Credential$SimCredential;)V"/> + <method name="setUserCredential(Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;)V"/> + <field name="CREATOR"/> + </class> + <class name="android/net/wifi/hotspot2/pps/Credential$CertificateCredential" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/net/wifi/hotspot2/pps/Credential$CertificateCredential;)V"/> + <method name="getCertSha256Fingerprint()[B"/> + <method name="getCertType()Ljava/lang/String;"/> + <method name="setCertSha256Fingerprint([B)V"/> + <method name="setCertType(Ljava/lang/String;)V"/> + <field name="CREATOR"/> + </class> + <class name="android/net/wifi/hotspot2/pps/Credential$SimCredential" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/net/wifi/hotspot2/pps/Credential$SimCredential;)V"/> + <method name="getEapType()I"/> + <method name="getImsi()Ljava/lang/String;"/> + <method name="setEapType(I)V"/> + <method name="setImsi(Ljava/lang/String;)V"/> + <field name="CREATOR"/> + </class> + <class name="android/net/wifi/hotspot2/pps/Credential$UserCredential" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;)V"/> + <method name="getEapType()I"/> + <method name="getNonEapInnerMethod()Ljava/lang/String;"/> + <method name="getPassword()Ljava/lang/String;"/> + <method name="getUsername()Ljava/lang/String;"/> + <method name="setEapType(I)V"/> + <method name="setNonEapInnerMethod(Ljava/lang/String;)V"/> + <method name="setPassword(Ljava/lang/String;)V"/> + <method name="setUsername(Ljava/lang/String;)V"/> + <field name="CREATOR"/> + </class> + <class name="android/net/wifi/hotspot2/pps/HomeSp" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/net/wifi/hotspot2/pps/HomeSp;)V"/> + <method name="getFqdn()Ljava/lang/String;"/> + <method name="getFriendlyName()Ljava/lang/String;"/> + <method name="getRoamingConsortiumOis()[J"/> + <method name="setFqdn(Ljava/lang/String;)V"/> + <method name="setFriendlyName(Ljava/lang/String;)V"/> + <method name="setRoamingConsortiumOis([J)V"/> + <field name="CREATOR"/> + </class> + <class name="android/net/wifi/p2p/WifiP2pConfig" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/net/wifi/p2p/WifiP2pConfig;)V"/> + <field name="CREATOR"/> + <field name="deviceAddress"/> + <field name="groupOwnerIntent"/> + <field name="wps"/> + </class> + <class name="android/net/wifi/p2p/WifiP2pDevice" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/net/wifi/p2p/WifiP2pDevice;)V"/> + <method name="isGroupOwner()Z"/> + <method name="isServiceDiscoveryCapable()Z"/> + <method name="wpsDisplaySupported()Z"/> + <method name="wpsKeypadSupported()Z"/> + <method name="wpsPbcSupported()Z"/> + <field name="AVAILABLE"/> + <field name="CONNECTED"/> + <field name="CREATOR"/> + <field name="FAILED"/> + <field name="INVITED"/> + <field name="UNAVAILABLE"/> + <field name="deviceAddress"/> + <field name="deviceName"/> + <field name="primaryDeviceType"/> + <field name="secondaryDeviceType"/> + <field name="status"/> + </class> + <class name="android/net/wifi/p2p/WifiP2pDeviceList" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/net/wifi/p2p/WifiP2pDeviceList;)V"/> + <method name="get(Ljava/lang/String;)Landroid/net/wifi/p2p/WifiP2pDevice;" since="18"/> + <method name="getDeviceList()Ljava/util/Collection;"/> + <field name="CREATOR"/> + </class> + <class name="android/net/wifi/p2p/WifiP2pGroup" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/net/wifi/p2p/WifiP2pGroup;)V"/> + <method name="getClientList()Ljava/util/Collection;"/> + <method name="getInterface()Ljava/lang/String;"/> + <method name="getNetworkName()Ljava/lang/String;"/> + <method name="getOwner()Landroid/net/wifi/p2p/WifiP2pDevice;"/> + <method name="getPassphrase()Ljava/lang/String;"/> + <method name="isGroupOwner()Z"/> + <field name="CREATOR"/> + </class> + <class name="android/net/wifi/p2p/WifiP2pInfo" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/net/wifi/p2p/WifiP2pInfo;)V"/> + <field name="CREATOR"/> + <field name="groupFormed"/> + <field name="groupOwnerAddress"/> + <field name="isGroupOwner"/> + </class> + <class name="android/net/wifi/p2p/WifiP2pManager" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addLocalService(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/nsd/WifiP2pServiceInfo;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V" since="16"/> + <method name="addServiceRequest(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V" since="16"/> + <method name="cancelConnect(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V"/> + <method name="clearLocalServices(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V" since="16"/> + <method name="clearServiceRequests(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V" since="16"/> + <method name="connect(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pConfig;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V"/> + <method name="createGroup(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V"/> + <method name="discoverPeers(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V"/> + <method name="discoverServices(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V" since="16"/> + <method name="initialize(Landroid/content/Context;Landroid/os/Looper;Landroid/net/wifi/p2p/WifiP2pManager$ChannelListener;)Landroid/net/wifi/p2p/WifiP2pManager$Channel;"/> + <method name="removeGroup(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V"/> + <method name="removeLocalService(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/nsd/WifiP2pServiceInfo;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V" since="16"/> + <method name="removeServiceRequest(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V" since="16"/> + <method name="requestConnectionInfo(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$ConnectionInfoListener;)V"/> + <method name="requestGroupInfo(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$GroupInfoListener;)V"/> + <method name="requestPeers(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$PeerListListener;)V"/> + <method name="setDnsSdResponseListeners(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$DnsSdServiceResponseListener;Landroid/net/wifi/p2p/WifiP2pManager$DnsSdTxtRecordListener;)V" since="16"/> + <method name="setServiceResponseListener(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$ServiceResponseListener;)V" since="16"/> + <method name="setUpnpServiceResponseListener(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$UpnpServiceResponseListener;)V" since="16"/> + <method name="stopPeerDiscovery(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V" since="16"/> + <field name="BUSY"/> + <field name="ERROR"/> + <field name="EXTRA_DISCOVERY_STATE" since="16"/> + <field name="EXTRA_NETWORK_INFO"/> + <field name="EXTRA_P2P_DEVICE_LIST" since="18"/> + <field name="EXTRA_WIFI_P2P_DEVICE"/> + <field name="EXTRA_WIFI_P2P_GROUP" since="18"/> + <field name="EXTRA_WIFI_P2P_INFO"/> + <field name="EXTRA_WIFI_STATE"/> + <field name="NO_SERVICE_REQUESTS" since="16"/> + <field name="P2P_UNSUPPORTED"/> + <field name="WIFI_P2P_CONNECTION_CHANGED_ACTION"/> + <field name="WIFI_P2P_DISCOVERY_CHANGED_ACTION" since="16"/> + <field name="WIFI_P2P_DISCOVERY_STARTED" since="16"/> + <field name="WIFI_P2P_DISCOVERY_STOPPED" since="16"/> + <field name="WIFI_P2P_PEERS_CHANGED_ACTION"/> + <field name="WIFI_P2P_STATE_CHANGED_ACTION"/> + <field name="WIFI_P2P_STATE_DISABLED"/> + <field name="WIFI_P2P_STATE_ENABLED"/> + <field name="WIFI_P2P_THIS_DEVICE_CHANGED_ACTION"/> + </class> + <class name="android/net/wifi/p2p/WifiP2pManager$ActionListener" since="14"> + <extends name="java/lang/Object"/> + <method name="onFailure(I)V"/> + <method name="onSuccess()V"/> + </class> + <class name="android/net/wifi/p2p/WifiP2pManager$Channel" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/net/wifi/p2p/WifiP2pManager$ChannelListener" since="14"> + <extends name="java/lang/Object"/> + <method name="onChannelDisconnected()V"/> + </class> + <class name="android/net/wifi/p2p/WifiP2pManager$ConnectionInfoListener" since="14"> + <extends name="java/lang/Object"/> + <method name="onConnectionInfoAvailable(Landroid/net/wifi/p2p/WifiP2pInfo;)V"/> + </class> + <class name="android/net/wifi/p2p/WifiP2pManager$DnsSdServiceResponseListener" since="16"> + <extends name="java/lang/Object"/> + <method name="onDnsSdServiceAvailable(Ljava/lang/String;Ljava/lang/String;Landroid/net/wifi/p2p/WifiP2pDevice;)V"/> + </class> + <class name="android/net/wifi/p2p/WifiP2pManager$DnsSdTxtRecordListener" since="16"> + <extends name="java/lang/Object"/> + <method name="onDnsSdTxtRecordAvailable(Ljava/lang/String;Ljava/util/Map;Landroid/net/wifi/p2p/WifiP2pDevice;)V"/> + </class> + <class name="android/net/wifi/p2p/WifiP2pManager$GroupInfoListener" since="14"> + <extends name="java/lang/Object"/> + <method name="onGroupInfoAvailable(Landroid/net/wifi/p2p/WifiP2pGroup;)V"/> + </class> + <class name="android/net/wifi/p2p/WifiP2pManager$PeerListListener" since="14"> + <extends name="java/lang/Object"/> + <method name="onPeersAvailable(Landroid/net/wifi/p2p/WifiP2pDeviceList;)V"/> + </class> + <class name="android/net/wifi/p2p/WifiP2pManager$ServiceResponseListener" since="16"> + <extends name="java/lang/Object"/> + <method name="onServiceAvailable(I[BLandroid/net/wifi/p2p/WifiP2pDevice;)V"/> + </class> + <class name="android/net/wifi/p2p/WifiP2pManager$UpnpServiceResponseListener" since="16"> + <extends name="java/lang/Object"/> + <method name="onUpnpServiceAvailable(Ljava/util/List;Landroid/net/wifi/p2p/WifiP2pDevice;)V"/> + </class> + <class name="android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo" since="16"> + <extends name="android/net/wifi/p2p/nsd/WifiP2pServiceInfo"/> + <method name="<init>()V"/> + <method name="newInstance(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo;"/> + </class> + <class name="android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceRequest" since="16"> + <extends name="android/net/wifi/p2p/nsd/WifiP2pServiceRequest"/> + <method name="<init>()V"/> + <method name="newInstance()Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceRequest;"/> + <method name="newInstance(Ljava/lang/String;)Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceRequest;"/> + <method name="newInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceRequest;"/> + </class> + <class name="android/net/wifi/p2p/nsd/WifiP2pServiceInfo" since="16"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <field name="SERVICE_TYPE_ALL"/> + <field name="SERVICE_TYPE_BONJOUR"/> + <field name="SERVICE_TYPE_UPNP"/> + <field name="SERVICE_TYPE_VENDOR_SPECIFIC"/> + </class> + <class name="android/net/wifi/p2p/nsd/WifiP2pServiceRequest" since="16"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="newInstance(I)Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;"/> + <method name="newInstance(ILjava/lang/String;)Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;"/> + </class> + <class name="android/net/wifi/p2p/nsd/WifiP2pUpnpServiceInfo" since="16"> + <extends name="android/net/wifi/p2p/nsd/WifiP2pServiceInfo"/> + <method name="<init>()V"/> + <method name="newInstance(Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceInfo;"/> + </class> + <class name="android/net/wifi/p2p/nsd/WifiP2pUpnpServiceRequest" since="16"> + <extends name="android/net/wifi/p2p/nsd/WifiP2pServiceRequest"/> + <method name="<init>()V"/> + <method name="newInstance()Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceRequest;"/> + <method name="newInstance(Ljava/lang/String;)Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceRequest;"/> + </class> + <class name="android/nfc/FormatException" since="9"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="16"/> + </class> + <class name="android/nfc/NdefMessage" since="9"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/nfc/NdefRecord;[Landroid/nfc/NdefRecord;)V" since="16"/> + <method name="<init>([B)V"/> + <method name="<init>([Landroid/nfc/NdefRecord;)V"/> + <method name="getByteArrayLength()I" since="16"/> + <method name="getRecords()[Landroid/nfc/NdefRecord;"/> + <method name="toByteArray()[B"/> + <field name="CREATOR"/> + </class> + <class name="android/nfc/NdefRecord" since="9"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(S[B[B[B)V"/> + <method name="<init>([B)V" deprecated="16"/> + <method name="createApplicationRecord(Ljava/lang/String;)Landroid/nfc/NdefRecord;" since="14"/> + <method name="createExternal(Ljava/lang/String;Ljava/lang/String;[B)Landroid/nfc/NdefRecord;" since="16"/> + <method name="createMime(Ljava/lang/String;[B)Landroid/nfc/NdefRecord;" since="16"/> + <method name="createTextRecord(Ljava/lang/String;Ljava/lang/String;)Landroid/nfc/NdefRecord;" since="21"/> + <method name="createUri(Landroid/net/Uri;)Landroid/nfc/NdefRecord;" since="14"/> + <method name="createUri(Ljava/lang/String;)Landroid/nfc/NdefRecord;" since="14"/> + <method name="getId()[B"/> + <method name="getPayload()[B"/> + <method name="getTnf()S"/> + <method name="getType()[B"/> + <method name="toByteArray()[B" deprecated="16"/> + <method name="toMimeType()Ljava/lang/String;" since="16"/> + <method name="toUri()Landroid/net/Uri;" since="16"/> + <field name="CREATOR"/> + <field name="RTD_ALTERNATIVE_CARRIER"/> + <field name="RTD_HANDOVER_CARRIER"/> + <field name="RTD_HANDOVER_REQUEST"/> + <field name="RTD_HANDOVER_SELECT"/> + <field name="RTD_SMART_POSTER"/> + <field name="RTD_TEXT"/> + <field name="RTD_URI"/> + <field name="TNF_ABSOLUTE_URI"/> + <field name="TNF_EMPTY"/> + <field name="TNF_EXTERNAL_TYPE"/> + <field name="TNF_MIME_MEDIA"/> + <field name="TNF_UNCHANGED"/> + <field name="TNF_UNKNOWN"/> + <field name="TNF_WELL_KNOWN"/> + </class> + <class name="android/nfc/NfcAdapter" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="disableForegroundDispatch(Landroid/app/Activity;)V" since="10"/> + <method name="disableForegroundNdefPush(Landroid/app/Activity;)V" since="10" deprecated="16"/> + <method name="disableReaderMode(Landroid/app/Activity;)V" since="19"/> + <method name="enableForegroundDispatch(Landroid/app/Activity;Landroid/app/PendingIntent;[Landroid/content/IntentFilter;[[Ljava/lang/String;)V" since="10"/> + <method name="enableForegroundNdefPush(Landroid/app/Activity;Landroid/nfc/NdefMessage;)V" since="10" deprecated="16"/> + <method name="enableReaderMode(Landroid/app/Activity;Landroid/nfc/NfcAdapter$ReaderCallback;ILandroid/os/Bundle;)V" since="19"/> + <method name="getDefaultAdapter()Landroid/nfc/NfcAdapter;" removed="16"/> + <method name="getDefaultAdapter(Landroid/content/Context;)Landroid/nfc/NfcAdapter;" since="10"/> + <method name="ignore(Landroid/nfc/Tag;ILandroid/nfc/NfcAdapter$OnTagRemovedListener;Landroid/os/Handler;)Z" since="24"/> + <method name="invokeBeam(Landroid/app/Activity;)Z" since="21"/> + <method name="isEnabled()Z"/> + <method name="isNdefPushEnabled()Z" since="16"/> + <method name="setBeamPushUris([Landroid/net/Uri;Landroid/app/Activity;)V" since="16"/> + <method name="setBeamPushUrisCallback(Landroid/nfc/NfcAdapter$CreateBeamUrisCallback;Landroid/app/Activity;)V" since="16"/> + <method name="setNdefPushMessage(Landroid/nfc/NdefMessage;Landroid/app/Activity;[Landroid/app/Activity;)V" since="14"/> + <method name="setNdefPushMessageCallback(Landroid/nfc/NfcAdapter$CreateNdefMessageCallback;Landroid/app/Activity;[Landroid/app/Activity;)V" since="14"/> + <method name="setOnNdefPushCompleteCallback(Landroid/nfc/NfcAdapter$OnNdefPushCompleteCallback;Landroid/app/Activity;[Landroid/app/Activity;)V" since="14"/> + <field name="ACTION_ADAPTER_STATE_CHANGED" since="18"/> + <field name="ACTION_NDEF_DISCOVERED" since="10"/> + <field name="ACTION_TAG_DISCOVERED"/> + <field name="ACTION_TECH_DISCOVERED" since="10"/> + <field name="EXTRA_ADAPTER_STATE" since="18"/> + <field name="EXTRA_ID"/> + <field name="EXTRA_NDEF_MESSAGES"/> + <field name="EXTRA_READER_PRESENCE_CHECK_DELAY" since="19"/> + <field name="EXTRA_TAG" since="10"/> + <field name="FLAG_READER_NFC_A" since="19"/> + <field name="FLAG_READER_NFC_B" since="19"/> + <field name="FLAG_READER_NFC_BARCODE" since="19"/> + <field name="FLAG_READER_NFC_F" since="19"/> + <field name="FLAG_READER_NFC_V" since="19"/> + <field name="FLAG_READER_NO_PLATFORM_SOUNDS" since="19"/> + <field name="FLAG_READER_SKIP_NDEF_CHECK" since="19"/> + <field name="STATE_OFF" since="18"/> + <field name="STATE_ON" since="18"/> + <field name="STATE_TURNING_OFF" since="18"/> + <field name="STATE_TURNING_ON" since="18"/> + </class> + <class name="android/nfc/NfcAdapter$CreateBeamUrisCallback" since="16"> + <extends name="java/lang/Object"/> + <method name="createBeamUris(Landroid/nfc/NfcEvent;)[Landroid/net/Uri;"/> + </class> + <class name="android/nfc/NfcAdapter$CreateNdefMessageCallback" since="14"> + <extends name="java/lang/Object"/> + <method name="createNdefMessage(Landroid/nfc/NfcEvent;)Landroid/nfc/NdefMessage;"/> + </class> + <class name="android/nfc/NfcAdapter$OnNdefPushCompleteCallback" since="14"> + <extends name="java/lang/Object"/> + <method name="onNdefPushComplete(Landroid/nfc/NfcEvent;)V"/> + </class> + <class name="android/nfc/NfcAdapter$OnTagRemovedListener" since="24"> + <extends name="java/lang/Object"/> + <method name="onTagRemoved()V"/> + </class> + <class name="android/nfc/NfcAdapter$ReaderCallback" since="19"> + <extends name="java/lang/Object"/> + <method name="onTagDiscovered(Landroid/nfc/Tag;)V"/> + </class> + <class name="android/nfc/NfcEvent" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="nfcAdapter"/> + <field name="peerLlcpMajorVersion" since="23"/> + <field name="peerLlcpMinorVersion" since="23"/> + </class> + <class name="android/nfc/NfcManager" since="10"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getDefaultAdapter()Landroid/nfc/NfcAdapter;"/> + </class> + <class name="android/nfc/Tag" since="10"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getId()[B"/> + <method name="getTechList()[Ljava/lang/String;"/> + <field name="CREATOR"/> + </class> + <class name="android/nfc/TagLostException" since="10"> + <extends name="java/io/IOException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/nfc/cardemulation/CardEmulation" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="categoryAllowsForegroundPreference(Ljava/lang/String;)Z" since="21"/> + <method name="getAidsForService(Landroid/content/ComponentName;Ljava/lang/String;)Ljava/util/List;" since="21"/> + <method name="getInstance(Landroid/nfc/NfcAdapter;)Landroid/nfc/cardemulation/CardEmulation;"/> + <method name="getSelectionModeForCategory(Ljava/lang/String;)I"/> + <method name="isDefaultServiceForAid(Landroid/content/ComponentName;Ljava/lang/String;)Z"/> + <method name="isDefaultServiceForCategory(Landroid/content/ComponentName;Ljava/lang/String;)Z"/> + <method name="registerAidsForService(Landroid/content/ComponentName;Ljava/lang/String;Ljava/util/List;)Z" since="21"/> + <method name="removeAidsForService(Landroid/content/ComponentName;Ljava/lang/String;)Z" since="21"/> + <method name="setPreferredService(Landroid/app/Activity;Landroid/content/ComponentName;)Z" since="21"/> + <method name="supportsAidPrefixRegistration()Z" since="21"/> + <method name="unsetPreferredService(Landroid/app/Activity;)Z" since="21"/> + <field name="ACTION_CHANGE_DEFAULT"/> + <field name="CATEGORY_OTHER"/> + <field name="CATEGORY_PAYMENT"/> + <field name="EXTRA_CATEGORY"/> + <field name="EXTRA_SERVICE_COMPONENT"/> + <field name="SELECTION_MODE_ALWAYS_ASK"/> + <field name="SELECTION_MODE_ASK_IF_CONFLICT"/> + <field name="SELECTION_MODE_PREFER_DEFAULT"/> + </class> + <class name="android/nfc/cardemulation/HostApduService" since="19"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="notifyUnhandled()V"/> + <method name="onDeactivated(I)V"/> + <method name="processCommandApdu([BLandroid/os/Bundle;)[B"/> + <method name="sendResponseApdu([B)V"/> + <field name="DEACTIVATION_DESELECTED"/> + <field name="DEACTIVATION_LINK_LOSS"/> + <field name="SERVICE_INTERFACE"/> + <field name="SERVICE_META_DATA"/> + </class> + <class name="android/nfc/cardemulation/HostNfcFService" since="24"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="onDeactivated(I)V"/> + <method name="processNfcFPacket([BLandroid/os/Bundle;)[B"/> + <method name="sendResponsePacket([B)V"/> + <field name="DEACTIVATION_LINK_LOSS"/> + <field name="SERVICE_INTERFACE"/> + <field name="SERVICE_META_DATA"/> + </class> + <class name="android/nfc/cardemulation/NfcFCardEmulation" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="disableService(Landroid/app/Activity;)Z"/> + <method name="enableService(Landroid/app/Activity;Landroid/content/ComponentName;)Z"/> + <method name="getInstance(Landroid/nfc/NfcAdapter;)Landroid/nfc/cardemulation/NfcFCardEmulation;"/> + <method name="getNfcid2ForService(Landroid/content/ComponentName;)Ljava/lang/String;"/> + <method name="getSystemCodeForService(Landroid/content/ComponentName;)Ljava/lang/String;"/> + <method name="registerSystemCodeForService(Landroid/content/ComponentName;Ljava/lang/String;)Z"/> + <method name="setNfcid2ForService(Landroid/content/ComponentName;Ljava/lang/String;)Z"/> + <method name="unregisterSystemCodeForService(Landroid/content/ComponentName;)Z"/> + </class> + <class name="android/nfc/cardemulation/OffHostApduService" since="19"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <field name="SERVICE_INTERFACE"/> + <field name="SERVICE_META_DATA"/> + </class> + <class name="android/nfc/tech/BasicTagTechnology" since="10"> + <extends name="java/lang/Object"/> + <implements name="android/nfc/tech/TagTechnology"/> + <method name="<init>()V"/> + </class> + <class name="android/nfc/tech/IsoDep" since="10"> + <extends name="android/nfc/tech/BasicTagTechnology"/> + <method name="<init>()V"/> + <method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/IsoDep;"/> + <method name="getHiLayerResponse()[B"/> + <method name="getHistoricalBytes()[B"/> + <method name="getMaxTransceiveLength()I" since="14"/> + <method name="getTimeout()I" since="14"/> + <method name="isExtendedLengthApduSupported()Z" since="16"/> + <method name="setTimeout(I)V"/> + <method name="transceive([B)[B"/> + </class> + <class name="android/nfc/tech/MifareClassic" since="10"> + <extends name="android/nfc/tech/BasicTagTechnology"/> + <method name="<init>()V"/> + <method name="authenticateSectorWithKeyA(I[B)Z"/> + <method name="authenticateSectorWithKeyB(I[B)Z"/> + <method name="blockToSector(I)I"/> + <method name="decrement(II)V"/> + <method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/MifareClassic;"/> + <method name="getBlockCount()I"/> + <method name="getBlockCountInSector(I)I"/> + <method name="getMaxTransceiveLength()I" since="14"/> + <method name="getSectorCount()I"/> + <method name="getSize()I"/> + <method name="getTimeout()I" since="14"/> + <method name="getType()I"/> + <method name="increment(II)V"/> + <method name="readBlock(I)[B"/> + <method name="restore(I)V"/> + <method name="sectorToBlock(I)I"/> + <method name="setTimeout(I)V" since="14"/> + <method name="transceive([B)[B"/> + <method name="transfer(I)V"/> + <method name="writeBlock(I[B)V"/> + <field name="BLOCK_SIZE"/> + <field name="KEY_DEFAULT"/> + <field name="KEY_MIFARE_APPLICATION_DIRECTORY"/> + <field name="KEY_NFC_FORUM"/> + <field name="SIZE_1K"/> + <field name="SIZE_2K"/> + <field name="SIZE_4K"/> + <field name="SIZE_MINI"/> + <field name="TYPE_CLASSIC"/> + <field name="TYPE_PLUS"/> + <field name="TYPE_PRO"/> + <field name="TYPE_UNKNOWN"/> + </class> + <class name="android/nfc/tech/MifareUltralight" since="10"> + <extends name="android/nfc/tech/BasicTagTechnology"/> + <method name="<init>()V"/> + <method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/MifareUltralight;"/> + <method name="getMaxTransceiveLength()I" since="14"/> + <method name="getTimeout()I" since="14"/> + <method name="getType()I"/> + <method name="readPages(I)[B"/> + <method name="setTimeout(I)V" since="14"/> + <method name="transceive([B)[B"/> + <method name="writePage(I[B)V"/> + <field name="PAGE_SIZE"/> + <field name="TYPE_ULTRALIGHT"/> + <field name="TYPE_ULTRALIGHT_C"/> + <field name="TYPE_UNKNOWN"/> + </class> + <class name="android/nfc/tech/Ndef" since="10"> + <extends name="android/nfc/tech/BasicTagTechnology"/> + <method name="<init>()V"/> + <method name="canMakeReadOnly()Z"/> + <method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/Ndef;"/> + <method name="getCachedNdefMessage()Landroid/nfc/NdefMessage;"/> + <method name="getMaxSize()I"/> + <method name="getNdefMessage()Landroid/nfc/NdefMessage;"/> + <method name="getType()Ljava/lang/String;"/> + <method name="isWritable()Z"/> + <method name="makeReadOnly()Z"/> + <method name="writeNdefMessage(Landroid/nfc/NdefMessage;)V"/> + <field name="MIFARE_CLASSIC"/> + <field name="NFC_FORUM_TYPE_1"/> + <field name="NFC_FORUM_TYPE_2"/> + <field name="NFC_FORUM_TYPE_3"/> + <field name="NFC_FORUM_TYPE_4"/> + </class> + <class name="android/nfc/tech/NdefFormatable" since="10"> + <extends name="android/nfc/tech/BasicTagTechnology"/> + <method name="<init>()V"/> + <method name="format(Landroid/nfc/NdefMessage;)V"/> + <method name="formatReadOnly(Landroid/nfc/NdefMessage;)V"/> + <method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/NdefFormatable;"/> + </class> + <class name="android/nfc/tech/NfcA" since="10"> + <extends name="android/nfc/tech/BasicTagTechnology"/> + <method name="<init>()V"/> + <method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/NfcA;"/> + <method name="getAtqa()[B"/> + <method name="getMaxTransceiveLength()I" since="14"/> + <method name="getSak()S"/> + <method name="getTimeout()I" since="14"/> + <method name="setTimeout(I)V" since="14"/> + <method name="transceive([B)[B"/> + </class> + <class name="android/nfc/tech/NfcB" since="10"> + <extends name="android/nfc/tech/BasicTagTechnology"/> + <method name="<init>()V"/> + <method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/NfcB;"/> + <method name="getApplicationData()[B"/> + <method name="getMaxTransceiveLength()I" since="14"/> + <method name="getProtocolInfo()[B"/> + <method name="transceive([B)[B"/> + </class> + <class name="android/nfc/tech/NfcBarcode" since="17"> + <extends name="android/nfc/tech/BasicTagTechnology"/> + <method name="<init>()V"/> + <method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/NfcBarcode;"/> + <method name="getBarcode()[B"/> + <method name="getType()I"/> + <field name="TYPE_KOVIO"/> + <field name="TYPE_UNKNOWN"/> + </class> + <class name="android/nfc/tech/NfcF" since="10"> + <extends name="android/nfc/tech/BasicTagTechnology"/> + <method name="<init>()V"/> + <method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/NfcF;"/> + <method name="getManufacturer()[B"/> + <method name="getMaxTransceiveLength()I" since="14"/> + <method name="getSystemCode()[B"/> + <method name="getTimeout()I" since="14"/> + <method name="setTimeout(I)V" since="14"/> + <method name="transceive([B)[B"/> + </class> + <class name="android/nfc/tech/NfcV" since="10"> + <extends name="android/nfc/tech/BasicTagTechnology"/> + <method name="<init>()V"/> + <method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/NfcV;"/> + <method name="getDsfId()B"/> + <method name="getMaxTransceiveLength()I" since="14"/> + <method name="getResponseFlags()B"/> + <method name="transceive([B)[B"/> + </class> + <class name="android/nfc/tech/TagTechnology" since="10"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable"/> + <method name="connect()V"/> + <method name="getTag()Landroid/nfc/Tag;"/> + <method name="isConnected()Z"/> + </class> + <class name="android/opengl/EGL14" since="17"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="eglBindAPI(I)Z"/> + <method name="eglBindTexImage(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;I)Z"/> + <method name="eglChooseConfig(Landroid/opengl/EGLDisplay;[II[Landroid/opengl/EGLConfig;II[II)Z"/> + <method name="eglCopyBuffers(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;I)Z"/> + <method name="eglCreateContext(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLConfig;Landroid/opengl/EGLContext;[II)Landroid/opengl/EGLContext;"/> + <method name="eglCreatePbufferFromClientBuffer(Landroid/opengl/EGLDisplay;IILandroid/opengl/EGLConfig;[II)Landroid/opengl/EGLSurface;"/> + <method name="eglCreatePbufferSurface(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLConfig;[II)Landroid/opengl/EGLSurface;"/> + <method name="eglCreatePixmapSurface(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLConfig;I[II)Landroid/opengl/EGLSurface;" deprecated="26"/> + <method name="eglCreateWindowSurface(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLConfig;Ljava/lang/Object;[II)Landroid/opengl/EGLSurface;"/> + <method name="eglDestroyContext(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLContext;)Z"/> + <method name="eglDestroySurface(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;)Z"/> + <method name="eglGetConfigAttrib(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLConfig;I[II)Z"/> + <method name="eglGetConfigs(Landroid/opengl/EGLDisplay;[Landroid/opengl/EGLConfig;II[II)Z"/> + <method name="eglGetCurrentContext()Landroid/opengl/EGLContext;"/> + <method name="eglGetCurrentDisplay()Landroid/opengl/EGLDisplay;"/> + <method name="eglGetCurrentSurface(I)Landroid/opengl/EGLSurface;"/> + <method name="eglGetDisplay(I)Landroid/opengl/EGLDisplay;"/> + <method name="eglGetError()I"/> + <method name="eglInitialize(Landroid/opengl/EGLDisplay;[II[II)Z"/> + <method name="eglMakeCurrent(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;Landroid/opengl/EGLSurface;Landroid/opengl/EGLContext;)Z"/> + <method name="eglQueryAPI()I"/> + <method name="eglQueryContext(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLContext;I[II)Z"/> + <method name="eglQueryString(Landroid/opengl/EGLDisplay;I)Ljava/lang/String;"/> + <method name="eglQuerySurface(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;I[II)Z"/> + <method name="eglReleaseTexImage(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;I)Z"/> + <method name="eglReleaseThread()Z"/> + <method name="eglSurfaceAttrib(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;II)Z"/> + <method name="eglSwapBuffers(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;)Z"/> + <method name="eglSwapInterval(Landroid/opengl/EGLDisplay;I)Z"/> + <method name="eglTerminate(Landroid/opengl/EGLDisplay;)Z"/> + <method name="eglWaitClient()Z"/> + <method name="eglWaitGL()Z"/> + <method name="eglWaitNative(I)Z"/> + <field name="EGL_ALPHA_MASK_SIZE"/> + <field name="EGL_ALPHA_SIZE"/> + <field name="EGL_BACK_BUFFER"/> + <field name="EGL_BAD_ACCESS"/> + <field name="EGL_BAD_ALLOC"/> + <field name="EGL_BAD_ATTRIBUTE"/> + <field name="EGL_BAD_CONFIG"/> + <field name="EGL_BAD_CONTEXT"/> + <field name="EGL_BAD_CURRENT_SURFACE"/> + <field name="EGL_BAD_DISPLAY"/> + <field name="EGL_BAD_MATCH"/> + <field name="EGL_BAD_NATIVE_PIXMAP"/> + <field name="EGL_BAD_NATIVE_WINDOW"/> + <field name="EGL_BAD_PARAMETER"/> + <field name="EGL_BAD_SURFACE"/> + <field name="EGL_BIND_TO_TEXTURE_RGB"/> + <field name="EGL_BIND_TO_TEXTURE_RGBA"/> + <field name="EGL_BLUE_SIZE"/> + <field name="EGL_BUFFER_DESTROYED"/> + <field name="EGL_BUFFER_PRESERVED"/> + <field name="EGL_BUFFER_SIZE"/> + <field name="EGL_CLIENT_APIS"/> + <field name="EGL_COLOR_BUFFER_TYPE"/> + <field name="EGL_CONFIG_CAVEAT"/> + <field name="EGL_CONFIG_ID"/> + <field name="EGL_CONFORMANT"/> + <field name="EGL_CONTEXT_CLIENT_TYPE"/> + <field name="EGL_CONTEXT_CLIENT_VERSION"/> + <field name="EGL_CONTEXT_LOST"/> + <field name="EGL_CORE_NATIVE_ENGINE"/> + <field name="EGL_DEFAULT_DISPLAY"/> + <field name="EGL_DEPTH_SIZE"/> + <field name="EGL_DISPLAY_SCALING"/> + <field name="EGL_DRAW"/> + <field name="EGL_EXTENSIONS"/> + <field name="EGL_FALSE"/> + <field name="EGL_GREEN_SIZE"/> + <field name="EGL_HEIGHT"/> + <field name="EGL_HORIZONTAL_RESOLUTION"/> + <field name="EGL_LARGEST_PBUFFER"/> + <field name="EGL_LEVEL"/> + <field name="EGL_LUMINANCE_BUFFER"/> + <field name="EGL_LUMINANCE_SIZE"/> + <field name="EGL_MATCH_NATIVE_PIXMAP"/> + <field name="EGL_MAX_PBUFFER_HEIGHT"/> + <field name="EGL_MAX_PBUFFER_PIXELS"/> + <field name="EGL_MAX_PBUFFER_WIDTH"/> + <field name="EGL_MAX_SWAP_INTERVAL"/> + <field name="EGL_MIN_SWAP_INTERVAL"/> + <field name="EGL_MIPMAP_LEVEL"/> + <field name="EGL_MIPMAP_TEXTURE"/> + <field name="EGL_MULTISAMPLE_RESOLVE"/> + <field name="EGL_MULTISAMPLE_RESOLVE_BOX"/> + <field name="EGL_MULTISAMPLE_RESOLVE_BOX_BIT"/> + <field name="EGL_MULTISAMPLE_RESOLVE_DEFAULT"/> + <field name="EGL_NATIVE_RENDERABLE"/> + <field name="EGL_NATIVE_VISUAL_ID"/> + <field name="EGL_NATIVE_VISUAL_TYPE"/> + <field name="EGL_NONE"/> + <field name="EGL_NON_CONFORMANT_CONFIG"/> + <field name="EGL_NOT_INITIALIZED"/> + <field name="EGL_NO_CONTEXT"/> + <field name="EGL_NO_DISPLAY"/> + <field name="EGL_NO_SURFACE"/> + <field name="EGL_NO_TEXTURE"/> + <field name="EGL_OPENGL_API"/> + <field name="EGL_OPENGL_BIT"/> + <field name="EGL_OPENGL_ES2_BIT"/> + <field name="EGL_OPENGL_ES_API"/> + <field name="EGL_OPENGL_ES_BIT"/> + <field name="EGL_OPENVG_API"/> + <field name="EGL_OPENVG_BIT"/> + <field name="EGL_OPENVG_IMAGE"/> + <field name="EGL_PBUFFER_BIT"/> + <field name="EGL_PIXEL_ASPECT_RATIO"/> + <field name="EGL_PIXMAP_BIT"/> + <field name="EGL_READ"/> + <field name="EGL_RED_SIZE"/> + <field name="EGL_RENDERABLE_TYPE"/> + <field name="EGL_RENDER_BUFFER"/> + <field name="EGL_RGB_BUFFER"/> + <field name="EGL_SAMPLES"/> + <field name="EGL_SAMPLE_BUFFERS"/> + <field name="EGL_SINGLE_BUFFER"/> + <field name="EGL_SLOW_CONFIG"/> + <field name="EGL_STENCIL_SIZE"/> + <field name="EGL_SUCCESS"/> + <field name="EGL_SURFACE_TYPE"/> + <field name="EGL_SWAP_BEHAVIOR"/> + <field name="EGL_SWAP_BEHAVIOR_PRESERVED_BIT"/> + <field name="EGL_TEXTURE_2D"/> + <field name="EGL_TEXTURE_FORMAT"/> + <field name="EGL_TEXTURE_RGB"/> + <field name="EGL_TEXTURE_RGBA"/> + <field name="EGL_TEXTURE_TARGET"/> + <field name="EGL_TRANSPARENT_BLUE_VALUE"/> + <field name="EGL_TRANSPARENT_GREEN_VALUE"/> + <field name="EGL_TRANSPARENT_RED_VALUE"/> + <field name="EGL_TRANSPARENT_RGB"/> + <field name="EGL_TRANSPARENT_TYPE"/> + <field name="EGL_TRUE"/> + <field name="EGL_VENDOR"/> + <field name="EGL_VERSION"/> + <field name="EGL_VERTICAL_RESOLUTION"/> + <field name="EGL_VG_ALPHA_FORMAT"/> + <field name="EGL_VG_ALPHA_FORMAT_NONPRE"/> + <field name="EGL_VG_ALPHA_FORMAT_PRE"/> + <field name="EGL_VG_ALPHA_FORMAT_PRE_BIT"/> + <field name="EGL_VG_COLORSPACE"/> + <field name="EGL_VG_COLORSPACE_LINEAR"/> + <field name="EGL_VG_COLORSPACE_LINEAR_BIT"/> + <field name="EGL_VG_COLORSPACE_sRGB"/> + <field name="EGL_WIDTH"/> + <field name="EGL_WINDOW_BIT"/> + </class> + <class name="android/opengl/EGLConfig" since="17"> + <extends name="android/opengl/EGLObjectHandle"/> + <method name="<init>()V"/> + </class> + <class name="android/opengl/EGLContext" since="17"> + <extends name="android/opengl/EGLObjectHandle"/> + <method name="<init>()V"/> + </class> + <class name="android/opengl/EGLDisplay" since="17"> + <extends name="android/opengl/EGLObjectHandle"/> + <method name="<init>()V"/> + </class> + <class name="android/opengl/EGLExt" since="18"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="eglPresentationTimeANDROID(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;J)Z"/> + <field name="EGL_CONTEXT_FLAGS_KHR"/> + <field name="EGL_CONTEXT_MAJOR_VERSION_KHR"/> + <field name="EGL_CONTEXT_MINOR_VERSION_KHR"/> + <field name="EGL_OPENGL_ES3_BIT_KHR"/> + <field name="EGL_RECORDABLE_ANDROID" since="26"/> + </class> + <class name="android/opengl/EGLObjectHandle" since="17"> + <extends name="java/lang/Object"/> + <method name="<init>(I)V" deprecated="21"/> + <method name="<init>(J)V" since="21"/> + <method name="getHandle()I" deprecated="21"/> + <method name="getNativeHandle()J" since="21"/> + </class> + <class name="android/opengl/EGLSurface" since="17"> + <extends name="android/opengl/EGLObjectHandle"/> + <method name="<init>()V"/> + </class> + <class name="android/opengl/ETC1" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="decodeBlock(Ljava/nio/Buffer;Ljava/nio/Buffer;)V"/> + <method name="decodeImage(Ljava/nio/Buffer;Ljava/nio/Buffer;IIII)V"/> + <method name="encodeBlock(Ljava/nio/Buffer;ILjava/nio/Buffer;)V"/> + <method name="encodeImage(Ljava/nio/Buffer;IIIILjava/nio/Buffer;)V"/> + <method name="formatHeader(Ljava/nio/Buffer;II)V"/> + <method name="getEncodedDataSize(II)I"/> + <method name="getHeight(Ljava/nio/Buffer;)I"/> + <method name="getWidth(Ljava/nio/Buffer;)I"/> + <method name="isValid(Ljava/nio/Buffer;)Z"/> + <field name="DECODED_BLOCK_SIZE"/> + <field name="ENCODED_BLOCK_SIZE"/> + <field name="ETC1_RGB8_OES"/> + <field name="ETC_PKM_HEADER_SIZE"/> + </class> + <class name="android/opengl/ETC1Util" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="compressTexture(Ljava/nio/Buffer;IIII)Landroid/opengl/ETC1Util$ETC1Texture;"/> + <method name="createTexture(Ljava/io/InputStream;)Landroid/opengl/ETC1Util$ETC1Texture;"/> + <method name="isETC1Supported()Z"/> + <method name="loadTexture(IIIIILandroid/opengl/ETC1Util$ETC1Texture;)V"/> + <method name="loadTexture(IIIIILjava/io/InputStream;)V"/> + <method name="writeTexture(Landroid/opengl/ETC1Util$ETC1Texture;Ljava/io/OutputStream;)V"/> + </class> + <class name="android/opengl/ETC1Util$ETC1Texture" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>(IILjava/nio/ByteBuffer;)V"/> + <method name="getData()Ljava/nio/ByteBuffer;"/> + <method name="getHeight()I"/> + <method name="getWidth()I"/> + </class> + <class name="android/opengl/GLDebugHelper" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="wrap(Ljavax/microedition/khronos/egl/EGL;ILjava/io/Writer;)Ljavax/microedition/khronos/egl/EGL;"/> + <method name="wrap(Ljavax/microedition/khronos/opengles/GL;ILjava/io/Writer;)Ljavax/microedition/khronos/opengles/GL;"/> + <field name="CONFIG_CHECK_GL_ERROR"/> + <field name="CONFIG_CHECK_THREAD"/> + <field name="CONFIG_LOG_ARGUMENT_NAMES"/> + <field name="ERROR_WRONG_THREAD"/> + </class> + <class name="android/opengl/GLES10" since="4"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="glActiveTexture(I)V"/> + <method name="glAlphaFunc(IF)V"/> + <method name="glAlphaFuncx(II)V"/> + <method name="glBindTexture(II)V"/> + <method name="glBlendFunc(II)V"/> + <method name="glClear(I)V"/> + <method name="glClearColor(FFFF)V"/> + <method name="glClearColorx(IIII)V"/> + <method name="glClearDepthf(F)V"/> + <method name="glClearDepthx(I)V"/> + <method name="glClearStencil(I)V"/> + <method name="glClientActiveTexture(I)V"/> + <method name="glColor4f(FFFF)V"/> + <method name="glColor4x(IIII)V"/> + <method name="glColorMask(ZZZZ)V"/> + <method name="glColorPointer(IIILjava/nio/Buffer;)V"/> + <method name="glCompressedTexImage2D(IIIIIIILjava/nio/Buffer;)V"/> + <method name="glCompressedTexSubImage2D(IIIIIIIILjava/nio/Buffer;)V"/> + <method name="glCopyTexImage2D(IIIIIIII)V"/> + <method name="glCopyTexSubImage2D(IIIIIIII)V"/> + <method name="glCullFace(I)V"/> + <method name="glDeleteTextures(ILjava/nio/IntBuffer;)V"/> + <method name="glDeleteTextures(I[II)V"/> + <method name="glDepthFunc(I)V"/> + <method name="glDepthMask(Z)V"/> + <method name="glDepthRangef(FF)V"/> + <method name="glDepthRangex(II)V"/> + <method name="glDisable(I)V"/> + <method name="glDisableClientState(I)V"/> + <method name="glDrawArrays(III)V"/> + <method name="glDrawElements(IIILjava/nio/Buffer;)V"/> + <method name="glEnable(I)V"/> + <method name="glEnableClientState(I)V"/> + <method name="glFinish()V"/> + <method name="glFlush()V"/> + <method name="glFogf(IF)V"/> + <method name="glFogfv(ILjava/nio/FloatBuffer;)V"/> + <method name="glFogfv(I[FI)V"/> + <method name="glFogx(II)V"/> + <method name="glFogxv(ILjava/nio/IntBuffer;)V"/> + <method name="glFogxv(I[II)V"/> + <method name="glFrontFace(I)V"/> + <method name="glFrustumf(FFFFFF)V"/> + <method name="glFrustumx(IIIIII)V"/> + <method name="glGenTextures(ILjava/nio/IntBuffer;)V"/> + <method name="glGenTextures(I[II)V"/> + <method name="glGetError()I"/> + <method name="glGetIntegerv(ILjava/nio/IntBuffer;)V"/> + <method name="glGetIntegerv(I[II)V"/> + <method name="glGetString(I)Ljava/lang/String;"/> + <method name="glHint(II)V"/> + <method name="glLightModelf(IF)V"/> + <method name="glLightModelfv(ILjava/nio/FloatBuffer;)V"/> + <method name="glLightModelfv(I[FI)V"/> + <method name="glLightModelx(II)V"/> + <method name="glLightModelxv(ILjava/nio/IntBuffer;)V"/> + <method name="glLightModelxv(I[II)V"/> + <method name="glLightf(IIF)V"/> + <method name="glLightfv(IILjava/nio/FloatBuffer;)V"/> + <method name="glLightfv(II[FI)V"/> + <method name="glLightx(III)V"/> + <method name="glLightxv(IILjava/nio/IntBuffer;)V"/> + <method name="glLightxv(II[II)V"/> + <method name="glLineWidth(F)V"/> + <method name="glLineWidthx(I)V"/> + <method name="glLoadIdentity()V"/> + <method name="glLoadMatrixf(Ljava/nio/FloatBuffer;)V"/> + <method name="glLoadMatrixf([FI)V"/> + <method name="glLoadMatrixx(Ljava/nio/IntBuffer;)V"/> + <method name="glLoadMatrixx([II)V"/> + <method name="glLogicOp(I)V"/> + <method name="glMaterialf(IIF)V"/> + <method name="glMaterialfv(IILjava/nio/FloatBuffer;)V"/> + <method name="glMaterialfv(II[FI)V"/> + <method name="glMaterialx(III)V"/> + <method name="glMaterialxv(IILjava/nio/IntBuffer;)V"/> + <method name="glMaterialxv(II[II)V"/> + <method name="glMatrixMode(I)V"/> + <method name="glMultMatrixf(Ljava/nio/FloatBuffer;)V"/> + <method name="glMultMatrixf([FI)V"/> + <method name="glMultMatrixx(Ljava/nio/IntBuffer;)V"/> + <method name="glMultMatrixx([II)V"/> + <method name="glMultiTexCoord4f(IFFFF)V"/> + <method name="glMultiTexCoord4x(IIIII)V"/> + <method name="glNormal3f(FFF)V"/> + <method name="glNormal3x(III)V"/> + <method name="glNormalPointer(IILjava/nio/Buffer;)V"/> + <method name="glOrthof(FFFFFF)V"/> + <method name="glOrthox(IIIIII)V"/> + <method name="glPixelStorei(II)V"/> + <method name="glPointSize(F)V"/> + <method name="glPointSizex(I)V"/> + <method name="glPolygonOffset(FF)V"/> + <method name="glPolygonOffsetx(II)V"/> + <method name="glPopMatrix()V"/> + <method name="glPushMatrix()V"/> + <method name="glReadPixels(IIIIIILjava/nio/Buffer;)V"/> + <method name="glRotatef(FFFF)V"/> + <method name="glRotatex(IIII)V"/> + <method name="glSampleCoverage(FZ)V"/> + <method name="glSampleCoveragex(IZ)V"/> + <method name="glScalef(FFF)V"/> + <method name="glScalex(III)V"/> + <method name="glScissor(IIII)V"/> + <method name="glShadeModel(I)V"/> + <method name="glStencilFunc(III)V"/> + <method name="glStencilMask(I)V"/> + <method name="glStencilOp(III)V"/> + <method name="glTexCoordPointer(IIILjava/nio/Buffer;)V"/> + <method name="glTexEnvf(IIF)V"/> + <method name="glTexEnvfv(IILjava/nio/FloatBuffer;)V"/> + <method name="glTexEnvfv(II[FI)V"/> + <method name="glTexEnvx(III)V"/> + <method name="glTexEnvxv(IILjava/nio/IntBuffer;)V"/> + <method name="glTexEnvxv(II[II)V"/> + <method name="glTexImage2D(IIIIIIIILjava/nio/Buffer;)V"/> + <method name="glTexParameterf(IIF)V"/> + <method name="glTexParameterx(III)V"/> + <method name="glTexSubImage2D(IIIIIIIILjava/nio/Buffer;)V"/> + <method name="glTranslatef(FFF)V"/> + <method name="glTranslatex(III)V"/> + <method name="glVertexPointer(IIILjava/nio/Buffer;)V"/> + <method name="glViewport(IIII)V"/> + <field name="GL_ADD"/> + <field name="GL_ALIASED_LINE_WIDTH_RANGE"/> + <field name="GL_ALIASED_POINT_SIZE_RANGE"/> + <field name="GL_ALPHA"/> + <field name="GL_ALPHA_BITS"/> + <field name="GL_ALPHA_TEST"/> + <field name="GL_ALWAYS"/> + <field name="GL_AMBIENT"/> + <field name="GL_AMBIENT_AND_DIFFUSE"/> + <field name="GL_AND"/> + <field name="GL_AND_INVERTED"/> + <field name="GL_AND_REVERSE"/> + <field name="GL_BACK"/> + <field name="GL_BLEND"/> + <field name="GL_BLUE_BITS"/> + <field name="GL_BYTE"/> + <field name="GL_CCW"/> + <field name="GL_CLAMP_TO_EDGE"/> + <field name="GL_CLEAR"/> + <field name="GL_COLOR_ARRAY"/> + <field name="GL_COLOR_BUFFER_BIT"/> + <field name="GL_COLOR_LOGIC_OP"/> + <field name="GL_COLOR_MATERIAL"/> + <field name="GL_COMPRESSED_TEXTURE_FORMATS"/> + <field name="GL_CONSTANT_ATTENUATION"/> + <field name="GL_COPY"/> + <field name="GL_COPY_INVERTED"/> + <field name="GL_CULL_FACE"/> + <field name="GL_CW"/> + <field name="GL_DECAL"/> + <field name="GL_DECR"/> + <field name="GL_DEPTH_BITS"/> + <field name="GL_DEPTH_BUFFER_BIT"/> + <field name="GL_DEPTH_TEST"/> + <field name="GL_DIFFUSE"/> + <field name="GL_DITHER"/> + <field name="GL_DONT_CARE"/> + <field name="GL_DST_ALPHA"/> + <field name="GL_DST_COLOR"/> + <field name="GL_EMISSION"/> + <field name="GL_EQUAL"/> + <field name="GL_EQUIV"/> + <field name="GL_EXP"/> + <field name="GL_EXP2"/> + <field name="GL_EXTENSIONS"/> + <field name="GL_FALSE"/> + <field name="GL_FASTEST"/> + <field name="GL_FIXED"/> + <field name="GL_FLAT"/> + <field name="GL_FLOAT"/> + <field name="GL_FOG"/> + <field name="GL_FOG_COLOR"/> + <field name="GL_FOG_DENSITY"/> + <field name="GL_FOG_END"/> + <field name="GL_FOG_HINT"/> + <field name="GL_FOG_MODE"/> + <field name="GL_FOG_START"/> + <field name="GL_FRONT"/> + <field name="GL_FRONT_AND_BACK"/> + <field name="GL_GEQUAL"/> + <field name="GL_GREATER"/> + <field name="GL_GREEN_BITS"/> + <field name="GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES"/> + <field name="GL_IMPLEMENTATION_COLOR_READ_TYPE_OES"/> + <field name="GL_INCR"/> + <field name="GL_INVALID_ENUM"/> + <field name="GL_INVALID_OPERATION"/> + <field name="GL_INVALID_VALUE"/> + <field name="GL_INVERT"/> + <field name="GL_KEEP"/> + <field name="GL_LEQUAL"/> + <field name="GL_LESS"/> + <field name="GL_LIGHT0"/> + <field name="GL_LIGHT1"/> + <field name="GL_LIGHT2"/> + <field name="GL_LIGHT3"/> + <field name="GL_LIGHT4"/> + <field name="GL_LIGHT5"/> + <field name="GL_LIGHT6"/> + <field name="GL_LIGHT7"/> + <field name="GL_LIGHTING"/> + <field name="GL_LIGHT_MODEL_AMBIENT"/> + <field name="GL_LIGHT_MODEL_TWO_SIDE"/> + <field name="GL_LINEAR"/> + <field name="GL_LINEAR_ATTENUATION"/> + <field name="GL_LINEAR_MIPMAP_LINEAR"/> + <field name="GL_LINEAR_MIPMAP_NEAREST"/> + <field name="GL_LINES"/> + <field name="GL_LINE_LOOP"/> + <field name="GL_LINE_SMOOTH"/> + <field name="GL_LINE_SMOOTH_HINT"/> + <field name="GL_LINE_STRIP"/> + <field name="GL_LUMINANCE"/> + <field name="GL_LUMINANCE_ALPHA"/> + <field name="GL_MAX_ELEMENTS_INDICES"/> + <field name="GL_MAX_ELEMENTS_VERTICES"/> + <field name="GL_MAX_LIGHTS"/> + <field name="GL_MAX_MODELVIEW_STACK_DEPTH"/> + <field name="GL_MAX_PROJECTION_STACK_DEPTH"/> + <field name="GL_MAX_TEXTURE_SIZE"/> + <field name="GL_MAX_TEXTURE_STACK_DEPTH"/> + <field name="GL_MAX_TEXTURE_UNITS"/> + <field name="GL_MAX_VIEWPORT_DIMS"/> + <field name="GL_MODELVIEW"/> + <field name="GL_MODULATE"/> + <field name="GL_MULTISAMPLE"/> + <field name="GL_NAND"/> + <field name="GL_NEAREST"/> + <field name="GL_NEAREST_MIPMAP_LINEAR"/> + <field name="GL_NEAREST_MIPMAP_NEAREST"/> + <field name="GL_NEVER"/> + <field name="GL_NICEST"/> + <field name="GL_NOOP"/> + <field name="GL_NOR"/> + <field name="GL_NORMALIZE"/> + <field name="GL_NORMAL_ARRAY"/> + <field name="GL_NOTEQUAL"/> + <field name="GL_NO_ERROR"/> + <field name="GL_NUM_COMPRESSED_TEXTURE_FORMATS"/> + <field name="GL_ONE"/> + <field name="GL_ONE_MINUS_DST_ALPHA"/> + <field name="GL_ONE_MINUS_DST_COLOR"/> + <field name="GL_ONE_MINUS_SRC_ALPHA"/> + <field name="GL_ONE_MINUS_SRC_COLOR"/> + <field name="GL_OR"/> + <field name="GL_OR_INVERTED"/> + <field name="GL_OR_REVERSE"/> + <field name="GL_OUT_OF_MEMORY"/> + <field name="GL_PACK_ALIGNMENT"/> + <field name="GL_PALETTE4_R5_G6_B5_OES"/> + <field name="GL_PALETTE4_RGB5_A1_OES"/> + <field name="GL_PALETTE4_RGB8_OES"/> + <field name="GL_PALETTE4_RGBA4_OES"/> + <field name="GL_PALETTE4_RGBA8_OES"/> + <field name="GL_PALETTE8_R5_G6_B5_OES"/> + <field name="GL_PALETTE8_RGB5_A1_OES"/> + <field name="GL_PALETTE8_RGB8_OES"/> + <field name="GL_PALETTE8_RGBA4_OES"/> + <field name="GL_PALETTE8_RGBA8_OES"/> + <field name="GL_PERSPECTIVE_CORRECTION_HINT"/> + <field name="GL_POINTS"/> + <field name="GL_POINT_FADE_THRESHOLD_SIZE"/> + <field name="GL_POINT_SIZE"/> + <field name="GL_POINT_SMOOTH"/> + <field name="GL_POINT_SMOOTH_HINT"/> + <field name="GL_POLYGON_OFFSET_FILL"/> + <field name="GL_POLYGON_SMOOTH_HINT"/> + <field name="GL_POSITION"/> + <field name="GL_PROJECTION"/> + <field name="GL_QUADRATIC_ATTENUATION"/> + <field name="GL_RED_BITS"/> + <field name="GL_RENDERER"/> + <field name="GL_REPEAT"/> + <field name="GL_REPLACE"/> + <field name="GL_RESCALE_NORMAL"/> + <field name="GL_RGB"/> + <field name="GL_RGBA"/> + <field name="GL_SAMPLE_ALPHA_TO_COVERAGE"/> + <field name="GL_SAMPLE_ALPHA_TO_ONE"/> + <field name="GL_SAMPLE_COVERAGE"/> + <field name="GL_SCISSOR_TEST"/> + <field name="GL_SET"/> + <field name="GL_SHININESS"/> + <field name="GL_SHORT"/> + <field name="GL_SMOOTH"/> + <field name="GL_SMOOTH_LINE_WIDTH_RANGE"/> + <field name="GL_SMOOTH_POINT_SIZE_RANGE"/> + <field name="GL_SPECULAR"/> + <field name="GL_SPOT_CUTOFF"/> + <field name="GL_SPOT_DIRECTION"/> + <field name="GL_SPOT_EXPONENT"/> + <field name="GL_SRC_ALPHA"/> + <field name="GL_SRC_ALPHA_SATURATE"/> + <field name="GL_SRC_COLOR"/> + <field name="GL_STACK_OVERFLOW"/> + <field name="GL_STACK_UNDERFLOW"/> + <field name="GL_STENCIL_BITS"/> + <field name="GL_STENCIL_BUFFER_BIT"/> + <field name="GL_STENCIL_TEST"/> + <field name="GL_SUBPIXEL_BITS"/> + <field name="GL_TEXTURE"/> + <field name="GL_TEXTURE0"/> + <field name="GL_TEXTURE1"/> + <field name="GL_TEXTURE10"/> + <field name="GL_TEXTURE11"/> + <field name="GL_TEXTURE12"/> + <field name="GL_TEXTURE13"/> + <field name="GL_TEXTURE14"/> + <field name="GL_TEXTURE15"/> + <field name="GL_TEXTURE16"/> + <field name="GL_TEXTURE17"/> + <field name="GL_TEXTURE18"/> + <field name="GL_TEXTURE19"/> + <field name="GL_TEXTURE2"/> + <field name="GL_TEXTURE20"/> + <field name="GL_TEXTURE21"/> + <field name="GL_TEXTURE22"/> + <field name="GL_TEXTURE23"/> + <field name="GL_TEXTURE24"/> + <field name="GL_TEXTURE25"/> + <field name="GL_TEXTURE26"/> + <field name="GL_TEXTURE27"/> + <field name="GL_TEXTURE28"/> + <field name="GL_TEXTURE29"/> + <field name="GL_TEXTURE3"/> + <field name="GL_TEXTURE30"/> + <field name="GL_TEXTURE31"/> + <field name="GL_TEXTURE4"/> + <field name="GL_TEXTURE5"/> + <field name="GL_TEXTURE6"/> + <field name="GL_TEXTURE7"/> + <field name="GL_TEXTURE8"/> + <field name="GL_TEXTURE9"/> + <field name="GL_TEXTURE_2D"/> + <field name="GL_TEXTURE_COORD_ARRAY"/> + <field name="GL_TEXTURE_ENV"/> + <field name="GL_TEXTURE_ENV_COLOR"/> + <field name="GL_TEXTURE_ENV_MODE"/> + <field name="GL_TEXTURE_MAG_FILTER"/> + <field name="GL_TEXTURE_MIN_FILTER"/> + <field name="GL_TEXTURE_WRAP_S"/> + <field name="GL_TEXTURE_WRAP_T"/> + <field name="GL_TRIANGLES"/> + <field name="GL_TRIANGLE_FAN"/> + <field name="GL_TRIANGLE_STRIP"/> + <field name="GL_TRUE"/> + <field name="GL_UNPACK_ALIGNMENT"/> + <field name="GL_UNSIGNED_BYTE"/> + <field name="GL_UNSIGNED_SHORT"/> + <field name="GL_UNSIGNED_SHORT_4_4_4_4"/> + <field name="GL_UNSIGNED_SHORT_5_5_5_1"/> + <field name="GL_UNSIGNED_SHORT_5_6_5"/> + <field name="GL_VENDOR"/> + <field name="GL_VERSION"/> + <field name="GL_VERTEX_ARRAY"/> + <field name="GL_XOR"/> + <field name="GL_ZERO"/> + </class> + <class name="android/opengl/GLES10Ext" since="4"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="glQueryMatrixxOES(Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;)I"/> + <method name="glQueryMatrixxOES([II[II)I"/> + </class> + <class name="android/opengl/GLES11" since="4"> + <extends name="android/opengl/GLES10"/> + <method name="<init>()V"/> + <method name="glBindBuffer(II)V"/> + <method name="glBufferData(IILjava/nio/Buffer;I)V"/> + <method name="glBufferSubData(IIILjava/nio/Buffer;)V"/> + <method name="glClipPlanef(ILjava/nio/FloatBuffer;)V"/> + <method name="glClipPlanef(I[FI)V"/> + <method name="glClipPlanex(ILjava/nio/IntBuffer;)V"/> + <method name="glClipPlanex(I[II)V"/> + <method name="glColor4ub(BBBB)V"/> + <method name="glColorPointer(IIII)V"/> + <method name="glDeleteBuffers(ILjava/nio/IntBuffer;)V"/> + <method name="glDeleteBuffers(I[II)V"/> + <method name="glDrawElements(IIII)V"/> + <method name="glGenBuffers(ILjava/nio/IntBuffer;)V"/> + <method name="glGenBuffers(I[II)V"/> + <method name="glGetBooleanv(ILjava/nio/IntBuffer;)V"/> + <method name="glGetBooleanv(I[ZI)V"/> + <method name="glGetBufferParameteriv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetBufferParameteriv(II[II)V"/> + <method name="glGetClipPlanef(ILjava/nio/FloatBuffer;)V"/> + <method name="glGetClipPlanef(I[FI)V"/> + <method name="glGetClipPlanex(ILjava/nio/IntBuffer;)V"/> + <method name="glGetClipPlanex(I[II)V"/> + <method name="glGetFixedv(ILjava/nio/IntBuffer;)V"/> + <method name="glGetFixedv(I[II)V"/> + <method name="glGetFloatv(ILjava/nio/FloatBuffer;)V"/> + <method name="glGetFloatv(I[FI)V"/> + <method name="glGetLightfv(IILjava/nio/FloatBuffer;)V"/> + <method name="glGetLightfv(II[FI)V"/> + <method name="glGetLightxv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetLightxv(II[II)V"/> + <method name="glGetMaterialfv(IILjava/nio/FloatBuffer;)V"/> + <method name="glGetMaterialfv(II[FI)V"/> + <method name="glGetMaterialxv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetMaterialxv(II[II)V"/> + <method name="glGetTexEnvfv(IILjava/nio/FloatBuffer;)V"/> + <method name="glGetTexEnvfv(II[FI)V"/> + <method name="glGetTexEnviv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetTexEnviv(II[II)V"/> + <method name="glGetTexEnvxv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetTexEnvxv(II[II)V"/> + <method name="glGetTexParameterfv(IILjava/nio/FloatBuffer;)V"/> + <method name="glGetTexParameterfv(II[FI)V"/> + <method name="glGetTexParameteriv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetTexParameteriv(II[II)V"/> + <method name="glGetTexParameterxv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetTexParameterxv(II[II)V"/> + <method name="glIsBuffer(I)Z"/> + <method name="glIsEnabled(I)Z"/> + <method name="glIsTexture(I)Z"/> + <method name="glNormalPointer(III)V"/> + <method name="glPointParameterf(IF)V"/> + <method name="glPointParameterfv(ILjava/nio/FloatBuffer;)V"/> + <method name="glPointParameterfv(I[FI)V"/> + <method name="glPointParameterx(II)V"/> + <method name="glPointParameterxv(ILjava/nio/IntBuffer;)V"/> + <method name="glPointParameterxv(I[II)V"/> + <method name="glPointSizePointerOES(IILjava/nio/Buffer;)V"/> + <method name="glTexCoordPointer(IIII)V"/> + <method name="glTexEnvi(III)V"/> + <method name="glTexEnviv(IILjava/nio/IntBuffer;)V"/> + <method name="glTexEnviv(II[II)V"/> + <method name="glTexParameterfv(IILjava/nio/FloatBuffer;)V"/> + <method name="glTexParameterfv(II[FI)V"/> + <method name="glTexParameteri(III)V"/> + <method name="glTexParameteriv(IILjava/nio/IntBuffer;)V"/> + <method name="glTexParameteriv(II[II)V"/> + <method name="glTexParameterxv(IILjava/nio/IntBuffer;)V"/> + <method name="glTexParameterxv(II[II)V"/> + <method name="glVertexPointer(IIII)V"/> + <field name="GL_ACTIVE_TEXTURE"/> + <field name="GL_ADD_SIGNED"/> + <field name="GL_ALPHA_SCALE"/> + <field name="GL_ALPHA_TEST_FUNC"/> + <field name="GL_ALPHA_TEST_REF"/> + <field name="GL_ARRAY_BUFFER"/> + <field name="GL_ARRAY_BUFFER_BINDING"/> + <field name="GL_BLEND_DST"/> + <field name="GL_BLEND_SRC"/> + <field name="GL_BUFFER_ACCESS"/> + <field name="GL_BUFFER_SIZE"/> + <field name="GL_BUFFER_USAGE"/> + <field name="GL_CLIENT_ACTIVE_TEXTURE"/> + <field name="GL_CLIP_PLANE0"/> + <field name="GL_CLIP_PLANE1"/> + <field name="GL_CLIP_PLANE2"/> + <field name="GL_CLIP_PLANE3"/> + <field name="GL_CLIP_PLANE4"/> + <field name="GL_CLIP_PLANE5"/> + <field name="GL_COLOR_ARRAY_BUFFER_BINDING"/> + <field name="GL_COLOR_ARRAY_POINTER"/> + <field name="GL_COLOR_ARRAY_SIZE"/> + <field name="GL_COLOR_ARRAY_STRIDE"/> + <field name="GL_COLOR_ARRAY_TYPE"/> + <field name="GL_COLOR_CLEAR_VALUE"/> + <field name="GL_COLOR_WRITEMASK"/> + <field name="GL_COMBINE"/> + <field name="GL_COMBINE_ALPHA"/> + <field name="GL_COMBINE_RGB"/> + <field name="GL_CONSTANT"/> + <field name="GL_COORD_REPLACE_OES"/> + <field name="GL_CULL_FACE_MODE"/> + <field name="GL_CURRENT_COLOR"/> + <field name="GL_CURRENT_NORMAL"/> + <field name="GL_CURRENT_TEXTURE_COORDS"/> + <field name="GL_DEPTH_CLEAR_VALUE"/> + <field name="GL_DEPTH_FUNC"/> + <field name="GL_DEPTH_RANGE"/> + <field name="GL_DEPTH_WRITEMASK"/> + <field name="GL_DOT3_RGB"/> + <field name="GL_DOT3_RGBA"/> + <field name="GL_DYNAMIC_DRAW"/> + <field name="GL_ELEMENT_ARRAY_BUFFER"/> + <field name="GL_ELEMENT_ARRAY_BUFFER_BINDING"/> + <field name="GL_FRONT_FACE"/> + <field name="GL_GENERATE_MIPMAP"/> + <field name="GL_GENERATE_MIPMAP_HINT"/> + <field name="GL_INTERPOLATE"/> + <field name="GL_LINE_WIDTH"/> + <field name="GL_LOGIC_OP_MODE"/> + <field name="GL_MATRIX_MODE"/> + <field name="GL_MAX_CLIP_PLANES"/> + <field name="GL_MODELVIEW_MATRIX"/> + <field name="GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES"/> + <field name="GL_MODELVIEW_STACK_DEPTH"/> + <field name="GL_NORMAL_ARRAY_BUFFER_BINDING"/> + <field name="GL_NORMAL_ARRAY_POINTER"/> + <field name="GL_NORMAL_ARRAY_STRIDE"/> + <field name="GL_NORMAL_ARRAY_TYPE"/> + <field name="GL_OPERAND0_ALPHA"/> + <field name="GL_OPERAND0_RGB"/> + <field name="GL_OPERAND1_ALPHA"/> + <field name="GL_OPERAND1_RGB"/> + <field name="GL_OPERAND2_ALPHA"/> + <field name="GL_OPERAND2_RGB"/> + <field name="GL_POINT_DISTANCE_ATTENUATION"/> + <field name="GL_POINT_FADE_THRESHOLD_SIZE"/> + <field name="GL_POINT_SIZE"/> + <field name="GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES"/> + <field name="GL_POINT_SIZE_ARRAY_OES"/> + <field name="GL_POINT_SIZE_ARRAY_POINTER_OES"/> + <field name="GL_POINT_SIZE_ARRAY_STRIDE_OES"/> + <field name="GL_POINT_SIZE_ARRAY_TYPE_OES"/> + <field name="GL_POINT_SIZE_MAX"/> + <field name="GL_POINT_SIZE_MIN"/> + <field name="GL_POINT_SPRITE_OES"/> + <field name="GL_POLYGON_OFFSET_FACTOR"/> + <field name="GL_POLYGON_OFFSET_UNITS"/> + <field name="GL_PREVIOUS"/> + <field name="GL_PRIMARY_COLOR"/> + <field name="GL_PROJECTION_MATRIX"/> + <field name="GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES"/> + <field name="GL_PROJECTION_STACK_DEPTH"/> + <field name="GL_RGB_SCALE"/> + <field name="GL_SAMPLES"/> + <field name="GL_SAMPLE_BUFFERS"/> + <field name="GL_SAMPLE_COVERAGE_INVERT"/> + <field name="GL_SAMPLE_COVERAGE_VALUE"/> + <field name="GL_SCISSOR_BOX"/> + <field name="GL_SHADE_MODEL"/> + <field name="GL_SRC0_ALPHA"/> + <field name="GL_SRC0_RGB"/> + <field name="GL_SRC1_ALPHA"/> + <field name="GL_SRC1_RGB"/> + <field name="GL_SRC2_ALPHA"/> + <field name="GL_SRC2_RGB"/> + <field name="GL_STATIC_DRAW"/> + <field name="GL_STENCIL_CLEAR_VALUE"/> + <field name="GL_STENCIL_FAIL"/> + <field name="GL_STENCIL_FUNC"/> + <field name="GL_STENCIL_PASS_DEPTH_FAIL"/> + <field name="GL_STENCIL_PASS_DEPTH_PASS"/> + <field name="GL_STENCIL_REF"/> + <field name="GL_STENCIL_VALUE_MASK"/> + <field name="GL_STENCIL_WRITEMASK"/> + <field name="GL_SUBTRACT"/> + <field name="GL_TEXTURE_BINDING_2D"/> + <field name="GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING"/> + <field name="GL_TEXTURE_COORD_ARRAY_POINTER"/> + <field name="GL_TEXTURE_COORD_ARRAY_SIZE"/> + <field name="GL_TEXTURE_COORD_ARRAY_STRIDE"/> + <field name="GL_TEXTURE_COORD_ARRAY_TYPE"/> + <field name="GL_TEXTURE_MATRIX"/> + <field name="GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES"/> + <field name="GL_TEXTURE_STACK_DEPTH"/> + <field name="GL_VERTEX_ARRAY_BUFFER_BINDING"/> + <field name="GL_VERTEX_ARRAY_POINTER"/> + <field name="GL_VERTEX_ARRAY_SIZE"/> + <field name="GL_VERTEX_ARRAY_STRIDE"/> + <field name="GL_VERTEX_ARRAY_TYPE"/> + <field name="GL_VIEWPORT"/> + <field name="GL_WRITE_ONLY"/> + </class> + <class name="android/opengl/GLES11Ext" since="4"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="glAlphaFuncxOES(II)V"/> + <method name="glBindFramebufferOES(II)V"/> + <method name="glBindRenderbufferOES(II)V"/> + <method name="glBlendEquationOES(I)V"/> + <method name="glBlendEquationSeparateOES(II)V"/> + <method name="glBlendFuncSeparateOES(IIII)V"/> + <method name="glCheckFramebufferStatusOES(I)I"/> + <method name="glClearColorxOES(IIII)V"/> + <method name="glClearDepthfOES(F)V"/> + <method name="glClearDepthxOES(I)V"/> + <method name="glClipPlanefOES(ILjava/nio/FloatBuffer;)V"/> + <method name="glClipPlanefOES(I[FI)V"/> + <method name="glClipPlanexOES(ILjava/nio/IntBuffer;)V"/> + <method name="glClipPlanexOES(I[II)V"/> + <method name="glColor4xOES(IIII)V"/> + <method name="glCurrentPaletteMatrixOES(I)V"/> + <method name="glDeleteFramebuffersOES(ILjava/nio/IntBuffer;)V"/> + <method name="glDeleteFramebuffersOES(I[II)V"/> + <method name="glDeleteRenderbuffersOES(ILjava/nio/IntBuffer;)V"/> + <method name="glDeleteRenderbuffersOES(I[II)V"/> + <method name="glDepthRangefOES(FF)V"/> + <method name="glDepthRangexOES(II)V"/> + <method name="glDrawTexfOES(FFFFF)V"/> + <method name="glDrawTexfvOES(Ljava/nio/FloatBuffer;)V"/> + <method name="glDrawTexfvOES([FI)V"/> + <method name="glDrawTexiOES(IIIII)V"/> + <method name="glDrawTexivOES(Ljava/nio/IntBuffer;)V"/> + <method name="glDrawTexivOES([II)V"/> + <method name="glDrawTexsOES(SSSSS)V"/> + <method name="glDrawTexsvOES(Ljava/nio/ShortBuffer;)V"/> + <method name="glDrawTexsvOES([SI)V"/> + <method name="glDrawTexxOES(IIIII)V"/> + <method name="glDrawTexxvOES(Ljava/nio/IntBuffer;)V"/> + <method name="glDrawTexxvOES([II)V"/> + <method name="glEGLImageTargetRenderbufferStorageOES(ILjava/nio/Buffer;)V"/> + <method name="glEGLImageTargetTexture2DOES(ILjava/nio/Buffer;)V"/> + <method name="glFogxOES(II)V"/> + <method name="glFogxvOES(ILjava/nio/IntBuffer;)V"/> + <method name="glFogxvOES(I[II)V"/> + <method name="glFramebufferRenderbufferOES(IIII)V"/> + <method name="glFramebufferTexture2DOES(IIIII)V"/> + <method name="glFrustumfOES(FFFFFF)V"/> + <method name="glFrustumxOES(IIIIII)V"/> + <method name="glGenFramebuffersOES(ILjava/nio/IntBuffer;)V"/> + <method name="glGenFramebuffersOES(I[II)V"/> + <method name="glGenRenderbuffersOES(ILjava/nio/IntBuffer;)V"/> + <method name="glGenRenderbuffersOES(I[II)V"/> + <method name="glGenerateMipmapOES(I)V"/> + <method name="glGetClipPlanefOES(ILjava/nio/FloatBuffer;)V"/> + <method name="glGetClipPlanefOES(I[FI)V"/> + <method name="glGetClipPlanexOES(ILjava/nio/IntBuffer;)V"/> + <method name="glGetClipPlanexOES(I[II)V"/> + <method name="glGetFixedvOES(ILjava/nio/IntBuffer;)V"/> + <method name="glGetFixedvOES(I[II)V"/> + <method name="glGetFramebufferAttachmentParameterivOES(IIILjava/nio/IntBuffer;)V"/> + <method name="glGetFramebufferAttachmentParameterivOES(III[II)V"/> + <method name="glGetLightxvOES(IILjava/nio/IntBuffer;)V"/> + <method name="glGetLightxvOES(II[II)V"/> + <method name="glGetMaterialxvOES(IILjava/nio/IntBuffer;)V"/> + <method name="glGetMaterialxvOES(II[II)V"/> + <method name="glGetRenderbufferParameterivOES(IILjava/nio/IntBuffer;)V"/> + <method name="glGetRenderbufferParameterivOES(II[II)V"/> + <method name="glGetTexEnvxvOES(IILjava/nio/IntBuffer;)V"/> + <method name="glGetTexEnvxvOES(II[II)V"/> + <method name="glGetTexGenfvOES(IILjava/nio/FloatBuffer;)V"/> + <method name="glGetTexGenfvOES(II[FI)V"/> + <method name="glGetTexGenivOES(IILjava/nio/IntBuffer;)V"/> + <method name="glGetTexGenivOES(II[II)V"/> + <method name="glGetTexGenxvOES(IILjava/nio/IntBuffer;)V"/> + <method name="glGetTexGenxvOES(II[II)V"/> + <method name="glGetTexParameterxvOES(IILjava/nio/IntBuffer;)V"/> + <method name="glGetTexParameterxvOES(II[II)V"/> + <method name="glIsFramebufferOES(I)Z"/> + <method name="glIsRenderbufferOES(I)Z"/> + <method name="glLightModelxOES(II)V"/> + <method name="glLightModelxvOES(ILjava/nio/IntBuffer;)V"/> + <method name="glLightModelxvOES(I[II)V"/> + <method name="glLightxOES(III)V"/> + <method name="glLightxvOES(IILjava/nio/IntBuffer;)V"/> + <method name="glLightxvOES(II[II)V"/> + <method name="glLineWidthxOES(I)V"/> + <method name="glLoadMatrixxOES(Ljava/nio/IntBuffer;)V"/> + <method name="glLoadMatrixxOES([II)V"/> + <method name="glLoadPaletteFromModelViewMatrixOES()V"/> + <method name="glMaterialxOES(III)V"/> + <method name="glMaterialxvOES(IILjava/nio/IntBuffer;)V"/> + <method name="glMaterialxvOES(II[II)V"/> + <method name="glMatrixIndexPointerOES(IIILjava/nio/Buffer;)V"/> + <method name="glMultMatrixxOES(Ljava/nio/IntBuffer;)V"/> + <method name="glMultMatrixxOES([II)V"/> + <method name="glMultiTexCoord4xOES(IIIII)V"/> + <method name="glNormal3xOES(III)V"/> + <method name="glOrthofOES(FFFFFF)V"/> + <method name="glOrthoxOES(IIIIII)V"/> + <method name="glPointParameterxOES(II)V"/> + <method name="glPointParameterxvOES(ILjava/nio/IntBuffer;)V"/> + <method name="glPointParameterxvOES(I[II)V"/> + <method name="glPointSizexOES(I)V"/> + <method name="glPolygonOffsetxOES(II)V"/> + <method name="glRenderbufferStorageOES(IIII)V"/> + <method name="glRotatexOES(IIII)V"/> + <method name="glSampleCoveragexOES(IZ)V"/> + <method name="glScalexOES(III)V"/> + <method name="glTexEnvxOES(III)V"/> + <method name="glTexEnvxvOES(IILjava/nio/IntBuffer;)V"/> + <method name="glTexEnvxvOES(II[II)V"/> + <method name="glTexGenfOES(IIF)V"/> + <method name="glTexGenfvOES(IILjava/nio/FloatBuffer;)V"/> + <method name="glTexGenfvOES(II[FI)V"/> + <method name="glTexGeniOES(III)V"/> + <method name="glTexGenivOES(IILjava/nio/IntBuffer;)V"/> + <method name="glTexGenivOES(II[II)V"/> + <method name="glTexGenxOES(III)V"/> + <method name="glTexGenxvOES(IILjava/nio/IntBuffer;)V"/> + <method name="glTexGenxvOES(II[II)V"/> + <method name="glTexParameterxOES(III)V"/> + <method name="glTexParameterxvOES(IILjava/nio/IntBuffer;)V"/> + <method name="glTexParameterxvOES(II[II)V"/> + <method name="glTranslatexOES(III)V"/> + <method name="glWeightPointerOES(IIILjava/nio/Buffer;)V"/> + <field name="GL_3DC_XY_AMD"/> + <field name="GL_3DC_X_AMD"/> + <field name="GL_ATC_RGBA_EXPLICIT_ALPHA_AMD"/> + <field name="GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD"/> + <field name="GL_ATC_RGB_AMD"/> + <field name="GL_BGRA"/> + <field name="GL_BLEND_DST_ALPHA_OES"/> + <field name="GL_BLEND_DST_RGB_OES"/> + <field name="GL_BLEND_EQUATION_ALPHA_OES"/> + <field name="GL_BLEND_EQUATION_OES"/> + <field name="GL_BLEND_EQUATION_RGB_OES"/> + <field name="GL_BLEND_SRC_ALPHA_OES"/> + <field name="GL_BLEND_SRC_RGB_OES"/> + <field name="GL_BUFFER_ACCESS_OES"/> + <field name="GL_BUFFER_MAPPED_OES"/> + <field name="GL_BUFFER_MAP_POINTER_OES"/> + <field name="GL_COLOR_ATTACHMENT0_OES"/> + <field name="GL_CURRENT_PALETTE_MATRIX_OES"/> + <field name="GL_DECR_WRAP_OES"/> + <field name="GL_DEPTH24_STENCIL8_OES"/> + <field name="GL_DEPTH_ATTACHMENT_OES"/> + <field name="GL_DEPTH_COMPONENT16_OES"/> + <field name="GL_DEPTH_COMPONENT24_OES"/> + <field name="GL_DEPTH_COMPONENT32_OES"/> + <field name="GL_DEPTH_STENCIL_OES"/> + <field name="GL_ETC1_RGB8_OES"/> + <field name="GL_FIXED_OES"/> + <field name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES"/> + <field name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES"/> + <field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES"/> + <field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES"/> + <field name="GL_FRAMEBUFFER_BINDING_OES"/> + <field name="GL_FRAMEBUFFER_COMPLETE_OES"/> + <field name="GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES"/> + <field name="GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES"/> + <field name="GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES"/> + <field name="GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES"/> + <field name="GL_FRAMEBUFFER_OES"/> + <field name="GL_FRAMEBUFFER_UNSUPPORTED_OES"/> + <field name="GL_FUNC_ADD_OES"/> + <field name="GL_FUNC_REVERSE_SUBTRACT_OES"/> + <field name="GL_FUNC_SUBTRACT_OES"/> + <field name="GL_INCR_WRAP_OES"/> + <field name="GL_INVALID_FRAMEBUFFER_OPERATION_OES"/> + <field name="GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES"/> + <field name="GL_MATRIX_INDEX_ARRAY_OES"/> + <field name="GL_MATRIX_INDEX_ARRAY_POINTER_OES"/> + <field name="GL_MATRIX_INDEX_ARRAY_SIZE_OES"/> + <field name="GL_MATRIX_INDEX_ARRAY_STRIDE_OES"/> + <field name="GL_MATRIX_INDEX_ARRAY_TYPE_OES"/> + <field name="GL_MATRIX_PALETTE_OES"/> + <field name="GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES"/> + <field name="GL_MAX_PALETTE_MATRICES_OES"/> + <field name="GL_MAX_RENDERBUFFER_SIZE_OES"/> + <field name="GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT"/> + <field name="GL_MAX_VERTEX_UNITS_OES"/> + <field name="GL_MIRRORED_REPEAT_OES"/> + <field name="GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES"/> + <field name="GL_NONE_OES"/> + <field name="GL_NORMAL_MAP_OES"/> + <field name="GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES"/> + <field name="GL_REFLECTION_MAP_OES"/> + <field name="GL_RENDERBUFFER_ALPHA_SIZE_OES"/> + <field name="GL_RENDERBUFFER_BINDING_OES"/> + <field name="GL_RENDERBUFFER_BLUE_SIZE_OES"/> + <field name="GL_RENDERBUFFER_DEPTH_SIZE_OES"/> + <field name="GL_RENDERBUFFER_GREEN_SIZE_OES"/> + <field name="GL_RENDERBUFFER_HEIGHT_OES"/> + <field name="GL_RENDERBUFFER_INTERNAL_FORMAT_OES"/> + <field name="GL_RENDERBUFFER_OES"/> + <field name="GL_RENDERBUFFER_RED_SIZE_OES"/> + <field name="GL_RENDERBUFFER_STENCIL_SIZE_OES"/> + <field name="GL_RENDERBUFFER_WIDTH_OES"/> + <field name="GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES" since="15"/> + <field name="GL_RGB565_OES"/> + <field name="GL_RGB5_A1_OES"/> + <field name="GL_RGB8_OES"/> + <field name="GL_RGBA4_OES"/> + <field name="GL_RGBA8_OES"/> + <field name="GL_SAMPLER_EXTERNAL_OES" since="15"/> + <field name="GL_STENCIL_ATTACHMENT_OES"/> + <field name="GL_STENCIL_INDEX1_OES"/> + <field name="GL_STENCIL_INDEX4_OES"/> + <field name="GL_STENCIL_INDEX8_OES"/> + <field name="GL_TEXTURE_BINDING_CUBE_MAP_OES"/> + <field name="GL_TEXTURE_BINDING_EXTERNAL_OES" since="15"/> + <field name="GL_TEXTURE_CROP_RECT_OES"/> + <field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES"/> + <field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES"/> + <field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES"/> + <field name="GL_TEXTURE_CUBE_MAP_OES"/> + <field name="GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES"/> + <field name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES"/> + <field name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES"/> + <field name="GL_TEXTURE_EXTERNAL_OES" since="15"/> + <field name="GL_TEXTURE_GEN_MODE_OES"/> + <field name="GL_TEXTURE_GEN_STR_OES"/> + <field name="GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES"/> + <field name="GL_TEXTURE_MAX_ANISOTROPY_EXT"/> + <field name="GL_UNSIGNED_INT_24_8_OES"/> + <field name="GL_WEIGHT_ARRAY_BUFFER_BINDING_OES"/> + <field name="GL_WEIGHT_ARRAY_OES"/> + <field name="GL_WEIGHT_ARRAY_POINTER_OES"/> + <field name="GL_WEIGHT_ARRAY_SIZE_OES"/> + <field name="GL_WEIGHT_ARRAY_STRIDE_OES"/> + <field name="GL_WEIGHT_ARRAY_TYPE_OES"/> + <field name="GL_WRITE_ONLY_OES"/> + </class> + <class name="android/opengl/GLES20" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="glActiveTexture(I)V"/> + <method name="glAttachShader(II)V"/> + <method name="glBindAttribLocation(IILjava/lang/String;)V"/> + <method name="glBindBuffer(II)V"/> + <method name="glBindFramebuffer(II)V"/> + <method name="glBindRenderbuffer(II)V"/> + <method name="glBindTexture(II)V"/> + <method name="glBlendColor(FFFF)V"/> + <method name="glBlendEquation(I)V"/> + <method name="glBlendEquationSeparate(II)V"/> + <method name="glBlendFunc(II)V"/> + <method name="glBlendFuncSeparate(IIII)V"/> + <method name="glBufferData(IILjava/nio/Buffer;I)V"/> + <method name="glBufferSubData(IIILjava/nio/Buffer;)V"/> + <method name="glCheckFramebufferStatus(I)I"/> + <method name="glClear(I)V"/> + <method name="glClearColor(FFFF)V"/> + <method name="glClearDepthf(F)V"/> + <method name="glClearStencil(I)V"/> + <method name="glColorMask(ZZZZ)V"/> + <method name="glCompileShader(I)V"/> + <method name="glCompressedTexImage2D(IIIIIIILjava/nio/Buffer;)V"/> + <method name="glCompressedTexSubImage2D(IIIIIIIILjava/nio/Buffer;)V"/> + <method name="glCopyTexImage2D(IIIIIIII)V"/> + <method name="glCopyTexSubImage2D(IIIIIIII)V"/> + <method name="glCreateProgram()I"/> + <method name="glCreateShader(I)I"/> + <method name="glCullFace(I)V"/> + <method name="glDeleteBuffers(ILjava/nio/IntBuffer;)V"/> + <method name="glDeleteBuffers(I[II)V"/> + <method name="glDeleteFramebuffers(ILjava/nio/IntBuffer;)V"/> + <method name="glDeleteFramebuffers(I[II)V"/> + <method name="glDeleteProgram(I)V"/> + <method name="glDeleteRenderbuffers(ILjava/nio/IntBuffer;)V"/> + <method name="glDeleteRenderbuffers(I[II)V"/> + <method name="glDeleteShader(I)V"/> + <method name="glDeleteTextures(ILjava/nio/IntBuffer;)V"/> + <method name="glDeleteTextures(I[II)V"/> + <method name="glDepthFunc(I)V"/> + <method name="glDepthMask(Z)V"/> + <method name="glDepthRangef(FF)V"/> + <method name="glDetachShader(II)V"/> + <method name="glDisable(I)V"/> + <method name="glDisableVertexAttribArray(I)V"/> + <method name="glDrawArrays(III)V"/> + <method name="glDrawElements(IIII)V" since="9"/> + <method name="glDrawElements(IIILjava/nio/Buffer;)V"/> + <method name="glEnable(I)V"/> + <method name="glEnableVertexAttribArray(I)V"/> + <method name="glFinish()V"/> + <method name="glFlush()V"/> + <method name="glFramebufferRenderbuffer(IIII)V"/> + <method name="glFramebufferTexture2D(IIIII)V"/> + <method name="glFrontFace(I)V"/> + <method name="glGenBuffers(ILjava/nio/IntBuffer;)V"/> + <method name="glGenBuffers(I[II)V"/> + <method name="glGenFramebuffers(ILjava/nio/IntBuffer;)V"/> + <method name="glGenFramebuffers(I[II)V"/> + <method name="glGenRenderbuffers(ILjava/nio/IntBuffer;)V"/> + <method name="glGenRenderbuffers(I[II)V"/> + <method name="glGenTextures(ILjava/nio/IntBuffer;)V"/> + <method name="glGenTextures(I[II)V"/> + <method name="glGenerateMipmap(I)V"/> + <method name="glGetActiveAttrib(IIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;B)V" removed="21"/> + <method name="glGetActiveAttrib(III[II[II[II[BI)V"/> + <method name="glGetActiveAttrib(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)Ljava/lang/String;" since="17"/> + <method name="glGetActiveAttrib(II[II[II)Ljava/lang/String;" since="17"/> + <method name="glGetActiveUniform(IIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;B)V" removed="21"/> + <method name="glGetActiveUniform(III[II[II[II[BI)V"/> + <method name="glGetActiveUniform(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)Ljava/lang/String;" since="17"/> + <method name="glGetActiveUniform(II[II[II)Ljava/lang/String;" since="17"/> + <method name="glGetAttachedShaders(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V"/> + <method name="glGetAttachedShaders(II[II[II)V"/> + <method name="glGetAttribLocation(ILjava/lang/String;)I"/> + <method name="glGetBooleanv(ILjava/nio/IntBuffer;)V"/> + <method name="glGetBooleanv(I[ZI)V"/> + <method name="glGetBufferParameteriv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetBufferParameteriv(II[II)V"/> + <method name="glGetError()I"/> + <method name="glGetFloatv(ILjava/nio/FloatBuffer;)V"/> + <method name="glGetFloatv(I[FI)V"/> + <method name="glGetFramebufferAttachmentParameteriv(IIILjava/nio/IntBuffer;)V"/> + <method name="glGetFramebufferAttachmentParameteriv(III[II)V"/> + <method name="glGetIntegerv(ILjava/nio/IntBuffer;)V"/> + <method name="glGetIntegerv(I[II)V"/> + <method name="glGetProgramInfoLog(I)Ljava/lang/String;"/> + <method name="glGetProgramiv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetProgramiv(II[II)V"/> + <method name="glGetRenderbufferParameteriv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetRenderbufferParameteriv(II[II)V"/> + <method name="glGetShaderInfoLog(I)Ljava/lang/String;"/> + <method name="glGetShaderPrecisionFormat(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V"/> + <method name="glGetShaderPrecisionFormat(II[II[II)V"/> + <method name="glGetShaderSource(I)Ljava/lang/String;" since="17"/> + <method name="glGetShaderSource(IILjava/nio/IntBuffer;B)V" removed="21"/> + <method name="glGetShaderSource(II[II[BI)V"/> + <method name="glGetShaderiv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetShaderiv(II[II)V"/> + <method name="glGetString(I)Ljava/lang/String;"/> + <method name="glGetTexParameterfv(IILjava/nio/FloatBuffer;)V"/> + <method name="glGetTexParameterfv(II[FI)V"/> + <method name="glGetTexParameteriv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetTexParameteriv(II[II)V"/> + <method name="glGetUniformLocation(ILjava/lang/String;)I"/> + <method name="glGetUniformfv(IILjava/nio/FloatBuffer;)V"/> + <method name="glGetUniformfv(II[FI)V"/> + <method name="glGetUniformiv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetUniformiv(II[II)V"/> + <method name="glGetVertexAttribfv(IILjava/nio/FloatBuffer;)V"/> + <method name="glGetVertexAttribfv(II[FI)V"/> + <method name="glGetVertexAttribiv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetVertexAttribiv(II[II)V"/> + <method name="glHint(II)V"/> + <method name="glIsBuffer(I)Z"/> + <method name="glIsEnabled(I)Z"/> + <method name="glIsFramebuffer(I)Z"/> + <method name="glIsProgram(I)Z"/> + <method name="glIsRenderbuffer(I)Z"/> + <method name="glIsShader(I)Z"/> + <method name="glIsTexture(I)Z"/> + <method name="glLineWidth(F)V"/> + <method name="glLinkProgram(I)V"/> + <method name="glPixelStorei(II)V"/> + <method name="glPolygonOffset(FF)V"/> + <method name="glReadPixels(IIIIIILjava/nio/Buffer;)V"/> + <method name="glReleaseShaderCompiler()V"/> + <method name="glRenderbufferStorage(IIII)V"/> + <method name="glSampleCoverage(FZ)V"/> + <method name="glScissor(IIII)V"/> + <method name="glShaderBinary(ILjava/nio/IntBuffer;ILjava/nio/Buffer;I)V"/> + <method name="glShaderBinary(I[IIILjava/nio/Buffer;I)V"/> + <method name="glShaderSource(ILjava/lang/String;)V"/> + <method name="glStencilFunc(III)V"/> + <method name="glStencilFuncSeparate(IIII)V"/> + <method name="glStencilMask(I)V"/> + <method name="glStencilMaskSeparate(II)V"/> + <method name="glStencilOp(III)V"/> + <method name="glStencilOpSeparate(IIII)V"/> + <method name="glTexImage2D(IIIIIIIILjava/nio/Buffer;)V"/> + <method name="glTexParameterf(IIF)V"/> + <method name="glTexParameterfv(IILjava/nio/FloatBuffer;)V"/> + <method name="glTexParameterfv(II[FI)V"/> + <method name="glTexParameteri(III)V"/> + <method name="glTexParameteriv(IILjava/nio/IntBuffer;)V"/> + <method name="glTexParameteriv(II[II)V"/> + <method name="glTexSubImage2D(IIIIIIIILjava/nio/Buffer;)V"/> + <method name="glUniform1f(IF)V"/> + <method name="glUniform1fv(IILjava/nio/FloatBuffer;)V"/> + <method name="glUniform1fv(II[FI)V"/> + <method name="glUniform1i(II)V"/> + <method name="glUniform1iv(IILjava/nio/IntBuffer;)V"/> + <method name="glUniform1iv(II[II)V"/> + <method name="glUniform2f(IFF)V"/> + <method name="glUniform2fv(IILjava/nio/FloatBuffer;)V"/> + <method name="glUniform2fv(II[FI)V"/> + <method name="glUniform2i(III)V"/> + <method name="glUniform2iv(IILjava/nio/IntBuffer;)V"/> + <method name="glUniform2iv(II[II)V"/> + <method name="glUniform3f(IFFF)V"/> + <method name="glUniform3fv(IILjava/nio/FloatBuffer;)V"/> + <method name="glUniform3fv(II[FI)V"/> + <method name="glUniform3i(IIII)V"/> + <method name="glUniform3iv(IILjava/nio/IntBuffer;)V"/> + <method name="glUniform3iv(II[II)V"/> + <method name="glUniform4f(IFFFF)V"/> + <method name="glUniform4fv(IILjava/nio/FloatBuffer;)V"/> + <method name="glUniform4fv(II[FI)V"/> + <method name="glUniform4i(IIIII)V"/> + <method name="glUniform4iv(IILjava/nio/IntBuffer;)V"/> + <method name="glUniform4iv(II[II)V"/> + <method name="glUniformMatrix2fv(IIZLjava/nio/FloatBuffer;)V"/> + <method name="glUniformMatrix2fv(IIZ[FI)V"/> + <method name="glUniformMatrix3fv(IIZLjava/nio/FloatBuffer;)V"/> + <method name="glUniformMatrix3fv(IIZ[FI)V"/> + <method name="glUniformMatrix4fv(IIZLjava/nio/FloatBuffer;)V"/> + <method name="glUniformMatrix4fv(IIZ[FI)V"/> + <method name="glUseProgram(I)V"/> + <method name="glValidateProgram(I)V"/> + <method name="glVertexAttrib1f(IF)V"/> + <method name="glVertexAttrib1fv(ILjava/nio/FloatBuffer;)V"/> + <method name="glVertexAttrib1fv(I[FI)V"/> + <method name="glVertexAttrib2f(IFF)V"/> + <method name="glVertexAttrib2fv(ILjava/nio/FloatBuffer;)V"/> + <method name="glVertexAttrib2fv(I[FI)V"/> + <method name="glVertexAttrib3f(IFFF)V"/> + <method name="glVertexAttrib3fv(ILjava/nio/FloatBuffer;)V"/> + <method name="glVertexAttrib3fv(I[FI)V"/> + <method name="glVertexAttrib4f(IFFFF)V"/> + <method name="glVertexAttrib4fv(ILjava/nio/FloatBuffer;)V"/> + <method name="glVertexAttrib4fv(I[FI)V"/> + <method name="glVertexAttribPointer(IIIZII)V" since="9"/> + <method name="glVertexAttribPointer(IIIZILjava/nio/Buffer;)V"/> + <method name="glViewport(IIII)V"/> + <field name="GL_ACTIVE_ATTRIBUTES"/> + <field name="GL_ACTIVE_ATTRIBUTE_MAX_LENGTH"/> + <field name="GL_ACTIVE_TEXTURE"/> + <field name="GL_ACTIVE_UNIFORMS"/> + <field name="GL_ACTIVE_UNIFORM_MAX_LENGTH"/> + <field name="GL_ALIASED_LINE_WIDTH_RANGE"/> + <field name="GL_ALIASED_POINT_SIZE_RANGE"/> + <field name="GL_ALPHA"/> + <field name="GL_ALPHA_BITS"/> + <field name="GL_ALWAYS"/> + <field name="GL_ARRAY_BUFFER"/> + <field name="GL_ARRAY_BUFFER_BINDING"/> + <field name="GL_ATTACHED_SHADERS"/> + <field name="GL_BACK"/> + <field name="GL_BLEND"/> + <field name="GL_BLEND_COLOR"/> + <field name="GL_BLEND_DST_ALPHA"/> + <field name="GL_BLEND_DST_RGB"/> + <field name="GL_BLEND_EQUATION"/> + <field name="GL_BLEND_EQUATION_ALPHA"/> + <field name="GL_BLEND_EQUATION_RGB"/> + <field name="GL_BLEND_SRC_ALPHA"/> + <field name="GL_BLEND_SRC_RGB"/> + <field name="GL_BLUE_BITS"/> + <field name="GL_BOOL"/> + <field name="GL_BOOL_VEC2"/> + <field name="GL_BOOL_VEC3"/> + <field name="GL_BOOL_VEC4"/> + <field name="GL_BUFFER_SIZE"/> + <field name="GL_BUFFER_USAGE"/> + <field name="GL_BYTE"/> + <field name="GL_CCW"/> + <field name="GL_CLAMP_TO_EDGE"/> + <field name="GL_COLOR_ATTACHMENT0"/> + <field name="GL_COLOR_BUFFER_BIT"/> + <field name="GL_COLOR_CLEAR_VALUE"/> + <field name="GL_COLOR_WRITEMASK"/> + <field name="GL_COMPILE_STATUS"/> + <field name="GL_COMPRESSED_TEXTURE_FORMATS"/> + <field name="GL_CONSTANT_ALPHA"/> + <field name="GL_CONSTANT_COLOR"/> + <field name="GL_CULL_FACE"/> + <field name="GL_CULL_FACE_MODE"/> + <field name="GL_CURRENT_PROGRAM"/> + <field name="GL_CURRENT_VERTEX_ATTRIB"/> + <field name="GL_CW"/> + <field name="GL_DECR"/> + <field name="GL_DECR_WRAP"/> + <field name="GL_DELETE_STATUS"/> + <field name="GL_DEPTH_ATTACHMENT"/> + <field name="GL_DEPTH_BITS"/> + <field name="GL_DEPTH_BUFFER_BIT"/> + <field name="GL_DEPTH_CLEAR_VALUE"/> + <field name="GL_DEPTH_COMPONENT"/> + <field name="GL_DEPTH_COMPONENT16"/> + <field name="GL_DEPTH_FUNC"/> + <field name="GL_DEPTH_RANGE"/> + <field name="GL_DEPTH_TEST"/> + <field name="GL_DEPTH_WRITEMASK"/> + <field name="GL_DITHER"/> + <field name="GL_DONT_CARE"/> + <field name="GL_DST_ALPHA"/> + <field name="GL_DST_COLOR"/> + <field name="GL_DYNAMIC_DRAW"/> + <field name="GL_ELEMENT_ARRAY_BUFFER"/> + <field name="GL_ELEMENT_ARRAY_BUFFER_BINDING"/> + <field name="GL_EQUAL"/> + <field name="GL_EXTENSIONS"/> + <field name="GL_FALSE"/> + <field name="GL_FASTEST"/> + <field name="GL_FIXED"/> + <field name="GL_FLOAT"/> + <field name="GL_FLOAT_MAT2"/> + <field name="GL_FLOAT_MAT3"/> + <field name="GL_FLOAT_MAT4"/> + <field name="GL_FLOAT_VEC2"/> + <field name="GL_FLOAT_VEC3"/> + <field name="GL_FLOAT_VEC4"/> + <field name="GL_FRAGMENT_SHADER"/> + <field name="GL_FRAMEBUFFER"/> + <field name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME"/> + <field name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE"/> + <field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE"/> + <field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL"/> + <field name="GL_FRAMEBUFFER_BINDING"/> + <field name="GL_FRAMEBUFFER_COMPLETE"/> + <field name="GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT"/> + <field name="GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS"/> + <field name="GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT"/> + <field name="GL_FRAMEBUFFER_UNSUPPORTED"/> + <field name="GL_FRONT"/> + <field name="GL_FRONT_AND_BACK"/> + <field name="GL_FRONT_FACE"/> + <field name="GL_FUNC_ADD"/> + <field name="GL_FUNC_REVERSE_SUBTRACT"/> + <field name="GL_FUNC_SUBTRACT"/> + <field name="GL_GENERATE_MIPMAP_HINT"/> + <field name="GL_GEQUAL"/> + <field name="GL_GREATER"/> + <field name="GL_GREEN_BITS"/> + <field name="GL_HIGH_FLOAT"/> + <field name="GL_HIGH_INT"/> + <field name="GL_IMPLEMENTATION_COLOR_READ_FORMAT"/> + <field name="GL_IMPLEMENTATION_COLOR_READ_TYPE"/> + <field name="GL_INCR"/> + <field name="GL_INCR_WRAP"/> + <field name="GL_INFO_LOG_LENGTH"/> + <field name="GL_INT"/> + <field name="GL_INT_VEC2"/> + <field name="GL_INT_VEC3"/> + <field name="GL_INT_VEC4"/> + <field name="GL_INVALID_ENUM"/> + <field name="GL_INVALID_FRAMEBUFFER_OPERATION"/> + <field name="GL_INVALID_OPERATION"/> + <field name="GL_INVALID_VALUE"/> + <field name="GL_INVERT"/> + <field name="GL_KEEP"/> + <field name="GL_LEQUAL"/> + <field name="GL_LESS"/> + <field name="GL_LINEAR"/> + <field name="GL_LINEAR_MIPMAP_LINEAR"/> + <field name="GL_LINEAR_MIPMAP_NEAREST"/> + <field name="GL_LINES"/> + <field name="GL_LINE_LOOP"/> + <field name="GL_LINE_STRIP"/> + <field name="GL_LINE_WIDTH"/> + <field name="GL_LINK_STATUS"/> + <field name="GL_LOW_FLOAT"/> + <field name="GL_LOW_INT"/> + <field name="GL_LUMINANCE"/> + <field name="GL_LUMINANCE_ALPHA"/> + <field name="GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS"/> + <field name="GL_MAX_CUBE_MAP_TEXTURE_SIZE"/> + <field name="GL_MAX_FRAGMENT_UNIFORM_VECTORS"/> + <field name="GL_MAX_RENDERBUFFER_SIZE"/> + <field name="GL_MAX_TEXTURE_IMAGE_UNITS"/> + <field name="GL_MAX_TEXTURE_SIZE"/> + <field name="GL_MAX_VARYING_VECTORS"/> + <field name="GL_MAX_VERTEX_ATTRIBS"/> + <field name="GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS"/> + <field name="GL_MAX_VERTEX_UNIFORM_VECTORS"/> + <field name="GL_MAX_VIEWPORT_DIMS"/> + <field name="GL_MEDIUM_FLOAT"/> + <field name="GL_MEDIUM_INT"/> + <field name="GL_MIRRORED_REPEAT"/> + <field name="GL_NEAREST"/> + <field name="GL_NEAREST_MIPMAP_LINEAR"/> + <field name="GL_NEAREST_MIPMAP_NEAREST"/> + <field name="GL_NEVER"/> + <field name="GL_NICEST"/> + <field name="GL_NONE"/> + <field name="GL_NOTEQUAL"/> + <field name="GL_NO_ERROR"/> + <field name="GL_NUM_COMPRESSED_TEXTURE_FORMATS"/> + <field name="GL_NUM_SHADER_BINARY_FORMATS"/> + <field name="GL_ONE"/> + <field name="GL_ONE_MINUS_CONSTANT_ALPHA"/> + <field name="GL_ONE_MINUS_CONSTANT_COLOR"/> + <field name="GL_ONE_MINUS_DST_ALPHA"/> + <field name="GL_ONE_MINUS_DST_COLOR"/> + <field name="GL_ONE_MINUS_SRC_ALPHA"/> + <field name="GL_ONE_MINUS_SRC_COLOR"/> + <field name="GL_OUT_OF_MEMORY"/> + <field name="GL_PACK_ALIGNMENT"/> + <field name="GL_POINTS"/> + <field name="GL_POLYGON_OFFSET_FACTOR"/> + <field name="GL_POLYGON_OFFSET_FILL"/> + <field name="GL_POLYGON_OFFSET_UNITS"/> + <field name="GL_RED_BITS"/> + <field name="GL_RENDERBUFFER"/> + <field name="GL_RENDERBUFFER_ALPHA_SIZE"/> + <field name="GL_RENDERBUFFER_BINDING"/> + <field name="GL_RENDERBUFFER_BLUE_SIZE"/> + <field name="GL_RENDERBUFFER_DEPTH_SIZE"/> + <field name="GL_RENDERBUFFER_GREEN_SIZE"/> + <field name="GL_RENDERBUFFER_HEIGHT"/> + <field name="GL_RENDERBUFFER_INTERNAL_FORMAT"/> + <field name="GL_RENDERBUFFER_RED_SIZE"/> + <field name="GL_RENDERBUFFER_STENCIL_SIZE"/> + <field name="GL_RENDERBUFFER_WIDTH"/> + <field name="GL_RENDERER"/> + <field name="GL_REPEAT"/> + <field name="GL_REPLACE"/> + <field name="GL_RGB"/> + <field name="GL_RGB565"/> + <field name="GL_RGB5_A1"/> + <field name="GL_RGBA"/> + <field name="GL_RGBA4"/> + <field name="GL_SAMPLER_2D"/> + <field name="GL_SAMPLER_CUBE"/> + <field name="GL_SAMPLES"/> + <field name="GL_SAMPLE_ALPHA_TO_COVERAGE"/> + <field name="GL_SAMPLE_BUFFERS"/> + <field name="GL_SAMPLE_COVERAGE"/> + <field name="GL_SAMPLE_COVERAGE_INVERT"/> + <field name="GL_SAMPLE_COVERAGE_VALUE"/> + <field name="GL_SCISSOR_BOX"/> + <field name="GL_SCISSOR_TEST"/> + <field name="GL_SHADER_BINARY_FORMATS"/> + <field name="GL_SHADER_COMPILER"/> + <field name="GL_SHADER_SOURCE_LENGTH"/> + <field name="GL_SHADER_TYPE"/> + <field name="GL_SHADING_LANGUAGE_VERSION"/> + <field name="GL_SHORT"/> + <field name="GL_SRC_ALPHA"/> + <field name="GL_SRC_ALPHA_SATURATE"/> + <field name="GL_SRC_COLOR"/> + <field name="GL_STATIC_DRAW"/> + <field name="GL_STENCIL_ATTACHMENT"/> + <field name="GL_STENCIL_BACK_FAIL"/> + <field name="GL_STENCIL_BACK_FUNC"/> + <field name="GL_STENCIL_BACK_PASS_DEPTH_FAIL"/> + <field name="GL_STENCIL_BACK_PASS_DEPTH_PASS"/> + <field name="GL_STENCIL_BACK_REF"/> + <field name="GL_STENCIL_BACK_VALUE_MASK"/> + <field name="GL_STENCIL_BACK_WRITEMASK"/> + <field name="GL_STENCIL_BITS"/> + <field name="GL_STENCIL_BUFFER_BIT"/> + <field name="GL_STENCIL_CLEAR_VALUE"/> + <field name="GL_STENCIL_FAIL"/> + <field name="GL_STENCIL_FUNC"/> + <field name="GL_STENCIL_INDEX" deprecated="18"/> + <field name="GL_STENCIL_INDEX8"/> + <field name="GL_STENCIL_PASS_DEPTH_FAIL"/> + <field name="GL_STENCIL_PASS_DEPTH_PASS"/> + <field name="GL_STENCIL_REF"/> + <field name="GL_STENCIL_TEST"/> + <field name="GL_STENCIL_VALUE_MASK"/> + <field name="GL_STENCIL_WRITEMASK"/> + <field name="GL_STREAM_DRAW"/> + <field name="GL_SUBPIXEL_BITS"/> + <field name="GL_TEXTURE"/> + <field name="GL_TEXTURE0"/> + <field name="GL_TEXTURE1"/> + <field name="GL_TEXTURE10"/> + <field name="GL_TEXTURE11"/> + <field name="GL_TEXTURE12"/> + <field name="GL_TEXTURE13"/> + <field name="GL_TEXTURE14"/> + <field name="GL_TEXTURE15"/> + <field name="GL_TEXTURE16"/> + <field name="GL_TEXTURE17"/> + <field name="GL_TEXTURE18"/> + <field name="GL_TEXTURE19"/> + <field name="GL_TEXTURE2"/> + <field name="GL_TEXTURE20"/> + <field name="GL_TEXTURE21"/> + <field name="GL_TEXTURE22"/> + <field name="GL_TEXTURE23"/> + <field name="GL_TEXTURE24"/> + <field name="GL_TEXTURE25"/> + <field name="GL_TEXTURE26"/> + <field name="GL_TEXTURE27"/> + <field name="GL_TEXTURE28"/> + <field name="GL_TEXTURE29"/> + <field name="GL_TEXTURE3"/> + <field name="GL_TEXTURE30"/> + <field name="GL_TEXTURE31"/> + <field name="GL_TEXTURE4"/> + <field name="GL_TEXTURE5"/> + <field name="GL_TEXTURE6"/> + <field name="GL_TEXTURE7"/> + <field name="GL_TEXTURE8"/> + <field name="GL_TEXTURE9"/> + <field name="GL_TEXTURE_2D"/> + <field name="GL_TEXTURE_BINDING_2D"/> + <field name="GL_TEXTURE_BINDING_CUBE_MAP"/> + <field name="GL_TEXTURE_CUBE_MAP"/> + <field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X"/> + <field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y"/> + <field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z"/> + <field name="GL_TEXTURE_CUBE_MAP_POSITIVE_X"/> + <field name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y"/> + <field name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z"/> + <field name="GL_TEXTURE_MAG_FILTER"/> + <field name="GL_TEXTURE_MIN_FILTER"/> + <field name="GL_TEXTURE_WRAP_S"/> + <field name="GL_TEXTURE_WRAP_T"/> + <field name="GL_TRIANGLES"/> + <field name="GL_TRIANGLE_FAN"/> + <field name="GL_TRIANGLE_STRIP"/> + <field name="GL_TRUE"/> + <field name="GL_UNPACK_ALIGNMENT"/> + <field name="GL_UNSIGNED_BYTE"/> + <field name="GL_UNSIGNED_INT"/> + <field name="GL_UNSIGNED_SHORT"/> + <field name="GL_UNSIGNED_SHORT_4_4_4_4"/> + <field name="GL_UNSIGNED_SHORT_5_5_5_1"/> + <field name="GL_UNSIGNED_SHORT_5_6_5"/> + <field name="GL_VALIDATE_STATUS"/> + <field name="GL_VENDOR"/> + <field name="GL_VERSION"/> + <field name="GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING"/> + <field name="GL_VERTEX_ATTRIB_ARRAY_ENABLED"/> + <field name="GL_VERTEX_ATTRIB_ARRAY_NORMALIZED"/> + <field name="GL_VERTEX_ATTRIB_ARRAY_POINTER"/> + <field name="GL_VERTEX_ATTRIB_ARRAY_SIZE"/> + <field name="GL_VERTEX_ATTRIB_ARRAY_STRIDE"/> + <field name="GL_VERTEX_ATTRIB_ARRAY_TYPE"/> + <field name="GL_VERTEX_SHADER"/> + <field name="GL_VIEWPORT"/> + <field name="GL_ZERO"/> + </class> + <class name="android/opengl/GLES30" since="18"> + <extends name="android/opengl/GLES20"/> + <method name="<init>()V"/> + <method name="glBeginQuery(II)V"/> + <method name="glBeginTransformFeedback(I)V"/> + <method name="glBindBufferBase(III)V"/> + <method name="glBindBufferRange(IIIII)V"/> + <method name="glBindSampler(II)V"/> + <method name="glBindTransformFeedback(II)V"/> + <method name="glBindVertexArray(I)V"/> + <method name="glBlitFramebuffer(IIIIIIIIII)V"/> + <method name="glClearBufferfi(IIFI)V"/> + <method name="glClearBufferfv(IILjava/nio/FloatBuffer;)V"/> + <method name="glClearBufferfv(II[FI)V"/> + <method name="glClearBufferiv(IILjava/nio/IntBuffer;)V"/> + <method name="glClearBufferiv(II[II)V"/> + <method name="glClearBufferuiv(IILjava/nio/IntBuffer;)V"/> + <method name="glClearBufferuiv(II[II)V"/> + <method name="glClientWaitSync(JIJ)I"/> + <method name="glCompressedTexImage3D(IIIIIIIII)V"/> + <method name="glCompressedTexImage3D(IIIIIIIILjava/nio/Buffer;)V"/> + <method name="glCompressedTexSubImage3D(IIIIIIIIIII)V"/> + <method name="glCompressedTexSubImage3D(IIIIIIIIIILjava/nio/Buffer;)V"/> + <method name="glCopyBufferSubData(IIIII)V"/> + <method name="glCopyTexSubImage3D(IIIIIIIII)V"/> + <method name="glDeleteQueries(ILjava/nio/IntBuffer;)V"/> + <method name="glDeleteQueries(I[II)V"/> + <method name="glDeleteSamplers(ILjava/nio/IntBuffer;)V"/> + <method name="glDeleteSamplers(I[II)V"/> + <method name="glDeleteSync(J)V"/> + <method name="glDeleteTransformFeedbacks(ILjava/nio/IntBuffer;)V"/> + <method name="glDeleteTransformFeedbacks(I[II)V"/> + <method name="glDeleteVertexArrays(ILjava/nio/IntBuffer;)V"/> + <method name="glDeleteVertexArrays(I[II)V"/> + <method name="glDrawArraysInstanced(IIII)V"/> + <method name="glDrawBuffers(ILjava/nio/IntBuffer;)V"/> + <method name="glDrawBuffers(I[II)V"/> + <method name="glDrawElementsInstanced(IIIII)V"/> + <method name="glDrawElementsInstanced(IIILjava/nio/Buffer;I)V"/> + <method name="glDrawRangeElements(IIIIII)V"/> + <method name="glDrawRangeElements(IIIIILjava/nio/Buffer;)V"/> + <method name="glEndQuery(I)V"/> + <method name="glEndTransformFeedback()V"/> + <method name="glFenceSync(II)J"/> + <method name="glFlushMappedBufferRange(III)V"/> + <method name="glFramebufferTextureLayer(IIIII)V"/> + <method name="glGenQueries(ILjava/nio/IntBuffer;)V"/> + <method name="glGenQueries(I[II)V"/> + <method name="glGenSamplers(ILjava/nio/IntBuffer;)V"/> + <method name="glGenSamplers(I[II)V"/> + <method name="glGenTransformFeedbacks(ILjava/nio/IntBuffer;)V"/> + <method name="glGenTransformFeedbacks(I[II)V"/> + <method name="glGenVertexArrays(ILjava/nio/IntBuffer;)V"/> + <method name="glGenVertexArrays(I[II)V"/> + <method name="glGetActiveUniformBlockName(II)Ljava/lang/String;"/> + <method name="glGetActiveUniformBlockName(III[II[BI)V"/> + <method name="glGetActiveUniformBlockName(IILjava/nio/Buffer;Ljava/nio/Buffer;)V"/> + <method name="glGetActiveUniformBlockiv(IIILjava/nio/IntBuffer;)V"/> + <method name="glGetActiveUniformBlockiv(III[II)V"/> + <method name="glGetActiveUniformsiv(IILjava/nio/IntBuffer;ILjava/nio/IntBuffer;)V"/> + <method name="glGetActiveUniformsiv(II[III[II)V"/> + <method name="glGetBufferParameteri64v(IILjava/nio/LongBuffer;)V"/> + <method name="glGetBufferParameteri64v(II[JI)V"/> + <method name="glGetBufferPointerv(II)Ljava/nio/Buffer;"/> + <method name="glGetFragDataLocation(ILjava/lang/String;)I"/> + <method name="glGetInteger64i_v(IILjava/nio/LongBuffer;)V"/> + <method name="glGetInteger64i_v(II[JI)V"/> + <method name="glGetInteger64v(ILjava/nio/LongBuffer;)V"/> + <method name="glGetInteger64v(I[JI)V"/> + <method name="glGetIntegeri_v(IILjava/nio/IntBuffer;)V"/> + <method name="glGetIntegeri_v(II[II)V"/> + <method name="glGetInternalformativ(IIIILjava/nio/IntBuffer;)V"/> + <method name="glGetInternalformativ(IIII[II)V"/> + <method name="glGetProgramBinary(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/Buffer;)V"/> + <method name="glGetProgramBinary(II[II[IILjava/nio/Buffer;)V"/> + <method name="glGetQueryObjectuiv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetQueryObjectuiv(II[II)V"/> + <method name="glGetQueryiv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetQueryiv(II[II)V"/> + <method name="glGetSamplerParameterfv(IILjava/nio/FloatBuffer;)V"/> + <method name="glGetSamplerParameterfv(II[FI)V"/> + <method name="glGetSamplerParameteriv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetSamplerParameteriv(II[II)V"/> + <method name="glGetStringi(II)Ljava/lang/String;"/> + <method name="glGetSynciv(JIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V"/> + <method name="glGetSynciv(JII[II[II)V"/> + <method name="glGetTransformFeedbackVarying(IIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;B)V" deprecated="24"/> + <method name="glGetTransformFeedbackVarying(IIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/ByteBuffer;)V" since="24"/> + <method name="glGetTransformFeedbackVarying(III[II[II[II[BI)V"/> + <method name="glGetTransformFeedbackVarying(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)Ljava/lang/String;"/> + <method name="glGetTransformFeedbackVarying(II[II[II)Ljava/lang/String;"/> + <method name="glGetUniformBlockIndex(ILjava/lang/String;)I"/> + <method name="glGetUniformIndices(I[Ljava/lang/String;Ljava/nio/IntBuffer;)V"/> + <method name="glGetUniformIndices(I[Ljava/lang/String;[II)V"/> + <method name="glGetUniformuiv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetUniformuiv(II[II)V"/> + <method name="glGetVertexAttribIiv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetVertexAttribIiv(II[II)V"/> + <method name="glGetVertexAttribIuiv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetVertexAttribIuiv(II[II)V"/> + <method name="glInvalidateFramebuffer(IILjava/nio/IntBuffer;)V"/> + <method name="glInvalidateFramebuffer(II[II)V"/> + <method name="glInvalidateSubFramebuffer(IILjava/nio/IntBuffer;IIII)V"/> + <method name="glInvalidateSubFramebuffer(II[IIIIII)V"/> + <method name="glIsQuery(I)Z"/> + <method name="glIsSampler(I)Z"/> + <method name="glIsSync(J)Z"/> + <method name="glIsTransformFeedback(I)Z"/> + <method name="glIsVertexArray(I)Z"/> + <method name="glMapBufferRange(IIII)Ljava/nio/Buffer;"/> + <method name="glPauseTransformFeedback()V"/> + <method name="glProgramBinary(IILjava/nio/Buffer;I)V"/> + <method name="glProgramParameteri(III)V"/> + <method name="glReadBuffer(I)V"/> + <method name="glReadPixels(IIIIIII)V" since="24"/> + <method name="glRenderbufferStorageMultisample(IIIII)V"/> + <method name="glResumeTransformFeedback()V"/> + <method name="glSamplerParameterf(IIF)V"/> + <method name="glSamplerParameterfv(IILjava/nio/FloatBuffer;)V"/> + <method name="glSamplerParameterfv(II[FI)V"/> + <method name="glSamplerParameteri(III)V"/> + <method name="glSamplerParameteriv(IILjava/nio/IntBuffer;)V"/> + <method name="glSamplerParameteriv(II[II)V"/> + <method name="glTexImage3D(IIIIIIIIII)V"/> + <method name="glTexImage3D(IIIIIIIIILjava/nio/Buffer;)V"/> + <method name="glTexStorage2D(IIIII)V"/> + <method name="glTexStorage3D(IIIIII)V"/> + <method name="glTexSubImage3D(IIIIIIIIIII)V"/> + <method name="glTexSubImage3D(IIIIIIIIIILjava/nio/Buffer;)V"/> + <method name="glTransformFeedbackVaryings(I[Ljava/lang/String;I)V"/> + <method name="glUniform1ui(II)V"/> + <method name="glUniform1uiv(IILjava/nio/IntBuffer;)V"/> + <method name="glUniform1uiv(II[II)V"/> + <method name="glUniform2ui(III)V"/> + <method name="glUniform2uiv(IILjava/nio/IntBuffer;)V"/> + <method name="glUniform2uiv(II[II)V"/> + <method name="glUniform3ui(IIII)V"/> + <method name="glUniform3uiv(IILjava/nio/IntBuffer;)V"/> + <method name="glUniform3uiv(II[II)V"/> + <method name="glUniform4ui(IIIII)V"/> + <method name="glUniform4uiv(IILjava/nio/IntBuffer;)V"/> + <method name="glUniform4uiv(II[II)V"/> + <method name="glUniformBlockBinding(III)V"/> + <method name="glUniformMatrix2x3fv(IIZLjava/nio/FloatBuffer;)V"/> + <method name="glUniformMatrix2x3fv(IIZ[FI)V"/> + <method name="glUniformMatrix2x4fv(IIZLjava/nio/FloatBuffer;)V"/> + <method name="glUniformMatrix2x4fv(IIZ[FI)V"/> + <method name="glUniformMatrix3x2fv(IIZLjava/nio/FloatBuffer;)V"/> + <method name="glUniformMatrix3x2fv(IIZ[FI)V"/> + <method name="glUniformMatrix3x4fv(IIZLjava/nio/FloatBuffer;)V"/> + <method name="glUniformMatrix3x4fv(IIZ[FI)V"/> + <method name="glUniformMatrix4x2fv(IIZLjava/nio/FloatBuffer;)V"/> + <method name="glUniformMatrix4x2fv(IIZ[FI)V"/> + <method name="glUniformMatrix4x3fv(IIZLjava/nio/FloatBuffer;)V"/> + <method name="glUniformMatrix4x3fv(IIZ[FI)V"/> + <method name="glUnmapBuffer(I)Z"/> + <method name="glVertexAttribDivisor(II)V"/> + <method name="glVertexAttribI4i(IIIII)V"/> + <method name="glVertexAttribI4iv(ILjava/nio/IntBuffer;)V"/> + <method name="glVertexAttribI4iv(I[II)V"/> + <method name="glVertexAttribI4ui(IIIII)V"/> + <method name="glVertexAttribI4uiv(ILjava/nio/IntBuffer;)V"/> + <method name="glVertexAttribI4uiv(I[II)V"/> + <method name="glVertexAttribIPointer(IIIII)V"/> + <method name="glVertexAttribIPointer(IIIILjava/nio/Buffer;)V"/> + <method name="glWaitSync(JIJ)V"/> + <field name="GL_ACTIVE_UNIFORM_BLOCKS"/> + <field name="GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH"/> + <field name="GL_ALREADY_SIGNALED"/> + <field name="GL_ANY_SAMPLES_PASSED"/> + <field name="GL_ANY_SAMPLES_PASSED_CONSERVATIVE"/> + <field name="GL_BLUE"/> + <field name="GL_BUFFER_ACCESS_FLAGS"/> + <field name="GL_BUFFER_MAPPED"/> + <field name="GL_BUFFER_MAP_LENGTH"/> + <field name="GL_BUFFER_MAP_OFFSET"/> + <field name="GL_BUFFER_MAP_POINTER"/> + <field name="GL_COLOR"/> + <field name="GL_COLOR_ATTACHMENT1"/> + <field name="GL_COLOR_ATTACHMENT10"/> + <field name="GL_COLOR_ATTACHMENT11"/> + <field name="GL_COLOR_ATTACHMENT12"/> + <field name="GL_COLOR_ATTACHMENT13"/> + <field name="GL_COLOR_ATTACHMENT14"/> + <field name="GL_COLOR_ATTACHMENT15"/> + <field name="GL_COLOR_ATTACHMENT2"/> + <field name="GL_COLOR_ATTACHMENT3"/> + <field name="GL_COLOR_ATTACHMENT4"/> + <field name="GL_COLOR_ATTACHMENT5"/> + <field name="GL_COLOR_ATTACHMENT6"/> + <field name="GL_COLOR_ATTACHMENT7"/> + <field name="GL_COLOR_ATTACHMENT8"/> + <field name="GL_COLOR_ATTACHMENT9"/> + <field name="GL_COMPARE_REF_TO_TEXTURE"/> + <field name="GL_COMPRESSED_R11_EAC"/> + <field name="GL_COMPRESSED_RG11_EAC"/> + <field name="GL_COMPRESSED_RGB8_ETC2"/> + <field name="GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2"/> + <field name="GL_COMPRESSED_RGBA8_ETC2_EAC"/> + <field name="GL_COMPRESSED_SIGNED_R11_EAC"/> + <field name="GL_COMPRESSED_SIGNED_RG11_EAC"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC"/> + <field name="GL_COMPRESSED_SRGB8_ETC2"/> + <field name="GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2"/> + <field name="GL_CONDITION_SATISFIED"/> + <field name="GL_COPY_READ_BUFFER"/> + <field name="GL_COPY_READ_BUFFER_BINDING"/> + <field name="GL_COPY_WRITE_BUFFER"/> + <field name="GL_COPY_WRITE_BUFFER_BINDING"/> + <field name="GL_CURRENT_QUERY"/> + <field name="GL_DEPTH"/> + <field name="GL_DEPTH24_STENCIL8"/> + <field name="GL_DEPTH32F_STENCIL8"/> + <field name="GL_DEPTH_COMPONENT24"/> + <field name="GL_DEPTH_COMPONENT32F"/> + <field name="GL_DEPTH_STENCIL"/> + <field name="GL_DEPTH_STENCIL_ATTACHMENT"/> + <field name="GL_DRAW_BUFFER0"/> + <field name="GL_DRAW_BUFFER1"/> + <field name="GL_DRAW_BUFFER10"/> + <field name="GL_DRAW_BUFFER11"/> + <field name="GL_DRAW_BUFFER12"/> + <field name="GL_DRAW_BUFFER13"/> + <field name="GL_DRAW_BUFFER14"/> + <field name="GL_DRAW_BUFFER15"/> + <field name="GL_DRAW_BUFFER2"/> + <field name="GL_DRAW_BUFFER3"/> + <field name="GL_DRAW_BUFFER4"/> + <field name="GL_DRAW_BUFFER5"/> + <field name="GL_DRAW_BUFFER6"/> + <field name="GL_DRAW_BUFFER7"/> + <field name="GL_DRAW_BUFFER8"/> + <field name="GL_DRAW_BUFFER9"/> + <field name="GL_DRAW_FRAMEBUFFER"/> + <field name="GL_DRAW_FRAMEBUFFER_BINDING"/> + <field name="GL_DYNAMIC_COPY"/> + <field name="GL_DYNAMIC_READ"/> + <field name="GL_FLOAT_32_UNSIGNED_INT_24_8_REV"/> + <field name="GL_FLOAT_MAT2x3"/> + <field name="GL_FLOAT_MAT2x4"/> + <field name="GL_FLOAT_MAT3x2"/> + <field name="GL_FLOAT_MAT3x4"/> + <field name="GL_FLOAT_MAT4x2"/> + <field name="GL_FLOAT_MAT4x3"/> + <field name="GL_FRAGMENT_SHADER_DERIVATIVE_HINT"/> + <field name="GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE"/> + <field name="GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE"/> + <field name="GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING"/> + <field name="GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE"/> + <field name="GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE"/> + <field name="GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE"/> + <field name="GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE"/> + <field name="GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE"/> + <field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER"/> + <field name="GL_FRAMEBUFFER_DEFAULT"/> + <field name="GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE"/> + <field name="GL_FRAMEBUFFER_UNDEFINED"/> + <field name="GL_GREEN"/> + <field name="GL_HALF_FLOAT"/> + <field name="GL_INTERLEAVED_ATTRIBS"/> + <field name="GL_INT_2_10_10_10_REV"/> + <field name="GL_INT_SAMPLER_2D"/> + <field name="GL_INT_SAMPLER_2D_ARRAY"/> + <field name="GL_INT_SAMPLER_3D"/> + <field name="GL_INT_SAMPLER_CUBE"/> + <field name="GL_INVALID_INDEX"/> + <field name="GL_MAJOR_VERSION"/> + <field name="GL_MAP_FLUSH_EXPLICIT_BIT"/> + <field name="GL_MAP_INVALIDATE_BUFFER_BIT"/> + <field name="GL_MAP_INVALIDATE_RANGE_BIT"/> + <field name="GL_MAP_READ_BIT"/> + <field name="GL_MAP_UNSYNCHRONIZED_BIT"/> + <field name="GL_MAP_WRITE_BIT"/> + <field name="GL_MAX"/> + <field name="GL_MAX_3D_TEXTURE_SIZE"/> + <field name="GL_MAX_ARRAY_TEXTURE_LAYERS"/> + <field name="GL_MAX_COLOR_ATTACHMENTS"/> + <field name="GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS"/> + <field name="GL_MAX_COMBINED_UNIFORM_BLOCKS"/> + <field name="GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS"/> + <field name="GL_MAX_DRAW_BUFFERS"/> + <field name="GL_MAX_ELEMENTS_INDICES"/> + <field name="GL_MAX_ELEMENTS_VERTICES"/> + <field name="GL_MAX_ELEMENT_INDEX"/> + <field name="GL_MAX_FRAGMENT_INPUT_COMPONENTS"/> + <field name="GL_MAX_FRAGMENT_UNIFORM_BLOCKS"/> + <field name="GL_MAX_FRAGMENT_UNIFORM_COMPONENTS"/> + <field name="GL_MAX_PROGRAM_TEXEL_OFFSET"/> + <field name="GL_MAX_SAMPLES"/> + <field name="GL_MAX_SERVER_WAIT_TIMEOUT"/> + <field name="GL_MAX_TEXTURE_LOD_BIAS"/> + <field name="GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS"/> + <field name="GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS"/> + <field name="GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS"/> + <field name="GL_MAX_UNIFORM_BLOCK_SIZE"/> + <field name="GL_MAX_UNIFORM_BUFFER_BINDINGS"/> + <field name="GL_MAX_VARYING_COMPONENTS"/> + <field name="GL_MAX_VERTEX_OUTPUT_COMPONENTS"/> + <field name="GL_MAX_VERTEX_UNIFORM_BLOCKS"/> + <field name="GL_MAX_VERTEX_UNIFORM_COMPONENTS"/> + <field name="GL_MIN"/> + <field name="GL_MINOR_VERSION"/> + <field name="GL_MIN_PROGRAM_TEXEL_OFFSET"/> + <field name="GL_NUM_EXTENSIONS"/> + <field name="GL_NUM_PROGRAM_BINARY_FORMATS"/> + <field name="GL_NUM_SAMPLE_COUNTS"/> + <field name="GL_OBJECT_TYPE"/> + <field name="GL_PACK_ROW_LENGTH"/> + <field name="GL_PACK_SKIP_PIXELS"/> + <field name="GL_PACK_SKIP_ROWS"/> + <field name="GL_PIXEL_PACK_BUFFER"/> + <field name="GL_PIXEL_PACK_BUFFER_BINDING"/> + <field name="GL_PIXEL_UNPACK_BUFFER"/> + <field name="GL_PIXEL_UNPACK_BUFFER_BINDING"/> + <field name="GL_PRIMITIVE_RESTART_FIXED_INDEX"/> + <field name="GL_PROGRAM_BINARY_FORMATS"/> + <field name="GL_PROGRAM_BINARY_LENGTH"/> + <field name="GL_PROGRAM_BINARY_RETRIEVABLE_HINT"/> + <field name="GL_QUERY_RESULT"/> + <field name="GL_QUERY_RESULT_AVAILABLE"/> + <field name="GL_R11F_G11F_B10F"/> + <field name="GL_R16F"/> + <field name="GL_R16I"/> + <field name="GL_R16UI"/> + <field name="GL_R32F"/> + <field name="GL_R32I"/> + <field name="GL_R32UI"/> + <field name="GL_R8"/> + <field name="GL_R8I"/> + <field name="GL_R8UI"/> + <field name="GL_R8_SNORM"/> + <field name="GL_RASTERIZER_DISCARD"/> + <field name="GL_READ_BUFFER"/> + <field name="GL_READ_FRAMEBUFFER"/> + <field name="GL_READ_FRAMEBUFFER_BINDING"/> + <field name="GL_RED"/> + <field name="GL_RED_INTEGER"/> + <field name="GL_RENDERBUFFER_SAMPLES"/> + <field name="GL_RG"/> + <field name="GL_RG16F"/> + <field name="GL_RG16I"/> + <field name="GL_RG16UI"/> + <field name="GL_RG32F"/> + <field name="GL_RG32I"/> + <field name="GL_RG32UI"/> + <field name="GL_RG8"/> + <field name="GL_RG8I"/> + <field name="GL_RG8UI"/> + <field name="GL_RG8_SNORM"/> + <field name="GL_RGB10_A2"/> + <field name="GL_RGB10_A2UI"/> + <field name="GL_RGB16F"/> + <field name="GL_RGB16I"/> + <field name="GL_RGB16UI"/> + <field name="GL_RGB32F"/> + <field name="GL_RGB32I"/> + <field name="GL_RGB32UI"/> + <field name="GL_RGB8"/> + <field name="GL_RGB8I"/> + <field name="GL_RGB8UI"/> + <field name="GL_RGB8_SNORM"/> + <field name="GL_RGB9_E5"/> + <field name="GL_RGBA16F"/> + <field name="GL_RGBA16I"/> + <field name="GL_RGBA16UI"/> + <field name="GL_RGBA32F"/> + <field name="GL_RGBA32I"/> + <field name="GL_RGBA32UI"/> + <field name="GL_RGBA8"/> + <field name="GL_RGBA8I"/> + <field name="GL_RGBA8UI"/> + <field name="GL_RGBA8_SNORM"/> + <field name="GL_RGBA_INTEGER"/> + <field name="GL_RGB_INTEGER"/> + <field name="GL_RG_INTEGER"/> + <field name="GL_SAMPLER_2D_ARRAY"/> + <field name="GL_SAMPLER_2D_ARRAY_SHADOW"/> + <field name="GL_SAMPLER_2D_SHADOW"/> + <field name="GL_SAMPLER_3D"/> + <field name="GL_SAMPLER_BINDING"/> + <field name="GL_SAMPLER_CUBE_SHADOW"/> + <field name="GL_SEPARATE_ATTRIBS"/> + <field name="GL_SIGNALED"/> + <field name="GL_SIGNED_NORMALIZED"/> + <field name="GL_SRGB"/> + <field name="GL_SRGB8"/> + <field name="GL_SRGB8_ALPHA8"/> + <field name="GL_STATIC_COPY"/> + <field name="GL_STATIC_READ"/> + <field name="GL_STENCIL"/> + <field name="GL_STREAM_COPY"/> + <field name="GL_STREAM_READ"/> + <field name="GL_SYNC_CONDITION"/> + <field name="GL_SYNC_FENCE"/> + <field name="GL_SYNC_FLAGS"/> + <field name="GL_SYNC_FLUSH_COMMANDS_BIT"/> + <field name="GL_SYNC_GPU_COMMANDS_COMPLETE"/> + <field name="GL_SYNC_STATUS"/> + <field name="GL_TEXTURE_2D_ARRAY"/> + <field name="GL_TEXTURE_3D"/> + <field name="GL_TEXTURE_BASE_LEVEL"/> + <field name="GL_TEXTURE_BINDING_2D_ARRAY"/> + <field name="GL_TEXTURE_BINDING_3D"/> + <field name="GL_TEXTURE_COMPARE_FUNC"/> + <field name="GL_TEXTURE_COMPARE_MODE"/> + <field name="GL_TEXTURE_IMMUTABLE_FORMAT"/> + <field name="GL_TEXTURE_IMMUTABLE_LEVELS"/> + <field name="GL_TEXTURE_MAX_LEVEL"/> + <field name="GL_TEXTURE_MAX_LOD"/> + <field name="GL_TEXTURE_MIN_LOD"/> + <field name="GL_TEXTURE_SWIZZLE_A"/> + <field name="GL_TEXTURE_SWIZZLE_B"/> + <field name="GL_TEXTURE_SWIZZLE_G"/> + <field name="GL_TEXTURE_SWIZZLE_R"/> + <field name="GL_TEXTURE_WRAP_R"/> + <field name="GL_TIMEOUT_EXPIRED"/> + <field name="GL_TIMEOUT_IGNORED"/> + <field name="GL_TRANSFORM_FEEDBACK"/> + <field name="GL_TRANSFORM_FEEDBACK_ACTIVE"/> + <field name="GL_TRANSFORM_FEEDBACK_BINDING"/> + <field name="GL_TRANSFORM_FEEDBACK_BUFFER"/> + <field name="GL_TRANSFORM_FEEDBACK_BUFFER_BINDING"/> + <field name="GL_TRANSFORM_FEEDBACK_BUFFER_MODE"/> + <field name="GL_TRANSFORM_FEEDBACK_BUFFER_SIZE"/> + <field name="GL_TRANSFORM_FEEDBACK_BUFFER_START"/> + <field name="GL_TRANSFORM_FEEDBACK_PAUSED"/> + <field name="GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN"/> + <field name="GL_TRANSFORM_FEEDBACK_VARYINGS"/> + <field name="GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH"/> + <field name="GL_UNIFORM_ARRAY_STRIDE"/> + <field name="GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS"/> + <field name="GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES"/> + <field name="GL_UNIFORM_BLOCK_BINDING"/> + <field name="GL_UNIFORM_BLOCK_DATA_SIZE"/> + <field name="GL_UNIFORM_BLOCK_INDEX"/> + <field name="GL_UNIFORM_BLOCK_NAME_LENGTH"/> + <field name="GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER"/> + <field name="GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER"/> + <field name="GL_UNIFORM_BUFFER"/> + <field name="GL_UNIFORM_BUFFER_BINDING"/> + <field name="GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT"/> + <field name="GL_UNIFORM_BUFFER_SIZE"/> + <field name="GL_UNIFORM_BUFFER_START"/> + <field name="GL_UNIFORM_IS_ROW_MAJOR"/> + <field name="GL_UNIFORM_MATRIX_STRIDE"/> + <field name="GL_UNIFORM_NAME_LENGTH"/> + <field name="GL_UNIFORM_OFFSET"/> + <field name="GL_UNIFORM_SIZE"/> + <field name="GL_UNIFORM_TYPE"/> + <field name="GL_UNPACK_IMAGE_HEIGHT"/> + <field name="GL_UNPACK_ROW_LENGTH"/> + <field name="GL_UNPACK_SKIP_IMAGES"/> + <field name="GL_UNPACK_SKIP_PIXELS"/> + <field name="GL_UNPACK_SKIP_ROWS"/> + <field name="GL_UNSIGNALED"/> + <field name="GL_UNSIGNED_INT_10F_11F_11F_REV"/> + <field name="GL_UNSIGNED_INT_24_8"/> + <field name="GL_UNSIGNED_INT_2_10_10_10_REV"/> + <field name="GL_UNSIGNED_INT_5_9_9_9_REV"/> + <field name="GL_UNSIGNED_INT_SAMPLER_2D"/> + <field name="GL_UNSIGNED_INT_SAMPLER_2D_ARRAY"/> + <field name="GL_UNSIGNED_INT_SAMPLER_3D"/> + <field name="GL_UNSIGNED_INT_SAMPLER_CUBE"/> + <field name="GL_UNSIGNED_INT_VEC2"/> + <field name="GL_UNSIGNED_INT_VEC3"/> + <field name="GL_UNSIGNED_INT_VEC4"/> + <field name="GL_UNSIGNED_NORMALIZED"/> + <field name="GL_VERTEX_ARRAY_BINDING"/> + <field name="GL_VERTEX_ATTRIB_ARRAY_DIVISOR"/> + <field name="GL_VERTEX_ATTRIB_ARRAY_INTEGER"/> + <field name="GL_WAIT_FAILED"/> + </class> + <class name="android/opengl/GLES31" since="21"> + <extends name="android/opengl/GLES30"/> + <method name="<init>()V"/> + <method name="glActiveShaderProgram(II)V"/> + <method name="glBindImageTexture(IIIZIII)V"/> + <method name="glBindProgramPipeline(I)V"/> + <method name="glBindVertexBuffer(IIJI)V"/> + <method name="glCreateShaderProgramv(I[Ljava/lang/String;)I"/> + <method name="glDeleteProgramPipelines(ILjava/nio/IntBuffer;)V"/> + <method name="glDeleteProgramPipelines(I[II)V"/> + <method name="glDispatchCompute(III)V"/> + <method name="glDispatchComputeIndirect(J)V"/> + <method name="glDrawArraysIndirect(IJ)V"/> + <method name="glDrawElementsIndirect(IIJ)V"/> + <method name="glFramebufferParameteri(III)V"/> + <method name="glGenProgramPipelines(ILjava/nio/IntBuffer;)V"/> + <method name="glGenProgramPipelines(I[II)V"/> + <method name="glGetBooleani_v(IILjava/nio/IntBuffer;)V"/> + <method name="glGetBooleani_v(II[ZI)V"/> + <method name="glGetFramebufferParameteriv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetFramebufferParameteriv(II[II)V"/> + <method name="glGetMultisamplefv(IILjava/nio/FloatBuffer;)V"/> + <method name="glGetMultisamplefv(II[FI)V"/> + <method name="glGetProgramInterfaceiv(IIILjava/nio/IntBuffer;)V"/> + <method name="glGetProgramInterfaceiv(III[II)V"/> + <method name="glGetProgramPipelineInfoLog(I)Ljava/lang/String;"/> + <method name="glGetProgramPipelineiv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetProgramPipelineiv(II[II)V"/> + <method name="glGetProgramResourceIndex(IILjava/lang/String;)I"/> + <method name="glGetProgramResourceLocation(IILjava/lang/String;)I"/> + <method name="glGetProgramResourceName(III)Ljava/lang/String;"/> + <method name="glGetProgramResourceiv(IIIILjava/nio/IntBuffer;ILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V"/> + <method name="glGetProgramResourceiv(IIII[III[II[II)V"/> + <method name="glGetTexLevelParameterfv(IIILjava/nio/FloatBuffer;)V"/> + <method name="glGetTexLevelParameterfv(III[FI)V"/> + <method name="glGetTexLevelParameteriv(IIILjava/nio/IntBuffer;)V"/> + <method name="glGetTexLevelParameteriv(III[II)V"/> + <method name="glIsProgramPipeline(I)Z"/> + <method name="glMemoryBarrier(I)V"/> + <method name="glMemoryBarrierByRegion(I)V"/> + <method name="glProgramUniform1f(IIF)V"/> + <method name="glProgramUniform1fv(IIILjava/nio/FloatBuffer;)V"/> + <method name="glProgramUniform1fv(III[FI)V"/> + <method name="glProgramUniform1i(III)V"/> + <method name="glProgramUniform1iv(IIILjava/nio/IntBuffer;)V"/> + <method name="glProgramUniform1iv(III[II)V"/> + <method name="glProgramUniform1ui(III)V"/> + <method name="glProgramUniform1uiv(IIILjava/nio/IntBuffer;)V"/> + <method name="glProgramUniform1uiv(III[II)V"/> + <method name="glProgramUniform2f(IIFF)V"/> + <method name="glProgramUniform2fv(IIILjava/nio/FloatBuffer;)V"/> + <method name="glProgramUniform2fv(III[FI)V"/> + <method name="glProgramUniform2i(IIII)V"/> + <method name="glProgramUniform2iv(IIILjava/nio/IntBuffer;)V"/> + <method name="glProgramUniform2iv(III[II)V"/> + <method name="glProgramUniform2ui(IIII)V"/> + <method name="glProgramUniform2uiv(IIILjava/nio/IntBuffer;)V"/> + <method name="glProgramUniform2uiv(III[II)V"/> + <method name="glProgramUniform3f(IIFFF)V"/> + <method name="glProgramUniform3fv(IIILjava/nio/FloatBuffer;)V"/> + <method name="glProgramUniform3fv(III[FI)V"/> + <method name="glProgramUniform3i(IIIII)V"/> + <method name="glProgramUniform3iv(IIILjava/nio/IntBuffer;)V"/> + <method name="glProgramUniform3iv(III[II)V"/> + <method name="glProgramUniform3ui(IIIII)V"/> + <method name="glProgramUniform3uiv(IIILjava/nio/IntBuffer;)V"/> + <method name="glProgramUniform3uiv(III[II)V"/> + <method name="glProgramUniform4f(IIFFFF)V"/> + <method name="glProgramUniform4fv(IIILjava/nio/FloatBuffer;)V"/> + <method name="glProgramUniform4fv(III[FI)V"/> + <method name="glProgramUniform4i(IIIIII)V"/> + <method name="glProgramUniform4iv(IIILjava/nio/IntBuffer;)V"/> + <method name="glProgramUniform4iv(III[II)V"/> + <method name="glProgramUniform4ui(IIIIII)V"/> + <method name="glProgramUniform4uiv(IIILjava/nio/IntBuffer;)V"/> + <method name="glProgramUniform4uiv(III[II)V"/> + <method name="glProgramUniformMatrix2fv(IIIZLjava/nio/FloatBuffer;)V"/> + <method name="glProgramUniformMatrix2fv(IIIZ[FI)V"/> + <method name="glProgramUniformMatrix2x3fv(IIIZLjava/nio/FloatBuffer;)V"/> + <method name="glProgramUniformMatrix2x3fv(IIIZ[FI)V"/> + <method name="glProgramUniformMatrix2x4fv(IIIZLjava/nio/FloatBuffer;)V"/> + <method name="glProgramUniformMatrix2x4fv(IIIZ[FI)V"/> + <method name="glProgramUniformMatrix3fv(IIIZLjava/nio/FloatBuffer;)V"/> + <method name="glProgramUniformMatrix3fv(IIIZ[FI)V"/> + <method name="glProgramUniformMatrix3x2fv(IIIZLjava/nio/FloatBuffer;)V"/> + <method name="glProgramUniformMatrix3x2fv(IIIZ[FI)V"/> + <method name="glProgramUniformMatrix3x4fv(IIIZLjava/nio/FloatBuffer;)V"/> + <method name="glProgramUniformMatrix3x4fv(IIIZ[FI)V"/> + <method name="glProgramUniformMatrix4fv(IIIZLjava/nio/FloatBuffer;)V"/> + <method name="glProgramUniformMatrix4fv(IIIZ[FI)V"/> + <method name="glProgramUniformMatrix4x2fv(IIIZLjava/nio/FloatBuffer;)V"/> + <method name="glProgramUniformMatrix4x2fv(IIIZ[FI)V"/> + <method name="glProgramUniformMatrix4x3fv(IIIZLjava/nio/FloatBuffer;)V"/> + <method name="glProgramUniformMatrix4x3fv(IIIZ[FI)V"/> + <method name="glSampleMaski(II)V"/> + <method name="glTexStorage2DMultisample(IIIIIZ)V"/> + <method name="glUseProgramStages(III)V"/> + <method name="glValidateProgramPipeline(I)V"/> + <method name="glVertexAttribBinding(II)V"/> + <method name="glVertexAttribFormat(IIIZI)V"/> + <method name="glVertexAttribIFormat(IIII)V"/> + <method name="glVertexBindingDivisor(II)V"/> + <field name="GL_ACTIVE_ATOMIC_COUNTER_BUFFERS"/> + <field name="GL_ACTIVE_PROGRAM"/> + <field name="GL_ACTIVE_RESOURCES"/> + <field name="GL_ACTIVE_VARIABLES"/> + <field name="GL_ALL_BARRIER_BITS" since="24"/> + <field name="GL_ALL_SHADER_BITS"/> + <field name="GL_ARRAY_SIZE"/> + <field name="GL_ARRAY_STRIDE"/> + <field name="GL_ATOMIC_COUNTER_BARRIER_BIT"/> + <field name="GL_ATOMIC_COUNTER_BUFFER"/> + <field name="GL_ATOMIC_COUNTER_BUFFER_BINDING"/> + <field name="GL_ATOMIC_COUNTER_BUFFER_INDEX"/> + <field name="GL_ATOMIC_COUNTER_BUFFER_SIZE"/> + <field name="GL_ATOMIC_COUNTER_BUFFER_START"/> + <field name="GL_BLOCK_INDEX"/> + <field name="GL_BUFFER_BINDING"/> + <field name="GL_BUFFER_DATA_SIZE"/> + <field name="GL_BUFFER_UPDATE_BARRIER_BIT"/> + <field name="GL_BUFFER_VARIABLE"/> + <field name="GL_COMMAND_BARRIER_BIT"/> + <field name="GL_COMPUTE_SHADER"/> + <field name="GL_COMPUTE_SHADER_BIT"/> + <field name="GL_COMPUTE_WORK_GROUP_SIZE"/> + <field name="GL_DEPTH_STENCIL_TEXTURE_MODE"/> + <field name="GL_DISPATCH_INDIRECT_BUFFER"/> + <field name="GL_DISPATCH_INDIRECT_BUFFER_BINDING"/> + <field name="GL_DRAW_INDIRECT_BUFFER"/> + <field name="GL_DRAW_INDIRECT_BUFFER_BINDING"/> + <field name="GL_ELEMENT_ARRAY_BARRIER_BIT" since="24"/> + <field name="GL_FRAGMENT_SHADER_BIT"/> + <field name="GL_FRAMEBUFFER_BARRIER_BIT"/> + <field name="GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS"/> + <field name="GL_FRAMEBUFFER_DEFAULT_HEIGHT"/> + <field name="GL_FRAMEBUFFER_DEFAULT_SAMPLES"/> + <field name="GL_FRAMEBUFFER_DEFAULT_WIDTH"/> + <field name="GL_IMAGE_2D"/> + <field name="GL_IMAGE_2D_ARRAY"/> + <field name="GL_IMAGE_3D"/> + <field name="GL_IMAGE_BINDING_ACCESS"/> + <field name="GL_IMAGE_BINDING_FORMAT"/> + <field name="GL_IMAGE_BINDING_LAYER"/> + <field name="GL_IMAGE_BINDING_LAYERED"/> + <field name="GL_IMAGE_BINDING_LEVEL"/> + <field name="GL_IMAGE_BINDING_NAME"/> + <field name="GL_IMAGE_CUBE"/> + <field name="GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS"/> + <field name="GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE"/> + <field name="GL_IMAGE_FORMAT_COMPATIBILITY_TYPE"/> + <field name="GL_INT_IMAGE_2D"/> + <field name="GL_INT_IMAGE_2D_ARRAY"/> + <field name="GL_INT_IMAGE_3D"/> + <field name="GL_INT_IMAGE_CUBE"/> + <field name="GL_INT_SAMPLER_2D_MULTISAMPLE"/> + <field name="GL_IS_ROW_MAJOR"/> + <field name="GL_LOCATION"/> + <field name="GL_MATRIX_STRIDE"/> + <field name="GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS"/> + <field name="GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE"/> + <field name="GL_MAX_COLOR_TEXTURE_SAMPLES"/> + <field name="GL_MAX_COMBINED_ATOMIC_COUNTERS"/> + <field name="GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS"/> + <field name="GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS"/> + <field name="GL_MAX_COMBINED_IMAGE_UNIFORMS"/> + <field name="GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES"/> + <field name="GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS"/> + <field name="GL_MAX_COMPUTE_ATOMIC_COUNTERS"/> + <field name="GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS"/> + <field name="GL_MAX_COMPUTE_IMAGE_UNIFORMS"/> + <field name="GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS"/> + <field name="GL_MAX_COMPUTE_SHARED_MEMORY_SIZE"/> + <field name="GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS"/> + <field name="GL_MAX_COMPUTE_UNIFORM_BLOCKS"/> + <field name="GL_MAX_COMPUTE_UNIFORM_COMPONENTS"/> + <field name="GL_MAX_COMPUTE_WORK_GROUP_COUNT"/> + <field name="GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS"/> + <field name="GL_MAX_COMPUTE_WORK_GROUP_SIZE"/> + <field name="GL_MAX_DEPTH_TEXTURE_SAMPLES"/> + <field name="GL_MAX_FRAGMENT_ATOMIC_COUNTERS"/> + <field name="GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS"/> + <field name="GL_MAX_FRAGMENT_IMAGE_UNIFORMS"/> + <field name="GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS"/> + <field name="GL_MAX_FRAMEBUFFER_HEIGHT"/> + <field name="GL_MAX_FRAMEBUFFER_SAMPLES"/> + <field name="GL_MAX_FRAMEBUFFER_WIDTH"/> + <field name="GL_MAX_IMAGE_UNITS"/> + <field name="GL_MAX_INTEGER_SAMPLES"/> + <field name="GL_MAX_NAME_LENGTH"/> + <field name="GL_MAX_NUM_ACTIVE_VARIABLES"/> + <field name="GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET"/> + <field name="GL_MAX_SAMPLE_MASK_WORDS"/> + <field name="GL_MAX_SHADER_STORAGE_BLOCK_SIZE"/> + <field name="GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS"/> + <field name="GL_MAX_UNIFORM_LOCATIONS"/> + <field name="GL_MAX_VERTEX_ATOMIC_COUNTERS"/> + <field name="GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS"/> + <field name="GL_MAX_VERTEX_ATTRIB_BINDINGS"/> + <field name="GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET"/> + <field name="GL_MAX_VERTEX_ATTRIB_STRIDE"/> + <field name="GL_MAX_VERTEX_IMAGE_UNIFORMS"/> + <field name="GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS"/> + <field name="GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET"/> + <field name="GL_NAME_LENGTH"/> + <field name="GL_NUM_ACTIVE_VARIABLES"/> + <field name="GL_OFFSET"/> + <field name="GL_PIXEL_BUFFER_BARRIER_BIT"/> + <field name="GL_PROGRAM_INPUT"/> + <field name="GL_PROGRAM_OUTPUT"/> + <field name="GL_PROGRAM_PIPELINE_BINDING"/> + <field name="GL_PROGRAM_SEPARABLE"/> + <field name="GL_READ_ONLY"/> + <field name="GL_READ_WRITE"/> + <field name="GL_REFERENCED_BY_COMPUTE_SHADER"/> + <field name="GL_REFERENCED_BY_FRAGMENT_SHADER"/> + <field name="GL_REFERENCED_BY_VERTEX_SHADER"/> + <field name="GL_SAMPLER_2D_MULTISAMPLE"/> + <field name="GL_SAMPLE_MASK"/> + <field name="GL_SAMPLE_MASK_VALUE"/> + <field name="GL_SAMPLE_POSITION"/> + <field name="GL_SHADER_IMAGE_ACCESS_BARRIER_BIT" since="24"/> + <field name="GL_SHADER_STORAGE_BARRIER_BIT"/> + <field name="GL_SHADER_STORAGE_BLOCK"/> + <field name="GL_SHADER_STORAGE_BUFFER"/> + <field name="GL_SHADER_STORAGE_BUFFER_BINDING"/> + <field name="GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT"/> + <field name="GL_SHADER_STORAGE_BUFFER_SIZE"/> + <field name="GL_SHADER_STORAGE_BUFFER_START"/> + <field name="GL_STENCIL_INDEX"/> + <field name="GL_TEXTURE_2D_MULTISAMPLE"/> + <field name="GL_TEXTURE_ALPHA_SIZE"/> + <field name="GL_TEXTURE_ALPHA_TYPE"/> + <field name="GL_TEXTURE_BINDING_2D_MULTISAMPLE"/> + <field name="GL_TEXTURE_BLUE_SIZE"/> + <field name="GL_TEXTURE_BLUE_TYPE"/> + <field name="GL_TEXTURE_COMPRESSED"/> + <field name="GL_TEXTURE_DEPTH"/> + <field name="GL_TEXTURE_DEPTH_SIZE"/> + <field name="GL_TEXTURE_DEPTH_TYPE"/> + <field name="GL_TEXTURE_FETCH_BARRIER_BIT"/> + <field name="GL_TEXTURE_FIXED_SAMPLE_LOCATIONS"/> + <field name="GL_TEXTURE_GREEN_SIZE"/> + <field name="GL_TEXTURE_GREEN_TYPE"/> + <field name="GL_TEXTURE_HEIGHT"/> + <field name="GL_TEXTURE_INTERNAL_FORMAT"/> + <field name="GL_TEXTURE_RED_SIZE"/> + <field name="GL_TEXTURE_RED_TYPE"/> + <field name="GL_TEXTURE_SAMPLES"/> + <field name="GL_TEXTURE_SHARED_SIZE"/> + <field name="GL_TEXTURE_STENCIL_SIZE"/> + <field name="GL_TEXTURE_UPDATE_BARRIER_BIT"/> + <field name="GL_TEXTURE_WIDTH"/> + <field name="GL_TOP_LEVEL_ARRAY_SIZE"/> + <field name="GL_TOP_LEVEL_ARRAY_STRIDE"/> + <field name="GL_TRANSFORM_FEEDBACK_BARRIER_BIT"/> + <field name="GL_TRANSFORM_FEEDBACK_VARYING"/> + <field name="GL_TYPE"/> + <field name="GL_UNIFORM"/> + <field name="GL_UNIFORM_BARRIER_BIT"/> + <field name="GL_UNIFORM_BLOCK"/> + <field name="GL_UNSIGNED_INT_ATOMIC_COUNTER"/> + <field name="GL_UNSIGNED_INT_IMAGE_2D"/> + <field name="GL_UNSIGNED_INT_IMAGE_2D_ARRAY"/> + <field name="GL_UNSIGNED_INT_IMAGE_3D"/> + <field name="GL_UNSIGNED_INT_IMAGE_CUBE"/> + <field name="GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE"/> + <field name="GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT" since="24"/> + <field name="GL_VERTEX_ATTRIB_BINDING"/> + <field name="GL_VERTEX_ATTRIB_RELATIVE_OFFSET"/> + <field name="GL_VERTEX_BINDING_BUFFER"/> + <field name="GL_VERTEX_BINDING_DIVISOR"/> + <field name="GL_VERTEX_BINDING_OFFSET"/> + <field name="GL_VERTEX_BINDING_STRIDE"/> + <field name="GL_VERTEX_SHADER_BIT"/> + <field name="GL_WRITE_ONLY"/> + </class> + <class name="android/opengl/GLES31Ext" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="glBlendBarrierKHR()V"/> + <method name="glBlendEquationSeparateiEXT(III)V"/> + <method name="glBlendEquationiEXT(II)V"/> + <method name="glBlendFuncSeparateiEXT(IIIII)V"/> + <method name="glBlendFunciEXT(III)V"/> + <method name="glColorMaskiEXT(IZZZZ)V"/> + <method name="glCopyImageSubDataEXT(IIIIIIIIIIIIIII)V"/> + <method name="glDebugMessageCallbackKHR(Landroid/opengl/GLES31Ext$DebugProcKHR;)V"/> + <method name="glDebugMessageControlKHR(IIIILjava/nio/IntBuffer;Z)V"/> + <method name="glDebugMessageControlKHR(IIII[IIZ)V"/> + <method name="glDebugMessageInsertKHR(IIIILjava/lang/String;)V"/> + <method name="glDisableiEXT(II)V"/> + <method name="glEnableiEXT(II)V"/> + <method name="glFramebufferTextureEXT(IIII)V"/> + <method name="glGetDebugMessageCallbackKHR()Landroid/opengl/GLES31Ext$DebugProcKHR;"/> + <method name="glGetDebugMessageLogKHR(II[II[II[II[II[II[BI)I"/> + <method name="glGetDebugMessageLogKHR(ILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;)[Ljava/lang/String;"/> + <method name="glGetDebugMessageLogKHR(ILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/ByteBuffer;)I"/> + <method name="glGetDebugMessageLogKHR(I[II[II[II[II)[Ljava/lang/String;"/> + <method name="glGetObjectLabelKHR(II)Ljava/lang/String;"/> + <method name="glGetObjectPtrLabelKHR(J)Ljava/lang/String;"/> + <method name="glGetSamplerParameterIivEXT(IILjava/nio/IntBuffer;)V"/> + <method name="glGetSamplerParameterIivEXT(II[II)V"/> + <method name="glGetSamplerParameterIuivEXT(IILjava/nio/IntBuffer;)V"/> + <method name="glGetSamplerParameterIuivEXT(II[II)V"/> + <method name="glGetTexParameterIivEXT(IILjava/nio/IntBuffer;)V"/> + <method name="glGetTexParameterIivEXT(II[II)V"/> + <method name="glGetTexParameterIuivEXT(IILjava/nio/IntBuffer;)V"/> + <method name="glGetTexParameterIuivEXT(II[II)V"/> + <method name="glIsEnablediEXT(II)Z"/> + <method name="glMinSampleShadingOES(F)V"/> + <method name="glObjectLabelKHR(IIILjava/lang/String;)V"/> + <method name="glObjectPtrLabelKHR(JLjava/lang/String;)V"/> + <method name="glPatchParameteriEXT(II)V"/> + <method name="glPopDebugGroupKHR()V"/> + <method name="glPrimitiveBoundingBoxEXT(FFFFFFFF)V"/> + <method name="glPushDebugGroupKHR(IIILjava/lang/String;)V"/> + <method name="glSamplerParameterIivEXT(IILjava/nio/IntBuffer;)V"/> + <method name="glSamplerParameterIivEXT(II[II)V"/> + <method name="glSamplerParameterIuivEXT(IILjava/nio/IntBuffer;)V"/> + <method name="glSamplerParameterIuivEXT(II[II)V"/> + <method name="glTexBufferEXT(III)V"/> + <method name="glTexBufferRangeEXT(IIIII)V"/> + <method name="glTexParameterIivEXT(IILjava/nio/IntBuffer;)V"/> + <method name="glTexParameterIivEXT(II[II)V"/> + <method name="glTexParameterIuivEXT(IILjava/nio/IntBuffer;)V"/> + <method name="glTexParameterIuivEXT(II[II)V"/> + <method name="glTexStorage3DMultisampleOES(IIIIIIZ)V"/> + <field name="GL_BLEND_ADVANCED_COHERENT_KHR"/> + <field name="GL_BUFFER_KHR"/> + <field name="GL_CLAMP_TO_BORDER_EXT"/> + <field name="GL_COLORBURN_KHR"/> + <field name="GL_COLORDODGE_KHR"/> + <field name="GL_COMPRESSED_RGBA_ASTC_10x10_KHR"/> + <field name="GL_COMPRESSED_RGBA_ASTC_10x5_KHR"/> + <field name="GL_COMPRESSED_RGBA_ASTC_10x6_KHR"/> + <field name="GL_COMPRESSED_RGBA_ASTC_10x8_KHR"/> + <field name="GL_COMPRESSED_RGBA_ASTC_12x10_KHR"/> + <field name="GL_COMPRESSED_RGBA_ASTC_12x12_KHR"/> + <field name="GL_COMPRESSED_RGBA_ASTC_4x4_KHR"/> + <field name="GL_COMPRESSED_RGBA_ASTC_5x4_KHR"/> + <field name="GL_COMPRESSED_RGBA_ASTC_5x5_KHR"/> + <field name="GL_COMPRESSED_RGBA_ASTC_6x5_KHR"/> + <field name="GL_COMPRESSED_RGBA_ASTC_6x6_KHR"/> + <field name="GL_COMPRESSED_RGBA_ASTC_8x5_KHR"/> + <field name="GL_COMPRESSED_RGBA_ASTC_8x6_KHR"/> + <field name="GL_COMPRESSED_RGBA_ASTC_8x8_KHR"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR"/> + <field name="GL_CONTEXT_FLAG_DEBUG_BIT_KHR"/> + <field name="GL_DARKEN_KHR"/> + <field name="GL_DEBUG_CALLBACK_FUNCTION_KHR"/> + <field name="GL_DEBUG_CALLBACK_USER_PARAM_KHR"/> + <field name="GL_DEBUG_GROUP_STACK_DEPTH_KHR"/> + <field name="GL_DEBUG_LOGGED_MESSAGES_KHR"/> + <field name="GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR"/> + <field name="GL_DEBUG_OUTPUT_KHR"/> + <field name="GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR"/> + <field name="GL_DEBUG_SEVERITY_HIGH_KHR"/> + <field name="GL_DEBUG_SEVERITY_LOW_KHR"/> + <field name="GL_DEBUG_SEVERITY_MEDIUM_KHR"/> + <field name="GL_DEBUG_SEVERITY_NOTIFICATION_KHR"/> + <field name="GL_DEBUG_SOURCE_API_KHR"/> + <field name="GL_DEBUG_SOURCE_APPLICATION_KHR"/> + <field name="GL_DEBUG_SOURCE_OTHER_KHR"/> + <field name="GL_DEBUG_SOURCE_SHADER_COMPILER_KHR"/> + <field name="GL_DEBUG_SOURCE_THIRD_PARTY_KHR"/> + <field name="GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR"/> + <field name="GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR"/> + <field name="GL_DEBUG_TYPE_ERROR_KHR"/> + <field name="GL_DEBUG_TYPE_MARKER_KHR"/> + <field name="GL_DEBUG_TYPE_OTHER_KHR"/> + <field name="GL_DEBUG_TYPE_PERFORMANCE_KHR"/> + <field name="GL_DEBUG_TYPE_POP_GROUP_KHR"/> + <field name="GL_DEBUG_TYPE_PORTABILITY_KHR"/> + <field name="GL_DEBUG_TYPE_PUSH_GROUP_KHR"/> + <field name="GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR"/> + <field name="GL_DECODE_EXT"/> + <field name="GL_DIFFERENCE_KHR"/> + <field name="GL_EXCLUSION_KHR"/> + <field name="GL_FIRST_VERTEX_CONVENTION_EXT"/> + <field name="GL_FRACTIONAL_EVEN_EXT"/> + <field name="GL_FRACTIONAL_ODD_EXT"/> + <field name="GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES"/> + <field name="GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT"/> + <field name="GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT"/> + <field name="GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT"/> + <field name="GL_GEOMETRY_LINKED_INPUT_TYPE_EXT"/> + <field name="GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT"/> + <field name="GL_GEOMETRY_LINKED_VERTICES_OUT_EXT"/> + <field name="GL_GEOMETRY_SHADER_BIT_EXT"/> + <field name="GL_GEOMETRY_SHADER_EXT"/> + <field name="GL_GEOMETRY_SHADER_INVOCATIONS_EXT"/> + <field name="GL_HARDLIGHT_KHR"/> + <field name="GL_HSL_COLOR_KHR"/> + <field name="GL_HSL_HUE_KHR"/> + <field name="GL_HSL_LUMINOSITY_KHR"/> + <field name="GL_HSL_SATURATION_KHR"/> + <field name="GL_IMAGE_BUFFER_EXT"/> + <field name="GL_IMAGE_CUBE_MAP_ARRAY_EXT"/> + <field name="GL_INT_IMAGE_BUFFER_EXT"/> + <field name="GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT"/> + <field name="GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES"/> + <field name="GL_INT_SAMPLER_BUFFER_EXT"/> + <field name="GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT"/> + <field name="GL_ISOLINES_EXT"/> + <field name="GL_IS_PER_PATCH_EXT"/> + <field name="GL_LAST_VERTEX_CONVENTION_EXT"/> + <field name="GL_LAYER_PROVOKING_VERTEX_EXT"/> + <field name="GL_LIGHTEN_KHR"/> + <field name="GL_LINES_ADJACENCY_EXT"/> + <field name="GL_LINE_STRIP_ADJACENCY_EXT"/> + <field name="GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT"/> + <field name="GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT"/> + <field name="GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT"/> + <field name="GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR"/> + <field name="GL_MAX_DEBUG_LOGGED_MESSAGES_KHR"/> + <field name="GL_MAX_DEBUG_MESSAGE_LENGTH_KHR"/> + <field name="GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES"/> + <field name="GL_MAX_FRAMEBUFFER_LAYERS_EXT"/> + <field name="GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT"/> + <field name="GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT"/> + <field name="GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT"/> + <field name="GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT"/> + <field name="GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT"/> + <field name="GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT"/> + <field name="GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT"/> + <field name="GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT"/> + <field name="GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT"/> + <field name="GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT"/> + <field name="GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT"/> + <field name="GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT"/> + <field name="GL_MAX_LABEL_LENGTH_KHR"/> + <field name="GL_MAX_PATCH_VERTICES_EXT"/> + <field name="GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT"/> + <field name="GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT"/> + <field name="GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT"/> + <field name="GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT"/> + <field name="GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT"/> + <field name="GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT"/> + <field name="GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT"/> + <field name="GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT"/> + <field name="GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT"/> + <field name="GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT"/> + <field name="GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT"/> + <field name="GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT"/> + <field name="GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT"/> + <field name="GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT"/> + <field name="GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT"/> + <field name="GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT"/> + <field name="GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT"/> + <field name="GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT"/> + <field name="GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT"/> + <field name="GL_MAX_TESS_GEN_LEVEL_EXT"/> + <field name="GL_MAX_TESS_PATCH_COMPONENTS_EXT"/> + <field name="GL_MAX_TEXTURE_BUFFER_SIZE_EXT"/> + <field name="GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES"/> + <field name="GL_MIN_SAMPLE_SHADING_VALUE_OES"/> + <field name="GL_MULTIPLY_KHR"/> + <field name="GL_OVERLAY_KHR"/> + <field name="GL_PATCHES_EXT"/> + <field name="GL_PATCH_VERTICES_EXT"/> + <field name="GL_PRIMITIVES_GENERATED_EXT"/> + <field name="GL_PRIMITIVE_BOUNDING_BOX_EXT"/> + <field name="GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED"/> + <field name="GL_PROGRAM_KHR"/> + <field name="GL_QUADS_EXT"/> + <field name="GL_QUERY_KHR"/> + <field name="GL_REFERENCED_BY_GEOMETRY_SHADER_EXT"/> + <field name="GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT"/> + <field name="GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT"/> + <field name="GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES"/> + <field name="GL_SAMPLER_BUFFER_EXT"/> + <field name="GL_SAMPLER_CUBE_MAP_ARRAY_EXT"/> + <field name="GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT"/> + <field name="GL_SAMPLER_KHR"/> + <field name="GL_SAMPLE_SHADING_OES"/> + <field name="GL_SCREEN_KHR"/> + <field name="GL_SHADER_KHR"/> + <field name="GL_SKIP_DECODE_EXT"/> + <field name="GL_SOFTLIGHT_KHR"/> + <field name="GL_STACK_OVERFLOW_KHR"/> + <field name="GL_STACK_UNDERFLOW_KHR"/> + <field name="GL_STENCIL_INDEX8_OES"/> + <field name="GL_STENCIL_INDEX_OES"/> + <field name="GL_TESS_CONTROL_OUTPUT_VERTICES_EXT"/> + <field name="GL_TESS_CONTROL_SHADER_BIT_EXT"/> + <field name="GL_TESS_CONTROL_SHADER_EXT"/> + <field name="GL_TESS_EVALUATION_SHADER_BIT_EXT"/> + <field name="GL_TESS_EVALUATION_SHADER_EXT"/> + <field name="GL_TESS_GEN_MODE_EXT"/> + <field name="GL_TESS_GEN_POINT_MODE_EXT"/> + <field name="GL_TESS_GEN_SPACING_EXT"/> + <field name="GL_TESS_GEN_VERTEX_ORDER_EXT"/> + <field name="GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES"/> + <field name="GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES"/> + <field name="GL_TEXTURE_BINDING_BUFFER_EXT"/> + <field name="GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT"/> + <field name="GL_TEXTURE_BORDER_COLOR_EXT"/> + <field name="GL_TEXTURE_BUFFER_BINDING_EXT"/> + <field name="GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT"/> + <field name="GL_TEXTURE_BUFFER_EXT"/> + <field name="GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT"/> + <field name="GL_TEXTURE_BUFFER_OFFSET_EXT"/> + <field name="GL_TEXTURE_BUFFER_SIZE_EXT"/> + <field name="GL_TEXTURE_CUBE_MAP_ARRAY_EXT"/> + <field name="GL_TEXTURE_SRGB_DECODE_EXT"/> + <field name="GL_TRIANGLES_ADJACENCY_EXT"/> + <field name="GL_TRIANGLE_STRIP_ADJACENCY_EXT"/> + <field name="GL_UNDEFINED_VERTEX_EXT"/> + <field name="GL_UNSIGNED_INT_IMAGE_BUFFER_EXT"/> + <field name="GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT"/> + <field name="GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES"/> + <field name="GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT"/> + <field name="GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT"/> + <field name="GL_VERTEX_ARRAY_KHR"/> + </class> + <class name="android/opengl/GLES31Ext$DebugProcKHR" since="21"> + <extends name="java/lang/Object"/> + <method name="onMessage(IIIILjava/lang/String;)V"/> + </class> + <class name="android/opengl/GLES32" since="24"> + <extends name="android/opengl/GLES31"/> + <method name="<init>()V"/> + <method name="glBlendBarrier()V"/> + <method name="glBlendEquationSeparatei(III)V"/> + <method name="glBlendEquationi(II)V"/> + <method name="glBlendFuncSeparatei(IIIII)V"/> + <method name="glBlendFunci(III)V"/> + <method name="glColorMaski(IZZZZ)V"/> + <method name="glCopyImageSubData(IIIIIIIIIIIIIII)V"/> + <method name="glDebugMessageCallback(Landroid/opengl/GLES32$DebugProc;)V"/> + <method name="glDebugMessageControl(IIIILjava/nio/IntBuffer;Z)V"/> + <method name="glDebugMessageControl(IIII[IIZ)V"/> + <method name="glDebugMessageInsert(IIIIILjava/lang/String;)V"/> + <method name="glDisablei(II)V"/> + <method name="glDrawElementsBaseVertex(IIILjava/nio/Buffer;I)V"/> + <method name="glDrawElementsInstancedBaseVertex(IIIIII)V"/> + <method name="glDrawElementsInstancedBaseVertex(IIILjava/nio/Buffer;II)V"/> + <method name="glDrawRangeElementsBaseVertex(IIIIILjava/nio/Buffer;I)V"/> + <method name="glEnablei(II)V"/> + <method name="glFramebufferTexture(IIII)V"/> + <method name="glGetDebugMessageLog(II[II[II[II[II[II[BI)I"/> + <method name="glGetDebugMessageLog(ILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;)[Ljava/lang/String;"/> + <method name="glGetDebugMessageLog(ILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/ByteBuffer;)I"/> + <method name="glGetDebugMessageLog(I[II[II[II[II)[Ljava/lang/String;"/> + <method name="glGetGraphicsResetStatus()I"/> + <method name="glGetObjectLabel(II)Ljava/lang/String;"/> + <method name="glGetObjectPtrLabel(J)Ljava/lang/String;"/> + <method name="glGetPointerv(I)J"/> + <method name="glGetSamplerParameterIiv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetSamplerParameterIiv(II[II)V"/> + <method name="glGetSamplerParameterIuiv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetSamplerParameterIuiv(II[II)V"/> + <method name="glGetTexParameterIiv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetTexParameterIiv(II[II)V"/> + <method name="glGetTexParameterIuiv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetTexParameterIuiv(II[II)V"/> + <method name="glGetnUniformfv(IIILjava/nio/FloatBuffer;)V"/> + <method name="glGetnUniformfv(III[FI)V"/> + <method name="glGetnUniformiv(IIILjava/nio/IntBuffer;)V"/> + <method name="glGetnUniformiv(III[II)V"/> + <method name="glGetnUniformuiv(IIILjava/nio/IntBuffer;)V"/> + <method name="glGetnUniformuiv(III[II)V"/> + <method name="glIsEnabledi(II)Z"/> + <method name="glMinSampleShading(F)V"/> + <method name="glObjectLabel(IIILjava/lang/String;)V"/> + <method name="glObjectPtrLabel(JLjava/lang/String;)V"/> + <method name="glPatchParameteri(II)V"/> + <method name="glPopDebugGroup()V"/> + <method name="glPrimitiveBoundingBox(FFFFFFFF)V"/> + <method name="glPushDebugGroup(IIILjava/lang/String;)V"/> + <method name="glReadnPixels(IIIIIIILjava/nio/Buffer;)V"/> + <method name="glSamplerParameterIiv(IILjava/nio/IntBuffer;)V"/> + <method name="glSamplerParameterIiv(II[II)V"/> + <method name="glSamplerParameterIuiv(IILjava/nio/IntBuffer;)V"/> + <method name="glSamplerParameterIuiv(II[II)V"/> + <method name="glTexBuffer(III)V"/> + <method name="glTexBufferRange(IIIII)V"/> + <method name="glTexParameterIiv(IILjava/nio/IntBuffer;)V"/> + <method name="glTexParameterIiv(II[II)V"/> + <method name="glTexParameterIuiv(IILjava/nio/IntBuffer;)V"/> + <method name="glTexParameterIuiv(II[II)V"/> + <method name="glTexStorage3DMultisample(IIIIIIZ)V"/> + <field name="GL_BUFFER"/> + <field name="GL_CLAMP_TO_BORDER"/> + <field name="GL_COLORBURN"/> + <field name="GL_COLORDODGE"/> + <field name="GL_COMPRESSED_RGBA_ASTC_10x10"/> + <field name="GL_COMPRESSED_RGBA_ASTC_10x5"/> + <field name="GL_COMPRESSED_RGBA_ASTC_10x6"/> + <field name="GL_COMPRESSED_RGBA_ASTC_10x8"/> + <field name="GL_COMPRESSED_RGBA_ASTC_12x10"/> + <field name="GL_COMPRESSED_RGBA_ASTC_12x12"/> + <field name="GL_COMPRESSED_RGBA_ASTC_4x4"/> + <field name="GL_COMPRESSED_RGBA_ASTC_5x4"/> + <field name="GL_COMPRESSED_RGBA_ASTC_5x5"/> + <field name="GL_COMPRESSED_RGBA_ASTC_6x5"/> + <field name="GL_COMPRESSED_RGBA_ASTC_6x6"/> + <field name="GL_COMPRESSED_RGBA_ASTC_8x5"/> + <field name="GL_COMPRESSED_RGBA_ASTC_8x6"/> + <field name="GL_COMPRESSED_RGBA_ASTC_8x8"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6"/> + <field name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8"/> + <field name="GL_CONTEXT_FLAGS"/> + <field name="GL_CONTEXT_FLAG_DEBUG_BIT"/> + <field name="GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT"/> + <field name="GL_CONTEXT_LOST"/> + <field name="GL_DARKEN"/> + <field name="GL_DEBUG_CALLBACK_FUNCTION"/> + <field name="GL_DEBUG_CALLBACK_USER_PARAM"/> + <field name="GL_DEBUG_GROUP_STACK_DEPTH"/> + <field name="GL_DEBUG_LOGGED_MESSAGES"/> + <field name="GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH"/> + <field name="GL_DEBUG_OUTPUT"/> + <field name="GL_DEBUG_OUTPUT_SYNCHRONOUS"/> + <field name="GL_DEBUG_SEVERITY_HIGH"/> + <field name="GL_DEBUG_SEVERITY_LOW"/> + <field name="GL_DEBUG_SEVERITY_MEDIUM"/> + <field name="GL_DEBUG_SEVERITY_NOTIFICATION"/> + <field name="GL_DEBUG_SOURCE_API"/> + <field name="GL_DEBUG_SOURCE_APPLICATION"/> + <field name="GL_DEBUG_SOURCE_OTHER"/> + <field name="GL_DEBUG_SOURCE_SHADER_COMPILER"/> + <field name="GL_DEBUG_SOURCE_THIRD_PARTY"/> + <field name="GL_DEBUG_SOURCE_WINDOW_SYSTEM"/> + <field name="GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR"/> + <field name="GL_DEBUG_TYPE_ERROR"/> + <field name="GL_DEBUG_TYPE_MARKER"/> + <field name="GL_DEBUG_TYPE_OTHER"/> + <field name="GL_DEBUG_TYPE_PERFORMANCE"/> + <field name="GL_DEBUG_TYPE_POP_GROUP"/> + <field name="GL_DEBUG_TYPE_PORTABILITY"/> + <field name="GL_DEBUG_TYPE_PUSH_GROUP"/> + <field name="GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR"/> + <field name="GL_DIFFERENCE"/> + <field name="GL_EXCLUSION"/> + <field name="GL_FIRST_VERTEX_CONVENTION"/> + <field name="GL_FRACTIONAL_EVEN"/> + <field name="GL_FRACTIONAL_ODD"/> + <field name="GL_FRAGMENT_INTERPOLATION_OFFSET_BITS"/> + <field name="GL_FRAMEBUFFER_ATTACHMENT_LAYERED"/> + <field name="GL_FRAMEBUFFER_DEFAULT_LAYERS"/> + <field name="GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS"/> + <field name="GL_GEOMETRY_INPUT_TYPE"/> + <field name="GL_GEOMETRY_OUTPUT_TYPE"/> + <field name="GL_GEOMETRY_SHADER"/> + <field name="GL_GEOMETRY_SHADER_BIT"/> + <field name="GL_GEOMETRY_SHADER_INVOCATIONS"/> + <field name="GL_GEOMETRY_VERTICES_OUT"/> + <field name="GL_GUILTY_CONTEXT_RESET"/> + <field name="GL_HARDLIGHT"/> + <field name="GL_HSL_COLOR"/> + <field name="GL_HSL_HUE"/> + <field name="GL_HSL_LUMINOSITY"/> + <field name="GL_HSL_SATURATION"/> + <field name="GL_IMAGE_BUFFER"/> + <field name="GL_IMAGE_CUBE_MAP_ARRAY"/> + <field name="GL_INNOCENT_CONTEXT_RESET"/> + <field name="GL_INT_IMAGE_BUFFER"/> + <field name="GL_INT_IMAGE_CUBE_MAP_ARRAY"/> + <field name="GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY"/> + <field name="GL_INT_SAMPLER_BUFFER"/> + <field name="GL_INT_SAMPLER_CUBE_MAP_ARRAY"/> + <field name="GL_ISOLINES"/> + <field name="GL_IS_PER_PATCH"/> + <field name="GL_LAST_VERTEX_CONVENTION"/> + <field name="GL_LAYER_PROVOKING_VERTEX"/> + <field name="GL_LIGHTEN"/> + <field name="GL_LINES_ADJACENCY"/> + <field name="GL_LINE_STRIP_ADJACENCY"/> + <field name="GL_LOSE_CONTEXT_ON_RESET"/> + <field name="GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS"/> + <field name="GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS"/> + <field name="GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS"/> + <field name="GL_MAX_DEBUG_GROUP_STACK_DEPTH"/> + <field name="GL_MAX_DEBUG_LOGGED_MESSAGES"/> + <field name="GL_MAX_DEBUG_MESSAGE_LENGTH"/> + <field name="GL_MAX_FRAGMENT_INTERPOLATION_OFFSET"/> + <field name="GL_MAX_FRAMEBUFFER_LAYERS"/> + <field name="GL_MAX_GEOMETRY_ATOMIC_COUNTERS"/> + <field name="GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS"/> + <field name="GL_MAX_GEOMETRY_IMAGE_UNIFORMS"/> + <field name="GL_MAX_GEOMETRY_INPUT_COMPONENTS"/> + <field name="GL_MAX_GEOMETRY_OUTPUT_COMPONENTS"/> + <field name="GL_MAX_GEOMETRY_OUTPUT_VERTICES"/> + <field name="GL_MAX_GEOMETRY_SHADER_INVOCATIONS"/> + <field name="GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS"/> + <field name="GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS"/> + <field name="GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS"/> + <field name="GL_MAX_GEOMETRY_UNIFORM_BLOCKS"/> + <field name="GL_MAX_GEOMETRY_UNIFORM_COMPONENTS"/> + <field name="GL_MAX_LABEL_LENGTH"/> + <field name="GL_MAX_PATCH_VERTICES"/> + <field name="GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS"/> + <field name="GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS"/> + <field name="GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS"/> + <field name="GL_MAX_TESS_CONTROL_INPUT_COMPONENTS"/> + <field name="GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS"/> + <field name="GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS"/> + <field name="GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS"/> + <field name="GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS"/> + <field name="GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS"/> + <field name="GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS"/> + <field name="GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS"/> + <field name="GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS"/> + <field name="GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS"/> + <field name="GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS"/> + <field name="GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS"/> + <field name="GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS"/> + <field name="GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS"/> + <field name="GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS"/> + <field name="GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS"/> + <field name="GL_MAX_TESS_GEN_LEVEL"/> + <field name="GL_MAX_TESS_PATCH_COMPONENTS"/> + <field name="GL_MAX_TEXTURE_BUFFER_SIZE"/> + <field name="GL_MIN_FRAGMENT_INTERPOLATION_OFFSET"/> + <field name="GL_MIN_SAMPLE_SHADING_VALUE"/> + <field name="GL_MULTIPLY"/> + <field name="GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY"/> + <field name="GL_MULTISAMPLE_LINE_WIDTH_RANGE"/> + <field name="GL_NO_RESET_NOTIFICATION"/> + <field name="GL_OVERLAY"/> + <field name="GL_PATCHES"/> + <field name="GL_PATCH_VERTICES"/> + <field name="GL_PRIMITIVES_GENERATED"/> + <field name="GL_PRIMITIVE_BOUNDING_BOX"/> + <field name="GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED"/> + <field name="GL_PROGRAM"/> + <field name="GL_PROGRAM_PIPELINE"/> + <field name="GL_QUADS"/> + <field name="GL_QUERY"/> + <field name="GL_REFERENCED_BY_GEOMETRY_SHADER"/> + <field name="GL_REFERENCED_BY_TESS_CONTROL_SHADER"/> + <field name="GL_REFERENCED_BY_TESS_EVALUATION_SHADER"/> + <field name="GL_RESET_NOTIFICATION_STRATEGY"/> + <field name="GL_SAMPLER"/> + <field name="GL_SAMPLER_2D_MULTISAMPLE_ARRAY"/> + <field name="GL_SAMPLER_BUFFER"/> + <field name="GL_SAMPLER_CUBE_MAP_ARRAY"/> + <field name="GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW"/> + <field name="GL_SAMPLE_SHADING"/> + <field name="GL_SCREEN"/> + <field name="GL_SHADER"/> + <field name="GL_SOFTLIGHT"/> + <field name="GL_STACK_OVERFLOW"/> + <field name="GL_STACK_UNDERFLOW"/> + <field name="GL_TESS_CONTROL_OUTPUT_VERTICES"/> + <field name="GL_TESS_CONTROL_SHADER"/> + <field name="GL_TESS_CONTROL_SHADER_BIT"/> + <field name="GL_TESS_EVALUATION_SHADER"/> + <field name="GL_TESS_EVALUATION_SHADER_BIT"/> + <field name="GL_TESS_GEN_MODE"/> + <field name="GL_TESS_GEN_POINT_MODE"/> + <field name="GL_TESS_GEN_SPACING"/> + <field name="GL_TESS_GEN_VERTEX_ORDER"/> + <field name="GL_TEXTURE_2D_MULTISAMPLE_ARRAY"/> + <field name="GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY"/> + <field name="GL_TEXTURE_BINDING_BUFFER"/> + <field name="GL_TEXTURE_BINDING_CUBE_MAP_ARRAY"/> + <field name="GL_TEXTURE_BORDER_COLOR"/> + <field name="GL_TEXTURE_BUFFER"/> + <field name="GL_TEXTURE_BUFFER_BINDING"/> + <field name="GL_TEXTURE_BUFFER_DATA_STORE_BINDING"/> + <field name="GL_TEXTURE_BUFFER_OFFSET"/> + <field name="GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT"/> + <field name="GL_TEXTURE_BUFFER_SIZE"/> + <field name="GL_TEXTURE_CUBE_MAP_ARRAY"/> + <field name="GL_TRIANGLES_ADJACENCY"/> + <field name="GL_TRIANGLE_STRIP_ADJACENCY"/> + <field name="GL_UNDEFINED_VERTEX"/> + <field name="GL_UNKNOWN_CONTEXT_RESET"/> + <field name="GL_UNSIGNED_INT_IMAGE_BUFFER"/> + <field name="GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY"/> + <field name="GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY"/> + <field name="GL_UNSIGNED_INT_SAMPLER_BUFFER"/> + <field name="GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY"/> + <field name="GL_VERTEX_ARRAY"/> + </class> + <class name="android/opengl/GLES32$DebugProc" since="24"> + <extends name="java/lang/Object"/> + <method name="onMessage(IIIILjava/lang/String;)V"/> + </class> + <class name="android/opengl/GLException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>(I)V"/> + <method name="<init>(ILjava/lang/String;)V"/> + </class> + <class name="android/opengl/GLSurfaceView" since="3"> + <extends name="android/view/SurfaceView"/> + <implements name="android/view/SurfaceHolder$Callback" removed="24"/> + <implements name="android/view/SurfaceHolder$Callback2" since="24"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="getDebugFlags()I"/> + <method name="getPreserveEGLContextOnPause()Z" since="11"/> + <method name="getRenderMode()I"/> + <method name="onPause()V"/> + <method name="onResume()V"/> + <method name="queueEvent(Ljava/lang/Runnable;)V"/> + <method name="requestRender()V"/> + <method name="setDebugFlags(I)V"/> + <method name="setEGLConfigChooser(IIIIII)V"/> + <method name="setEGLConfigChooser(Landroid/opengl/GLSurfaceView$EGLConfigChooser;)V"/> + <method name="setEGLConfigChooser(Z)V"/> + <method name="setEGLContextClientVersion(I)V" since="8"/> + <method name="setEGLContextFactory(Landroid/opengl/GLSurfaceView$EGLContextFactory;)V" since="5"/> + <method name="setEGLWindowSurfaceFactory(Landroid/opengl/GLSurfaceView$EGLWindowSurfaceFactory;)V" since="5"/> + <method name="setGLWrapper(Landroid/opengl/GLSurfaceView$GLWrapper;)V"/> + <method name="setPreserveEGLContextOnPause(Z)V" since="11"/> + <method name="setRenderMode(I)V"/> + <method name="setRenderer(Landroid/opengl/GLSurfaceView$Renderer;)V"/> + <field name="DEBUG_CHECK_GL_ERROR"/> + <field name="DEBUG_LOG_GL_CALLS"/> + <field name="RENDERMODE_CONTINUOUSLY"/> + <field name="RENDERMODE_WHEN_DIRTY"/> + </class> + <class name="android/opengl/GLSurfaceView$EGLConfigChooser" since="3"> + <extends name="java/lang/Object"/> + <method name="chooseConfig(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;)Ljavax/microedition/khronos/egl/EGLConfig;"/> + </class> + <class name="android/opengl/GLSurfaceView$EGLContextFactory" since="5"> + <extends name="java/lang/Object"/> + <method name="createContext(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;)Ljavax/microedition/khronos/egl/EGLContext;"/> + <method name="destroyContext(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLContext;)V"/> + </class> + <class name="android/opengl/GLSurfaceView$EGLWindowSurfaceFactory" since="5"> + <extends name="java/lang/Object"/> + <method name="createWindowSurface(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;Ljava/lang/Object;)Ljavax/microedition/khronos/egl/EGLSurface;"/> + <method name="destroySurface(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLSurface;)V"/> + </class> + <class name="android/opengl/GLSurfaceView$GLWrapper" since="3"> + <extends name="java/lang/Object"/> + <method name="wrap(Ljavax/microedition/khronos/opengles/GL;)Ljavax/microedition/khronos/opengles/GL;"/> + </class> + <class name="android/opengl/GLSurfaceView$Renderer" since="3"> + <extends name="java/lang/Object"/> + <method name="onDrawFrame(Ljavax/microedition/khronos/opengles/GL10;)V"/> + <method name="onSurfaceChanged(Ljavax/microedition/khronos/opengles/GL10;II)V"/> + <method name="onSurfaceCreated(Ljavax/microedition/khronos/opengles/GL10;Ljavax/microedition/khronos/egl/EGLConfig;)V"/> + </class> + <class name="android/opengl/GLU" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="gluErrorString(I)Ljava/lang/String;"/> + <method name="gluLookAt(Ljavax/microedition/khronos/opengles/GL10;FFFFFFFFF)V"/> + <method name="gluOrtho2D(Ljavax/microedition/khronos/opengles/GL10;FFFF)V"/> + <method name="gluPerspective(Ljavax/microedition/khronos/opengles/GL10;FFFF)V"/> + <method name="gluProject(FFF[FI[FI[II[FI)I"/> + <method name="gluUnProject(FFF[FI[FI[II[FI)I"/> + </class> + <class name="android/opengl/GLUtils" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getEGLErrorString(I)Ljava/lang/String;" since="14"/> + <method name="getInternalFormat(Landroid/graphics/Bitmap;)I"/> + <method name="getType(Landroid/graphics/Bitmap;)I"/> + <method name="texImage2D(IIILandroid/graphics/Bitmap;I)V"/> + <method name="texImage2D(IIILandroid/graphics/Bitmap;II)V"/> + <method name="texImage2D(IILandroid/graphics/Bitmap;I)V"/> + <method name="texSubImage2D(IIIILandroid/graphics/Bitmap;)V"/> + <method name="texSubImage2D(IIIILandroid/graphics/Bitmap;II)V"/> + </class> + <class name="android/opengl/Matrix" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V" deprecated="19"/> + <method name="frustumM([FIFFFFFF)V"/> + <method name="invertM([FI[FI)Z"/> + <method name="length(FFF)F"/> + <method name="multiplyMM([FI[FI[FI)V"/> + <method name="multiplyMV([FI[FI[FI)V"/> + <method name="orthoM([FIFFFFFF)V"/> + <method name="perspectiveM([FIFFFF)V" since="14"/> + <method name="rotateM([FIFFFF)V"/> + <method name="rotateM([FI[FIFFFF)V"/> + <method name="scaleM([FIFFF)V"/> + <method name="scaleM([FI[FIFFF)V"/> + <method name="setIdentityM([FI)V"/> + <method name="setLookAtM([FIFFFFFFFFF)V" since="8"/> + <method name="setRotateEulerM([FIFFF)V"/> + <method name="setRotateM([FIFFFF)V"/> + <method name="translateM([FIFFF)V"/> + <method name="translateM([FI[FIFFF)V"/> + <method name="transposeM([FI[FI)V"/> + </class> + <class name="android/opengl/Visibility" since="3"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="computeBoundingSphere([FII[FI)V"/> + <method name="frustumCullSpheres([FI[FII[III)I"/> + <method name="visibilityTest([FI[FI[CII)I"/> + </class> + <class name="android/os/AsyncTask" since="3"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="cancel(Z)Z"/> + <method name="doInBackground([Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="execute(Ljava/lang/Runnable;)V" since="11"/> + <method name="execute([Ljava/lang/Object;)Landroid/os/AsyncTask;"/> + <method name="executeOnExecutor(Ljava/util/concurrent/Executor;[Ljava/lang/Object;)Landroid/os/AsyncTask;" since="11"/> + <method name="get()Ljava/lang/Object;"/> + <method name="get(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;"/> + <method name="getStatus()Landroid/os/AsyncTask$Status;"/> + <method name="isCancelled()Z"/> + <method name="onCancelled()V"/> + <method name="onCancelled(Ljava/lang/Object;)V" since="11"/> + <method name="onPostExecute(Ljava/lang/Object;)V"/> + <method name="onPreExecute()V"/> + <method name="onProgressUpdate([Ljava/lang/Object;)V"/> + <method name="publishProgress([Ljava/lang/Object;)V"/> + <field name="SERIAL_EXECUTOR" since="11"/> + <field name="THREAD_POOL_EXECUTOR" since="11"/> + </class> + <class name="android/os/AsyncTask$Status" since="3"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/os/AsyncTask$Status;"/> + <method name="values()[Landroid/os/AsyncTask$Status;"/> + <field name="FINISHED"/> + <field name="PENDING"/> + <field name="RUNNING"/> + </class> + <class name="android/os/BadParcelableException" since="1"> + <extends name="android/util/AndroidRuntimeException"/> + <method name="<init>(Ljava/lang/Exception;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/os/BaseBundle" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="clear()V"/> + <method name="containsKey(Ljava/lang/String;)Z"/> + <method name="get(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="getBoolean(Ljava/lang/String;)Z" since="22"/> + <method name="getBoolean(Ljava/lang/String;Z)Z" since="22"/> + <method name="getBooleanArray(Ljava/lang/String;)[Z" since="22"/> + <method name="getDouble(Ljava/lang/String;)D"/> + <method name="getDouble(Ljava/lang/String;D)D"/> + <method name="getDoubleArray(Ljava/lang/String;)[D"/> + <method name="getInt(Ljava/lang/String;)I"/> + <method name="getInt(Ljava/lang/String;I)I"/> + <method name="getIntArray(Ljava/lang/String;)[I"/> + <method name="getLong(Ljava/lang/String;)J"/> + <method name="getLong(Ljava/lang/String;J)J"/> + <method name="getLongArray(Ljava/lang/String;)[J"/> + <method name="getString(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getStringArray(Ljava/lang/String;)[Ljava/lang/String;"/> + <method name="isEmpty()Z"/> + <method name="keySet()Ljava/util/Set;"/> + <method name="putAll(Landroid/os/PersistableBundle;)V"/> + <method name="putBoolean(Ljava/lang/String;Z)V" since="22"/> + <method name="putBooleanArray(Ljava/lang/String;[Z)V" since="22"/> + <method name="putDouble(Ljava/lang/String;D)V"/> + <method name="putDoubleArray(Ljava/lang/String;[D)V"/> + <method name="putInt(Ljava/lang/String;I)V"/> + <method name="putIntArray(Ljava/lang/String;[I)V"/> + <method name="putLong(Ljava/lang/String;J)V"/> + <method name="putLongArray(Ljava/lang/String;[J)V"/> + <method name="putString(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="putStringArray(Ljava/lang/String;[Ljava/lang/String;)V"/> + <method name="remove(Ljava/lang/String;)V"/> + <method name="size()I"/> + </class> + <class name="android/os/BatteryManager" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getIntProperty(I)I" since="21"/> + <method name="getLongProperty(I)J" since="21"/> + <method name="isCharging()Z" since="23"/> + <field name="ACTION_CHARGING" since="23"/> + <field name="ACTION_DISCHARGING" since="23"/> + <field name="BATTERY_HEALTH_COLD" since="11"/> + <field name="BATTERY_HEALTH_DEAD"/> + <field name="BATTERY_HEALTH_GOOD"/> + <field name="BATTERY_HEALTH_OVERHEAT"/> + <field name="BATTERY_HEALTH_OVER_VOLTAGE"/> + <field name="BATTERY_HEALTH_UNKNOWN"/> + <field name="BATTERY_HEALTH_UNSPECIFIED_FAILURE"/> + <field name="BATTERY_PLUGGED_AC"/> + <field name="BATTERY_PLUGGED_USB"/> + <field name="BATTERY_PLUGGED_WIRELESS" since="17"/> + <field name="BATTERY_PROPERTY_CAPACITY" since="21"/> + <field name="BATTERY_PROPERTY_CHARGE_COUNTER" since="21"/> + <field name="BATTERY_PROPERTY_CURRENT_AVERAGE" since="21"/> + <field name="BATTERY_PROPERTY_CURRENT_NOW" since="21"/> + <field name="BATTERY_PROPERTY_ENERGY_COUNTER" since="21"/> + <field name="BATTERY_PROPERTY_STATUS" since="26"/> + <field name="BATTERY_STATUS_CHARGING"/> + <field name="BATTERY_STATUS_DISCHARGING"/> + <field name="BATTERY_STATUS_FULL"/> + <field name="BATTERY_STATUS_NOT_CHARGING"/> + <field name="BATTERY_STATUS_UNKNOWN"/> + <field name="EXTRA_HEALTH" since="5"/> + <field name="EXTRA_ICON_SMALL" since="5"/> + <field name="EXTRA_LEVEL" since="5"/> + <field name="EXTRA_PLUGGED" since="5"/> + <field name="EXTRA_PRESENT" since="5"/> + <field name="EXTRA_SCALE" since="5"/> + <field name="EXTRA_STATUS" since="5"/> + <field name="EXTRA_TECHNOLOGY" since="5"/> + <field name="EXTRA_TEMPERATURE" since="5"/> + <field name="EXTRA_VOLTAGE" since="5"/> + </class> + <class name="android/os/Binder" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/IBinder"/> + <method name="<init>()V"/> + <method name="attachInterface(Landroid/os/IInterface;Ljava/lang/String;)V"/> + <method name="clearCallingIdentity()J"/> + <method name="dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V"/> + <method name="flushPendingCommands()V"/> + <method name="getCallingPid()I"/> + <method name="getCallingUid()I"/> + <method name="getCallingUserHandle()Landroid/os/UserHandle;" since="17"/> + <method name="joinThreadPool()V"/> + <method name="onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z"/> + <method name="restoreCallingIdentity(J)V"/> + </class> + <class name="android/os/Build" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getRadioVersion()Ljava/lang/String;" since="14"/> + <method name="getSerial()Ljava/lang/String;" since="26"/> + <field name="BOARD"/> + <field name="BOOTLOADER" since="8"/> + <field name="BRAND"/> + <field name="CPU_ABI" since="4" deprecated="21"/> + <field name="CPU_ABI2" since="8" deprecated="21"/> + <field name="DEVICE"/> + <field name="DISPLAY" since="3"/> + <field name="FINGERPRINT"/> + <field name="HARDWARE" since="8"/> + <field name="HOST"/> + <field name="ID"/> + <field name="MANUFACTURER" since="4"/> + <field name="MODEL"/> + <field name="PRODUCT"/> + <field name="RADIO" since="8" deprecated="16"/> + <field name="SERIAL" since="9" deprecated="26"/> + <field name="SUPPORTED_32_BIT_ABIS" since="21"/> + <field name="SUPPORTED_64_BIT_ABIS" since="21"/> + <field name="SUPPORTED_ABIS" since="21"/> + <field name="TAGS"/> + <field name="TIME"/> + <field name="TYPE"/> + <field name="UNKNOWN" since="8"/> + <field name="USER"/> + </class> + <class name="android/os/Build$VERSION" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="BASE_OS" since="23"/> + <field name="CODENAME" since="4"/> + <field name="INCREMENTAL"/> + <field name="PREVIEW_SDK_INT" since="23"/> + <field name="RELEASE"/> + <field name="SDK" deprecated="16"/> + <field name="SDK_INT" since="4"/> + <field name="SECURITY_PATCH" since="23"/> + </class> + <class name="android/os/Build$VERSION_CODES" since="4"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="BASE"/> + <field name="BASE_1_1"/> + <field name="CUPCAKE"/> + <field name="CUR_DEVELOPMENT"/> + <field name="DONUT"/> + <field name="ECLAIR" since="5"/> + <field name="ECLAIR_0_1" since="6"/> + <field name="ECLAIR_MR1" since="7"/> + <field name="FROYO" since="8"/> + <field name="GINGERBREAD" since="9"/> + <field name="GINGERBREAD_MR1" since="10"/> + <field name="HONEYCOMB" since="11"/> + <field name="HONEYCOMB_MR1" since="12"/> + <field name="HONEYCOMB_MR2" since="13"/> + <field name="ICE_CREAM_SANDWICH" since="14"/> + <field name="ICE_CREAM_SANDWICH_MR1" since="15"/> + <field name="JELLY_BEAN" since="16"/> + <field name="JELLY_BEAN_MR1" since="17"/> + <field name="JELLY_BEAN_MR2" since="18"/> + <field name="KITKAT" since="19"/> + <field name="KITKAT_WATCH" since="20"/> + <field name="L" since="21" removed="22"/> + <field name="LOLLIPOP" since="21"/> + <field name="LOLLIPOP_MR1" since="22"/> + <field name="M" since="23"/> + <field name="N" since="24"/> + <field name="N_MR1" since="25"/> + <field name="O" since="26"/> + </class> + <class name="android/os/Bundle" since="1"> + <extends name="android/os/BaseBundle" since="21"/> + <extends name="java/lang/Object" removed="21"/> + <implements name="android/os/Parcelable"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(Landroid/os/Bundle;)V"/> + <method name="<init>(Landroid/os/PersistableBundle;)V" since="21"/> + <method name="<init>(Ljava/lang/ClassLoader;)V"/> + <method name="clear()V"/> + <method name="containsKey(Ljava/lang/String;)Z" removed="21"/> + <method name="deepCopy()Landroid/os/Bundle;" since="26"/> + <method name="get(Ljava/lang/String;)Ljava/lang/Object;" removed="21"/> + <method name="getBinder(Ljava/lang/String;)Landroid/os/IBinder;" since="18"/> + <method name="getBoolean(Ljava/lang/String;)Z" removed="22"/> + <method name="getBoolean(Ljava/lang/String;Z)Z" removed="22"/> + <method name="getBooleanArray(Ljava/lang/String;)[Z" removed="22"/> + <method name="getBundle(Ljava/lang/String;)Landroid/os/Bundle;"/> + <method name="getByte(Ljava/lang/String;)B"/> + <method name="getByte(Ljava/lang/String;B)Ljava/lang/Byte;"/> + <method name="getByteArray(Ljava/lang/String;)[B"/> + <method name="getChar(Ljava/lang/String;)C"/> + <method name="getChar(Ljava/lang/String;C)C"/> + <method name="getCharArray(Ljava/lang/String;)[C"/> + <method name="getCharSequence(Ljava/lang/String;)Ljava/lang/CharSequence;"/> + <method name="getCharSequence(Ljava/lang/String;Ljava/lang/CharSequence;)Ljava/lang/CharSequence;" since="12"/> + <method name="getCharSequenceArray(Ljava/lang/String;)[Ljava/lang/CharSequence;" since="8"/> + <method name="getCharSequenceArrayList(Ljava/lang/String;)Ljava/util/ArrayList;" since="8"/> + <method name="getClassLoader()Ljava/lang/ClassLoader;" since="11"/> + <method name="getDouble(Ljava/lang/String;)D" removed="21"/> + <method name="getDouble(Ljava/lang/String;D)D" removed="21"/> + <method name="getDoubleArray(Ljava/lang/String;)[D" removed="21"/> + <method name="getFloat(Ljava/lang/String;)F"/> + <method name="getFloat(Ljava/lang/String;F)F"/> + <method name="getFloatArray(Ljava/lang/String;)[F"/> + <method name="getInt(Ljava/lang/String;)I" removed="21"/> + <method name="getInt(Ljava/lang/String;I)I" removed="21"/> + <method name="getIntArray(Ljava/lang/String;)[I" removed="21"/> + <method name="getIntegerArrayList(Ljava/lang/String;)Ljava/util/ArrayList;"/> + <method name="getLong(Ljava/lang/String;)J" removed="21"/> + <method name="getLong(Ljava/lang/String;J)J" removed="21"/> + <method name="getLongArray(Ljava/lang/String;)[J" removed="21"/> + <method name="getParcelable(Ljava/lang/String;)Landroid/os/Parcelable;"/> + <method name="getParcelableArray(Ljava/lang/String;)[Landroid/os/Parcelable;"/> + <method name="getParcelableArrayList(Ljava/lang/String;)Ljava/util/ArrayList;"/> + <method name="getSerializable(Ljava/lang/String;)Ljava/io/Serializable;"/> + <method name="getShort(Ljava/lang/String;)S"/> + <method name="getShort(Ljava/lang/String;S)S"/> + <method name="getShortArray(Ljava/lang/String;)[S"/> + <method name="getSize(Ljava/lang/String;)Landroid/util/Size;" since="21"/> + <method name="getSizeF(Ljava/lang/String;)Landroid/util/SizeF;" since="21"/> + <method name="getSparseParcelableArray(Ljava/lang/String;)Landroid/util/SparseArray;"/> + <method name="getString(Ljava/lang/String;)Ljava/lang/String;" removed="21"/> + <method name="getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" since="12" removed="21"/> + <method name="getStringArray(Ljava/lang/String;)[Ljava/lang/String;" removed="21"/> + <method name="getStringArrayList(Ljava/lang/String;)Ljava/util/ArrayList;"/> + <method name="hasFileDescriptors()Z"/> + <method name="isEmpty()Z" removed="21"/> + <method name="keySet()Ljava/util/Set;" removed="21"/> + <method name="putAll(Landroid/os/Bundle;)V"/> + <method name="putBinder(Ljava/lang/String;Landroid/os/IBinder;)V" since="18"/> + <method name="putBoolean(Ljava/lang/String;Z)V" removed="22"/> + <method name="putBooleanArray(Ljava/lang/String;[Z)V" removed="22"/> + <method name="putBundle(Ljava/lang/String;Landroid/os/Bundle;)V"/> + <method name="putByte(Ljava/lang/String;B)V"/> + <method name="putByteArray(Ljava/lang/String;[B)V"/> + <method name="putChar(Ljava/lang/String;C)V"/> + <method name="putCharArray(Ljava/lang/String;[C)V"/> + <method name="putCharSequence(Ljava/lang/String;Ljava/lang/CharSequence;)V"/> + <method name="putCharSequenceArray(Ljava/lang/String;[Ljava/lang/CharSequence;)V" since="8"/> + <method name="putCharSequenceArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V" since="8"/> + <method name="putDouble(Ljava/lang/String;D)V" removed="21"/> + <method name="putDoubleArray(Ljava/lang/String;[D)V" removed="21"/> + <method name="putFloat(Ljava/lang/String;F)V"/> + <method name="putFloatArray(Ljava/lang/String;[F)V"/> + <method name="putInt(Ljava/lang/String;I)V" removed="21"/> + <method name="putIntArray(Ljava/lang/String;[I)V" removed="21"/> + <method name="putIntegerArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V"/> + <method name="putLong(Ljava/lang/String;J)V" removed="21"/> + <method name="putLongArray(Ljava/lang/String;[J)V" removed="21"/> + <method name="putParcelable(Ljava/lang/String;Landroid/os/Parcelable;)V"/> + <method name="putParcelableArray(Ljava/lang/String;[Landroid/os/Parcelable;)V"/> + <method name="putParcelableArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V"/> + <method name="putSerializable(Ljava/lang/String;Ljava/io/Serializable;)V"/> + <method name="putShort(Ljava/lang/String;S)V"/> + <method name="putShortArray(Ljava/lang/String;[S)V"/> + <method name="putSize(Ljava/lang/String;Landroid/util/Size;)V" since="21"/> + <method name="putSizeF(Ljava/lang/String;Landroid/util/SizeF;)V" since="21"/> + <method name="putSparseParcelableArray(Ljava/lang/String;Landroid/util/SparseArray;)V"/> + <method name="putString(Ljava/lang/String;Ljava/lang/String;)V" removed="21"/> + <method name="putStringArray(Ljava/lang/String;[Ljava/lang/String;)V" removed="21"/> + <method name="putStringArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V"/> + <method name="readFromParcel(Landroid/os/Parcel;)V"/> + <method name="remove(Ljava/lang/String;)V"/> + <method name="setClassLoader(Ljava/lang/ClassLoader;)V"/> + <method name="size()I" removed="21"/> + <field name="CREATOR"/> + <field name="EMPTY"/> + </class> + <class name="android/os/CancellationSignal" since="16"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="cancel()V"/> + <method name="isCanceled()Z"/> + <method name="setOnCancelListener(Landroid/os/CancellationSignal$OnCancelListener;)V"/> + <method name="throwIfCanceled()V"/> + </class> + <class name="android/os/CancellationSignal$OnCancelListener" since="16"> + <extends name="java/lang/Object"/> + <method name="onCancel()V"/> + </class> + <class name="android/os/ConditionVariable" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Z)V"/> + <method name="block()V"/> + <method name="block(J)Z"/> + <method name="close()V"/> + <method name="open()V"/> + </class> + <class name="android/os/CountDownTimer" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(JJ)V"/> + <method name="cancel()V"/> + <method name="onFinish()V"/> + <method name="onTick(J)V"/> + <method name="start()Landroid/os/CountDownTimer;"/> + </class> + <class name="android/os/CpuUsageInfo" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getActive()J"/> + <method name="getTotal()J"/> + <field name="CREATOR"/> + </class> + <class name="android/os/DeadObjectException" since="1"> + <extends name="android/os/RemoteException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V" since="23"/> + </class> + <class name="android/os/DeadSystemException" since="24"> + <extends name="android/os/DeadObjectException"/> + <method name="<init>()V"/> + </class> + <class name="android/os/Debug" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="attachJvmtiAgent(Ljava/lang/String;Ljava/lang/String;)V" since="27"/> + <method name="changeDebugPort(I)V" deprecated="16"/> + <method name="dumpHprofData(Ljava/lang/String;)V" since="3"/> + <method name="dumpService(Ljava/lang/String;Ljava/io/FileDescriptor;[Ljava/lang/String;)Z" since="8"/> + <method name="enableEmulatorTraceOutput()V"/> + <method name="getBinderDeathObjectCount()I"/> + <method name="getBinderLocalObjectCount()I"/> + <method name="getBinderProxyObjectCount()I"/> + <method name="getBinderReceivedTransactions()I"/> + <method name="getBinderSentTransactions()I"/> + <method name="getGlobalAllocCount()I" deprecated="23"/> + <method name="getGlobalAllocSize()I" deprecated="23"/> + <method name="getGlobalClassInitCount()I" since="8" deprecated="23"/> + <method name="getGlobalClassInitTime()I" since="8" deprecated="23"/> + <method name="getGlobalExternalAllocCount()I" deprecated="16"/> + <method name="getGlobalExternalAllocSize()I" deprecated="16"/> + <method name="getGlobalExternalFreedCount()I" deprecated="16"/> + <method name="getGlobalExternalFreedSize()I" deprecated="16"/> + <method name="getGlobalFreedCount()I" deprecated="23"/> + <method name="getGlobalFreedSize()I" deprecated="23"/> + <method name="getGlobalGcInvocationCount()I" deprecated="23"/> + <method name="getLoadedClassCount()I"/> + <method name="getMemoryInfo(Landroid/os/Debug$MemoryInfo;)V"/> + <method name="getNativeHeapAllocatedSize()J"/> + <method name="getNativeHeapFreeSize()J"/> + <method name="getNativeHeapSize()J"/> + <method name="getPss()J" since="14"/> + <method name="getRuntimeStat(Ljava/lang/String;)Ljava/lang/String;" since="23"/> + <method name="getRuntimeStats()Ljava/util/Map;" since="23"/> + <method name="getThreadAllocCount()I" deprecated="23"/> + <method name="getThreadAllocSize()I" deprecated="23"/> + <method name="getThreadExternalAllocCount()I" deprecated="16"/> + <method name="getThreadExternalAllocSize()I" deprecated="16"/> + <method name="getThreadGcInvocationCount()I" deprecated="23"/> + <method name="isDebuggerConnected()Z"/> + <method name="printLoadedClasses(I)V"/> + <method name="resetAllCounts()V" deprecated="23"/> + <method name="resetGlobalAllocCount()V" deprecated="23"/> + <method name="resetGlobalAllocSize()V" deprecated="23"/> + <method name="resetGlobalClassInitCount()V" since="8" deprecated="23"/> + <method name="resetGlobalClassInitTime()V" since="8" deprecated="23"/> + <method name="resetGlobalExternalAllocCount()V" deprecated="16"/> + <method name="resetGlobalExternalAllocSize()V" deprecated="16"/> + <method name="resetGlobalExternalFreedCount()V" deprecated="16"/> + <method name="resetGlobalExternalFreedSize()V" deprecated="16"/> + <method name="resetGlobalFreedCount()V" deprecated="23"/> + <method name="resetGlobalFreedSize()V" deprecated="23"/> + <method name="resetGlobalGcInvocationCount()V" deprecated="23"/> + <method name="resetThreadAllocCount()V" deprecated="23"/> + <method name="resetThreadAllocSize()V" deprecated="23"/> + <method name="resetThreadExternalAllocCount()V" deprecated="16"/> + <method name="resetThreadExternalAllocSize()V" deprecated="16"/> + <method name="resetThreadGcInvocationCount()V" deprecated="23"/> + <method name="setAllocationLimit(I)I" deprecated="16"/> + <method name="setGlobalAllocationLimit(I)I" deprecated="16"/> + <method name="startAllocCounting()V" deprecated="18"/> + <method name="startMethodTracing()V"/> + <method name="startMethodTracing(Ljava/lang/String;)V"/> + <method name="startMethodTracing(Ljava/lang/String;I)V"/> + <method name="startMethodTracing(Ljava/lang/String;II)V"/> + <method name="startMethodTracingSampling(Ljava/lang/String;II)V" since="21"/> + <method name="startNativeTracing()V"/> + <method name="stopAllocCounting()V" deprecated="18"/> + <method name="stopMethodTracing()V"/> + <method name="stopNativeTracing()V"/> + <method name="threadCpuTimeNanos()J"/> + <method name="waitForDebugger()V"/> + <method name="waitingForDebugger()Z"/> + <field name="SHOW_CLASSLOADER"/> + <field name="SHOW_FULL_DETAIL"/> + <field name="SHOW_INITIALIZED"/> + <field name="TRACE_COUNT_ALLOCS" deprecated="23"/> + </class> + <class name="android/os/Debug$InstructionCount" since="1" deprecated="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="collect()Z"/> + <method name="globalMethodInvocations()I"/> + <method name="globalTotal()I"/> + <method name="resetAndStart()Z"/> + </class> + <class name="android/os/Debug$MemoryInfo" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable" since="5"/> + <method name="<init>()V"/> + <method name="getMemoryStat(Ljava/lang/String;)Ljava/lang/String;" since="23"/> + <method name="getMemoryStats()Ljava/util/Map;" since="23"/> + <method name="getOtherLabel(I)Ljava/lang/String;" since="14" removed="19"/> + <method name="getOtherPrivateDirty(I)I" since="14" removed="19"/> + <method name="getOtherPss(I)I" since="14" removed="19"/> + <method name="getOtherSharedDirty(I)I" since="14" removed="19"/> + <method name="getTotalPrivateClean()I" since="19"/> + <method name="getTotalPrivateDirty()I" since="5"/> + <method name="getTotalPss()I" since="5"/> + <method name="getTotalSharedClean()I" since="19"/> + <method name="getTotalSharedDirty()I" since="5"/> + <method name="getTotalSwappablePss()I" since="19"/> + <method name="readFromParcel(Landroid/os/Parcel;)V" since="5"/> + <field name="CREATOR" since="5"/> + <field name="dalvikPrivateDirty"/> + <field name="dalvikPss"/> + <field name="dalvikSharedDirty"/> + <field name="nativePrivateDirty"/> + <field name="nativePss"/> + <field name="nativeSharedDirty"/> + <field name="otherPrivateDirty"/> + <field name="otherPss"/> + <field name="otherSharedDirty"/> + </class> + <class name="android/os/DropBoxManager" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addData(Ljava/lang/String;[BI)V"/> + <method name="addFile(Ljava/lang/String;Ljava/io/File;I)V"/> + <method name="addText(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="getNextEntry(Ljava/lang/String;J)Landroid/os/DropBoxManager$Entry;"/> + <method name="isTagEnabled(Ljava/lang/String;)Z"/> + <field name="ACTION_DROPBOX_ENTRY_ADDED" since="11"/> + <field name="EXTRA_TAG" since="11"/> + <field name="EXTRA_TIME" since="11"/> + <field name="IS_EMPTY"/> + <field name="IS_GZIPPED"/> + <field name="IS_TEXT"/> + </class> + <class name="android/os/DropBoxManager$Entry" since="8"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <implements name="java/io/Closeable" since="9"/> + <method name="<init>(Ljava/lang/String;J)V"/> + <method name="<init>(Ljava/lang/String;JLandroid/os/ParcelFileDescriptor;I)V"/> + <method name="<init>(Ljava/lang/String;JLjava/io/File;I)V"/> + <method name="<init>(Ljava/lang/String;JLjava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;J[BI)V"/> + <method name="close()V"/> + <method name="getFlags()I"/> + <method name="getInputStream()Ljava/io/InputStream;"/> + <method name="getTag()Ljava/lang/String;"/> + <method name="getText(I)Ljava/lang/String;"/> + <method name="getTimeMillis()J"/> + <field name="CREATOR"/> + </class> + <class name="android/os/Environment" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getDataDirectory()Ljava/io/File;"/> + <method name="getDownloadCacheDirectory()Ljava/io/File;"/> + <method name="getExternalStorageDirectory()Ljava/io/File;"/> + <method name="getExternalStoragePublicDirectory(Ljava/lang/String;)Ljava/io/File;" since="8"/> + <method name="getExternalStorageState()Ljava/lang/String;"/> + <method name="getExternalStorageState(Ljava/io/File;)Ljava/lang/String;" since="21"/> + <method name="getRootDirectory()Ljava/io/File;"/> + <method name="getStorageState(Ljava/io/File;)Ljava/lang/String;" since="19" deprecated="21"/> + <method name="isExternalStorageEmulated()Z" since="11"/> + <method name="isExternalStorageEmulated(Ljava/io/File;)Z" since="21"/> + <method name="isExternalStorageRemovable()Z" since="9"/> + <method name="isExternalStorageRemovable(Ljava/io/File;)Z" since="21"/> + <field name="DIRECTORY_ALARMS" since="8"/> + <field name="DIRECTORY_DCIM" since="8"/> + <field name="DIRECTORY_DOCUMENTS" since="19"/> + <field name="DIRECTORY_DOWNLOADS" since="8"/> + <field name="DIRECTORY_MOVIES" since="8"/> + <field name="DIRECTORY_MUSIC" since="8"/> + <field name="DIRECTORY_NOTIFICATIONS" since="8"/> + <field name="DIRECTORY_PICTURES" since="8"/> + <field name="DIRECTORY_PODCASTS" since="8"/> + <field name="DIRECTORY_RINGTONES" since="8"/> + <field name="MEDIA_BAD_REMOVAL"/> + <field name="MEDIA_CHECKING" since="3"/> + <field name="MEDIA_EJECTING" since="23"/> + <field name="MEDIA_MOUNTED"/> + <field name="MEDIA_MOUNTED_READ_ONLY"/> + <field name="MEDIA_NOFS" since="3"/> + <field name="MEDIA_REMOVED"/> + <field name="MEDIA_SHARED"/> + <field name="MEDIA_UNKNOWN" since="19"/> + <field name="MEDIA_UNMOUNTABLE"/> + <field name="MEDIA_UNMOUNTED"/> + </class> + <class name="android/os/FileObserver" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="onEvent(ILjava/lang/String;)V"/> + <method name="startWatching()V"/> + <method name="stopWatching()V"/> + <field name="ACCESS"/> + <field name="ALL_EVENTS"/> + <field name="ATTRIB"/> + <field name="CLOSE_NOWRITE"/> + <field name="CLOSE_WRITE"/> + <field name="CREATE"/> + <field name="DELETE"/> + <field name="DELETE_SELF"/> + <field name="MODIFY"/> + <field name="MOVED_FROM"/> + <field name="MOVED_TO"/> + <field name="MOVE_SELF"/> + <field name="OPEN"/> + </class> + <class name="android/os/FileUriExposedException" since="24"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/os/Handler" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/os/Handler$Callback;)V" since="3"/> + <method name="<init>(Landroid/os/Looper;)V"/> + <method name="<init>(Landroid/os/Looper;Landroid/os/Handler$Callback;)V" since="3"/> + <method name="dispatchMessage(Landroid/os/Message;)V"/> + <method name="dump(Landroid/util/Printer;Ljava/lang/String;)V"/> + <method name="getLooper()Landroid/os/Looper;"/> + <method name="getMessageName(Landroid/os/Message;)Ljava/lang/String;" since="14"/> + <method name="handleMessage(Landroid/os/Message;)V"/> + <method name="hasMessages(I)Z"/> + <method name="hasMessages(ILjava/lang/Object;)Z"/> + <method name="obtainMessage()Landroid/os/Message;"/> + <method name="obtainMessage(I)Landroid/os/Message;"/> + <method name="obtainMessage(III)Landroid/os/Message;"/> + <method name="obtainMessage(IIILjava/lang/Object;)Landroid/os/Message;"/> + <method name="obtainMessage(ILjava/lang/Object;)Landroid/os/Message;"/> + <method name="post(Ljava/lang/Runnable;)Z"/> + <method name="postAtFrontOfQueue(Ljava/lang/Runnable;)Z"/> + <method name="postAtTime(Ljava/lang/Runnable;J)Z"/> + <method name="postAtTime(Ljava/lang/Runnable;Ljava/lang/Object;J)Z"/> + <method name="postDelayed(Ljava/lang/Runnable;J)Z"/> + <method name="removeCallbacks(Ljava/lang/Runnable;)V"/> + <method name="removeCallbacks(Ljava/lang/Runnable;Ljava/lang/Object;)V"/> + <method name="removeCallbacksAndMessages(Ljava/lang/Object;)V"/> + <method name="removeMessages(I)V"/> + <method name="removeMessages(ILjava/lang/Object;)V"/> + <method name="sendEmptyMessage(I)Z"/> + <method name="sendEmptyMessageAtTime(IJ)Z"/> + <method name="sendEmptyMessageDelayed(IJ)Z"/> + <method name="sendMessage(Landroid/os/Message;)Z"/> + <method name="sendMessageAtFrontOfQueue(Landroid/os/Message;)Z"/> + <method name="sendMessageAtTime(Landroid/os/Message;J)Z"/> + <method name="sendMessageDelayed(Landroid/os/Message;J)Z"/> + </class> + <class name="android/os/Handler$Callback" since="3"> + <extends name="java/lang/Object"/> + <method name="handleMessage(Landroid/os/Message;)Z"/> + </class> + <class name="android/os/HandlerThread" since="1"> + <extends name="java/lang/Thread"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="getLooper()Landroid/os/Looper;"/> + <method name="getThreadId()I"/> + <method name="onLooperPrepared()V"/> + <method name="quit()Z" since="5"/> + <method name="quitSafely()Z" since="18"/> + </class> + <class name="android/os/HardwarePropertiesManager" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getCpuUsages()[Landroid/os/CpuUsageInfo;"/> + <method name="getDeviceTemperatures(II)[F"/> + <method name="getFanSpeeds()[F"/> + <field name="DEVICE_TEMPERATURE_BATTERY"/> + <field name="DEVICE_TEMPERATURE_CPU"/> + <field name="DEVICE_TEMPERATURE_GPU"/> + <field name="DEVICE_TEMPERATURE_SKIN"/> + <field name="TEMPERATURE_CURRENT"/> + <field name="TEMPERATURE_SHUTDOWN"/> + <field name="TEMPERATURE_THROTTLING"/> + <field name="TEMPERATURE_THROTTLING_BELOW_VR_MIN"/> + <field name="UNDEFINED_TEMPERATURE"/> + </class> + <class name="android/os/IBinder" since="1"> + <extends name="java/lang/Object"/> + <method name="dump(Ljava/io/FileDescriptor;[Ljava/lang/String;)V" since="3"/> + <method name="dumpAsync(Ljava/io/FileDescriptor;[Ljava/lang/String;)V" since="13"/> + <method name="getInterfaceDescriptor()Ljava/lang/String;"/> + <method name="isBinderAlive()Z"/> + <method name="linkToDeath(Landroid/os/IBinder$DeathRecipient;I)V"/> + <method name="pingBinder()Z"/> + <method name="queryLocalInterface(Ljava/lang/String;)Landroid/os/IInterface;"/> + <method name="transact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z"/> + <method name="unlinkToDeath(Landroid/os/IBinder$DeathRecipient;I)Z"/> + <field name="DUMP_TRANSACTION"/> + <field name="FIRST_CALL_TRANSACTION"/> + <field name="FLAG_ONEWAY"/> + <field name="INTERFACE_TRANSACTION"/> + <field name="LAST_CALL_TRANSACTION"/> + <field name="LIKE_TRANSACTION" since="15"/> + <field name="PING_TRANSACTION"/> + <field name="TWEET_TRANSACTION" since="13"/> + </class> + <class name="android/os/IBinder$DeathRecipient" since="1"> + <extends name="java/lang/Object"/> + <method name="binderDied()V"/> + </class> + <class name="android/os/IInterface" since="1"> + <extends name="java/lang/Object"/> + <method name="asBinder()Landroid/os/IBinder;"/> + </class> + <class name="android/os/LocaleList" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>([Ljava/util/Locale;)V"/> + <method name="forLanguageTags(Ljava/lang/String;)Landroid/os/LocaleList;"/> + <method name="get(I)Ljava/util/Locale;"/> + <method name="getAdjustedDefault()Landroid/os/LocaleList;"/> + <method name="getDefault()Landroid/os/LocaleList;"/> + <method name="getEmptyLocaleList()Landroid/os/LocaleList;"/> + <method name="getFirstMatch([Ljava/lang/String;)Ljava/util/Locale;"/> + <method name="indexOf(Ljava/util/Locale;)I"/> + <method name="isEmpty()Z"/> + <method name="setDefault(Landroid/os/LocaleList;)V"/> + <method name="size()I"/> + <method name="toLanguageTags()Ljava/lang/String;"/> + <field name="CREATOR"/> + </class> + <class name="android/os/Looper" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="dump(Landroid/util/Printer;Ljava/lang/String;)V"/> + <method name="getMainLooper()Landroid/os/Looper;"/> + <method name="getQueue()Landroid/os/MessageQueue;" since="23"/> + <method name="getThread()Ljava/lang/Thread;" since="3"/> + <method name="isCurrentThread()Z" since="23"/> + <method name="loop()V"/> + <method name="myLooper()Landroid/os/Looper;"/> + <method name="myQueue()Landroid/os/MessageQueue;"/> + <method name="prepare()V"/> + <method name="prepareMainLooper()V"/> + <method name="quit()V"/> + <method name="quitSafely()V" since="18"/> + <method name="setMessageLogging(Landroid/util/Printer;)V"/> + </class> + <class name="android/os/MemoryFile" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="allowPurging(Z)Z"/> + <method name="close()V"/> + <method name="getInputStream()Ljava/io/InputStream;"/> + <method name="getOutputStream()Ljava/io/OutputStream;"/> + <method name="isPurgingAllowed()Z"/> + <method name="length()I"/> + <method name="readBytes([BIII)I"/> + <method name="writeBytes([BIII)V"/> + </class> + <class name="android/os/Message" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="copyFrom(Landroid/os/Message;)V"/> + <method name="getCallback()Ljava/lang/Runnable;"/> + <method name="getData()Landroid/os/Bundle;"/> + <method name="getTarget()Landroid/os/Handler;"/> + <method name="getWhen()J"/> + <method name="isAsynchronous()Z" since="22"/> + <method name="obtain()Landroid/os/Message;"/> + <method name="obtain(Landroid/os/Handler;)Landroid/os/Message;"/> + <method name="obtain(Landroid/os/Handler;I)Landroid/os/Message;"/> + <method name="obtain(Landroid/os/Handler;III)Landroid/os/Message;"/> + <method name="obtain(Landroid/os/Handler;IIILjava/lang/Object;)Landroid/os/Message;"/> + <method name="obtain(Landroid/os/Handler;ILjava/lang/Object;)Landroid/os/Message;"/> + <method name="obtain(Landroid/os/Handler;Ljava/lang/Runnable;)Landroid/os/Message;"/> + <method name="obtain(Landroid/os/Message;)Landroid/os/Message;"/> + <method name="peekData()Landroid/os/Bundle;"/> + <method name="recycle()V"/> + <method name="sendToTarget()V"/> + <method name="setAsynchronous(Z)V" since="22"/> + <method name="setData(Landroid/os/Bundle;)V"/> + <method name="setTarget(Landroid/os/Handler;)V"/> + <field name="CREATOR"/> + <field name="arg1"/> + <field name="arg2"/> + <field name="obj"/> + <field name="replyTo"/> + <field name="sendingUid" since="21"/> + <field name="what"/> + </class> + <class name="android/os/MessageQueue" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addIdleHandler(Landroid/os/MessageQueue$IdleHandler;)V"/> + <method name="addOnFileDescriptorEventListener(Ljava/io/FileDescriptor;ILandroid/os/MessageQueue$OnFileDescriptorEventListener;)V" since="23"/> + <method name="isIdle()Z" since="23"/> + <method name="removeIdleHandler(Landroid/os/MessageQueue$IdleHandler;)V"/> + <method name="removeOnFileDescriptorEventListener(Ljava/io/FileDescriptor;)V" since="23"/> + </class> + <class name="android/os/MessageQueue$IdleHandler" since="1"> + <extends name="java/lang/Object"/> + <method name="queueIdle()Z"/> + </class> + <class name="android/os/MessageQueue$OnFileDescriptorEventListener" since="23"> + <extends name="java/lang/Object"/> + <method name="onFileDescriptorEvents(Ljava/io/FileDescriptor;I)I"/> + <field name="EVENT_ERROR"/> + <field name="EVENT_INPUT"/> + <field name="EVENT_OUTPUT"/> + </class> + <class name="android/os/Messenger" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/os/Handler;)V"/> + <method name="<init>(Landroid/os/IBinder;)V"/> + <method name="getBinder()Landroid/os/IBinder;"/> + <method name="readMessengerOrNullFromParcel(Landroid/os/Parcel;)Landroid/os/Messenger;"/> + <method name="send(Landroid/os/Message;)V"/> + <method name="writeMessengerOrNullToParcel(Landroid/os/Messenger;Landroid/os/Parcel;)V"/> + <field name="CREATOR"/> + </class> + <class name="android/os/NetworkOnMainThreadException" since="11"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + </class> + <class name="android/os/OperationCanceledException" since="16"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/os/Parcel" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="appendFrom(Landroid/os/Parcel;II)V"/> + <method name="createBinderArray()[Landroid/os/IBinder;"/> + <method name="createBinderArrayList()Ljava/util/ArrayList;"/> + <method name="createBooleanArray()[Z"/> + <method name="createByteArray()[B"/> + <method name="createCharArray()[C"/> + <method name="createDoubleArray()[D"/> + <method name="createFloatArray()[F"/> + <method name="createIntArray()[I"/> + <method name="createLongArray()[J"/> + <method name="createStringArray()[Ljava/lang/String;"/> + <method name="createStringArrayList()Ljava/util/ArrayList;"/> + <method name="createTypedArray(Landroid/os/Parcelable$Creator;)[Ljava/lang/Object;"/> + <method name="createTypedArrayList(Landroid/os/Parcelable$Creator;)Ljava/util/ArrayList;"/> + <method name="dataAvail()I"/> + <method name="dataCapacity()I"/> + <method name="dataPosition()I"/> + <method name="dataSize()I"/> + <method name="enforceInterface(Ljava/lang/String;)V"/> + <method name="hasFileDescriptors()Z"/> + <method name="marshall()[B"/> + <method name="obtain()Landroid/os/Parcel;"/> + <method name="obtain(I)Landroid/os/Parcel;" removed="21"/> + <method name="readArray(Ljava/lang/ClassLoader;)[Ljava/lang/Object;"/> + <method name="readArrayList(Ljava/lang/ClassLoader;)Ljava/util/ArrayList;"/> + <method name="readBinderArray([Landroid/os/IBinder;)V"/> + <method name="readBinderList(Ljava/util/List;)V"/> + <method name="readBooleanArray([Z)V"/> + <method name="readBundle()Landroid/os/Bundle;"/> + <method name="readBundle(Ljava/lang/ClassLoader;)Landroid/os/Bundle;"/> + <method name="readByte()B"/> + <method name="readByteArray([B)V"/> + <method name="readCharArray([C)V"/> + <method name="readDouble()D"/> + <method name="readDoubleArray([D)V"/> + <method name="readException()V"/> + <method name="readException(ILjava/lang/String;)V"/> + <method name="readFileDescriptor()Landroid/os/ParcelFileDescriptor;"/> + <method name="readFloat()F"/> + <method name="readFloatArray([F)V"/> + <method name="readHashMap(Ljava/lang/ClassLoader;)Ljava/util/HashMap;"/> + <method name="readInt()I"/> + <method name="readIntArray([I)V"/> + <method name="readList(Ljava/util/List;Ljava/lang/ClassLoader;)V"/> + <method name="readLong()J"/> + <method name="readLongArray([J)V"/> + <method name="readMap(Ljava/util/Map;Ljava/lang/ClassLoader;)V"/> + <method name="readParcelable(Ljava/lang/ClassLoader;)Landroid/os/Parcelable;"/> + <method name="readParcelableArray(Ljava/lang/ClassLoader;)[Landroid/os/Parcelable;"/> + <method name="readPersistableBundle()Landroid/os/PersistableBundle;" since="21"/> + <method name="readPersistableBundle(Ljava/lang/ClassLoader;)Landroid/os/PersistableBundle;" since="21"/> + <method name="readSerializable()Ljava/io/Serializable;"/> + <method name="readSize()Landroid/util/Size;" since="21"/> + <method name="readSizeF()Landroid/util/SizeF;" since="21"/> + <method name="readSparseArray(Ljava/lang/ClassLoader;)Landroid/util/SparseArray;"/> + <method name="readSparseBooleanArray()Landroid/util/SparseBooleanArray;"/> + <method name="readString()Ljava/lang/String;"/> + <method name="readStringArray([Ljava/lang/String;)V"/> + <method name="readStringList(Ljava/util/List;)V"/> + <method name="readStrongBinder()Landroid/os/IBinder;"/> + <method name="readTypedArray([Ljava/lang/Object;Landroid/os/Parcelable$Creator;)V"/> + <method name="readTypedList(Ljava/util/List;Landroid/os/Parcelable$Creator;)V"/> + <method name="readTypedObject(Landroid/os/Parcelable$Creator;)Ljava/lang/Object;" since="23"/> + <method name="readValue(Ljava/lang/ClassLoader;)Ljava/lang/Object;"/> + <method name="recycle()V"/> + <method name="setDataCapacity(I)V"/> + <method name="setDataPosition(I)V"/> + <method name="setDataSize(I)V"/> + <method name="unmarshall([BII)V"/> + <method name="writeArray([Ljava/lang/Object;)V"/> + <method name="writeBinderArray([Landroid/os/IBinder;)V"/> + <method name="writeBinderList(Ljava/util/List;)V"/> + <method name="writeBooleanArray([Z)V"/> + <method name="writeBundle(Landroid/os/Bundle;)V"/> + <method name="writeByte(B)V"/> + <method name="writeByteArray([B)V"/> + <method name="writeByteArray([BII)V"/> + <method name="writeCharArray([C)V"/> + <method name="writeDouble(D)V"/> + <method name="writeDoubleArray([D)V"/> + <method name="writeException(Ljava/lang/Exception;)V"/> + <method name="writeFileDescriptor(Ljava/io/FileDescriptor;)V"/> + <method name="writeFloat(F)V"/> + <method name="writeFloatArray([F)V"/> + <method name="writeInt(I)V"/> + <method name="writeIntArray([I)V"/> + <method name="writeInterfaceToken(Ljava/lang/String;)V"/> + <method name="writeList(Ljava/util/List;)V"/> + <method name="writeLong(J)V"/> + <method name="writeLongArray([J)V"/> + <method name="writeMap(Ljava/util/Map;)V"/> + <method name="writeNoException()V"/> + <method name="writeParcelable(Landroid/os/Parcelable;I)V"/> + <method name="writeParcelableArray([Landroid/os/Parcelable;I)V"/> + <method name="writePersistableBundle(Landroid/os/PersistableBundle;)V" since="21"/> + <method name="writeSerializable(Ljava/io/Serializable;)V"/> + <method name="writeSize(Landroid/util/Size;)V" since="21"/> + <method name="writeSizeF(Landroid/util/SizeF;)V" since="21"/> + <method name="writeSparseArray(Landroid/util/SparseArray;)V"/> + <method name="writeSparseBooleanArray(Landroid/util/SparseBooleanArray;)V"/> + <method name="writeString(Ljava/lang/String;)V"/> + <method name="writeStringArray([Ljava/lang/String;)V"/> + <method name="writeStringList(Ljava/util/List;)V"/> + <method name="writeStrongBinder(Landroid/os/IBinder;)V"/> + <method name="writeStrongInterface(Landroid/os/IInterface;)V"/> + <method name="writeTypedArray([Landroid/os/Parcelable;I)V"/> + <method name="writeTypedList(Ljava/util/List;)V"/> + <method name="writeTypedObject(Landroid/os/Parcelable;I)V" since="23"/> + <method name="writeValue(Ljava/lang/Object;)V"/> + <field name="STRING_CREATOR"/> + </class> + <class name="android/os/ParcelFileDescriptor" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <implements name="java/io/Closeable" since="16"/> + <method name="<init>(Landroid/os/ParcelFileDescriptor;)V"/> + <method name="adoptFd(I)Landroid/os/ParcelFileDescriptor;" since="13"/> + <method name="canDetectErrors()Z" since="19"/> + <method name="checkError()V" since="19"/> + <method name="close()V"/> + <method name="closeWithError(Ljava/lang/String;)V" since="19"/> + <method name="createPipe()[Landroid/os/ParcelFileDescriptor;" since="9"/> + <method name="createReliablePipe()[Landroid/os/ParcelFileDescriptor;" since="19"/> + <method name="createReliableSocketPair()[Landroid/os/ParcelFileDescriptor;" since="19"/> + <method name="createSocketPair()[Landroid/os/ParcelFileDescriptor;" since="19"/> + <method name="detachFd()I" since="12"/> + <method name="dup()Landroid/os/ParcelFileDescriptor;" since="14"/> + <method name="dup(Ljava/io/FileDescriptor;)Landroid/os/ParcelFileDescriptor;" since="13"/> + <method name="fromDatagramSocket(Ljava/net/DatagramSocket;)Landroid/os/ParcelFileDescriptor;" since="14"/> + <method name="fromFd(I)Landroid/os/ParcelFileDescriptor;" since="13"/> + <method name="fromSocket(Ljava/net/Socket;)Landroid/os/ParcelFileDescriptor;"/> + <method name="getFd()I" since="12"/> + <method name="getFileDescriptor()Ljava/io/FileDescriptor;"/> + <method name="getStatSize()J" since="3"/> + <method name="open(Ljava/io/File;I)Landroid/os/ParcelFileDescriptor;"/> + <method name="open(Ljava/io/File;ILandroid/os/Handler;Landroid/os/ParcelFileDescriptor$OnCloseListener;)Landroid/os/ParcelFileDescriptor;" since="19"/> + <method name="parseMode(Ljava/lang/String;)I" since="19"/> + <field name="CREATOR"/> + <field name="MODE_APPEND" since="3"/> + <field name="MODE_CREATE"/> + <field name="MODE_READ_ONLY"/> + <field name="MODE_READ_WRITE"/> + <field name="MODE_TRUNCATE"/> + <field name="MODE_WORLD_READABLE" deprecated="19"/> + <field name="MODE_WORLD_WRITEABLE" deprecated="19"/> + <field name="MODE_WRITE_ONLY"/> + </class> + <class name="android/os/ParcelFileDescriptor$AutoCloseInputStream" since="1"> + <extends name="java/io/FileInputStream"/> + <method name="<init>(Landroid/os/ParcelFileDescriptor;)V"/> + </class> + <class name="android/os/ParcelFileDescriptor$AutoCloseOutputStream" since="1"> + <extends name="java/io/FileOutputStream"/> + <method name="<init>(Landroid/os/ParcelFileDescriptor;)V"/> + </class> + <class name="android/os/ParcelFileDescriptor$FileDescriptorDetachedException" since="19"> + <extends name="java/io/IOException"/> + <method name="<init>()V"/> + </class> + <class name="android/os/ParcelFileDescriptor$OnCloseListener" since="19"> + <extends name="java/lang/Object"/> + <method name="onClose(Ljava/io/IOException;)V"/> + </class> + <class name="android/os/ParcelFormatException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/os/ParcelUuid" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Ljava/util/UUID;)V"/> + <method name="fromString(Ljava/lang/String;)Landroid/os/ParcelUuid;"/> + <method name="getUuid()Ljava/util/UUID;"/> + <field name="CREATOR"/> + </class> + <class name="android/os/Parcelable" since="1"> + <extends name="java/lang/Object"/> + <method name="describeContents()I"/> + <method name="writeToParcel(Landroid/os/Parcel;I)V"/> + <field name="CONTENTS_FILE_DESCRIPTOR"/> + <field name="PARCELABLE_WRITE_RETURN_VALUE"/> + </class> + <class name="android/os/Parcelable$ClassLoaderCreator" since="13"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable$Creator"/> + <method name="createFromParcel(Landroid/os/Parcel;Ljava/lang/ClassLoader;)Ljava/lang/Object;"/> + </class> + <class name="android/os/Parcelable$Creator" since="1"> + <extends name="java/lang/Object"/> + <method name="createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;"/> + <method name="newArray(I)[Ljava/lang/Object;"/> + </class> + <class name="android/os/PatternMatcher" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="getPath()Ljava/lang/String;"/> + <method name="getType()I"/> + <method name="match(Ljava/lang/String;)Z"/> + <field name="CREATOR"/> + <field name="PATTERN_ADVANCED_GLOB" since="26"/> + <field name="PATTERN_LITERAL"/> + <field name="PATTERN_PREFIX"/> + <field name="PATTERN_SIMPLE_GLOB"/> + </class> + <class name="android/os/PersistableBundle" since="21"> + <extends name="android/os/BaseBundle"/> + <implements name="android/os/Parcelable"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(Landroid/os/PersistableBundle;)V"/> + <method name="deepCopy()Landroid/os/PersistableBundle;" since="26"/> + <method name="getPersistableBundle(Ljava/lang/String;)Landroid/os/PersistableBundle;"/> + <method name="putPersistableBundle(Ljava/lang/String;Landroid/os/PersistableBundle;)V"/> + <field name="CREATOR"/> + <field name="EMPTY"/> + </class> + <class name="android/os/PowerManager" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="goToSleep(J)V" removed="21"/> + <method name="isDeviceIdleMode()Z" since="23"/> + <method name="isIgnoringBatteryOptimizations(Ljava/lang/String;)Z" since="23"/> + <method name="isInteractive()Z" since="20"/> + <method name="isPowerSaveMode()Z" since="21"/> + <method name="isScreenOn()Z" since="7" deprecated="20"/> + <method name="isSustainedPerformanceModeSupported()Z" since="24"/> + <method name="isWakeLockLevelSupported(I)Z" since="21"/> + <method name="newWakeLock(ILjava/lang/String;)Landroid/os/PowerManager$WakeLock;"/> + <method name="reboot(Ljava/lang/String;)V" since="8"/> + <method name="userActivity(JZ)V" removed="21"/> + <method name="wakeUp(J)V" since="17" removed="21"/> + <field name="ACQUIRE_CAUSES_WAKEUP"/> + <field name="ACTION_DEVICE_IDLE_MODE_CHANGED" since="23"/> + <field name="ACTION_POWER_SAVE_MODE_CHANGED" since="21"/> + <field name="FULL_WAKE_LOCK" deprecated="17"/> + <field name="ON_AFTER_RELEASE"/> + <field name="PARTIAL_WAKE_LOCK"/> + <field name="PROXIMITY_SCREEN_OFF_WAKE_LOCK" since="21"/> + <field name="RELEASE_FLAG_WAIT_FOR_NO_PROXIMITY" since="21"/> + <field name="SCREEN_BRIGHT_WAKE_LOCK" deprecated="16"/> + <field name="SCREEN_DIM_WAKE_LOCK" deprecated="17"/> + </class> + <class name="android/os/PowerManager$WakeLock" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/os/PowerManager;)V"/> + <method name="acquire()V"/> + <method name="acquire(J)V"/> + <method name="isHeld()Z"/> + <method name="release()V"/> + <method name="release(I)V" since="21"/> + <method name="setReferenceCounted(Z)V"/> + <method name="setWorkSource(Landroid/os/WorkSource;)V" since="9"/> + </class> + <class name="android/os/Process" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getElapsedCpuTime()J"/> + <method name="getExclusiveCores()[I" since="24"/> + <method name="getGidForName(Ljava/lang/String;)I"/> + <method name="getStartElapsedRealtime()J" since="24"/> + <method name="getStartUptimeMillis()J" since="24"/> + <method name="getThreadPriority(I)I"/> + <method name="getUidForName(Ljava/lang/String;)I"/> + <method name="is64Bit()Z" since="23"/> + <method name="isApplicationUid(I)Z" since="24"/> + <method name="killProcess(I)V"/> + <method name="myPid()I"/> + <method name="myTid()I"/> + <method name="myUid()I" since="2"/> + <method name="myUserHandle()Landroid/os/UserHandle;" since="17"/> + <method name="sendSignal(II)V"/> + <method name="setThreadPriority(I)V"/> + <method name="setThreadPriority(II)V"/> + <method name="supportsProcesses()Z" deprecated="16"/> + <field name="BLUETOOTH_GID" removed="18"/> + <field name="FIRST_APPLICATION_UID"/> + <field name="LAST_APPLICATION_UID"/> + <field name="PHONE_UID"/> + <field name="SIGNAL_KILL"/> + <field name="SIGNAL_QUIT"/> + <field name="SIGNAL_USR1"/> + <field name="SYSTEM_UID"/> + <field name="THREAD_PRIORITY_AUDIO"/> + <field name="THREAD_PRIORITY_BACKGROUND"/> + <field name="THREAD_PRIORITY_DEFAULT"/> + <field name="THREAD_PRIORITY_DISPLAY"/> + <field name="THREAD_PRIORITY_FOREGROUND"/> + <field name="THREAD_PRIORITY_LESS_FAVORABLE"/> + <field name="THREAD_PRIORITY_LOWEST"/> + <field name="THREAD_PRIORITY_MORE_FAVORABLE"/> + <field name="THREAD_PRIORITY_URGENT_AUDIO"/> + <field name="THREAD_PRIORITY_URGENT_DISPLAY"/> + </class> + <class name="android/os/ProxyFileDescriptorCallback" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onFsync()V"/> + <method name="onGetSize()J"/> + <method name="onRead(JI[B)I"/> + <method name="onRelease()V"/> + <method name="onWrite(JI[B)I"/> + </class> + <class name="android/os/RecoverySystem" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="installPackage(Landroid/content/Context;Ljava/io/File;)V"/> + <method name="rebootWipeCache(Landroid/content/Context;)V" since="14"/> + <method name="rebootWipeUserData(Landroid/content/Context;)V"/> + <method name="verifyPackage(Ljava/io/File;Landroid/os/RecoverySystem$ProgressListener;Ljava/io/File;)V"/> + </class> + <class name="android/os/RecoverySystem$ProgressListener" since="8"> + <extends name="java/lang/Object"/> + <method name="onProgress(I)V"/> + </class> + <class name="android/os/RemoteCallbackList" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="beginBroadcast()I"/> + <method name="finishBroadcast()V"/> + <method name="getBroadcastCookie(I)Ljava/lang/Object;" since="4"/> + <method name="getBroadcastItem(I)Landroid/os/IInterface;"/> + <method name="getRegisteredCallbackCookie(I)Ljava/lang/Object;" since="26"/> + <method name="getRegisteredCallbackCount()I" since="17"/> + <method name="getRegisteredCallbackItem(I)Landroid/os/IInterface;" since="26"/> + <method name="kill()V"/> + <method name="onCallbackDied(Landroid/os/IInterface;)V"/> + <method name="onCallbackDied(Landroid/os/IInterface;Ljava/lang/Object;)V" since="4"/> + <method name="register(Landroid/os/IInterface;)Z"/> + <method name="register(Landroid/os/IInterface;Ljava/lang/Object;)Z" since="4"/> + <method name="unregister(Landroid/os/IInterface;)Z"/> + </class> + <class name="android/os/RemoteException" since="1"> + <extends name="android/util/AndroidException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V" since="15"/> + </class> + <class name="android/os/ResultReceiver" since="3"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/os/Handler;)V"/> + <method name="onReceiveResult(ILandroid/os/Bundle;)V"/> + <method name="send(ILandroid/os/Bundle;)V"/> + <field name="CREATOR"/> + </class> + <class name="android/os/StatFs" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getAvailableBlocks()I" deprecated="18"/> + <method name="getAvailableBlocksLong()J" since="18"/> + <method name="getAvailableBytes()J" since="18"/> + <method name="getBlockCount()I" deprecated="18"/> + <method name="getBlockCountLong()J" since="18"/> + <method name="getBlockSize()I" deprecated="18"/> + <method name="getBlockSizeLong()J" since="18"/> + <method name="getFreeBlocks()I" deprecated="18"/> + <method name="getFreeBlocksLong()J" since="18"/> + <method name="getFreeBytes()J" since="18"/> + <method name="getTotalBytes()J" since="18"/> + <method name="restat(Ljava/lang/String;)V"/> + </class> + <class name="android/os/StrictMode" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="allowThreadDiskReads()Landroid/os/StrictMode$ThreadPolicy;"/> + <method name="allowThreadDiskWrites()Landroid/os/StrictMode$ThreadPolicy;"/> + <method name="enableDefaults()V"/> + <method name="getThreadPolicy()Landroid/os/StrictMode$ThreadPolicy;"/> + <method name="getVmPolicy()Landroid/os/StrictMode$VmPolicy;"/> + <method name="noteSlowCall(Ljava/lang/String;)V" since="11"/> + <method name="setThreadPolicy(Landroid/os/StrictMode$ThreadPolicy;)V"/> + <method name="setVmPolicy(Landroid/os/StrictMode$VmPolicy;)V"/> + </class> + <class name="android/os/StrictMode$ThreadPolicy" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="LAX"/> + </class> + <class name="android/os/StrictMode$ThreadPolicy$Builder" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/os/StrictMode$ThreadPolicy;)V"/> + <method name="build()Landroid/os/StrictMode$ThreadPolicy;"/> + <method name="detectAll()Landroid/os/StrictMode$ThreadPolicy$Builder;"/> + <method name="detectCustomSlowCalls()Landroid/os/StrictMode$ThreadPolicy$Builder;" since="11"/> + <method name="detectDiskReads()Landroid/os/StrictMode$ThreadPolicy$Builder;"/> + <method name="detectDiskWrites()Landroid/os/StrictMode$ThreadPolicy$Builder;"/> + <method name="detectNetwork()Landroid/os/StrictMode$ThreadPolicy$Builder;"/> + <method name="detectResourceMismatches()Landroid/os/StrictMode$ThreadPolicy$Builder;" since="23"/> + <method name="detectUnbufferedIo()Landroid/os/StrictMode$ThreadPolicy$Builder;" since="26"/> + <method name="penaltyDeath()Landroid/os/StrictMode$ThreadPolicy$Builder;"/> + <method name="penaltyDeathOnNetwork()Landroid/os/StrictMode$ThreadPolicy$Builder;" since="11"/> + <method name="penaltyDialog()Landroid/os/StrictMode$ThreadPolicy$Builder;"/> + <method name="penaltyDropBox()Landroid/os/StrictMode$ThreadPolicy$Builder;"/> + <method name="penaltyFlashScreen()Landroid/os/StrictMode$ThreadPolicy$Builder;" since="11"/> + <method name="penaltyLog()Landroid/os/StrictMode$ThreadPolicy$Builder;"/> + <method name="permitAll()Landroid/os/StrictMode$ThreadPolicy$Builder;"/> + <method name="permitCustomSlowCalls()Landroid/os/StrictMode$ThreadPolicy$Builder;" since="11"/> + <method name="permitDiskReads()Landroid/os/StrictMode$ThreadPolicy$Builder;"/> + <method name="permitDiskWrites()Landroid/os/StrictMode$ThreadPolicy$Builder;"/> + <method name="permitNetwork()Landroid/os/StrictMode$ThreadPolicy$Builder;"/> + <method name="permitResourceMismatches()Landroid/os/StrictMode$ThreadPolicy$Builder;" since="23"/> + <method name="permitUnbufferedIo()Landroid/os/StrictMode$ThreadPolicy$Builder;" since="26"/> + </class> + <class name="android/os/StrictMode$VmPolicy" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="LAX"/> + </class> + <class name="android/os/StrictMode$VmPolicy$Builder" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/os/StrictMode$VmPolicy;)V" since="11"/> + <method name="build()Landroid/os/StrictMode$VmPolicy;"/> + <method name="detectActivityLeaks()Landroid/os/StrictMode$VmPolicy$Builder;" since="11"/> + <method name="detectAll()Landroid/os/StrictMode$VmPolicy$Builder;"/> + <method name="detectCleartextNetwork()Landroid/os/StrictMode$VmPolicy$Builder;" since="23"/> + <method name="detectContentUriWithoutPermission()Landroid/os/StrictMode$VmPolicy$Builder;" since="26"/> + <method name="detectFileUriExposure()Landroid/os/StrictMode$VmPolicy$Builder;" since="18"/> + <method name="detectLeakedClosableObjects()Landroid/os/StrictMode$VmPolicy$Builder;" since="11"/> + <method name="detectLeakedRegistrationObjects()Landroid/os/StrictMode$VmPolicy$Builder;" since="16"/> + <method name="detectLeakedSqlLiteObjects()Landroid/os/StrictMode$VmPolicy$Builder;"/> + <method name="detectUntaggedSockets()Landroid/os/StrictMode$VmPolicy$Builder;" since="26"/> + <method name="penaltyDeath()Landroid/os/StrictMode$VmPolicy$Builder;"/> + <method name="penaltyDeathOnCleartextNetwork()Landroid/os/StrictMode$VmPolicy$Builder;" since="23"/> + <method name="penaltyDeathOnFileUriExposure()Landroid/os/StrictMode$VmPolicy$Builder;" since="24"/> + <method name="penaltyDropBox()Landroid/os/StrictMode$VmPolicy$Builder;"/> + <method name="penaltyLog()Landroid/os/StrictMode$VmPolicy$Builder;"/> + <method name="setClassInstanceLimit(Ljava/lang/Class;I)Landroid/os/StrictMode$VmPolicy$Builder;" since="11"/> + </class> + <class name="android/os/SystemClock" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="currentThreadTimeMillis()J"/> + <method name="elapsedRealtime()J"/> + <method name="elapsedRealtimeNanos()J" since="17"/> + <method name="setCurrentTimeMillis(J)Z"/> + <method name="sleep(J)V"/> + <method name="uptimeMillis()J"/> + </class> + <class name="android/os/TestLooperManager" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="execute(Landroid/os/Message;)V"/> + <method name="getMessageQueue()Landroid/os/MessageQueue;"/> + <method name="hasMessages(Landroid/os/Handler;Ljava/lang/Object;I)Z"/> + <method name="hasMessages(Landroid/os/Handler;Ljava/lang/Object;Ljava/lang/Runnable;)Z"/> + <method name="next()Landroid/os/Message;"/> + <method name="recycle(Landroid/os/Message;)V"/> + <method name="release()V"/> + </class> + <class name="android/os/TokenWatcher" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/os/Handler;Ljava/lang/String;)V"/> + <method name="acquire(Landroid/os/IBinder;Ljava/lang/String;)V"/> + <method name="acquired()V"/> + <method name="cleanup(Landroid/os/IBinder;Z)V"/> + <method name="dump()V"/> + <method name="dump(Ljava/io/PrintWriter;)V" since="16"/> + <method name="isAcquired()Z"/> + <method name="release(Landroid/os/IBinder;)V"/> + <method name="released()V"/> + </class> + <class name="android/os/Trace" since="18"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="beginSection(Ljava/lang/String;)V"/> + <method name="endSection()V"/> + </class> + <class name="android/os/TransactionTooLargeException" since="15"> + <extends name="android/os/RemoteException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V" since="23"/> + </class> + <class name="android/os/UserHandle" since="17"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="getUserHandleForUid(I)Landroid/os/UserHandle;" since="24"/> + <method name="readFromParcel(Landroid/os/Parcel;)Landroid/os/UserHandle;"/> + <method name="writeToParcel(Landroid/os/UserHandle;Landroid/os/Parcel;)V"/> + <field name="CREATOR"/> + </class> + <class name="android/os/UserManager" since="17"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="createUserCreationIntent(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/PersistableBundle;)Landroid/content/Intent;" since="24"/> + <method name="getApplicationRestrictions(Ljava/lang/String;)Landroid/os/Bundle;" since="18"/> + <method name="getSerialNumberForUser(Landroid/os/UserHandle;)J"/> + <method name="getUserCount()I"/> + <method name="getUserCreationTime(Landroid/os/UserHandle;)J" since="23"/> + <method name="getUserForSerialNumber(J)Landroid/os/UserHandle;"/> + <method name="getUserName()Ljava/lang/String;"/> + <method name="getUserProfiles()Ljava/util/List;" since="21"/> + <method name="getUserRestrictions()Landroid/os/Bundle;" since="18"/> + <method name="getUserRestrictions(Landroid/os/UserHandle;)Landroid/os/Bundle;" since="18"/> + <method name="hasUserRestriction(Ljava/lang/String;)Z" since="21"/> + <method name="isDemoUser()Z" since="25"/> + <method name="isQuietModeEnabled(Landroid/os/UserHandle;)Z" since="24"/> + <method name="isSystemUser()Z" since="23"/> + <method name="isUserAGoat()Z"/> + <method name="isUserRunning(Landroid/os/UserHandle;)Z"/> + <method name="isUserRunningOrStopping(Landroid/os/UserHandle;)Z"/> + <method name="isUserUnlocked()Z" since="24"/> + <method name="isUserUnlocked(Landroid/os/UserHandle;)Z" since="24"/> + <method name="setRestrictionsChallenge(Ljava/lang/String;)Z" since="19" deprecated="23"/> + <method name="setUserRestriction(Ljava/lang/String;Z)V" since="18" deprecated="21"/> + <method name="setUserRestrictions(Landroid/os/Bundle;)V" since="18" deprecated="21"/> + <method name="setUserRestrictions(Landroid/os/Bundle;Landroid/os/UserHandle;)V" since="18" deprecated="21"/> + <method name="supportsMultipleUsers()Z" since="24"/> + <field name="ALLOW_PARENT_PROFILE_APP_LINKING" since="23"/> + <field name="DISALLOW_ADD_MANAGED_PROFILE" since="26"/> + <field name="DISALLOW_ADD_USER" since="21"/> + <field name="DISALLOW_ADJUST_VOLUME" since="21"/> + <field name="DISALLOW_APPS_CONTROL" since="21"/> + <field name="DISALLOW_AUTOFILL" since="26"/> + <field name="DISALLOW_BLUETOOTH" since="26"/> + <field name="DISALLOW_BLUETOOTH_SHARING" since="26"/> + <field name="DISALLOW_CONFIG_BLUETOOTH" since="18"/> + <field name="DISALLOW_CONFIG_CELL_BROADCASTS" since="21"/> + <field name="DISALLOW_CONFIG_CREDENTIALS" since="18"/> + <field name="DISALLOW_CONFIG_MOBILE_NETWORKS" since="21"/> + <field name="DISALLOW_CONFIG_TETHERING" since="21"/> + <field name="DISALLOW_CONFIG_VPN" since="21"/> + <field name="DISALLOW_CONFIG_WIFI" since="18"/> + <field name="DISALLOW_CREATE_WINDOWS" since="21"/> + <field name="DISALLOW_CROSS_PROFILE_COPY_PASTE" since="21"/> + <field name="DISALLOW_DATA_ROAMING" since="24"/> + <field name="DISALLOW_DEBUGGING_FEATURES" since="21"/> + <field name="DISALLOW_FACTORY_RESET" since="21"/> + <field name="DISALLOW_FUN" since="23"/> + <field name="DISALLOW_INSTALL_APPS" since="18"/> + <field name="DISALLOW_INSTALL_UNKNOWN_SOURCES" since="18"/> + <field name="DISALLOW_MODIFY_ACCOUNTS" since="18"/> + <field name="DISALLOW_MOUNT_PHYSICAL_MEDIA" since="21"/> + <field name="DISALLOW_NETWORK_RESET" since="23"/> + <field name="DISALLOW_OUTGOING_BEAM" since="22"/> + <field name="DISALLOW_OUTGOING_CALLS" since="21"/> + <field name="DISALLOW_REMOVE_MANAGED_PROFILE" since="26"/> + <field name="DISALLOW_REMOVE_USER" since="18"/> + <field name="DISALLOW_SAFE_BOOT" since="23"/> + <field name="DISALLOW_SET_USER_ICON" since="24"/> + <field name="DISALLOW_SET_WALLPAPER" since="24"/> + <field name="DISALLOW_SHARE_LOCATION" since="18"/> + <field name="DISALLOW_SMS" since="21"/> + <field name="DISALLOW_UNINSTALL_APPS" since="18"/> + <field name="DISALLOW_UNMUTE_MICROPHONE" since="21"/> + <field name="DISALLOW_USB_FILE_TRANSFER" since="18"/> + <field name="ENSURE_VERIFY_APPS" since="21"/> + <field name="KEY_RESTRICTIONS_PENDING" since="22"/> + <field name="USER_CREATION_FAILED_NOT_PERMITTED" since="24"/> + <field name="USER_CREATION_FAILED_NO_MORE_USERS" since="24"/> + </class> + <class name="android/os/VibrationEffect" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="createOneShot(JI)Landroid/os/VibrationEffect;"/> + <method name="createWaveform([JI)Landroid/os/VibrationEffect;"/> + <method name="createWaveform([J[II)Landroid/os/VibrationEffect;"/> + <field name="CREATOR"/> + <field name="DEFAULT_AMPLITUDE"/> + </class> + <class name="android/os/Vibrator" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="cancel()V"/> + <method name="hasAmplitudeControl()Z" since="26"/> + <method name="hasVibrator()Z" since="11"/> + <method name="vibrate(J)V" deprecated="26"/> + <method name="vibrate(JLandroid/media/AudioAttributes;)V" since="21" deprecated="26"/> + <method name="vibrate(Landroid/os/VibrationEffect;)V" since="26"/> + <method name="vibrate(Landroid/os/VibrationEffect;Landroid/media/AudioAttributes;)V" since="26"/> + <method name="vibrate([JI)V" deprecated="26"/> + <method name="vibrate([JILandroid/media/AudioAttributes;)V" since="21" deprecated="26"/> + </class> + <class name="android/os/WorkSource" since="9"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/os/WorkSource;)V"/> + <method name="add(Landroid/os/WorkSource;)Z"/> + <method name="clear()V"/> + <method name="diff(Landroid/os/WorkSource;)Z"/> + <method name="remove(Landroid/os/WorkSource;)Z"/> + <method name="set(Landroid/os/WorkSource;)V"/> + <field name="CREATOR"/> + </class> + <class name="android/os/health/HealthStats" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getDataType()Ljava/lang/String;"/> + <method name="getMeasurement(I)J"/> + <method name="getMeasurementKeyAt(I)I"/> + <method name="getMeasurementKeyCount()I"/> + <method name="getMeasurements(I)Ljava/util/Map;"/> + <method name="getMeasurementsKeyAt(I)I"/> + <method name="getMeasurementsKeyCount()I"/> + <method name="getStats(I)Ljava/util/Map;"/> + <method name="getStatsKeyAt(I)I"/> + <method name="getStatsKeyCount()I"/> + <method name="getTimer(I)Landroid/os/health/TimerStat;"/> + <method name="getTimerCount(I)I"/> + <method name="getTimerKeyAt(I)I"/> + <method name="getTimerKeyCount()I"/> + <method name="getTimerTime(I)J"/> + <method name="getTimers(I)Ljava/util/Map;"/> + <method name="getTimersKeyAt(I)I"/> + <method name="getTimersKeyCount()I"/> + <method name="hasMeasurement(I)Z"/> + <method name="hasMeasurements(I)Z"/> + <method name="hasStats(I)Z"/> + <method name="hasTimer(I)Z"/> + <method name="hasTimers(I)Z"/> + </class> + <class name="android/os/health/PackageHealthStats" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="MEASUREMENTS_WAKEUP_ALARMS_COUNT"/> + <field name="STATS_SERVICES"/> + </class> + <class name="android/os/health/PidHealthStats" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="MEASUREMENT_WAKE_NESTING_COUNT"/> + <field name="MEASUREMENT_WAKE_START_MS"/> + <field name="MEASUREMENT_WAKE_SUM_MS"/> + </class> + <class name="android/os/health/ProcessHealthStats" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="MEASUREMENT_ANR_COUNT"/> + <field name="MEASUREMENT_CRASHES_COUNT"/> + <field name="MEASUREMENT_FOREGROUND_MS"/> + <field name="MEASUREMENT_STARTS_COUNT"/> + <field name="MEASUREMENT_SYSTEM_TIME_MS"/> + <field name="MEASUREMENT_USER_TIME_MS"/> + </class> + <class name="android/os/health/ServiceHealthStats" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="MEASUREMENT_LAUNCH_COUNT"/> + <field name="MEASUREMENT_START_SERVICE_COUNT"/> + </class> + <class name="android/os/health/SystemHealthManager" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="takeMyUidSnapshot()Landroid/os/health/HealthStats;"/> + <method name="takeUidSnapshot(I)Landroid/os/health/HealthStats;"/> + <method name="takeUidSnapshots([I)[Landroid/os/health/HealthStats;"/> + </class> + <class name="android/os/health/TimerStat" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(IJ)V"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="getCount()I"/> + <method name="getTime()J"/> + <method name="setCount(I)V"/> + <method name="setTime(J)V"/> + <field name="CREATOR"/> + </class> + <class name="android/os/health/UidHealthStats" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="MEASUREMENT_BLUETOOTH_IDLE_MS"/> + <field name="MEASUREMENT_BLUETOOTH_POWER_MAMS"/> + <field name="MEASUREMENT_BLUETOOTH_RX_BYTES"/> + <field name="MEASUREMENT_BLUETOOTH_RX_MS"/> + <field name="MEASUREMENT_BLUETOOTH_RX_PACKETS"/> + <field name="MEASUREMENT_BLUETOOTH_TX_BYTES"/> + <field name="MEASUREMENT_BLUETOOTH_TX_MS"/> + <field name="MEASUREMENT_BLUETOOTH_TX_PACKETS"/> + <field name="MEASUREMENT_BUTTON_USER_ACTIVITY_COUNT"/> + <field name="MEASUREMENT_CPU_POWER_MAMS" deprecated="26"/> + <field name="MEASUREMENT_MOBILE_IDLE_MS"/> + <field name="MEASUREMENT_MOBILE_POWER_MAMS"/> + <field name="MEASUREMENT_MOBILE_RX_BYTES"/> + <field name="MEASUREMENT_MOBILE_RX_MS"/> + <field name="MEASUREMENT_MOBILE_RX_PACKETS"/> + <field name="MEASUREMENT_MOBILE_TX_BYTES"/> + <field name="MEASUREMENT_MOBILE_TX_MS"/> + <field name="MEASUREMENT_MOBILE_TX_PACKETS"/> + <field name="MEASUREMENT_OTHER_USER_ACTIVITY_COUNT"/> + <field name="MEASUREMENT_REALTIME_BATTERY_MS"/> + <field name="MEASUREMENT_REALTIME_SCREEN_OFF_BATTERY_MS"/> + <field name="MEASUREMENT_SYSTEM_CPU_TIME_MS"/> + <field name="MEASUREMENT_TOUCH_USER_ACTIVITY_COUNT"/> + <field name="MEASUREMENT_UPTIME_BATTERY_MS"/> + <field name="MEASUREMENT_UPTIME_SCREEN_OFF_BATTERY_MS"/> + <field name="MEASUREMENT_USER_CPU_TIME_MS"/> + <field name="MEASUREMENT_WIFI_FULL_LOCK_MS"/> + <field name="MEASUREMENT_WIFI_IDLE_MS"/> + <field name="MEASUREMENT_WIFI_MULTICAST_MS"/> + <field name="MEASUREMENT_WIFI_POWER_MAMS"/> + <field name="MEASUREMENT_WIFI_RUNNING_MS"/> + <field name="MEASUREMENT_WIFI_RX_BYTES"/> + <field name="MEASUREMENT_WIFI_RX_MS"/> + <field name="MEASUREMENT_WIFI_RX_PACKETS"/> + <field name="MEASUREMENT_WIFI_TX_BYTES"/> + <field name="MEASUREMENT_WIFI_TX_MS"/> + <field name="MEASUREMENT_WIFI_TX_PACKETS"/> + <field name="STATS_PACKAGES"/> + <field name="STATS_PIDS"/> + <field name="STATS_PROCESSES"/> + <field name="TIMERS_JOBS"/> + <field name="TIMERS_SENSORS"/> + <field name="TIMERS_SYNCS"/> + <field name="TIMERS_WAKELOCKS_DRAW"/> + <field name="TIMERS_WAKELOCKS_FULL"/> + <field name="TIMERS_WAKELOCKS_PARTIAL"/> + <field name="TIMERS_WAKELOCKS_WINDOW"/> + <field name="TIMER_AUDIO"/> + <field name="TIMER_BLUETOOTH_SCAN"/> + <field name="TIMER_CAMERA"/> + <field name="TIMER_FLASHLIGHT"/> + <field name="TIMER_FOREGROUND_ACTIVITY"/> + <field name="TIMER_GPS_SENSOR"/> + <field name="TIMER_MOBILE_RADIO_ACTIVE"/> + <field name="TIMER_PROCESS_STATE_BACKGROUND_MS"/> + <field name="TIMER_PROCESS_STATE_CACHED_MS"/> + <field name="TIMER_PROCESS_STATE_FOREGROUND_MS"/> + <field name="TIMER_PROCESS_STATE_FOREGROUND_SERVICE_MS"/> + <field name="TIMER_PROCESS_STATE_TOP_MS"/> + <field name="TIMER_PROCESS_STATE_TOP_SLEEPING_MS"/> + <field name="TIMER_VIBRATOR"/> + <field name="TIMER_VIDEO"/> + <field name="TIMER_WIFI_SCAN"/> + </class> + <class name="android/os/storage/OnObbStateChangeListener" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onObbStateChange(Ljava/lang/String;I)V"/> + <field name="ERROR_ALREADY_MOUNTED"/> + <field name="ERROR_COULD_NOT_MOUNT"/> + <field name="ERROR_COULD_NOT_UNMOUNT"/> + <field name="ERROR_INTERNAL"/> + <field name="ERROR_NOT_MOUNTED"/> + <field name="ERROR_PERMISSION_DENIED"/> + <field name="MOUNTED"/> + <field name="UNMOUNTED"/> + </class> + <class name="android/os/storage/StorageManager" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="allocateBytes(Ljava/io/FileDescriptor;J)V" since="26"/> + <method name="allocateBytes(Ljava/util/UUID;J)V" since="26"/> + <method name="getAllocatableBytes(Ljava/util/UUID;)J" since="26"/> + <method name="getCacheQuotaBytes(Ljava/util/UUID;)J" since="26"/> + <method name="getCacheSizeBytes(Ljava/util/UUID;)J" since="26"/> + <method name="getMountedObbPath(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getPrimaryStorageVolume()Landroid/os/storage/StorageVolume;" since="24"/> + <method name="getStorageVolume(Ljava/io/File;)Landroid/os/storage/StorageVolume;" since="24"/> + <method name="getStorageVolumes()Ljava/util/List;" since="24"/> + <method name="getUuidForPath(Ljava/io/File;)Ljava/util/UUID;" since="26"/> + <method name="isCacheBehaviorGroup(Ljava/io/File;)Z" since="26"/> + <method name="isCacheBehaviorTombstone(Ljava/io/File;)Z" since="26"/> + <method name="isEncrypted(Ljava/io/File;)Z" since="24"/> + <method name="isObbMounted(Ljava/lang/String;)Z"/> + <method name="mountObb(Ljava/lang/String;Ljava/lang/String;Landroid/os/storage/OnObbStateChangeListener;)Z"/> + <method name="openProxyFileDescriptor(ILandroid/os/ProxyFileDescriptorCallback;Landroid/os/Handler;)Landroid/os/ParcelFileDescriptor;" since="26"/> + <method name="setCacheBehaviorGroup(Ljava/io/File;Z)V" since="26"/> + <method name="setCacheBehaviorTombstone(Ljava/io/File;Z)V" since="26"/> + <method name="unmountObb(Ljava/lang/String;ZLandroid/os/storage/OnObbStateChangeListener;)Z"/> + <field name="ACTION_MANAGE_STORAGE" since="25"/> + <field name="EXTRA_REQUESTED_BYTES" since="26"/> + <field name="EXTRA_UUID" since="26"/> + <field name="UUID_DEFAULT" since="26"/> + </class> + <class name="android/os/storage/StorageVolume" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="createAccessIntent(Ljava/lang/String;)Landroid/content/Intent;"/> + <method name="getDescription(Landroid/content/Context;)Ljava/lang/String;"/> + <method name="getState()Ljava/lang/String;"/> + <method name="getUuid()Ljava/lang/String;"/> + <method name="isEmulated()Z"/> + <method name="isPrimary()Z"/> + <method name="isRemovable()Z"/> + <field name="CREATOR"/> + <field name="EXTRA_STORAGE_VOLUME"/> + </class> + <class name="android/preference/CheckBoxPreference" since="1"> + <extends name="android/preference/Preference" removed="14"/> + <extends name="android/preference/TwoStatePreference" since="14"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getDisableDependentsState()Z" removed="14"/> + <method name="getSummaryOff()Ljava/lang/CharSequence;" removed="14"/> + <method name="getSummaryOn()Ljava/lang/CharSequence;" removed="14"/> + <method name="isChecked()Z" removed="14"/> + <method name="setChecked(Z)V" removed="14"/> + <method name="setDisableDependentsState(Z)V" removed="14"/> + <method name="setSummaryOff(I)V" removed="14"/> + <method name="setSummaryOff(Ljava/lang/CharSequence;)V" removed="14"/> + <method name="setSummaryOn(I)V" removed="14"/> + <method name="setSummaryOn(Ljava/lang/CharSequence;)V" removed="14"/> + </class> + <class name="android/preference/DialogPreference" since="1"> + <extends name="android/preference/Preference"/> + <implements name="android/content/DialogInterface$OnClickListener"/> + <implements name="android/content/DialogInterface$OnDismissListener"/> + <implements name="android/preference/PreferenceManager$OnActivityDestroyListener"/> + <method name="<init>(Landroid/content/Context;)V" since="21"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getDialog()Landroid/app/Dialog;" since="3"/> + <method name="getDialogIcon()Landroid/graphics/drawable/Drawable;"/> + <method name="getDialogLayoutResource()I"/> + <method name="getDialogMessage()Ljava/lang/CharSequence;"/> + <method name="getDialogTitle()Ljava/lang/CharSequence;"/> + <method name="getNegativeButtonText()Ljava/lang/CharSequence;"/> + <method name="getPositiveButtonText()Ljava/lang/CharSequence;"/> + <method name="onBindDialogView(Landroid/view/View;)V"/> + <method name="onCreateDialogView()Landroid/view/View;"/> + <method name="onDialogClosed(Z)V"/> + <method name="onPrepareDialogBuilder(Landroid/app/AlertDialog$Builder;)V"/> + <method name="setDialogIcon(I)V"/> + <method name="setDialogIcon(Landroid/graphics/drawable/Drawable;)V"/> + <method name="setDialogLayoutResource(I)V"/> + <method name="setDialogMessage(I)V"/> + <method name="setDialogMessage(Ljava/lang/CharSequence;)V"/> + <method name="setDialogTitle(I)V"/> + <method name="setDialogTitle(Ljava/lang/CharSequence;)V"/> + <method name="setNegativeButtonText(I)V"/> + <method name="setNegativeButtonText(Ljava/lang/CharSequence;)V"/> + <method name="setPositiveButtonText(I)V"/> + <method name="setPositiveButtonText(Ljava/lang/CharSequence;)V"/> + <method name="showDialog(Landroid/os/Bundle;)V"/> + </class> + <class name="android/preference/EditTextPreference" since="1"> + <extends name="android/preference/DialogPreference"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getEditText()Landroid/widget/EditText;"/> + <method name="getText()Ljava/lang/String;"/> + <method name="onAddEditTextToDialogView(Landroid/view/View;Landroid/widget/EditText;)V"/> + <method name="setText(Ljava/lang/String;)V"/> + </class> + <class name="android/preference/ListPreference" since="1"> + <extends name="android/preference/DialogPreference"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" since="21"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="findIndexOfValue(Ljava/lang/String;)I"/> + <method name="getEntries()[Ljava/lang/CharSequence;"/> + <method name="getEntry()Ljava/lang/CharSequence;"/> + <method name="getEntryValues()[Ljava/lang/CharSequence;"/> + <method name="getValue()Ljava/lang/String;"/> + <method name="setEntries(I)V"/> + <method name="setEntries([Ljava/lang/CharSequence;)V"/> + <method name="setEntryValues(I)V"/> + <method name="setEntryValues([Ljava/lang/CharSequence;)V"/> + <method name="setValue(Ljava/lang/String;)V"/> + <method name="setValueIndex(I)V"/> + </class> + <class name="android/preference/MultiSelectListPreference" since="11"> + <extends name="android/preference/DialogPreference"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" since="21"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="findIndexOfValue(Ljava/lang/String;)I"/> + <method name="getEntries()[Ljava/lang/CharSequence;"/> + <method name="getEntryValues()[Ljava/lang/CharSequence;"/> + <method name="getValues()Ljava/util/Set;"/> + <method name="setEntries(I)V"/> + <method name="setEntries([Ljava/lang/CharSequence;)V"/> + <method name="setEntryValues(I)V"/> + <method name="setEntryValues([Ljava/lang/CharSequence;)V"/> + <method name="setValues(Ljava/util/Set;)V"/> + </class> + <class name="android/preference/Preference" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Comparable"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="callChangeListener(Ljava/lang/Object;)Z"/> + <method name="compareTo(Landroid/preference/Preference;)I"/> + <method name="findPreferenceInHierarchy(Ljava/lang/String;)Landroid/preference/Preference;"/> + <method name="getContext()Landroid/content/Context;"/> + <method name="getDependency()Ljava/lang/String;"/> + <method name="getEditor()Landroid/content/SharedPreferences$Editor;"/> + <method name="getExtras()Landroid/os/Bundle;" since="11"/> + <method name="getFragment()Ljava/lang/String;" since="11"/> + <method name="getIcon()Landroid/graphics/drawable/Drawable;" since="11"/> + <method name="getIntent()Landroid/content/Intent;"/> + <method name="getKey()Ljava/lang/String;"/> + <method name="getLayoutResource()I"/> + <method name="getOnPreferenceChangeListener()Landroid/preference/Preference$OnPreferenceChangeListener;"/> + <method name="getOnPreferenceClickListener()Landroid/preference/Preference$OnPreferenceClickListener;"/> + <method name="getOrder()I"/> + <method name="getParent()Landroid/preference/PreferenceGroup;" since="26"/> + <method name="getPersistedBoolean(Z)Z"/> + <method name="getPersistedFloat(F)F"/> + <method name="getPersistedInt(I)I"/> + <method name="getPersistedLong(J)J"/> + <method name="getPersistedString(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getPersistedStringSet(Ljava/util/Set;)Ljava/util/Set;" since="24"/> + <method name="getPreferenceDataStore()Landroid/preference/PreferenceDataStore;" since="26"/> + <method name="getPreferenceManager()Landroid/preference/PreferenceManager;"/> + <method name="getSharedPreferences()Landroid/content/SharedPreferences;"/> + <method name="getShouldDisableView()Z"/> + <method name="getSummary()Ljava/lang/CharSequence;"/> + <method name="getTitle()Ljava/lang/CharSequence;"/> + <method name="getTitleRes()I" since="14"/> + <method name="getView(Landroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;"/> + <method name="getWidgetLayoutResource()I"/> + <method name="hasKey()Z"/> + <method name="isEnabled()Z"/> + <method name="isIconSpaceReserved()Z" since="26"/> + <method name="isPersistent()Z"/> + <method name="isRecycleEnabled()Z" since="26"/> + <method name="isSelectable()Z"/> + <method name="isSingleLineTitle()Z" since="26"/> + <method name="notifyChanged()V"/> + <method name="notifyDependencyChange(Z)V"/> + <method name="notifyHierarchyChanged()V"/> + <method name="onAttachedToActivity()V"/> + <method name="onAttachedToHierarchy(Landroid/preference/PreferenceManager;)V"/> + <method name="onBindView(Landroid/view/View;)V"/> + <method name="onClick()V"/> + <method name="onCreateView(Landroid/view/ViewGroup;)Landroid/view/View;"/> + <method name="onDependencyChanged(Landroid/preference/Preference;Z)V"/> + <method name="onGetDefaultValue(Landroid/content/res/TypedArray;I)Ljava/lang/Object;"/> + <method name="onParentChanged(Landroid/preference/Preference;Z)V" since="19"/> + <method name="onPrepareForRemoval()V"/> + <method name="onRestoreInstanceState(Landroid/os/Parcelable;)V"/> + <method name="onSaveInstanceState()Landroid/os/Parcelable;"/> + <method name="onSetInitialValue(ZLjava/lang/Object;)V"/> + <method name="peekExtras()Landroid/os/Bundle;" since="11"/> + <method name="persistBoolean(Z)Z"/> + <method name="persistFloat(F)Z"/> + <method name="persistInt(I)Z"/> + <method name="persistLong(J)Z"/> + <method name="persistString(Ljava/lang/String;)Z"/> + <method name="persistStringSet(Ljava/util/Set;)Z" since="24"/> + <method name="restoreHierarchyState(Landroid/os/Bundle;)V"/> + <method name="saveHierarchyState(Landroid/os/Bundle;)V"/> + <method name="setDefaultValue(Ljava/lang/Object;)V"/> + <method name="setDependency(Ljava/lang/String;)V"/> + <method name="setEnabled(Z)V"/> + <method name="setFragment(Ljava/lang/String;)V" since="11"/> + <method name="setIcon(I)V" since="11"/> + <method name="setIcon(Landroid/graphics/drawable/Drawable;)V" since="11"/> + <method name="setIconSpaceReserved(Z)V" since="26"/> + <method name="setIntent(Landroid/content/Intent;)V"/> + <method name="setKey(Ljava/lang/String;)V"/> + <method name="setLayoutResource(I)V"/> + <method name="setOnPreferenceChangeListener(Landroid/preference/Preference$OnPreferenceChangeListener;)V"/> + <method name="setOnPreferenceClickListener(Landroid/preference/Preference$OnPreferenceClickListener;)V"/> + <method name="setOrder(I)V"/> + <method name="setPersistent(Z)V"/> + <method name="setPreferenceDataStore(Landroid/preference/PreferenceDataStore;)V" since="26"/> + <method name="setRecycleEnabled(Z)V" since="26"/> + <method name="setSelectable(Z)V"/> + <method name="setShouldDisableView(Z)V"/> + <method name="setSingleLineTitle(Z)V" since="26"/> + <method name="setSummary(I)V"/> + <method name="setSummary(Ljava/lang/CharSequence;)V"/> + <method name="setTitle(I)V"/> + <method name="setTitle(Ljava/lang/CharSequence;)V"/> + <method name="setWidgetLayoutResource(I)V"/> + <method name="shouldCommit()Z"/> + <method name="shouldDisableDependents()Z"/> + <method name="shouldPersist()Z"/> + <field name="DEFAULT_ORDER"/> + </class> + <class name="android/preference/Preference$BaseSavedState" since="1"> + <extends name="android/view/AbsSavedState"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="<init>(Landroid/os/Parcelable;)V"/> + <field name="CREATOR"/> + </class> + <class name="android/preference/Preference$OnPreferenceChangeListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onPreferenceChange(Landroid/preference/Preference;Ljava/lang/Object;)Z"/> + </class> + <class name="android/preference/Preference$OnPreferenceClickListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onPreferenceClick(Landroid/preference/Preference;)Z"/> + </class> + <class name="android/preference/PreferenceActivity" since="1"> + <extends name="android/app/ListActivity"/> + <implements name="android/preference/PreferenceFragment$OnPreferenceStartFragmentCallback" since="11"/> + <method name="<init>()V"/> + <method name="addPreferencesFromIntent(Landroid/content/Intent;)V" deprecated="16"/> + <method name="addPreferencesFromResource(I)V" deprecated="16"/> + <method name="findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;" deprecated="16"/> + <method name="finishPreferencePanel(Landroid/app/Fragment;ILandroid/content/Intent;)V" since="11"/> + <method name="getPreferenceManager()Landroid/preference/PreferenceManager;" deprecated="16"/> + <method name="getPreferenceScreen()Landroid/preference/PreferenceScreen;" deprecated="16"/> + <method name="hasHeaders()Z" since="11"/> + <method name="invalidateHeaders()V" since="11"/> + <method name="isMultiPane()Z" since="11"/> + <method name="isValidFragment(Ljava/lang/String;)Z" since="19"/> + <method name="loadHeadersFromResource(ILjava/util/List;)V" since="11"/> + <method name="onBuildHeaders(Ljava/util/List;)V" since="11"/> + <method name="onBuildStartFragmentIntent(Ljava/lang/String;Landroid/os/Bundle;II)Landroid/content/Intent;" since="14"/> + <method name="onGetInitialHeader()Landroid/preference/PreferenceActivity$Header;" since="11"/> + <method name="onGetNewHeader()Landroid/preference/PreferenceActivity$Header;" since="11"/> + <method name="onHeaderClick(Landroid/preference/PreferenceActivity$Header;I)V" since="11"/> + <method name="onIsHidingHeaders()Z" since="11"/> + <method name="onIsMultiPane()Z" since="11"/> + <method name="onPreferenceTreeClick(Landroid/preference/PreferenceScreen;Landroid/preference/Preference;)Z" deprecated="16"/> + <method name="setListFooter(Landroid/view/View;)V" since="11"/> + <method name="setParentTitle(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/view/View$OnClickListener;)V" since="11"/> + <method name="setPreferenceScreen(Landroid/preference/PreferenceScreen;)V" deprecated="16"/> + <method name="showBreadCrumbs(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V" since="11"/> + <method name="startPreferenceFragment(Landroid/app/Fragment;Z)V" since="11"/> + <method name="startPreferencePanel(Ljava/lang/String;Landroid/os/Bundle;ILjava/lang/CharSequence;Landroid/app/Fragment;I)V" since="11"/> + <method name="startWithFragment(Ljava/lang/String;Landroid/os/Bundle;Landroid/app/Fragment;I)V" since="11"/> + <method name="startWithFragment(Ljava/lang/String;Landroid/os/Bundle;Landroid/app/Fragment;III)V" since="14"/> + <method name="switchToHeader(Landroid/preference/PreferenceActivity$Header;)V" since="11"/> + <method name="switchToHeader(Ljava/lang/String;Landroid/os/Bundle;)V" since="11"/> + <field name="EXTRA_NO_HEADERS" since="11"/> + <field name="EXTRA_SHOW_FRAGMENT" since="11"/> + <field name="EXTRA_SHOW_FRAGMENT_ARGUMENTS" since="11"/> + <field name="EXTRA_SHOW_FRAGMENT_SHORT_TITLE" since="14"/> + <field name="EXTRA_SHOW_FRAGMENT_TITLE" since="14"/> + <field name="HEADER_ID_UNDEFINED" since="11"/> + </class> + <class name="android/preference/PreferenceActivity$Header" since="11"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getBreadCrumbShortTitle(Landroid/content/res/Resources;)Ljava/lang/CharSequence;"/> + <method name="getBreadCrumbTitle(Landroid/content/res/Resources;)Ljava/lang/CharSequence;"/> + <method name="getSummary(Landroid/content/res/Resources;)Ljava/lang/CharSequence;"/> + <method name="getTitle(Landroid/content/res/Resources;)Ljava/lang/CharSequence;"/> + <method name="readFromParcel(Landroid/os/Parcel;)V"/> + <field name="CREATOR"/> + <field name="breadCrumbShortTitle"/> + <field name="breadCrumbShortTitleRes"/> + <field name="breadCrumbTitle"/> + <field name="breadCrumbTitleRes"/> + <field name="extras"/> + <field name="fragment"/> + <field name="fragmentArguments"/> + <field name="iconRes"/> + <field name="id"/> + <field name="intent"/> + <field name="summary"/> + <field name="summaryRes"/> + <field name="title"/> + <field name="titleRes"/> + </class> + <class name="android/preference/PreferenceCategory" since="1"> + <extends name="android/preference/PreferenceGroup"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + </class> + <class name="android/preference/PreferenceDataStore" since="26"> + <extends name="java/lang/Object"/> + <method name="getBoolean(Ljava/lang/String;Z)Z"/> + <method name="getFloat(Ljava/lang/String;F)F"/> + <method name="getInt(Ljava/lang/String;I)I"/> + <method name="getLong(Ljava/lang/String;J)J"/> + <method name="getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getStringSet(Ljava/lang/String;Ljava/util/Set;)Ljava/util/Set;"/> + <method name="putBoolean(Ljava/lang/String;Z)V"/> + <method name="putFloat(Ljava/lang/String;F)V"/> + <method name="putInt(Ljava/lang/String;I)V"/> + <method name="putLong(Ljava/lang/String;J)V"/> + <method name="putString(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="putStringSet(Ljava/lang/String;Ljava/util/Set;)V"/> + </class> + <class name="android/preference/PreferenceFragment" since="11"> + <extends name="android/app/Fragment"/> + <method name="<init>()V"/> + <method name="addPreferencesFromIntent(Landroid/content/Intent;)V"/> + <method name="addPreferencesFromResource(I)V"/> + <method name="findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;"/> + <method name="getPreferenceManager()Landroid/preference/PreferenceManager;"/> + <method name="getPreferenceScreen()Landroid/preference/PreferenceScreen;"/> + <method name="onPreferenceTreeClick(Landroid/preference/PreferenceScreen;Landroid/preference/Preference;)Z"/> + <method name="setPreferenceScreen(Landroid/preference/PreferenceScreen;)V"/> + </class> + <class name="android/preference/PreferenceFragment$OnPreferenceStartFragmentCallback" since="11"> + <extends name="java/lang/Object"/> + <method name="onPreferenceStartFragment(Landroid/preference/PreferenceFragment;Landroid/preference/Preference;)Z"/> + </class> + <class name="android/preference/PreferenceGroup" since="1"> + <extends name="android/preference/Preference"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="addItemFromInflater(Landroid/preference/Preference;)V"/> + <method name="addPreference(Landroid/preference/Preference;)Z"/> + <method name="dispatchRestoreInstanceState(Landroid/os/Bundle;)V"/> + <method name="dispatchSaveInstanceState(Landroid/os/Bundle;)V"/> + <method name="findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;"/> + <method name="getPreference(I)Landroid/preference/Preference;"/> + <method name="getPreferenceCount()I"/> + <method name="isOnSameScreenAsChildren()Z"/> + <method name="isOrderingAsAdded()Z"/> + <method name="onPrepareAddPreference(Landroid/preference/Preference;)Z"/> + <method name="removeAll()V"/> + <method name="removePreference(Landroid/preference/Preference;)Z"/> + <method name="setOrderingAsAdded(Z)V"/> + </class> + <class name="android/preference/PreferenceManager" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="createPreferenceScreen(Landroid/content/Context;)Landroid/preference/PreferenceScreen;"/> + <method name="findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;"/> + <method name="getDefaultSharedPreferences(Landroid/content/Context;)Landroid/content/SharedPreferences;"/> + <method name="getDefaultSharedPreferencesName(Landroid/content/Context;)Ljava/lang/String;" since="24"/> + <method name="getPreferenceDataStore()Landroid/preference/PreferenceDataStore;" since="26"/> + <method name="getSharedPreferences()Landroid/content/SharedPreferences;"/> + <method name="getSharedPreferencesMode()I"/> + <method name="getSharedPreferencesName()Ljava/lang/String;"/> + <method name="isStorageDefault()Z" since="24"/> + <method name="isStorageDeviceProtected()Z" since="24"/> + <method name="setDefaultValues(Landroid/content/Context;IZ)V"/> + <method name="setDefaultValues(Landroid/content/Context;Ljava/lang/String;IIZ)V"/> + <method name="setPreferenceDataStore(Landroid/preference/PreferenceDataStore;)V" since="26"/> + <method name="setSharedPreferencesMode(I)V"/> + <method name="setSharedPreferencesName(Ljava/lang/String;)V"/> + <method name="setStorageDefault()V" since="24"/> + <method name="setStorageDeviceProtected()V" since="24"/> + <field name="KEY_HAS_SET_DEFAULT_VALUES"/> + <field name="METADATA_KEY_PREFERENCES"/> + </class> + <class name="android/preference/PreferenceManager$OnActivityDestroyListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onActivityDestroy()V"/> + </class> + <class name="android/preference/PreferenceManager$OnActivityResultListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onActivityResult(IILandroid/content/Intent;)Z"/> + </class> + <class name="android/preference/PreferenceManager$OnActivityStopListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onActivityStop()V"/> + </class> + <class name="android/preference/PreferenceScreen" since="1"> + <extends name="android/preference/PreferenceGroup"/> + <implements name="android/content/DialogInterface$OnDismissListener"/> + <implements name="android/widget/AdapterView$OnItemClickListener"/> + <method name="<init>()V"/> + <method name="bind(Landroid/widget/ListView;)V"/> + <method name="getDialog()Landroid/app/Dialog;"/> + <method name="getRootAdapter()Landroid/widget/ListAdapter;"/> + <method name="onCreateRootAdapter()Landroid/widget/ListAdapter;"/> + </class> + <class name="android/preference/RingtonePreference" since="1"> + <extends name="android/preference/Preference"/> + <implements name="android/preference/PreferenceManager$OnActivityResultListener"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getRingtoneType()I"/> + <method name="getShowDefault()Z"/> + <method name="getShowSilent()Z"/> + <method name="onPrepareRingtonePickerIntent(Landroid/content/Intent;)V"/> + <method name="onRestoreRingtone()Landroid/net/Uri;"/> + <method name="onSaveRingtone(Landroid/net/Uri;)V"/> + <method name="setRingtoneType(I)V"/> + <method name="setShowDefault(Z)V"/> + <method name="setShowSilent(Z)V"/> + </class> + <class name="android/preference/SwitchPreference" since="14"> + <extends name="android/preference/TwoStatePreference"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getSwitchTextOff()Ljava/lang/CharSequence;"/> + <method name="getSwitchTextOn()Ljava/lang/CharSequence;"/> + <method name="setSwitchTextOff(I)V"/> + <method name="setSwitchTextOff(Ljava/lang/CharSequence;)V"/> + <method name="setSwitchTextOn(I)V"/> + <method name="setSwitchTextOn(Ljava/lang/CharSequence;)V"/> + </class> + <class name="android/preference/TwoStatePreference" since="14"> + <extends name="android/preference/Preference"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getDisableDependentsState()Z"/> + <method name="getSummaryOff()Ljava/lang/CharSequence;"/> + <method name="getSummaryOn()Ljava/lang/CharSequence;"/> + <method name="isChecked()Z"/> + <method name="setChecked(Z)V"/> + <method name="setDisableDependentsState(Z)V"/> + <method name="setSummaryOff(I)V"/> + <method name="setSummaryOff(Ljava/lang/CharSequence;)V"/> + <method name="setSummaryOn(I)V"/> + <method name="setSummaryOn(Ljava/lang/CharSequence;)V"/> + </class> + <class name="android/print/PageRange" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(II)V"/> + <method name="getEnd()I"/> + <method name="getStart()I"/> + <field name="ALL_PAGES"/> + <field name="CREATOR"/> + </class> + <class name="android/print/PrintAttributes" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getColorMode()I"/> + <method name="getDuplexMode()I" since="23"/> + <method name="getMediaSize()Landroid/print/PrintAttributes$MediaSize;"/> + <method name="getMinMargins()Landroid/print/PrintAttributes$Margins;"/> + <method name="getResolution()Landroid/print/PrintAttributes$Resolution;"/> + <field name="COLOR_MODE_COLOR"/> + <field name="COLOR_MODE_MONOCHROME"/> + <field name="CREATOR"/> + <field name="DUPLEX_MODE_LONG_EDGE" since="23"/> + <field name="DUPLEX_MODE_NONE" since="23"/> + <field name="DUPLEX_MODE_SHORT_EDGE" since="23"/> + </class> + <class name="android/print/PrintAttributes$Builder" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="build()Landroid/print/PrintAttributes;"/> + <method name="setColorMode(I)Landroid/print/PrintAttributes$Builder;"/> + <method name="setDuplexMode(I)Landroid/print/PrintAttributes$Builder;" since="23"/> + <method name="setMediaSize(Landroid/print/PrintAttributes$MediaSize;)Landroid/print/PrintAttributes$Builder;"/> + <method name="setMinMargins(Landroid/print/PrintAttributes$Margins;)Landroid/print/PrintAttributes$Builder;"/> + <method name="setResolution(Landroid/print/PrintAttributes$Resolution;)Landroid/print/PrintAttributes$Builder;"/> + </class> + <class name="android/print/PrintAttributes$Margins" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>(IIII)V"/> + <method name="getBottomMils()I"/> + <method name="getLeftMils()I"/> + <method name="getRightMils()I"/> + <method name="getTopMils()I"/> + <field name="NO_MARGINS"/> + </class> + <class name="android/print/PrintAttributes$MediaSize" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;II)V"/> + <method name="asLandscape()Landroid/print/PrintAttributes$MediaSize;"/> + <method name="asPortrait()Landroid/print/PrintAttributes$MediaSize;"/> + <method name="getHeightMils()I"/> + <method name="getId()Ljava/lang/String;"/> + <method name="getLabel(Landroid/content/pm/PackageManager;)Ljava/lang/String;"/> + <method name="getWidthMils()I"/> + <method name="isPortrait()Z"/> + <field name="ISO_A0"/> + <field name="ISO_A1"/> + <field name="ISO_A10"/> + <field name="ISO_A2"/> + <field name="ISO_A3"/> + <field name="ISO_A4"/> + <field name="ISO_A5"/> + <field name="ISO_A6"/> + <field name="ISO_A7"/> + <field name="ISO_A8"/> + <field name="ISO_A9"/> + <field name="ISO_B0"/> + <field name="ISO_B1"/> + <field name="ISO_B10"/> + <field name="ISO_B2"/> + <field name="ISO_B3"/> + <field name="ISO_B4"/> + <field name="ISO_B5"/> + <field name="ISO_B6"/> + <field name="ISO_B7"/> + <field name="ISO_B8"/> + <field name="ISO_B9"/> + <field name="ISO_C0"/> + <field name="ISO_C1"/> + <field name="ISO_C10"/> + <field name="ISO_C2"/> + <field name="ISO_C3"/> + <field name="ISO_C4"/> + <field name="ISO_C5"/> + <field name="ISO_C6"/> + <field name="ISO_C7"/> + <field name="ISO_C8"/> + <field name="ISO_C9"/> + <field name="JIS_B0"/> + <field name="JIS_B1"/> + <field name="JIS_B10"/> + <field name="JIS_B2"/> + <field name="JIS_B3"/> + <field name="JIS_B4"/> + <field name="JIS_B5"/> + <field name="JIS_B6"/> + <field name="JIS_B7"/> + <field name="JIS_B8"/> + <field name="JIS_B9"/> + <field name="JIS_EXEC"/> + <field name="JPN_CHOU2"/> + <field name="JPN_CHOU3"/> + <field name="JPN_CHOU4"/> + <field name="JPN_HAGAKI"/> + <field name="JPN_KAHU"/> + <field name="JPN_KAKU2"/> + <field name="JPN_OUFUKU"/> + <field name="JPN_YOU4"/> + <field name="NA_FOOLSCAP"/> + <field name="NA_GOVT_LETTER"/> + <field name="NA_INDEX_3X5"/> + <field name="NA_INDEX_4X6"/> + <field name="NA_INDEX_5X8"/> + <field name="NA_JUNIOR_LEGAL"/> + <field name="NA_LEDGER"/> + <field name="NA_LEGAL"/> + <field name="NA_LETTER"/> + <field name="NA_MONARCH"/> + <field name="NA_QUARTO"/> + <field name="NA_TABLOID"/> + <field name="OM_DAI_PA_KAI"/> + <field name="OM_JUURO_KU_KAI"/> + <field name="OM_PA_KAI"/> + <field name="PRC_1"/> + <field name="PRC_10"/> + <field name="PRC_16K"/> + <field name="PRC_2"/> + <field name="PRC_3"/> + <field name="PRC_4"/> + <field name="PRC_5"/> + <field name="PRC_6"/> + <field name="PRC_7"/> + <field name="PRC_8"/> + <field name="PRC_9"/> + <field name="ROC_16K"/> + <field name="ROC_8K"/> + <field name="UNKNOWN_LANDSCAPE"/> + <field name="UNKNOWN_PORTRAIT"/> + </class> + <class name="android/print/PrintAttributes$Resolution" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;II)V"/> + <method name="getHorizontalDpi()I"/> + <method name="getId()Ljava/lang/String;"/> + <method name="getLabel()Ljava/lang/String;"/> + <method name="getVerticalDpi()I"/> + </class> + <class name="android/print/PrintDocumentAdapter" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onFinish()V"/> + <method name="onLayout(Landroid/print/PrintAttributes;Landroid/print/PrintAttributes;Landroid/os/CancellationSignal;Landroid/print/PrintDocumentAdapter$LayoutResultCallback;Landroid/os/Bundle;)V"/> + <method name="onStart()V"/> + <method name="onWrite([Landroid/print/PageRange;Landroid/os/ParcelFileDescriptor;Landroid/os/CancellationSignal;Landroid/print/PrintDocumentAdapter$WriteResultCallback;)V"/> + <field name="EXTRA_PRINT_PREVIEW"/> + </class> + <class name="android/print/PrintDocumentAdapter$LayoutResultCallback" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onLayoutCancelled()V"/> + <method name="onLayoutFailed(Ljava/lang/CharSequence;)V"/> + <method name="onLayoutFinished(Landroid/print/PrintDocumentInfo;Z)V"/> + </class> + <class name="android/print/PrintDocumentAdapter$WriteResultCallback" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onWriteCancelled()V"/> + <method name="onWriteFailed(Ljava/lang/CharSequence;)V"/> + <method name="onWriteFinished([Landroid/print/PageRange;)V"/> + </class> + <class name="android/print/PrintDocumentInfo" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getContentType()I"/> + <method name="getDataSize()J"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getPageCount()I"/> + <field name="CONTENT_TYPE_DOCUMENT"/> + <field name="CONTENT_TYPE_PHOTO"/> + <field name="CONTENT_TYPE_UNKNOWN"/> + <field name="CREATOR"/> + <field name="PAGE_COUNT_UNKNOWN"/> + </class> + <class name="android/print/PrintDocumentInfo$Builder" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="build()Landroid/print/PrintDocumentInfo;"/> + <method name="setContentType(I)Landroid/print/PrintDocumentInfo$Builder;"/> + <method name="setPageCount(I)Landroid/print/PrintDocumentInfo$Builder;"/> + </class> + <class name="android/print/PrintJob" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="cancel()V"/> + <method name="getId()Landroid/print/PrintJobId;"/> + <method name="getInfo()Landroid/print/PrintJobInfo;"/> + <method name="isBlocked()Z"/> + <method name="isCancelled()Z"/> + <method name="isCompleted()Z"/> + <method name="isFailed()Z"/> + <method name="isQueued()Z"/> + <method name="isStarted()Z"/> + <method name="restart()V"/> + </class> + <class name="android/print/PrintJobId" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <field name="CREATOR"/> + </class> + <class name="android/print/PrintJobInfo" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getAdvancedIntOption(Ljava/lang/String;)I" since="26"/> + <method name="getAdvancedStringOption(Ljava/lang/String;)Ljava/lang/String;" since="26"/> + <method name="getAttributes()Landroid/print/PrintAttributes;"/> + <method name="getCopies()I"/> + <method name="getCreationTime()J"/> + <method name="getId()Landroid/print/PrintJobId;"/> + <method name="getLabel()Ljava/lang/String;"/> + <method name="getPages()[Landroid/print/PageRange;"/> + <method name="getPrinterId()Landroid/print/PrinterId;"/> + <method name="getState()I"/> + <method name="hasAdvancedOption(Ljava/lang/String;)Z" since="26"/> + <field name="CREATOR"/> + <field name="STATE_BLOCKED"/> + <field name="STATE_CANCELED"/> + <field name="STATE_COMPLETED"/> + <field name="STATE_CREATED"/> + <field name="STATE_FAILED"/> + <field name="STATE_QUEUED"/> + <field name="STATE_STARTED"/> + </class> + <class name="android/print/PrintJobInfo$Builder" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/print/PrintJobInfo;)V"/> + <method name="build()Landroid/print/PrintJobInfo;"/> + <method name="putAdvancedOption(Ljava/lang/String;I)V"/> + <method name="putAdvancedOption(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="setAttributes(Landroid/print/PrintAttributes;)V"/> + <method name="setCopies(I)V"/> + <method name="setPages([Landroid/print/PageRange;)V"/> + </class> + <class name="android/print/PrintManager" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getPrintJobs()Ljava/util/List;"/> + <method name="print(Ljava/lang/String;Landroid/print/PrintDocumentAdapter;Landroid/print/PrintAttributes;)Landroid/print/PrintJob;"/> + </class> + <class name="android/print/PrinterCapabilitiesInfo" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getColorModes()I"/> + <method name="getDefaults()Landroid/print/PrintAttributes;"/> + <method name="getDuplexModes()I" since="23"/> + <method name="getMediaSizes()Ljava/util/List;"/> + <method name="getMinMargins()Landroid/print/PrintAttributes$Margins;"/> + <method name="getResolutions()Ljava/util/List;"/> + <field name="CREATOR"/> + </class> + <class name="android/print/PrinterCapabilitiesInfo$Builder" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/print/PrinterId;)V"/> + <method name="addMediaSize(Landroid/print/PrintAttributes$MediaSize;Z)Landroid/print/PrinterCapabilitiesInfo$Builder;"/> + <method name="addResolution(Landroid/print/PrintAttributes$Resolution;Z)Landroid/print/PrinterCapabilitiesInfo$Builder;"/> + <method name="build()Landroid/print/PrinterCapabilitiesInfo;"/> + <method name="setColorModes(II)Landroid/print/PrinterCapabilitiesInfo$Builder;"/> + <method name="setDuplexModes(II)Landroid/print/PrinterCapabilitiesInfo$Builder;" since="23"/> + <method name="setMinMargins(Landroid/print/PrintAttributes$Margins;)Landroid/print/PrinterCapabilitiesInfo$Builder;"/> + </class> + <class name="android/print/PrinterId" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getLocalId()Ljava/lang/String;"/> + <field name="CREATOR"/> + </class> + <class name="android/print/PrinterInfo" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getCapabilities()Landroid/print/PrinterCapabilitiesInfo;"/> + <method name="getDescription()Ljava/lang/String;"/> + <method name="getId()Landroid/print/PrinterId;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getStatus()I"/> + <field name="CREATOR"/> + <field name="STATUS_BUSY"/> + <field name="STATUS_IDLE"/> + <field name="STATUS_UNAVAILABLE"/> + </class> + <class name="android/print/PrinterInfo$Builder" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/print/PrinterId;Ljava/lang/String;I)V"/> + <method name="<init>(Landroid/print/PrinterInfo;)V"/> + <method name="build()Landroid/print/PrinterInfo;"/> + <method name="setCapabilities(Landroid/print/PrinterCapabilitiesInfo;)Landroid/print/PrinterInfo$Builder;"/> + <method name="setDescription(Ljava/lang/String;)Landroid/print/PrinterInfo$Builder;"/> + <method name="setHasCustomPrinterIcon(Z)Landroid/print/PrinterInfo$Builder;" since="24"/> + <method name="setIconResourceId(I)Landroid/print/PrinterInfo$Builder;" since="24"/> + <method name="setInfoIntent(Landroid/app/PendingIntent;)Landroid/print/PrinterInfo$Builder;" since="24"/> + <method name="setName(Ljava/lang/String;)Landroid/print/PrinterInfo$Builder;"/> + <method name="setStatus(I)Landroid/print/PrinterInfo$Builder;"/> + </class> + <class name="android/print/pdf/PrintedPdfDocument" since="19"> + <extends name="android/graphics/pdf/PdfDocument"/> + <method name="<init>(Landroid/content/Context;Landroid/print/PrintAttributes;)V"/> + <method name="getPageContentRect()Landroid/graphics/Rect;"/> + <method name="getPageHeight()I"/> + <method name="getPageWidth()I"/> + <method name="startPage(I)Landroid/graphics/pdf/PdfDocument$Page;"/> + </class> + <class name="android/printservice/CustomPrinterIconCallback" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onCustomPrinterIconLoaded(Landroid/graphics/drawable/Icon;)Z"/> + </class> + <class name="android/printservice/PrintDocument" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getData()Landroid/os/ParcelFileDescriptor;"/> + <method name="getInfo()Landroid/print/PrintDocumentInfo;"/> + </class> + <class name="android/printservice/PrintJob" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="block(Ljava/lang/String;)Z"/> + <method name="cancel()Z"/> + <method name="complete()Z"/> + <method name="fail(Ljava/lang/String;)Z"/> + <method name="getAdvancedIntOption(Ljava/lang/String;)I"/> + <method name="getAdvancedStringOption(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getDocument()Landroid/printservice/PrintDocument;"/> + <method name="getId()Landroid/print/PrintJobId;"/> + <method name="getInfo()Landroid/print/PrintJobInfo;"/> + <method name="getTag()Ljava/lang/String;"/> + <method name="hasAdvancedOption(Ljava/lang/String;)Z"/> + <method name="isBlocked()Z"/> + <method name="isCancelled()Z"/> + <method name="isCompleted()Z"/> + <method name="isFailed()Z"/> + <method name="isQueued()Z"/> + <method name="isStarted()Z"/> + <method name="setProgress(F)V" since="24"/> + <method name="setStatus(I)V" since="24"/> + <method name="setStatus(Ljava/lang/CharSequence;)V" since="24"/> + <method name="setTag(Ljava/lang/String;)Z"/> + <method name="start()Z"/> + </class> + <class name="android/printservice/PrintService" since="19"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="generatePrinterId(Ljava/lang/String;)Landroid/print/PrinterId;"/> + <method name="getActivePrintJobs()Ljava/util/List;"/> + <method name="onConnected()V"/> + <method name="onCreatePrinterDiscoverySession()Landroid/printservice/PrinterDiscoverySession;"/> + <method name="onDisconnected()V"/> + <method name="onPrintJobQueued(Landroid/printservice/PrintJob;)V"/> + <method name="onRequestCancelPrintJob(Landroid/printservice/PrintJob;)V"/> + <field name="EXTRA_CAN_SELECT_PRINTER" since="26"/> + <field name="EXTRA_PRINTER_INFO" since="21"/> + <field name="EXTRA_PRINT_DOCUMENT_INFO" since="23"/> + <field name="EXTRA_PRINT_JOB_INFO"/> + <field name="EXTRA_SELECT_PRINTER" since="26"/> + <field name="SERVICE_INTERFACE"/> + <field name="SERVICE_META_DATA"/> + </class> + <class name="android/printservice/PrinterDiscoverySession" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addPrinters(Ljava/util/List;)V"/> + <method name="getPrinters()Ljava/util/List;"/> + <method name="getTrackedPrinters()Ljava/util/List;"/> + <method name="isDestroyed()Z"/> + <method name="isPrinterDiscoveryStarted()Z"/> + <method name="onDestroy()V"/> + <method name="onRequestCustomPrinterIcon(Landroid/print/PrinterId;Landroid/os/CancellationSignal;Landroid/printservice/CustomPrinterIconCallback;)V" since="24"/> + <method name="onStartPrinterDiscovery(Ljava/util/List;)V"/> + <method name="onStartPrinterStateTracking(Landroid/print/PrinterId;)V"/> + <method name="onStopPrinterDiscovery()V"/> + <method name="onStopPrinterStateTracking(Landroid/print/PrinterId;)V"/> + <method name="onValidatePrinters(Ljava/util/List;)V"/> + <method name="removePrinters(Ljava/util/List;)V"/> + </class> + <class name="android/provider/AlarmClock" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="ACTION_DISMISS_ALARM" since="23"/> + <field name="ACTION_SET_ALARM"/> + <field name="ACTION_SET_TIMER" since="19"/> + <field name="ACTION_SHOW_ALARMS" since="19"/> + <field name="ACTION_SHOW_TIMERS" since="26"/> + <field name="ACTION_SNOOZE_ALARM" since="23"/> + <field name="ALARM_SEARCH_MODE_ALL" since="23"/> + <field name="ALARM_SEARCH_MODE_LABEL" since="23"/> + <field name="ALARM_SEARCH_MODE_NEXT" since="23"/> + <field name="ALARM_SEARCH_MODE_TIME" since="23"/> + <field name="EXTRA_ALARM_SEARCH_MODE" since="23"/> + <field name="EXTRA_ALARM_SNOOZE_DURATION" since="23"/> + <field name="EXTRA_DAYS" since="19"/> + <field name="EXTRA_HOUR"/> + <field name="EXTRA_IS_PM" since="23"/> + <field name="EXTRA_LENGTH" since="19"/> + <field name="EXTRA_MESSAGE"/> + <field name="EXTRA_MINUTES"/> + <field name="EXTRA_RINGTONE" since="19"/> + <field name="EXTRA_SKIP_UI" since="11"/> + <field name="EXTRA_VIBRATE" since="19"/> + <field name="VALUE_RINGTONE_SILENT" since="19"/> + </class> + <class name="android/provider/BaseColumns" since="1"> + <extends name="java/lang/Object"/> + <field name="_COUNT"/> + <field name="_ID"/> + </class> + <class name="android/provider/BlockedNumberContract" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="canCurrentUserBlockNumbers(Landroid/content/Context;)Z"/> + <method name="isBlocked(Landroid/content/Context;Ljava/lang/String;)Z"/> + <method name="unblock(Landroid/content/Context;Ljava/lang/String;)I"/> + <field name="AUTHORITY"/> + <field name="AUTHORITY_URI"/> + </class> + <class name="android/provider/BlockedNumberContract$BlockedNumbers" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="COLUMN_E164_NUMBER"/> + <field name="COLUMN_ID"/> + <field name="COLUMN_ORIGINAL_NUMBER"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="CONTENT_TYPE"/> + <field name="CONTENT_URI"/> + </class> + <class name="android/provider/Browser" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addSearchUrl(Landroid/content/ContentResolver;Ljava/lang/String;)V" removed="23"/> + <method name="canClearHistory(Landroid/content/ContentResolver;)Z" removed="23"/> + <method name="clearHistory(Landroid/content/ContentResolver;)V" removed="23"/> + <method name="clearSearches(Landroid/content/ContentResolver;)V" removed="23"/> + <method name="deleteFromHistory(Landroid/content/ContentResolver;Ljava/lang/String;)V" removed="23"/> + <method name="deleteHistoryTimeFrame(Landroid/content/ContentResolver;JJ)V" removed="23"/> + <method name="getAllBookmarks(Landroid/content/ContentResolver;)Landroid/database/Cursor;" removed="23"/> + <method name="getAllVisitedUrls(Landroid/content/ContentResolver;)Landroid/database/Cursor;" removed="23"/> + <method name="requestAllIcons(Landroid/content/ContentResolver;Ljava/lang/String;Landroid/webkit/WebIconDatabase$IconListener;)V" removed="23"/> + <method name="saveBookmark(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)V" removed="23"/> + <method name="sendString(Landroid/content/Context;Ljava/lang/String;)V"/> + <method name="truncateHistory(Landroid/content/ContentResolver;)V" removed="23"/> + <method name="updateVisitedHistory(Landroid/content/ContentResolver;Ljava/lang/String;Z)V" removed="23"/> + <field name="BOOKMARKS_URI" removed="23"/> + <field name="EXTRA_APPLICATION_ID" since="3"/> + <field name="EXTRA_CREATE_NEW_TAB" since="12"/> + <field name="EXTRA_HEADERS" since="8"/> + <field name="HISTORY_PROJECTION" removed="23"/> + <field name="HISTORY_PROJECTION_BOOKMARK_INDEX" removed="23"/> + <field name="HISTORY_PROJECTION_DATE_INDEX" removed="23"/> + <field name="HISTORY_PROJECTION_FAVICON_INDEX" removed="23"/> + <field name="HISTORY_PROJECTION_ID_INDEX" removed="23"/> + <field name="HISTORY_PROJECTION_TITLE_INDEX" removed="23"/> + <field name="HISTORY_PROJECTION_URL_INDEX" removed="23"/> + <field name="HISTORY_PROJECTION_VISITS_INDEX" removed="23"/> + <field name="INITIAL_ZOOM_LEVEL"/> + <field name="SEARCHES_PROJECTION" removed="23"/> + <field name="SEARCHES_PROJECTION_DATE_INDEX" removed="23"/> + <field name="SEARCHES_PROJECTION_SEARCH_INDEX" removed="23"/> + <field name="SEARCHES_URI" removed="23"/> + <field name="TRUNCATE_HISTORY_PROJECTION" removed="23"/> + <field name="TRUNCATE_HISTORY_PROJECTION_ID_INDEX" removed="23"/> + <field name="TRUNCATE_N_OLDEST" removed="23"/> + </class> + <class name="android/provider/Browser$BookmarkColumns" since="1" removed="23"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <method name="<init>()V"/> + <field name="BOOKMARK"/> + <field name="CREATED"/> + <field name="DATE"/> + <field name="FAVICON"/> + <field name="TITLE"/> + <field name="URL"/> + <field name="VISITS"/> + </class> + <class name="android/provider/Browser$SearchColumns" since="1" removed="23"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <method name="<init>()V"/> + <field name="DATE"/> + <field name="SEARCH"/> + <field name="URL" deprecated="16"/> + </class> + <class name="android/provider/CalendarContract" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="ACCOUNT_TYPE_LOCAL"/> + <field name="ACTION_EVENT_REMINDER"/> + <field name="ACTION_HANDLE_CUSTOM_EVENT" since="16"/> + <field name="AUTHORITY"/> + <field name="CALLER_IS_SYNCADAPTER"/> + <field name="CONTENT_URI"/> + <field name="EXTRA_CUSTOM_APP_URI" since="16"/> + <field name="EXTRA_EVENT_ALL_DAY"/> + <field name="EXTRA_EVENT_BEGIN_TIME"/> + <field name="EXTRA_EVENT_END_TIME"/> + </class> + <class name="android/provider/CalendarContract$Attendees" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/CalendarContract$AttendeesColumns"/> + <implements name="android/provider/CalendarContract$EventsColumns"/> + <method name="<init>()V"/> + <method name="query(Landroid/content/ContentResolver;J[Ljava/lang/String;)Landroid/database/Cursor;"/> + <field name="CONTENT_URI"/> + </class> + <class name="android/provider/CalendarContract$AttendeesColumns" since="14"> + <extends name="java/lang/Object"/> + <field name="ATTENDEE_EMAIL"/> + <field name="ATTENDEE_IDENTITY" since="16"/> + <field name="ATTENDEE_ID_NAMESPACE" since="16"/> + <field name="ATTENDEE_NAME"/> + <field name="ATTENDEE_RELATIONSHIP"/> + <field name="ATTENDEE_STATUS"/> + <field name="ATTENDEE_STATUS_ACCEPTED"/> + <field name="ATTENDEE_STATUS_DECLINED"/> + <field name="ATTENDEE_STATUS_INVITED"/> + <field name="ATTENDEE_STATUS_NONE"/> + <field name="ATTENDEE_STATUS_TENTATIVE"/> + <field name="ATTENDEE_TYPE"/> + <field name="EVENT_ID"/> + <field name="RELATIONSHIP_ATTENDEE"/> + <field name="RELATIONSHIP_NONE"/> + <field name="RELATIONSHIP_ORGANIZER"/> + <field name="RELATIONSHIP_PERFORMER"/> + <field name="RELATIONSHIP_SPEAKER"/> + <field name="TYPE_NONE"/> + <field name="TYPE_OPTIONAL"/> + <field name="TYPE_REQUIRED"/> + <field name="TYPE_RESOURCE" since="15"/> + </class> + <class name="android/provider/CalendarContract$CalendarAlerts" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/CalendarContract$CalendarAlertsColumns"/> + <implements name="android/provider/CalendarContract$CalendarColumns"/> + <implements name="android/provider/CalendarContract$EventsColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_URI"/> + <field name="CONTENT_URI_BY_INSTANCE"/> + </class> + <class name="android/provider/CalendarContract$CalendarAlertsColumns" since="14"> + <extends name="java/lang/Object"/> + <field name="ALARM_TIME"/> + <field name="BEGIN"/> + <field name="CREATION_TIME"/> + <field name="DEFAULT_SORT_ORDER"/> + <field name="END"/> + <field name="EVENT_ID"/> + <field name="MINUTES"/> + <field name="NOTIFY_TIME"/> + <field name="RECEIVED_TIME"/> + <field name="STATE"/> + <field name="STATE_DISMISSED"/> + <field name="STATE_FIRED"/> + <field name="STATE_SCHEDULED"/> + </class> + <class name="android/provider/CalendarContract$CalendarCache" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/provider/CalendarContract$CalendarCacheColumns"/> + <method name="<init>()V"/> + <field name="KEY_TIMEZONE_INSTANCES"/> + <field name="KEY_TIMEZONE_INSTANCES_PREVIOUS"/> + <field name="KEY_TIMEZONE_TYPE"/> + <field name="TIMEZONE_TYPE_AUTO"/> + <field name="TIMEZONE_TYPE_HOME"/> + <field name="URI"/> + </class> + <class name="android/provider/CalendarContract$CalendarCacheColumns" since="14"> + <extends name="java/lang/Object"/> + <field name="KEY"/> + <field name="VALUE"/> + </class> + <class name="android/provider/CalendarContract$CalendarColumns" since="14"> + <extends name="java/lang/Object"/> + <field name="ALLOWED_ATTENDEE_TYPES" since="15"/> + <field name="ALLOWED_AVAILABILITY" since="15"/> + <field name="ALLOWED_REMINDERS"/> + <field name="CALENDAR_ACCESS_LEVEL"/> + <field name="CALENDAR_COLOR"/> + <field name="CALENDAR_COLOR_KEY" since="15"/> + <field name="CALENDAR_DISPLAY_NAME"/> + <field name="CALENDAR_TIME_ZONE"/> + <field name="CAL_ACCESS_CONTRIBUTOR"/> + <field name="CAL_ACCESS_EDITOR"/> + <field name="CAL_ACCESS_FREEBUSY"/> + <field name="CAL_ACCESS_NONE"/> + <field name="CAL_ACCESS_OVERRIDE"/> + <field name="CAL_ACCESS_OWNER"/> + <field name="CAL_ACCESS_READ"/> + <field name="CAL_ACCESS_RESPOND"/> + <field name="CAL_ACCESS_ROOT"/> + <field name="CAN_MODIFY_TIME_ZONE"/> + <field name="CAN_ORGANIZER_RESPOND"/> + <field name="IS_PRIMARY" since="17"/> + <field name="MAX_REMINDERS"/> + <field name="OWNER_ACCOUNT"/> + <field name="SYNC_EVENTS"/> + <field name="VISIBLE"/> + </class> + <class name="android/provider/CalendarContract$CalendarEntity" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/CalendarContract$CalendarColumns"/> + <implements name="android/provider/CalendarContract$SyncColumns"/> + <method name="<init>()V"/> + <method name="newEntityIterator(Landroid/database/Cursor;)Landroid/content/EntityIterator;"/> + <field name="CONTENT_URI"/> + </class> + <class name="android/provider/CalendarContract$CalendarSyncColumns" since="14"> + <extends name="java/lang/Object"/> + <field name="CAL_SYNC1"/> + <field name="CAL_SYNC10"/> + <field name="CAL_SYNC2"/> + <field name="CAL_SYNC3"/> + <field name="CAL_SYNC4"/> + <field name="CAL_SYNC5"/> + <field name="CAL_SYNC6"/> + <field name="CAL_SYNC7"/> + <field name="CAL_SYNC8"/> + <field name="CAL_SYNC9"/> + </class> + <class name="android/provider/CalendarContract$Calendars" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/CalendarContract$CalendarColumns"/> + <implements name="android/provider/CalendarContract$SyncColumns"/> + <method name="<init>()V"/> + <field name="CALENDAR_LOCATION"/> + <field name="CONTENT_URI"/> + <field name="DEFAULT_SORT_ORDER"/> + <field name="NAME"/> + </class> + <class name="android/provider/CalendarContract$Colors" since="15"> + <extends name="java/lang/Object"/> + <implements name="android/provider/CalendarContract$ColorsColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_URI"/> + </class> + <class name="android/provider/CalendarContract$ColorsColumns" since="15"> + <extends name="java/lang/Object"/> + <implements name="android/provider/SyncStateContract$Columns"/> + <field name="COLOR"/> + <field name="COLOR_KEY"/> + <field name="COLOR_TYPE"/> + <field name="TYPE_CALENDAR"/> + <field name="TYPE_EVENT"/> + </class> + <class name="android/provider/CalendarContract$EventDays" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/provider/CalendarContract$EventDaysColumns"/> + <method name="<init>()V"/> + <method name="query(Landroid/content/ContentResolver;II[Ljava/lang/String;)Landroid/database/Cursor;"/> + <field name="CONTENT_URI"/> + </class> + <class name="android/provider/CalendarContract$EventDaysColumns" since="14"> + <extends name="java/lang/Object"/> + <field name="ENDDAY"/> + <field name="STARTDAY"/> + </class> + <class name="android/provider/CalendarContract$Events" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/CalendarContract$CalendarColumns"/> + <implements name="android/provider/CalendarContract$EventsColumns"/> + <implements name="android/provider/CalendarContract$SyncColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_EXCEPTION_URI"/> + <field name="CONTENT_URI"/> + </class> + <class name="android/provider/CalendarContract$EventsColumns" since="14"> + <extends name="java/lang/Object"/> + <field name="ACCESS_CONFIDENTIAL"/> + <field name="ACCESS_DEFAULT"/> + <field name="ACCESS_LEVEL"/> + <field name="ACCESS_PRIVATE"/> + <field name="ACCESS_PUBLIC"/> + <field name="ALL_DAY"/> + <field name="AVAILABILITY"/> + <field name="AVAILABILITY_BUSY"/> + <field name="AVAILABILITY_FREE"/> + <field name="AVAILABILITY_TENTATIVE" since="15"/> + <field name="CALENDAR_ID"/> + <field name="CAN_INVITE_OTHERS"/> + <field name="CUSTOM_APP_PACKAGE" since="16"/> + <field name="CUSTOM_APP_URI" since="16"/> + <field name="DESCRIPTION"/> + <field name="DISPLAY_COLOR" since="16"/> + <field name="DTEND"/> + <field name="DTSTART"/> + <field name="DURATION"/> + <field name="EVENT_COLOR"/> + <field name="EVENT_COLOR_KEY" since="15"/> + <field name="EVENT_END_TIMEZONE"/> + <field name="EVENT_LOCATION"/> + <field name="EVENT_TIMEZONE"/> + <field name="EXDATE"/> + <field name="EXRULE"/> + <field name="GUESTS_CAN_INVITE_OTHERS"/> + <field name="GUESTS_CAN_MODIFY"/> + <field name="GUESTS_CAN_SEE_GUESTS"/> + <field name="HAS_ALARM"/> + <field name="HAS_ATTENDEE_DATA"/> + <field name="HAS_EXTENDED_PROPERTIES"/> + <field name="IS_ORGANIZER" since="17"/> + <field name="LAST_DATE"/> + <field name="LAST_SYNCED"/> + <field name="ORGANIZER"/> + <field name="ORIGINAL_ALL_DAY"/> + <field name="ORIGINAL_ID"/> + <field name="ORIGINAL_INSTANCE_TIME"/> + <field name="ORIGINAL_SYNC_ID"/> + <field name="RDATE"/> + <field name="RRULE"/> + <field name="SELF_ATTENDEE_STATUS"/> + <field name="STATUS"/> + <field name="STATUS_CANCELED"/> + <field name="STATUS_CONFIRMED"/> + <field name="STATUS_TENTATIVE"/> + <field name="SYNC_DATA1"/> + <field name="SYNC_DATA10"/> + <field name="SYNC_DATA2"/> + <field name="SYNC_DATA3"/> + <field name="SYNC_DATA4"/> + <field name="SYNC_DATA5"/> + <field name="SYNC_DATA6"/> + <field name="SYNC_DATA7"/> + <field name="SYNC_DATA8"/> + <field name="SYNC_DATA9"/> + <field name="TITLE"/> + <field name="UID_2445" since="17"/> + </class> + <class name="android/provider/CalendarContract$EventsEntity" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/CalendarContract$EventsColumns"/> + <implements name="android/provider/CalendarContract$SyncColumns"/> + <method name="<init>()V"/> + <method name="newEntityIterator(Landroid/database/Cursor;Landroid/content/ContentProviderClient;)Landroid/content/EntityIterator;"/> + <method name="newEntityIterator(Landroid/database/Cursor;Landroid/content/ContentResolver;)Landroid/content/EntityIterator;"/> + <field name="CONTENT_URI"/> + </class> + <class name="android/provider/CalendarContract$ExtendedProperties" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/CalendarContract$EventsColumns"/> + <implements name="android/provider/CalendarContract$ExtendedPropertiesColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_URI"/> + </class> + <class name="android/provider/CalendarContract$ExtendedPropertiesColumns" since="14"> + <extends name="java/lang/Object"/> + <field name="EVENT_ID"/> + <field name="NAME"/> + <field name="VALUE"/> + </class> + <class name="android/provider/CalendarContract$Instances" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/CalendarContract$CalendarColumns"/> + <implements name="android/provider/CalendarContract$EventsColumns"/> + <method name="<init>()V"/> + <method name="query(Landroid/content/ContentResolver;[Ljava/lang/String;JJ)Landroid/database/Cursor;"/> + <method name="query(Landroid/content/ContentResolver;[Ljava/lang/String;JJLjava/lang/String;)Landroid/database/Cursor;"/> + <field name="BEGIN"/> + <field name="CONTENT_BY_DAY_URI"/> + <field name="CONTENT_SEARCH_BY_DAY_URI"/> + <field name="CONTENT_SEARCH_URI"/> + <field name="CONTENT_URI"/> + <field name="END"/> + <field name="END_DAY"/> + <field name="END_MINUTE"/> + <field name="EVENT_ID"/> + <field name="START_DAY"/> + <field name="START_MINUTE"/> + </class> + <class name="android/provider/CalendarContract$Reminders" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/CalendarContract$EventsColumns"/> + <implements name="android/provider/CalendarContract$RemindersColumns"/> + <method name="<init>()V"/> + <method name="query(Landroid/content/ContentResolver;J[Ljava/lang/String;)Landroid/database/Cursor;"/> + <field name="CONTENT_URI"/> + </class> + <class name="android/provider/CalendarContract$RemindersColumns" since="14"> + <extends name="java/lang/Object"/> + <field name="EVENT_ID"/> + <field name="METHOD"/> + <field name="METHOD_ALARM" since="16"/> + <field name="METHOD_ALERT"/> + <field name="METHOD_DEFAULT"/> + <field name="METHOD_EMAIL"/> + <field name="METHOD_SMS"/> + <field name="MINUTES"/> + <field name="MINUTES_DEFAULT"/> + </class> + <class name="android/provider/CalendarContract$SyncColumns" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/provider/CalendarContract$CalendarSyncColumns"/> + <field name="ACCOUNT_NAME"/> + <field name="ACCOUNT_TYPE"/> + <field name="CAN_PARTIALLY_UPDATE"/> + <field name="DELETED"/> + <field name="DIRTY"/> + <field name="MUTATORS" since="18"/> + <field name="_SYNC_ID"/> + </class> + <class name="android/provider/CalendarContract$SyncState" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/provider/SyncStateContract$Columns"/> + <method name="<init>()V"/> + <field name="CONTENT_URI"/> + </class> + <class name="android/provider/CallLog" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="AUTHORITY"/> + <field name="CONTENT_URI"/> + </class> + <class name="android/provider/CallLog$Calls" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <method name="<init>()V"/> + <method name="getLastOutgoingCall(Landroid/content/Context;)Ljava/lang/String;" since="8"/> + <field name="ANSWERED_EXTERNALLY_TYPE" since="25"/> + <field name="BLOCKED_TYPE" since="24"/> + <field name="CACHED_FORMATTED_NUMBER" since="21"/> + <field name="CACHED_LOOKUP_URI" since="21"/> + <field name="CACHED_MATCHED_NUMBER" since="21"/> + <field name="CACHED_NAME"/> + <field name="CACHED_NORMALIZED_NUMBER" since="21"/> + <field name="CACHED_NUMBER_LABEL"/> + <field name="CACHED_NUMBER_TYPE"/> + <field name="CACHED_PHOTO_ID" since="21"/> + <field name="CACHED_PHOTO_URI" since="23"/> + <field name="CONTENT_FILTER_URI"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="CONTENT_TYPE"/> + <field name="CONTENT_URI"/> + <field name="CONTENT_URI_WITH_VOICEMAIL" since="21"/> + <field name="COUNTRY_ISO" since="21"/> + <field name="DATA_USAGE" since="21"/> + <field name="DATE"/> + <field name="DEFAULT_SORT_ORDER"/> + <field name="DURATION"/> + <field name="EXTRA_CALL_TYPE_FILTER" since="21"/> + <field name="FEATURES" since="21"/> + <field name="FEATURES_HD_CALL" since="26"/> + <field name="FEATURES_PULLED_EXTERNALLY" since="25"/> + <field name="FEATURES_VIDEO" since="21"/> + <field name="FEATURES_WIFI" since="26"/> + <field name="GEOCODED_LOCATION" since="21"/> + <field name="INCOMING_TYPE"/> + <field name="IS_READ" since="14"/> + <field name="LAST_MODIFIED" since="24"/> + <field name="LIMIT_PARAM_KEY" since="17"/> + <field name="MISSED_TYPE"/> + <field name="NEW"/> + <field name="NUMBER"/> + <field name="NUMBER_PRESENTATION" since="19"/> + <field name="OFFSET_PARAM_KEY" since="17"/> + <field name="OUTGOING_TYPE"/> + <field name="PHONE_ACCOUNT_COMPONENT_NAME" since="21"/> + <field name="PHONE_ACCOUNT_ID" since="21"/> + <field name="POST_DIAL_DIGITS" since="24"/> + <field name="PRESENTATION_ALLOWED" since="19"/> + <field name="PRESENTATION_PAYPHONE" since="19"/> + <field name="PRESENTATION_RESTRICTED" since="19"/> + <field name="PRESENTATION_UNKNOWN" since="19"/> + <field name="REJECTED_TYPE" since="24"/> + <field name="TRANSCRIPTION" since="21"/> + <field name="TYPE"/> + <field name="VIA_NUMBER" since="24"/> + <field name="VOICEMAIL_TYPE" since="21"/> + <field name="VOICEMAIL_URI" since="21"/> + </class> + <class name="android/provider/Contacts" since="1" deprecated="5"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="AUTHORITY" deprecated="16"/> + <field name="CONTENT_URI" deprecated="16"/> + <field name="KIND_EMAIL" deprecated="16"/> + <field name="KIND_IM" deprecated="16"/> + <field name="KIND_ORGANIZATION" deprecated="16"/> + <field name="KIND_PHONE" deprecated="16"/> + <field name="KIND_POSTAL" deprecated="16"/> + </class> + <class name="android/provider/Contacts$ContactMethods" since="1" deprecated="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/Contacts$ContactMethodsColumns"/> + <implements name="android/provider/Contacts$PeopleColumns"/> + <method name="<init>()V"/> + <method name="addPostalLocation(Landroid/content/Context;JDD)V" deprecated="16"/> + <method name="decodeImProtocol(Ljava/lang/String;)Ljava/lang/Object;" deprecated="16"/> + <method name="encodeCustomImProtocol(Ljava/lang/String;)Ljava/lang/String;" deprecated="16"/> + <method name="encodePredefinedImProtocol(I)Ljava/lang/String;" deprecated="16"/> + <method name="getDisplayLabel(Landroid/content/Context;IILjava/lang/CharSequence;)Ljava/lang/CharSequence;" deprecated="16"/> + <field name="CONTENT_EMAIL_ITEM_TYPE" deprecated="16"/> + <field name="CONTENT_EMAIL_TYPE" deprecated="16"/> + <field name="CONTENT_EMAIL_URI" deprecated="16"/> + <field name="CONTENT_IM_ITEM_TYPE" deprecated="16"/> + <field name="CONTENT_POSTAL_ITEM_TYPE" deprecated="16"/> + <field name="CONTENT_POSTAL_TYPE" deprecated="16"/> + <field name="CONTENT_TYPE" deprecated="16"/> + <field name="CONTENT_URI" deprecated="16"/> + <field name="DEFAULT_SORT_ORDER" deprecated="16"/> + <field name="PERSON_ID" deprecated="16"/> + <field name="POSTAL_LOCATION_LATITUDE" deprecated="16"/> + <field name="POSTAL_LOCATION_LONGITUDE" deprecated="16"/> + <field name="PROTOCOL_AIM" deprecated="16"/> + <field name="PROTOCOL_GOOGLE_TALK" deprecated="16"/> + <field name="PROTOCOL_ICQ" deprecated="16"/> + <field name="PROTOCOL_JABBER" deprecated="16"/> + <field name="PROTOCOL_MSN" deprecated="16"/> + <field name="PROTOCOL_QQ" deprecated="16"/> + <field name="PROTOCOL_SKYPE" deprecated="16"/> + <field name="PROTOCOL_YAHOO" deprecated="16"/> + </class> + <class name="android/provider/Contacts$ContactMethodsColumns" since="1" deprecated="5"> + <extends name="java/lang/Object"/> + <field name="AUX_DATA" deprecated="16"/> + <field name="DATA" deprecated="16"/> + <field name="ISPRIMARY" deprecated="16"/> + <field name="KIND" deprecated="16"/> + <field name="LABEL" deprecated="16"/> + <field name="TYPE" deprecated="16"/> + <field name="TYPE_CUSTOM" deprecated="16"/> + <field name="TYPE_HOME" deprecated="16"/> + <field name="TYPE_OTHER" deprecated="16"/> + <field name="TYPE_WORK" deprecated="16"/> + </class> + <class name="android/provider/Contacts$Extensions" since="1" deprecated="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/Contacts$ExtensionsColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_ITEM_TYPE" deprecated="16"/> + <field name="CONTENT_TYPE" deprecated="16"/> + <field name="CONTENT_URI" deprecated="16"/> + <field name="DEFAULT_SORT_ORDER" deprecated="16"/> + <field name="PERSON_ID" deprecated="16"/> + </class> + <class name="android/provider/Contacts$ExtensionsColumns" since="1" deprecated="5"> + <extends name="java/lang/Object"/> + <field name="NAME" deprecated="16"/> + <field name="VALUE" deprecated="16"/> + </class> + <class name="android/provider/Contacts$GroupMembership" since="1" deprecated="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/Contacts$GroupsColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_DIRECTORY" deprecated="16"/> + <field name="CONTENT_ITEM_TYPE" deprecated="16"/> + <field name="CONTENT_TYPE" deprecated="16"/> + <field name="CONTENT_URI" deprecated="16"/> + <field name="DEFAULT_SORT_ORDER" deprecated="16"/> + <field name="GROUP_ID" deprecated="16"/> + <field name="GROUP_SYNC_ACCOUNT" deprecated="16"/> + <field name="GROUP_SYNC_ACCOUNT_TYPE" since="5" deprecated="16"/> + <field name="GROUP_SYNC_ID" deprecated="16"/> + <field name="PERSON_ID" deprecated="16"/> + <field name="RAW_CONTENT_URI" deprecated="16"/> + </class> + <class name="android/provider/Contacts$Groups" since="1" deprecated="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/Contacts$GroupsColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_ITEM_TYPE" deprecated="16"/> + <field name="CONTENT_TYPE" deprecated="16"/> + <field name="CONTENT_URI" deprecated="16"/> + <field name="DEFAULT_SORT_ORDER" deprecated="16"/> + <field name="DELETED_CONTENT_URI" deprecated="16"/> + <field name="GROUP_ANDROID_STARRED" deprecated="16"/> + <field name="GROUP_MY_CONTACTS" deprecated="16"/> + </class> + <class name="android/provider/Contacts$GroupsColumns" since="1" deprecated="5"> + <extends name="java/lang/Object"/> + <field name="NAME" deprecated="16"/> + <field name="NOTES" deprecated="16"/> + <field name="SHOULD_SYNC" deprecated="16"/> + <field name="SYSTEM_ID" deprecated="16"/> + </class> + <class name="android/provider/Contacts$Intents" since="1" deprecated="5"> + <extends name="java/lang/Object"/> + <method name="<init>()V" deprecated="16"/> + <field name="ATTACH_IMAGE" deprecated="16"/> + <field name="EXTRA_CREATE_DESCRIPTION" since="3" deprecated="16"/> + <field name="EXTRA_FORCE_CREATE" since="3" deprecated="16"/> + <field name="SEARCH_SUGGESTION_CLICKED" deprecated="16"/> + <field name="SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED" deprecated="16"/> + <field name="SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED" deprecated="16"/> + <field name="SHOW_OR_CREATE_CONTACT" since="3" deprecated="16"/> + </class> + <class name="android/provider/Contacts$Intents$Insert" since="1" deprecated="5"> + <extends name="java/lang/Object"/> + <method name="<init>()V" deprecated="16"/> + <field name="ACTION" deprecated="16"/> + <field name="COMPANY" deprecated="16"/> + <field name="EMAIL" deprecated="16"/> + <field name="EMAIL_ISPRIMARY" deprecated="16"/> + <field name="EMAIL_TYPE" deprecated="16"/> + <field name="FULL_MODE" deprecated="16"/> + <field name="IM_HANDLE" deprecated="16"/> + <field name="IM_ISPRIMARY" deprecated="16"/> + <field name="IM_PROTOCOL" deprecated="16"/> + <field name="JOB_TITLE" deprecated="16"/> + <field name="NAME" deprecated="16"/> + <field name="NOTES" deprecated="16"/> + <field name="PHONE" deprecated="16"/> + <field name="PHONETIC_NAME" since="3" deprecated="16"/> + <field name="PHONE_ISPRIMARY" deprecated="16"/> + <field name="PHONE_TYPE" deprecated="16"/> + <field name="POSTAL" deprecated="16"/> + <field name="POSTAL_ISPRIMARY" deprecated="16"/> + <field name="POSTAL_TYPE" deprecated="16"/> + <field name="SECONDARY_EMAIL" since="3" deprecated="16"/> + <field name="SECONDARY_EMAIL_TYPE" since="3" deprecated="16"/> + <field name="SECONDARY_PHONE" since="3" deprecated="16"/> + <field name="SECONDARY_PHONE_TYPE" since="3" deprecated="16"/> + <field name="TERTIARY_EMAIL" since="3" deprecated="16"/> + <field name="TERTIARY_EMAIL_TYPE" since="3" deprecated="16"/> + <field name="TERTIARY_PHONE" since="3" deprecated="16"/> + <field name="TERTIARY_PHONE_TYPE" since="3" deprecated="16"/> + </class> + <class name="android/provider/Contacts$Intents$UI" since="1" deprecated="5"> + <extends name="java/lang/Object"/> + <method name="<init>()V" deprecated="16"/> + <field name="FILTER_CONTACTS_ACTION" deprecated="16"/> + <field name="FILTER_TEXT_EXTRA_KEY" deprecated="16"/> + <field name="GROUP_NAME_EXTRA_KEY" deprecated="16"/> + <field name="LIST_ALL_CONTACTS_ACTION" deprecated="16"/> + <field name="LIST_CONTACTS_WITH_PHONES_ACTION" deprecated="16"/> + <field name="LIST_DEFAULT" deprecated="16"/> + <field name="LIST_FREQUENT_ACTION" deprecated="16"/> + <field name="LIST_GROUP_ACTION" deprecated="16"/> + <field name="LIST_STARRED_ACTION" deprecated="16"/> + <field name="LIST_STREQUENT_ACTION" deprecated="16"/> + <field name="TITLE_EXTRA_KEY" deprecated="16"/> + </class> + <class name="android/provider/Contacts$OrganizationColumns" since="1" deprecated="5"> + <extends name="java/lang/Object"/> + <field name="COMPANY" deprecated="16"/> + <field name="ISPRIMARY" deprecated="16"/> + <field name="LABEL" deprecated="16"/> + <field name="PERSON_ID" deprecated="16"/> + <field name="TITLE" deprecated="16"/> + <field name="TYPE" deprecated="16"/> + <field name="TYPE_CUSTOM" deprecated="16"/> + <field name="TYPE_OTHER" deprecated="16"/> + <field name="TYPE_WORK" deprecated="16"/> + </class> + <class name="android/provider/Contacts$Organizations" since="1" deprecated="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/Contacts$OrganizationColumns"/> + <method name="<init>()V"/> + <method name="getDisplayLabel(Landroid/content/Context;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;" deprecated="16"/> + <field name="CONTENT_DIRECTORY" deprecated="16"/> + <field name="CONTENT_URI" deprecated="16"/> + <field name="DEFAULT_SORT_ORDER" deprecated="16"/> + </class> + <class name="android/provider/Contacts$People" since="1" deprecated="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/Contacts$PeopleColumns"/> + <implements name="android/provider/Contacts$PhonesColumns"/> + <implements name="android/provider/Contacts$PresenceColumns"/> + <method name="<init>()V"/> + <method name="addToGroup(Landroid/content/ContentResolver;JJ)Landroid/net/Uri;" deprecated="16"/> + <method name="addToGroup(Landroid/content/ContentResolver;JLjava/lang/String;)Landroid/net/Uri;" deprecated="16"/> + <method name="addToMyContactsGroup(Landroid/content/ContentResolver;J)Landroid/net/Uri;" deprecated="16"/> + <method name="createPersonInMyContactsGroup(Landroid/content/ContentResolver;Landroid/content/ContentValues;)Landroid/net/Uri;" deprecated="16"/> + <method name="loadContactPhoto(Landroid/content/Context;Landroid/net/Uri;ILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" deprecated="16"/> + <method name="markAsContacted(Landroid/content/ContentResolver;J)V" deprecated="16"/> + <method name="openContactPhotoInputStream(Landroid/content/ContentResolver;Landroid/net/Uri;)Ljava/io/InputStream;" deprecated="16"/> + <method name="queryGroups(Landroid/content/ContentResolver;J)Landroid/database/Cursor;" deprecated="16"/> + <method name="setPhotoData(Landroid/content/ContentResolver;Landroid/net/Uri;[B)V" deprecated="16"/> + <field name="CONTENT_FILTER_URI" deprecated="16"/> + <field name="CONTENT_ITEM_TYPE" deprecated="16"/> + <field name="CONTENT_TYPE" deprecated="16"/> + <field name="CONTENT_URI" deprecated="16"/> + <field name="DEFAULT_SORT_ORDER" deprecated="16"/> + <field name="DELETED_CONTENT_URI" deprecated="16"/> + <field name="PRIMARY_EMAIL_ID" deprecated="16"/> + <field name="PRIMARY_ORGANIZATION_ID" deprecated="16"/> + <field name="PRIMARY_PHONE_ID" deprecated="16"/> + </class> + <class name="android/provider/Contacts$People$ContactMethods" since="1" deprecated="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/Contacts$ContactMethodsColumns"/> + <implements name="android/provider/Contacts$PeopleColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_DIRECTORY" deprecated="16"/> + <field name="DEFAULT_SORT_ORDER" deprecated="16"/> + </class> + <class name="android/provider/Contacts$People$Extensions" since="1" deprecated="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/Contacts$ExtensionsColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_DIRECTORY" deprecated="16"/> + <field name="DEFAULT_SORT_ORDER" deprecated="16"/> + <field name="PERSON_ID" deprecated="16"/> + </class> + <class name="android/provider/Contacts$People$Phones" since="1" deprecated="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/Contacts$PeopleColumns"/> + <implements name="android/provider/Contacts$PhonesColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_DIRECTORY" deprecated="16"/> + <field name="DEFAULT_SORT_ORDER" deprecated="16"/> + </class> + <class name="android/provider/Contacts$PeopleColumns" since="1" deprecated="5"> + <extends name="java/lang/Object"/> + <field name="CUSTOM_RINGTONE" deprecated="16"/> + <field name="DISPLAY_NAME" deprecated="16"/> + <field name="LAST_TIME_CONTACTED" deprecated="16"/> + <field name="NAME" deprecated="16"/> + <field name="NOTES" deprecated="16"/> + <field name="PHONETIC_NAME" since="3" deprecated="16"/> + <field name="PHOTO_VERSION" deprecated="16"/> + <field name="SEND_TO_VOICEMAIL" deprecated="16"/> + <field name="STARRED" deprecated="16"/> + <field name="TIMES_CONTACTED" deprecated="16"/> + </class> + <class name="android/provider/Contacts$Phones" since="1" deprecated="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/Contacts$PeopleColumns"/> + <implements name="android/provider/Contacts$PhonesColumns"/> + <method name="<init>()V"/> + <method name="getDisplayLabel(Landroid/content/Context;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;" deprecated="16"/> + <method name="getDisplayLabel(Landroid/content/Context;ILjava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/CharSequence;" deprecated="16"/> + <field name="CONTENT_FILTER_URL" deprecated="16"/> + <field name="CONTENT_ITEM_TYPE" deprecated="16"/> + <field name="CONTENT_TYPE" deprecated="16"/> + <field name="CONTENT_URI" deprecated="16"/> + <field name="DEFAULT_SORT_ORDER" deprecated="16"/> + <field name="PERSON_ID" deprecated="16"/> + </class> + <class name="android/provider/Contacts$PhonesColumns" since="1" deprecated="5"> + <extends name="java/lang/Object"/> + <field name="ISPRIMARY" deprecated="16"/> + <field name="LABEL" deprecated="16"/> + <field name="NUMBER" deprecated="16"/> + <field name="NUMBER_KEY" deprecated="16"/> + <field name="TYPE" deprecated="16"/> + <field name="TYPE_CUSTOM" deprecated="16"/> + <field name="TYPE_FAX_HOME" deprecated="16"/> + <field name="TYPE_FAX_WORK" deprecated="16"/> + <field name="TYPE_HOME" deprecated="16"/> + <field name="TYPE_MOBILE" deprecated="16"/> + <field name="TYPE_OTHER" deprecated="16"/> + <field name="TYPE_PAGER" deprecated="16"/> + <field name="TYPE_WORK" deprecated="16"/> + </class> + <class name="android/provider/Contacts$Photos" since="1" deprecated="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/Contacts$PhotosColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_DIRECTORY" deprecated="16"/> + <field name="CONTENT_URI" deprecated="16"/> + <field name="DEFAULT_SORT_ORDER" deprecated="16"/> + </class> + <class name="android/provider/Contacts$PhotosColumns" since="1" deprecated="5"> + <extends name="java/lang/Object"/> + <field name="DATA" deprecated="16"/> + <field name="DOWNLOAD_REQUIRED" deprecated="16"/> + <field name="EXISTS_ON_SERVER" deprecated="16"/> + <field name="LOCAL_VERSION" deprecated="16"/> + <field name="PERSON_ID" deprecated="16"/> + <field name="SYNC_ERROR" deprecated="16"/> + </class> + <class name="android/provider/Contacts$PresenceColumns" since="1" deprecated="5"> + <extends name="java/lang/Object"/> + <field name="AVAILABLE" since="8"/> + <field name="AWAY" since="8"/> + <field name="DO_NOT_DISTURB" since="8"/> + <field name="IDLE" since="8"/> + <field name="IM_ACCOUNT" deprecated="16"/> + <field name="IM_HANDLE" deprecated="16"/> + <field name="IM_PROTOCOL" deprecated="16"/> + <field name="INVISIBLE" since="8"/> + <field name="OFFLINE" since="8"/> + <field name="PRESENCE_CUSTOM_STATUS" since="8"/> + <field name="PRESENCE_STATUS" since="8"/> + <field name="PRIORITY" since="8"/> + </class> + <class name="android/provider/Contacts$Settings" since="1" deprecated="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/Contacts$SettingsColumns"/> + <method name="<init>()V"/> + <method name="getSetting(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" deprecated="16"/> + <method name="setSetting(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" deprecated="16"/> + <field name="CONTENT_DIRECTORY" deprecated="16"/> + <field name="CONTENT_URI" deprecated="16"/> + <field name="DEFAULT_SORT_ORDER" deprecated="16"/> + <field name="SYNC_EVERYTHING" deprecated="16"/> + </class> + <class name="android/provider/Contacts$SettingsColumns" since="1" deprecated="5"> + <extends name="java/lang/Object"/> + <field name="KEY" deprecated="16"/> + <field name="VALUE" deprecated="16"/> + <field name="_SYNC_ACCOUNT" deprecated="16"/> + <field name="_SYNC_ACCOUNT_TYPE" since="5" deprecated="16"/> + </class> + <class name="android/provider/ContactsContract" since="5"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="isProfileId(J)Z" since="14"/> + <field name="AUTHORITY"/> + <field name="AUTHORITY_URI"/> + <field name="CALLER_IS_SYNCADAPTER"/> + <field name="DEFERRED_SNIPPETING" since="21"/> + <field name="DEFERRED_SNIPPETING_QUERY" since="21"/> + <field name="DIRECTORY_PARAM_KEY" since="11"/> + <field name="LIMIT_PARAM_KEY" since="11"/> + <field name="PRIMARY_ACCOUNT_NAME" since="14"/> + <field name="PRIMARY_ACCOUNT_TYPE" since="14"/> + <field name="REMOVE_DUPLICATE_ENTRIES" since="21"/> + <field name="STREQUENT_PHONE_ONLY" since="21"/> + </class> + <class name="android/provider/ContactsContract$AggregationExceptions" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="CONTENT_TYPE"/> + <field name="CONTENT_URI"/> + <field name="RAW_CONTACT_ID1"/> + <field name="RAW_CONTACT_ID2"/> + <field name="TYPE"/> + <field name="TYPE_AUTOMATIC"/> + <field name="TYPE_KEEP_SEPARATE"/> + <field name="TYPE_KEEP_TOGETHER"/> + </class> + <class name="android/provider/ContactsContract$BaseSyncColumns" since="5"> + <extends name="java/lang/Object"/> + <field name="SYNC1"/> + <field name="SYNC2"/> + <field name="SYNC3"/> + <field name="SYNC4"/> + </class> + <class name="android/provider/ContactsContract$CommonDataKinds" since="5"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/provider/ContactsContract$CommonDataKinds$BaseTypes" since="5"> + <extends name="java/lang/Object"/> + <field name="TYPE_CUSTOM"/> + </class> + <class name="android/provider/ContactsContract$CommonDataKinds$Callable" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns"/> + <implements name="android/provider/ContactsContract$DataColumnsWithJoins"/> + <method name="<init>()V"/> + <field name="CONTENT_FILTER_URI"/> + <field name="CONTENT_URI"/> + <field name="ENTERPRISE_CONTENT_FILTER_URI" since="24"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_COUNTS"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_TITLES"/> + </class> + <class name="android/provider/ContactsContract$CommonDataKinds$CommonColumns" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/ContactsContract$CommonDataKinds$BaseTypes"/> + <field name="DATA"/> + <field name="LABEL"/> + <field name="TYPE"/> + </class> + <class name="android/provider/ContactsContract$CommonDataKinds$Contactables" since="18"> + <extends name="java/lang/Object"/> + <implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns"/> + <implements name="android/provider/ContactsContract$DataColumnsWithJoins"/> + <method name="<init>()V"/> + <field name="CONTENT_FILTER_URI"/> + <field name="CONTENT_URI"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_COUNTS" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_TITLES" since="21"/> + <field name="VISIBLE_CONTACTS_ONLY"/> + </class> + <class name="android/provider/ContactsContract$CommonDataKinds$Email" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns"/> + <implements name="android/provider/ContactsContract$DataColumnsWithJoins"/> + <method name="<init>()V"/> + <method name="getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;"/> + <method name="getTypeLabelResource(I)I"/> + <field name="ADDRESS" since="11"/> + <field name="CONTENT_FILTER_URI"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="CONTENT_LOOKUP_URI"/> + <field name="CONTENT_TYPE"/> + <field name="CONTENT_URI"/> + <field name="DISPLAY_NAME"/> + <field name="ENTERPRISE_CONTENT_FILTER_URI" since="24"/> + <field name="ENTERPRISE_CONTENT_LOOKUP_URI" since="23"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_COUNTS" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_TITLES" since="21"/> + <field name="TYPE_HOME"/> + <field name="TYPE_MOBILE"/> + <field name="TYPE_OTHER"/> + <field name="TYPE_WORK"/> + </class> + <class name="android/provider/ContactsContract$CommonDataKinds$Event" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns"/> + <implements name="android/provider/ContactsContract$DataColumnsWithJoins"/> + <method name="<init>()V"/> + <method name="getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;" since="21"/> + <method name="getTypeResource(Ljava/lang/Integer;)I"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_COUNTS" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_TITLES" since="21"/> + <field name="START_DATE"/> + <field name="TYPE_ANNIVERSARY"/> + <field name="TYPE_BIRTHDAY"/> + <field name="TYPE_OTHER"/> + </class> + <class name="android/provider/ContactsContract$CommonDataKinds$GroupMembership" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/ContactsContract$DataColumnsWithJoins"/> + <method name="<init>()V"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_COUNTS" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_TITLES" since="21"/> + <field name="GROUP_ROW_ID"/> + <field name="GROUP_SOURCE_ID"/> + </class> + <class name="android/provider/ContactsContract$CommonDataKinds$Identity" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/provider/ContactsContract$DataColumnsWithJoins"/> + <method name="<init>()V"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_COUNTS" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_TITLES" since="21"/> + <field name="IDENTITY"/> + <field name="NAMESPACE"/> + </class> + <class name="android/provider/ContactsContract$CommonDataKinds$Im" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns"/> + <implements name="android/provider/ContactsContract$DataColumnsWithJoins"/> + <method name="<init>()V"/> + <method name="getProtocolLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;"/> + <method name="getProtocolLabelResource(I)I"/> + <method name="getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;"/> + <method name="getTypeLabelResource(I)I"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="CUSTOM_PROTOCOL"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_COUNTS" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_TITLES" since="21"/> + <field name="PROTOCOL"/> + <field name="PROTOCOL_AIM"/> + <field name="PROTOCOL_CUSTOM"/> + <field name="PROTOCOL_GOOGLE_TALK"/> + <field name="PROTOCOL_ICQ"/> + <field name="PROTOCOL_JABBER"/> + <field name="PROTOCOL_MSN"/> + <field name="PROTOCOL_NETMEETING"/> + <field name="PROTOCOL_QQ"/> + <field name="PROTOCOL_SKYPE"/> + <field name="PROTOCOL_YAHOO"/> + <field name="TYPE_HOME"/> + <field name="TYPE_OTHER"/> + <field name="TYPE_WORK"/> + </class> + <class name="android/provider/ContactsContract$CommonDataKinds$Nickname" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns"/> + <implements name="android/provider/ContactsContract$DataColumnsWithJoins"/> + <method name="<init>()V"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_COUNTS" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_TITLES" since="21"/> + <field name="NAME"/> + <field name="TYPE_DEFAULT"/> + <field name="TYPE_INITIALS"/> + <field name="TYPE_MAIDEN_NAME" since="9"/> + <field name="TYPE_MAINDEN_NAME" deprecated="16"/> + <field name="TYPE_OTHER_NAME"/> + <field name="TYPE_SHORT_NAME"/> + </class> + <class name="android/provider/ContactsContract$CommonDataKinds$Note" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/ContactsContract$DataColumnsWithJoins"/> + <method name="<init>()V"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_COUNTS" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_TITLES" since="21"/> + <field name="NOTE"/> + </class> + <class name="android/provider/ContactsContract$CommonDataKinds$Organization" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns"/> + <implements name="android/provider/ContactsContract$DataColumnsWithJoins"/> + <method name="<init>()V"/> + <method name="getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;"/> + <method name="getTypeLabelResource(I)I"/> + <field name="COMPANY"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="DEPARTMENT"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_COUNTS" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_TITLES" since="21"/> + <field name="JOB_DESCRIPTION"/> + <field name="OFFICE_LOCATION"/> + <field name="PHONETIC_NAME"/> + <field name="PHONETIC_NAME_STYLE" since="24"/> + <field name="SYMBOL"/> + <field name="TITLE"/> + <field name="TYPE_OTHER"/> + <field name="TYPE_WORK"/> + </class> + <class name="android/provider/ContactsContract$CommonDataKinds$Phone" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns"/> + <implements name="android/provider/ContactsContract$DataColumnsWithJoins"/> + <method name="<init>()V"/> + <method name="getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;"/> + <method name="getTypeLabelResource(I)I"/> + <field name="CONTENT_FILTER_URI"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="CONTENT_TYPE"/> + <field name="CONTENT_URI"/> + <field name="ENTERPRISE_CONTENT_FILTER_URI" since="24"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_COUNTS" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_TITLES" since="21"/> + <field name="NORMALIZED_NUMBER" since="16"/> + <field name="NUMBER"/> + <field name="SEARCH_DISPLAY_NAME_KEY" since="16"/> + <field name="SEARCH_PHONE_NUMBER_KEY" since="16"/> + <field name="TYPE_ASSISTANT"/> + <field name="TYPE_CALLBACK"/> + <field name="TYPE_CAR"/> + <field name="TYPE_COMPANY_MAIN"/> + <field name="TYPE_FAX_HOME"/> + <field name="TYPE_FAX_WORK"/> + <field name="TYPE_HOME"/> + <field name="TYPE_ISDN"/> + <field name="TYPE_MAIN"/> + <field name="TYPE_MMS"/> + <field name="TYPE_MOBILE"/> + <field name="TYPE_OTHER"/> + <field name="TYPE_OTHER_FAX"/> + <field name="TYPE_PAGER"/> + <field name="TYPE_RADIO"/> + <field name="TYPE_TELEX"/> + <field name="TYPE_TTY_TDD"/> + <field name="TYPE_WORK"/> + <field name="TYPE_WORK_MOBILE"/> + <field name="TYPE_WORK_PAGER"/> + </class> + <class name="android/provider/ContactsContract$CommonDataKinds$Photo" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/ContactsContract$DataColumnsWithJoins"/> + <method name="<init>()V"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_COUNTS" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_TITLES" since="21"/> + <field name="PHOTO"/> + <field name="PHOTO_FILE_ID" since="14"/> + </class> + <class name="android/provider/ContactsContract$CommonDataKinds$Relation" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns"/> + <implements name="android/provider/ContactsContract$DataColumnsWithJoins"/> + <method name="<init>()V"/> + <method name="getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;" since="11"/> + <method name="getTypeLabelResource(I)I" since="11"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_COUNTS" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_TITLES" since="21"/> + <field name="NAME"/> + <field name="TYPE_ASSISTANT"/> + <field name="TYPE_BROTHER"/> + <field name="TYPE_CHILD"/> + <field name="TYPE_DOMESTIC_PARTNER"/> + <field name="TYPE_FATHER"/> + <field name="TYPE_FRIEND"/> + <field name="TYPE_MANAGER"/> + <field name="TYPE_MOTHER"/> + <field name="TYPE_PARENT"/> + <field name="TYPE_PARTNER"/> + <field name="TYPE_REFERRED_BY"/> + <field name="TYPE_RELATIVE"/> + <field name="TYPE_SISTER"/> + <field name="TYPE_SPOUSE"/> + </class> + <class name="android/provider/ContactsContract$CommonDataKinds$SipAddress" since="9"> + <extends name="java/lang/Object"/> + <implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns"/> + <implements name="android/provider/ContactsContract$DataColumnsWithJoins"/> + <method name="<init>()V"/> + <method name="getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;"/> + <method name="getTypeLabelResource(I)I"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_COUNTS" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_TITLES" since="21"/> + <field name="SIP_ADDRESS"/> + <field name="TYPE_HOME"/> + <field name="TYPE_OTHER"/> + <field name="TYPE_WORK"/> + </class> + <class name="android/provider/ContactsContract$CommonDataKinds$StructuredName" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/ContactsContract$DataColumnsWithJoins"/> + <method name="<init>()V"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="DISPLAY_NAME"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_COUNTS" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_TITLES" since="21"/> + <field name="FAMILY_NAME"/> + <field name="FULL_NAME_STYLE" since="21"/> + <field name="GIVEN_NAME"/> + <field name="MIDDLE_NAME"/> + <field name="PHONETIC_FAMILY_NAME"/> + <field name="PHONETIC_GIVEN_NAME"/> + <field name="PHONETIC_MIDDLE_NAME"/> + <field name="PHONETIC_NAME_STYLE" since="24"/> + <field name="PREFIX"/> + <field name="SUFFIX"/> + </class> + <class name="android/provider/ContactsContract$CommonDataKinds$StructuredPostal" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns"/> + <implements name="android/provider/ContactsContract$DataColumnsWithJoins"/> + <method name="<init>()V"/> + <method name="getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;"/> + <method name="getTypeLabelResource(I)I"/> + <field name="CITY"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="CONTENT_TYPE"/> + <field name="CONTENT_URI"/> + <field name="COUNTRY"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_COUNTS" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_TITLES" since="21"/> + <field name="FORMATTED_ADDRESS"/> + <field name="NEIGHBORHOOD"/> + <field name="POBOX"/> + <field name="POSTCODE"/> + <field name="REGION"/> + <field name="STREET"/> + <field name="TYPE_HOME"/> + <field name="TYPE_OTHER"/> + <field name="TYPE_WORK"/> + </class> + <class name="android/provider/ContactsContract$CommonDataKinds$Website" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns"/> + <implements name="android/provider/ContactsContract$DataColumnsWithJoins"/> + <method name="<init>()V"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_COUNTS" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_TITLES" since="21"/> + <field name="TYPE_BLOG"/> + <field name="TYPE_FTP"/> + <field name="TYPE_HOME"/> + <field name="TYPE_HOMEPAGE"/> + <field name="TYPE_OTHER"/> + <field name="TYPE_PROFILE"/> + <field name="TYPE_WORK"/> + <field name="URL"/> + </class> + <class name="android/provider/ContactsContract$ContactNameColumns" since="11"> + <extends name="java/lang/Object"/> + <field name="DISPLAY_NAME_ALTERNATIVE"/> + <field name="DISPLAY_NAME_PRIMARY"/> + <field name="DISPLAY_NAME_SOURCE"/> + <field name="PHONETIC_NAME"/> + <field name="PHONETIC_NAME_STYLE"/> + <field name="SORT_KEY_ALTERNATIVE"/> + <field name="SORT_KEY_PRIMARY"/> + </class> + <class name="android/provider/ContactsContract$ContactOptionsColumns" since="5"> + <extends name="java/lang/Object"/> + <field name="CUSTOM_RINGTONE"/> + <field name="LAST_TIME_CONTACTED"/> + <field name="PINNED" since="21"/> + <field name="SEND_TO_VOICEMAIL"/> + <field name="STARRED"/> + <field name="TIMES_CONTACTED"/> + </class> + <class name="android/provider/ContactsContract$ContactStatusColumns" since="5"> + <extends name="java/lang/Object"/> + <field name="CONTACT_CHAT_CAPABILITY" since="11"/> + <field name="CONTACT_PRESENCE"/> + <field name="CONTACT_STATUS"/> + <field name="CONTACT_STATUS_ICON"/> + <field name="CONTACT_STATUS_LABEL"/> + <field name="CONTACT_STATUS_RES_PACKAGE"/> + <field name="CONTACT_STATUS_TIMESTAMP"/> + </class> + <class name="android/provider/ContactsContract$Contacts" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/ContactsContract$ContactNameColumns" since="11"/> + <implements name="android/provider/ContactsContract$ContactOptionsColumns"/> + <implements name="android/provider/ContactsContract$ContactStatusColumns"/> + <implements name="android/provider/ContactsContract$ContactsColumns"/> + <method name="<init>()V"/> + <method name="getLookupUri(JLjava/lang/String;)Landroid/net/Uri;"/> + <method name="getLookupUri(Landroid/content/ContentResolver;Landroid/net/Uri;)Landroid/net/Uri;"/> + <method name="isEnterpriseContactId(J)Z" since="21"/> + <method name="lookupContact(Landroid/content/ContentResolver;Landroid/net/Uri;)Landroid/net/Uri;"/> + <method name="markAsContacted(Landroid/content/ContentResolver;J)V" deprecated="16"/> + <method name="openContactPhotoInputStream(Landroid/content/ContentResolver;Landroid/net/Uri;)Ljava/io/InputStream;"/> + <method name="openContactPhotoInputStream(Landroid/content/ContentResolver;Landroid/net/Uri;Z)Ljava/io/InputStream;" since="14"/> + <field name="CONTENT_FILTER_URI"/> + <field name="CONTENT_FREQUENT_URI" since="21"/> + <field name="CONTENT_GROUP_URI"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="CONTENT_LOOKUP_URI"/> + <field name="CONTENT_MULTI_VCARD_URI" since="21"/> + <field name="CONTENT_STREQUENT_FILTER_URI"/> + <field name="CONTENT_STREQUENT_URI"/> + <field name="CONTENT_TYPE"/> + <field name="CONTENT_URI"/> + <field name="CONTENT_VCARD_TYPE"/> + <field name="CONTENT_VCARD_URI"/> + <field name="ENTERPRISE_CONTENT_FILTER_URI" since="24"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_COUNTS" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_TITLES" since="21"/> + <field name="QUERY_PARAMETER_VCARD_NO_PHOTO" since="23"/> + </class> + <class name="android/provider/ContactsContract$Contacts$AggregationSuggestions" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/ContactsContract$ContactOptionsColumns" since="11"/> + <implements name="android/provider/ContactsContract$ContactStatusColumns" since="11"/> + <implements name="android/provider/ContactsContract$ContactsColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_DIRECTORY"/> + </class> + <class name="android/provider/ContactsContract$Contacts$AggregationSuggestions$Builder" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addNameParameter(Ljava/lang/String;)Landroid/provider/ContactsContract$Contacts$AggregationSuggestions$Builder;"/> + <method name="build()Landroid/net/Uri;"/> + <method name="setContactId(J)Landroid/provider/ContactsContract$Contacts$AggregationSuggestions$Builder;"/> + <method name="setLimit(I)Landroid/provider/ContactsContract$Contacts$AggregationSuggestions$Builder;"/> + </class> + <class name="android/provider/ContactsContract$Contacts$Data" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/ContactsContract$DataColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_DIRECTORY"/> + </class> + <class name="android/provider/ContactsContract$Contacts$Entity" since="11"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/ContactsContract$BaseSyncColumns"/> + <implements name="android/provider/ContactsContract$ContactNameColumns"/> + <implements name="android/provider/ContactsContract$ContactOptionsColumns"/> + <implements name="android/provider/ContactsContract$ContactStatusColumns"/> + <implements name="android/provider/ContactsContract$ContactsColumns"/> + <implements name="android/provider/ContactsContract$DataColumns"/> + <implements name="android/provider/ContactsContract$DataUsageStatColumns" since="21"/> + <implements name="android/provider/ContactsContract$RawContactsColumns"/> + <implements name="android/provider/ContactsContract$StatusColumns"/> + <implements name="android/provider/ContactsContract$SyncColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_DIRECTORY"/> + <field name="DATA_ID"/> + <field name="RAW_CONTACT_ID"/> + </class> + <class name="android/provider/ContactsContract$Contacts$Photo" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/ContactsContract$DataColumns" removed="11"/> + <implements name="android/provider/ContactsContract$DataColumnsWithJoins" since="11"/> + <method name="<init>()V"/> + <field name="CONTENT_DIRECTORY"/> + <field name="DISPLAY_PHOTO" since="14"/> + <field name="PHOTO" since="11"/> + <field name="PHOTO_FILE_ID" since="14"/> + </class> + <class name="android/provider/ContactsContract$Contacts$StreamItems" since="15" deprecated="21" removed="23"> + <extends name="java/lang/Object"/> + <implements name="android/provider/ContactsContract$StreamItemsColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_DIRECTORY" deprecated="21"/> + </class> + <class name="android/provider/ContactsContract$ContactsColumns" since="5"> + <extends name="java/lang/Object"/> + <field name="CONTACT_LAST_UPDATED_TIMESTAMP" since="18"/> + <field name="DISPLAY_NAME"/> + <field name="HAS_PHONE_NUMBER"/> + <field name="IN_DEFAULT_DIRECTORY" since="21"/> + <field name="IN_VISIBLE_GROUP"/> + <field name="IS_USER_PROFILE" since="14"/> + <field name="LOOKUP_KEY"/> + <field name="NAME_RAW_CONTACT_ID" since="21"/> + <field name="PHOTO_FILE_ID" since="14"/> + <field name="PHOTO_ID"/> + <field name="PHOTO_THUMBNAIL_URI" since="11"/> + <field name="PHOTO_URI" since="11"/> + </class> + <class name="android/provider/ContactsContract$Data" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/ContactsContract$DataColumnsWithJoins"/> + <method name="<init>()V"/> + <method name="getContactLookupUri(Landroid/content/ContentResolver;Landroid/net/Uri;)Landroid/net/Uri;"/> + <field name="CONTENT_TYPE"/> + <field name="CONTENT_URI"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_COUNTS" since="21"/> + <field name="EXTRA_ADDRESS_BOOK_INDEX_TITLES" since="21"/> + <field name="VISIBLE_CONTACTS_ONLY" since="18"/> + </class> + <class name="android/provider/ContactsContract$DataColumns" since="5"> + <extends name="java/lang/Object"/> + <field name="CARRIER_PRESENCE" since="23"/> + <field name="CARRIER_PRESENCE_VT_CAPABLE" since="23"/> + <field name="DATA1"/> + <field name="DATA10"/> + <field name="DATA11"/> + <field name="DATA12"/> + <field name="DATA13"/> + <field name="DATA14"/> + <field name="DATA15"/> + <field name="DATA2"/> + <field name="DATA3"/> + <field name="DATA4"/> + <field name="DATA5"/> + <field name="DATA6"/> + <field name="DATA7"/> + <field name="DATA8"/> + <field name="DATA9"/> + <field name="DATA_VERSION"/> + <field name="IS_PRIMARY"/> + <field name="IS_READ_ONLY" since="11"/> + <field name="IS_SUPER_PRIMARY"/> + <field name="MIMETYPE"/> + <field name="RAW_CONTACT_ID"/> + <field name="RES_PACKAGE" since="21"/> + <field name="SYNC1"/> + <field name="SYNC2"/> + <field name="SYNC3"/> + <field name="SYNC4"/> + </class> + <class name="android/provider/ContactsContract$DataColumnsWithJoins" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/ContactsContract$ContactNameColumns" since="11"/> + <implements name="android/provider/ContactsContract$ContactOptionsColumns"/> + <implements name="android/provider/ContactsContract$ContactStatusColumns"/> + <implements name="android/provider/ContactsContract$ContactsColumns"/> + <implements name="android/provider/ContactsContract$DataColumns"/> + <implements name="android/provider/ContactsContract$DataUsageStatColumns" since="18"/> + <implements name="android/provider/ContactsContract$RawContactsColumns"/> + <implements name="android/provider/ContactsContract$StatusColumns"/> + </class> + <class name="android/provider/ContactsContract$DataUsageFeedback" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="DELETE_USAGE_URI" since="16"/> + <field name="FEEDBACK_URI"/> + <field name="USAGE_TYPE"/> + <field name="USAGE_TYPE_CALL"/> + <field name="USAGE_TYPE_LONG_TEXT"/> + <field name="USAGE_TYPE_SHORT_TEXT"/> + </class> + <class name="android/provider/ContactsContract$DataUsageStatColumns" since="18"> + <extends name="java/lang/Object"/> + <field name="LAST_TIME_USED"/> + <field name="TIMES_USED"/> + </class> + <class name="android/provider/ContactsContract$DeletedContacts" since="18"> + <extends name="java/lang/Object"/> + <implements name="android/provider/ContactsContract$DeletedContactsColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_URI"/> + <field name="DAYS_KEPT_MILLISECONDS"/> + </class> + <class name="android/provider/ContactsContract$DeletedContactsColumns" since="18"> + <extends name="java/lang/Object"/> + <field name="CONTACT_DELETED_TIMESTAMP"/> + <field name="CONTACT_ID"/> + </class> + <class name="android/provider/ContactsContract$Directory" since="11"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <method name="<init>()V"/> + <method name="isEnterpriseDirectoryId(J)Z" since="24"/> + <method name="isRemoteDirectoryId(J)Z" since="24"/> + <method name="notifyDirectoryChange(Landroid/content/ContentResolver;)V"/> + <field name="ACCOUNT_NAME"/> + <field name="ACCOUNT_TYPE"/> + <field name="CALLER_PACKAGE_PARAM_KEY" since="26"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="CONTENT_TYPE"/> + <field name="CONTENT_URI"/> + <field name="DEFAULT"/> + <field name="DIRECTORY_AUTHORITY"/> + <field name="DISPLAY_NAME"/> + <field name="ENTERPRISE_CONTENT_URI" since="24"/> + <field name="ENTERPRISE_DEFAULT" since="24"/> + <field name="ENTERPRISE_LOCAL_INVISIBLE" since="24"/> + <field name="EXPORT_SUPPORT"/> + <field name="EXPORT_SUPPORT_ANY_ACCOUNT"/> + <field name="EXPORT_SUPPORT_NONE"/> + <field name="EXPORT_SUPPORT_SAME_ACCOUNT_ONLY"/> + <field name="LOCAL_INVISIBLE"/> + <field name="PACKAGE_NAME"/> + <field name="PHOTO_SUPPORT"/> + <field name="PHOTO_SUPPORT_FULL"/> + <field name="PHOTO_SUPPORT_FULL_SIZE_ONLY"/> + <field name="PHOTO_SUPPORT_NONE"/> + <field name="PHOTO_SUPPORT_THUMBNAIL_ONLY"/> + <field name="SHORTCUT_SUPPORT"/> + <field name="SHORTCUT_SUPPORT_DATA_ITEMS_ONLY"/> + <field name="SHORTCUT_SUPPORT_FULL"/> + <field name="SHORTCUT_SUPPORT_NONE"/> + <field name="TYPE_RESOURCE_ID"/> + </class> + <class name="android/provider/ContactsContract$DisplayNameSources" since="11"> + <extends name="java/lang/Object"/> + <field name="EMAIL"/> + <field name="NICKNAME"/> + <field name="ORGANIZATION"/> + <field name="PHONE"/> + <field name="STRUCTURED_NAME"/> + <field name="STRUCTURED_PHONETIC_NAME" since="23"/> + <field name="UNDEFINED"/> + </class> + <class name="android/provider/ContactsContract$DisplayPhoto" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="CONTENT_MAX_DIMENSIONS_URI"/> + <field name="CONTENT_URI"/> + <field name="DISPLAY_MAX_DIM"/> + <field name="THUMBNAIL_MAX_DIM"/> + </class> + <class name="android/provider/ContactsContract$FullNameStyle" since="11"> + <extends name="java/lang/Object"/> + <field name="CHINESE"/> + <field name="CJK"/> + <field name="JAPANESE"/> + <field name="KOREAN"/> + <field name="UNDEFINED"/> + <field name="WESTERN"/> + </class> + <class name="android/provider/ContactsContract$Groups" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/ContactsContract$GroupsColumns"/> + <implements name="android/provider/ContactsContract$SyncColumns"/> + <method name="<init>()V"/> + <method name="newEntityIterator(Landroid/database/Cursor;)Landroid/content/EntityIterator;" since="8"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="CONTENT_SUMMARY_URI"/> + <field name="CONTENT_TYPE"/> + <field name="CONTENT_URI"/> + </class> + <class name="android/provider/ContactsContract$GroupsColumns" since="5"> + <extends name="java/lang/Object"/> + <field name="AUTO_ADD" since="11"/> + <field name="DATA_SET" since="14"/> + <field name="DELETED"/> + <field name="FAVORITES" since="11"/> + <field name="GROUP_IS_READ_ONLY" since="11"/> + <field name="GROUP_VISIBLE"/> + <field name="NOTES"/> + <field name="RES_PACKAGE" since="21"/> + <field name="SHOULD_SYNC"/> + <field name="SUMMARY_COUNT"/> + <field name="SUMMARY_WITH_PHONES"/> + <field name="SYSTEM_ID"/> + <field name="TITLE"/> + <field name="TITLE_RES" since="21"/> + </class> + <class name="android/provider/ContactsContract$Intents" since="5"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="ACTION_VOICE_SEND_MESSAGE_TO_CONTACTS" since="24"/> + <field name="ATTACH_IMAGE"/> + <field name="CONTACTS_DATABASE_CREATED" since="18"/> + <field name="EXTRA_CREATE_DESCRIPTION"/> + <field name="EXTRA_FORCE_CREATE"/> + <field name="EXTRA_RECIPIENT_CONTACT_CHAT_ID" since="24"/> + <field name="EXTRA_RECIPIENT_CONTACT_NAME" since="24"/> + <field name="EXTRA_RECIPIENT_CONTACT_URI" since="24"/> + <field name="INVITE_CONTACT" since="14"/> + <field name="METADATA_ACCOUNT_TYPE" since="24"/> + <field name="METADATA_MIMETYPE" since="24"/> + <field name="SEARCH_SUGGESTION_CLICKED"/> + <field name="SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED"/> + <field name="SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED"/> + <field name="SHOW_OR_CREATE_CONTACT"/> + </class> + <class name="android/provider/ContactsContract$Intents$Insert" since="5"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="ACTION"/> + <field name="COMPANY"/> + <field name="DATA" since="11"/> + <field name="EMAIL"/> + <field name="EMAIL_ISPRIMARY"/> + <field name="EMAIL_TYPE"/> + <field name="EXTRA_ACCOUNT" since="23"/> + <field name="EXTRA_DATA_SET" since="23"/> + <field name="FULL_MODE"/> + <field name="IM_HANDLE"/> + <field name="IM_ISPRIMARY"/> + <field name="IM_PROTOCOL"/> + <field name="JOB_TITLE"/> + <field name="NAME"/> + <field name="NOTES"/> + <field name="PHONE"/> + <field name="PHONETIC_NAME"/> + <field name="PHONE_ISPRIMARY"/> + <field name="PHONE_TYPE"/> + <field name="POSTAL"/> + <field name="POSTAL_ISPRIMARY"/> + <field name="POSTAL_TYPE"/> + <field name="SECONDARY_EMAIL"/> + <field name="SECONDARY_EMAIL_TYPE"/> + <field name="SECONDARY_PHONE"/> + <field name="SECONDARY_PHONE_TYPE"/> + <field name="TERTIARY_EMAIL"/> + <field name="TERTIARY_EMAIL_TYPE"/> + <field name="TERTIARY_PHONE"/> + <field name="TERTIARY_PHONE_TYPE"/> + </class> + <class name="android/provider/ContactsContract$PhoneLookup" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/ContactsContract$ContactNameColumns" since="26"/> + <implements name="android/provider/ContactsContract$ContactOptionsColumns"/> + <implements name="android/provider/ContactsContract$ContactsColumns"/> + <implements name="android/provider/ContactsContract$PhoneLookupColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_FILTER_URI"/> + <field name="ENTERPRISE_CONTENT_FILTER_URI" since="21"/> + <field name="QUERY_PARAMETER_SIP_ADDRESS" since="21"/> + </class> + <class name="android/provider/ContactsContract$PhoneLookupColumns" since="5"> + <extends name="java/lang/Object"/> + <field name="CONTACT_ID" since="24"/> + <field name="DATA_ID" since="24"/> + <field name="LABEL"/> + <field name="NORMALIZED_NUMBER" since="16"/> + <field name="NUMBER"/> + <field name="TYPE"/> + </class> + <class name="android/provider/ContactsContract$PhoneticNameStyle" since="11"> + <extends name="java/lang/Object"/> + <field name="JAPANESE"/> + <field name="KOREAN"/> + <field name="PINYIN"/> + <field name="UNDEFINED"/> + </class> + <class name="android/provider/ContactsContract$PinnedPositions" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="pin(Landroid/content/ContentResolver;JI)V"/> + <method name="undemote(Landroid/content/ContentResolver;J)V"/> + <field name="DEMOTED"/> + <field name="UNPINNED"/> + </class> + <class name="android/provider/ContactsContract$Presence" since="5" deprecated="5"> + <extends name="android/provider/ContactsContract$StatusUpdates"/> + <method name="<init>()V"/> + </class> + <class name="android/provider/ContactsContract$PresenceColumns" since="5"> + <extends name="java/lang/Object"/> + <field name="CUSTOM_PROTOCOL"/> + <field name="DATA_ID"/> + <field name="IM_ACCOUNT"/> + <field name="IM_HANDLE"/> + <field name="PROTOCOL"/> + </class> + <class name="android/provider/ContactsContract$Profile" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/ContactsContract$ContactNameColumns"/> + <implements name="android/provider/ContactsContract$ContactOptionsColumns"/> + <implements name="android/provider/ContactsContract$ContactStatusColumns"/> + <implements name="android/provider/ContactsContract$ContactsColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_RAW_CONTACTS_URI"/> + <field name="CONTENT_URI"/> + <field name="CONTENT_VCARD_URI"/> + <field name="MIN_ID"/> + </class> + <class name="android/provider/ContactsContract$ProfileSyncState" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/provider/SyncStateContract$Columns"/> + <method name="<init>()V"/> + <method name="get(Landroid/content/ContentProviderClient;Landroid/accounts/Account;)[B"/> + <method name="getWithUri(Landroid/content/ContentProviderClient;Landroid/accounts/Account;)Landroid/util/Pair;"/> + <method name="newSetOperation(Landroid/accounts/Account;[B)Landroid/content/ContentProviderOperation;"/> + <method name="set(Landroid/content/ContentProviderClient;Landroid/accounts/Account;[B)V"/> + <field name="CONTENT_DIRECTORY"/> + <field name="CONTENT_URI"/> + </class> + <class name="android/provider/ContactsContract$ProviderStatus" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="CONTENT_TYPE"/> + <field name="CONTENT_URI"/> + <field name="DATABASE_CREATION_TIMESTAMP" since="26"/> + <field name="STATUS"/> + <field name="STATUS_BUSY"/> + <field name="STATUS_EMPTY"/> + <field name="STATUS_NORMAL"/> + </class> + <class name="android/provider/ContactsContract$QuickContact" since="5"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="showQuickContact(Landroid/content/Context;Landroid/graphics/Rect;Landroid/net/Uri;I[Ljava/lang/String;)V"/> + <method name="showQuickContact(Landroid/content/Context;Landroid/graphics/Rect;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;)V" since="23"/> + <method name="showQuickContact(Landroid/content/Context;Landroid/view/View;Landroid/net/Uri;I[Ljava/lang/String;)V"/> + <method name="showQuickContact(Landroid/content/Context;Landroid/view/View;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;)V" since="23"/> + <field name="ACTION_QUICK_CONTACT" since="21"/> + <field name="EXTRA_EXCLUDE_MIMES" since="21"/> + <field name="EXTRA_MODE" since="23"/> + <field name="EXTRA_PRIORITIZED_MIMETYPE" since="23"/> + <field name="MODE_LARGE"/> + <field name="MODE_MEDIUM"/> + <field name="MODE_SMALL"/> + </class> + <class name="android/provider/ContactsContract$RawContacts" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/ContactsContract$ContactNameColumns" since="11"/> + <implements name="android/provider/ContactsContract$ContactOptionsColumns"/> + <implements name="android/provider/ContactsContract$RawContactsColumns"/> + <implements name="android/provider/ContactsContract$SyncColumns"/> + <method name="<init>()V"/> + <method name="getContactLookupUri(Landroid/content/ContentResolver;Landroid/net/Uri;)Landroid/net/Uri;"/> + <method name="newEntityIterator(Landroid/database/Cursor;)Landroid/content/EntityIterator;" since="8"/> + <field name="AGGREGATION_MODE_DEFAULT"/> + <field name="AGGREGATION_MODE_DISABLED"/> + <field name="AGGREGATION_MODE_IMMEDIATE" deprecated="16"/> + <field name="AGGREGATION_MODE_SUSPENDED"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="CONTENT_TYPE"/> + <field name="CONTENT_URI"/> + </class> + <class name="android/provider/ContactsContract$RawContacts$Data" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/ContactsContract$DataColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_DIRECTORY"/> + </class> + <class name="android/provider/ContactsContract$RawContacts$DisplayPhoto" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="CONTENT_DIRECTORY"/> + </class> + <class name="android/provider/ContactsContract$RawContacts$Entity" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/ContactsContract$DataColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_DIRECTORY"/> + <field name="DATA_ID"/> + </class> + <class name="android/provider/ContactsContract$RawContacts$StreamItems" since="15" deprecated="21" removed="23"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/ContactsContract$StreamItemsColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_DIRECTORY" deprecated="21"/> + </class> + <class name="android/provider/ContactsContract$RawContactsColumns" since="5"> + <extends name="java/lang/Object"/> + <field name="ACCOUNT_TYPE_AND_DATA_SET" since="21"/> + <field name="AGGREGATION_MODE"/> + <field name="BACKUP_ID" since="24"/> + <field name="CONTACT_ID"/> + <field name="DATA_SET" since="14"/> + <field name="DELETED"/> + <field name="METADATA_DIRTY" since="24"/> + <field name="RAW_CONTACT_IS_READ_ONLY" since="11"/> + <field name="RAW_CONTACT_IS_USER_PROFILE" since="14"/> + </class> + <class name="android/provider/ContactsContract$RawContactsEntity" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/ContactsContract$DataColumns"/> + <implements name="android/provider/ContactsContract$RawContactsColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_TYPE"/> + <field name="CONTENT_URI"/> + <field name="DATA_ID"/> + <field name="PROFILE_CONTENT_URI" since="14"/> + </class> + <class name="android/provider/ContactsContract$SearchSnippets" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="DEFERRED_SNIPPETING_KEY"/> + <field name="SNIPPET"/> + </class> + <class name="android/provider/ContactsContract$Settings" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/ContactsContract$SettingsColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="CONTENT_TYPE"/> + <field name="CONTENT_URI"/> + </class> + <class name="android/provider/ContactsContract$SettingsColumns" since="5"> + <extends name="java/lang/Object"/> + <field name="ACCOUNT_NAME"/> + <field name="ACCOUNT_TYPE"/> + <field name="ANY_UNSYNCED"/> + <field name="DATA_SET" since="14"/> + <field name="SHOULD_SYNC"/> + <field name="UNGROUPED_COUNT"/> + <field name="UNGROUPED_VISIBLE"/> + <field name="UNGROUPED_WITH_PHONES"/> + </class> + <class name="android/provider/ContactsContract$StatusColumns" since="5"> + <extends name="java/lang/Object"/> + <field name="AVAILABLE" since="8"/> + <field name="AWAY" since="8"/> + <field name="CAPABILITY_HAS_CAMERA" since="11"/> + <field name="CAPABILITY_HAS_VIDEO" since="11"/> + <field name="CAPABILITY_HAS_VOICE" since="11"/> + <field name="CHAT_CAPABILITY" since="11"/> + <field name="DO_NOT_DISTURB" since="8"/> + <field name="IDLE" since="8"/> + <field name="INVISIBLE" since="8"/> + <field name="OFFLINE" since="8"/> + <field name="PRESENCE"/> + <field name="PRESENCE_CUSTOM_STATUS" since="8" deprecated="16"/> + <field name="PRESENCE_STATUS" since="8" deprecated="16"/> + <field name="STATUS"/> + <field name="STATUS_ICON"/> + <field name="STATUS_LABEL"/> + <field name="STATUS_RES_PACKAGE"/> + <field name="STATUS_TIMESTAMP"/> + </class> + <class name="android/provider/ContactsContract$StatusUpdates" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/ContactsContract$PresenceColumns"/> + <implements name="android/provider/ContactsContract$StatusColumns"/> + <method name="<init>()V"/> + <method name="getPresenceIconResourceId(I)I"/> + <method name="getPresencePrecedence(I)I"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="CONTENT_TYPE"/> + <field name="CONTENT_URI"/> + <field name="PROFILE_CONTENT_URI" since="14"/> + </class> + <class name="android/provider/ContactsContract$StreamItemPhotos" since="15" deprecated="21" removed="23"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/ContactsContract$StreamItemPhotosColumns"/> + <method name="<init>()V"/> + <field name="PHOTO" deprecated="21"/> + </class> + <class name="android/provider/ContactsContract$StreamItemPhotosColumns" since="15" deprecated="21" removed="23"> + <extends name="java/lang/Object"/> + <field name="PHOTO_FILE_ID" deprecated="21"/> + <field name="PHOTO_URI" deprecated="21"/> + <field name="SORT_INDEX" deprecated="21"/> + <field name="STREAM_ITEM_ID" deprecated="21"/> + <field name="SYNC1" deprecated="21"/> + <field name="SYNC2" deprecated="21"/> + <field name="SYNC3" deprecated="21"/> + <field name="SYNC4" deprecated="21"/> + </class> + <class name="android/provider/ContactsContract$StreamItems" since="15" deprecated="21" removed="23"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/ContactsContract$StreamItemsColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_ITEM_TYPE" deprecated="21"/> + <field name="CONTENT_LIMIT_URI" deprecated="21"/> + <field name="CONTENT_PHOTO_URI" deprecated="21"/> + <field name="CONTENT_TYPE" deprecated="21"/> + <field name="CONTENT_URI" deprecated="21"/> + <field name="MAX_ITEMS" deprecated="21"/> + </class> + <class name="android/provider/ContactsContract$StreamItems$StreamItemPhotos" since="15" deprecated="21" removed="23"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/ContactsContract$StreamItemPhotosColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_DIRECTORY" deprecated="21"/> + <field name="CONTENT_ITEM_TYPE" deprecated="21"/> + <field name="CONTENT_TYPE" deprecated="21"/> + </class> + <class name="android/provider/ContactsContract$StreamItemsColumns" since="15" deprecated="21" removed="23"> + <extends name="java/lang/Object"/> + <field name="ACCOUNT_NAME" deprecated="21"/> + <field name="ACCOUNT_TYPE" deprecated="21"/> + <field name="COMMENTS" deprecated="21"/> + <field name="CONTACT_ID" deprecated="21"/> + <field name="CONTACT_LOOKUP_KEY" deprecated="21"/> + <field name="DATA_SET" deprecated="21"/> + <field name="RAW_CONTACT_ID" deprecated="21"/> + <field name="RAW_CONTACT_SOURCE_ID" deprecated="21"/> + <field name="RES_ICON" deprecated="21"/> + <field name="RES_LABEL" deprecated="21"/> + <field name="RES_PACKAGE" deprecated="21"/> + <field name="SYNC1" deprecated="21"/> + <field name="SYNC2" deprecated="21"/> + <field name="SYNC3" deprecated="21"/> + <field name="SYNC4" deprecated="21"/> + <field name="TEXT" deprecated="21"/> + <field name="TIMESTAMP" deprecated="21"/> + </class> + <class name="android/provider/ContactsContract$SyncColumns" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/ContactsContract$BaseSyncColumns"/> + <field name="ACCOUNT_NAME"/> + <field name="ACCOUNT_TYPE"/> + <field name="DIRTY"/> + <field name="SOURCE_ID"/> + <field name="VERSION"/> + </class> + <class name="android/provider/ContactsContract$SyncState" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/SyncStateContract$Columns"/> + <method name="<init>()V"/> + <method name="get(Landroid/content/ContentProviderClient;Landroid/accounts/Account;)[B"/> + <method name="getWithUri(Landroid/content/ContentProviderClient;Landroid/accounts/Account;)Landroid/util/Pair;"/> + <method name="newSetOperation(Landroid/accounts/Account;[B)Landroid/content/ContentProviderOperation;"/> + <method name="set(Landroid/content/ContentProviderClient;Landroid/accounts/Account;[B)V"/> + <field name="CONTENT_DIRECTORY"/> + <field name="CONTENT_URI"/> + </class> + <class name="android/provider/DocumentsContract" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="buildChildDocumentsUri(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;"/> + <method name="buildChildDocumentsUriUsingTree(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri;" since="21"/> + <method name="buildDocumentUri(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;"/> + <method name="buildDocumentUriUsingTree(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri;" since="21"/> + <method name="buildRecentDocumentsUri(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;"/> + <method name="buildRootUri(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;"/> + <method name="buildRootsUri(Ljava/lang/String;)Landroid/net/Uri;"/> + <method name="buildSearchDocumentsUri(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;"/> + <method name="buildTreeDocumentUri(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;" since="21"/> + <method name="copyDocument(Landroid/content/ContentResolver;Landroid/net/Uri;Landroid/net/Uri;)Landroid/net/Uri;" since="24"/> + <method name="createDocument(Landroid/content/ContentResolver;Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;" since="21"/> + <method name="createWebLinkIntent(Landroid/content/ContentResolver;Landroid/net/Uri;Landroid/os/Bundle;)Landroid/content/IntentSender;" since="26"/> + <method name="deleteDocument(Landroid/content/ContentResolver;Landroid/net/Uri;)Z"/> + <method name="ejectRoot(Landroid/content/ContentResolver;Landroid/net/Uri;)V" since="26"/> + <method name="findDocumentPath(Landroid/content/ContentResolver;Landroid/net/Uri;)Landroid/provider/DocumentsContract$Path;" since="26"/> + <method name="getDocumentId(Landroid/net/Uri;)Ljava/lang/String;"/> + <method name="getDocumentThumbnail(Landroid/content/ContentResolver;Landroid/net/Uri;Landroid/graphics/Point;Landroid/os/CancellationSignal;)Landroid/graphics/Bitmap;"/> + <method name="getRootId(Landroid/net/Uri;)Ljava/lang/String;"/> + <method name="getSearchDocumentsQuery(Landroid/net/Uri;)Ljava/lang/String;"/> + <method name="getTreeDocumentId(Landroid/net/Uri;)Ljava/lang/String;" since="21"/> + <method name="isDocumentUri(Landroid/content/Context;Landroid/net/Uri;)Z"/> + <method name="isTreeUri(Landroid/net/Uri;)Z" since="24"/> + <method name="moveDocument(Landroid/content/ContentResolver;Landroid/net/Uri;Landroid/net/Uri;Landroid/net/Uri;)Landroid/net/Uri;" since="24"/> + <method name="removeDocument(Landroid/content/ContentResolver;Landroid/net/Uri;Landroid/net/Uri;)Z" since="24"/> + <method name="renameDocument(Landroid/content/ContentResolver;Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri;" since="21"/> + <field name="ACTION_DOCUMENT_SETTINGS" since="26"/> + <field name="EXTRA_ERROR"/> + <field name="EXTRA_EXCLUDE_SELF" since="23"/> + <field name="EXTRA_INFO"/> + <field name="EXTRA_INITIAL_URI" since="26"/> + <field name="EXTRA_LOADING"/> + <field name="EXTRA_ORIENTATION" since="24"/> + <field name="EXTRA_PROMPT" since="23"/> + <field name="PROVIDER_INTERFACE"/> + </class> + <class name="android/provider/DocumentsContract$Document" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="COLUMN_DISPLAY_NAME"/> + <field name="COLUMN_DOCUMENT_ID"/> + <field name="COLUMN_FLAGS"/> + <field name="COLUMN_ICON"/> + <field name="COLUMN_LAST_MODIFIED"/> + <field name="COLUMN_MIME_TYPE"/> + <field name="COLUMN_SIZE"/> + <field name="COLUMN_SUMMARY"/> + <field name="FLAG_DIR_PREFERS_GRID"/> + <field name="FLAG_DIR_PREFERS_LAST_MODIFIED"/> + <field name="FLAG_DIR_SUPPORTS_CREATE"/> + <field name="FLAG_SUPPORTS_COPY" since="24"/> + <field name="FLAG_SUPPORTS_DELETE"/> + <field name="FLAG_SUPPORTS_MOVE" since="24"/> + <field name="FLAG_SUPPORTS_REMOVE" since="24"/> + <field name="FLAG_SUPPORTS_RENAME" since="21"/> + <field name="FLAG_SUPPORTS_SETTINGS" since="26"/> + <field name="FLAG_SUPPORTS_THUMBNAIL"/> + <field name="FLAG_SUPPORTS_WRITE"/> + <field name="FLAG_VIRTUAL_DOCUMENT" since="24"/> + <field name="FLAG_WEB_LINKABLE" since="26"/> + <field name="MIME_TYPE_DIR"/> + </class> + <class name="android/provider/DocumentsContract$Path" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Ljava/lang/String;Ljava/util/List;)V"/> + <method name="getPath()Ljava/util/List;"/> + <method name="getRootId()Ljava/lang/String;"/> + <field name="CREATOR"/> + </class> + <class name="android/provider/DocumentsContract$Root" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="COLUMN_AVAILABLE_BYTES"/> + <field name="COLUMN_CAPACITY_BYTES" since="24"/> + <field name="COLUMN_DOCUMENT_ID"/> + <field name="COLUMN_FLAGS"/> + <field name="COLUMN_ICON"/> + <field name="COLUMN_MIME_TYPES"/> + <field name="COLUMN_ROOT_ID"/> + <field name="COLUMN_SUMMARY"/> + <field name="COLUMN_TITLE"/> + <field name="FLAG_LOCAL_ONLY"/> + <field name="FLAG_SUPPORTS_CREATE"/> + <field name="FLAG_SUPPORTS_EJECT" since="26"/> + <field name="FLAG_SUPPORTS_IS_CHILD" since="21"/> + <field name="FLAG_SUPPORTS_RECENTS"/> + <field name="FLAG_SUPPORTS_SEARCH"/> + <field name="MIME_TYPE_ITEM" since="26"/> + </class> + <class name="android/provider/DocumentsProvider" since="19"> + <extends name="android/content/ContentProvider"/> + <method name="<init>()V"/> + <method name="copyDocument(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" since="24"/> + <method name="createDocument(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="createWebLinkIntent(Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/IntentSender;" since="26"/> + <method name="deleteDocument(Ljava/lang/String;)V"/> + <method name="ejectRoot(Ljava/lang/String;)V" since="26"/> + <method name="findDocumentPath(Ljava/lang/String;Ljava/lang/String;)Landroid/provider/DocumentsContract$Path;" since="26"/> + <method name="getDocumentStreamTypes(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;" since="24"/> + <method name="getDocumentType(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="isChildDocument(Ljava/lang/String;Ljava/lang/String;)Z" since="21"/> + <method name="moveDocument(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" since="24"/> + <method name="openDocument(Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/os/ParcelFileDescriptor;"/> + <method name="openDocumentThumbnail(Ljava/lang/String;Landroid/graphics/Point;Landroid/os/CancellationSignal;)Landroid/content/res/AssetFileDescriptor;"/> + <method name="openTypedDocument(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/content/res/AssetFileDescriptor;" since="24"/> + <method name="queryChildDocuments(Ljava/lang/String;[Ljava/lang/String;Landroid/os/Bundle;)Landroid/database/Cursor;" since="26"/> + <method name="queryChildDocuments(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;"/> + <method name="queryDocument(Ljava/lang/String;[Ljava/lang/String;)Landroid/database/Cursor;"/> + <method name="queryRecentDocuments(Ljava/lang/String;[Ljava/lang/String;)Landroid/database/Cursor;"/> + <method name="queryRoots([Ljava/lang/String;)Landroid/database/Cursor;"/> + <method name="querySearchDocuments(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Landroid/database/Cursor;"/> + <method name="removeDocument(Ljava/lang/String;Ljava/lang/String;)V" since="24"/> + <method name="renameDocument(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" since="21"/> + <method name="revokeDocumentPermission(Ljava/lang/String;)V" since="21"/> + </class> + <class name="android/provider/FontRequest" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)V"/> + <method name="getCertificates()Ljava/util/List;"/> + <method name="getProviderAuthority()Ljava/lang/String;"/> + <method name="getProviderPackage()Ljava/lang/String;"/> + <method name="getQuery()Ljava/lang/String;"/> + </class> + <class name="android/provider/FontsContract" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="buildTypeface(Landroid/content/Context;Landroid/os/CancellationSignal;[Landroid/provider/FontsContract$FontInfo;)Landroid/graphics/Typeface;"/> + <method name="fetchFonts(Landroid/content/Context;Landroid/os/CancellationSignal;Landroid/provider/FontRequest;)Landroid/provider/FontsContract$FontFamilyResult;"/> + <method name="requestFonts(Landroid/content/Context;Landroid/provider/FontRequest;Landroid/os/Handler;Landroid/os/CancellationSignal;Landroid/provider/FontsContract$FontRequestCallback;)V"/> + </class> + <class name="android/provider/FontsContract$Columns" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <method name="<init>()V"/> + <field name="FILE_ID"/> + <field name="ITALIC"/> + <field name="RESULT_CODE"/> + <field name="RESULT_CODE_FONT_NOT_FOUND"/> + <field name="RESULT_CODE_FONT_UNAVAILABLE"/> + <field name="RESULT_CODE_MALFORMED_QUERY"/> + <field name="RESULT_CODE_OK"/> + <field name="TTC_INDEX"/> + <field name="VARIATION_SETTINGS"/> + <field name="WEIGHT"/> + </class> + <class name="android/provider/FontsContract$FontFamilyResult" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getFonts()[Landroid/provider/FontsContract$FontInfo;"/> + <method name="getStatusCode()I"/> + <field name="STATUS_OK"/> + <field name="STATUS_REJECTED"/> + <field name="STATUS_UNEXPECTED_DATA_PROVIDED"/> + <field name="STATUS_WRONG_CERTIFICATES"/> + </class> + <class name="android/provider/FontsContract$FontInfo" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAxes()[Landroid/graphics/fonts/FontVariationAxis;"/> + <method name="getResultCode()I"/> + <method name="getTtcIndex()I"/> + <method name="getUri()Landroid/net/Uri;"/> + <method name="getWeight()I"/> + <method name="isItalic()Z"/> + </class> + <class name="android/provider/FontsContract$FontRequestCallback" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onTypefaceRequestFailed(I)V"/> + <method name="onTypefaceRetrieved(Landroid/graphics/Typeface;)V"/> + <field name="FAIL_REASON_FONT_LOAD_ERROR"/> + <field name="FAIL_REASON_FONT_NOT_FOUND"/> + <field name="FAIL_REASON_FONT_UNAVAILABLE"/> + <field name="FAIL_REASON_MALFORMED_QUERY"/> + <field name="FAIL_REASON_PROVIDER_NOT_FOUND"/> + <field name="FAIL_REASON_WRONG_CERTIFICATES"/> + </class> + <class name="android/provider/LiveFolders" since="3" deprecated="14"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <method name="<init>()V"/> + <field name="ACTION_CREATE_LIVE_FOLDER"/> + <field name="DESCRIPTION"/> + <field name="DISPLAY_MODE_GRID"/> + <field name="DISPLAY_MODE_LIST"/> + <field name="EXTRA_LIVE_FOLDER_BASE_INTENT"/> + <field name="EXTRA_LIVE_FOLDER_DISPLAY_MODE"/> + <field name="EXTRA_LIVE_FOLDER_ICON"/> + <field name="EXTRA_LIVE_FOLDER_NAME"/> + <field name="ICON_BITMAP"/> + <field name="ICON_PACKAGE"/> + <field name="ICON_RESOURCE"/> + <field name="INTENT"/> + <field name="NAME"/> + </class> + <class name="android/provider/MediaStore" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getDocumentUri(Landroid/content/Context;Landroid/net/Uri;)Landroid/net/Uri;" since="26"/> + <method name="getMediaScannerUri()Landroid/net/Uri;"/> + <method name="getVersion(Landroid/content/Context;)Ljava/lang/String;" since="12"/> + <field name="ACTION_IMAGE_CAPTURE" since="3"/> + <field name="ACTION_IMAGE_CAPTURE_SECURE" since="17"/> + <field name="ACTION_VIDEO_CAPTURE" since="3"/> + <field name="AUTHORITY"/> + <field name="EXTRA_DURATION_LIMIT" since="8"/> + <field name="EXTRA_FINISH_ON_COMPLETION" since="3"/> + <field name="EXTRA_FULL_SCREEN" since="8"/> + <field name="EXTRA_MEDIA_ALBUM" since="3"/> + <field name="EXTRA_MEDIA_ARTIST" since="3"/> + <field name="EXTRA_MEDIA_FOCUS" since="3"/> + <field name="EXTRA_MEDIA_GENRE" since="21"/> + <field name="EXTRA_MEDIA_PLAYLIST" since="21"/> + <field name="EXTRA_MEDIA_RADIO_CHANNEL" since="21"/> + <field name="EXTRA_MEDIA_TITLE" since="3"/> + <field name="EXTRA_OUTPUT" since="3"/> + <field name="EXTRA_SCREEN_ORIENTATION" since="3"/> + <field name="EXTRA_SHOW_ACTION_ICONS" since="8"/> + <field name="EXTRA_SIZE_LIMIT" since="8"/> + <field name="EXTRA_VIDEO_QUALITY" since="3"/> + <field name="INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH" since="9"/> + <field name="INTENT_ACTION_MEDIA_SEARCH" since="3"/> + <field name="INTENT_ACTION_MUSIC_PLAYER" since="8" deprecated="16"/> + <field name="INTENT_ACTION_STILL_IMAGE_CAMERA" since="3"/> + <field name="INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE" since="17"/> + <field name="INTENT_ACTION_TEXT_OPEN_FROM_SEARCH" since="17"/> + <field name="INTENT_ACTION_VIDEO_CAMERA" since="3"/> + <field name="INTENT_ACTION_VIDEO_PLAY_FROM_SEARCH" since="17"/> + <field name="MEDIA_IGNORE_FILENAME" since="9"/> + <field name="MEDIA_SCANNER_VOLUME"/> + <field name="META_DATA_STILL_IMAGE_CAMERA_PREWARM_SERVICE" since="23"/> + <field name="UNKNOWN_STRING" since="8"/> + </class> + <class name="android/provider/MediaStore$Audio" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="keyFor(Ljava/lang/String;)Ljava/lang/String;"/> + </class> + <class name="android/provider/MediaStore$Audio$AlbumColumns" since="1"> + <extends name="java/lang/Object"/> + <field name="ALBUM"/> + <field name="ALBUM_ART"/> + <field name="ALBUM_ID"/> + <field name="ALBUM_KEY"/> + <field name="ARTIST"/> + <field name="FIRST_YEAR"/> + <field name="LAST_YEAR"/> + <field name="NUMBER_OF_SONGS"/> + <field name="NUMBER_OF_SONGS_FOR_ARTIST" since="3"/> + </class> + <class name="android/provider/MediaStore$Audio$Albums" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/MediaStore$Audio$AlbumColumns"/> + <method name="<init>()V"/> + <method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;"/> + <field name="CONTENT_TYPE"/> + <field name="DEFAULT_SORT_ORDER"/> + <field name="ENTRY_CONTENT_TYPE"/> + <field name="EXTERNAL_CONTENT_URI"/> + <field name="INTERNAL_CONTENT_URI"/> + </class> + <class name="android/provider/MediaStore$Audio$ArtistColumns" since="1"> + <extends name="java/lang/Object"/> + <field name="ARTIST"/> + <field name="ARTIST_KEY"/> + <field name="NUMBER_OF_ALBUMS"/> + <field name="NUMBER_OF_TRACKS"/> + </class> + <class name="android/provider/MediaStore$Audio$Artists" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/MediaStore$Audio$ArtistColumns"/> + <method name="<init>()V"/> + <method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;"/> + <field name="CONTENT_TYPE"/> + <field name="DEFAULT_SORT_ORDER"/> + <field name="ENTRY_CONTENT_TYPE"/> + <field name="EXTERNAL_CONTENT_URI"/> + <field name="INTERNAL_CONTENT_URI"/> + </class> + <class name="android/provider/MediaStore$Audio$Artists$Albums" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/provider/MediaStore$Audio$AlbumColumns"/> + <method name="<init>()V"/> + <method name="getContentUri(Ljava/lang/String;J)Landroid/net/Uri;"/> + </class> + <class name="android/provider/MediaStore$Audio$AudioColumns" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/provider/MediaStore$MediaColumns"/> + <field name="ALBUM"/> + <field name="ALBUM_ART" removed="14"/> + <field name="ALBUM_ID"/> + <field name="ALBUM_KEY"/> + <field name="ARTIST"/> + <field name="ARTIST_ID"/> + <field name="ARTIST_KEY"/> + <field name="BOOKMARK" since="8"/> + <field name="COMPOSER"/> + <field name="DURATION"/> + <field name="IS_ALARM"/> + <field name="IS_MUSIC"/> + <field name="IS_NOTIFICATION"/> + <field name="IS_PODCAST" since="8"/> + <field name="IS_RINGTONE"/> + <field name="TITLE_KEY"/> + <field name="TRACK"/> + <field name="YEAR"/> + </class> + <class name="android/provider/MediaStore$Audio$Genres" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/MediaStore$Audio$GenresColumns"/> + <method name="<init>()V"/> + <method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;"/> + <method name="getContentUriForAudioId(Ljava/lang/String;I)Landroid/net/Uri;" since="11"/> + <field name="CONTENT_TYPE"/> + <field name="DEFAULT_SORT_ORDER"/> + <field name="ENTRY_CONTENT_TYPE"/> + <field name="EXTERNAL_CONTENT_URI"/> + <field name="INTERNAL_CONTENT_URI"/> + </class> + <class name="android/provider/MediaStore$Audio$Genres$Members" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/provider/MediaStore$Audio$AudioColumns"/> + <method name="<init>()V"/> + <method name="getContentUri(Ljava/lang/String;J)Landroid/net/Uri;"/> + <field name="AUDIO_ID"/> + <field name="CONTENT_DIRECTORY"/> + <field name="DEFAULT_SORT_ORDER"/> + <field name="GENRE_ID"/> + </class> + <class name="android/provider/MediaStore$Audio$GenresColumns" since="1"> + <extends name="java/lang/Object"/> + <field name="NAME"/> + </class> + <class name="android/provider/MediaStore$Audio$Media" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/provider/MediaStore$Audio$AudioColumns"/> + <method name="<init>()V"/> + <method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;"/> + <method name="getContentUriForPath(Ljava/lang/String;)Landroid/net/Uri;"/> + <field name="CONTENT_TYPE"/> + <field name="DEFAULT_SORT_ORDER"/> + <field name="ENTRY_CONTENT_TYPE" since="21"/> + <field name="EXTERNAL_CONTENT_URI"/> + <field name="EXTRA_MAX_BYTES" since="3"/> + <field name="INTERNAL_CONTENT_URI"/> + <field name="RECORD_SOUND_ACTION"/> + </class> + <class name="android/provider/MediaStore$Audio$Playlists" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/MediaStore$Audio$PlaylistsColumns"/> + <method name="<init>()V"/> + <method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;"/> + <field name="CONTENT_TYPE"/> + <field name="DEFAULT_SORT_ORDER"/> + <field name="ENTRY_CONTENT_TYPE"/> + <field name="EXTERNAL_CONTENT_URI"/> + <field name="INTERNAL_CONTENT_URI"/> + </class> + <class name="android/provider/MediaStore$Audio$Playlists$Members" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/provider/MediaStore$Audio$AudioColumns"/> + <method name="<init>()V"/> + <method name="getContentUri(Ljava/lang/String;J)Landroid/net/Uri;"/> + <method name="moveItem(Landroid/content/ContentResolver;JII)Z" since="8"/> + <field name="AUDIO_ID"/> + <field name="CONTENT_DIRECTORY"/> + <field name="DEFAULT_SORT_ORDER"/> + <field name="PLAYLIST_ID"/> + <field name="PLAY_ORDER"/> + <field name="_ID"/> + </class> + <class name="android/provider/MediaStore$Audio$PlaylistsColumns" since="1"> + <extends name="java/lang/Object"/> + <field name="DATA"/> + <field name="DATE_ADDED"/> + <field name="DATE_MODIFIED"/> + <field name="NAME"/> + </class> + <class name="android/provider/MediaStore$Audio$Radio" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="ENTRY_CONTENT_TYPE"/> + </class> + <class name="android/provider/MediaStore$Files" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;"/> + <method name="getContentUri(Ljava/lang/String;J)Landroid/net/Uri;"/> + </class> + <class name="android/provider/MediaStore$Files$FileColumns" since="11"> + <extends name="java/lang/Object"/> + <implements name="android/provider/MediaStore$MediaColumns"/> + <field name="MEDIA_TYPE"/> + <field name="MEDIA_TYPE_AUDIO"/> + <field name="MEDIA_TYPE_IMAGE"/> + <field name="MEDIA_TYPE_NONE"/> + <field name="MEDIA_TYPE_PLAYLIST"/> + <field name="MEDIA_TYPE_VIDEO"/> + <field name="MIME_TYPE"/> + <field name="PARENT"/> + <field name="TITLE"/> + </class> + <class name="android/provider/MediaStore$Images" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/provider/MediaStore$Images$ImageColumns" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/provider/MediaStore$MediaColumns"/> + <field name="BUCKET_DISPLAY_NAME"/> + <field name="BUCKET_ID"/> + <field name="DATE_TAKEN"/> + <field name="DESCRIPTION"/> + <field name="IS_PRIVATE"/> + <field name="LATITUDE"/> + <field name="LONGITUDE"/> + <field name="MINI_THUMB_MAGIC"/> + <field name="ORIENTATION"/> + <field name="PICASA_ID"/> + </class> + <class name="android/provider/MediaStore$Images$Media" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/provider/MediaStore$Images$ImageColumns"/> + <method name="<init>()V"/> + <method name="getBitmap(Landroid/content/ContentResolver;Landroid/net/Uri;)Landroid/graphics/Bitmap;"/> + <method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;"/> + <method name="insertImage(Landroid/content/ContentResolver;Landroid/graphics/Bitmap;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="insertImage(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="query(Landroid/content/ContentResolver;Landroid/net/Uri;[Ljava/lang/String;)Landroid/database/Cursor;"/> + <method name="query(Landroid/content/ContentResolver;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;"/> + <method name="query(Landroid/content/ContentResolver;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;"/> + <field name="CONTENT_TYPE"/> + <field name="DEFAULT_SORT_ORDER"/> + <field name="EXTERNAL_CONTENT_URI"/> + <field name="INTERNAL_CONTENT_URI"/> + </class> + <class name="android/provider/MediaStore$Images$Thumbnails" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <method name="<init>()V"/> + <method name="cancelThumbnailRequest(Landroid/content/ContentResolver;J)V" since="5"/> + <method name="cancelThumbnailRequest(Landroid/content/ContentResolver;JJ)V" since="8"/> + <method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;"/> + <method name="getThumbnail(Landroid/content/ContentResolver;JILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" since="5"/> + <method name="getThumbnail(Landroid/content/ContentResolver;JJILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" since="8"/> + <method name="query(Landroid/content/ContentResolver;Landroid/net/Uri;[Ljava/lang/String;)Landroid/database/Cursor;"/> + <method name="queryMiniThumbnail(Landroid/content/ContentResolver;JI[Ljava/lang/String;)Landroid/database/Cursor;"/> + <method name="queryMiniThumbnails(Landroid/content/ContentResolver;Landroid/net/Uri;I[Ljava/lang/String;)Landroid/database/Cursor;"/> + <field name="DATA"/> + <field name="DEFAULT_SORT_ORDER"/> + <field name="EXTERNAL_CONTENT_URI"/> + <field name="FULL_SCREEN_KIND"/> + <field name="HEIGHT"/> + <field name="IMAGE_ID"/> + <field name="INTERNAL_CONTENT_URI"/> + <field name="KIND"/> + <field name="MICRO_KIND"/> + <field name="MINI_KIND"/> + <field name="THUMB_DATA" since="5"/> + <field name="WIDTH"/> + </class> + <class name="android/provider/MediaStore$MediaColumns" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <field name="DATA"/> + <field name="DATE_ADDED"/> + <field name="DATE_MODIFIED"/> + <field name="DISPLAY_NAME"/> + <field name="HEIGHT" since="16"/> + <field name="MIME_TYPE"/> + <field name="SIZE"/> + <field name="TITLE"/> + <field name="WIDTH" since="16"/> + </class> + <class name="android/provider/MediaStore$Video" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="query(Landroid/content/ContentResolver;Landroid/net/Uri;[Ljava/lang/String;)Landroid/database/Cursor;"/> + <field name="DEFAULT_SORT_ORDER"/> + </class> + <class name="android/provider/MediaStore$Video$Media" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/provider/MediaStore$Video$VideoColumns"/> + <method name="<init>()V"/> + <method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;"/> + <field name="CONTENT_TYPE"/> + <field name="DEFAULT_SORT_ORDER"/> + <field name="EXTERNAL_CONTENT_URI"/> + <field name="INTERNAL_CONTENT_URI"/> + </class> + <class name="android/provider/MediaStore$Video$Thumbnails" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <method name="<init>()V"/> + <method name="cancelThumbnailRequest(Landroid/content/ContentResolver;J)V"/> + <method name="cancelThumbnailRequest(Landroid/content/ContentResolver;JJ)V" since="8"/> + <method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;"/> + <method name="getThumbnail(Landroid/content/ContentResolver;JILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;"/> + <method name="getThumbnail(Landroid/content/ContentResolver;JJILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" since="8"/> + <field name="DATA"/> + <field name="DEFAULT_SORT_ORDER"/> + <field name="EXTERNAL_CONTENT_URI"/> + <field name="FULL_SCREEN_KIND"/> + <field name="HEIGHT"/> + <field name="INTERNAL_CONTENT_URI"/> + <field name="KIND"/> + <field name="MICRO_KIND"/> + <field name="MINI_KIND"/> + <field name="VIDEO_ID"/> + <field name="WIDTH"/> + </class> + <class name="android/provider/MediaStore$Video$VideoColumns" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/provider/MediaStore$MediaColumns"/> + <field name="ALBUM"/> + <field name="ARTIST"/> + <field name="BOOKMARK" since="3"/> + <field name="BUCKET_DISPLAY_NAME" since="3"/> + <field name="BUCKET_ID" since="3"/> + <field name="CATEGORY"/> + <field name="DATE_TAKEN"/> + <field name="DESCRIPTION"/> + <field name="DURATION"/> + <field name="IS_PRIVATE"/> + <field name="LANGUAGE"/> + <field name="LATITUDE"/> + <field name="LONGITUDE"/> + <field name="MINI_THUMB_MAGIC"/> + <field name="RESOLUTION"/> + <field name="TAGS"/> + </class> + <class name="android/provider/OpenableColumns" since="1"> + <extends name="java/lang/Object"/> + <field name="DISPLAY_NAME"/> + <field name="SIZE"/> + </class> + <class name="android/provider/SearchRecentSuggestions" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;Ljava/lang/String;I)V"/> + <method name="clearHistory()V"/> + <method name="saveRecentQuery(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="truncateHistory(Landroid/content/ContentResolver;I)V"/> + <field name="QUERIES_PROJECTION_1LINE"/> + <field name="QUERIES_PROJECTION_2LINE"/> + <field name="QUERIES_PROJECTION_DATE_INDEX"/> + <field name="QUERIES_PROJECTION_DISPLAY1_INDEX"/> + <field name="QUERIES_PROJECTION_DISPLAY2_INDEX"/> + <field name="QUERIES_PROJECTION_QUERY_INDEX"/> + </class> + <class name="android/provider/Settings" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="canDrawOverlays(Landroid/content/Context;)Z" since="23"/> + <field name="ACTION_ACCESSIBILITY_SETTINGS" since="5"/> + <field name="ACTION_ADD_ACCOUNT" since="8"/> + <field name="ACTION_AIRPLANE_MODE_SETTINGS" since="3"/> + <field name="ACTION_APN_SETTINGS"/> + <field name="ACTION_APPLICATION_DETAILS_SETTINGS" since="9"/> + <field name="ACTION_APPLICATION_DEVELOPMENT_SETTINGS" since="3"/> + <field name="ACTION_APPLICATION_SETTINGS"/> + <field name="ACTION_APP_NOTIFICATION_SETTINGS" since="26"/> + <field name="ACTION_BATTERY_SAVER_SETTINGS" since="22"/> + <field name="ACTION_BLUETOOTH_SETTINGS"/> + <field name="ACTION_CAPTIONING_SETTINGS" since="19"/> + <field name="ACTION_CAST_SETTINGS" since="21"/> + <field name="ACTION_CHANNEL_NOTIFICATION_SETTINGS" since="26"/> + <field name="ACTION_DATA_ROAMING_SETTINGS" since="3"/> + <field name="ACTION_DATE_SETTINGS"/> + <field name="ACTION_DEVICE_INFO_SETTINGS" since="8"/> + <field name="ACTION_DISPLAY_SETTINGS"/> + <field name="ACTION_DREAM_SETTINGS" since="18"/> + <field name="ACTION_HARD_KEYBOARD_SETTINGS" since="24"/> + <field name="ACTION_HOME_SETTINGS" since="21"/> + <field name="ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS" since="24"/> + <field name="ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS" since="23"/> + <field name="ACTION_INPUT_METHOD_SETTINGS" since="3"/> + <field name="ACTION_INPUT_METHOD_SUBTYPE_SETTINGS" since="11"/> + <field name="ACTION_INTERNAL_STORAGE_SETTINGS" since="3"/> + <field name="ACTION_LOCALE_SETTINGS"/> + <field name="ACTION_LOCATION_SOURCE_SETTINGS"/> + <field name="ACTION_MANAGE_ALL_APPLICATIONS_SETTINGS" since="9"/> + <field name="ACTION_MANAGE_APPLICATIONS_SETTINGS" since="3"/> + <field name="ACTION_MANAGE_DEFAULT_APPS_SETTINGS" since="24"/> + <field name="ACTION_MANAGE_OVERLAY_PERMISSION" since="23"/> + <field name="ACTION_MANAGE_UNKNOWN_APP_SOURCES" since="26"/> + <field name="ACTION_MANAGE_WRITE_SETTINGS" since="23"/> + <field name="ACTION_MEMORY_CARD_SETTINGS" since="3"/> + <field name="ACTION_NETWORK_OPERATOR_SETTINGS" since="3"/> + <field name="ACTION_NFCSHARING_SETTINGS" since="14"/> + <field name="ACTION_NFC_PAYMENT_SETTINGS" since="19"/> + <field name="ACTION_NFC_SETTINGS" since="16"/> + <field name="ACTION_NIGHT_DISPLAY_SETTINGS" since="26"/> + <field name="ACTION_NOTIFICATION_LISTENER_SETTINGS" since="22"/> + <field name="ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS" since="23"/> + <field name="ACTION_PRINT_SETTINGS" since="19"/> + <field name="ACTION_PRIVACY_SETTINGS" since="5"/> + <field name="ACTION_QUICK_LAUNCH_SETTINGS" since="3"/> + <field name="ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" since="23"/> + <field name="ACTION_REQUEST_SET_AUTOFILL_SERVICE" since="26"/> + <field name="ACTION_SEARCH_SETTINGS" since="8"/> + <field name="ACTION_SECURITY_SETTINGS"/> + <field name="ACTION_SETTINGS"/> + <field name="ACTION_SHOW_REGULATORY_INFO" since="21"/> + <field name="ACTION_SOUND_SETTINGS"/> + <field name="ACTION_SYNC_SETTINGS" since="3"/> + <field name="ACTION_USAGE_ACCESS_SETTINGS" since="21"/> + <field name="ACTION_USER_DICTIONARY_SETTINGS" since="3"/> + <field name="ACTION_VOICE_CONTROL_AIRPLANE_MODE" since="23"/> + <field name="ACTION_VOICE_CONTROL_BATTERY_SAVER_MODE" since="23"/> + <field name="ACTION_VOICE_CONTROL_DO_NOT_DISTURB_MODE" since="23"/> + <field name="ACTION_VOICE_INPUT_SETTINGS" since="21"/> + <field name="ACTION_VPN_SETTINGS" since="24"/> + <field name="ACTION_VR_LISTENER_SETTINGS" since="24"/> + <field name="ACTION_WEBVIEW_SETTINGS" since="24"/> + <field name="ACTION_WIFI_IP_SETTINGS" since="3"/> + <field name="ACTION_WIFI_SETTINGS"/> + <field name="ACTION_WIRELESS_SETTINGS"/> + <field name="ACTION_ZEN_MODE_PRIORITY_SETTINGS" since="26"/> + <field name="AUTHORITY"/> + <field name="EXTRA_ACCOUNT_TYPES" since="18"/> + <field name="EXTRA_AIRPLANE_MODE_ENABLED" since="23"/> + <field name="EXTRA_APP_PACKAGE" since="26"/> + <field name="EXTRA_AUTHORITIES" since="8"/> + <field name="EXTRA_BATTERY_SAVER_MODE_ENABLED" since="23"/> + <field name="EXTRA_CHANNEL_ID" since="26"/> + <field name="EXTRA_DO_NOT_DISTURB_MODE_ENABLED" since="23"/> + <field name="EXTRA_DO_NOT_DISTURB_MODE_MINUTES" since="23"/> + <field name="EXTRA_INPUT_METHOD_ID" since="11"/> + <field name="INTENT_CATEGORY_USAGE_ACCESS_CONFIG" since="23"/> + <field name="METADATA_USAGE_ACCESS_REASON" since="23"/> + </class> + <class name="android/provider/Settings$Global" since="17"> + <extends name="android/provider/Settings$NameValueTable"/> + <method name="<init>()V"/> + <method name="getFloat(Landroid/content/ContentResolver;Ljava/lang/String;)F"/> + <method name="getFloat(Landroid/content/ContentResolver;Ljava/lang/String;F)F"/> + <method name="getInt(Landroid/content/ContentResolver;Ljava/lang/String;)I"/> + <method name="getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I"/> + <method name="getLong(Landroid/content/ContentResolver;Ljava/lang/String;)J"/> + <method name="getLong(Landroid/content/ContentResolver;Ljava/lang/String;J)J"/> + <method name="getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getUriFor(Ljava/lang/String;)Landroid/net/Uri;"/> + <method name="putFloat(Landroid/content/ContentResolver;Ljava/lang/String;F)Z"/> + <method name="putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z"/> + <method name="putLong(Landroid/content/ContentResolver;Ljava/lang/String;J)Z"/> + <method name="putString(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;)Z"/> + <field name="ADB_ENABLED"/> + <field name="AIRPLANE_MODE_ON"/> + <field name="AIRPLANE_MODE_RADIOS"/> + <field name="ALWAYS_FINISH_ACTIVITIES"/> + <field name="ANIMATOR_DURATION_SCALE"/> + <field name="AUTO_TIME"/> + <field name="AUTO_TIME_ZONE"/> + <field name="BLUETOOTH_ON"/> + <field name="BOOT_COUNT" since="24"/> + <field name="CONTACT_METADATA_SYNC_ENABLED" since="24"/> + <field name="CONTENT_URI"/> + <field name="DATA_ROAMING"/> + <field name="DEBUG_APP"/> + <field name="DEVELOPMENT_SETTINGS_ENABLED"/> + <field name="DEVICE_NAME" since="25"/> + <field name="DEVICE_PROVISIONED"/> + <field name="HTTP_PROXY"/> + <field name="INSTALL_NON_MARKET_APPS" deprecated="21"/> + <field name="MODE_RINGER"/> + <field name="NETWORK_PREFERENCE"/> + <field name="RADIO_BLUETOOTH"/> + <field name="RADIO_CELL"/> + <field name="RADIO_NFC"/> + <field name="RADIO_WIFI"/> + <field name="SHOW_PROCESSES" deprecated="26"/> + <field name="STAY_ON_WHILE_PLUGGED_IN"/> + <field name="SYS_PROP_SETTING_VERSION" removed="24"/> + <field name="TRANSITION_ANIMATION_SCALE"/> + <field name="USB_MASS_STORAGE_ENABLED"/> + <field name="USE_GOOGLE_MAIL"/> + <field name="WAIT_FOR_DEBUGGER"/> + <field name="WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN" since="23"/> + <field name="WIFI_MAX_DHCP_RETRY_COUNT"/> + <field name="WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS"/> + <field name="WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON" deprecated="26"/> + <field name="WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY"/> + <field name="WIFI_NUM_OPEN_NETWORKS_KEPT"/> + <field name="WIFI_ON"/> + <field name="WIFI_SLEEP_POLICY"/> + <field name="WIFI_SLEEP_POLICY_DEFAULT"/> + <field name="WIFI_SLEEP_POLICY_NEVER"/> + <field name="WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED"/> + <field name="WIFI_WATCHDOG_ON"/> + <field name="WINDOW_ANIMATION_SCALE"/> + </class> + <class name="android/provider/Settings$NameValueTable" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <method name="<init>()V"/> + <method name="getUriFor(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri;"/> + <method name="putString(Landroid/content/ContentResolver;Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;)Z"/> + <field name="NAME"/> + <field name="VALUE"/> + </class> + <class name="android/provider/Settings$Secure" since="3"> + <extends name="android/provider/Settings$NameValueTable"/> + <method name="<init>()V"/> + <method name="getFloat(Landroid/content/ContentResolver;Ljava/lang/String;)F"/> + <method name="getFloat(Landroid/content/ContentResolver;Ljava/lang/String;F)F"/> + <method name="getInt(Landroid/content/ContentResolver;Ljava/lang/String;)I"/> + <method name="getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I"/> + <method name="getLong(Landroid/content/ContentResolver;Ljava/lang/String;)J"/> + <method name="getLong(Landroid/content/ContentResolver;Ljava/lang/String;J)J"/> + <method name="getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getUriFor(Ljava/lang/String;)Landroid/net/Uri;"/> + <method name="isLocationProviderEnabled(Landroid/content/ContentResolver;Ljava/lang/String;)Z" since="8" deprecated="19"/> + <method name="putFloat(Landroid/content/ContentResolver;Ljava/lang/String;F)Z"/> + <method name="putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z"/> + <method name="putLong(Landroid/content/ContentResolver;Ljava/lang/String;J)Z"/> + <method name="putString(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;)Z"/> + <method name="setLocationProviderEnabled(Landroid/content/ContentResolver;Ljava/lang/String;Z)V" since="8" deprecated="19"/> + <field name="ACCESSIBILITY_DISPLAY_INVERSION_ENABLED" since="21"/> + <field name="ACCESSIBILITY_ENABLED" since="4"/> + <field name="ACCESSIBILITY_SPEAK_PASSWORD" since="15" deprecated="26"/> + <field name="ADB_ENABLED" deprecated="17"/> + <field name="ALLOWED_GEOLOCATION_ORIGINS" since="8"/> + <field name="ALLOW_MOCK_LOCATION" deprecated="23"/> + <field name="ANDROID_ID"/> + <field name="BACKGROUND_DATA" deprecated="16"/> + <field name="BLUETOOTH_ON" deprecated="17"/> + <field name="CONTENT_URI"/> + <field name="DATA_ROAMING" deprecated="17"/> + <field name="DEFAULT_INPUT_METHOD"/> + <field name="DEVELOPMENT_SETTINGS_ENABLED" since="16" deprecated="17"/> + <field name="DEVICE_PROVISIONED" deprecated="17"/> + <field name="ENABLED_ACCESSIBILITY_SERVICES" since="4"/> + <field name="ENABLED_INPUT_METHODS"/> + <field name="HTTP_PROXY" deprecated="17"/> + <field name="INPUT_METHOD_SELECTOR_VISIBILITY" since="11"/> + <field name="INSTALL_NON_MARKET_APPS" deprecated="17"/> + <field name="LOCATION_MODE" since="19"/> + <field name="LOCATION_MODE_BATTERY_SAVING" since="19"/> + <field name="LOCATION_MODE_HIGH_ACCURACY" since="19"/> + <field name="LOCATION_MODE_OFF" since="19"/> + <field name="LOCATION_MODE_SENSORS_ONLY" since="19"/> + <field name="LOCATION_PROVIDERS_ALLOWED" deprecated="19"/> + <field name="LOCK_PATTERN_ENABLED" since="8" deprecated="23"/> + <field name="LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED" since="8" deprecated="17"/> + <field name="LOCK_PATTERN_VISIBLE" since="8" deprecated="23"/> + <field name="LOGGING_ID" deprecated="16"/> + <field name="NETWORK_PREFERENCE" deprecated="17"/> + <field name="PARENTAL_CONTROL_ENABLED"/> + <field name="PARENTAL_CONTROL_LAST_UPDATE"/> + <field name="PARENTAL_CONTROL_REDIRECT_URL"/> + <field name="SELECTED_INPUT_METHOD_SUBTYPE" since="11"/> + <field name="SETTINGS_CLASSNAME"/> + <field name="SKIP_FIRST_USE_HINTS" since="21"/> + <field name="SYS_PROP_SETTING_VERSION" removed="24"/> + <field name="TOUCH_EXPLORATION_ENABLED" since="14"/> + <field name="TTS_DEFAULT_COUNTRY" since="4" deprecated="16"/> + <field name="TTS_DEFAULT_LANG" since="4" deprecated="16"/> + <field name="TTS_DEFAULT_PITCH" since="4"/> + <field name="TTS_DEFAULT_RATE" since="4"/> + <field name="TTS_DEFAULT_SYNTH" since="4"/> + <field name="TTS_DEFAULT_VARIANT" since="4" deprecated="16"/> + <field name="TTS_ENABLED_PLUGINS" since="8"/> + <field name="TTS_USE_DEFAULTS" since="4" deprecated="16"/> + <field name="USB_MASS_STORAGE_ENABLED" deprecated="17"/> + <field name="USE_GOOGLE_MAIL" deprecated="17"/> + <field name="WIFI_MAX_DHCP_RETRY_COUNT" deprecated="17"/> + <field name="WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS" deprecated="17"/> + <field name="WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON" deprecated="17"/> + <field name="WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY" deprecated="17"/> + <field name="WIFI_NUM_OPEN_NETWORKS_KEPT" deprecated="17"/> + <field name="WIFI_ON" deprecated="17"/> + <field name="WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE" deprecated="16"/> + <field name="WIFI_WATCHDOG_AP_COUNT" deprecated="16"/> + <field name="WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS" deprecated="16"/> + <field name="WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED" deprecated="16"/> + <field name="WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS" deprecated="16"/> + <field name="WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT" deprecated="16"/> + <field name="WIFI_WATCHDOG_MAX_AP_CHECKS" deprecated="16"/> + <field name="WIFI_WATCHDOG_ON" deprecated="17"/> + <field name="WIFI_WATCHDOG_PING_COUNT" deprecated="16"/> + <field name="WIFI_WATCHDOG_PING_DELAY_MS" deprecated="16"/> + <field name="WIFI_WATCHDOG_PING_TIMEOUT_MS" deprecated="16"/> + <field name="WIFI_WATCHDOG_WATCH_LIST" deprecated="16"/> + </class> + <class name="android/provider/Settings$SettingNotFoundException" since="1"> + <extends name="android/util/AndroidException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/provider/Settings$System" since="1"> + <extends name="android/provider/Settings$NameValueTable"/> + <method name="<init>()V"/> + <method name="canWrite(Landroid/content/Context;)Z" since="23"/> + <method name="getConfiguration(Landroid/content/ContentResolver;Landroid/content/res/Configuration;)V"/> + <method name="getFloat(Landroid/content/ContentResolver;Ljava/lang/String;)F"/> + <method name="getFloat(Landroid/content/ContentResolver;Ljava/lang/String;F)F"/> + <method name="getInt(Landroid/content/ContentResolver;Ljava/lang/String;)I"/> + <method name="getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I"/> + <method name="getLong(Landroid/content/ContentResolver;Ljava/lang/String;)J" since="3"/> + <method name="getLong(Landroid/content/ContentResolver;Ljava/lang/String;J)J" since="3"/> + <method name="getShowGTalkServiceStatus(Landroid/content/ContentResolver;)Z" deprecated="17"/> + <method name="getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getUriFor(Ljava/lang/String;)Landroid/net/Uri;"/> + <method name="putConfiguration(Landroid/content/ContentResolver;Landroid/content/res/Configuration;)Z"/> + <method name="putFloat(Landroid/content/ContentResolver;Ljava/lang/String;F)Z"/> + <method name="putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z"/> + <method name="putLong(Landroid/content/ContentResolver;Ljava/lang/String;J)Z" since="3"/> + <method name="putString(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;)Z"/> + <method name="setShowGTalkServiceStatus(Landroid/content/ContentResolver;Z)V" deprecated="17"/> + <field name="ACCELEROMETER_ROTATION" since="3"/> + <field name="ADB_ENABLED" deprecated="16"/> + <field name="AIRPLANE_MODE_ON" deprecated="17"/> + <field name="AIRPLANE_MODE_RADIOS" deprecated="17"/> + <field name="ALARM_ALERT" since="5"/> + <field name="ALWAYS_FINISH_ACTIVITIES" deprecated="17"/> + <field name="ANDROID_ID" deprecated="16"/> + <field name="ANIMATOR_DURATION_SCALE" since="16" deprecated="17"/> + <field name="APPEND_FOR_LAST_AUDIBLE" removed="23"/> + <field name="AUTO_TIME" deprecated="17"/> + <field name="AUTO_TIME_ZONE" since="11" deprecated="17"/> + <field name="BLUETOOTH_DISCOVERABILITY"/> + <field name="BLUETOOTH_DISCOVERABILITY_TIMEOUT"/> + <field name="BLUETOOTH_ON" deprecated="16"/> + <field name="CONTENT_URI"/> + <field name="DATA_ROAMING" deprecated="16"/> + <field name="DATE_FORMAT"/> + <field name="DEBUG_APP" deprecated="17"/> + <field name="DEFAULT_ALARM_ALERT_URI" since="5"/> + <field name="DEFAULT_NOTIFICATION_URI"/> + <field name="DEFAULT_RINGTONE_URI"/> + <field name="DEVICE_PROVISIONED" deprecated="16"/> + <field name="DIM_SCREEN" deprecated="17"/> + <field name="DTMF_TONE_TYPE_WHEN_DIALING" since="23"/> + <field name="DTMF_TONE_WHEN_DIALING"/> + <field name="END_BUTTON_BEHAVIOR"/> + <field name="FONT_SCALE"/> + <field name="HAPTIC_FEEDBACK_ENABLED" since="3"/> + <field name="HTTP_PROXY" deprecated="16"/> + <field name="INSTALL_NON_MARKET_APPS" deprecated="16"/> + <field name="LOCATION_PROVIDERS_ALLOWED" deprecated="16"/> + <field name="LOCK_PATTERN_ENABLED" deprecated="16"/> + <field name="LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED" since="3" deprecated="16"/> + <field name="LOCK_PATTERN_VISIBLE" deprecated="16"/> + <field name="LOGGING_ID" deprecated="16"/> + <field name="MODE_RINGER" deprecated="17"/> + <field name="MODE_RINGER_STREAMS_AFFECTED"/> + <field name="MUTE_STREAMS_AFFECTED"/> + <field name="NETWORK_PREFERENCE" deprecated="16"/> + <field name="NEXT_ALARM_FORMATTED" deprecated="21"/> + <field name="NOTIFICATION_SOUND"/> + <field name="PARENTAL_CONTROL_ENABLED" deprecated="16"/> + <field name="PARENTAL_CONTROL_LAST_UPDATE" deprecated="16"/> + <field name="PARENTAL_CONTROL_REDIRECT_URL" deprecated="16"/> + <field name="RADIO_BLUETOOTH" deprecated="17"/> + <field name="RADIO_CELL" deprecated="17"/> + <field name="RADIO_NFC" since="14" deprecated="17"/> + <field name="RADIO_WIFI" deprecated="17"/> + <field name="RINGTONE"/> + <field name="SCREEN_BRIGHTNESS"/> + <field name="SCREEN_BRIGHTNESS_MODE" since="8"/> + <field name="SCREEN_BRIGHTNESS_MODE_AUTOMATIC" since="8"/> + <field name="SCREEN_BRIGHTNESS_MODE_MANUAL" since="8"/> + <field name="SCREEN_OFF_TIMEOUT"/> + <field name="SETTINGS_CLASSNAME" deprecated="16"/> + <field name="SETUP_WIZARD_HAS_RUN"/> + <field name="SHOW_GTALK_SERVICE_STATUS"/> + <field name="SHOW_PROCESSES" deprecated="17"/> + <field name="SHOW_WEB_SUGGESTIONS" since="4" deprecated="16"/> + <field name="SOUND_EFFECTS_ENABLED"/> + <field name="STAY_ON_WHILE_PLUGGED_IN" deprecated="17"/> + <field name="SYS_PROP_SETTING_VERSION" removed="24"/> + <field name="TEXT_AUTO_CAPS"/> + <field name="TEXT_AUTO_PUNCTUATE"/> + <field name="TEXT_AUTO_REPLACE"/> + <field name="TEXT_SHOW_PASSWORD"/> + <field name="TIME_12_24"/> + <field name="TRANSITION_ANIMATION_SCALE" deprecated="17"/> + <field name="USB_MASS_STORAGE_ENABLED" deprecated="16"/> + <field name="USER_ROTATION" since="11"/> + <field name="USE_GOOGLE_MAIL" deprecated="16"/> + <field name="VIBRATE_ON"/> + <field name="VIBRATE_WHEN_RINGING" since="23"/> + <field name="VOLUME_ALARM" removed="23"/> + <field name="VOLUME_BLUETOOTH_SCO" since="8" removed="23"/> + <field name="VOLUME_MUSIC" removed="23"/> + <field name="VOLUME_NOTIFICATION" since="3" removed="23"/> + <field name="VOLUME_RING" removed="23"/> + <field name="VOLUME_SETTINGS" removed="23"/> + <field name="VOLUME_SYSTEM" removed="23"/> + <field name="VOLUME_VOICE" removed="23"/> + <field name="WAIT_FOR_DEBUGGER" deprecated="17"/> + <field name="WALLPAPER_ACTIVITY" deprecated="17"/> + <field name="WIFI_MAX_DHCP_RETRY_COUNT" since="3" deprecated="16"/> + <field name="WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS" since="3" deprecated="16"/> + <field name="WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON" deprecated="16"/> + <field name="WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY" deprecated="16"/> + <field name="WIFI_NUM_OPEN_NETWORKS_KEPT" deprecated="16"/> + <field name="WIFI_ON" deprecated="16"/> + <field name="WIFI_SLEEP_POLICY" since="3" deprecated="17"/> + <field name="WIFI_SLEEP_POLICY_DEFAULT" since="3" deprecated="17"/> + <field name="WIFI_SLEEP_POLICY_NEVER" since="3" deprecated="17"/> + <field name="WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED" since="3" deprecated="17"/> + <field name="WIFI_STATIC_DNS1" deprecated="17"/> + <field name="WIFI_STATIC_DNS2" deprecated="17"/> + <field name="WIFI_STATIC_GATEWAY" deprecated="17"/> + <field name="WIFI_STATIC_IP" deprecated="17"/> + <field name="WIFI_STATIC_NETMASK" deprecated="17"/> + <field name="WIFI_USE_STATIC_IP" deprecated="17"/> + <field name="WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE" deprecated="16"/> + <field name="WIFI_WATCHDOG_AP_COUNT" deprecated="16"/> + <field name="WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS" deprecated="16"/> + <field name="WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED" deprecated="16"/> + <field name="WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS" deprecated="16"/> + <field name="WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT" deprecated="16"/> + <field name="WIFI_WATCHDOG_MAX_AP_CHECKS" deprecated="16"/> + <field name="WIFI_WATCHDOG_ON" deprecated="16"/> + <field name="WIFI_WATCHDOG_PING_COUNT" deprecated="16"/> + <field name="WIFI_WATCHDOG_PING_DELAY_MS" deprecated="16"/> + <field name="WIFI_WATCHDOG_PING_TIMEOUT_MS" deprecated="16"/> + <field name="WINDOW_ANIMATION_SCALE" deprecated="17"/> + </class> + <class name="android/provider/SyncStateContract" since="5"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/provider/SyncStateContract$Columns" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <field name="ACCOUNT_NAME"/> + <field name="ACCOUNT_TYPE"/> + <field name="DATA"/> + </class> + <class name="android/provider/SyncStateContract$Constants" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/provider/SyncStateContract$Columns"/> + <method name="<init>()V"/> + <field name="CONTENT_DIRECTORY"/> + </class> + <class name="android/provider/SyncStateContract$Helpers" since="5"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="get(Landroid/content/ContentProviderClient;Landroid/net/Uri;Landroid/accounts/Account;)[B"/> + <method name="getWithUri(Landroid/content/ContentProviderClient;Landroid/net/Uri;Landroid/accounts/Account;)Landroid/util/Pair;"/> + <method name="insert(Landroid/content/ContentProviderClient;Landroid/net/Uri;Landroid/accounts/Account;[B)Landroid/net/Uri;"/> + <method name="newSetOperation(Landroid/net/Uri;Landroid/accounts/Account;[B)Landroid/content/ContentProviderOperation;"/> + <method name="newUpdateOperation(Landroid/net/Uri;[B)Landroid/content/ContentProviderOperation;"/> + <method name="set(Landroid/content/ContentProviderClient;Landroid/net/Uri;Landroid/accounts/Account;[B)V"/> + <method name="update(Landroid/content/ContentProviderClient;Landroid/net/Uri;[B)V"/> + </class> + <class name="android/provider/Telephony" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/provider/Telephony$BaseMmsColumns" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <field name="CONTENT_CLASS"/> + <field name="CONTENT_LOCATION"/> + <field name="CONTENT_TYPE"/> + <field name="CREATOR" since="21"/> + <field name="DATE"/> + <field name="DATE_SENT"/> + <field name="DELIVERY_REPORT"/> + <field name="DELIVERY_TIME"/> + <field name="EXPIRY"/> + <field name="LOCKED"/> + <field name="MESSAGE_BOX"/> + <field name="MESSAGE_BOX_ALL"/> + <field name="MESSAGE_BOX_DRAFTS"/> + <field name="MESSAGE_BOX_FAILED" since="21"/> + <field name="MESSAGE_BOX_INBOX"/> + <field name="MESSAGE_BOX_OUTBOX"/> + <field name="MESSAGE_BOX_SENT"/> + <field name="MESSAGE_CLASS"/> + <field name="MESSAGE_ID"/> + <field name="MESSAGE_SIZE"/> + <field name="MESSAGE_TYPE"/> + <field name="MMS_VERSION"/> + <field name="PRIORITY"/> + <field name="READ"/> + <field name="READ_REPORT"/> + <field name="READ_STATUS"/> + <field name="REPORT_ALLOWED"/> + <field name="RESPONSE_STATUS"/> + <field name="RESPONSE_TEXT"/> + <field name="RETRIEVE_STATUS"/> + <field name="RETRIEVE_TEXT"/> + <field name="RETRIEVE_TEXT_CHARSET"/> + <field name="SEEN"/> + <field name="STATUS"/> + <field name="SUBJECT"/> + <field name="SUBJECT_CHARSET"/> + <field name="SUBSCRIPTION_ID" since="22"/> + <field name="TEXT_ONLY"/> + <field name="THREAD_ID"/> + <field name="TRANSACTION_ID"/> + </class> + <class name="android/provider/Telephony$CanonicalAddressesColumns" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <field name="ADDRESS"/> + </class> + <class name="android/provider/Telephony$Carriers" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <method name="<init>()V"/> + <field name="APN"/> + <field name="AUTH_TYPE"/> + <field name="BEARER"/> + <field name="CARRIER_ENABLED"/> + <field name="CONTENT_URI"/> + <field name="CURRENT"/> + <field name="DEFAULT_SORT_ORDER"/> + <field name="MCC"/> + <field name="MMSC"/> + <field name="MMSPORT"/> + <field name="MMSPROXY"/> + <field name="MNC"/> + <field name="MVNO_MATCH_DATA"/> + <field name="MVNO_TYPE"/> + <field name="NAME"/> + <field name="NUMERIC"/> + <field name="PASSWORD"/> + <field name="PORT"/> + <field name="PROTOCOL"/> + <field name="PROXY"/> + <field name="ROAMING_PROTOCOL"/> + <field name="SERVER"/> + <field name="SUBSCRIPTION_ID" since="22"/> + <field name="TYPE"/> + <field name="USER"/> + </class> + <class name="android/provider/Telephony$Mms" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/provider/Telephony$BaseMmsColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_URI"/> + <field name="DEFAULT_SORT_ORDER"/> + <field name="REPORT_REQUEST_URI"/> + <field name="REPORT_STATUS_URI"/> + </class> + <class name="android/provider/Telephony$Mms$Addr" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <method name="<init>()V"/> + <field name="ADDRESS"/> + <field name="CHARSET"/> + <field name="CONTACT_ID"/> + <field name="MSG_ID"/> + <field name="TYPE"/> + </class> + <class name="android/provider/Telephony$Mms$Draft" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/provider/Telephony$BaseMmsColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_URI"/> + <field name="DEFAULT_SORT_ORDER"/> + </class> + <class name="android/provider/Telephony$Mms$Inbox" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/provider/Telephony$BaseMmsColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_URI"/> + <field name="DEFAULT_SORT_ORDER"/> + </class> + <class name="android/provider/Telephony$Mms$Intents" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="CONTENT_CHANGED_ACTION"/> + <field name="DELETED_CONTENTS"/> + </class> + <class name="android/provider/Telephony$Mms$Outbox" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/provider/Telephony$BaseMmsColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_URI"/> + <field name="DEFAULT_SORT_ORDER"/> + </class> + <class name="android/provider/Telephony$Mms$Part" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <method name="<init>()V"/> + <field name="CHARSET"/> + <field name="CONTENT_DISPOSITION"/> + <field name="CONTENT_ID"/> + <field name="CONTENT_LOCATION"/> + <field name="CONTENT_TYPE"/> + <field name="CT_START"/> + <field name="CT_TYPE"/> + <field name="FILENAME"/> + <field name="MSG_ID"/> + <field name="NAME"/> + <field name="SEQ"/> + <field name="TEXT"/> + <field name="_DATA"/> + </class> + <class name="android/provider/Telephony$Mms$Rate" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="CONTENT_URI"/> + <field name="SENT_TIME"/> + </class> + <class name="android/provider/Telephony$Mms$Sent" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/provider/Telephony$BaseMmsColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_URI"/> + <field name="DEFAULT_SORT_ORDER"/> + </class> + <class name="android/provider/Telephony$MmsSms" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_CONVERSATIONS_URI"/> + <field name="CONTENT_DRAFT_URI"/> + <field name="CONTENT_FILTER_BYPHONE_URI"/> + <field name="CONTENT_LOCKED_URI"/> + <field name="CONTENT_UNDELIVERED_URI"/> + <field name="CONTENT_URI"/> + <field name="ERR_TYPE_GENERIC"/> + <field name="ERR_TYPE_GENERIC_PERMANENT"/> + <field name="ERR_TYPE_MMS_PROTO_PERMANENT"/> + <field name="ERR_TYPE_MMS_PROTO_TRANSIENT"/> + <field name="ERR_TYPE_SMS_PROTO_PERMANENT"/> + <field name="ERR_TYPE_SMS_PROTO_TRANSIENT"/> + <field name="ERR_TYPE_TRANSPORT_FAILURE"/> + <field name="MMS_PROTO"/> + <field name="NO_ERROR"/> + <field name="SEARCH_URI"/> + <field name="SMS_PROTO"/> + <field name="TYPE_DISCRIMINATOR_COLUMN"/> + </class> + <class name="android/provider/Telephony$MmsSms$PendingMessages" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_URI"/> + <field name="DUE_TIME"/> + <field name="ERROR_CODE"/> + <field name="ERROR_TYPE"/> + <field name="LAST_TRY"/> + <field name="MSG_ID"/> + <field name="MSG_TYPE"/> + <field name="PROTO_TYPE"/> + <field name="RETRY_INDEX"/> + <field name="SUBSCRIPTION_ID" since="22"/> + </class> + <class name="android/provider/Telephony$ServiceStateTable" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getUriForSubscriptionId(I)Landroid/net/Uri;"/> + <method name="getUriForSubscriptionIdAndField(ILjava/lang/String;)Landroid/net/Uri;"/> + <field name="AUTHORITY"/> + <field name="CONTENT_URI"/> + <field name="IS_MANUAL_NETWORK_SELECTION"/> + <field name="VOICE_OPERATOR_NUMERIC"/> + <field name="VOICE_REG_STATE"/> + </class> + <class name="android/provider/Telephony$Sms" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/Telephony$TextBasedSmsColumns"/> + <method name="<init>()V"/> + <method name="getDefaultSmsPackage(Landroid/content/Context;)Ljava/lang/String;"/> + <field name="CONTENT_URI"/> + <field name="DEFAULT_SORT_ORDER"/> + </class> + <class name="android/provider/Telephony$Sms$Conversations" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/Telephony$TextBasedSmsColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_URI"/> + <field name="DEFAULT_SORT_ORDER"/> + <field name="MESSAGE_COUNT"/> + <field name="SNIPPET"/> + </class> + <class name="android/provider/Telephony$Sms$Draft" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/Telephony$TextBasedSmsColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_URI"/> + <field name="DEFAULT_SORT_ORDER"/> + </class> + <class name="android/provider/Telephony$Sms$Inbox" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/Telephony$TextBasedSmsColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_URI"/> + <field name="DEFAULT_SORT_ORDER"/> + </class> + <class name="android/provider/Telephony$Sms$Intents" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getMessagesFromIntent(Landroid/content/Intent;)[Landroid/telephony/SmsMessage;"/> + <field name="ACTION_CHANGE_DEFAULT"/> + <field name="ACTION_DEFAULT_SMS_PACKAGE_CHANGED" since="24"/> + <field name="ACTION_EXTERNAL_PROVIDER_CHANGE" since="24"/> + <field name="DATA_SMS_RECEIVED_ACTION"/> + <field name="EXTRA_IS_DEFAULT_SMS_APP" since="24"/> + <field name="EXTRA_PACKAGE_NAME"/> + <field name="RESULT_SMS_DUPLICATED"/> + <field name="RESULT_SMS_GENERIC_ERROR"/> + <field name="RESULT_SMS_HANDLED"/> + <field name="RESULT_SMS_OUT_OF_MEMORY"/> + <field name="RESULT_SMS_UNSUPPORTED"/> + <field name="SIM_FULL_ACTION"/> + <field name="SMS_CB_RECEIVED_ACTION"/> + <field name="SMS_DELIVER_ACTION"/> + <field name="SMS_EMERGENCY_CB_RECEIVED_ACTION" removed="24"/> + <field name="SMS_RECEIVED_ACTION"/> + <field name="SMS_REJECTED_ACTION"/> + <field name="SMS_SERVICE_CATEGORY_PROGRAM_DATA_RECEIVED_ACTION"/> + <field name="WAP_PUSH_DELIVER_ACTION"/> + <field name="WAP_PUSH_RECEIVED_ACTION"/> + </class> + <class name="android/provider/Telephony$Sms$Outbox" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/Telephony$TextBasedSmsColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_URI"/> + <field name="DEFAULT_SORT_ORDER"/> + </class> + <class name="android/provider/Telephony$Sms$Sent" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/Telephony$TextBasedSmsColumns"/> + <method name="<init>()V"/> + <field name="CONTENT_URI"/> + <field name="DEFAULT_SORT_ORDER"/> + </class> + <class name="android/provider/Telephony$TextBasedSmsColumns" since="19"> + <extends name="java/lang/Object"/> + <field name="ADDRESS"/> + <field name="BODY"/> + <field name="CREATOR" since="21"/> + <field name="DATE"/> + <field name="DATE_SENT"/> + <field name="ERROR_CODE"/> + <field name="LOCKED"/> + <field name="MESSAGE_TYPE_ALL"/> + <field name="MESSAGE_TYPE_DRAFT"/> + <field name="MESSAGE_TYPE_FAILED"/> + <field name="MESSAGE_TYPE_INBOX"/> + <field name="MESSAGE_TYPE_OUTBOX"/> + <field name="MESSAGE_TYPE_QUEUED"/> + <field name="MESSAGE_TYPE_SENT"/> + <field name="PERSON"/> + <field name="PROTOCOL"/> + <field name="READ"/> + <field name="REPLY_PATH_PRESENT"/> + <field name="SEEN"/> + <field name="SERVICE_CENTER"/> + <field name="STATUS"/> + <field name="STATUS_COMPLETE"/> + <field name="STATUS_FAILED"/> + <field name="STATUS_NONE"/> + <field name="STATUS_PENDING"/> + <field name="SUBJECT"/> + <field name="SUBSCRIPTION_ID" since="22"/> + <field name="THREAD_ID"/> + <field name="TYPE"/> + </class> + <class name="android/provider/Telephony$Threads" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/provider/Telephony$ThreadsColumns"/> + <method name="<init>()V"/> + <method name="getOrCreateThreadId(Landroid/content/Context;Ljava/lang/String;)J" since="23"/> + <method name="getOrCreateThreadId(Landroid/content/Context;Ljava/util/Set;)J" since="23"/> + <field name="BROADCAST_THREAD"/> + <field name="COMMON_THREAD"/> + <field name="CONTENT_URI"/> + <field name="OBSOLETE_THREADS_URI"/> + </class> + <class name="android/provider/Telephony$ThreadsColumns" since="19"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <field name="ARCHIVED" since="21"/> + <field name="DATE"/> + <field name="ERROR"/> + <field name="HAS_ATTACHMENT"/> + <field name="MESSAGE_COUNT"/> + <field name="READ"/> + <field name="RECIPIENT_IDS"/> + <field name="SNIPPET"/> + <field name="SNIPPET_CHARSET"/> + <field name="TYPE"/> + </class> + <class name="android/provider/UserDictionary" since="3"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="AUTHORITY"/> + <field name="CONTENT_URI"/> + </class> + <class name="android/provider/UserDictionary$Words" since="3"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <method name="<init>()V"/> + <method name="addWord(Landroid/content/Context;Ljava/lang/String;II)V" deprecated="16"/> + <method name="addWord(Landroid/content/Context;Ljava/lang/String;ILjava/lang/String;Ljava/util/Locale;)V" since="16"/> + <field name="APP_ID"/> + <field name="CONTENT_ITEM_TYPE"/> + <field name="CONTENT_TYPE"/> + <field name="CONTENT_URI"/> + <field name="DEFAULT_SORT_ORDER"/> + <field name="FREQUENCY"/> + <field name="LOCALE"/> + <field name="LOCALE_TYPE_ALL" deprecated="16"/> + <field name="LOCALE_TYPE_CURRENT" deprecated="16"/> + <field name="SHORTCUT" since="16"/> + <field name="WORD"/> + <field name="_ID"/> + </class> + <class name="android/provider/VoicemailContract" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="ACTION_FETCH_VOICEMAIL"/> + <field name="ACTION_NEW_VOICEMAIL"/> + <field name="ACTION_SYNC_VOICEMAIL" since="24"/> + <field name="AUTHORITY"/> + <field name="EXTRA_PHONE_ACCOUNT_HANDLE" since="25"/> + <field name="EXTRA_SELF_CHANGE"/> + <field name="PARAM_KEY_SOURCE_PACKAGE"/> + </class> + <class name="android/provider/VoicemailContract$Status" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <method name="<init>()V"/> + <method name="buildSourceUri(Ljava/lang/String;)Landroid/net/Uri;"/> + <field name="CONFIGURATION_STATE"/> + <field name="CONFIGURATION_STATE_CAN_BE_CONFIGURED"/> + <field name="CONFIGURATION_STATE_CONFIGURING" since="25"/> + <field name="CONFIGURATION_STATE_DISABLED" since="25"/> + <field name="CONFIGURATION_STATE_FAILED" since="25"/> + <field name="CONFIGURATION_STATE_NOT_CONFIGURED"/> + <field name="CONFIGURATION_STATE_OK"/> + <field name="CONTENT_URI"/> + <field name="DATA_CHANNEL_STATE"/> + <field name="DATA_CHANNEL_STATE_BAD_CONFIGURATION" since="24"/> + <field name="DATA_CHANNEL_STATE_COMMUNICATION_ERROR" since="24"/> + <field name="DATA_CHANNEL_STATE_NO_CONNECTION"/> + <field name="DATA_CHANNEL_STATE_NO_CONNECTION_CELLULAR_REQUIRED" since="24"/> + <field name="DATA_CHANNEL_STATE_OK"/> + <field name="DATA_CHANNEL_STATE_SERVER_CONNECTION_ERROR" since="24"/> + <field name="DATA_CHANNEL_STATE_SERVER_ERROR" since="24"/> + <field name="DIR_TYPE"/> + <field name="ITEM_TYPE"/> + <field name="NOTIFICATION_CHANNEL_STATE"/> + <field name="NOTIFICATION_CHANNEL_STATE_MESSAGE_WAITING"/> + <field name="NOTIFICATION_CHANNEL_STATE_NO_CONNECTION"/> + <field name="NOTIFICATION_CHANNEL_STATE_OK"/> + <field name="PHONE_ACCOUNT_COMPONENT_NAME" since="23"/> + <field name="PHONE_ACCOUNT_ID" since="23"/> + <field name="QUOTA_OCCUPIED" since="24"/> + <field name="QUOTA_TOTAL" since="24"/> + <field name="QUOTA_UNAVAILABLE" since="24"/> + <field name="SETTINGS_URI"/> + <field name="SOURCE_PACKAGE"/> + <field name="SOURCE_TYPE" since="25"/> + <field name="VOICEMAIL_ACCESS_URI"/> + </class> + <class name="android/provider/VoicemailContract$Voicemails" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/provider/BaseColumns"/> + <implements name="android/provider/OpenableColumns"/> + <method name="<init>()V"/> + <method name="buildSourceUri(Ljava/lang/String;)Landroid/net/Uri;"/> + <field name="ARCHIVED" since="26"/> + <field name="BACKED_UP" since="26"/> + <field name="CONTENT_URI"/> + <field name="DATE"/> + <field name="DELETED" since="23"/> + <field name="DIRTY" since="23"/> + <field name="DIR_TYPE"/> + <field name="DURATION"/> + <field name="HAS_CONTENT"/> + <field name="IS_OMTP_VOICEMAIL" since="26"/> + <field name="IS_READ"/> + <field name="ITEM_TYPE"/> + <field name="LAST_MODIFIED" since="24"/> + <field name="MIME_TYPE"/> + <field name="NUMBER"/> + <field name="PHONE_ACCOUNT_COMPONENT_NAME" since="23"/> + <field name="PHONE_ACCOUNT_ID" since="23"/> + <field name="RESTORED" since="26"/> + <field name="SOURCE_DATA"/> + <field name="SOURCE_PACKAGE"/> + <field name="TRANSCRIPTION" since="21"/> + </class> + <class name="android/renderscript/Allocation" since="11"> + <extends name="android/renderscript/BaseObj"/> + <method name="<init>()V"/> + <method name="copy1DRangeFrom(IILandroid/renderscript/Allocation;I)V" since="14"/> + <method name="copy1DRangeFrom(IILjava/lang/Object;)V" since="21"/> + <method name="copy1DRangeFrom(II[B)V"/> + <method name="copy1DRangeFrom(II[F)V"/> + <method name="copy1DRangeFrom(II[I)V"/> + <method name="copy1DRangeFrom(II[S)V"/> + <method name="copy1DRangeFromUnchecked(IILjava/lang/Object;)V" since="21"/> + <method name="copy1DRangeFromUnchecked(II[B)V"/> + <method name="copy1DRangeFromUnchecked(II[F)V"/> + <method name="copy1DRangeFromUnchecked(II[I)V"/> + <method name="copy1DRangeFromUnchecked(II[S)V"/> + <method name="copy1DRangeTo(IILjava/lang/Object;)V" since="23"/> + <method name="copy1DRangeTo(II[B)V" since="23"/> + <method name="copy1DRangeTo(II[F)V" since="23"/> + <method name="copy1DRangeTo(II[I)V" since="23"/> + <method name="copy1DRangeTo(II[S)V" since="23"/> + <method name="copy1DRangeToUnchecked(IILjava/lang/Object;)V" since="23"/> + <method name="copy1DRangeToUnchecked(II[B)V" since="23"/> + <method name="copy1DRangeToUnchecked(II[F)V" since="23"/> + <method name="copy1DRangeToUnchecked(II[I)V" since="23"/> + <method name="copy1DRangeToUnchecked(II[S)V" since="23"/> + <method name="copy2DRangeFrom(IIIILandroid/renderscript/Allocation;II)V" since="14"/> + <method name="copy2DRangeFrom(IIIILjava/lang/Object;)V" since="21"/> + <method name="copy2DRangeFrom(IIII[B)V"/> + <method name="copy2DRangeFrom(IIII[F)V"/> + <method name="copy2DRangeFrom(IIII[I)V"/> + <method name="copy2DRangeFrom(IIII[S)V"/> + <method name="copy2DRangeFrom(IILandroid/graphics/Bitmap;)V"/> + <method name="copy2DRangeTo(IIIILjava/lang/Object;)V" since="23"/> + <method name="copy2DRangeTo(IIII[B)V" since="23"/> + <method name="copy2DRangeTo(IIII[F)V" since="23"/> + <method name="copy2DRangeTo(IIII[I)V" since="23"/> + <method name="copy2DRangeTo(IIII[S)V" since="23"/> + <method name="copy3DRangeFrom(IIIIIILandroid/renderscript/Allocation;III)V" since="23"/> + <method name="copy3DRangeFrom(IIIIIILjava/lang/Object;)V" since="23"/> + <method name="copy3DRangeTo(IIIIIILjava/lang/Object;)V" since="23"/> + <method name="copyFrom(Landroid/graphics/Bitmap;)V"/> + <method name="copyFrom(Landroid/renderscript/Allocation;)V" since="18"/> + <method name="copyFrom(Ljava/lang/Object;)V" since="21"/> + <method name="copyFrom([B)V"/> + <method name="copyFrom([F)V"/> + <method name="copyFrom([I)V"/> + <method name="copyFrom([Landroid/renderscript/BaseObj;)V"/> + <method name="copyFrom([S)V"/> + <method name="copyFromUnchecked(Ljava/lang/Object;)V" since="21"/> + <method name="copyFromUnchecked([B)V"/> + <method name="copyFromUnchecked([F)V"/> + <method name="copyFromUnchecked([I)V"/> + <method name="copyFromUnchecked([S)V"/> + <method name="copyTo(Landroid/graphics/Bitmap;)V"/> + <method name="copyTo(Ljava/lang/Object;)V" since="21"/> + <method name="copyTo([B)V"/> + <method name="copyTo([F)V"/> + <method name="copyTo([I)V"/> + <method name="copyTo([S)V"/> + <method name="createAllocations(Landroid/renderscript/RenderScript;Landroid/renderscript/Type;II)[Landroid/renderscript/Allocation;" since="24"/> + <method name="createCubemapFromBitmap(Landroid/renderscript/RenderScript;Landroid/graphics/Bitmap;)Landroid/renderscript/Allocation;"/> + <method name="createCubemapFromBitmap(Landroid/renderscript/RenderScript;Landroid/graphics/Bitmap;Landroid/renderscript/Allocation$MipmapControl;I)Landroid/renderscript/Allocation;"/> + <method name="createCubemapFromCubeFaces(Landroid/renderscript/RenderScript;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;)Landroid/renderscript/Allocation;"/> + <method name="createCubemapFromCubeFaces(Landroid/renderscript/RenderScript;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/renderscript/Allocation$MipmapControl;I)Landroid/renderscript/Allocation;"/> + <method name="createFromBitmap(Landroid/renderscript/RenderScript;Landroid/graphics/Bitmap;)Landroid/renderscript/Allocation;"/> + <method name="createFromBitmap(Landroid/renderscript/RenderScript;Landroid/graphics/Bitmap;Landroid/renderscript/Allocation$MipmapControl;I)Landroid/renderscript/Allocation;"/> + <method name="createFromBitmapResource(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;I)Landroid/renderscript/Allocation;"/> + <method name="createFromBitmapResource(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;ILandroid/renderscript/Allocation$MipmapControl;I)Landroid/renderscript/Allocation;"/> + <method name="createFromString(Landroid/renderscript/RenderScript;Ljava/lang/String;I)Landroid/renderscript/Allocation;"/> + <method name="createSized(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;I)Landroid/renderscript/Allocation;"/> + <method name="createSized(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;II)Landroid/renderscript/Allocation;"/> + <method name="createTyped(Landroid/renderscript/RenderScript;Landroid/renderscript/Type;)Landroid/renderscript/Allocation;"/> + <method name="createTyped(Landroid/renderscript/RenderScript;Landroid/renderscript/Type;I)Landroid/renderscript/Allocation;"/> + <method name="createTyped(Landroid/renderscript/RenderScript;Landroid/renderscript/Type;Landroid/renderscript/Allocation$MipmapControl;I)Landroid/renderscript/Allocation;"/> + <method name="generateMipmaps()V"/> + <method name="getByteBuffer()Ljava/nio/ByteBuffer;" since="24"/> + <method name="getBytesSize()I" since="16"/> + <method name="getElement()Landroid/renderscript/Element;" since="16"/> + <method name="getStride()J" since="24"/> + <method name="getSurface()Landroid/view/Surface;" since="16"/> + <method name="getTimeStamp()J" since="24"/> + <method name="getType()Landroid/renderscript/Type;"/> + <method name="getUsage()I" since="16"/> + <method name="ioReceive()V" since="16"/> + <method name="ioSend()V" since="16"/> + <method name="resize(I)V" deprecated="18"/> + <method name="setAutoPadding(Z)V" since="23"/> + <method name="setFromFieldPacker(IIIILandroid/renderscript/FieldPacker;)V" since="23"/> + <method name="setFromFieldPacker(IILandroid/renderscript/FieldPacker;)V"/> + <method name="setFromFieldPacker(ILandroid/renderscript/FieldPacker;)V"/> + <method name="setOnBufferAvailableListener(Landroid/renderscript/Allocation$OnBufferAvailableListener;)V" since="19"/> + <method name="setSurface(Landroid/view/Surface;)V" since="16"/> + <method name="syncAll(I)V"/> + <field name="USAGE_GRAPHICS_CONSTANTS"/> + <field name="USAGE_GRAPHICS_RENDER_TARGET" since="14"/> + <field name="USAGE_GRAPHICS_TEXTURE"/> + <field name="USAGE_GRAPHICS_VERTEX"/> + <field name="USAGE_IO_INPUT" since="16"/> + <field name="USAGE_IO_OUTPUT" since="16"/> + <field name="USAGE_SCRIPT"/> + <field name="USAGE_SHARED" since="18"/> + </class> + <class name="android/renderscript/Allocation$MipmapControl" since="11"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/renderscript/Allocation$MipmapControl;"/> + <method name="values()[Landroid/renderscript/Allocation$MipmapControl;"/> + <field name="MIPMAP_FULL"/> + <field name="MIPMAP_NONE"/> + <field name="MIPMAP_ON_SYNC_TO_TEXTURE"/> + </class> + <class name="android/renderscript/Allocation$OnBufferAvailableListener" since="19"> + <extends name="java/lang/Object"/> + <method name="onBufferAvailable(Landroid/renderscript/Allocation;)V"/> + </class> + <class name="android/renderscript/AllocationAdapter" since="11"> + <extends name="android/renderscript/Allocation"/> + <method name="<init>()V"/> + <method name="create1D(Landroid/renderscript/RenderScript;Landroid/renderscript/Allocation;)Landroid/renderscript/AllocationAdapter;" since="14"/> + <method name="create2D(Landroid/renderscript/RenderScript;Landroid/renderscript/Allocation;)Landroid/renderscript/AllocationAdapter;"/> + <method name="createTyped(Landroid/renderscript/RenderScript;Landroid/renderscript/Allocation;Landroid/renderscript/Type;)Landroid/renderscript/AllocationAdapter;" since="23"/> + <method name="readData([F)V" removed="14"/> + <method name="readData([I)V" removed="14"/> + <method name="setFace(Landroid/renderscript/Type$CubemapFace;)V"/> + <method name="setLOD(I)V"/> + <method name="setX(I)V" since="23"/> + <method name="setY(I)V"/> + <method name="setZ(I)V"/> + <method name="subData(ILandroid/renderscript/FieldPacker;)V" removed="14"/> + <method name="subData1D(II[B)V" removed="14"/> + <method name="subData1D(II[F)V" removed="14"/> + <method name="subData1D(II[I)V" removed="14"/> + <method name="subData1D(II[S)V" removed="14"/> + <method name="subData2D(IIII[F)V" removed="14"/> + <method name="subData2D(IIII[I)V" removed="14"/> + <method name="subElementData(IILandroid/renderscript/FieldPacker;)V" removed="14"/> + </class> + <class name="android/renderscript/BaseObj" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="destroy()V"/> + <method name="getName()Ljava/lang/String;" since="14"/> + <method name="setName(Ljava/lang/String;)V"/> + </class> + <class name="android/renderscript/Byte2" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(BB)V" since="14"/> + <field name="x"/> + <field name="y"/> + </class> + <class name="android/renderscript/Byte3" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(BBB)V" since="14"/> + <field name="x"/> + <field name="y"/> + <field name="z"/> + </class> + <class name="android/renderscript/Byte4" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(BBBB)V" since="14"/> + <field name="w"/> + <field name="x"/> + <field name="y"/> + <field name="z"/> + </class> + <class name="android/renderscript/Double2" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(DD)V"/> + <field name="x"/> + <field name="y"/> + </class> + <class name="android/renderscript/Double3" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(DDD)V"/> + <field name="x"/> + <field name="y"/> + <field name="z"/> + </class> + <class name="android/renderscript/Double4" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(DDDD)V"/> + <field name="w"/> + <field name="x"/> + <field name="y"/> + <field name="z"/> + </class> + <class name="android/renderscript/Element" since="11"> + <extends name="android/renderscript/BaseObj"/> + <method name="<init>()V"/> + <method name="ALLOCATION(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="A_8(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="BOOLEAN(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="ELEMENT(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="F16(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="23"/> + <method name="F16_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="23"/> + <method name="F16_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="23"/> + <method name="F16_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="23"/> + <method name="F32(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="F32_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="F32_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="F32_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="F64(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="F64_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14"/> + <method name="F64_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14"/> + <method name="F64_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14"/> + <method name="FONT(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="16"/> + <method name="I16(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="I16_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14"/> + <method name="I16_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14"/> + <method name="I16_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14"/> + <method name="I32(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="I32_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14"/> + <method name="I32_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14"/> + <method name="I32_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14"/> + <method name="I64(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="I64_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14"/> + <method name="I64_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14"/> + <method name="I64_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14"/> + <method name="I8(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="I8_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14"/> + <method name="I8_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14"/> + <method name="I8_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14"/> + <method name="MATRIX4X4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" deprecated="16"/> + <method name="MATRIX_2X2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="MATRIX_3X3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="MATRIX_4X4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="MESH(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="PROGRAM_FRAGMENT(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="PROGRAM_RASTER(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="PROGRAM_STORE(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="PROGRAM_VERTEX(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="RGBA_4444(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="RGBA_5551(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="RGBA_8888(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="RGB_565(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="RGB_888(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="SAMPLER(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="SCRIPT(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="TYPE(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="U16(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="U16_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14"/> + <method name="U16_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14"/> + <method name="U16_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14"/> + <method name="U32(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="U32_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14"/> + <method name="U32_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14"/> + <method name="U32_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14"/> + <method name="U64(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="U64_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14"/> + <method name="U64_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14"/> + <method name="U64_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14"/> + <method name="U8(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="U8_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14"/> + <method name="U8_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14"/> + <method name="U8_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;"/> + <method name="YUV(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="19"/> + <method name="createPixel(Landroid/renderscript/RenderScript;Landroid/renderscript/Element$DataType;Landroid/renderscript/Element$DataKind;)Landroid/renderscript/Element;"/> + <method name="createVector(Landroid/renderscript/RenderScript;Landroid/renderscript/Element$DataType;I)Landroid/renderscript/Element;"/> + <method name="getBytesSize()I" since="16"/> + <method name="getDataKind()Landroid/renderscript/Element$DataKind;" since="16"/> + <method name="getDataType()Landroid/renderscript/Element$DataType;" since="16"/> + <method name="getSubElement(I)Landroid/renderscript/Element;" since="16"/> + <method name="getSubElementArraySize(I)I" since="16"/> + <method name="getSubElementCount()I" since="16"/> + <method name="getSubElementName(I)Ljava/lang/String;" since="16"/> + <method name="getSubElementOffsetBytes(I)I" since="16"/> + <method name="getVectorSize()I" since="16"/> + <method name="isCompatible(Landroid/renderscript/Element;)Z" since="14"/> + <method name="isComplex()Z"/> + </class> + <class name="android/renderscript/Element$Builder" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/renderscript/RenderScript;)V"/> + <method name="add(Landroid/renderscript/Element;Ljava/lang/String;)Landroid/renderscript/Element$Builder;"/> + <method name="add(Landroid/renderscript/Element;Ljava/lang/String;I)Landroid/renderscript/Element$Builder;"/> + <method name="create()Landroid/renderscript/Element;"/> + </class> + <class name="android/renderscript/Element$DataKind" since="11"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/renderscript/Element$DataKind;"/> + <method name="values()[Landroid/renderscript/Element$DataKind;"/> + <field name="PIXEL_A"/> + <field name="PIXEL_DEPTH" since="14"/> + <field name="PIXEL_L"/> + <field name="PIXEL_LA"/> + <field name="PIXEL_RGB"/> + <field name="PIXEL_RGBA"/> + <field name="PIXEL_YUV" since="18"/> + <field name="USER"/> + </class> + <class name="android/renderscript/Element$DataType" since="11"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/renderscript/Element$DataType;"/> + <method name="values()[Landroid/renderscript/Element$DataType;"/> + <field name="BOOLEAN"/> + <field name="FLOAT_16" since="23"/> + <field name="FLOAT_32"/> + <field name="FLOAT_64"/> + <field name="MATRIX_2X2"/> + <field name="MATRIX_3X3"/> + <field name="MATRIX_4X4"/> + <field name="NONE" since="16"/> + <field name="RS_ALLOCATION"/> + <field name="RS_ELEMENT"/> + <field name="RS_FONT" since="16"/> + <field name="RS_MESH"/> + <field name="RS_PROGRAM_FRAGMENT"/> + <field name="RS_PROGRAM_RASTER"/> + <field name="RS_PROGRAM_STORE"/> + <field name="RS_PROGRAM_VERTEX"/> + <field name="RS_SAMPLER"/> + <field name="RS_SCRIPT"/> + <field name="RS_TYPE"/> + <field name="SIGNED_16"/> + <field name="SIGNED_32"/> + <field name="SIGNED_64"/> + <field name="SIGNED_8"/> + <field name="UNSIGNED_16"/> + <field name="UNSIGNED_32"/> + <field name="UNSIGNED_4_4_4_4"/> + <field name="UNSIGNED_5_5_5_1"/> + <field name="UNSIGNED_5_6_5"/> + <field name="UNSIGNED_64"/> + <field name="UNSIGNED_8"/> + </class> + <class name="android/renderscript/FieldPacker" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>(I)V"/> + <method name="<init>([B)V" since="18"/> + <method name="addBoolean(Z)V"/> + <method name="addF32(F)V"/> + <method name="addF32(Landroid/renderscript/Float2;)V"/> + <method name="addF32(Landroid/renderscript/Float3;)V"/> + <method name="addF32(Landroid/renderscript/Float4;)V"/> + <method name="addF64(D)V"/> + <method name="addF64(Landroid/renderscript/Double2;)V" since="14"/> + <method name="addF64(Landroid/renderscript/Double3;)V" since="14"/> + <method name="addF64(Landroid/renderscript/Double4;)V" since="14"/> + <method name="addI16(Landroid/renderscript/Short2;)V"/> + <method name="addI16(Landroid/renderscript/Short3;)V"/> + <method name="addI16(Landroid/renderscript/Short4;)V"/> + <method name="addI16(S)V"/> + <method name="addI32(I)V"/> + <method name="addI32(Landroid/renderscript/Int2;)V"/> + <method name="addI32(Landroid/renderscript/Int3;)V"/> + <method name="addI32(Landroid/renderscript/Int4;)V"/> + <method name="addI64(J)V"/> + <method name="addI64(Landroid/renderscript/Long2;)V" since="14"/> + <method name="addI64(Landroid/renderscript/Long3;)V" since="14"/> + <method name="addI64(Landroid/renderscript/Long4;)V" since="14"/> + <method name="addI8(B)V"/> + <method name="addI8(Landroid/renderscript/Byte2;)V"/> + <method name="addI8(Landroid/renderscript/Byte3;)V"/> + <method name="addI8(Landroid/renderscript/Byte4;)V"/> + <method name="addMatrix(Landroid/renderscript/Matrix2f;)V"/> + <method name="addMatrix(Landroid/renderscript/Matrix3f;)V"/> + <method name="addMatrix(Landroid/renderscript/Matrix4f;)V"/> + <method name="addObj(Landroid/renderscript/BaseObj;)V"/> + <method name="addU16(I)V"/> + <method name="addU16(Landroid/renderscript/Int2;)V"/> + <method name="addU16(Landroid/renderscript/Int3;)V"/> + <method name="addU16(Landroid/renderscript/Int4;)V"/> + <method name="addU32(J)V"/> + <method name="addU32(Landroid/renderscript/Long2;)V"/> + <method name="addU32(Landroid/renderscript/Long3;)V"/> + <method name="addU32(Landroid/renderscript/Long4;)V"/> + <method name="addU64(J)V"/> + <method name="addU64(Landroid/renderscript/Long2;)V" since="14"/> + <method name="addU64(Landroid/renderscript/Long3;)V" since="14"/> + <method name="addU64(Landroid/renderscript/Long4;)V" since="14"/> + <method name="addU8(Landroid/renderscript/Short2;)V"/> + <method name="addU8(Landroid/renderscript/Short3;)V"/> + <method name="addU8(Landroid/renderscript/Short4;)V"/> + <method name="addU8(S)V"/> + <method name="align(I)V"/> + <method name="getData()[B"/> + <method name="reset()V"/> + <method name="reset(I)V"/> + <method name="skip(I)V"/> + <method name="subBoolean()Z" since="18"/> + <method name="subByte2()Landroid/renderscript/Byte2;" since="18"/> + <method name="subByte3()Landroid/renderscript/Byte3;" since="18"/> + <method name="subByte4()Landroid/renderscript/Byte4;" since="18"/> + <method name="subDouble2()Landroid/renderscript/Double2;" since="18"/> + <method name="subDouble3()Landroid/renderscript/Double3;" since="18"/> + <method name="subDouble4()Landroid/renderscript/Double4;" since="18"/> + <method name="subF32()F" since="18"/> + <method name="subF64()D" since="18"/> + <method name="subFloat2()Landroid/renderscript/Float2;" since="18"/> + <method name="subFloat3()Landroid/renderscript/Float3;" since="18"/> + <method name="subFloat4()Landroid/renderscript/Float4;" since="18"/> + <method name="subI16()S" since="18"/> + <method name="subI32()I" since="18"/> + <method name="subI64()J" since="18"/> + <method name="subI8()B" since="18"/> + <method name="subInt2()Landroid/renderscript/Int2;" since="18"/> + <method name="subInt3()Landroid/renderscript/Int3;" since="18"/> + <method name="subInt4()Landroid/renderscript/Int4;" since="18"/> + <method name="subLong2()Landroid/renderscript/Long2;" since="18"/> + <method name="subLong3()Landroid/renderscript/Long3;" since="18"/> + <method name="subLong4()Landroid/renderscript/Long4;" since="18"/> + <method name="subMatrix2f()Landroid/renderscript/Matrix2f;" since="18"/> + <method name="subMatrix3f()Landroid/renderscript/Matrix3f;" since="18"/> + <method name="subMatrix4f()Landroid/renderscript/Matrix4f;" since="18"/> + <method name="subShort2()Landroid/renderscript/Short2;" since="18"/> + <method name="subShort3()Landroid/renderscript/Short3;" since="18"/> + <method name="subShort4()Landroid/renderscript/Short4;" since="18"/> + <method name="subalign(I)V" since="18"/> + </class> + <class name="android/renderscript/FileA3D" since="11" deprecated="16" removed="18"> + <extends name="android/renderscript/BaseObj"/> + <method name="<init>()V"/> + <method name="createFromAsset(Landroid/renderscript/RenderScript;Landroid/content/res/AssetManager;Ljava/lang/String;)Landroid/renderscript/FileA3D;" deprecated="16"/> + <method name="createFromFile(Landroid/renderscript/RenderScript;Ljava/io/File;)Landroid/renderscript/FileA3D;" deprecated="16"/> + <method name="createFromFile(Landroid/renderscript/RenderScript;Ljava/lang/String;)Landroid/renderscript/FileA3D;" deprecated="16"/> + <method name="createFromResource(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;I)Landroid/renderscript/FileA3D;" deprecated="16"/> + <method name="getIndexEntry(I)Landroid/renderscript/FileA3D$IndexEntry;" deprecated="16"/> + <method name="getIndexEntryCount()I" deprecated="16"/> + </class> + <class name="android/renderscript/FileA3D$EntryType" since="11" deprecated="16" removed="18"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/renderscript/FileA3D$EntryType;"/> + <method name="values()[Landroid/renderscript/FileA3D$EntryType;"/> + <field name="MESH"/> + <field name="UNKNOWN"/> + </class> + <class name="android/renderscript/FileA3D$IndexEntry" since="11" deprecated="16" removed="18"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getEntryType()Landroid/renderscript/FileA3D$EntryType;" deprecated="16"/> + <method name="getMesh()Landroid/renderscript/Mesh;" deprecated="16"/> + <method name="getName()Ljava/lang/String;" deprecated="16"/> + <method name="getObject()Landroid/renderscript/BaseObj;" deprecated="16"/> + </class> + <class name="android/renderscript/Float2" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(FF)V"/> + <field name="x"/> + <field name="y"/> + </class> + <class name="android/renderscript/Float3" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(FFF)V"/> + <field name="x"/> + <field name="y"/> + <field name="z"/> + </class> + <class name="android/renderscript/Float4" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(FFFF)V"/> + <field name="w"/> + <field name="x"/> + <field name="y"/> + <field name="z"/> + </class> + <class name="android/renderscript/Font" since="11" deprecated="16" removed="18"> + <extends name="android/renderscript/BaseObj"/> + <method name="<init>()V"/> + <method name="create(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;Ljava/lang/String;Landroid/renderscript/Font$Style;F)Landroid/renderscript/Font;" deprecated="16"/> + <method name="createFromAsset(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;Ljava/lang/String;F)Landroid/renderscript/Font;" deprecated="16"/> + <method name="createFromFile(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;Ljava/io/File;F)Landroid/renderscript/Font;" deprecated="16"/> + <method name="createFromFile(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;Ljava/lang/String;F)Landroid/renderscript/Font;" deprecated="16"/> + <method name="createFromResource(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;IF)Landroid/renderscript/Font;" deprecated="16"/> + </class> + <class name="android/renderscript/Font$Style" since="11" deprecated="16" removed="18"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/renderscript/Font$Style;"/> + <method name="values()[Landroid/renderscript/Font$Style;"/> + <field name="BOLD"/> + <field name="BOLD_ITALIC"/> + <field name="ITALIC"/> + <field name="NORMAL"/> + </class> + <class name="android/renderscript/Int2" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(II)V" since="14"/> + <field name="x"/> + <field name="y"/> + </class> + <class name="android/renderscript/Int3" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(III)V" since="14"/> + <field name="x"/> + <field name="y"/> + <field name="z"/> + </class> + <class name="android/renderscript/Int4" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(IIII)V" since="14"/> + <field name="w"/> + <field name="x"/> + <field name="y"/> + <field name="z"/> + </class> + <class name="android/renderscript/Long2" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(JJ)V" since="14"/> + <field name="x"/> + <field name="y"/> + </class> + <class name="android/renderscript/Long3" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(JJJ)V" since="14"/> + <field name="x"/> + <field name="y"/> + <field name="z"/> + </class> + <class name="android/renderscript/Long4" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(JJJJ)V" since="14"/> + <field name="w"/> + <field name="x"/> + <field name="y"/> + <field name="z"/> + </class> + <class name="android/renderscript/Matrix2f" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>([F)V"/> + <method name="get(II)F"/> + <method name="getArray()[F"/> + <method name="load(Landroid/renderscript/Matrix2f;)V"/> + <method name="loadIdentity()V"/> + <method name="loadMultiply(Landroid/renderscript/Matrix2f;Landroid/renderscript/Matrix2f;)V"/> + <method name="loadRotate(F)V"/> + <method name="loadScale(FF)V"/> + <method name="multiply(Landroid/renderscript/Matrix2f;)V"/> + <method name="rotate(F)V"/> + <method name="scale(FF)V"/> + <method name="set(IIF)V"/> + <method name="transpose()V"/> + </class> + <class name="android/renderscript/Matrix3f" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>([F)V"/> + <method name="get(II)F"/> + <method name="getArray()[F"/> + <method name="load(Landroid/renderscript/Matrix3f;)V"/> + <method name="loadIdentity()V"/> + <method name="loadMultiply(Landroid/renderscript/Matrix3f;Landroid/renderscript/Matrix3f;)V"/> + <method name="loadRotate(F)V"/> + <method name="loadRotate(FFFF)V"/> + <method name="loadScale(FF)V"/> + <method name="loadScale(FFF)V"/> + <method name="loadTranslate(FF)V"/> + <method name="multiply(Landroid/renderscript/Matrix3f;)V"/> + <method name="rotate(F)V"/> + <method name="rotate(FFFF)V"/> + <method name="scale(FF)V"/> + <method name="scale(FFF)V"/> + <method name="set(IIF)V"/> + <method name="translate(FF)V"/> + <method name="transpose()V"/> + </class> + <class name="android/renderscript/Matrix4f" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>([F)V"/> + <method name="get(II)F"/> + <method name="getArray()[F"/> + <method name="inverse()Z"/> + <method name="inverseTranspose()Z"/> + <method name="load(Landroid/renderscript/Matrix4f;)V"/> + <method name="loadFrustum(FFFFFF)V"/> + <method name="loadIdentity()V"/> + <method name="loadMultiply(Landroid/renderscript/Matrix4f;Landroid/renderscript/Matrix4f;)V"/> + <method name="loadOrtho(FFFFFF)V"/> + <method name="loadOrthoWindow(II)V"/> + <method name="loadPerspective(FFFF)V"/> + <method name="loadProjectionNormalized(II)V"/> + <method name="loadRotate(FFFF)V"/> + <method name="loadScale(FFF)V"/> + <method name="loadTranslate(FFF)V"/> + <method name="multiply(Landroid/renderscript/Matrix4f;)V"/> + <method name="rotate(FFFF)V"/> + <method name="scale(FFF)V"/> + <method name="set(IIF)V"/> + <method name="translate(FFF)V"/> + <method name="transpose()V"/> + </class> + <class name="android/renderscript/Mesh" since="11" deprecated="16" removed="18"> + <extends name="android/renderscript/BaseObj"/> + <method name="<init>()V"/> + <method name="getIndexSetAllocation(I)Landroid/renderscript/Allocation;" deprecated="16"/> + <method name="getPrimitive(I)Landroid/renderscript/Mesh$Primitive;" deprecated="16"/> + <method name="getPrimitiveCount()I" deprecated="16"/> + <method name="getVertexAllocation(I)Landroid/renderscript/Allocation;" deprecated="16"/> + <method name="getVertexAllocationCount()I" deprecated="16"/> + </class> + <class name="android/renderscript/Mesh$AllocationBuilder" since="11" deprecated="16" removed="18"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/renderscript/RenderScript;)V" deprecated="16"/> + <method name="addIndexSetAllocation(Landroid/renderscript/Allocation;Landroid/renderscript/Mesh$Primitive;)Landroid/renderscript/Mesh$AllocationBuilder;" deprecated="16"/> + <method name="addIndexSetType(Landroid/renderscript/Mesh$Primitive;)Landroid/renderscript/Mesh$AllocationBuilder;" deprecated="16"/> + <method name="addVertexAllocation(Landroid/renderscript/Allocation;)Landroid/renderscript/Mesh$AllocationBuilder;" deprecated="16"/> + <method name="create()Landroid/renderscript/Mesh;" deprecated="16"/> + <method name="getCurrentIndexSetIndex()I" deprecated="16"/> + <method name="getCurrentVertexTypeIndex()I" deprecated="16"/> + </class> + <class name="android/renderscript/Mesh$Builder" since="11" deprecated="16" removed="18"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/renderscript/RenderScript;I)V" deprecated="16"/> + <method name="addIndexSetType(Landroid/renderscript/Element;ILandroid/renderscript/Mesh$Primitive;)Landroid/renderscript/Mesh$Builder;" deprecated="16"/> + <method name="addIndexSetType(Landroid/renderscript/Mesh$Primitive;)Landroid/renderscript/Mesh$Builder;" deprecated="16"/> + <method name="addIndexSetType(Landroid/renderscript/Type;Landroid/renderscript/Mesh$Primitive;)Landroid/renderscript/Mesh$Builder;" deprecated="16"/> + <method name="addVertexType(Landroid/renderscript/Element;I)Landroid/renderscript/Mesh$Builder;" deprecated="16"/> + <method name="addVertexType(Landroid/renderscript/Type;)Landroid/renderscript/Mesh$Builder;" deprecated="16"/> + <method name="create()Landroid/renderscript/Mesh;" deprecated="16"/> + <method name="getCurrentIndexSetIndex()I" deprecated="16"/> + <method name="getCurrentVertexTypeIndex()I" deprecated="16"/> + </class> + <class name="android/renderscript/Mesh$Primitive" since="11" deprecated="16" removed="18"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/renderscript/Mesh$Primitive;"/> + <method name="values()[Landroid/renderscript/Mesh$Primitive;"/> + <field name="LINE"/> + <field name="LINE_STRIP"/> + <field name="POINT"/> + <field name="TRIANGLE"/> + <field name="TRIANGLE_FAN"/> + <field name="TRIANGLE_STRIP"/> + </class> + <class name="android/renderscript/Mesh$TriangleMeshBuilder" since="11" deprecated="16" removed="18"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/renderscript/RenderScript;II)V" deprecated="16"/> + <method name="addTriangle(III)Landroid/renderscript/Mesh$TriangleMeshBuilder;" deprecated="16"/> + <method name="addVertex(FF)Landroid/renderscript/Mesh$TriangleMeshBuilder;" deprecated="16"/> + <method name="addVertex(FFF)Landroid/renderscript/Mesh$TriangleMeshBuilder;" deprecated="16"/> + <method name="create(Z)Landroid/renderscript/Mesh;" deprecated="16"/> + <method name="setColor(FFFF)Landroid/renderscript/Mesh$TriangleMeshBuilder;" deprecated="16"/> + <method name="setNormal(FFF)Landroid/renderscript/Mesh$TriangleMeshBuilder;" deprecated="16"/> + <method name="setTexture(FF)Landroid/renderscript/Mesh$TriangleMeshBuilder;" deprecated="16"/> + <field name="COLOR" deprecated="16"/> + <field name="NORMAL" deprecated="16"/> + <field name="TEXTURE_0" deprecated="16"/> + </class> + <class name="android/renderscript/Program" since="11" removed="18"> + <extends name="android/renderscript/BaseObj"/> + <method name="<init>()V"/> + <method name="bindConstants(Landroid/renderscript/Allocation;I)V"/> + <method name="bindSampler(Landroid/renderscript/Sampler;I)V"/> + <method name="bindTexture(Landroid/renderscript/Allocation;I)V"/> + <method name="getConstant(I)Landroid/renderscript/Type;" since="16"/> + <method name="getConstantCount()I" since="16"/> + <method name="getTextureCount()I" since="16"/> + <method name="getTextureName(I)Ljava/lang/String;" since="16"/> + <method name="getTextureType(I)Landroid/renderscript/Program$TextureType;" since="16"/> + </class> + <class name="android/renderscript/Program$BaseProgramBuilder" since="11" removed="18"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/renderscript/RenderScript;)V"/> + <method name="addConstant(Landroid/renderscript/Type;)Landroid/renderscript/Program$BaseProgramBuilder;"/> + <method name="addTexture(Landroid/renderscript/Program$TextureType;)Landroid/renderscript/Program$BaseProgramBuilder;"/> + <method name="addTexture(Landroid/renderscript/Program$TextureType;Ljava/lang/String;)Landroid/renderscript/Program$BaseProgramBuilder;" since="16"/> + <method name="getCurrentConstantIndex()I"/> + <method name="getCurrentTextureIndex()I"/> + <method name="initProgram(Landroid/renderscript/Program;)V"/> + <method name="setShader(Landroid/content/res/Resources;I)Landroid/renderscript/Program$BaseProgramBuilder;"/> + <method name="setShader(Ljava/lang/String;)Landroid/renderscript/Program$BaseProgramBuilder;"/> + </class> + <class name="android/renderscript/Program$TextureType" since="11" removed="18"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/renderscript/Program$TextureType;"/> + <method name="values()[Landroid/renderscript/Program$TextureType;"/> + <field name="TEXTURE_2D"/> + <field name="TEXTURE_CUBE"/> + </class> + <class name="android/renderscript/ProgramFragment" since="11" deprecated="16" removed="18"> + <extends name="android/renderscript/Program"/> + <method name="<init>()V"/> + </class> + <class name="android/renderscript/ProgramFragment$Builder" since="11" deprecated="16" removed="18"> + <extends name="android/renderscript/Program$BaseProgramBuilder"/> + <method name="<init>(Landroid/renderscript/RenderScript;)V" deprecated="16"/> + <method name="create()Landroid/renderscript/ProgramFragment;" deprecated="16"/> + </class> + <class name="android/renderscript/ProgramFragmentFixedFunction" since="11" deprecated="16" removed="18"> + <extends name="android/renderscript/ProgramFragment"/> + <method name="<init>()V"/> + </class> + <class name="android/renderscript/ProgramFragmentFixedFunction$Builder" since="11" deprecated="16" removed="18"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/renderscript/RenderScript;)V" deprecated="16"/> + <method name="create()Landroid/renderscript/ProgramFragmentFixedFunction;" deprecated="16"/> + <method name="setPointSpriteTexCoordinateReplacement(Z)Landroid/renderscript/ProgramFragmentFixedFunction$Builder;" deprecated="16"/> + <method name="setTexture(Landroid/renderscript/ProgramFragmentFixedFunction$Builder$EnvMode;Landroid/renderscript/ProgramFragmentFixedFunction$Builder$Format;I)Landroid/renderscript/ProgramFragmentFixedFunction$Builder;" deprecated="16"/> + <method name="setVaryingColor(Z)Landroid/renderscript/ProgramFragmentFixedFunction$Builder;" deprecated="16"/> + <field name="MAX_TEXTURE" deprecated="16"/> + </class> + <class name="android/renderscript/ProgramFragmentFixedFunction$Builder$EnvMode" since="11" deprecated="16" removed="18"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/renderscript/ProgramFragmentFixedFunction$Builder$EnvMode;"/> + <method name="values()[Landroid/renderscript/ProgramFragmentFixedFunction$Builder$EnvMode;"/> + <field name="DECAL"/> + <field name="MODULATE"/> + <field name="REPLACE"/> + </class> + <class name="android/renderscript/ProgramFragmentFixedFunction$Builder$Format" since="11" deprecated="16" removed="18"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/renderscript/ProgramFragmentFixedFunction$Builder$Format;"/> + <method name="values()[Landroid/renderscript/ProgramFragmentFixedFunction$Builder$Format;"/> + <field name="ALPHA"/> + <field name="LUMINANCE_ALPHA"/> + <field name="RGB"/> + <field name="RGBA"/> + </class> + <class name="android/renderscript/ProgramRaster" since="11" deprecated="16" removed="18"> + <extends name="android/renderscript/BaseObj"/> + <method name="<init>()V"/> + <method name="CULL_BACK(Landroid/renderscript/RenderScript;)Landroid/renderscript/ProgramRaster;" deprecated="16"/> + <method name="CULL_FRONT(Landroid/renderscript/RenderScript;)Landroid/renderscript/ProgramRaster;" deprecated="16"/> + <method name="CULL_NONE(Landroid/renderscript/RenderScript;)Landroid/renderscript/ProgramRaster;" deprecated="16"/> + <method name="getCullMode()Landroid/renderscript/ProgramRaster$CullMode;" since="16" deprecated="16"/> + <method name="isPointSpriteEnabled()Z" since="16" deprecated="16"/> + </class> + <class name="android/renderscript/ProgramRaster$Builder" since="11" deprecated="16" removed="18"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/renderscript/RenderScript;)V" deprecated="16"/> + <method name="create()Landroid/renderscript/ProgramRaster;" deprecated="16"/> + <method name="setCullMode(Landroid/renderscript/ProgramRaster$CullMode;)Landroid/renderscript/ProgramRaster$Builder;" deprecated="16"/> + <method name="setPointSpriteEnabled(Z)Landroid/renderscript/ProgramRaster$Builder;" deprecated="16"/> + </class> + <class name="android/renderscript/ProgramRaster$CullMode" since="11" deprecated="16" removed="18"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/renderscript/ProgramRaster$CullMode;"/> + <method name="values()[Landroid/renderscript/ProgramRaster$CullMode;"/> + <field name="BACK"/> + <field name="FRONT"/> + <field name="NONE"/> + </class> + <class name="android/renderscript/ProgramStore" since="11" removed="18"> + <extends name="android/renderscript/BaseObj"/> + <method name="<init>()V"/> + <method name="BLEND_ALPHA_DEPTH_NONE(Landroid/renderscript/RenderScript;)Landroid/renderscript/ProgramStore;"/> + <method name="BLEND_ALPHA_DEPTH_TEST(Landroid/renderscript/RenderScript;)Landroid/renderscript/ProgramStore;"/> + <method name="BLEND_NONE_DEPTH_NONE(Landroid/renderscript/RenderScript;)Landroid/renderscript/ProgramStore;"/> + <method name="BLEND_NONE_DEPTH_TEST(Landroid/renderscript/RenderScript;)Landroid/renderscript/ProgramStore;"/> + <method name="getBlendDstFunc()Landroid/renderscript/ProgramStore$BlendDstFunc;" since="16"/> + <method name="getBlendSrcFunc()Landroid/renderscript/ProgramStore$BlendSrcFunc;" since="16"/> + <method name="getDepthFunc()Landroid/renderscript/ProgramStore$DepthFunc;" since="16"/> + <method name="isColorMaskAlphaEnabled()Z" since="16"/> + <method name="isColorMaskBlueEnabled()Z" since="16"/> + <method name="isColorMaskGreenEnabled()Z" since="16"/> + <method name="isColorMaskRedEnabled()Z" since="16"/> + <method name="isDepthMaskEnabled()Z" since="16"/> + <method name="isDitherEnabled()Z" since="16"/> + </class> + <class name="android/renderscript/ProgramStore$BlendDstFunc" since="11" removed="18"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/renderscript/ProgramStore$BlendDstFunc;"/> + <method name="values()[Landroid/renderscript/ProgramStore$BlendDstFunc;"/> + <field name="DST_ALPHA"/> + <field name="ONE"/> + <field name="ONE_MINUS_DST_ALPHA"/> + <field name="ONE_MINUS_SRC_ALPHA"/> + <field name="ONE_MINUS_SRC_COLOR"/> + <field name="SRC_ALPHA"/> + <field name="SRC_COLOR"/> + <field name="ZERO"/> + </class> + <class name="android/renderscript/ProgramStore$BlendSrcFunc" since="11" removed="18"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/renderscript/ProgramStore$BlendSrcFunc;"/> + <method name="values()[Landroid/renderscript/ProgramStore$BlendSrcFunc;"/> + <field name="DST_ALPHA"/> + <field name="DST_COLOR"/> + <field name="ONE"/> + <field name="ONE_MINUS_DST_ALPHA"/> + <field name="ONE_MINUS_DST_COLOR"/> + <field name="ONE_MINUS_SRC_ALPHA"/> + <field name="SRC_ALPHA"/> + <field name="SRC_ALPHA_SATURATE"/> + <field name="ZERO"/> + </class> + <class name="android/renderscript/ProgramStore$Builder" since="11" removed="18"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/renderscript/RenderScript;)V"/> + <method name="create()Landroid/renderscript/ProgramStore;"/> + <method name="setBlendFunc(Landroid/renderscript/ProgramStore$BlendSrcFunc;Landroid/renderscript/ProgramStore$BlendDstFunc;)Landroid/renderscript/ProgramStore$Builder;"/> + <method name="setColorMaskEnabled(ZZZZ)Landroid/renderscript/ProgramStore$Builder;"/> + <method name="setDepthFunc(Landroid/renderscript/ProgramStore$DepthFunc;)Landroid/renderscript/ProgramStore$Builder;"/> + <method name="setDepthMaskEnabled(Z)Landroid/renderscript/ProgramStore$Builder;"/> + <method name="setDitherEnabled(Z)Landroid/renderscript/ProgramStore$Builder;"/> + </class> + <class name="android/renderscript/ProgramStore$DepthFunc" since="11" removed="18"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/renderscript/ProgramStore$DepthFunc;"/> + <method name="values()[Landroid/renderscript/ProgramStore$DepthFunc;"/> + <field name="ALWAYS"/> + <field name="EQUAL"/> + <field name="GREATER"/> + <field name="GREATER_OR_EQUAL"/> + <field name="LESS"/> + <field name="LESS_OR_EQUAL"/> + <field name="NOT_EQUAL"/> + </class> + <class name="android/renderscript/ProgramVertex" since="11" deprecated="16" removed="18"> + <extends name="android/renderscript/Program"/> + <method name="<init>()V"/> + <method name="getInput(I)Landroid/renderscript/Element;" since="16" deprecated="16"/> + <method name="getInputCount()I" since="16" deprecated="16"/> + </class> + <class name="android/renderscript/ProgramVertex$Builder" since="11" deprecated="16" removed="18"> + <extends name="android/renderscript/Program$BaseProgramBuilder"/> + <method name="<init>(Landroid/renderscript/RenderScript;)V" deprecated="16"/> + <method name="addInput(Landroid/renderscript/Element;)Landroid/renderscript/ProgramVertex$Builder;" deprecated="16"/> + <method name="create()Landroid/renderscript/ProgramVertex;" deprecated="16"/> + </class> + <class name="android/renderscript/ProgramVertexFixedFunction" since="11" deprecated="16" removed="18"> + <extends name="android/renderscript/ProgramVertex"/> + <method name="<init>()V"/> + <method name="bindConstants(Landroid/renderscript/ProgramVertexFixedFunction$Constants;)V" deprecated="16"/> + </class> + <class name="android/renderscript/ProgramVertexFixedFunction$Builder" since="11" deprecated="16" removed="18"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/renderscript/RenderScript;)V" deprecated="16"/> + <method name="create()Landroid/renderscript/ProgramVertexFixedFunction;" deprecated="16"/> + <method name="setTextureMatrixEnable(Z)Landroid/renderscript/ProgramVertexFixedFunction$Builder;" deprecated="16"/> + </class> + <class name="android/renderscript/ProgramVertexFixedFunction$Constants" since="11" deprecated="16" removed="18"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/renderscript/RenderScript;)V" deprecated="16"/> + <method name="destroy()V" deprecated="16"/> + <method name="setModelview(Landroid/renderscript/Matrix4f;)V" deprecated="16"/> + <method name="setProjection(Landroid/renderscript/Matrix4f;)V" deprecated="16"/> + <method name="setTexture(Landroid/renderscript/Matrix4f;)V" deprecated="16"/> + </class> + <class name="android/renderscript/RSDriverException" since="11"> + <extends name="android/renderscript/RSRuntimeException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/renderscript/RSIllegalArgumentException" since="11"> + <extends name="android/renderscript/RSRuntimeException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/renderscript/RSInvalidStateException" since="11"> + <extends name="android/renderscript/RSRuntimeException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/renderscript/RSRuntimeException" since="11"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/renderscript/RSSurfaceView" since="11" deprecated="16" removed="18"> + <extends name="android/view/SurfaceView"/> + <implements name="android/view/SurfaceHolder$Callback"/> + <method name="<init>(Landroid/content/Context;)V" deprecated="16"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" deprecated="16"/> + <method name="createRenderScriptGL(Landroid/renderscript/RenderScriptGL$SurfaceConfig;)Landroid/renderscript/RenderScriptGL;" deprecated="16"/> + <method name="destroyRenderScriptGL()V" deprecated="16"/> + <method name="getRenderScriptGL()Landroid/renderscript/RenderScriptGL;" deprecated="16"/> + <method name="pause()V" deprecated="16"/> + <method name="resume()V" deprecated="16"/> + <method name="setRenderScriptGL(Landroid/renderscript/RenderScriptGL;)V" deprecated="16"/> + </class> + <class name="android/renderscript/RSTextureView" since="14" deprecated="16" removed="18"> + <extends name="android/view/TextureView"/> + <implements name="android/view/TextureView$SurfaceTextureListener"/> + <method name="<init>(Landroid/content/Context;)V" deprecated="16"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" deprecated="16"/> + <method name="createRenderScriptGL(Landroid/renderscript/RenderScriptGL$SurfaceConfig;)Landroid/renderscript/RenderScriptGL;" deprecated="16"/> + <method name="destroyRenderScriptGL()V" deprecated="16"/> + <method name="getRenderScriptGL()Landroid/renderscript/RenderScriptGL;" deprecated="16"/> + <method name="pause()V" deprecated="16"/> + <method name="resume()V" deprecated="16"/> + <method name="setRenderScriptGL(Landroid/renderscript/RenderScriptGL;)V" deprecated="16"/> + </class> + <class name="android/renderscript/RenderScript" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="contextDump()V"/> + <method name="create(Landroid/content/Context;)Landroid/renderscript/RenderScript;"/> + <method name="create(Landroid/content/Context;Landroid/renderscript/RenderScript$ContextType;)Landroid/renderscript/RenderScript;" since="18"/> + <method name="create(Landroid/content/Context;Landroid/renderscript/RenderScript$ContextType;I)Landroid/renderscript/RenderScript;" since="21"/> + <method name="createMultiContext(Landroid/content/Context;Landroid/renderscript/RenderScript$ContextType;II)Landroid/renderscript/RenderScript;" since="23"/> + <method name="destroy()V"/> + <method name="finish()V"/> + <method name="getApplicationContext()Landroid/content/Context;"/> + <method name="getErrorHandler()Landroid/renderscript/RenderScript$RSErrorHandler;"/> + <method name="getMessageHandler()Landroid/renderscript/RenderScript$RSMessageHandler;"/> + <method name="getMinorVersion()J" since="23"/> + <method name="releaseAllContexts()V" since="23"/> + <method name="sendMessage(I[I)V" since="18"/> + <method name="setErrorHandler(Landroid/renderscript/RenderScript$RSErrorHandler;)V"/> + <method name="setMessageHandler(Landroid/renderscript/RenderScript$RSMessageHandler;)V"/> + <method name="setPriority(Landroid/renderscript/RenderScript$Priority;)V"/> + <field name="CREATE_FLAG_LOW_LATENCY" since="21"/> + <field name="CREATE_FLAG_LOW_POWER" since="21"/> + <field name="CREATE_FLAG_NONE" since="21"/> + </class> + <class name="android/renderscript/RenderScript$ContextType" since="18"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/renderscript/RenderScript$ContextType;"/> + <method name="values()[Landroid/renderscript/RenderScript$ContextType;"/> + <field name="DEBUG"/> + <field name="NORMAL"/> + <field name="PROFILE"/> + </class> + <class name="android/renderscript/RenderScript$Priority" since="11"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/renderscript/RenderScript$Priority;"/> + <method name="values()[Landroid/renderscript/RenderScript$Priority;"/> + <field name="LOW"/> + <field name="NORMAL"/> + </class> + <class name="android/renderscript/RenderScript$RSErrorHandler" since="11"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Runnable"/> + <method name="<init>()V"/> + <field name="mErrorMessage"/> + <field name="mErrorNum"/> + </class> + <class name="android/renderscript/RenderScript$RSMessageHandler" since="11"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Runnable"/> + <method name="<init>()V"/> + <field name="mData"/> + <field name="mID"/> + <field name="mLength"/> + </class> + <class name="android/renderscript/RenderScriptGL" since="11" deprecated="16" removed="18"> + <extends name="android/renderscript/RenderScript"/> + <method name="<init>(Landroid/content/Context;Landroid/renderscript/RenderScriptGL$SurfaceConfig;)V" deprecated="16"/> + <method name="bindProgramFragment(Landroid/renderscript/ProgramFragment;)V" deprecated="16"/> + <method name="bindProgramRaster(Landroid/renderscript/ProgramRaster;)V" deprecated="16"/> + <method name="bindProgramStore(Landroid/renderscript/ProgramStore;)V" deprecated="16"/> + <method name="bindProgramVertex(Landroid/renderscript/ProgramVertex;)V" deprecated="16"/> + <method name="bindRootScript(Landroid/renderscript/Script;)V" deprecated="16"/> + <method name="getHeight()I" deprecated="16"/> + <method name="getWidth()I" deprecated="16"/> + <method name="pause()V" deprecated="16"/> + <method name="resume()V" deprecated="16"/> + <method name="setSurface(Landroid/view/SurfaceHolder;II)V" deprecated="16"/> + <method name="setSurfaceTexture(Landroid/graphics/SurfaceTexture;II)V" since="14" deprecated="16"/> + </class> + <class name="android/renderscript/RenderScriptGL$SurfaceConfig" since="11" deprecated="16" removed="18"> + <extends name="java/lang/Object"/> + <method name="<init>()V" deprecated="16"/> + <method name="<init>(Landroid/renderscript/RenderScriptGL$SurfaceConfig;)V" deprecated="16"/> + <method name="setAlpha(II)V" deprecated="16"/> + <method name="setColor(II)V" deprecated="16"/> + <method name="setDepth(II)V" deprecated="16"/> + <method name="setSamples(IIF)V" deprecated="16"/> + </class> + <class name="android/renderscript/Sampler" since="11"> + <extends name="android/renderscript/BaseObj"/> + <method name="<init>()V"/> + <method name="CLAMP_LINEAR(Landroid/renderscript/RenderScript;)Landroid/renderscript/Sampler;"/> + <method name="CLAMP_LINEAR_MIP_LINEAR(Landroid/renderscript/RenderScript;)Landroid/renderscript/Sampler;"/> + <method name="CLAMP_NEAREST(Landroid/renderscript/RenderScript;)Landroid/renderscript/Sampler;"/> + <method name="MIRRORED_REPEAT_LINEAR(Landroid/renderscript/RenderScript;)Landroid/renderscript/Sampler;" since="18"/> + <method name="MIRRORED_REPEAT_LINEAR_MIP_LINEAR(Landroid/renderscript/RenderScript;)Landroid/renderscript/Sampler;" since="18"/> + <method name="MIRRORED_REPEAT_NEAREST(Landroid/renderscript/RenderScript;)Landroid/renderscript/Sampler;" since="18"/> + <method name="WRAP_LINEAR(Landroid/renderscript/RenderScript;)Landroid/renderscript/Sampler;"/> + <method name="WRAP_LINEAR_MIP_LINEAR(Landroid/renderscript/RenderScript;)Landroid/renderscript/Sampler;"/> + <method name="WRAP_NEAREST(Landroid/renderscript/RenderScript;)Landroid/renderscript/Sampler;"/> + <method name="getAnisotropy()F" since="16"/> + <method name="getMagnification()Landroid/renderscript/Sampler$Value;" since="16"/> + <method name="getMinification()Landroid/renderscript/Sampler$Value;" since="16"/> + <method name="getWrapS()Landroid/renderscript/Sampler$Value;" since="16"/> + <method name="getWrapT()Landroid/renderscript/Sampler$Value;" since="16"/> + </class> + <class name="android/renderscript/Sampler$Builder" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/renderscript/RenderScript;)V"/> + <method name="create()Landroid/renderscript/Sampler;"/> + <method name="setAnisotropy(F)V"/> + <method name="setMagnification(Landroid/renderscript/Sampler$Value;)V"/> + <method name="setMinification(Landroid/renderscript/Sampler$Value;)V"/> + <method name="setWrapS(Landroid/renderscript/Sampler$Value;)V"/> + <method name="setWrapT(Landroid/renderscript/Sampler$Value;)V"/> + </class> + <class name="android/renderscript/Sampler$Value" since="11"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/renderscript/Sampler$Value;"/> + <method name="values()[Landroid/renderscript/Sampler$Value;"/> + <field name="CLAMP"/> + <field name="LINEAR"/> + <field name="LINEAR_MIP_LINEAR"/> + <field name="LINEAR_MIP_NEAREST"/> + <field name="MIRRORED_REPEAT" since="18"/> + <field name="NEAREST"/> + <field name="WRAP"/> + </class> + <class name="android/renderscript/Script" since="11"> + <extends name="android/renderscript/BaseObj"/> + <method name="<init>()V"/> + <method name="bindAllocation(Landroid/renderscript/Allocation;I)V"/> + <method name="createFieldID(ILandroid/renderscript/Element;)Landroid/renderscript/Script$FieldID;" since="17"/> + <method name="createInvokeID(I)Landroid/renderscript/Script$InvokeID;" since="23"/> + <method name="createKernelID(IILandroid/renderscript/Element;Landroid/renderscript/Element;)Landroid/renderscript/Script$KernelID;" since="17"/> + <method name="forEach(ILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/FieldPacker;)V" since="14"/> + <method name="forEach(ILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/FieldPacker;Landroid/renderscript/Script$LaunchOptions;)V" since="18"/> + <method name="forEach(I[Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/FieldPacker;)V" since="23"/> + <method name="forEach(I[Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/FieldPacker;Landroid/renderscript/Script$LaunchOptions;)V" since="23"/> + <method name="getVarB(I)Z" since="18"/> + <method name="getVarD(I)D" since="18"/> + <method name="getVarF(I)F" since="18"/> + <method name="getVarI(I)I" since="18"/> + <method name="getVarJ(I)J" since="18"/> + <method name="getVarV(ILandroid/renderscript/FieldPacker;)V" since="18"/> + <method name="invoke(I)V"/> + <method name="invoke(ILandroid/renderscript/FieldPacker;)V"/> + <method name="reduce(I[Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="24"/> + <method name="setTimeZone(Ljava/lang/String;)V"/> + <method name="setVar(ID)V"/> + <method name="setVar(IF)V"/> + <method name="setVar(II)V"/> + <method name="setVar(IJ)V"/> + <method name="setVar(ILandroid/renderscript/BaseObj;)V"/> + <method name="setVar(ILandroid/renderscript/FieldPacker;)V"/> + <method name="setVar(ILandroid/renderscript/FieldPacker;Landroid/renderscript/Element;[I)V" since="16"/> + <method name="setVar(IZ)V"/> + </class> + <class name="android/renderscript/Script$Builder" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/renderscript/Script$FieldBase" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAllocation()Landroid/renderscript/Allocation;"/> + <method name="getElement()Landroid/renderscript/Element;"/> + <method name="getType()Landroid/renderscript/Type;"/> + <method name="init(Landroid/renderscript/RenderScript;I)V"/> + <method name="init(Landroid/renderscript/RenderScript;II)V"/> + <method name="updateAllocation()V"/> + <field name="mAllocation"/> + <field name="mElement"/> + </class> + <class name="android/renderscript/Script$FieldID" since="17"> + <extends name="android/renderscript/BaseObj"/> + <method name="<init>()V"/> + </class> + <class name="android/renderscript/Script$InvokeID" since="23"> + <extends name="android/renderscript/BaseObj"/> + <method name="<init>()V"/> + </class> + <class name="android/renderscript/Script$KernelID" since="17"> + <extends name="android/renderscript/BaseObj"/> + <method name="<init>()V"/> + </class> + <class name="android/renderscript/Script$LaunchOptions" since="18"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getXEnd()I"/> + <method name="getXStart()I"/> + <method name="getYEnd()I"/> + <method name="getYStart()I"/> + <method name="getZEnd()I"/> + <method name="getZStart()I"/> + <method name="setX(II)Landroid/renderscript/Script$LaunchOptions;"/> + <method name="setY(II)Landroid/renderscript/Script$LaunchOptions;"/> + <method name="setZ(II)Landroid/renderscript/Script$LaunchOptions;"/> + </class> + <class name="android/renderscript/ScriptC" since="11"> + <extends name="android/renderscript/Script"/> + <method name="<init>(ILandroid/renderscript/RenderScript;)V"/> + <method name="<init>(JLandroid/renderscript/RenderScript;)V" since="21"/> + <method name="<init>(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;I)V"/> + <method name="<init>(Landroid/renderscript/RenderScript;Ljava/lang/String;[B[B)V" since="21"/> + </class> + <class name="android/renderscript/ScriptGroup" since="17"> + <extends name="android/renderscript/BaseObj"/> + <method name="<init>()V"/> + <method name="execute()V" deprecated="23"/> + <method name="execute([Ljava/lang/Object;)[Ljava/lang/Object;" since="23"/> + <method name="setInput(Landroid/renderscript/Script$KernelID;Landroid/renderscript/Allocation;)V" deprecated="23"/> + <method name="setOutput(Landroid/renderscript/Script$KernelID;Landroid/renderscript/Allocation;)V" deprecated="23"/> + </class> + <class name="android/renderscript/ScriptGroup$Binding" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/renderscript/Script$FieldID;Ljava/lang/Object;)V"/> + </class> + <class name="android/renderscript/ScriptGroup$Builder" since="17" deprecated="23"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/renderscript/RenderScript;)V"/> + <method name="addConnection(Landroid/renderscript/Type;Landroid/renderscript/Script$KernelID;Landroid/renderscript/Script$FieldID;)Landroid/renderscript/ScriptGroup$Builder;"/> + <method name="addConnection(Landroid/renderscript/Type;Landroid/renderscript/Script$KernelID;Landroid/renderscript/Script$KernelID;)Landroid/renderscript/ScriptGroup$Builder;"/> + <method name="addKernel(Landroid/renderscript/Script$KernelID;)Landroid/renderscript/ScriptGroup$Builder;"/> + <method name="create()Landroid/renderscript/ScriptGroup;"/> + </class> + <class name="android/renderscript/ScriptGroup$Builder2" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/renderscript/RenderScript;)V"/> + <method name="addInput()Landroid/renderscript/ScriptGroup$Input;"/> + <method name="addInvoke(Landroid/renderscript/Script$InvokeID;[Ljava/lang/Object;)Landroid/renderscript/ScriptGroup$Closure;"/> + <method name="addKernel(Landroid/renderscript/Script$KernelID;Landroid/renderscript/Type;[Ljava/lang/Object;)Landroid/renderscript/ScriptGroup$Closure;"/> + <method name="create(Ljava/lang/String;[Landroid/renderscript/ScriptGroup$Future;)Landroid/renderscript/ScriptGroup;"/> + </class> + <class name="android/renderscript/ScriptGroup$Closure" since="23"> + <extends name="android/renderscript/BaseObj"/> + <method name="<init>()V"/> + <method name="getGlobal(Landroid/renderscript/Script$FieldID;)Landroid/renderscript/ScriptGroup$Future;"/> + <method name="getReturn()Landroid/renderscript/ScriptGroup$Future;"/> + </class> + <class name="android/renderscript/ScriptGroup$Future" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/renderscript/ScriptGroup$Input" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/renderscript/ScriptIntrinsic" since="17"> + <extends name="android/renderscript/Script"/> + <method name="<init>()V"/> + </class> + <class name="android/renderscript/ScriptIntrinsic3DLUT" since="18"> + <extends name="android/renderscript/ScriptIntrinsic"/> + <method name="<init>()V"/> + <method name="create(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;)Landroid/renderscript/ScriptIntrinsic3DLUT;"/> + <method name="forEach(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V"/> + <method name="forEach(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21"/> + <method name="getKernelID()Landroid/renderscript/Script$KernelID;"/> + <method name="setLUT(Landroid/renderscript/Allocation;)V"/> + </class> + <class name="android/renderscript/ScriptIntrinsicBLAS" since="23"> + <extends name="android/renderscript/ScriptIntrinsic"/> + <method name="<init>()V"/> + <method name="BNNM(Landroid/renderscript/Allocation;ILandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;II)V"/> + <method name="CGBMV(IIILandroid/renderscript/Float2;Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;ILandroid/renderscript/Float2;Landroid/renderscript/Allocation;I)V"/> + <method name="CGEMM(IILandroid/renderscript/Float2;Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Float2;Landroid/renderscript/Allocation;)V"/> + <method name="CGEMV(ILandroid/renderscript/Float2;Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;ILandroid/renderscript/Float2;Landroid/renderscript/Allocation;I)V"/> + <method name="CGERC(Landroid/renderscript/Float2;Landroid/renderscript/Allocation;ILandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;)V"/> + <method name="CGERU(Landroid/renderscript/Float2;Landroid/renderscript/Allocation;ILandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;)V"/> + <method name="CHBMV(IILandroid/renderscript/Float2;Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;ILandroid/renderscript/Float2;Landroid/renderscript/Allocation;I)V"/> + <method name="CHEMM(IILandroid/renderscript/Float2;Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Float2;Landroid/renderscript/Allocation;)V"/> + <method name="CHEMV(ILandroid/renderscript/Float2;Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;ILandroid/renderscript/Float2;Landroid/renderscript/Allocation;I)V"/> + <method name="CHER(IFLandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;)V"/> + <method name="CHER2(ILandroid/renderscript/Float2;Landroid/renderscript/Allocation;ILandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;)V"/> + <method name="CHER2K(IILandroid/renderscript/Float2;Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;FLandroid/renderscript/Allocation;)V"/> + <method name="CHERK(IIFLandroid/renderscript/Allocation;FLandroid/renderscript/Allocation;)V"/> + <method name="CHPMV(ILandroid/renderscript/Float2;Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;ILandroid/renderscript/Float2;Landroid/renderscript/Allocation;I)V"/> + <method name="CHPR(IFLandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;)V"/> + <method name="CHPR2(ILandroid/renderscript/Float2;Landroid/renderscript/Allocation;ILandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;)V"/> + <method name="CSYMM(IILandroid/renderscript/Float2;Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Float2;Landroid/renderscript/Allocation;)V"/> + <method name="CSYR2K(IILandroid/renderscript/Float2;Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Float2;Landroid/renderscript/Allocation;)V"/> + <method name="CSYRK(IILandroid/renderscript/Float2;Landroid/renderscript/Allocation;Landroid/renderscript/Float2;Landroid/renderscript/Allocation;)V"/> + <method name="CTBMV(IIIILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;I)V"/> + <method name="CTBSV(IIIILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;I)V"/> + <method name="CTPMV(IIILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;I)V"/> + <method name="CTPSV(IIILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;I)V"/> + <method name="CTRMM(IIIILandroid/renderscript/Float2;Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V"/> + <method name="CTRMV(IIILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;I)V"/> + <method name="CTRSM(IIIILandroid/renderscript/Float2;Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V"/> + <method name="CTRSV(IIILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;I)V"/> + <method name="DGBMV(IIIDLandroid/renderscript/Allocation;Landroid/renderscript/Allocation;IDLandroid/renderscript/Allocation;I)V"/> + <method name="DGEMM(IIDLandroid/renderscript/Allocation;Landroid/renderscript/Allocation;DLandroid/renderscript/Allocation;)V"/> + <method name="DGEMV(IDLandroid/renderscript/Allocation;Landroid/renderscript/Allocation;IDLandroid/renderscript/Allocation;I)V"/> + <method name="DGER(DLandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;)V"/> + <method name="DSBMV(IIDLandroid/renderscript/Allocation;Landroid/renderscript/Allocation;IDLandroid/renderscript/Allocation;I)V"/> + <method name="DSPMV(IDLandroid/renderscript/Allocation;Landroid/renderscript/Allocation;IDLandroid/renderscript/Allocation;I)V"/> + <method name="DSPR(IDLandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;)V"/> + <method name="DSPR2(IDLandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;)V"/> + <method name="DSYMM(IIDLandroid/renderscript/Allocation;Landroid/renderscript/Allocation;DLandroid/renderscript/Allocation;)V"/> + <method name="DSYMV(IDLandroid/renderscript/Allocation;Landroid/renderscript/Allocation;IDLandroid/renderscript/Allocation;I)V"/> + <method name="DSYR(IDLandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;)V"/> + <method name="DSYR2(IDLandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;)V"/> + <method name="DSYR2K(IIDLandroid/renderscript/Allocation;Landroid/renderscript/Allocation;DLandroid/renderscript/Allocation;)V"/> + <method name="DSYRK(IIDLandroid/renderscript/Allocation;DLandroid/renderscript/Allocation;)V"/> + <method name="DTBMV(IIIILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;I)V"/> + <method name="DTBSV(IIIILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;I)V"/> + <method name="DTPMV(IIILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;I)V"/> + <method name="DTPSV(IIILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;I)V"/> + <method name="DTRMM(IIIIDLandroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V"/> + <method name="DTRMV(IIILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;I)V"/> + <method name="DTRSM(IIIIDLandroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V"/> + <method name="DTRSV(IIILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;I)V"/> + <method name="SGBMV(IIIFLandroid/renderscript/Allocation;Landroid/renderscript/Allocation;IFLandroid/renderscript/Allocation;I)V"/> + <method name="SGEMM(IIFLandroid/renderscript/Allocation;Landroid/renderscript/Allocation;FLandroid/renderscript/Allocation;)V"/> + <method name="SGEMV(IFLandroid/renderscript/Allocation;Landroid/renderscript/Allocation;IFLandroid/renderscript/Allocation;I)V"/> + <method name="SGER(FLandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;)V"/> + <method name="SSBMV(IIFLandroid/renderscript/Allocation;Landroid/renderscript/Allocation;IFLandroid/renderscript/Allocation;I)V"/> + <method name="SSPMV(IFLandroid/renderscript/Allocation;Landroid/renderscript/Allocation;IFLandroid/renderscript/Allocation;I)V"/> + <method name="SSPR(IFLandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;)V"/> + <method name="SSPR2(IFLandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;)V"/> + <method name="SSYMM(IIFLandroid/renderscript/Allocation;Landroid/renderscript/Allocation;FLandroid/renderscript/Allocation;)V"/> + <method name="SSYMV(IFLandroid/renderscript/Allocation;Landroid/renderscript/Allocation;IFLandroid/renderscript/Allocation;I)V"/> + <method name="SSYR(IFLandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;)V"/> + <method name="SSYR2(IFLandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;)V"/> + <method name="SSYR2K(IIFLandroid/renderscript/Allocation;Landroid/renderscript/Allocation;FLandroid/renderscript/Allocation;)V"/> + <method name="SSYRK(IIFLandroid/renderscript/Allocation;FLandroid/renderscript/Allocation;)V"/> + <method name="STBMV(IIIILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;I)V"/> + <method name="STBSV(IIIILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;I)V"/> + <method name="STPMV(IIILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;I)V"/> + <method name="STPSV(IIILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;I)V"/> + <method name="STRMM(IIIIFLandroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V"/> + <method name="STRMV(IIILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;I)V"/> + <method name="STRSM(IIIIFLandroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V"/> + <method name="STRSV(IIILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;I)V"/> + <method name="ZGBMV(IIILandroid/renderscript/Double2;Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;ILandroid/renderscript/Double2;Landroid/renderscript/Allocation;I)V"/> + <method name="ZGEMM(IILandroid/renderscript/Double2;Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Double2;Landroid/renderscript/Allocation;)V"/> + <method name="ZGEMV(ILandroid/renderscript/Double2;Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;ILandroid/renderscript/Double2;Landroid/renderscript/Allocation;I)V"/> + <method name="ZGERC(Landroid/renderscript/Double2;Landroid/renderscript/Allocation;ILandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;)V"/> + <method name="ZGERU(Landroid/renderscript/Double2;Landroid/renderscript/Allocation;ILandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;)V"/> + <method name="ZHBMV(IILandroid/renderscript/Double2;Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;ILandroid/renderscript/Double2;Landroid/renderscript/Allocation;I)V"/> + <method name="ZHEMM(IILandroid/renderscript/Double2;Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Double2;Landroid/renderscript/Allocation;)V"/> + <method name="ZHEMV(ILandroid/renderscript/Double2;Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;ILandroid/renderscript/Double2;Landroid/renderscript/Allocation;I)V"/> + <method name="ZHER(IDLandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;)V"/> + <method name="ZHER2(ILandroid/renderscript/Double2;Landroid/renderscript/Allocation;ILandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;)V"/> + <method name="ZHER2K(IILandroid/renderscript/Double2;Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;DLandroid/renderscript/Allocation;)V"/> + <method name="ZHERK(IIDLandroid/renderscript/Allocation;DLandroid/renderscript/Allocation;)V"/> + <method name="ZHPMV(ILandroid/renderscript/Double2;Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;ILandroid/renderscript/Double2;Landroid/renderscript/Allocation;I)V"/> + <method name="ZHPR(IDLandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;)V"/> + <method name="ZHPR2(ILandroid/renderscript/Double2;Landroid/renderscript/Allocation;ILandroid/renderscript/Allocation;ILandroid/renderscript/Allocation;)V"/> + <method name="ZSYMM(IILandroid/renderscript/Double2;Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Double2;Landroid/renderscript/Allocation;)V"/> + <method name="ZSYR2K(IILandroid/renderscript/Double2;Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Double2;Landroid/renderscript/Allocation;)V"/> + <method name="ZSYRK(IILandroid/renderscript/Double2;Landroid/renderscript/Allocation;Landroid/renderscript/Double2;Landroid/renderscript/Allocation;)V"/> + <method name="ZTBMV(IIIILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;I)V"/> + <method name="ZTBSV(IIIILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;I)V"/> + <method name="ZTPMV(IIILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;I)V"/> + <method name="ZTPSV(IIILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;I)V"/> + <method name="ZTRMM(IIIILandroid/renderscript/Double2;Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V"/> + <method name="ZTRMV(IIILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;I)V"/> + <method name="ZTRSM(IIIILandroid/renderscript/Double2;Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V"/> + <method name="ZTRSV(IIILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;I)V"/> + <method name="create(Landroid/renderscript/RenderScript;)Landroid/renderscript/ScriptIntrinsicBLAS;"/> + <field name="CONJ_TRANSPOSE"/> + <field name="LEFT"/> + <field name="LOWER"/> + <field name="NON_UNIT"/> + <field name="NO_TRANSPOSE"/> + <field name="RIGHT"/> + <field name="TRANSPOSE"/> + <field name="UNIT"/> + <field name="UPPER"/> + </class> + <class name="android/renderscript/ScriptIntrinsicBlend" since="17"> + <extends name="android/renderscript/ScriptIntrinsic"/> + <method name="<init>()V"/> + <method name="create(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;)Landroid/renderscript/ScriptIntrinsicBlend;"/> + <method name="forEachAdd(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V"/> + <method name="forEachAdd(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21"/> + <method name="forEachClear(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V"/> + <method name="forEachClear(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21"/> + <method name="forEachDst(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V"/> + <method name="forEachDst(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21"/> + <method name="forEachDstAtop(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V"/> + <method name="forEachDstAtop(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21"/> + <method name="forEachDstIn(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V"/> + <method name="forEachDstIn(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21"/> + <method name="forEachDstOut(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V"/> + <method name="forEachDstOut(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21"/> + <method name="forEachDstOver(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V"/> + <method name="forEachDstOver(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21"/> + <method name="forEachMultiply(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V"/> + <method name="forEachMultiply(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21"/> + <method name="forEachSrc(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V"/> + <method name="forEachSrc(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21"/> + <method name="forEachSrcAtop(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V"/> + <method name="forEachSrcAtop(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21"/> + <method name="forEachSrcIn(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V"/> + <method name="forEachSrcIn(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21"/> + <method name="forEachSrcOut(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V"/> + <method name="forEachSrcOut(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21"/> + <method name="forEachSrcOver(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V"/> + <method name="forEachSrcOver(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21"/> + <method name="forEachSubtract(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V"/> + <method name="forEachSubtract(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21"/> + <method name="forEachXor(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V"/> + <method name="forEachXor(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21"/> + <method name="getKernelIDAdd()Landroid/renderscript/Script$KernelID;"/> + <method name="getKernelIDClear()Landroid/renderscript/Script$KernelID;"/> + <method name="getKernelIDDst()Landroid/renderscript/Script$KernelID;"/> + <method name="getKernelIDDstAtop()Landroid/renderscript/Script$KernelID;"/> + <method name="getKernelIDDstIn()Landroid/renderscript/Script$KernelID;"/> + <method name="getKernelIDDstOut()Landroid/renderscript/Script$KernelID;"/> + <method name="getKernelIDDstOver()Landroid/renderscript/Script$KernelID;"/> + <method name="getKernelIDMultiply()Landroid/renderscript/Script$KernelID;"/> + <method name="getKernelIDSrc()Landroid/renderscript/Script$KernelID;"/> + <method name="getKernelIDSrcAtop()Landroid/renderscript/Script$KernelID;"/> + <method name="getKernelIDSrcIn()Landroid/renderscript/Script$KernelID;"/> + <method name="getKernelIDSrcOut()Landroid/renderscript/Script$KernelID;"/> + <method name="getKernelIDSrcOver()Landroid/renderscript/Script$KernelID;"/> + <method name="getKernelIDSubtract()Landroid/renderscript/Script$KernelID;"/> + <method name="getKernelIDXor()Landroid/renderscript/Script$KernelID;"/> + </class> + <class name="android/renderscript/ScriptIntrinsicBlur" since="17"> + <extends name="android/renderscript/ScriptIntrinsic"/> + <method name="<init>()V"/> + <method name="create(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;)Landroid/renderscript/ScriptIntrinsicBlur;"/> + <method name="forEach(Landroid/renderscript/Allocation;)V"/> + <method name="forEach(Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21"/> + <method name="getFieldID_Input()Landroid/renderscript/Script$FieldID;"/> + <method name="getKernelID()Landroid/renderscript/Script$KernelID;"/> + <method name="setInput(Landroid/renderscript/Allocation;)V"/> + <method name="setRadius(F)V"/> + </class> + <class name="android/renderscript/ScriptIntrinsicColorMatrix" since="17"> + <extends name="android/renderscript/ScriptIntrinsic"/> + <method name="<init>()V"/> + <method name="create(Landroid/renderscript/RenderScript;)Landroid/renderscript/ScriptIntrinsicColorMatrix;" since="19"/> + <method name="create(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;)Landroid/renderscript/ScriptIntrinsicColorMatrix;" deprecated="19"/> + <method name="forEach(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V"/> + <method name="forEach(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21"/> + <method name="getKernelID()Landroid/renderscript/Script$KernelID;"/> + <method name="setAdd(FFFF)V" since="19"/> + <method name="setAdd(Landroid/renderscript/Float4;)V" since="19"/> + <method name="setColorMatrix(Landroid/renderscript/Matrix3f;)V"/> + <method name="setColorMatrix(Landroid/renderscript/Matrix4f;)V"/> + <method name="setGreyscale()V"/> + <method name="setRGBtoYUV()V"/> + <method name="setYUVtoRGB()V"/> + </class> + <class name="android/renderscript/ScriptIntrinsicConvolve3x3" since="17"> + <extends name="android/renderscript/ScriptIntrinsic"/> + <method name="<init>()V"/> + <method name="create(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;)Landroid/renderscript/ScriptIntrinsicConvolve3x3;"/> + <method name="forEach(Landroid/renderscript/Allocation;)V"/> + <method name="forEach(Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21"/> + <method name="getFieldID_Input()Landroid/renderscript/Script$FieldID;"/> + <method name="getKernelID()Landroid/renderscript/Script$KernelID;"/> + <method name="setCoefficients([F)V"/> + <method name="setInput(Landroid/renderscript/Allocation;)V"/> + </class> + <class name="android/renderscript/ScriptIntrinsicConvolve5x5" since="17"> + <extends name="android/renderscript/ScriptIntrinsic"/> + <method name="<init>()V"/> + <method name="create(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;)Landroid/renderscript/ScriptIntrinsicConvolve5x5;"/> + <method name="forEach(Landroid/renderscript/Allocation;)V"/> + <method name="forEach(Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21"/> + <method name="getFieldID_Input()Landroid/renderscript/Script$FieldID;"/> + <method name="getKernelID()Landroid/renderscript/Script$KernelID;"/> + <method name="setCoefficients([F)V"/> + <method name="setInput(Landroid/renderscript/Allocation;)V"/> + </class> + <class name="android/renderscript/ScriptIntrinsicHistogram" since="19"> + <extends name="android/renderscript/ScriptIntrinsic"/> + <method name="<init>()V"/> + <method name="create(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;)Landroid/renderscript/ScriptIntrinsicHistogram;"/> + <method name="forEach(Landroid/renderscript/Allocation;)V"/> + <method name="forEach(Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21"/> + <method name="forEach_Dot(Landroid/renderscript/Allocation;)V"/> + <method name="forEach_Dot(Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21"/> + <method name="getFieldID_Input()Landroid/renderscript/Script$FieldID;"/> + <method name="getKernelID_Separate()Landroid/renderscript/Script$KernelID;"/> + <method name="setDotCoefficients(FFFF)V"/> + <method name="setOutput(Landroid/renderscript/Allocation;)V"/> + </class> + <class name="android/renderscript/ScriptIntrinsicLUT" since="17"> + <extends name="android/renderscript/ScriptIntrinsic"/> + <method name="<init>()V"/> + <method name="create(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;)Landroid/renderscript/ScriptIntrinsicLUT;"/> + <method name="forEach(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;)V"/> + <method name="forEach(Landroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V" since="21"/> + <method name="getKernelID()Landroid/renderscript/Script$KernelID;"/> + <method name="setAlpha(II)V"/> + <method name="setBlue(II)V"/> + <method name="setGreen(II)V"/> + <method name="setRed(II)V"/> + </class> + <class name="android/renderscript/ScriptIntrinsicResize" since="20"> + <extends name="android/renderscript/ScriptIntrinsic"/> + <method name="<init>()V"/> + <method name="create(Landroid/renderscript/RenderScript;)Landroid/renderscript/ScriptIntrinsicResize;"/> + <method name="forEach_bicubic(Landroid/renderscript/Allocation;)V"/> + <method name="forEach_bicubic(Landroid/renderscript/Allocation;Landroid/renderscript/Script$LaunchOptions;)V"/> + <method name="getFieldID_Input()Landroid/renderscript/Script$FieldID;"/> + <method name="getKernelID_bicubic()Landroid/renderscript/Script$KernelID;"/> + <method name="setInput(Landroid/renderscript/Allocation;)V"/> + </class> + <class name="android/renderscript/ScriptIntrinsicYuvToRGB" since="17"> + <extends name="android/renderscript/ScriptIntrinsic"/> + <method name="<init>()V"/> + <method name="create(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;)Landroid/renderscript/ScriptIntrinsicYuvToRGB;"/> + <method name="forEach(Landroid/renderscript/Allocation;)V"/> + <method name="getFieldID_Input()Landroid/renderscript/Script$FieldID;"/> + <method name="getKernelID()Landroid/renderscript/Script$KernelID;"/> + <method name="setInput(Landroid/renderscript/Allocation;)V"/> + </class> + <class name="android/renderscript/Short2" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(SS)V" since="14"/> + <field name="x"/> + <field name="y"/> + </class> + <class name="android/renderscript/Short3" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(SSS)V" since="14"/> + <field name="x"/> + <field name="y"/> + <field name="z"/> + </class> + <class name="android/renderscript/Short4" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(SSSS)V" since="14"/> + <field name="w"/> + <field name="x"/> + <field name="y"/> + <field name="z"/> + </class> + <class name="android/renderscript/Type" since="11"> + <extends name="android/renderscript/BaseObj"/> + <method name="<init>()V"/> + <method name="createX(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;I)Landroid/renderscript/Type;" since="21"/> + <method name="createXY(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;II)Landroid/renderscript/Type;" since="21"/> + <method name="createXYZ(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;III)Landroid/renderscript/Type;" since="21"/> + <method name="getCount()I"/> + <method name="getElement()Landroid/renderscript/Element;"/> + <method name="getX()I"/> + <method name="getY()I"/> + <method name="getYuv()I" since="18"/> + <method name="getZ()I"/> + <method name="hasFaces()Z"/> + <method name="hasMipmaps()Z"/> + </class> + <class name="android/renderscript/Type$Builder" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;)V"/> + <method name="create()Landroid/renderscript/Type;"/> + <method name="setFaces(Z)Landroid/renderscript/Type$Builder;"/> + <method name="setMipmaps(Z)Landroid/renderscript/Type$Builder;"/> + <method name="setX(I)Landroid/renderscript/Type$Builder;"/> + <method name="setY(I)Landroid/renderscript/Type$Builder;"/> + <method name="setYuvFormat(I)Landroid/renderscript/Type$Builder;" since="18"/> + <method name="setZ(I)Landroid/renderscript/Type$Builder;" since="18"/> + </class> + <class name="android/renderscript/Type$CubemapFace" since="11"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/renderscript/Type$CubemapFace;"/> + <method name="values()[Landroid/renderscript/Type$CubemapFace;"/> + <field name="NEGATIVE_X"/> + <field name="NEGATIVE_Y"/> + <field name="NEGATIVE_Z"/> + <field name="POSITIVE_X" since="14"/> + <field name="POSITIVE_Y" since="14"/> + <field name="POSITIVE_Z" since="14"/> + <field name="POSITVE_X"/> + <field name="POSITVE_Y"/> + <field name="POSITVE_Z"/> + </class> + <class name="android/sax/Element" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getChild(Ljava/lang/String;)Landroid/sax/Element;"/> + <method name="getChild(Ljava/lang/String;Ljava/lang/String;)Landroid/sax/Element;"/> + <method name="requireChild(Ljava/lang/String;)Landroid/sax/Element;"/> + <method name="requireChild(Ljava/lang/String;Ljava/lang/String;)Landroid/sax/Element;"/> + <method name="setElementListener(Landroid/sax/ElementListener;)V"/> + <method name="setEndElementListener(Landroid/sax/EndElementListener;)V"/> + <method name="setEndTextElementListener(Landroid/sax/EndTextElementListener;)V"/> + <method name="setStartElementListener(Landroid/sax/StartElementListener;)V"/> + <method name="setTextElementListener(Landroid/sax/TextElementListener;)V"/> + </class> + <class name="android/sax/ElementListener" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/sax/EndElementListener"/> + <implements name="android/sax/StartElementListener"/> + </class> + <class name="android/sax/EndElementListener" since="1"> + <extends name="java/lang/Object"/> + <method name="end()V"/> + </class> + <class name="android/sax/EndTextElementListener" since="1"> + <extends name="java/lang/Object"/> + <method name="end(Ljava/lang/String;)V"/> + </class> + <class name="android/sax/RootElement" since="1"> + <extends name="android/sax/Element"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="getContentHandler()Lorg/xml/sax/ContentHandler;"/> + </class> + <class name="android/sax/StartElementListener" since="1"> + <extends name="java/lang/Object"/> + <method name="start(Lorg/xml/sax/Attributes;)V"/> + </class> + <class name="android/sax/TextElementListener" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/sax/EndTextElementListener"/> + <implements name="android/sax/StartElementListener"/> + </class> + <class name="android/security/KeyChain" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="choosePrivateKeyAlias(Landroid/app/Activity;Landroid/security/KeyChainAliasCallback;[Ljava/lang/String;[Ljava/security/Principal;Landroid/net/Uri;Ljava/lang/String;)V" since="23"/> + <method name="choosePrivateKeyAlias(Landroid/app/Activity;Landroid/security/KeyChainAliasCallback;[Ljava/lang/String;[Ljava/security/Principal;Ljava/lang/String;ILjava/lang/String;)V"/> + <method name="createInstallIntent()Landroid/content/Intent;"/> + <method name="getCertificateChain(Landroid/content/Context;Ljava/lang/String;)[Ljava/security/cert/X509Certificate;"/> + <method name="getPrivateKey(Landroid/content/Context;Ljava/lang/String;)Ljava/security/PrivateKey;"/> + <method name="isBoundKeyAlgorithm(Ljava/lang/String;)Z" since="18" deprecated="23"/> + <method name="isKeyAlgorithmSupported(Ljava/lang/String;)Z" since="18"/> + <field name="ACTION_KEYCHAIN_CHANGED" since="26"/> + <field name="ACTION_KEY_ACCESS_CHANGED" since="26"/> + <field name="ACTION_STORAGE_CHANGED" since="16" deprecated="26"/> + <field name="ACTION_TRUST_STORE_CHANGED" since="26"/> + <field name="EXTRA_CERTIFICATE"/> + <field name="EXTRA_KEY_ACCESSIBLE" since="26"/> + <field name="EXTRA_KEY_ALIAS" since="26"/> + <field name="EXTRA_NAME"/> + <field name="EXTRA_PKCS12"/> + </class> + <class name="android/security/KeyChainAliasCallback" since="14"> + <extends name="java/lang/Object"/> + <method name="alias(Ljava/lang/String;)V"/> + </class> + <class name="android/security/KeyChainException" since="14"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="android/security/KeyPairGeneratorSpec" since="18" deprecated="23"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/AlgorithmParameterSpec"/> + <method name="<init>()V"/> + <method name="getAlgorithmParameterSpec()Ljava/security/spec/AlgorithmParameterSpec;" since="19"/> + <method name="getContext()Landroid/content/Context;"/> + <method name="getEndDate()Ljava/util/Date;"/> + <method name="getKeySize()I" since="19"/> + <method name="getKeyType()Ljava/lang/String;" since="19"/> + <method name="getKeystoreAlias()Ljava/lang/String;"/> + <method name="getSerialNumber()Ljava/math/BigInteger;"/> + <method name="getStartDate()Ljava/util/Date;"/> + <method name="getSubjectDN()Ljavax/security/auth/x500/X500Principal;"/> + <method name="isEncryptionRequired()Z"/> + </class> + <class name="android/security/KeyPairGeneratorSpec$Builder" since="18" deprecated="23"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="build()Landroid/security/KeyPairGeneratorSpec;"/> + <method name="setAlgorithmParameterSpec(Ljava/security/spec/AlgorithmParameterSpec;)Landroid/security/KeyPairGeneratorSpec$Builder;" since="19"/> + <method name="setAlias(Ljava/lang/String;)Landroid/security/KeyPairGeneratorSpec$Builder;"/> + <method name="setEncryptionRequired()Landroid/security/KeyPairGeneratorSpec$Builder;"/> + <method name="setEndDate(Ljava/util/Date;)Landroid/security/KeyPairGeneratorSpec$Builder;"/> + <method name="setKeySize(I)Landroid/security/KeyPairGeneratorSpec$Builder;" since="19"/> + <method name="setKeyType(Ljava/lang/String;)Landroid/security/KeyPairGeneratorSpec$Builder;" since="19"/> + <method name="setSerialNumber(Ljava/math/BigInteger;)Landroid/security/KeyPairGeneratorSpec$Builder;"/> + <method name="setStartDate(Ljava/util/Date;)Landroid/security/KeyPairGeneratorSpec$Builder;"/> + <method name="setSubject(Ljavax/security/auth/x500/X500Principal;)Landroid/security/KeyPairGeneratorSpec$Builder;"/> + </class> + <class name="android/security/KeyStoreParameter" since="18" deprecated="23"> + <extends name="java/lang/Object"/> + <implements name="java/security/KeyStore$ProtectionParameter"/> + <method name="<init>()V"/> + <method name="isEncryptionRequired()Z"/> + </class> + <class name="android/security/KeyStoreParameter$Builder" since="18" deprecated="23"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="build()Landroid/security/KeyStoreParameter;"/> + <method name="setEncryptionRequired(Z)Landroid/security/KeyStoreParameter$Builder;"/> + </class> + <class name="android/security/NetworkSecurityPolicy" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getInstance()Landroid/security/NetworkSecurityPolicy;"/> + <method name="isCleartextTrafficPermitted()Z"/> + <method name="isCleartextTrafficPermitted(Ljava/lang/String;)Z" since="24"/> + </class> + <class name="android/security/keystore/KeyExpiredException" since="23"> + <extends name="java/security/InvalidKeyException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + </class> + <class name="android/security/keystore/KeyGenParameterSpec" since="23"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/AlgorithmParameterSpec"/> + <method name="<init>()V"/> + <method name="getAlgorithmParameterSpec()Ljava/security/spec/AlgorithmParameterSpec;"/> + <method name="getAttestationChallenge()[B" since="24"/> + <method name="getBlockModes()[Ljava/lang/String;"/> + <method name="getCertificateNotAfter()Ljava/util/Date;"/> + <method name="getCertificateNotBefore()Ljava/util/Date;"/> + <method name="getCertificateSerialNumber()Ljava/math/BigInteger;"/> + <method name="getCertificateSubject()Ljavax/security/auth/x500/X500Principal;"/> + <method name="getDigests()[Ljava/lang/String;"/> + <method name="getEncryptionPaddings()[Ljava/lang/String;"/> + <method name="getKeySize()I"/> + <method name="getKeyValidityForConsumptionEnd()Ljava/util/Date;"/> + <method name="getKeyValidityForOriginationEnd()Ljava/util/Date;"/> + <method name="getKeyValidityStart()Ljava/util/Date;"/> + <method name="getKeystoreAlias()Ljava/lang/String;"/> + <method name="getPurposes()I"/> + <method name="getSignaturePaddings()[Ljava/lang/String;"/> + <method name="getUserAuthenticationValidityDurationSeconds()I"/> + <method name="isDigestsSpecified()Z"/> + <method name="isInvalidatedByBiometricEnrollment()Z" since="24"/> + <method name="isRandomizedEncryptionRequired()Z"/> + <method name="isUserAuthenticationRequired()Z"/> + <method name="isUserAuthenticationValidWhileOnBody()Z" since="24"/> + </class> + <class name="android/security/keystore/KeyGenParameterSpec$Builder" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="build()Landroid/security/keystore/KeyGenParameterSpec;"/> + <method name="setAlgorithmParameterSpec(Ljava/security/spec/AlgorithmParameterSpec;)Landroid/security/keystore/KeyGenParameterSpec$Builder;"/> + <method name="setAttestationChallenge([B)Landroid/security/keystore/KeyGenParameterSpec$Builder;" since="24"/> + <method name="setBlockModes([Ljava/lang/String;)Landroid/security/keystore/KeyGenParameterSpec$Builder;"/> + <method name="setCertificateNotAfter(Ljava/util/Date;)Landroid/security/keystore/KeyGenParameterSpec$Builder;"/> + <method name="setCertificateNotBefore(Ljava/util/Date;)Landroid/security/keystore/KeyGenParameterSpec$Builder;"/> + <method name="setCertificateSerialNumber(Ljava/math/BigInteger;)Landroid/security/keystore/KeyGenParameterSpec$Builder;"/> + <method name="setCertificateSubject(Ljavax/security/auth/x500/X500Principal;)Landroid/security/keystore/KeyGenParameterSpec$Builder;"/> + <method name="setDigests([Ljava/lang/String;)Landroid/security/keystore/KeyGenParameterSpec$Builder;"/> + <method name="setEncryptionPaddings([Ljava/lang/String;)Landroid/security/keystore/KeyGenParameterSpec$Builder;"/> + <method name="setInvalidatedByBiometricEnrollment(Z)Landroid/security/keystore/KeyGenParameterSpec$Builder;" since="24"/> + <method name="setKeySize(I)Landroid/security/keystore/KeyGenParameterSpec$Builder;"/> + <method name="setKeyValidityEnd(Ljava/util/Date;)Landroid/security/keystore/KeyGenParameterSpec$Builder;"/> + <method name="setKeyValidityForConsumptionEnd(Ljava/util/Date;)Landroid/security/keystore/KeyGenParameterSpec$Builder;"/> + <method name="setKeyValidityForOriginationEnd(Ljava/util/Date;)Landroid/security/keystore/KeyGenParameterSpec$Builder;"/> + <method name="setKeyValidityStart(Ljava/util/Date;)Landroid/security/keystore/KeyGenParameterSpec$Builder;"/> + <method name="setRandomizedEncryptionRequired(Z)Landroid/security/keystore/KeyGenParameterSpec$Builder;"/> + <method name="setSignaturePaddings([Ljava/lang/String;)Landroid/security/keystore/KeyGenParameterSpec$Builder;"/> + <method name="setUserAuthenticationRequired(Z)Landroid/security/keystore/KeyGenParameterSpec$Builder;"/> + <method name="setUserAuthenticationValidWhileOnBody(Z)Landroid/security/keystore/KeyGenParameterSpec$Builder;" since="24"/> + <method name="setUserAuthenticationValidityDurationSeconds(I)Landroid/security/keystore/KeyGenParameterSpec$Builder;"/> + </class> + <class name="android/security/keystore/KeyInfo" since="23"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/KeySpec"/> + <method name="<init>()V"/> + <method name="getBlockModes()[Ljava/lang/String;"/> + <method name="getDigests()[Ljava/lang/String;"/> + <method name="getEncryptionPaddings()[Ljava/lang/String;"/> + <method name="getKeySize()I"/> + <method name="getKeyValidityForConsumptionEnd()Ljava/util/Date;"/> + <method name="getKeyValidityForOriginationEnd()Ljava/util/Date;"/> + <method name="getKeyValidityStart()Ljava/util/Date;"/> + <method name="getKeystoreAlias()Ljava/lang/String;"/> + <method name="getOrigin()I"/> + <method name="getPurposes()I"/> + <method name="getSignaturePaddings()[Ljava/lang/String;"/> + <method name="getUserAuthenticationValidityDurationSeconds()I"/> + <method name="isInsideSecureHardware()Z"/> + <method name="isInvalidatedByBiometricEnrollment()Z" since="24"/> + <method name="isUserAuthenticationRequired()Z"/> + <method name="isUserAuthenticationRequirementEnforcedBySecureHardware()Z"/> + <method name="isUserAuthenticationValidWhileOnBody()Z" since="24"/> + </class> + <class name="android/security/keystore/KeyNotYetValidException" since="23"> + <extends name="java/security/InvalidKeyException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + </class> + <class name="android/security/keystore/KeyPermanentlyInvalidatedException" since="23"> + <extends name="java/security/InvalidKeyException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + </class> + <class name="android/security/keystore/KeyProperties" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="BLOCK_MODE_CBC"/> + <field name="BLOCK_MODE_CTR"/> + <field name="BLOCK_MODE_ECB"/> + <field name="BLOCK_MODE_GCM"/> + <field name="DIGEST_MD5"/> + <field name="DIGEST_NONE"/> + <field name="DIGEST_SHA1"/> + <field name="DIGEST_SHA224"/> + <field name="DIGEST_SHA256"/> + <field name="DIGEST_SHA384"/> + <field name="DIGEST_SHA512"/> + <field name="ENCRYPTION_PADDING_NONE"/> + <field name="ENCRYPTION_PADDING_PKCS7"/> + <field name="ENCRYPTION_PADDING_RSA_OAEP"/> + <field name="ENCRYPTION_PADDING_RSA_PKCS1"/> + <field name="KEY_ALGORITHM_AES"/> + <field name="KEY_ALGORITHM_EC"/> + <field name="KEY_ALGORITHM_HMAC_SHA1"/> + <field name="KEY_ALGORITHM_HMAC_SHA224"/> + <field name="KEY_ALGORITHM_HMAC_SHA256"/> + <field name="KEY_ALGORITHM_HMAC_SHA384"/> + <field name="KEY_ALGORITHM_HMAC_SHA512"/> + <field name="KEY_ALGORITHM_RSA"/> + <field name="ORIGIN_GENERATED"/> + <field name="ORIGIN_IMPORTED"/> + <field name="ORIGIN_UNKNOWN"/> + <field name="PURPOSE_DECRYPT"/> + <field name="PURPOSE_ENCRYPT"/> + <field name="PURPOSE_SIGN"/> + <field name="PURPOSE_VERIFY"/> + <field name="SIGNATURE_PADDING_RSA_PKCS1"/> + <field name="SIGNATURE_PADDING_RSA_PSS"/> + </class> + <class name="android/security/keystore/KeyProtection" since="23"> + <extends name="java/lang/Object"/> + <implements name="java/security/KeyStore$ProtectionParameter"/> + <method name="<init>()V"/> + <method name="getBlockModes()[Ljava/lang/String;"/> + <method name="getDigests()[Ljava/lang/String;"/> + <method name="getEncryptionPaddings()[Ljava/lang/String;"/> + <method name="getKeyValidityForConsumptionEnd()Ljava/util/Date;"/> + <method name="getKeyValidityForOriginationEnd()Ljava/util/Date;"/> + <method name="getKeyValidityStart()Ljava/util/Date;"/> + <method name="getPurposes()I"/> + <method name="getSignaturePaddings()[Ljava/lang/String;"/> + <method name="getUserAuthenticationValidityDurationSeconds()I"/> + <method name="isDigestsSpecified()Z"/> + <method name="isInvalidatedByBiometricEnrollment()Z" since="24"/> + <method name="isRandomizedEncryptionRequired()Z"/> + <method name="isUserAuthenticationRequired()Z"/> + <method name="isUserAuthenticationValidWhileOnBody()Z" since="24"/> + </class> + <class name="android/security/keystore/KeyProtection$Builder" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>(I)V"/> + <method name="build()Landroid/security/keystore/KeyProtection;"/> + <method name="setBlockModes([Ljava/lang/String;)Landroid/security/keystore/KeyProtection$Builder;"/> + <method name="setDigests([Ljava/lang/String;)Landroid/security/keystore/KeyProtection$Builder;"/> + <method name="setEncryptionPaddings([Ljava/lang/String;)Landroid/security/keystore/KeyProtection$Builder;"/> + <method name="setInvalidatedByBiometricEnrollment(Z)Landroid/security/keystore/KeyProtection$Builder;" since="24"/> + <method name="setKeyValidityEnd(Ljava/util/Date;)Landroid/security/keystore/KeyProtection$Builder;"/> + <method name="setKeyValidityForConsumptionEnd(Ljava/util/Date;)Landroid/security/keystore/KeyProtection$Builder;"/> + <method name="setKeyValidityForOriginationEnd(Ljava/util/Date;)Landroid/security/keystore/KeyProtection$Builder;"/> + <method name="setKeyValidityStart(Ljava/util/Date;)Landroid/security/keystore/KeyProtection$Builder;"/> + <method name="setRandomizedEncryptionRequired(Z)Landroid/security/keystore/KeyProtection$Builder;"/> + <method name="setSignaturePaddings([Ljava/lang/String;)Landroid/security/keystore/KeyProtection$Builder;"/> + <method name="setUserAuthenticationRequired(Z)Landroid/security/keystore/KeyProtection$Builder;"/> + <method name="setUserAuthenticationValidWhileOnBody(Z)Landroid/security/keystore/KeyProtection$Builder;" since="24"/> + <method name="setUserAuthenticationValidityDurationSeconds(I)Landroid/security/keystore/KeyProtection$Builder;"/> + </class> + <class name="android/security/keystore/UserNotAuthenticatedException" since="23"> + <extends name="java/security/InvalidKeyException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + </class> + <class name="android/service/autofill/AutofillService" since="26"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="getFillEventHistory()Landroid/service/autofill/FillEventHistory;"/> + <method name="onConnected()V"/> + <method name="onDisconnected()V"/> + <method name="onFillRequest(Landroid/service/autofill/FillRequest;Landroid/os/CancellationSignal;Landroid/service/autofill/FillCallback;)V"/> + <method name="onSaveRequest(Landroid/service/autofill/SaveRequest;Landroid/service/autofill/SaveCallback;)V"/> + <field name="SERVICE_INTERFACE"/> + <field name="SERVICE_META_DATA"/> + </class> + <class name="android/service/autofill/Dataset" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <field name="CREATOR"/> + </class> + <class name="android/service/autofill/Dataset$Builder" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/widget/RemoteViews;)V"/> + <method name="build()Landroid/service/autofill/Dataset;"/> + <method name="setAuthentication(Landroid/content/IntentSender;)Landroid/service/autofill/Dataset$Builder;"/> + <method name="setId(Ljava/lang/String;)Landroid/service/autofill/Dataset$Builder;"/> + <method name="setValue(Landroid/view/autofill/AutofillId;Landroid/view/autofill/AutofillValue;)Landroid/service/autofill/Dataset$Builder;"/> + <method name="setValue(Landroid/view/autofill/AutofillId;Landroid/view/autofill/AutofillValue;Landroid/widget/RemoteViews;)Landroid/service/autofill/Dataset$Builder;"/> + </class> + <class name="android/service/autofill/FillCallback" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onFailure(Ljava/lang/CharSequence;)V"/> + <method name="onSuccess(Landroid/service/autofill/FillResponse;)V"/> + </class> + <class name="android/service/autofill/FillContext" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getRequestId()I"/> + <method name="getStructure()Landroid/app/assist/AssistStructure;"/> + <field name="CREATOR"/> + </class> + <class name="android/service/autofill/FillEventHistory" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getClientState()Landroid/os/Bundle;"/> + <method name="getEvents()Ljava/util/List;"/> + <field name="CREATOR"/> + </class> + <class name="android/service/autofill/FillEventHistory$Event" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getDatasetId()Ljava/lang/String;"/> + <method name="getType()I"/> + <field name="TYPE_AUTHENTICATION_SELECTED"/> + <field name="TYPE_DATASET_AUTHENTICATION_SELECTED"/> + <field name="TYPE_DATASET_SELECTED"/> + <field name="TYPE_SAVE_SHOWN"/> + </class> + <class name="android/service/autofill/FillRequest" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getClientState()Landroid/os/Bundle;"/> + <method name="getFillContexts()Ljava/util/List;"/> + <method name="getFlags()I"/> + <method name="getId()I"/> + <field name="CREATOR"/> + <field name="FLAG_MANUAL_REQUEST"/> + </class> + <class name="android/service/autofill/FillResponse" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <field name="CREATOR"/> + </class> + <class name="android/service/autofill/FillResponse$Builder" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addDataset(Landroid/service/autofill/Dataset;)Landroid/service/autofill/FillResponse$Builder;"/> + <method name="build()Landroid/service/autofill/FillResponse;"/> + <method name="setAuthentication([Landroid/view/autofill/AutofillId;Landroid/content/IntentSender;Landroid/widget/RemoteViews;)Landroid/service/autofill/FillResponse$Builder;"/> + <method name="setClientState(Landroid/os/Bundle;)Landroid/service/autofill/FillResponse$Builder;"/> + <method name="setIgnoredIds([Landroid/view/autofill/AutofillId;)Landroid/service/autofill/FillResponse$Builder;"/> + <method name="setSaveInfo(Landroid/service/autofill/SaveInfo;)Landroid/service/autofill/FillResponse$Builder;"/> + </class> + <class name="android/service/autofill/SaveCallback" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onFailure(Ljava/lang/CharSequence;)V"/> + <method name="onSuccess()V"/> + </class> + <class name="android/service/autofill/SaveInfo" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <field name="CREATOR"/> + <field name="FLAG_SAVE_ON_ALL_VIEWS_INVISIBLE"/> + <field name="NEGATIVE_BUTTON_STYLE_CANCEL"/> + <field name="NEGATIVE_BUTTON_STYLE_REJECT"/> + <field name="SAVE_DATA_TYPE_ADDRESS"/> + <field name="SAVE_DATA_TYPE_CREDIT_CARD"/> + <field name="SAVE_DATA_TYPE_EMAIL_ADDRESS"/> + <field name="SAVE_DATA_TYPE_GENERIC"/> + <field name="SAVE_DATA_TYPE_PASSWORD"/> + <field name="SAVE_DATA_TYPE_USERNAME"/> + </class> + <class name="android/service/autofill/SaveInfo$Builder" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>(I[Landroid/view/autofill/AutofillId;)V"/> + <method name="build()Landroid/service/autofill/SaveInfo;"/> + <method name="setDescription(Ljava/lang/CharSequence;)Landroid/service/autofill/SaveInfo$Builder;"/> + <method name="setFlags(I)Landroid/service/autofill/SaveInfo$Builder;"/> + <method name="setNegativeAction(ILandroid/content/IntentSender;)Landroid/service/autofill/SaveInfo$Builder;"/> + <method name="setOptionalIds([Landroid/view/autofill/AutofillId;)Landroid/service/autofill/SaveInfo$Builder;"/> + </class> + <class name="android/service/autofill/SaveRequest" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getClientState()Landroid/os/Bundle;"/> + <method name="getFillContexts()Ljava/util/List;"/> + <field name="CREATOR"/> + </class> + <class name="android/service/carrier/CarrierIdentifier" since="23"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="getGid1()Ljava/lang/String;"/> + <method name="getGid2()Ljava/lang/String;"/> + <method name="getImsi()Ljava/lang/String;"/> + <method name="getMcc()Ljava/lang/String;"/> + <method name="getMnc()Ljava/lang/String;"/> + <method name="getSpn()Ljava/lang/String;"/> + <field name="CREATOR"/> + </class> + <class name="android/service/carrier/CarrierMessagingService" since="22"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="onDownloadMms(Landroid/net/Uri;ILandroid/net/Uri;Landroid/service/carrier/CarrierMessagingService$ResultCallback;)V"/> + <method name="onFilterSms(Landroid/service/carrier/MessagePdu;Ljava/lang/String;IILandroid/service/carrier/CarrierMessagingService$ResultCallback;)V" deprecated="24"/> + <method name="onReceiveTextSms(Landroid/service/carrier/MessagePdu;Ljava/lang/String;IILandroid/service/carrier/CarrierMessagingService$ResultCallback;)V" since="24"/> + <method name="onSendDataSms([BILjava/lang/String;IILandroid/service/carrier/CarrierMessagingService$ResultCallback;)V" since="23"/> + <method name="onSendDataSms([BILjava/lang/String;ILandroid/service/carrier/CarrierMessagingService$ResultCallback;)V" deprecated="23"/> + <method name="onSendMms(Landroid/net/Uri;ILandroid/net/Uri;Landroid/service/carrier/CarrierMessagingService$ResultCallback;)V"/> + <method name="onSendMultipartTextSms(Ljava/util/List;ILjava/lang/String;ILandroid/service/carrier/CarrierMessagingService$ResultCallback;)V" since="23"/> + <method name="onSendMultipartTextSms(Ljava/util/List;ILjava/lang/String;Landroid/service/carrier/CarrierMessagingService$ResultCallback;)V" deprecated="23"/> + <method name="onSendTextSms(Ljava/lang/String;ILjava/lang/String;ILandroid/service/carrier/CarrierMessagingService$ResultCallback;)V" since="23"/> + <method name="onSendTextSms(Ljava/lang/String;ILjava/lang/String;Landroid/service/carrier/CarrierMessagingService$ResultCallback;)V" deprecated="23"/> + <field name="DOWNLOAD_STATUS_ERROR"/> + <field name="DOWNLOAD_STATUS_OK"/> + <field name="DOWNLOAD_STATUS_RETRY_ON_CARRIER_NETWORK"/> + <field name="RECEIVE_OPTIONS_DEFAULT" since="24"/> + <field name="RECEIVE_OPTIONS_DROP" since="24"/> + <field name="RECEIVE_OPTIONS_SKIP_NOTIFY_WHEN_CREDENTIAL_PROTECTED_STORAGE_UNAVAILABLE" since="24"/> + <field name="SEND_FLAG_REQUEST_DELIVERY_STATUS" since="23"/> + <field name="SEND_STATUS_ERROR"/> + <field name="SEND_STATUS_OK"/> + <field name="SEND_STATUS_RETRY_ON_CARRIER_NETWORK"/> + <field name="SERVICE_INTERFACE"/> + </class> + <class name="android/service/carrier/CarrierMessagingService$ResultCallback" since="22"> + <extends name="java/lang/Object"/> + <method name="onReceiveResult(Ljava/lang/Object;)V"/> + </class> + <class name="android/service/carrier/CarrierMessagingService$SendMmsResult" since="22"> + <extends name="java/lang/Object"/> + <method name="<init>(I[B)V"/> + <method name="getSendConfPdu()[B"/> + <method name="getSendStatus()I"/> + </class> + <class name="android/service/carrier/CarrierMessagingService$SendMultipartSmsResult" since="22"> + <extends name="java/lang/Object"/> + <method name="<init>(I[I)V"/> + <method name="getMessageRefs()[I"/> + <method name="getSendStatus()I"/> + </class> + <class name="android/service/carrier/CarrierMessagingService$SendSmsResult" since="22"> + <extends name="java/lang/Object"/> + <method name="<init>(II)V"/> + <method name="getMessageRef()I"/> + <method name="getSendStatus()I"/> + </class> + <class name="android/service/carrier/CarrierService" since="23"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="notifyCarrierNetworkChange(Z)V"/> + <method name="onLoadConfig(Landroid/service/carrier/CarrierIdentifier;)Landroid/os/PersistableBundle;"/> + <field name="CARRIER_SERVICE_INTERFACE"/> + </class> + <class name="android/service/carrier/MessagePdu" since="22"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Ljava/util/List;)V"/> + <method name="getPdus()Ljava/util/List;"/> + <field name="CREATOR"/> + </class> + <class name="android/service/chooser/ChooserTarget" since="23"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Ljava/lang/CharSequence;Landroid/graphics/drawable/Icon;FLandroid/content/ComponentName;Landroid/os/Bundle;)V"/> + <method name="getComponentName()Landroid/content/ComponentName;"/> + <method name="getIcon()Landroid/graphics/drawable/Icon;"/> + <method name="getIntentExtras()Landroid/os/Bundle;"/> + <method name="getScore()F"/> + <method name="getTitle()Ljava/lang/CharSequence;"/> + <field name="CREATOR"/> + </class> + <class name="android/service/chooser/ChooserTargetService" since="23"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="onGetChooserTargets(Landroid/content/ComponentName;Landroid/content/IntentFilter;)Ljava/util/List;"/> + <field name="BIND_PERMISSION"/> + <field name="META_DATA_NAME"/> + <field name="SERVICE_INTERFACE"/> + </class> + <class name="android/service/dreams/DreamService" since="17"> + <extends name="android/app/Service"/> + <implements name="android/view/Window$Callback"/> + <method name="<init>()V"/> + <method name="addContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V"/> + <method name="findViewById(I)Landroid/view/View;"/> + <method name="finish()V"/> + <method name="getWindow()Landroid/view/Window;"/> + <method name="getWindowManager()Landroid/view/WindowManager;"/> + <method name="isFullscreen()Z"/> + <method name="isInteractive()Z"/> + <method name="isScreenBright()Z"/> + <method name="onDreamingStarted()V"/> + <method name="onDreamingStopped()V"/> + <method name="onWakeUp()V" since="21"/> + <method name="setContentView(I)V"/> + <method name="setContentView(Landroid/view/View;)V"/> + <method name="setContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V"/> + <method name="setFullscreen(Z)V"/> + <method name="setInteractive(Z)V"/> + <method name="setScreenBright(Z)V"/> + <method name="wakeUp()V" since="21"/> + <field name="DREAM_META_DATA"/> + <field name="SERVICE_INTERFACE"/> + </class> + <class name="android/service/media/CameraPrewarmService" since="23"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="onCooldown(Z)V"/> + <method name="onPrewarm()V"/> + </class> + <class name="android/service/media/MediaBrowserService" since="21"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="getBrowserRootHints()Landroid/os/Bundle;" since="24"/> + <method name="getSessionToken()Landroid/media/session/MediaSession$Token;"/> + <method name="notifyChildrenChanged(Ljava/lang/String;)V"/> + <method name="notifyChildrenChanged(Ljava/lang/String;Landroid/os/Bundle;)V" since="24"/> + <method name="onGetRoot(Ljava/lang/String;ILandroid/os/Bundle;)Landroid/service/media/MediaBrowserService$BrowserRoot;"/> + <method name="onLoadChildren(Ljava/lang/String;Landroid/service/media/MediaBrowserService$Result;)V"/> + <method name="onLoadChildren(Ljava/lang/String;Landroid/service/media/MediaBrowserService$Result;Landroid/os/Bundle;)V" since="24"/> + <method name="onLoadItem(Ljava/lang/String;Landroid/service/media/MediaBrowserService$Result;)V" since="23"/> + <method name="setSessionToken(Landroid/media/session/MediaSession$Token;)V"/> + <field name="SERVICE_INTERFACE"/> + </class> + <class name="android/service/media/MediaBrowserService$BrowserRoot" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;Landroid/os/Bundle;)V"/> + <method name="getExtras()Landroid/os/Bundle;"/> + <method name="getRootId()Ljava/lang/String;"/> + <field name="EXTRA_OFFLINE" since="24"/> + <field name="EXTRA_RECENT" since="24"/> + <field name="EXTRA_SUGGESTED" since="24"/> + </class> + <class name="android/service/media/MediaBrowserService$Result" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/service/media/MediaBrowserService;)V"/> + <method name="detach()V"/> + <method name="sendResult(Ljava/lang/Object;)V"/> + </class> + <class name="android/service/notification/Condition" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/net/Uri;Ljava/lang/String;I)V"/> + <method name="<init>(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;III)V"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="copy()Landroid/service/notification/Condition;"/> + <method name="isValidId(Landroid/net/Uri;Ljava/lang/String;)Z"/> + <method name="newId(Landroid/content/Context;)Landroid/net/Uri$Builder;"/> + <method name="relevanceToString(I)Ljava/lang/String;"/> + <method name="stateToString(I)Ljava/lang/String;"/> + <field name="CREATOR"/> + <field name="FLAG_RELEVANT_ALWAYS"/> + <field name="FLAG_RELEVANT_NOW"/> + <field name="SCHEME"/> + <field name="STATE_ERROR"/> + <field name="STATE_FALSE"/> + <field name="STATE_TRUE"/> + <field name="STATE_UNKNOWN"/> + <field name="flags"/> + <field name="icon"/> + <field name="id"/> + <field name="line1"/> + <field name="line2"/> + <field name="state"/> + <field name="summary"/> + </class> + <class name="android/service/notification/ConditionProviderService" since="24"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="notifyCondition(Landroid/service/notification/Condition;)V"/> + <method name="notifyConditions([Landroid/service/notification/Condition;)V"/> + <method name="onConnected()V"/> + <method name="onRequestConditions(I)V"/> + <method name="onSubscribe(Landroid/net/Uri;)V"/> + <method name="onUnsubscribe(Landroid/net/Uri;)V"/> + <method name="requestRebind(Landroid/content/ComponentName;)V" since="26"/> + <method name="requestUnbind()V" since="26"/> + <field name="EXTRA_RULE_ID"/> + <field name="META_DATA_CONFIGURATION_ACTIVITY"/> + <field name="META_DATA_RULE_INSTANCE_LIMIT"/> + <field name="META_DATA_RULE_TYPE"/> + <field name="SERVICE_INTERFACE"/> + </class> + <class name="android/service/notification/NotificationListenerService" since="18"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="cancelAllNotifications()V"/> + <method name="cancelNotification(Ljava/lang/String;)V" since="21"/> + <method name="cancelNotification(Ljava/lang/String;Ljava/lang/String;I)V" deprecated="21"/> + <method name="cancelNotifications([Ljava/lang/String;)V" since="21"/> + <method name="getActiveNotifications()[Landroid/service/notification/StatusBarNotification;"/> + <method name="getActiveNotifications([Ljava/lang/String;)[Landroid/service/notification/StatusBarNotification;" since="21"/> + <method name="getCurrentInterruptionFilter()I" since="21"/> + <method name="getCurrentListenerHints()I" since="21"/> + <method name="getCurrentRanking()Landroid/service/notification/NotificationListenerService$RankingMap;" since="21"/> + <method name="getNotificationChannelGroups(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List;" since="26"/> + <method name="getNotificationChannels(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List;" since="26"/> + <method name="getSnoozedNotifications()[Landroid/service/notification/StatusBarNotification;" since="26"/> + <method name="onInterruptionFilterChanged(I)V" since="21"/> + <method name="onListenerConnected()V" since="21"/> + <method name="onListenerDisconnected()V" since="24"/> + <method name="onListenerHintsChanged(I)V" since="21"/> + <method name="onNotificationChannelGroupModified(Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V" since="26"/> + <method name="onNotificationChannelModified(Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannel;I)V" since="26"/> + <method name="onNotificationPosted(Landroid/service/notification/StatusBarNotification;)V"/> + <method name="onNotificationPosted(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;)V" since="21"/> + <method name="onNotificationRankingUpdate(Landroid/service/notification/NotificationListenerService$RankingMap;)V" since="21"/> + <method name="onNotificationRemoved(Landroid/service/notification/StatusBarNotification;)V"/> + <method name="onNotificationRemoved(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;)V" since="21"/> + <method name="onNotificationRemoved(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;I)V" since="26"/> + <method name="requestInterruptionFilter(I)V" since="21"/> + <method name="requestListenerHints(I)V" since="21"/> + <method name="requestRebind(Landroid/content/ComponentName;)V" since="24"/> + <method name="requestUnbind()V" since="24"/> + <method name="setNotificationsShown([Ljava/lang/String;)V" since="23"/> + <method name="snoozeNotification(Ljava/lang/String;J)V" since="26"/> + <method name="updateNotificationChannel(Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannel;)V" since="26"/> + <field name="HINT_HOST_DISABLE_CALL_EFFECTS" since="24"/> + <field name="HINT_HOST_DISABLE_EFFECTS" since="21"/> + <field name="HINT_HOST_DISABLE_NOTIFICATION_EFFECTS" since="24"/> + <field name="INTERRUPTION_FILTER_ALARMS" since="23"/> + <field name="INTERRUPTION_FILTER_ALL" since="21"/> + <field name="INTERRUPTION_FILTER_NONE" since="21"/> + <field name="INTERRUPTION_FILTER_PRIORITY" since="21"/> + <field name="INTERRUPTION_FILTER_UNKNOWN" since="23"/> + <field name="NOTIFICATION_CHANNEL_OR_GROUP_ADDED" since="26"/> + <field name="NOTIFICATION_CHANNEL_OR_GROUP_DELETED" since="26"/> + <field name="NOTIFICATION_CHANNEL_OR_GROUP_UPDATED" since="26"/> + <field name="REASON_APP_CANCEL" since="26"/> + <field name="REASON_APP_CANCEL_ALL" since="26"/> + <field name="REASON_CANCEL" since="26"/> + <field name="REASON_CANCEL_ALL" since="26"/> + <field name="REASON_CHANNEL_BANNED" since="26"/> + <field name="REASON_CLICK" since="26"/> + <field name="REASON_ERROR" since="26"/> + <field name="REASON_GROUP_OPTIMIZATION" since="26"/> + <field name="REASON_GROUP_SUMMARY_CANCELED" since="26"/> + <field name="REASON_LISTENER_CANCEL" since="26"/> + <field name="REASON_LISTENER_CANCEL_ALL" since="26"/> + <field name="REASON_PACKAGE_BANNED" since="26"/> + <field name="REASON_PACKAGE_CHANGED" since="26"/> + <field name="REASON_PACKAGE_SUSPENDED" since="26"/> + <field name="REASON_PROFILE_TURNED_OFF" since="26"/> + <field name="REASON_SNOOZED" since="26"/> + <field name="REASON_TIMEOUT" since="26"/> + <field name="REASON_UNAUTOBUNDLED" since="26"/> + <field name="REASON_USER_STOPPED" since="26"/> + <field name="SERVICE_INTERFACE"/> + <field name="SUPPRESSED_EFFECT_SCREEN_OFF" since="24"/> + <field name="SUPPRESSED_EFFECT_SCREEN_ON" since="24"/> + </class> + <class name="android/service/notification/NotificationListenerService$Ranking" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="canShowBadge()Z" since="26"/> + <method name="getChannel()Landroid/app/NotificationChannel;" since="26"/> + <method name="getImportance()I" since="24"/> + <method name="getImportanceExplanation()Ljava/lang/CharSequence;" since="24"/> + <method name="getKey()Ljava/lang/String;"/> + <method name="getOverrideGroupKey()Ljava/lang/String;" since="24"/> + <method name="getRank()I"/> + <method name="getSuppressedVisualEffects()I" since="24"/> + <method name="isAmbient()Z"/> + <method name="matchesInterruptionFilter()Z"/> + </class> + <class name="android/service/notification/NotificationListenerService$RankingMap" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getOrderedKeys()[Ljava/lang/String;"/> + <method name="getRanking(Ljava/lang/String;Landroid/service/notification/NotificationListenerService$Ranking;)Z"/> + <field name="CREATOR"/> + </class> + <class name="android/service/notification/StatusBarNotification" since="18"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;IIILandroid/app/Notification;Landroid/os/UserHandle;J)V" deprecated="26"/> + <method name="clone()Landroid/service/notification/StatusBarNotification;"/> + <method name="getGroupKey()Ljava/lang/String;" since="21"/> + <method name="getId()I"/> + <method name="getKey()Ljava/lang/String;" since="20"/> + <method name="getNotification()Landroid/app/Notification;"/> + <method name="getOverrideGroupKey()Ljava/lang/String;" since="24"/> + <method name="getPackageName()Ljava/lang/String;"/> + <method name="getPostTime()J"/> + <method name="getTag()Ljava/lang/String;"/> + <method name="getUser()Landroid/os/UserHandle;" since="21"/> + <method name="getUserId()I" deprecated="21"/> + <method name="isClearable()Z"/> + <method name="isGroup()Z" since="24"/> + <method name="isOngoing()Z"/> + <method name="setOverrideGroupKey(Ljava/lang/String;)V" since="24"/> + <field name="CREATOR"/> + </class> + <class name="android/service/quicksettings/Tile" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getContentDescription()Ljava/lang/CharSequence;"/> + <method name="getIcon()Landroid/graphics/drawable/Icon;"/> + <method name="getLabel()Ljava/lang/CharSequence;"/> + <method name="getState()I"/> + <method name="setContentDescription(Ljava/lang/CharSequence;)V"/> + <method name="setIcon(Landroid/graphics/drawable/Icon;)V"/> + <method name="setLabel(Ljava/lang/CharSequence;)V"/> + <method name="setState(I)V"/> + <method name="updateTile()V"/> + <field name="CREATOR"/> + <field name="STATE_ACTIVE"/> + <field name="STATE_INACTIVE"/> + <field name="STATE_UNAVAILABLE"/> + </class> + <class name="android/service/quicksettings/TileService" since="24"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="getQsTile()Landroid/service/quicksettings/Tile;"/> + <method name="isLocked()Z"/> + <method name="isSecure()Z"/> + <method name="onClick()V"/> + <method name="onStartListening()V"/> + <method name="onStopListening()V"/> + <method name="onTileAdded()V"/> + <method name="onTileRemoved()V"/> + <method name="requestListeningState(Landroid/content/Context;Landroid/content/ComponentName;)V"/> + <method name="showDialog(Landroid/app/Dialog;)V"/> + <method name="startActivityAndCollapse(Landroid/content/Intent;)V"/> + <method name="unlockAndRun(Ljava/lang/Runnable;)V"/> + <field name="ACTION_QS_TILE"/> + <field name="ACTION_QS_TILE_PREFERENCES"/> + <field name="META_DATA_ACTIVE_TILE"/> + </class> + <class name="android/service/restrictions/RestrictionsReceiver" since="21"> + <extends name="android/content/BroadcastReceiver"/> + <method name="<init>()V"/> + <method name="onRequestPermission(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/PersistableBundle;)V"/> + </class> + <class name="android/service/textservice/SpellCheckerService" since="14"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="createSession()Landroid/service/textservice/SpellCheckerService$Session;"/> + <field name="SERVICE_INTERFACE"/> + </class> + <class name="android/service/textservice/SpellCheckerService$Session" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getBundle()Landroid/os/Bundle;"/> + <method name="getLocale()Ljava/lang/String;"/> + <method name="onCancel()V"/> + <method name="onClose()V" since="15"/> + <method name="onCreate()V"/> + <method name="onGetSentenceSuggestionsMultiple([Landroid/view/textservice/TextInfo;I)[Landroid/view/textservice/SentenceSuggestionsInfo;" since="16"/> + <method name="onGetSuggestions(Landroid/view/textservice/TextInfo;I)Landroid/view/textservice/SuggestionsInfo;"/> + <method name="onGetSuggestionsMultiple([Landroid/view/textservice/TextInfo;IZ)[Landroid/view/textservice/SuggestionsInfo;"/> + </class> + <class name="android/service/voice/AlwaysOnHotwordDetector" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="createEnrollIntent()Landroid/content/Intent;"/> + <method name="createReEnrollIntent()Landroid/content/Intent;"/> + <method name="createUnEnrollIntent()Landroid/content/Intent;"/> + <method name="getSupportedRecognitionModes()I"/> + <method name="startRecognition(I)Z"/> + <method name="stopRecognition()Z"/> + <field name="RECOGNITION_FLAG_ALLOW_MULTIPLE_TRIGGERS"/> + <field name="RECOGNITION_FLAG_CAPTURE_TRIGGER_AUDIO"/> + <field name="RECOGNITION_MODE_USER_IDENTIFICATION"/> + <field name="RECOGNITION_MODE_VOICE_TRIGGER"/> + <field name="STATE_HARDWARE_UNAVAILABLE"/> + <field name="STATE_KEYPHRASE_ENROLLED"/> + <field name="STATE_KEYPHRASE_UNENROLLED"/> + <field name="STATE_KEYPHRASE_UNSUPPORTED"/> + </class> + <class name="android/service/voice/AlwaysOnHotwordDetector$Callback" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onAvailabilityChanged(I)V"/> + <method name="onDetected(Landroid/service/voice/AlwaysOnHotwordDetector$EventPayload;)V"/> + <method name="onError()V"/> + <method name="onRecognitionPaused()V"/> + <method name="onRecognitionResumed()V"/> + </class> + <class name="android/service/voice/AlwaysOnHotwordDetector$EventPayload" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getCaptureAudioFormat()Landroid/media/AudioFormat;"/> + <method name="getTriggerAudio()[B"/> + </class> + <class name="android/service/voice/VoiceInteractionService" since="21"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="createAlwaysOnHotwordDetector(Ljava/lang/String;Ljava/util/Locale;Landroid/service/voice/AlwaysOnHotwordDetector$Callback;)Landroid/service/voice/AlwaysOnHotwordDetector;"/> + <method name="getDisabledShowContext()I" since="23"/> + <method name="isActiveService(Landroid/content/Context;Landroid/content/ComponentName;)Z"/> + <method name="onLaunchVoiceAssistFromKeyguard()V" since="23"/> + <method name="onReady()V"/> + <method name="onShutdown()V"/> + <method name="setDisabledShowContext(I)V" since="23"/> + <method name="showSession(Landroid/os/Bundle;I)V" since="23"/> + <method name="startSession(Landroid/os/Bundle;)V" removed="23"/> + <field name="SERVICE_INTERFACE"/> + <field name="SERVICE_META_DATA"/> + </class> + <class name="android/service/voice/VoiceInteractionSession" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/content/ComponentCallbacks2" since="23"/> + <implements name="android/view/KeyEvent$Callback"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/os/Handler;)V"/> + <method name="closeSystemDialogs()V" since="23"/> + <method name="dump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V" since="23"/> + <method name="finish()V"/> + <method name="getContext()Landroid/content/Context;" since="23"/> + <method name="getDisabledShowContext()I" since="23"/> + <method name="getLayoutInflater()Landroid/view/LayoutInflater;" since="23"/> + <method name="getUserDisabledShowContext()I" since="23"/> + <method name="getWindow()Landroid/app/Dialog;" since="23"/> + <method name="hide()V" since="23"/> + <method name="onAssistStructureFailure(Ljava/lang/Throwable;)V" since="23"/> + <method name="onBackPressed()V" since="23"/> + <method name="onCancelRequest(Landroid/service/voice/VoiceInteractionSession$Request;)V" since="23"/> + <method name="onCloseSystemDialogs()V"/> + <method name="onComputeInsets(Landroid/service/voice/VoiceInteractionSession$Insets;)V" since="23"/> + <method name="onCreate()V" since="23"/> + <method name="onCreate(Landroid/os/Bundle;)V" removed="23"/> + <method name="onCreateContentView()Landroid/view/View;" since="23"/> + <method name="onDestroy()V"/> + <method name="onGetSupportedCommands([Ljava/lang/String;)[Z" since="23"/> + <method name="onHandleAssist(Landroid/os/Bundle;Landroid/app/assist/AssistStructure;Landroid/app/assist/AssistContent;)V" since="23"/> + <method name="onHandleAssistSecondary(Landroid/os/Bundle;Landroid/app/assist/AssistStructure;Landroid/app/assist/AssistContent;II)V" since="24"/> + <method name="onHandleScreenshot(Landroid/graphics/Bitmap;)V" since="23"/> + <method name="onHide()V" since="23"/> + <method name="onLockscreenShown()V" since="23"/> + <method name="onPrepareShow(Landroid/os/Bundle;I)V" since="26"/> + <method name="onRequestAbortVoice(Landroid/service/voice/VoiceInteractionSession$AbortVoiceRequest;)V" since="23"/> + <method name="onRequestCommand(Landroid/service/voice/VoiceInteractionSession$CommandRequest;)V" since="23"/> + <method name="onRequestCompleteVoice(Landroid/service/voice/VoiceInteractionSession$CompleteVoiceRequest;)V" since="23"/> + <method name="onRequestConfirmation(Landroid/service/voice/VoiceInteractionSession$ConfirmationRequest;)V" since="23"/> + <method name="onRequestPickOption(Landroid/service/voice/VoiceInteractionSession$PickOptionRequest;)V" since="23"/> + <method name="onShow(Landroid/os/Bundle;I)V" since="23"/> + <method name="onTaskFinished(Landroid/content/Intent;I)V" since="23"/> + <method name="onTaskStarted(Landroid/content/Intent;I)V" since="23"/> + <method name="setContentView(Landroid/view/View;)V"/> + <method name="setDisabledShowContext(I)V" since="23"/> + <method name="setKeepAwake(Z)V" since="23"/> + <method name="setTheme(I)V" since="23"/> + <method name="setUiEnabled(Z)V" since="26"/> + <method name="show(Landroid/os/Bundle;I)V" since="23"/> + <method name="startAssistantActivity(Landroid/content/Intent;)V" since="26"/> + <method name="startVoiceActivity(Landroid/content/Intent;)V" since="23"/> + <field name="SHOW_SOURCE_ACTIVITY" since="24"/> + <field name="SHOW_SOURCE_APPLICATION" since="23"/> + <field name="SHOW_SOURCE_ASSIST_GESTURE" since="23"/> + <field name="SHOW_WITH_ASSIST" since="23"/> + <field name="SHOW_WITH_SCREENSHOT" since="23"/> + </class> + <class name="android/service/voice/VoiceInteractionSession$AbortVoiceRequest" since="23"> + <extends name="android/service/voice/VoiceInteractionSession$Request"/> + <method name="<init>()V"/> + <method name="getMessage()Ljava/lang/CharSequence;" deprecated="23"/> + <method name="getVoicePrompt()Landroid/app/VoiceInteractor$Prompt;"/> + <method name="sendAbortResult(Landroid/os/Bundle;)V"/> + </class> + <class name="android/service/voice/VoiceInteractionSession$CommandRequest" since="23"> + <extends name="android/service/voice/VoiceInteractionSession$Request"/> + <method name="<init>()V"/> + <method name="getCommand()Ljava/lang/String;"/> + <method name="sendIntermediateResult(Landroid/os/Bundle;)V"/> + <method name="sendResult(Landroid/os/Bundle;)V"/> + </class> + <class name="android/service/voice/VoiceInteractionSession$CompleteVoiceRequest" since="23"> + <extends name="android/service/voice/VoiceInteractionSession$Request"/> + <method name="<init>()V"/> + <method name="getMessage()Ljava/lang/CharSequence;" deprecated="23"/> + <method name="getVoicePrompt()Landroid/app/VoiceInteractor$Prompt;"/> + <method name="sendCompleteResult(Landroid/os/Bundle;)V"/> + </class> + <class name="android/service/voice/VoiceInteractionSession$ConfirmationRequest" since="23"> + <extends name="android/service/voice/VoiceInteractionSession$Request"/> + <method name="<init>()V"/> + <method name="getPrompt()Ljava/lang/CharSequence;" deprecated="23"/> + <method name="getVoicePrompt()Landroid/app/VoiceInteractor$Prompt;"/> + <method name="sendConfirmationResult(ZLandroid/os/Bundle;)V"/> + </class> + <class name="android/service/voice/VoiceInteractionSession$Insets" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="TOUCHABLE_INSETS_CONTENT"/> + <field name="TOUCHABLE_INSETS_FRAME"/> + <field name="TOUCHABLE_INSETS_REGION"/> + <field name="contentInsets"/> + <field name="touchableInsets"/> + <field name="touchableRegion"/> + </class> + <class name="android/service/voice/VoiceInteractionSession$PickOptionRequest" since="23"> + <extends name="android/service/voice/VoiceInteractionSession$Request"/> + <method name="<init>()V"/> + <method name="getOptions()[Landroid/app/VoiceInteractor$PickOptionRequest$Option;"/> + <method name="getPrompt()Ljava/lang/CharSequence;" deprecated="23"/> + <method name="getVoicePrompt()Landroid/app/VoiceInteractor$Prompt;"/> + <method name="sendIntermediatePickOptionResult([Landroid/app/VoiceInteractor$PickOptionRequest$Option;Landroid/os/Bundle;)V"/> + <method name="sendPickOptionResult([Landroid/app/VoiceInteractor$PickOptionRequest$Option;Landroid/os/Bundle;)V"/> + </class> + <class name="android/service/voice/VoiceInteractionSession$Request" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="cancel()V"/> + <method name="getCallingPackage()Ljava/lang/String;"/> + <method name="getCallingUid()I"/> + <method name="getExtras()Landroid/os/Bundle;"/> + <method name="isActive()Z"/> + </class> + <class name="android/service/voice/VoiceInteractionSessionService" since="21"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="onNewSession(Landroid/os/Bundle;)Landroid/service/voice/VoiceInteractionSession;"/> + </class> + <class name="android/service/vr/VrListenerService" since="24"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="isVrModePackageEnabled(Landroid/content/Context;Landroid/content/ComponentName;)Z"/> + <method name="onCurrentVrActivityChanged(Landroid/content/ComponentName;)V"/> + <field name="SERVICE_INTERFACE"/> + </class> + <class name="android/service/wallpaper/WallpaperService" since="7"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="onCreateEngine()Landroid/service/wallpaper/WallpaperService$Engine;"/> + <field name="SERVICE_INTERFACE"/> + <field name="SERVICE_META_DATA"/> + </class> + <class name="android/service/wallpaper/WallpaperService$Engine" since="7"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/service/wallpaper/WallpaperService;)V"/> + <method name="dump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V" since="14"/> + <method name="getDesiredMinimumHeight()I"/> + <method name="getDesiredMinimumWidth()I"/> + <method name="getSurfaceHolder()Landroid/view/SurfaceHolder;"/> + <method name="isPreview()Z"/> + <method name="isVisible()Z"/> + <method name="onApplyWindowInsets(Landroid/view/WindowInsets;)V" since="21"/> + <method name="onCommand(Ljava/lang/String;IIILandroid/os/Bundle;Z)Landroid/os/Bundle;"/> + <method name="onCreate(Landroid/view/SurfaceHolder;)V"/> + <method name="onDesiredSizeChanged(II)V"/> + <method name="onDestroy()V"/> + <method name="onOffsetsChanged(FFFFII)V"/> + <method name="onSurfaceChanged(Landroid/view/SurfaceHolder;III)V"/> + <method name="onSurfaceCreated(Landroid/view/SurfaceHolder;)V"/> + <method name="onSurfaceDestroyed(Landroid/view/SurfaceHolder;)V"/> + <method name="onSurfaceRedrawNeeded(Landroid/view/SurfaceHolder;)V" since="9"/> + <method name="onTouchEvent(Landroid/view/MotionEvent;)V"/> + <method name="onVisibilityChanged(Z)V"/> + <method name="setOffsetNotificationsEnabled(Z)V" since="15"/> + <method name="setTouchEventsEnabled(Z)V"/> + </class> + <class name="android/speech/RecognitionListener" since="8"> + <extends name="java/lang/Object"/> + <method name="onBeginningOfSpeech()V"/> + <method name="onBufferReceived([B)V"/> + <method name="onEndOfSpeech()V"/> + <method name="onError(I)V"/> + <method name="onEvent(ILandroid/os/Bundle;)V"/> + <method name="onPartialResults(Landroid/os/Bundle;)V"/> + <method name="onReadyForSpeech(Landroid/os/Bundle;)V"/> + <method name="onResults(Landroid/os/Bundle;)V"/> + <method name="onRmsChanged(F)V"/> + </class> + <class name="android/speech/RecognitionService" since="8"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="onCancel(Landroid/speech/RecognitionService$Callback;)V"/> + <method name="onStartListening(Landroid/content/Intent;Landroid/speech/RecognitionService$Callback;)V"/> + <method name="onStopListening(Landroid/speech/RecognitionService$Callback;)V"/> + <field name="SERVICE_INTERFACE"/> + <field name="SERVICE_META_DATA"/> + </class> + <class name="android/speech/RecognitionService$Callback" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/speech/RecognitionService;)V"/> + <method name="beginningOfSpeech()V"/> + <method name="bufferReceived([B)V"/> + <method name="endOfSpeech()V"/> + <method name="error(I)V"/> + <method name="getCallingUid()I" since="23"/> + <method name="partialResults(Landroid/os/Bundle;)V"/> + <method name="readyForSpeech(Landroid/os/Bundle;)V"/> + <method name="results(Landroid/os/Bundle;)V"/> + <method name="rmsChanged(F)V"/> + </class> + <class name="android/speech/RecognizerIntent" since="3"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getVoiceDetailsIntent(Landroid/content/Context;)Landroid/content/Intent;" since="8"/> + <field name="ACTION_GET_LANGUAGE_DETAILS" since="8"/> + <field name="ACTION_RECOGNIZE_SPEECH"/> + <field name="ACTION_VOICE_SEARCH_HANDS_FREE" since="16"/> + <field name="ACTION_WEB_SEARCH"/> + <field name="DETAILS_META_DATA" since="8"/> + <field name="EXTRA_CALLING_PACKAGE" since="8"/> + <field name="EXTRA_CONFIDENCE_SCORES" since="14"/> + <field name="EXTRA_LANGUAGE"/> + <field name="EXTRA_LANGUAGE_MODEL"/> + <field name="EXTRA_LANGUAGE_PREFERENCE" since="8"/> + <field name="EXTRA_MAX_RESULTS"/> + <field name="EXTRA_ONLY_RETURN_LANGUAGE_PREFERENCE" since="8"/> + <field name="EXTRA_ORIGIN" since="14"/> + <field name="EXTRA_PARTIAL_RESULTS" since="8"/> + <field name="EXTRA_PREFER_OFFLINE" since="23"/> + <field name="EXTRA_PROMPT"/> + <field name="EXTRA_RESULTS"/> + <field name="EXTRA_RESULTS_PENDINGINTENT"/> + <field name="EXTRA_RESULTS_PENDINGINTENT_BUNDLE"/> + <field name="EXTRA_SECURE" since="16"/> + <field name="EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS" since="8"/> + <field name="EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS" since="8"/> + <field name="EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS" since="8"/> + <field name="EXTRA_SUPPORTED_LANGUAGES" since="8"/> + <field name="EXTRA_WEB_SEARCH_ONLY" since="11"/> + <field name="LANGUAGE_MODEL_FREE_FORM"/> + <field name="LANGUAGE_MODEL_WEB_SEARCH"/> + <field name="RESULT_AUDIO_ERROR"/> + <field name="RESULT_CLIENT_ERROR"/> + <field name="RESULT_NETWORK_ERROR"/> + <field name="RESULT_NO_MATCH"/> + <field name="RESULT_SERVER_ERROR"/> + </class> + <class name="android/speech/RecognizerResultsIntent" since="10"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="ACTION_VOICE_SEARCH_RESULTS"/> + <field name="EXTRA_VOICE_SEARCH_RESULT_HTML"/> + <field name="EXTRA_VOICE_SEARCH_RESULT_HTML_BASE_URLS"/> + <field name="EXTRA_VOICE_SEARCH_RESULT_HTTP_HEADERS"/> + <field name="EXTRA_VOICE_SEARCH_RESULT_STRINGS"/> + <field name="EXTRA_VOICE_SEARCH_RESULT_URLS"/> + <field name="URI_SCHEME_INLINE"/> + </class> + <class name="android/speech/SpeechRecognizer" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="cancel()V"/> + <method name="createSpeechRecognizer(Landroid/content/Context;)Landroid/speech/SpeechRecognizer;"/> + <method name="createSpeechRecognizer(Landroid/content/Context;Landroid/content/ComponentName;)Landroid/speech/SpeechRecognizer;"/> + <method name="destroy()V"/> + <method name="isRecognitionAvailable(Landroid/content/Context;)Z"/> + <method name="setRecognitionListener(Landroid/speech/RecognitionListener;)V"/> + <method name="startListening(Landroid/content/Intent;)V"/> + <method name="stopListening()V"/> + <field name="CONFIDENCE_SCORES" since="14"/> + <field name="ERROR_AUDIO"/> + <field name="ERROR_CLIENT"/> + <field name="ERROR_INSUFFICIENT_PERMISSIONS"/> + <field name="ERROR_NETWORK"/> + <field name="ERROR_NETWORK_TIMEOUT"/> + <field name="ERROR_NO_MATCH"/> + <field name="ERROR_RECOGNIZER_BUSY"/> + <field name="ERROR_SERVER"/> + <field name="ERROR_SPEECH_TIMEOUT"/> + <field name="RESULTS_RECOGNITION"/> + </class> + <class name="android/speech/tts/SynthesisCallback" since="14"> + <extends name="java/lang/Object"/> + <method name="audioAvailable([BII)I"/> + <method name="done()I"/> + <method name="error()V"/> + <method name="error(I)V" since="21"/> + <method name="getMaxBufferSize()I"/> + <method name="hasFinished()Z" since="21"/> + <method name="hasStarted()Z" since="21"/> + <method name="rangeStart(III)V" since="26"/> + <method name="start(III)I"/> + </class> + <class name="android/speech/tts/SynthesisRequest" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/CharSequence;Landroid/os/Bundle;)V" since="21"/> + <method name="<init>(Ljava/lang/String;Landroid/os/Bundle;)V"/> + <method name="getCallerUid()I" since="19"/> + <method name="getCharSequenceText()Ljava/lang/CharSequence;" since="21"/> + <method name="getCountry()Ljava/lang/String;"/> + <method name="getLanguage()Ljava/lang/String;"/> + <method name="getParams()Landroid/os/Bundle;"/> + <method name="getPitch()I"/> + <method name="getSpeechRate()I"/> + <method name="getText()Ljava/lang/String;" deprecated="21"/> + <method name="getVariant()Ljava/lang/String;"/> + <method name="getVoiceName()Ljava/lang/String;" since="21"/> + </class> + <class name="android/speech/tts/TextToSpeech" since="4"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;Landroid/speech/tts/TextToSpeech$OnInitListener;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/speech/tts/TextToSpeech$OnInitListener;Ljava/lang/String;)V" since="14"/> + <method name="addEarcon(Ljava/lang/String;Ljava/io/File;)I" since="21"/> + <method name="addEarcon(Ljava/lang/String;Ljava/lang/String;)I" deprecated="21"/> + <method name="addEarcon(Ljava/lang/String;Ljava/lang/String;I)I"/> + <method name="addSpeech(Ljava/lang/CharSequence;Ljava/io/File;)I" since="21"/> + <method name="addSpeech(Ljava/lang/CharSequence;Ljava/lang/String;I)I" since="21"/> + <method name="addSpeech(Ljava/lang/String;Ljava/lang/String;)I"/> + <method name="addSpeech(Ljava/lang/String;Ljava/lang/String;I)I"/> + <method name="areDefaultsEnforced()Z" since="8" deprecated="21"/> + <method name="getAvailableLanguages()Ljava/util/Set;" since="21"/> + <method name="getDefaultEngine()Ljava/lang/String;" since="8"/> + <method name="getDefaultLanguage()Ljava/util/Locale;" since="18" deprecated="21"/> + <method name="getDefaultVoice()Landroid/speech/tts/Voice;" since="21"/> + <method name="getEngines()Ljava/util/List;" since="14"/> + <method name="getFeatures(Ljava/util/Locale;)Ljava/util/Set;" since="15" deprecated="21"/> + <method name="getLanguage()Ljava/util/Locale;" deprecated="21"/> + <method name="getMaxSpeechInputLength()I" since="18"/> + <method name="getVoice()Landroid/speech/tts/Voice;" since="21"/> + <method name="getVoices()Ljava/util/Set;" since="21"/> + <method name="isLanguageAvailable(Ljava/util/Locale;)I"/> + <method name="isSpeaking()Z"/> + <method name="playEarcon(Ljava/lang/String;ILandroid/os/Bundle;Ljava/lang/String;)I" since="21"/> + <method name="playEarcon(Ljava/lang/String;ILjava/util/HashMap;)I" deprecated="21"/> + <method name="playSilence(JILjava/util/HashMap;)I" deprecated="21"/> + <method name="playSilentUtterance(JILjava/lang/String;)I" since="21"/> + <method name="setAudioAttributes(Landroid/media/AudioAttributes;)I" since="21"/> + <method name="setEngineByPackageName(Ljava/lang/String;)I" since="8" deprecated="16"/> + <method name="setLanguage(Ljava/util/Locale;)I"/> + <method name="setOnUtteranceCompletedListener(Landroid/speech/tts/TextToSpeech$OnUtteranceCompletedListener;)I" deprecated="16"/> + <method name="setOnUtteranceProgressListener(Landroid/speech/tts/UtteranceProgressListener;)I" since="15"/> + <method name="setPitch(F)I"/> + <method name="setSpeechRate(F)I"/> + <method name="setVoice(Landroid/speech/tts/Voice;)I" since="21"/> + <method name="shutdown()V"/> + <method name="speak(Ljava/lang/CharSequence;ILandroid/os/Bundle;Ljava/lang/String;)I" since="21"/> + <method name="speak(Ljava/lang/String;ILjava/util/HashMap;)I" deprecated="21"/> + <method name="stop()I"/> + <method name="synthesizeToFile(Ljava/lang/CharSequence;Landroid/os/Bundle;Ljava/io/File;Ljava/lang/String;)I" since="21"/> + <method name="synthesizeToFile(Ljava/lang/String;Ljava/util/HashMap;Ljava/lang/String;)I" deprecated="21"/> + <field name="ACTION_TTS_QUEUE_PROCESSING_COMPLETED"/> + <field name="ERROR"/> + <field name="ERROR_INVALID_REQUEST" since="21"/> + <field name="ERROR_NETWORK" since="21"/> + <field name="ERROR_NETWORK_TIMEOUT" since="21"/> + <field name="ERROR_NOT_INSTALLED_YET" since="21"/> + <field name="ERROR_OUTPUT" since="21"/> + <field name="ERROR_SERVICE" since="21"/> + <field name="ERROR_SYNTHESIS" since="21"/> + <field name="LANG_AVAILABLE"/> + <field name="LANG_COUNTRY_AVAILABLE"/> + <field name="LANG_COUNTRY_VAR_AVAILABLE"/> + <field name="LANG_MISSING_DATA"/> + <field name="LANG_NOT_SUPPORTED"/> + <field name="QUEUE_ADD"/> + <field name="QUEUE_FLUSH"/> + <field name="STOPPED" since="21"/> + <field name="SUCCESS"/> + </class> + <class name="android/speech/tts/TextToSpeech$Engine" since="4"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/speech/tts/TextToSpeech;)V"/> + <field name="ACTION_CHECK_TTS_DATA"/> + <field name="ACTION_GET_SAMPLE_TEXT" since="18"/> + <field name="ACTION_INSTALL_TTS_DATA"/> + <field name="ACTION_TTS_DATA_INSTALLED"/> + <field name="CHECK_VOICE_DATA_BAD_DATA" deprecated="18"/> + <field name="CHECK_VOICE_DATA_FAIL"/> + <field name="CHECK_VOICE_DATA_MISSING_DATA" deprecated="18"/> + <field name="CHECK_VOICE_DATA_MISSING_VOLUME" deprecated="18"/> + <field name="CHECK_VOICE_DATA_PASS"/> + <field name="DEFAULT_STREAM"/> + <field name="EXTRA_AVAILABLE_VOICES" since="8"/> + <field name="EXTRA_CHECK_VOICE_DATA_FOR" since="8" deprecated="18"/> + <field name="EXTRA_SAMPLE_TEXT" since="18"/> + <field name="EXTRA_TTS_DATA_INSTALLED" deprecated="18"/> + <field name="EXTRA_UNAVAILABLE_VOICES" since="8"/> + <field name="EXTRA_VOICE_DATA_FILES" deprecated="18"/> + <field name="EXTRA_VOICE_DATA_FILES_INFO" deprecated="18"/> + <field name="EXTRA_VOICE_DATA_ROOT_DIRECTORY" deprecated="18"/> + <field name="INTENT_ACTION_TTS_SERVICE" since="14"/> + <field name="KEY_FEATURE_EMBEDDED_SYNTHESIS" since="15" deprecated="21"/> + <field name="KEY_FEATURE_NETWORK_RETRIES_COUNT" since="21"/> + <field name="KEY_FEATURE_NETWORK_SYNTHESIS" since="15" deprecated="21"/> + <field name="KEY_FEATURE_NETWORK_TIMEOUT_MS" since="21"/> + <field name="KEY_FEATURE_NOT_INSTALLED" since="21"/> + <field name="KEY_PARAM_PAN" since="11"/> + <field name="KEY_PARAM_SESSION_ID" since="21"/> + <field name="KEY_PARAM_STREAM"/> + <field name="KEY_PARAM_UTTERANCE_ID"/> + <field name="KEY_PARAM_VOLUME" since="11"/> + <field name="SERVICE_META_DATA" since="14"/> + </class> + <class name="android/speech/tts/TextToSpeech$EngineInfo" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="icon"/> + <field name="label"/> + <field name="name"/> + </class> + <class name="android/speech/tts/TextToSpeech$OnInitListener" since="4"> + <extends name="java/lang/Object"/> + <method name="onInit(I)V"/> + </class> + <class name="android/speech/tts/TextToSpeech$OnUtteranceCompletedListener" since="4" deprecated="18"> + <extends name="java/lang/Object"/> + <method name="onUtteranceCompleted(Ljava/lang/String;)V"/> + </class> + <class name="android/speech/tts/TextToSpeechService" since="14"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="onGetDefaultVoiceNameFor(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" since="21"/> + <method name="onGetFeaturesForLanguage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Set;" since="15"/> + <method name="onGetLanguage()[Ljava/lang/String;"/> + <method name="onGetVoices()Ljava/util/List;" since="21"/> + <method name="onIsLanguageAvailable(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I"/> + <method name="onIsValidVoiceName(Ljava/lang/String;)I" since="21"/> + <method name="onLoadLanguage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I"/> + <method name="onLoadVoice(Ljava/lang/String;)I" since="21"/> + <method name="onStop()V"/> + <method name="onSynthesizeText(Landroid/speech/tts/SynthesisRequest;Landroid/speech/tts/SynthesisCallback;)V"/> + </class> + <class name="android/speech/tts/UtteranceProgressListener" since="15"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onAudioAvailable(Ljava/lang/String;[B)V" since="24"/> + <method name="onBeginSynthesis(Ljava/lang/String;III)V" since="24"/> + <method name="onDone(Ljava/lang/String;)V"/> + <method name="onError(Ljava/lang/String;)V" deprecated="21"/> + <method name="onError(Ljava/lang/String;I)V" since="21"/> + <method name="onRangeStart(Ljava/lang/String;III)V" since="26"/> + <method name="onStart(Ljava/lang/String;)V"/> + <method name="onStop(Ljava/lang/String;Z)V" since="23"/> + </class> + <class name="android/speech/tts/Voice" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Ljava/lang/String;Ljava/util/Locale;IIZLjava/util/Set;)V"/> + <method name="getFeatures()Ljava/util/Set;"/> + <method name="getLatency()I"/> + <method name="getLocale()Ljava/util/Locale;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getQuality()I"/> + <method name="isNetworkConnectionRequired()Z"/> + <field name="CREATOR"/> + <field name="LATENCY_HIGH"/> + <field name="LATENCY_LOW"/> + <field name="LATENCY_NORMAL"/> + <field name="LATENCY_VERY_HIGH"/> + <field name="LATENCY_VERY_LOW"/> + <field name="QUALITY_HIGH"/> + <field name="QUALITY_LOW"/> + <field name="QUALITY_NORMAL"/> + <field name="QUALITY_VERY_HIGH"/> + <field name="QUALITY_VERY_LOW"/> + </class> + <class name="android/system/ErrnoException" since="21"> + <extends name="java/lang/Exception"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="<init>(Ljava/lang/String;ILjava/lang/Throwable;)V"/> + <field name="errno"/> + </class> + <class name="android/system/Int32Ref" since="27"> + <extends name="java/lang/Object"/> + <method name="<init>(I)V"/> + <field name="value"/> + </class> + <class name="android/system/Int64Ref" since="27"> + <extends name="java/lang/Object"/> + <method name="<init>(J)V"/> + <field name="value"/> + </class> + <class name="android/system/Os" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="accept(Ljava/io/FileDescriptor;Ljava/net/InetSocketAddress;)Ljava/io/FileDescriptor;"/> + <method name="access(Ljava/lang/String;I)Z"/> + <method name="bind(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V"/> + <method name="chmod(Ljava/lang/String;I)V"/> + <method name="chown(Ljava/lang/String;II)V"/> + <method name="close(Ljava/io/FileDescriptor;)V"/> + <method name="connect(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V"/> + <method name="dup(Ljava/io/FileDescriptor;)Ljava/io/FileDescriptor;"/> + <method name="dup2(Ljava/io/FileDescriptor;I)Ljava/io/FileDescriptor;"/> + <method name="environ()[Ljava/lang/String;"/> + <method name="execv(Ljava/lang/String;[Ljava/lang/String;)V"/> + <method name="execve(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)V"/> + <method name="fchmod(Ljava/io/FileDescriptor;I)V"/> + <method name="fchown(Ljava/io/FileDescriptor;II)V"/> + <method name="fdatasync(Ljava/io/FileDescriptor;)V"/> + <method name="fstat(Ljava/io/FileDescriptor;)Landroid/system/StructStat;"/> + <method name="fstatvfs(Ljava/io/FileDescriptor;)Landroid/system/StructStatVfs;"/> + <method name="fsync(Ljava/io/FileDescriptor;)V"/> + <method name="ftruncate(Ljava/io/FileDescriptor;J)V"/> + <method name="gai_strerror(I)Ljava/lang/String;"/> + <method name="getegid()I"/> + <method name="getenv(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="geteuid()I"/> + <method name="getgid()I"/> + <method name="getpeername(Ljava/io/FileDescriptor;)Ljava/net/SocketAddress;"/> + <method name="getpid()I"/> + <method name="getppid()I"/> + <method name="getsockname(Ljava/io/FileDescriptor;)Ljava/net/SocketAddress;"/> + <method name="gettid()I"/> + <method name="getuid()I"/> + <method name="getxattr(Ljava/lang/String;Ljava/lang/String;)[B" since="26"/> + <method name="if_indextoname(I)Ljava/lang/String;"/> + <method name="if_nametoindex(Ljava/lang/String;)I" since="26"/> + <method name="inet_pton(ILjava/lang/String;)Ljava/net/InetAddress;"/> + <method name="isatty(Ljava/io/FileDescriptor;)Z"/> + <method name="kill(II)V"/> + <method name="lchown(Ljava/lang/String;II)V"/> + <method name="link(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="listen(Ljava/io/FileDescriptor;I)V"/> + <method name="listxattr(Ljava/lang/String;)[Ljava/lang/String;" since="26"/> + <method name="lseek(Ljava/io/FileDescriptor;JI)J"/> + <method name="lstat(Ljava/lang/String;)Landroid/system/StructStat;"/> + <method name="mincore(JJ[B)V"/> + <method name="mkdir(Ljava/lang/String;I)V"/> + <method name="mkfifo(Ljava/lang/String;I)V"/> + <method name="mlock(JJ)V"/> + <method name="mmap(JJIILjava/io/FileDescriptor;J)J"/> + <method name="msync(JJI)V"/> + <method name="munlock(JJ)V"/> + <method name="munmap(JJ)V"/> + <method name="open(Ljava/lang/String;II)Ljava/io/FileDescriptor;"/> + <method name="pipe()[Ljava/io/FileDescriptor;"/> + <method name="poll([Landroid/system/StructPollfd;I)I"/> + <method name="posix_fallocate(Ljava/io/FileDescriptor;JJ)V"/> + <method name="prctl(IJJJJ)I"/> + <method name="pread(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;J)I"/> + <method name="pread(Ljava/io/FileDescriptor;[BIIJ)I"/> + <method name="pwrite(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;J)I"/> + <method name="pwrite(Ljava/io/FileDescriptor;[BIIJ)I"/> + <method name="read(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;)I"/> + <method name="read(Ljava/io/FileDescriptor;[BII)I"/> + <method name="readlink(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="readv(Ljava/io/FileDescriptor;[Ljava/lang/Object;[I[I)I"/> + <method name="recvfrom(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;ILjava/net/InetSocketAddress;)I"/> + <method name="recvfrom(Ljava/io/FileDescriptor;[BIIILjava/net/InetSocketAddress;)I"/> + <method name="remove(Ljava/lang/String;)V"/> + <method name="removexattr(Ljava/lang/String;Ljava/lang/String;)V" since="26"/> + <method name="rename(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="sendfile(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Landroid/system/Int64Ref;J)J" since="27"/> + <method name="sendfile(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Landroid/util/MutableLong;J)J" deprecated="27"/> + <method name="sendto(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;ILjava/net/InetAddress;I)I"/> + <method name="sendto(Ljava/io/FileDescriptor;[BIIILjava/net/InetAddress;I)I"/> + <method name="setegid(I)V"/> + <method name="setenv(Ljava/lang/String;Ljava/lang/String;Z)V"/> + <method name="seteuid(I)V"/> + <method name="setgid(I)V"/> + <method name="setsid()I"/> + <method name="setsockoptInt(Ljava/io/FileDescriptor;III)V" since="26"/> + <method name="setuid(I)V"/> + <method name="setxattr(Ljava/lang/String;Ljava/lang/String;[BI)V" since="26"/> + <method name="shutdown(Ljava/io/FileDescriptor;I)V"/> + <method name="socket(III)Ljava/io/FileDescriptor;"/> + <method name="socketpair(IIILjava/io/FileDescriptor;Ljava/io/FileDescriptor;)V"/> + <method name="stat(Ljava/lang/String;)Landroid/system/StructStat;"/> + <method name="statvfs(Ljava/lang/String;)Landroid/system/StructStatVfs;"/> + <method name="strerror(I)Ljava/lang/String;"/> + <method name="strsignal(I)Ljava/lang/String;"/> + <method name="symlink(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="sysconf(I)J"/> + <method name="tcdrain(Ljava/io/FileDescriptor;)V"/> + <method name="tcsendbreak(Ljava/io/FileDescriptor;I)V"/> + <method name="umask(I)I"/> + <method name="uname()Landroid/system/StructUtsname;"/> + <method name="unsetenv(Ljava/lang/String;)V"/> + <method name="waitpid(ILandroid/system/Int32Ref;I)I" since="27"/> + <method name="waitpid(ILandroid/util/MutableInt;I)I" deprecated="27"/> + <method name="write(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;)I"/> + <method name="write(Ljava/io/FileDescriptor;[BII)I"/> + <method name="writev(Ljava/io/FileDescriptor;[Ljava/lang/Object;[I[I)I"/> + </class> + <class name="android/system/OsConstants" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="S_ISBLK(I)Z"/> + <method name="S_ISCHR(I)Z"/> + <method name="S_ISDIR(I)Z"/> + <method name="S_ISFIFO(I)Z"/> + <method name="S_ISLNK(I)Z"/> + <method name="S_ISREG(I)Z"/> + <method name="S_ISSOCK(I)Z"/> + <method name="WCOREDUMP(I)Z"/> + <method name="WEXITSTATUS(I)I"/> + <method name="WIFEXITED(I)Z"/> + <method name="WIFSIGNALED(I)Z"/> + <method name="WIFSTOPPED(I)Z"/> + <method name="WSTOPSIG(I)I"/> + <method name="WTERMSIG(I)I"/> + <method name="errnoName(I)Ljava/lang/String;"/> + <method name="gaiName(I)Ljava/lang/String;"/> + <field name="AF_INET"/> + <field name="AF_INET6"/> + <field name="AF_UNIX"/> + <field name="AF_UNSPEC"/> + <field name="AI_ADDRCONFIG"/> + <field name="AI_ALL"/> + <field name="AI_CANONNAME"/> + <field name="AI_NUMERICHOST"/> + <field name="AI_NUMERICSERV"/> + <field name="AI_PASSIVE"/> + <field name="AI_V4MAPPED"/> + <field name="CAP_AUDIT_CONTROL"/> + <field name="CAP_AUDIT_WRITE"/> + <field name="CAP_BLOCK_SUSPEND"/> + <field name="CAP_CHOWN"/> + <field name="CAP_DAC_OVERRIDE"/> + <field name="CAP_DAC_READ_SEARCH"/> + <field name="CAP_FOWNER"/> + <field name="CAP_FSETID"/> + <field name="CAP_IPC_LOCK"/> + <field name="CAP_IPC_OWNER"/> + <field name="CAP_KILL"/> + <field name="CAP_LAST_CAP"/> + <field name="CAP_LEASE"/> + <field name="CAP_LINUX_IMMUTABLE"/> + <field name="CAP_MAC_ADMIN"/> + <field name="CAP_MAC_OVERRIDE"/> + <field name="CAP_MKNOD"/> + <field name="CAP_NET_ADMIN"/> + <field name="CAP_NET_BIND_SERVICE"/> + <field name="CAP_NET_BROADCAST"/> + <field name="CAP_NET_RAW"/> + <field name="CAP_SETFCAP"/> + <field name="CAP_SETGID"/> + <field name="CAP_SETPCAP"/> + <field name="CAP_SETUID"/> + <field name="CAP_SYSLOG"/> + <field name="CAP_SYS_ADMIN"/> + <field name="CAP_SYS_BOOT"/> + <field name="CAP_SYS_CHROOT"/> + <field name="CAP_SYS_MODULE"/> + <field name="CAP_SYS_NICE"/> + <field name="CAP_SYS_PACCT"/> + <field name="CAP_SYS_PTRACE"/> + <field name="CAP_SYS_RAWIO"/> + <field name="CAP_SYS_RESOURCE"/> + <field name="CAP_SYS_TIME"/> + <field name="CAP_SYS_TTY_CONFIG"/> + <field name="CAP_WAKE_ALARM"/> + <field name="E2BIG"/> + <field name="EACCES"/> + <field name="EADDRINUSE"/> + <field name="EADDRNOTAVAIL"/> + <field name="EAFNOSUPPORT"/> + <field name="EAGAIN"/> + <field name="EAI_AGAIN"/> + <field name="EAI_BADFLAGS"/> + <field name="EAI_FAIL"/> + <field name="EAI_FAMILY"/> + <field name="EAI_MEMORY"/> + <field name="EAI_NODATA"/> + <field name="EAI_NONAME"/> + <field name="EAI_OVERFLOW"/> + <field name="EAI_SERVICE"/> + <field name="EAI_SOCKTYPE"/> + <field name="EAI_SYSTEM"/> + <field name="EALREADY"/> + <field name="EBADF"/> + <field name="EBADMSG"/> + <field name="EBUSY"/> + <field name="ECANCELED"/> + <field name="ECHILD"/> + <field name="ECONNABORTED"/> + <field name="ECONNREFUSED"/> + <field name="ECONNRESET"/> + <field name="EDEADLK"/> + <field name="EDESTADDRREQ"/> + <field name="EDOM"/> + <field name="EDQUOT"/> + <field name="EEXIST"/> + <field name="EFAULT"/> + <field name="EFBIG"/> + <field name="EHOSTUNREACH"/> + <field name="EIDRM"/> + <field name="EILSEQ"/> + <field name="EINPROGRESS"/> + <field name="EINTR"/> + <field name="EINVAL"/> + <field name="EIO"/> + <field name="EISCONN"/> + <field name="EISDIR"/> + <field name="ELOOP"/> + <field name="EMFILE"/> + <field name="EMLINK"/> + <field name="EMSGSIZE"/> + <field name="EMULTIHOP"/> + <field name="ENAMETOOLONG"/> + <field name="ENETDOWN"/> + <field name="ENETRESET"/> + <field name="ENETUNREACH"/> + <field name="ENFILE"/> + <field name="ENOBUFS"/> + <field name="ENODATA"/> + <field name="ENODEV"/> + <field name="ENOENT"/> + <field name="ENOEXEC"/> + <field name="ENOLCK"/> + <field name="ENOLINK"/> + <field name="ENOMEM"/> + <field name="ENOMSG"/> + <field name="ENOPROTOOPT"/> + <field name="ENOSPC"/> + <field name="ENOSR"/> + <field name="ENOSTR"/> + <field name="ENOSYS"/> + <field name="ENOTCONN"/> + <field name="ENOTDIR"/> + <field name="ENOTEMPTY"/> + <field name="ENOTSOCK"/> + <field name="ENOTSUP"/> + <field name="ENOTTY"/> + <field name="ENXIO"/> + <field name="EOPNOTSUPP"/> + <field name="EOVERFLOW"/> + <field name="EPERM"/> + <field name="EPIPE"/> + <field name="EPROTO"/> + <field name="EPROTONOSUPPORT"/> + <field name="EPROTOTYPE"/> + <field name="ERANGE"/> + <field name="EROFS"/> + <field name="ESPIPE"/> + <field name="ESRCH"/> + <field name="ESTALE"/> + <field name="ETIME"/> + <field name="ETIMEDOUT"/> + <field name="ETXTBSY"/> + <field name="EXDEV"/> + <field name="EXIT_FAILURE"/> + <field name="EXIT_SUCCESS"/> + <field name="FD_CLOEXEC"/> + <field name="FIONREAD"/> + <field name="F_DUPFD"/> + <field name="F_DUPFD_CLOEXEC" since="27"/> + <field name="F_GETFD"/> + <field name="F_GETFL"/> + <field name="F_GETLK"/> + <field name="F_GETLK64"/> + <field name="F_GETOWN"/> + <field name="F_OK"/> + <field name="F_RDLCK"/> + <field name="F_SETFD"/> + <field name="F_SETFL"/> + <field name="F_SETLK"/> + <field name="F_SETLK64"/> + <field name="F_SETLKW"/> + <field name="F_SETLKW64"/> + <field name="F_SETOWN"/> + <field name="F_UNLCK"/> + <field name="F_WRLCK"/> + <field name="IFA_F_DADFAILED"/> + <field name="IFA_F_DEPRECATED"/> + <field name="IFA_F_HOMEADDRESS"/> + <field name="IFA_F_NODAD"/> + <field name="IFA_F_OPTIMISTIC"/> + <field name="IFA_F_PERMANENT"/> + <field name="IFA_F_SECONDARY"/> + <field name="IFA_F_TEMPORARY"/> + <field name="IFA_F_TENTATIVE"/> + <field name="IFF_ALLMULTI"/> + <field name="IFF_AUTOMEDIA"/> + <field name="IFF_BROADCAST"/> + <field name="IFF_DEBUG"/> + <field name="IFF_DYNAMIC"/> + <field name="IFF_LOOPBACK"/> + <field name="IFF_MASTER"/> + <field name="IFF_MULTICAST"/> + <field name="IFF_NOARP"/> + <field name="IFF_NOTRAILERS"/> + <field name="IFF_POINTOPOINT"/> + <field name="IFF_PORTSEL"/> + <field name="IFF_PROMISC"/> + <field name="IFF_RUNNING"/> + <field name="IFF_SLAVE"/> + <field name="IFF_UP"/> + <field name="IPPROTO_ICMP"/> + <field name="IPPROTO_ICMPV6"/> + <field name="IPPROTO_IP"/> + <field name="IPPROTO_IPV6"/> + <field name="IPPROTO_RAW"/> + <field name="IPPROTO_TCP"/> + <field name="IPPROTO_UDP"/> + <field name="IPV6_CHECKSUM"/> + <field name="IPV6_MULTICAST_HOPS"/> + <field name="IPV6_MULTICAST_IF"/> + <field name="IPV6_MULTICAST_LOOP"/> + <field name="IPV6_RECVDSTOPTS"/> + <field name="IPV6_RECVHOPLIMIT"/> + <field name="IPV6_RECVHOPOPTS"/> + <field name="IPV6_RECVPKTINFO"/> + <field name="IPV6_RECVRTHDR"/> + <field name="IPV6_RECVTCLASS"/> + <field name="IPV6_TCLASS"/> + <field name="IPV6_UNICAST_HOPS"/> + <field name="IPV6_V6ONLY"/> + <field name="IP_MULTICAST_IF"/> + <field name="IP_MULTICAST_LOOP"/> + <field name="IP_MULTICAST_TTL"/> + <field name="IP_TOS"/> + <field name="IP_TTL"/> + <field name="MAP_FIXED"/> + <field name="MAP_PRIVATE"/> + <field name="MAP_SHARED"/> + <field name="MCAST_BLOCK_SOURCE"/> + <field name="MCAST_JOIN_GROUP"/> + <field name="MCAST_JOIN_SOURCE_GROUP"/> + <field name="MCAST_LEAVE_GROUP"/> + <field name="MCAST_LEAVE_SOURCE_GROUP"/> + <field name="MCAST_UNBLOCK_SOURCE"/> + <field name="MCL_CURRENT"/> + <field name="MCL_FUTURE"/> + <field name="MSG_CTRUNC"/> + <field name="MSG_DONTROUTE"/> + <field name="MSG_EOR"/> + <field name="MSG_OOB"/> + <field name="MSG_PEEK"/> + <field name="MSG_TRUNC"/> + <field name="MSG_WAITALL"/> + <field name="MS_ASYNC"/> + <field name="MS_INVALIDATE"/> + <field name="MS_SYNC"/> + <field name="NI_DGRAM"/> + <field name="NI_NAMEREQD"/> + <field name="NI_NOFQDN"/> + <field name="NI_NUMERICHOST"/> + <field name="NI_NUMERICSERV"/> + <field name="O_ACCMODE"/> + <field name="O_APPEND"/> + <field name="O_CLOEXEC" since="27"/> + <field name="O_CREAT"/> + <field name="O_DSYNC" since="27"/> + <field name="O_EXCL"/> + <field name="O_NOCTTY"/> + <field name="O_NOFOLLOW"/> + <field name="O_NONBLOCK"/> + <field name="O_RDONLY"/> + <field name="O_RDWR"/> + <field name="O_SYNC"/> + <field name="O_TRUNC"/> + <field name="O_WRONLY"/> + <field name="POLLERR"/> + <field name="POLLHUP"/> + <field name="POLLIN"/> + <field name="POLLNVAL"/> + <field name="POLLOUT"/> + <field name="POLLPRI"/> + <field name="POLLRDBAND"/> + <field name="POLLRDNORM"/> + <field name="POLLWRBAND"/> + <field name="POLLWRNORM"/> + <field name="PROT_EXEC"/> + <field name="PROT_NONE"/> + <field name="PROT_READ"/> + <field name="PROT_WRITE"/> + <field name="PR_GET_DUMPABLE"/> + <field name="PR_SET_DUMPABLE"/> + <field name="PR_SET_NO_NEW_PRIVS"/> + <field name="RT_SCOPE_HOST"/> + <field name="RT_SCOPE_LINK"/> + <field name="RT_SCOPE_NOWHERE"/> + <field name="RT_SCOPE_SITE"/> + <field name="RT_SCOPE_UNIVERSE"/> + <field name="R_OK"/> + <field name="SEEK_CUR"/> + <field name="SEEK_END"/> + <field name="SEEK_SET"/> + <field name="SHUT_RD"/> + <field name="SHUT_RDWR"/> + <field name="SHUT_WR"/> + <field name="SIGABRT"/> + <field name="SIGALRM"/> + <field name="SIGBUS"/> + <field name="SIGCHLD"/> + <field name="SIGCONT"/> + <field name="SIGFPE"/> + <field name="SIGHUP"/> + <field name="SIGILL"/> + <field name="SIGINT"/> + <field name="SIGIO"/> + <field name="SIGKILL"/> + <field name="SIGPIPE"/> + <field name="SIGPROF"/> + <field name="SIGPWR"/> + <field name="SIGQUIT"/> + <field name="SIGRTMAX"/> + <field name="SIGRTMIN"/> + <field name="SIGSEGV"/> + <field name="SIGSTKFLT"/> + <field name="SIGSTOP"/> + <field name="SIGSYS"/> + <field name="SIGTERM"/> + <field name="SIGTRAP"/> + <field name="SIGTSTP"/> + <field name="SIGTTIN"/> + <field name="SIGTTOU"/> + <field name="SIGURG"/> + <field name="SIGUSR1"/> + <field name="SIGUSR2"/> + <field name="SIGVTALRM"/> + <field name="SIGWINCH"/> + <field name="SIGXCPU"/> + <field name="SIGXFSZ"/> + <field name="SIOCGIFADDR"/> + <field name="SIOCGIFBRDADDR"/> + <field name="SIOCGIFDSTADDR"/> + <field name="SIOCGIFNETMASK"/> + <field name="SOCK_DGRAM"/> + <field name="SOCK_RAW"/> + <field name="SOCK_SEQPACKET"/> + <field name="SOCK_STREAM"/> + <field name="SOL_SOCKET"/> + <field name="SO_BINDTODEVICE"/> + <field name="SO_BROADCAST"/> + <field name="SO_DEBUG"/> + <field name="SO_DONTROUTE"/> + <field name="SO_ERROR"/> + <field name="SO_KEEPALIVE"/> + <field name="SO_LINGER"/> + <field name="SO_OOBINLINE"/> + <field name="SO_PASSCRED"/> + <field name="SO_PEERCRED"/> + <field name="SO_RCVBUF"/> + <field name="SO_RCVLOWAT"/> + <field name="SO_RCVTIMEO"/> + <field name="SO_REUSEADDR"/> + <field name="SO_SNDBUF"/> + <field name="SO_SNDLOWAT"/> + <field name="SO_SNDTIMEO"/> + <field name="SO_TYPE"/> + <field name="STDERR_FILENO"/> + <field name="STDIN_FILENO"/> + <field name="STDOUT_FILENO"/> + <field name="ST_MANDLOCK" since="23"/> + <field name="ST_NOATIME" since="23"/> + <field name="ST_NODEV" since="23"/> + <field name="ST_NODIRATIME" since="23"/> + <field name="ST_NOEXEC" since="23"/> + <field name="ST_NOSUID" since="23"/> + <field name="ST_RDONLY" since="23"/> + <field name="ST_RELATIME" since="23"/> + <field name="ST_SYNCHRONOUS" since="23"/> + <field name="S_IFBLK"/> + <field name="S_IFCHR"/> + <field name="S_IFDIR"/> + <field name="S_IFIFO"/> + <field name="S_IFLNK"/> + <field name="S_IFMT"/> + <field name="S_IFREG"/> + <field name="S_IFSOCK"/> + <field name="S_IRGRP"/> + <field name="S_IROTH"/> + <field name="S_IRUSR"/> + <field name="S_IRWXG"/> + <field name="S_IRWXO"/> + <field name="S_IRWXU"/> + <field name="S_ISGID"/> + <field name="S_ISUID"/> + <field name="S_ISVTX"/> + <field name="S_IWGRP"/> + <field name="S_IWOTH"/> + <field name="S_IWUSR"/> + <field name="S_IXGRP"/> + <field name="S_IXOTH"/> + <field name="S_IXUSR"/> + <field name="TCP_NODELAY"/> + <field name="TCP_USER_TIMEOUT" since="26"/> + <field name="WCONTINUED"/> + <field name="WEXITED"/> + <field name="WNOHANG"/> + <field name="WNOWAIT"/> + <field name="WSTOPPED"/> + <field name="WUNTRACED"/> + <field name="W_OK"/> + <field name="X_OK"/> + <field name="_SC_2_CHAR_TERM"/> + <field name="_SC_2_C_BIND"/> + <field name="_SC_2_C_DEV"/> + <field name="_SC_2_C_VERSION"/> + <field name="_SC_2_FORT_DEV"/> + <field name="_SC_2_FORT_RUN"/> + <field name="_SC_2_LOCALEDEF"/> + <field name="_SC_2_SW_DEV"/> + <field name="_SC_2_UPE"/> + <field name="_SC_2_VERSION"/> + <field name="_SC_AIO_LISTIO_MAX"/> + <field name="_SC_AIO_MAX"/> + <field name="_SC_AIO_PRIO_DELTA_MAX"/> + <field name="_SC_ARG_MAX"/> + <field name="_SC_ASYNCHRONOUS_IO"/> + <field name="_SC_ATEXIT_MAX"/> + <field name="_SC_AVPHYS_PAGES"/> + <field name="_SC_BC_BASE_MAX"/> + <field name="_SC_BC_DIM_MAX"/> + <field name="_SC_BC_SCALE_MAX"/> + <field name="_SC_BC_STRING_MAX"/> + <field name="_SC_CHILD_MAX"/> + <field name="_SC_CLK_TCK"/> + <field name="_SC_COLL_WEIGHTS_MAX"/> + <field name="_SC_DELAYTIMER_MAX"/> + <field name="_SC_EXPR_NEST_MAX"/> + <field name="_SC_FSYNC"/> + <field name="_SC_GETGR_R_SIZE_MAX"/> + <field name="_SC_GETPW_R_SIZE_MAX"/> + <field name="_SC_IOV_MAX"/> + <field name="_SC_JOB_CONTROL"/> + <field name="_SC_LINE_MAX"/> + <field name="_SC_LOGIN_NAME_MAX"/> + <field name="_SC_MAPPED_FILES"/> + <field name="_SC_MEMLOCK"/> + <field name="_SC_MEMLOCK_RANGE"/> + <field name="_SC_MEMORY_PROTECTION"/> + <field name="_SC_MESSAGE_PASSING"/> + <field name="_SC_MQ_OPEN_MAX"/> + <field name="_SC_MQ_PRIO_MAX"/> + <field name="_SC_NGROUPS_MAX"/> + <field name="_SC_NPROCESSORS_CONF"/> + <field name="_SC_NPROCESSORS_ONLN"/> + <field name="_SC_OPEN_MAX"/> + <field name="_SC_PAGESIZE"/> + <field name="_SC_PAGE_SIZE"/> + <field name="_SC_PASS_MAX"/> + <field name="_SC_PHYS_PAGES"/> + <field name="_SC_PRIORITIZED_IO"/> + <field name="_SC_PRIORITY_SCHEDULING"/> + <field name="_SC_REALTIME_SIGNALS"/> + <field name="_SC_RE_DUP_MAX"/> + <field name="_SC_RTSIG_MAX"/> + <field name="_SC_SAVED_IDS"/> + <field name="_SC_SEMAPHORES"/> + <field name="_SC_SEM_NSEMS_MAX"/> + <field name="_SC_SEM_VALUE_MAX"/> + <field name="_SC_SHARED_MEMORY_OBJECTS"/> + <field name="_SC_SIGQUEUE_MAX"/> + <field name="_SC_STREAM_MAX"/> + <field name="_SC_SYNCHRONIZED_IO"/> + <field name="_SC_THREADS"/> + <field name="_SC_THREAD_ATTR_STACKADDR"/> + <field name="_SC_THREAD_ATTR_STACKSIZE"/> + <field name="_SC_THREAD_DESTRUCTOR_ITERATIONS"/> + <field name="_SC_THREAD_KEYS_MAX"/> + <field name="_SC_THREAD_PRIORITY_SCHEDULING"/> + <field name="_SC_THREAD_PRIO_INHERIT"/> + <field name="_SC_THREAD_PRIO_PROTECT"/> + <field name="_SC_THREAD_SAFE_FUNCTIONS"/> + <field name="_SC_THREAD_STACK_MIN"/> + <field name="_SC_THREAD_THREADS_MAX"/> + <field name="_SC_TIMERS"/> + <field name="_SC_TIMER_MAX"/> + <field name="_SC_TTY_NAME_MAX"/> + <field name="_SC_TZNAME_MAX"/> + <field name="_SC_VERSION"/> + <field name="_SC_XBS5_ILP32_OFF32"/> + <field name="_SC_XBS5_ILP32_OFFBIG"/> + <field name="_SC_XBS5_LP64_OFF64"/> + <field name="_SC_XBS5_LPBIG_OFFBIG"/> + <field name="_SC_XOPEN_CRYPT"/> + <field name="_SC_XOPEN_ENH_I18N"/> + <field name="_SC_XOPEN_LEGACY"/> + <field name="_SC_XOPEN_REALTIME"/> + <field name="_SC_XOPEN_REALTIME_THREADS"/> + <field name="_SC_XOPEN_SHM"/> + <field name="_SC_XOPEN_UNIX"/> + <field name="_SC_XOPEN_VERSION"/> + <field name="_SC_XOPEN_XCU_VERSION"/> + </class> + <class name="android/system/StructPollfd" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="events"/> + <field name="fd"/> + <field name="revents"/> + <field name="userData"/> + </class> + <class name="android/system/StructStat" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(JJIJIIJJJJJJJ)V"/> + <method name="<init>(JJIJIIJJLandroid/system/StructTimespec;Landroid/system/StructTimespec;Landroid/system/StructTimespec;JJ)V" since="27"/> + <field name="st_atim" since="27"/> + <field name="st_atime"/> + <field name="st_blksize"/> + <field name="st_blocks"/> + <field name="st_ctim" since="27"/> + <field name="st_ctime"/> + <field name="st_dev"/> + <field name="st_gid"/> + <field name="st_ino"/> + <field name="st_mode"/> + <field name="st_mtim" since="27"/> + <field name="st_mtime"/> + <field name="st_nlink"/> + <field name="st_rdev"/> + <field name="st_size"/> + <field name="st_uid"/> + </class> + <class name="android/system/StructStatVfs" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(JJJJJJJJJJJ)V"/> + <field name="f_bavail"/> + <field name="f_bfree"/> + <field name="f_blocks"/> + <field name="f_bsize"/> + <field name="f_favail"/> + <field name="f_ffree"/> + <field name="f_files"/> + <field name="f_flag"/> + <field name="f_frsize"/> + <field name="f_fsid"/> + <field name="f_namemax"/> + </class> + <class name="android/system/StructTimespec" since="27"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Comparable"/> + <method name="<init>(JJ)V"/> + <method name="compareTo(Landroid/system/StructTimespec;)I"/> + <field name="tv_nsec"/> + <field name="tv_sec"/> + </class> + <class name="android/system/StructUtsname" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <field name="machine"/> + <field name="nodename"/> + <field name="release"/> + <field name="sysname"/> + <field name="version"/> + </class> + <class name="android/telecom/Call" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="answer(I)V"/> + <method name="conference(Landroid/telecom/Call;)V"/> + <method name="disconnect()V"/> + <method name="getCannedTextResponses()Ljava/util/List;"/> + <method name="getChildren()Ljava/util/List;"/> + <method name="getConferenceableCalls()Ljava/util/List;"/> + <method name="getDetails()Landroid/telecom/Call$Details;"/> + <method name="getParent()Landroid/telecom/Call;"/> + <method name="getRemainingPostDialSequence()Ljava/lang/String;"/> + <method name="getRttCall()Landroid/telecom/Call$RttCall;" since="26"/> + <method name="getState()I"/> + <method name="getVideoCall()Landroid/telecom/InCallService$VideoCall;"/> + <method name="hold()V"/> + <method name="isRttActive()Z" since="26"/> + <method name="mergeConference()V"/> + <method name="phoneAccountSelected(Landroid/telecom/PhoneAccountHandle;Z)V"/> + <method name="playDtmfTone(C)V"/> + <method name="postDialContinue(Z)V"/> + <method name="pullExternalCall()V" since="25"/> + <method name="putExtras(Landroid/os/Bundle;)V" since="25"/> + <method name="registerCallback(Landroid/telecom/Call$Callback;)V"/> + <method name="registerCallback(Landroid/telecom/Call$Callback;Landroid/os/Handler;)V"/> + <method name="reject(ZLjava/lang/String;)V"/> + <method name="removeExtras(Ljava/util/List;)V" since="25"/> + <method name="removeExtras([Ljava/lang/String;)V" since="25"/> + <method name="respondToRttRequest(IZ)V" since="26"/> + <method name="sendCallEvent(Ljava/lang/String;Landroid/os/Bundle;)V" since="25"/> + <method name="sendRttRequest()V" since="26"/> + <method name="splitFromConference()V"/> + <method name="stopDtmfTone()V"/> + <method name="stopRtt()V" since="26"/> + <method name="swapConference()V"/> + <method name="unhold()V"/> + <method name="unregisterCallback(Landroid/telecom/Call$Callback;)V"/> + <field name="AVAILABLE_PHONE_ACCOUNTS"/> + <field name="EXTRA_LAST_EMERGENCY_CALLBACK_TIME_MILLIS" since="26"/> + <field name="STATE_ACTIVE"/> + <field name="STATE_CONNECTING"/> + <field name="STATE_DIALING"/> + <field name="STATE_DISCONNECTED"/> + <field name="STATE_DISCONNECTING"/> + <field name="STATE_HOLDING"/> + <field name="STATE_NEW"/> + <field name="STATE_PULLING_CALL" since="25"/> + <field name="STATE_RINGING"/> + <field name="STATE_SELECT_PHONE_ACCOUNT"/> + </class> + <class name="android/telecom/Call$Callback" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onCallDestroyed(Landroid/telecom/Call;)V"/> + <method name="onCannedTextResponsesLoaded(Landroid/telecom/Call;Ljava/util/List;)V"/> + <method name="onChildrenChanged(Landroid/telecom/Call;Ljava/util/List;)V"/> + <method name="onConferenceableCallsChanged(Landroid/telecom/Call;Ljava/util/List;)V"/> + <method name="onConnectionEvent(Landroid/telecom/Call;Ljava/lang/String;Landroid/os/Bundle;)V" since="25"/> + <method name="onDetailsChanged(Landroid/telecom/Call;Landroid/telecom/Call$Details;)V"/> + <method name="onParentChanged(Landroid/telecom/Call;Landroid/telecom/Call;)V"/> + <method name="onPostDialWait(Landroid/telecom/Call;Ljava/lang/String;)V"/> + <method name="onRttInitiationFailure(Landroid/telecom/Call;I)V" since="26"/> + <method name="onRttModeChanged(Landroid/telecom/Call;I)V" since="26"/> + <method name="onRttRequest(Landroid/telecom/Call;I)V" since="26"/> + <method name="onRttStatusChanged(Landroid/telecom/Call;ZLandroid/telecom/Call$RttCall;)V" since="26"/> + <method name="onStateChanged(Landroid/telecom/Call;I)V"/> + <method name="onVideoCallChanged(Landroid/telecom/Call;Landroid/telecom/InCallService$VideoCall;)V"/> + </class> + <class name="android/telecom/Call$Details" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="can(I)Z"/> + <method name="can(II)Z"/> + <method name="capabilitiesToString(I)Ljava/lang/String;"/> + <method name="getAccountHandle()Landroid/telecom/PhoneAccountHandle;"/> + <method name="getCallCapabilities()I"/> + <method name="getCallProperties()I"/> + <method name="getCallerDisplayName()Ljava/lang/String;"/> + <method name="getCallerDisplayNamePresentation()I"/> + <method name="getConnectTimeMillis()J"/> + <method name="getCreationTimeMillis()J" since="26"/> + <method name="getDisconnectCause()Landroid/telecom/DisconnectCause;"/> + <method name="getExtras()Landroid/os/Bundle;"/> + <method name="getGatewayInfo()Landroid/telecom/GatewayInfo;"/> + <method name="getHandle()Landroid/net/Uri;"/> + <method name="getHandlePresentation()I"/> + <method name="getIntentExtras()Landroid/os/Bundle;"/> + <method name="getStatusHints()Landroid/telecom/StatusHints;"/> + <method name="getVideoState()I"/> + <method name="hasProperty(I)Z"/> + <method name="hasProperty(II)Z"/> + <method name="propertiesToString(I)Ljava/lang/String;"/> + <field name="CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO" since="24"/> + <field name="CAPABILITY_CAN_PAUSE_VIDEO"/> + <field name="CAPABILITY_CAN_PULL_CALL" since="25"/> + <field name="CAPABILITY_DISCONNECT_FROM_CONFERENCE"/> + <field name="CAPABILITY_HOLD"/> + <field name="CAPABILITY_MANAGE_CONFERENCE"/> + <field name="CAPABILITY_MERGE_CONFERENCE"/> + <field name="CAPABILITY_MUTE"/> + <field name="CAPABILITY_RESPOND_VIA_TEXT"/> + <field name="CAPABILITY_SEPARATE_FROM_CONFERENCE"/> + <field name="CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL"/> + <field name="CAPABILITY_SUPPORTS_VT_LOCAL_RX"/> + <field name="CAPABILITY_SUPPORTS_VT_LOCAL_TX"/> + <field name="CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL"/> + <field name="CAPABILITY_SUPPORTS_VT_REMOTE_RX"/> + <field name="CAPABILITY_SUPPORTS_VT_REMOTE_TX"/> + <field name="CAPABILITY_SUPPORT_HOLD"/> + <field name="CAPABILITY_SWAP_CONFERENCE"/> + <field name="PROPERTY_CONFERENCE"/> + <field name="PROPERTY_EMERGENCY_CALLBACK_MODE"/> + <field name="PROPERTY_ENTERPRISE_CALL" since="24"/> + <field name="PROPERTY_GENERIC_CONFERENCE"/> + <field name="PROPERTY_HAS_CDMA_VOICE_PRIVACY" since="25"/> + <field name="PROPERTY_HIGH_DEF_AUDIO"/> + <field name="PROPERTY_IS_EXTERNAL_CALL" since="25"/> + <field name="PROPERTY_SELF_MANAGED" since="26"/> + <field name="PROPERTY_WIFI"/> + </class> + <class name="android/telecom/Call$RttCall" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getRttAudioMode()I"/> + <method name="read()Ljava/lang/String;"/> + <method name="setRttMode(I)V"/> + <method name="write(Ljava/lang/String;)V"/> + <field name="RTT_MODE_FULL"/> + <field name="RTT_MODE_HCO"/> + <field name="RTT_MODE_VCO"/> + </class> + <class name="android/telecom/CallAudioState" since="23"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(ZII)V"/> + <method name="audioRouteToString(I)Ljava/lang/String;"/> + <method name="getActiveBluetoothDevice()Landroid/bluetooth/BluetoothDevice;" since="27"/> + <method name="getRoute()I"/> + <method name="getSupportedBluetoothDevices()Ljava/util/Collection;" since="27"/> + <method name="getSupportedRouteMask()I"/> + <method name="isMuted()Z"/> + <field name="CREATOR"/> + <field name="ROUTE_BLUETOOTH"/> + <field name="ROUTE_EARPIECE"/> + <field name="ROUTE_SPEAKER"/> + <field name="ROUTE_WIRED_HEADSET"/> + <field name="ROUTE_WIRED_OR_EARPIECE"/> + </class> + <class name="android/telecom/CallScreeningService" since="24"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="onScreenCall(Landroid/telecom/Call$Details;)V"/> + <method name="respondToCall(Landroid/telecom/Call$Details;Landroid/telecom/CallScreeningService$CallResponse;)V"/> + <field name="SERVICE_INTERFACE"/> + </class> + <class name="android/telecom/CallScreeningService$CallResponse" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getDisallowCall()Z"/> + <method name="getRejectCall()Z"/> + <method name="getSkipCallLog()Z"/> + <method name="getSkipNotification()Z"/> + </class> + <class name="android/telecom/CallScreeningService$CallResponse$Builder" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="build()Landroid/telecom/CallScreeningService$CallResponse;"/> + <method name="setDisallowCall(Z)Landroid/telecom/CallScreeningService$CallResponse$Builder;"/> + <method name="setRejectCall(Z)Landroid/telecom/CallScreeningService$CallResponse$Builder;"/> + <method name="setSkipCallLog(Z)Landroid/telecom/CallScreeningService$CallResponse$Builder;"/> + <method name="setSkipNotification(Z)Landroid/telecom/CallScreeningService$CallResponse$Builder;"/> + </class> + <class name="android/telecom/Conference" since="23"> + <extends name="android/telecom/Conferenceable"/> + <method name="<init>(Landroid/telecom/PhoneAccountHandle;)V"/> + <method name="addConnection(Landroid/telecom/Connection;)Z"/> + <method name="destroy()V"/> + <method name="getCallAudioState()Landroid/telecom/CallAudioState;"/> + <method name="getConferenceableConnections()Ljava/util/List;"/> + <method name="getConnectionCapabilities()I"/> + <method name="getConnectionProperties()I" since="25"/> + <method name="getConnectionTime()J"/> + <method name="getConnections()Ljava/util/List;"/> + <method name="getDisconnectCause()Landroid/telecom/DisconnectCause;"/> + <method name="getExtras()Landroid/os/Bundle;"/> + <method name="getPhoneAccountHandle()Landroid/telecom/PhoneAccountHandle;"/> + <method name="getState()I"/> + <method name="getStatusHints()Landroid/telecom/StatusHints;"/> + <method name="getVideoProvider()Landroid/telecom/Connection$VideoProvider;"/> + <method name="getVideoState()I"/> + <method name="onCallAudioStateChanged(Landroid/telecom/CallAudioState;)V"/> + <method name="onConnectionAdded(Landroid/telecom/Connection;)V"/> + <method name="onDisconnect()V"/> + <method name="onExtrasChanged(Landroid/os/Bundle;)V" since="25"/> + <method name="onHold()V"/> + <method name="onMerge()V"/> + <method name="onMerge(Landroid/telecom/Connection;)V"/> + <method name="onPlayDtmfTone(C)V"/> + <method name="onSeparate(Landroid/telecom/Connection;)V"/> + <method name="onStopDtmfTone()V"/> + <method name="onSwap()V"/> + <method name="onUnhold()V"/> + <method name="putExtras(Landroid/os/Bundle;)V" since="25"/> + <method name="removeConnection(Landroid/telecom/Connection;)V"/> + <method name="removeExtras(Ljava/util/List;)V" since="25"/> + <method name="removeExtras([Ljava/lang/String;)V" since="25"/> + <method name="setActive()V"/> + <method name="setConferenceableConnections(Ljava/util/List;)V"/> + <method name="setConnectionCapabilities(I)V"/> + <method name="setConnectionElapsedTime(J)V" since="27"/> + <method name="setConnectionProperties(I)V" since="25"/> + <method name="setConnectionTime(J)V"/> + <method name="setDialing()V"/> + <method name="setDisconnected(Landroid/telecom/DisconnectCause;)V"/> + <method name="setExtras(Landroid/os/Bundle;)V"/> + <method name="setOnHold()V"/> + <method name="setStatusHints(Landroid/telecom/StatusHints;)V"/> + <method name="setVideoProvider(Landroid/telecom/Connection;Landroid/telecom/Connection$VideoProvider;)V"/> + <method name="setVideoState(Landroid/telecom/Connection;I)V"/> + <field name="CONNECT_TIME_NOT_SPECIFIED"/> + </class> + <class name="android/telecom/Conferenceable" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/telecom/Connection" since="23"> + <extends name="android/telecom/Conferenceable"/> + <method name="<init>()V"/> + <method name="capabilitiesToString(I)Ljava/lang/String;"/> + <method name="createCanceledConnection()Landroid/telecom/Connection;"/> + <method name="createFailedConnection(Landroid/telecom/DisconnectCause;)Landroid/telecom/Connection;"/> + <method name="destroy()V"/> + <method name="getAddress()Landroid/net/Uri;"/> + <method name="getAddressPresentation()I"/> + <method name="getAudioModeIsVoip()Z"/> + <method name="getCallAudioState()Landroid/telecom/CallAudioState;"/> + <method name="getCallerDisplayName()Ljava/lang/String;"/> + <method name="getCallerDisplayNamePresentation()I"/> + <method name="getConference()Landroid/telecom/Conference;"/> + <method name="getConferenceables()Ljava/util/List;"/> + <method name="getConnectionCapabilities()I"/> + <method name="getConnectionProperties()I" since="25"/> + <method name="getDisconnectCause()Landroid/telecom/DisconnectCause;"/> + <method name="getExtras()Landroid/os/Bundle;"/> + <method name="getState()I"/> + <method name="getStatusHints()Landroid/telecom/StatusHints;"/> + <method name="getVideoProvider()Landroid/telecom/Connection$VideoProvider;"/> + <method name="isRingbackRequested()Z"/> + <method name="onAbort()V"/> + <method name="onAnswer()V"/> + <method name="onAnswer(I)V"/> + <method name="onCallAudioStateChanged(Landroid/telecom/CallAudioState;)V"/> + <method name="onCallEvent(Ljava/lang/String;Landroid/os/Bundle;)V" since="25"/> + <method name="onDisconnect()V"/> + <method name="onExtrasChanged(Landroid/os/Bundle;)V" since="25"/> + <method name="onHold()V"/> + <method name="onPlayDtmfTone(C)V"/> + <method name="onPostDialContinue(Z)V"/> + <method name="onPullExternalCall()V" since="25"/> + <method name="onReject()V"/> + <method name="onReject(Ljava/lang/String;)V" since="24"/> + <method name="onSeparate()V"/> + <method name="onShowIncomingCallUi()V" since="26"/> + <method name="onStateChanged(I)V"/> + <method name="onStopDtmfTone()V"/> + <method name="onUnhold()V"/> + <method name="propertiesToString(I)Ljava/lang/String;" since="25"/> + <method name="putExtras(Landroid/os/Bundle;)V" since="25"/> + <method name="removeExtras(Ljava/util/List;)V" since="25"/> + <method name="removeExtras([Ljava/lang/String;)V" since="25"/> + <method name="requestBluetoothAudio(Ljava/lang/String;)V" since="27"/> + <method name="sendConnectionEvent(Ljava/lang/String;Landroid/os/Bundle;)V" since="25"/> + <method name="setActive()V"/> + <method name="setAddress(Landroid/net/Uri;I)V"/> + <method name="setAudioModeIsVoip(Z)V"/> + <method name="setAudioRoute(I)V" since="26"/> + <method name="setCallerDisplayName(Ljava/lang/String;I)V"/> + <method name="setConferenceableConnections(Ljava/util/List;)V"/> + <method name="setConferenceables(Ljava/util/List;)V"/> + <method name="setConnectionCapabilities(I)V"/> + <method name="setConnectionProperties(I)V" since="25"/> + <method name="setDialing()V"/> + <method name="setDisconnected(Landroid/telecom/DisconnectCause;)V"/> + <method name="setExtras(Landroid/os/Bundle;)V"/> + <method name="setInitialized()V"/> + <method name="setInitializing()V"/> + <method name="setNextPostDialChar(C)V"/> + <method name="setOnHold()V"/> + <method name="setPostDialWait(Ljava/lang/String;)V"/> + <method name="setPulling()V" since="25"/> + <method name="setRingbackRequested(Z)V"/> + <method name="setRinging()V"/> + <method name="setStatusHints(Landroid/telecom/StatusHints;)V"/> + <method name="setVideoProvider(Landroid/telecom/Connection$VideoProvider;)V"/> + <method name="setVideoState(I)V"/> + <method name="stateToString(I)Ljava/lang/String;"/> + <field name="CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO" since="24"/> + <field name="CAPABILITY_CAN_PAUSE_VIDEO"/> + <field name="CAPABILITY_CAN_PULL_CALL" since="25"/> + <field name="CAPABILITY_CAN_SEND_RESPONSE_VIA_CONNECTION" since="24"/> + <field name="CAPABILITY_CAN_UPGRADE_TO_VIDEO"/> + <field name="CAPABILITY_DISCONNECT_FROM_CONFERENCE"/> + <field name="CAPABILITY_HOLD"/> + <field name="CAPABILITY_MANAGE_CONFERENCE"/> + <field name="CAPABILITY_MERGE_CONFERENCE"/> + <field name="CAPABILITY_MUTE"/> + <field name="CAPABILITY_RESPOND_VIA_TEXT"/> + <field name="CAPABILITY_SEPARATE_FROM_CONFERENCE"/> + <field name="CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL"/> + <field name="CAPABILITY_SUPPORTS_VT_LOCAL_RX"/> + <field name="CAPABILITY_SUPPORTS_VT_LOCAL_TX"/> + <field name="CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL"/> + <field name="CAPABILITY_SUPPORTS_VT_REMOTE_RX"/> + <field name="CAPABILITY_SUPPORTS_VT_REMOTE_TX"/> + <field name="CAPABILITY_SUPPORT_HOLD"/> + <field name="CAPABILITY_SWAP_CONFERENCE"/> + <field name="EVENT_CALL_MERGE_FAILED" since="25"/> + <field name="EVENT_CALL_PULL_FAILED" since="25"/> + <field name="EXTRA_ANSWERING_DROPS_FG_CALL" since="25"/> + <field name="EXTRA_ANSWERING_DROPS_FG_CALL_APP_NAME" since="26"/> + <field name="EXTRA_CALL_SUBJECT"/> + <field name="EXTRA_CHILD_ADDRESS"/> + <field name="EXTRA_LAST_FORWARDED_NUMBER"/> + <field name="PROPERTY_HAS_CDMA_VOICE_PRIVACY" since="25"/> + <field name="PROPERTY_IS_EXTERNAL_CALL" since="25"/> + <field name="PROPERTY_SELF_MANAGED" since="26"/> + <field name="STATE_ACTIVE"/> + <field name="STATE_DIALING"/> + <field name="STATE_DISCONNECTED"/> + <field name="STATE_HOLDING"/> + <field name="STATE_INITIALIZING"/> + <field name="STATE_NEW"/> + <field name="STATE_PULLING_CALL" since="25"/> + <field name="STATE_RINGING"/> + </class> + <class name="android/telecom/Connection$RttModifyStatus" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="SESSION_MODIFY_REQUEST_FAIL"/> + <field name="SESSION_MODIFY_REQUEST_INVALID"/> + <field name="SESSION_MODIFY_REQUEST_REJECTED_BY_REMOTE"/> + <field name="SESSION_MODIFY_REQUEST_SUCCESS"/> + <field name="SESSION_MODIFY_REQUEST_TIMED_OUT"/> + </class> + <class name="android/telecom/Connection$VideoProvider" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="changeCameraCapabilities(Landroid/telecom/VideoProfile$CameraCapabilities;)V"/> + <method name="changePeerDimensions(II)V"/> + <method name="changeVideoQuality(I)V"/> + <method name="handleCallSessionEvent(I)V"/> + <method name="onRequestCameraCapabilities()V"/> + <method name="onRequestConnectionDataUsage()V"/> + <method name="onSendSessionModifyRequest(Landroid/telecom/VideoProfile;Landroid/telecom/VideoProfile;)V"/> + <method name="onSendSessionModifyResponse(Landroid/telecom/VideoProfile;)V"/> + <method name="onSetCamera(Ljava/lang/String;)V"/> + <method name="onSetDeviceOrientation(I)V"/> + <method name="onSetDisplaySurface(Landroid/view/Surface;)V"/> + <method name="onSetPauseImage(Landroid/net/Uri;)V"/> + <method name="onSetPreviewSurface(Landroid/view/Surface;)V"/> + <method name="onSetZoom(F)V"/> + <method name="receiveSessionModifyRequest(Landroid/telecom/VideoProfile;)V"/> + <method name="receiveSessionModifyResponse(ILandroid/telecom/VideoProfile;Landroid/telecom/VideoProfile;)V"/> + <method name="setCallDataUsage(J)V"/> + <field name="SESSION_EVENT_CAMERA_FAILURE"/> + <field name="SESSION_EVENT_CAMERA_PERMISSION_ERROR" since="26"/> + <field name="SESSION_EVENT_CAMERA_READY"/> + <field name="SESSION_EVENT_RX_PAUSE"/> + <field name="SESSION_EVENT_RX_RESUME"/> + <field name="SESSION_EVENT_TX_START"/> + <field name="SESSION_EVENT_TX_STOP"/> + <field name="SESSION_MODIFY_REQUEST_FAIL"/> + <field name="SESSION_MODIFY_REQUEST_INVALID"/> + <field name="SESSION_MODIFY_REQUEST_REJECTED_BY_REMOTE"/> + <field name="SESSION_MODIFY_REQUEST_SUCCESS"/> + <field name="SESSION_MODIFY_REQUEST_TIMED_OUT"/> + </class> + <class name="android/telecom/ConnectionRequest" since="23"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/telecom/PhoneAccountHandle;Landroid/net/Uri;Landroid/os/Bundle;)V"/> + <method name="<init>(Landroid/telecom/PhoneAccountHandle;Landroid/net/Uri;Landroid/os/Bundle;I)V"/> + <method name="getAccountHandle()Landroid/telecom/PhoneAccountHandle;"/> + <method name="getAddress()Landroid/net/Uri;"/> + <method name="getExtras()Landroid/os/Bundle;"/> + <method name="getVideoState()I"/> + <field name="CREATOR"/> + </class> + <class name="android/telecom/ConnectionService" since="23"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="addConference(Landroid/telecom/Conference;)V"/> + <method name="addExistingConnection(Landroid/telecom/PhoneAccountHandle;Landroid/telecom/Connection;)V"/> + <method name="conferenceRemoteConnections(Landroid/telecom/RemoteConnection;Landroid/telecom/RemoteConnection;)V"/> + <method name="createRemoteIncomingConnection(Landroid/telecom/PhoneAccountHandle;Landroid/telecom/ConnectionRequest;)Landroid/telecom/RemoteConnection;"/> + <method name="createRemoteOutgoingConnection(Landroid/telecom/PhoneAccountHandle;Landroid/telecom/ConnectionRequest;)Landroid/telecom/RemoteConnection;"/> + <method name="getAllConferences()Ljava/util/Collection;" since="24"/> + <method name="getAllConnections()Ljava/util/Collection;"/> + <method name="onConference(Landroid/telecom/Connection;Landroid/telecom/Connection;)V"/> + <method name="onCreateIncomingConnection(Landroid/telecom/PhoneAccountHandle;Landroid/telecom/ConnectionRequest;)Landroid/telecom/Connection;"/> + <method name="onCreateIncomingConnectionFailed(Landroid/telecom/PhoneAccountHandle;Landroid/telecom/ConnectionRequest;)V" since="26"/> + <method name="onCreateOutgoingConnection(Landroid/telecom/PhoneAccountHandle;Landroid/telecom/ConnectionRequest;)Landroid/telecom/Connection;"/> + <method name="onCreateOutgoingConnectionFailed(Landroid/telecom/PhoneAccountHandle;Landroid/telecom/ConnectionRequest;)V" since="26"/> + <method name="onRemoteConferenceAdded(Landroid/telecom/RemoteConference;)V"/> + <method name="onRemoteExistingConnectionAdded(Landroid/telecom/RemoteConnection;)V"/> + <field name="SERVICE_INTERFACE"/> + </class> + <class name="android/telecom/DisconnectCause" since="23"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(I)V"/> + <method name="<init>(ILjava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/String;)V"/> + <method name="<init>(ILjava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/String;I)V"/> + <method name="<init>(ILjava/lang/String;)V"/> + <method name="getCode()I"/> + <method name="getDescription()Ljava/lang/CharSequence;"/> + <method name="getLabel()Ljava/lang/CharSequence;"/> + <method name="getReason()Ljava/lang/String;"/> + <method name="getTone()I"/> + <field name="ANSWERED_ELSEWHERE" since="25"/> + <field name="BUSY"/> + <field name="CALL_PULLED" since="25"/> + <field name="CANCELED"/> + <field name="CONNECTION_MANAGER_NOT_SUPPORTED"/> + <field name="CREATOR"/> + <field name="ERROR"/> + <field name="LOCAL"/> + <field name="MISSED"/> + <field name="OTHER"/> + <field name="REJECTED"/> + <field name="REMOTE"/> + <field name="RESTRICTED"/> + <field name="UNKNOWN"/> + </class> + <class name="android/telecom/GatewayInfo" since="23"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Ljava/lang/String;Landroid/net/Uri;Landroid/net/Uri;)V"/> + <method name="getGatewayAddress()Landroid/net/Uri;"/> + <method name="getGatewayProviderPackageName()Ljava/lang/String;"/> + <method name="getOriginalAddress()Landroid/net/Uri;"/> + <method name="isEmpty()Z"/> + <field name="CREATOR"/> + </class> + <class name="android/telecom/InCallService" since="23"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="canAddCall()Z"/> + <method name="getCallAudioState()Landroid/telecom/CallAudioState;"/> + <method name="getCalls()Ljava/util/List;"/> + <method name="onBringToForeground(Z)V"/> + <method name="onCallAdded(Landroid/telecom/Call;)V"/> + <method name="onCallAudioStateChanged(Landroid/telecom/CallAudioState;)V"/> + <method name="onCallRemoved(Landroid/telecom/Call;)V"/> + <method name="onCanAddCallChanged(Z)V"/> + <method name="onConnectionEvent(Landroid/telecom/Call;Ljava/lang/String;Landroid/os/Bundle;)V" since="25"/> + <method name="onSilenceRinger()V" since="24"/> + <method name="requestBluetoothAudio(Ljava/lang/String;)V" since="27"/> + <method name="setAudioRoute(I)V"/> + <method name="setMuted(Z)V"/> + <field name="SERVICE_INTERFACE"/> + </class> + <class name="android/telecom/InCallService$VideoCall" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="registerCallback(Landroid/telecom/InCallService$VideoCall$Callback;)V"/> + <method name="registerCallback(Landroid/telecom/InCallService$VideoCall$Callback;Landroid/os/Handler;)V"/> + <method name="requestCallDataUsage()V"/> + <method name="requestCameraCapabilities()V"/> + <method name="sendSessionModifyRequest(Landroid/telecom/VideoProfile;)V"/> + <method name="sendSessionModifyResponse(Landroid/telecom/VideoProfile;)V"/> + <method name="setCamera(Ljava/lang/String;)V"/> + <method name="setDeviceOrientation(I)V"/> + <method name="setDisplaySurface(Landroid/view/Surface;)V"/> + <method name="setPauseImage(Landroid/net/Uri;)V"/> + <method name="setPreviewSurface(Landroid/view/Surface;)V"/> + <method name="setZoom(F)V"/> + <method name="unregisterCallback(Landroid/telecom/InCallService$VideoCall$Callback;)V"/> + </class> + <class name="android/telecom/InCallService$VideoCall$Callback" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onCallDataUsageChanged(J)V"/> + <method name="onCallSessionEvent(I)V"/> + <method name="onCameraCapabilitiesChanged(Landroid/telecom/VideoProfile$CameraCapabilities;)V"/> + <method name="onPeerDimensionsChanged(II)V"/> + <method name="onSessionModifyRequestReceived(Landroid/telecom/VideoProfile;)V"/> + <method name="onSessionModifyResponseReceived(ILandroid/telecom/VideoProfile;Landroid/telecom/VideoProfile;)V"/> + <method name="onVideoQualityChanged(I)V"/> + </class> + <class name="android/telecom/PhoneAccount" since="23"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="builder(Landroid/telecom/PhoneAccountHandle;Ljava/lang/CharSequence;)Landroid/telecom/PhoneAccount$Builder;"/> + <method name="getAccountHandle()Landroid/telecom/PhoneAccountHandle;"/> + <method name="getAddress()Landroid/net/Uri;"/> + <method name="getCapabilities()I"/> + <method name="getExtras()Landroid/os/Bundle;" since="24"/> + <method name="getHighlightColor()I"/> + <method name="getIcon()Landroid/graphics/drawable/Icon;"/> + <method name="getLabel()Ljava/lang/CharSequence;"/> + <method name="getShortDescription()Ljava/lang/CharSequence;"/> + <method name="getSubscriptionAddress()Landroid/net/Uri;"/> + <method name="getSupportedUriSchemes()Ljava/util/List;"/> + <method name="hasCapabilities(I)Z"/> + <method name="isEnabled()Z"/> + <method name="supportsUriScheme(Ljava/lang/String;)Z"/> + <method name="toBuilder()Landroid/telecom/PhoneAccount$Builder;"/> + <field name="CAPABILITY_CALL_PROVIDER"/> + <field name="CAPABILITY_CALL_SUBJECT"/> + <field name="CAPABILITY_CONNECTION_MANAGER"/> + <field name="CAPABILITY_PLACE_EMERGENCY_CALLS"/> + <field name="CAPABILITY_RTT" since="26"/> + <field name="CAPABILITY_SELF_MANAGED" since="26"/> + <field name="CAPABILITY_SIM_SUBSCRIPTION"/> + <field name="CAPABILITY_SUPPORTS_VIDEO_CALLING" since="26"/> + <field name="CAPABILITY_VIDEO_CALLING"/> + <field name="CAPABILITY_VIDEO_CALLING_RELIES_ON_PRESENCE" since="24"/> + <field name="CREATOR"/> + <field name="EXTRA_CALL_SUBJECT_CHARACTER_ENCODING" since="24"/> + <field name="EXTRA_CALL_SUBJECT_MAX_LENGTH" since="24"/> + <field name="NO_HIGHLIGHT_COLOR"/> + <field name="NO_RESOURCE_ID"/> + <field name="SCHEME_SIP"/> + <field name="SCHEME_TEL"/> + <field name="SCHEME_VOICEMAIL"/> + </class> + <class name="android/telecom/PhoneAccount$Builder" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/telecom/PhoneAccount;)V"/> + <method name="<init>(Landroid/telecom/PhoneAccountHandle;Ljava/lang/CharSequence;)V"/> + <method name="addSupportedUriScheme(Ljava/lang/String;)Landroid/telecom/PhoneAccount$Builder;"/> + <method name="build()Landroid/telecom/PhoneAccount;"/> + <method name="setAddress(Landroid/net/Uri;)Landroid/telecom/PhoneAccount$Builder;"/> + <method name="setCapabilities(I)Landroid/telecom/PhoneAccount$Builder;"/> + <method name="setExtras(Landroid/os/Bundle;)Landroid/telecom/PhoneAccount$Builder;" since="24"/> + <method name="setHighlightColor(I)Landroid/telecom/PhoneAccount$Builder;"/> + <method name="setIcon(Landroid/graphics/drawable/Icon;)Landroid/telecom/PhoneAccount$Builder;"/> + <method name="setShortDescription(Ljava/lang/CharSequence;)Landroid/telecom/PhoneAccount$Builder;"/> + <method name="setSubscriptionAddress(Landroid/net/Uri;)Landroid/telecom/PhoneAccount$Builder;"/> + <method name="setSupportedUriSchemes(Ljava/util/List;)Landroid/telecom/PhoneAccount$Builder;"/> + </class> + <class name="android/telecom/PhoneAccountHandle" since="23"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/content/ComponentName;Ljava/lang/String;)V"/> + <method name="<init>(Landroid/content/ComponentName;Ljava/lang/String;Landroid/os/UserHandle;)V"/> + <method name="getComponentName()Landroid/content/ComponentName;"/> + <method name="getId()Ljava/lang/String;"/> + <method name="getUserHandle()Landroid/os/UserHandle;"/> + <field name="CREATOR"/> + </class> + <class name="android/telecom/RemoteConference" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="disconnect()V"/> + <method name="getConferenceableConnections()Ljava/util/List;"/> + <method name="getConnectionCapabilities()I"/> + <method name="getConnectionProperties()I" since="24"/> + <method name="getConnections()Ljava/util/List;"/> + <method name="getDisconnectCause()Landroid/telecom/DisconnectCause;"/> + <method name="getExtras()Landroid/os/Bundle;"/> + <method name="getState()I"/> + <method name="hold()V"/> + <method name="merge()V"/> + <method name="playDtmfTone(C)V"/> + <method name="registerCallback(Landroid/telecom/RemoteConference$Callback;)V"/> + <method name="registerCallback(Landroid/telecom/RemoteConference$Callback;Landroid/os/Handler;)V"/> + <method name="separate(Landroid/telecom/RemoteConnection;)V"/> + <method name="setCallAudioState(Landroid/telecom/CallAudioState;)V"/> + <method name="stopDtmfTone()V"/> + <method name="swap()V"/> + <method name="unhold()V"/> + <method name="unregisterCallback(Landroid/telecom/RemoteConference$Callback;)V"/> + </class> + <class name="android/telecom/RemoteConference$Callback" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onConferenceableConnectionsChanged(Landroid/telecom/RemoteConference;Ljava/util/List;)V"/> + <method name="onConnectionAdded(Landroid/telecom/RemoteConference;Landroid/telecom/RemoteConnection;)V"/> + <method name="onConnectionCapabilitiesChanged(Landroid/telecom/RemoteConference;I)V"/> + <method name="onConnectionPropertiesChanged(Landroid/telecom/RemoteConference;I)V" since="25"/> + <method name="onConnectionRemoved(Landroid/telecom/RemoteConference;Landroid/telecom/RemoteConnection;)V"/> + <method name="onDestroyed(Landroid/telecom/RemoteConference;)V"/> + <method name="onDisconnected(Landroid/telecom/RemoteConference;Landroid/telecom/DisconnectCause;)V"/> + <method name="onExtrasChanged(Landroid/telecom/RemoteConference;Landroid/os/Bundle;)V"/> + <method name="onStateChanged(Landroid/telecom/RemoteConference;II)V"/> + </class> + <class name="android/telecom/RemoteConnection" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="abort()V"/> + <method name="answer()V"/> + <method name="disconnect()V"/> + <method name="getAddress()Landroid/net/Uri;"/> + <method name="getAddressPresentation()I"/> + <method name="getCallerDisplayName()Ljava/lang/CharSequence;"/> + <method name="getCallerDisplayNamePresentation()I"/> + <method name="getConference()Landroid/telecom/RemoteConference;"/> + <method name="getConferenceableConnections()Ljava/util/List;"/> + <method name="getConnectionCapabilities()I"/> + <method name="getConnectionProperties()I" since="25"/> + <method name="getDisconnectCause()Landroid/telecom/DisconnectCause;"/> + <method name="getExtras()Landroid/os/Bundle;"/> + <method name="getState()I"/> + <method name="getStatusHints()Landroid/telecom/StatusHints;"/> + <method name="getVideoProvider()Landroid/telecom/RemoteConnection$VideoProvider;"/> + <method name="getVideoState()I"/> + <method name="hold()V"/> + <method name="isRingbackRequested()Z"/> + <method name="isVoipAudioMode()Z"/> + <method name="playDtmfTone(C)V"/> + <method name="postDialContinue(Z)V"/> + <method name="pullExternalCall()V" since="25"/> + <method name="registerCallback(Landroid/telecom/RemoteConnection$Callback;)V"/> + <method name="registerCallback(Landroid/telecom/RemoteConnection$Callback;Landroid/os/Handler;)V"/> + <method name="reject()V"/> + <method name="setCallAudioState(Landroid/telecom/CallAudioState;)V"/> + <method name="stopDtmfTone()V"/> + <method name="unhold()V"/> + <method name="unregisterCallback(Landroid/telecom/RemoteConnection$Callback;)V"/> + </class> + <class name="android/telecom/RemoteConnection$Callback" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onAddressChanged(Landroid/telecom/RemoteConnection;Landroid/net/Uri;I)V"/> + <method name="onCallerDisplayNameChanged(Landroid/telecom/RemoteConnection;Ljava/lang/String;I)V"/> + <method name="onConferenceChanged(Landroid/telecom/RemoteConnection;Landroid/telecom/RemoteConference;)V"/> + <method name="onConferenceableConnectionsChanged(Landroid/telecom/RemoteConnection;Ljava/util/List;)V"/> + <method name="onConnectionCapabilitiesChanged(Landroid/telecom/RemoteConnection;I)V"/> + <method name="onConnectionEvent(Landroid/telecom/RemoteConnection;Ljava/lang/String;Landroid/os/Bundle;)V" since="25"/> + <method name="onConnectionPropertiesChanged(Landroid/telecom/RemoteConnection;I)V" since="25"/> + <method name="onDestroyed(Landroid/telecom/RemoteConnection;)V"/> + <method name="onDisconnected(Landroid/telecom/RemoteConnection;Landroid/telecom/DisconnectCause;)V"/> + <method name="onExtrasChanged(Landroid/telecom/RemoteConnection;Landroid/os/Bundle;)V"/> + <method name="onPostDialChar(Landroid/telecom/RemoteConnection;C)V"/> + <method name="onPostDialWait(Landroid/telecom/RemoteConnection;Ljava/lang/String;)V"/> + <method name="onRingbackRequested(Landroid/telecom/RemoteConnection;Z)V"/> + <method name="onStateChanged(Landroid/telecom/RemoteConnection;I)V"/> + <method name="onStatusHintsChanged(Landroid/telecom/RemoteConnection;Landroid/telecom/StatusHints;)V"/> + <method name="onVideoProviderChanged(Landroid/telecom/RemoteConnection;Landroid/telecom/RemoteConnection$VideoProvider;)V"/> + <method name="onVideoStateChanged(Landroid/telecom/RemoteConnection;I)V"/> + <method name="onVoipAudioChanged(Landroid/telecom/RemoteConnection;Z)V"/> + </class> + <class name="android/telecom/RemoteConnection$VideoProvider" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="registerCallback(Landroid/telecom/RemoteConnection$VideoProvider$Callback;)V"/> + <method name="requestCallDataUsage()V"/> + <method name="requestCameraCapabilities()V"/> + <method name="sendSessionModifyRequest(Landroid/telecom/VideoProfile;Landroid/telecom/VideoProfile;)V"/> + <method name="sendSessionModifyResponse(Landroid/telecom/VideoProfile;)V"/> + <method name="setCamera(Ljava/lang/String;)V"/> + <method name="setDeviceOrientation(I)V"/> + <method name="setDisplaySurface(Landroid/view/Surface;)V"/> + <method name="setPauseImage(Landroid/net/Uri;)V"/> + <method name="setPreviewSurface(Landroid/view/Surface;)V"/> + <method name="setZoom(F)V"/> + <method name="unregisterCallback(Landroid/telecom/RemoteConnection$VideoProvider$Callback;)V"/> + </class> + <class name="android/telecom/RemoteConnection$VideoProvider$Callback" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onCallDataUsageChanged(Landroid/telecom/RemoteConnection$VideoProvider;J)V"/> + <method name="onCallSessionEvent(Landroid/telecom/RemoteConnection$VideoProvider;I)V"/> + <method name="onCameraCapabilitiesChanged(Landroid/telecom/RemoteConnection$VideoProvider;Landroid/telecom/VideoProfile$CameraCapabilities;)V"/> + <method name="onPeerDimensionsChanged(Landroid/telecom/RemoteConnection$VideoProvider;II)V"/> + <method name="onSessionModifyRequestReceived(Landroid/telecom/RemoteConnection$VideoProvider;Landroid/telecom/VideoProfile;)V"/> + <method name="onSessionModifyResponseReceived(Landroid/telecom/RemoteConnection$VideoProvider;ILandroid/telecom/VideoProfile;Landroid/telecom/VideoProfile;)V"/> + <method name="onVideoQualityChanged(Landroid/telecom/RemoteConnection$VideoProvider;I)V"/> + </class> + <class name="android/telecom/StatusHints" since="23"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Ljava/lang/CharSequence;Landroid/graphics/drawable/Icon;Landroid/os/Bundle;)V"/> + <method name="getExtras()Landroid/os/Bundle;"/> + <method name="getIcon()Landroid/graphics/drawable/Icon;"/> + <method name="getLabel()Ljava/lang/CharSequence;"/> + <field name="CREATOR"/> + </class> + <class name="android/telecom/TelecomManager" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="acceptRingingCall()V" since="26"/> + <method name="acceptRingingCall(I)V" since="26"/> + <method name="addNewIncomingCall(Landroid/telecom/PhoneAccountHandle;Landroid/os/Bundle;)V" since="23"/> + <method name="cancelMissedCallsNotification()V"/> + <method name="createManageBlockedNumbersIntent()Landroid/content/Intent;" since="24"/> + <method name="getAdnUriForPhoneAccount(Landroid/telecom/PhoneAccountHandle;)Landroid/net/Uri;" since="23"/> + <method name="getCallCapablePhoneAccounts()Ljava/util/List;" since="23"/> + <method name="getDefaultDialerPackage()Ljava/lang/String;" since="23"/> + <method name="getDefaultOutgoingPhoneAccount(Ljava/lang/String;)Landroid/telecom/PhoneAccountHandle;" since="23"/> + <method name="getLine1Number(Landroid/telecom/PhoneAccountHandle;)Ljava/lang/String;" since="23"/> + <method name="getPhoneAccount(Landroid/telecom/PhoneAccountHandle;)Landroid/telecom/PhoneAccount;" since="23"/> + <method name="getSelfManagedPhoneAccounts()Ljava/util/List;" since="26"/> + <method name="getSimCallManager()Landroid/telecom/PhoneAccountHandle;" since="23"/> + <method name="getVoiceMailNumber(Landroid/telecom/PhoneAccountHandle;)Ljava/lang/String;" since="23"/> + <method name="handleMmi(Ljava/lang/String;)Z"/> + <method name="handleMmi(Ljava/lang/String;Landroid/telecom/PhoneAccountHandle;)Z" since="23"/> + <method name="isInCall()Z"/> + <method name="isInManagedCall()Z" since="26"/> + <method name="isIncomingCallPermitted(Landroid/telecom/PhoneAccountHandle;)Z" since="26"/> + <method name="isOutgoingCallPermitted(Landroid/telecom/PhoneAccountHandle;)Z" since="26"/> + <method name="isTtySupported()Z" since="27"/> + <method name="isVoiceMailNumber(Landroid/telecom/PhoneAccountHandle;Ljava/lang/String;)Z" since="23"/> + <method name="placeCall(Landroid/net/Uri;Landroid/os/Bundle;)V" since="23"/> + <method name="registerPhoneAccount(Landroid/telecom/PhoneAccount;)V" since="23"/> + <method name="showInCallScreen(Z)V"/> + <method name="silenceRinger()V" since="23"/> + <method name="unregisterPhoneAccount(Landroid/telecom/PhoneAccountHandle;)V" since="23"/> + <field name="ACTION_CHANGE_DEFAULT_DIALER" since="23"/> + <field name="ACTION_CHANGE_PHONE_ACCOUNTS" since="23"/> + <field name="ACTION_CONFIGURE_PHONE_ACCOUNT" since="23"/> + <field name="ACTION_DEFAULT_DIALER_CHANGED" since="23"/> + <field name="ACTION_INCOMING_CALL" since="23" deprecated="26"/> + <field name="ACTION_PHONE_ACCOUNT_REGISTERED" since="26"/> + <field name="ACTION_PHONE_ACCOUNT_UNREGISTERED" since="26"/> + <field name="ACTION_SHOW_CALL_ACCESSIBILITY_SETTINGS" since="23"/> + <field name="ACTION_SHOW_CALL_SETTINGS"/> + <field name="ACTION_SHOW_MISSED_CALLS_NOTIFICATION" since="24"/> + <field name="ACTION_SHOW_RESPOND_VIA_SMS_SETTINGS" since="23"/> + <field name="DTMF_CHARACTER_PAUSE"/> + <field name="DTMF_CHARACTER_WAIT"/> + <field name="EXTRA_CALL_BACK_NUMBER" since="23"/> + <field name="EXTRA_CALL_DISCONNECT_CAUSE"/> + <field name="EXTRA_CALL_DISCONNECT_MESSAGE"/> + <field name="EXTRA_CALL_SUBJECT" since="23"/> + <field name="EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME" since="23"/> + <field name="EXTRA_INCOMING_CALL_ADDRESS" since="23"/> + <field name="EXTRA_INCOMING_CALL_EXTRAS" since="23"/> + <field name="EXTRA_INCOMING_VIDEO_STATE" since="26"/> + <field name="EXTRA_NOTIFICATION_COUNT" since="24"/> + <field name="EXTRA_NOTIFICATION_PHONE_NUMBER" since="24"/> + <field name="EXTRA_OUTGOING_CALL_EXTRAS" since="23"/> + <field name="EXTRA_PHONE_ACCOUNT_HANDLE" since="23"/> + <field name="EXTRA_START_CALL_WITH_RTT" since="26"/> + <field name="EXTRA_START_CALL_WITH_SPEAKERPHONE"/> + <field name="EXTRA_START_CALL_WITH_VIDEO_STATE" since="23"/> + <field name="GATEWAY_ORIGINAL_ADDRESS"/> + <field name="GATEWAY_PROVIDER_PACKAGE"/> + <field name="METADATA_INCLUDE_EXTERNAL_CALLS" since="25"/> + <field name="METADATA_INCLUDE_SELF_MANAGED_CALLS" since="26"/> + <field name="METADATA_IN_CALL_SERVICE_RINGING" since="24"/> + <field name="METADATA_IN_CALL_SERVICE_UI" since="23"/> + <field name="PRESENTATION_ALLOWED"/> + <field name="PRESENTATION_PAYPHONE"/> + <field name="PRESENTATION_RESTRICTED"/> + <field name="PRESENTATION_UNKNOWN"/> + </class> + <class name="android/telecom/VideoProfile" since="23"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(I)V"/> + <method name="<init>(II)V"/> + <method name="getQuality()I"/> + <method name="getVideoState()I"/> + <method name="isAudioOnly(I)Z"/> + <method name="isBidirectional(I)Z"/> + <method name="isPaused(I)Z"/> + <method name="isReceptionEnabled(I)Z"/> + <method name="isTransmissionEnabled(I)Z"/> + <method name="isVideo(I)Z"/> + <method name="videoStateToString(I)Ljava/lang/String;"/> + <field name="CREATOR"/> + <field name="QUALITY_DEFAULT"/> + <field name="QUALITY_HIGH"/> + <field name="QUALITY_LOW"/> + <field name="QUALITY_MEDIUM"/> + <field name="STATE_AUDIO_ONLY"/> + <field name="STATE_BIDIRECTIONAL"/> + <field name="STATE_PAUSED"/> + <field name="STATE_RX_ENABLED"/> + <field name="STATE_TX_ENABLED"/> + </class> + <class name="android/telecom/VideoProfile$CameraCapabilities" since="23"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(II)V"/> + <method name="getHeight()I"/> + <method name="getWidth()I"/> + <field name="CREATOR"/> + </class> + <class name="android/telephony/CarrierConfigManager" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getConfig()Landroid/os/PersistableBundle;"/> + <method name="getConfigForSubId(I)Landroid/os/PersistableBundle;"/> + <method name="notifyConfigChangedForSubId(I)V"/> + <field name="ACTION_CARRIER_CONFIG_CHANGED"/> + <field name="DATA_CYCLE_THRESHOLD_DISABLED" since="26"/> + <field name="KEY_ADDITIONAL_CALL_SETTING_BOOL"/> + <field name="KEY_ALLOW_ADDING_APNS_BOOL" since="24"/> + <field name="KEY_ALLOW_ADD_CALL_DURING_VIDEO_CALL_BOOL" since="25"/> + <field name="KEY_ALLOW_EMERGENCY_NUMBERS_IN_CALL_LOG_BOOL"/> + <field name="KEY_ALLOW_EMERGENCY_VIDEO_CALLS_BOOL" since="24"/> + <field name="KEY_ALLOW_LOCAL_DTMF_TONES_BOOL"/> + <field name="KEY_ALLOW_MERGE_WIFI_CALLS_WHEN_VOWIFI_OFF_BOOL" since="25"/> + <field name="KEY_ALLOW_NON_EMERGENCY_CALLS_IN_ECM_BOOL" since="24"/> + <field name="KEY_ALWAYS_SHOW_EMERGENCY_ALERT_ONOFF_BOOL" since="24"/> + <field name="KEY_APN_EXPAND_BOOL"/> + <field name="KEY_AUTO_RETRY_ENABLED_BOOL"/> + <field name="KEY_CALL_FORWARDING_BLOCKS_WHILE_ROAMING_STRING_ARRAY" since="26"/> + <field name="KEY_CARRIER_ALLOW_TURNOFF_IMS_BOOL"/> + <field name="KEY_CARRIER_DATA_CALL_PERMANENT_FAILURE_STRINGS" since="26"/> + <field name="KEY_CARRIER_FORCE_DISABLE_ETWS_CMAS_TEST_BOOL" since="24"/> + <field name="KEY_CARRIER_IMS_GBA_REQUIRED_BOOL" since="24"/> + <field name="KEY_CARRIER_INSTANT_LETTERING_AVAILABLE_BOOL" since="24"/> + <field name="KEY_CARRIER_INSTANT_LETTERING_ENCODING_STRING" since="24"/> + <field name="KEY_CARRIER_INSTANT_LETTERING_ESCAPED_CHARS_STRING" since="24"/> + <field name="KEY_CARRIER_INSTANT_LETTERING_INVALID_CHARS_STRING" since="24"/> + <field name="KEY_CARRIER_INSTANT_LETTERING_LENGTH_LIMIT_INT" since="24"/> + <field name="KEY_CARRIER_SETTINGS_ENABLE_BOOL"/> + <field name="KEY_CARRIER_USE_IMS_FIRST_FOR_EMERGENCY_BOOL" since="24"/> + <field name="KEY_CARRIER_VOLTE_AVAILABLE_BOOL"/> + <field name="KEY_CARRIER_VOLTE_PROVISIONED_BOOL" since="26"/> + <field name="KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL"/> + <field name="KEY_CARRIER_VOLTE_TTY_SUPPORTED_BOOL"/> + <field name="KEY_CARRIER_VT_AVAILABLE_BOOL"/> + <field name="KEY_CARRIER_VVM_PACKAGE_NAME_STRING" deprecated="26"/> + <field name="KEY_CARRIER_VVM_PACKAGE_NAME_STRING_ARRAY" since="26"/> + <field name="KEY_CARRIER_WFC_IMS_AVAILABLE_BOOL"/> + <field name="KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL" since="24"/> + <field name="KEY_CDMA_3WAYCALL_FLASH_DELAY_INT" since="26"/> + <field name="KEY_CDMA_DTMF_TONE_DELAY_INT" since="24"/> + <field name="KEY_CDMA_NONROAMING_NETWORKS_STRING_ARRAY"/> + <field name="KEY_CDMA_ROAMING_NETWORKS_STRING_ARRAY"/> + <field name="KEY_CI_ACTION_ON_SYS_UPDATE_BOOL" since="24"/> + <field name="KEY_CI_ACTION_ON_SYS_UPDATE_EXTRA_STRING" since="24"/> + <field name="KEY_CI_ACTION_ON_SYS_UPDATE_EXTRA_VAL_STRING" since="24"/> + <field name="KEY_CI_ACTION_ON_SYS_UPDATE_INTENT_STRING" since="24"/> + <field name="KEY_CONFIG_IMS_PACKAGE_OVERRIDE_STRING" since="26"/> + <field name="KEY_CSP_ENABLED_BOOL"/> + <field name="KEY_DATA_LIMIT_THRESHOLD_BYTES_LONG" since="26"/> + <field name="KEY_DATA_WARNING_THRESHOLD_BYTES_LONG" since="26"/> + <field name="KEY_DEFAULT_SIM_CALL_MANAGER_STRING"/> + <field name="KEY_DEFAULT_VM_NUMBER_STRING" since="26"/> + <field name="KEY_DIAL_STRING_REPLACE_STRING_ARRAY" since="26"/> + <field name="KEY_DISABLE_CDMA_ACTIVATION_CODE_BOOL"/> + <field name="KEY_DROP_VIDEO_CALL_WHEN_ANSWERING_AUDIO_CALL_BOOL" since="25"/> + <field name="KEY_DTMF_TYPE_ENABLED_BOOL"/> + <field name="KEY_DURATION_BLOCKING_DISABLED_AFTER_EMERGENCY_INT" since="24"/> + <field name="KEY_EDITABLE_ENHANCED_4G_LTE_BOOL" since="24"/> + <field name="KEY_EDITABLE_VOICEMAIL_NUMBER_BOOL" since="26"/> + <field name="KEY_EDITABLE_VOICEMAIL_NUMBER_SETTING_BOOL" since="27"/> + <field name="KEY_ENABLE_DIALER_KEY_VIBRATION_BOOL"/> + <field name="KEY_FORCE_HOME_NETWORK_BOOL"/> + <field name="KEY_GSM_DTMF_TONE_DELAY_INT" since="24"/> + <field name="KEY_GSM_NONROAMING_NETWORKS_STRING_ARRAY"/> + <field name="KEY_GSM_ROAMING_NETWORKS_STRING_ARRAY"/> + <field name="KEY_HAS_IN_CALL_NOISE_SUPPRESSION_BOOL"/> + <field name="KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL"/> + <field name="KEY_HIDE_ENHANCED_4G_LTE_BOOL" since="26"/> + <field name="KEY_HIDE_IMS_APN_BOOL" since="24"/> + <field name="KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL" since="24"/> + <field name="KEY_HIDE_SIM_LOCK_SETTINGS_BOOL"/> + <field name="KEY_IGNORE_SIM_NETWORK_LOCKED_EVENTS_BOOL"/> + <field name="KEY_IMS_CONFERENCE_SIZE_LIMIT_INT" since="26"/> + <field name="KEY_IMS_DTMF_TONE_DELAY_INT" since="24"/> + <field name="KEY_IS_IMS_CONFERENCE_SIZE_ENFORCED_BOOL" since="26"/> + <field name="KEY_MDN_IS_ADDITIONAL_VOICEMAIL_NUMBER_BOOL" since="26"/> + <field name="KEY_MMS_ALIAS_ENABLED_BOOL"/> + <field name="KEY_MMS_ALIAS_MAX_CHARS_INT"/> + <field name="KEY_MMS_ALIAS_MIN_CHARS_INT"/> + <field name="KEY_MMS_ALLOW_ATTACH_AUDIO_BOOL"/> + <field name="KEY_MMS_APPEND_TRANSACTION_ID_BOOL"/> + <field name="KEY_MMS_EMAIL_GATEWAY_NUMBER_STRING"/> + <field name="KEY_MMS_GROUP_MMS_ENABLED_BOOL"/> + <field name="KEY_MMS_HTTP_PARAMS_STRING"/> + <field name="KEY_MMS_HTTP_SOCKET_TIMEOUT_INT"/> + <field name="KEY_MMS_MAX_IMAGE_HEIGHT_INT"/> + <field name="KEY_MMS_MAX_IMAGE_WIDTH_INT"/> + <field name="KEY_MMS_MAX_MESSAGE_SIZE_INT"/> + <field name="KEY_MMS_MESSAGE_TEXT_MAX_SIZE_INT"/> + <field name="KEY_MMS_MMS_DELIVERY_REPORT_ENABLED_BOOL"/> + <field name="KEY_MMS_MMS_ENABLED_BOOL"/> + <field name="KEY_MMS_MMS_READ_REPORT_ENABLED_BOOL"/> + <field name="KEY_MMS_MULTIPART_SMS_ENABLED_BOOL"/> + <field name="KEY_MMS_NAI_SUFFIX_STRING"/> + <field name="KEY_MMS_NOTIFY_WAP_MMSC_ENABLED_BOOL"/> + <field name="KEY_MMS_RECIPIENT_LIMIT_INT"/> + <field name="KEY_MMS_SEND_MULTIPART_SMS_AS_SEPARATE_MESSAGES_BOOL"/> + <field name="KEY_MMS_SHOW_CELL_BROADCAST_APP_LINKS_BOOL"/> + <field name="KEY_MMS_SMS_DELIVERY_REPORT_ENABLED_BOOL"/> + <field name="KEY_MMS_SMS_TO_MMS_TEXT_LENGTH_THRESHOLD_INT"/> + <field name="KEY_MMS_SMS_TO_MMS_TEXT_THRESHOLD_INT"/> + <field name="KEY_MMS_SUBJECT_MAX_LENGTH_INT"/> + <field name="KEY_MMS_SUPPORT_HTTP_CHARSET_HEADER_BOOL"/> + <field name="KEY_MMS_SUPPORT_MMS_CONTENT_DISPOSITION_BOOL"/> + <field name="KEY_MMS_UA_PROF_TAG_NAME_STRING"/> + <field name="KEY_MMS_UA_PROF_URL_STRING"/> + <field name="KEY_MMS_USER_AGENT_STRING"/> + <field name="KEY_MONTHLY_DATA_CYCLE_DAY_INT" since="26"/> + <field name="KEY_ONLY_SINGLE_DC_ALLOWED_INT_ARRAY" since="26"/> + <field name="KEY_OPERATOR_SELECTION_EXPAND_BOOL"/> + <field name="KEY_PREFER_2G_BOOL"/> + <field name="KEY_RCS_CONFIG_SERVER_URL_STRING" since="26"/> + <field name="KEY_REQUIRE_ENTITLEMENT_CHECKS_BOOL" since="24"/> + <field name="KEY_RESTART_RADIO_ON_PDP_FAIL_REGULAR_DEACTIVATION_BOOL" since="26"/> + <field name="KEY_SHOW_APN_SETTING_CDMA_BOOL"/> + <field name="KEY_SHOW_CDMA_CHOICES_BOOL"/> + <field name="KEY_SHOW_ICCID_IN_SIM_STATUS_BOOL" since="24"/> + <field name="KEY_SHOW_ONSCREEN_DIAL_BUTTON_BOOL"/> + <field name="KEY_SIMPLIFIED_NETWORK_SETTINGS_BOOL" since="26"/> + <field name="KEY_SIM_NETWORK_UNLOCK_ALLOW_DISMISS_BOOL"/> + <field name="KEY_SMS_REQUIRES_DESTINATION_NUMBER_CONVERSION_BOOL" since="26"/> + <field name="KEY_SUPPORT_3GPP_CALL_FORWARDING_WHILE_ROAMING_BOOL" since="26"/> + <field name="KEY_SUPPORT_CONFERENCE_CALL_BOOL" since="24"/> + <field name="KEY_SUPPORT_PAUSE_IMS_VIDEO_CALLS_BOOL"/> + <field name="KEY_SUPPORT_SWAP_AFTER_MERGE_BOOL"/> + <field name="KEY_TREAT_DOWNGRADED_VIDEO_CALLS_AS_VIDEO_CALLS_BOOL" since="25"/> + <field name="KEY_USE_HFA_FOR_PROVISIONING_BOOL"/> + <field name="KEY_USE_OTASP_FOR_PROVISIONING_BOOL"/> + <field name="KEY_USE_RCS_PRESENCE_BOOL" since="24"/> + <field name="KEY_VOICEMAIL_NOTIFICATION_PERSISTENT_BOOL"/> + <field name="KEY_VOICE_PRIVACY_DISABLE_UI_BOOL"/> + <field name="KEY_VOLTE_REPLACEMENT_RAT_INT"/> + <field name="KEY_VVM_CELLULAR_DATA_REQUIRED_BOOL" since="24"/> + <field name="KEY_VVM_CLIENT_PREFIX_STRING" since="26"/> + <field name="KEY_VVM_DESTINATION_NUMBER_STRING"/> + <field name="KEY_VVM_DISABLED_CAPABILITIES_STRING_ARRAY" since="26"/> + <field name="KEY_VVM_LEGACY_MODE_ENABLED_BOOL" since="26"/> + <field name="KEY_VVM_PORT_NUMBER_INT"/> + <field name="KEY_VVM_PREFETCH_BOOL" since="24"/> + <field name="KEY_VVM_SSL_ENABLED_BOOL" since="26"/> + <field name="KEY_VVM_TYPE_STRING"/> + <field name="KEY_WORLD_PHONE_BOOL"/> + </class> + <class name="android/telephony/CellIdentityCdma" since="17"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getBasestationId()I"/> + <method name="getLatitude()I"/> + <method name="getLongitude()I"/> + <method name="getNetworkId()I"/> + <method name="getOperatorAlphaLong()Ljava/lang/CharSequence;" since="27"/> + <method name="getOperatorAlphaShort()Ljava/lang/CharSequence;" since="27"/> + <method name="getSystemId()I"/> + <field name="CREATOR"/> + </class> + <class name="android/telephony/CellIdentityGsm" since="17"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getArfcn()I" since="24"/> + <method name="getBsic()I" since="24"/> + <method name="getCid()I"/> + <method name="getLac()I"/> + <method name="getMcc()I" deprecated="27"/> + <method name="getMccStr()Ljava/lang/String;" since="27"/> + <method name="getMnc()I" deprecated="27"/> + <method name="getMncStr()Ljava/lang/String;" since="27"/> + <method name="getMobileNetworkOperator()Ljava/lang/String;" since="27"/> + <method name="getOperatorAlphaLong()Ljava/lang/CharSequence;" since="27"/> + <method name="getOperatorAlphaShort()Ljava/lang/CharSequence;" since="27"/> + <method name="getPsc()I" deprecated="18"/> + <field name="CREATOR"/> + </class> + <class name="android/telephony/CellIdentityLte" since="17"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getCi()I"/> + <method name="getEarfcn()I" since="24"/> + <method name="getMcc()I" deprecated="27"/> + <method name="getMccStr()Ljava/lang/String;" since="27"/> + <method name="getMnc()I" deprecated="27"/> + <method name="getMncStr()Ljava/lang/String;" since="27"/> + <method name="getMobileNetworkOperator()Ljava/lang/String;" since="27"/> + <method name="getOperatorAlphaLong()Ljava/lang/CharSequence;" since="27"/> + <method name="getOperatorAlphaShort()Ljava/lang/CharSequence;" since="27"/> + <method name="getPci()I"/> + <method name="getTac()I"/> + <field name="CREATOR"/> + </class> + <class name="android/telephony/CellIdentityWcdma" since="18"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getCid()I"/> + <method name="getLac()I"/> + <method name="getMcc()I" deprecated="27"/> + <method name="getMccStr()Ljava/lang/String;" since="27"/> + <method name="getMnc()I" deprecated="27"/> + <method name="getMncStr()Ljava/lang/String;" since="27"/> + <method name="getMobileNetworkOperator()Ljava/lang/String;" since="27"/> + <method name="getOperatorAlphaLong()Ljava/lang/CharSequence;" since="27"/> + <method name="getOperatorAlphaShort()Ljava/lang/CharSequence;" since="27"/> + <method name="getPsc()I"/> + <method name="getUarfcn()I" since="24"/> + <field name="CREATOR"/> + </class> + <class name="android/telephony/CellInfo" since="17"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getTimeStamp()J"/> + <method name="isRegistered()Z"/> + <field name="CREATOR"/> + </class> + <class name="android/telephony/CellInfoCdma" since="17"> + <extends name="android/telephony/CellInfo"/> + <method name="<init>()V"/> + <method name="getCellIdentity()Landroid/telephony/CellIdentityCdma;"/> + <method name="getCellSignalStrength()Landroid/telephony/CellSignalStrengthCdma;"/> + <field name="CREATOR"/> + </class> + <class name="android/telephony/CellInfoGsm" since="17"> + <extends name="android/telephony/CellInfo"/> + <method name="<init>()V"/> + <method name="getCellIdentity()Landroid/telephony/CellIdentityGsm;"/> + <method name="getCellSignalStrength()Landroid/telephony/CellSignalStrengthGsm;"/> + <field name="CREATOR"/> + </class> + <class name="android/telephony/CellInfoLte" since="17"> + <extends name="android/telephony/CellInfo"/> + <method name="<init>()V"/> + <method name="getCellIdentity()Landroid/telephony/CellIdentityLte;"/> + <method name="getCellSignalStrength()Landroid/telephony/CellSignalStrengthLte;"/> + <field name="CREATOR"/> + </class> + <class name="android/telephony/CellInfoWcdma" since="18"> + <extends name="android/telephony/CellInfo"/> + <method name="<init>()V"/> + <method name="getCellIdentity()Landroid/telephony/CellIdentityWcdma;"/> + <method name="getCellSignalStrength()Landroid/telephony/CellSignalStrengthWcdma;"/> + <field name="CREATOR"/> + </class> + <class name="android/telephony/CellLocation" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getEmpty()Landroid/telephony/CellLocation;"/> + <method name="requestLocationUpdate()V"/> + </class> + <class name="android/telephony/CellSignalStrength" since="17"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAsuLevel()I"/> + <method name="getDbm()I"/> + <method name="getLevel()I"/> + <field name="SIGNAL_STRENGTH_GOOD" since="23"/> + <field name="SIGNAL_STRENGTH_GREAT" since="23"/> + <field name="SIGNAL_STRENGTH_MODERATE" since="23"/> + <field name="SIGNAL_STRENGTH_NONE_OR_UNKNOWN" since="23"/> + <field name="SIGNAL_STRENGTH_POOR" since="23"/> + </class> + <class name="android/telephony/CellSignalStrengthCdma" since="17"> + <extends name="android/telephony/CellSignalStrength"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getCdmaDbm()I"/> + <method name="getCdmaEcio()I"/> + <method name="getCdmaLevel()I"/> + <method name="getEvdoDbm()I"/> + <method name="getEvdoEcio()I"/> + <method name="getEvdoLevel()I"/> + <method name="getEvdoSnr()I"/> + <field name="CREATOR"/> + </class> + <class name="android/telephony/CellSignalStrengthGsm" since="17"> + <extends name="android/telephony/CellSignalStrength"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getTimingAdvance()I" since="26"/> + <field name="CREATOR"/> + </class> + <class name="android/telephony/CellSignalStrengthLte" since="17"> + <extends name="android/telephony/CellSignalStrength"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getCqi()I" since="26"/> + <method name="getRsrp()I" since="26"/> + <method name="getRsrq()I" since="26"/> + <method name="getRssnr()I" since="26"/> + <method name="getTimingAdvance()I"/> + <field name="CREATOR"/> + </class> + <class name="android/telephony/CellSignalStrengthWcdma" since="18"> + <extends name="android/telephony/CellSignalStrength"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <field name="CREATOR"/> + </class> + <class name="android/telephony/IccOpenLogicalChannelResponse" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getChannel()I"/> + <method name="getSelectResponse()[B"/> + <method name="getStatus()I"/> + <field name="CREATOR"/> + <field name="INVALID_CHANNEL"/> + <field name="STATUS_MISSING_RESOURCE"/> + <field name="STATUS_NO_ERROR"/> + <field name="STATUS_NO_SUCH_ELEMENT"/> + <field name="STATUS_UNKNOWN_ERROR"/> + </class> + <class name="android/telephony/MbmsDownloadSession" since="27"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable"/> + <method name="<init>()V"/> + <method name="cancelDownload(Landroid/telephony/mbms/DownloadRequest;)V"/> + <method name="create(Landroid/content/Context;Landroid/telephony/mbms/MbmsDownloadSessionCallback;ILandroid/os/Handler;)Landroid/telephony/MbmsDownloadSession;"/> + <method name="create(Landroid/content/Context;Landroid/telephony/mbms/MbmsDownloadSessionCallback;Landroid/os/Handler;)Landroid/telephony/MbmsDownloadSession;"/> + <method name="download(Landroid/telephony/mbms/DownloadRequest;)V"/> + <method name="getDownloadStatus(Landroid/telephony/mbms/DownloadRequest;Landroid/telephony/mbms/FileInfo;)I"/> + <method name="getTempFileRootDirectory()Ljava/io/File;"/> + <method name="listPendingDownloads()Ljava/util/List;"/> + <method name="registerStateCallback(Landroid/telephony/mbms/DownloadRequest;Landroid/telephony/mbms/DownloadStateCallback;Landroid/os/Handler;)V"/> + <method name="requestUpdateFileServices(Ljava/util/List;)V"/> + <method name="resetDownloadKnowledge(Landroid/telephony/mbms/DownloadRequest;)V"/> + <method name="setTempFileRootDirectory(Ljava/io/File;)V"/> + <method name="unregisterStateCallback(Landroid/telephony/mbms/DownloadRequest;Landroid/telephony/mbms/DownloadStateCallback;)V"/> + <field name="DEFAULT_TOP_LEVEL_TEMP_DIRECTORY"/> + <field name="EXTRA_MBMS_COMPLETED_FILE_URI"/> + <field name="EXTRA_MBMS_DOWNLOAD_REQUEST"/> + <field name="EXTRA_MBMS_DOWNLOAD_RESULT"/> + <field name="EXTRA_MBMS_FILE_INFO"/> + <field name="RESULT_CANCELLED"/> + <field name="RESULT_DOWNLOAD_FAILURE"/> + <field name="RESULT_EXPIRED"/> + <field name="RESULT_FILE_ROOT_UNREACHABLE"/> + <field name="RESULT_IO_ERROR"/> + <field name="RESULT_OUT_OF_STORAGE"/> + <field name="RESULT_SERVICE_ID_NOT_DEFINED"/> + <field name="RESULT_SUCCESSFUL"/> + <field name="STATUS_ACTIVELY_DOWNLOADING"/> + <field name="STATUS_PENDING_DOWNLOAD"/> + <field name="STATUS_PENDING_DOWNLOAD_WINDOW"/> + <field name="STATUS_PENDING_REPAIR"/> + <field name="STATUS_UNKNOWN"/> + </class> + <class name="android/telephony/MbmsStreamingSession" since="27"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable"/> + <method name="<init>()V"/> + <method name="create(Landroid/content/Context;Landroid/telephony/mbms/MbmsStreamingSessionCallback;ILandroid/os/Handler;)Landroid/telephony/MbmsStreamingSession;"/> + <method name="create(Landroid/content/Context;Landroid/telephony/mbms/MbmsStreamingSessionCallback;Landroid/os/Handler;)Landroid/telephony/MbmsStreamingSession;"/> + <method name="requestUpdateStreamingServices(Ljava/util/List;)V"/> + <method name="startStreaming(Landroid/telephony/mbms/StreamingServiceInfo;Landroid/telephony/mbms/StreamingServiceCallback;Landroid/os/Handler;)Landroid/telephony/mbms/StreamingService;"/> + </class> + <class name="android/telephony/NeighboringCellInfo" since="3"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V" deprecated="16"/> + <method name="<init>(II)V" deprecated="16"/> + <method name="<init>(ILjava/lang/String;I)V" since="7"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="getCid()I"/> + <method name="getLac()I" since="5"/> + <method name="getNetworkType()I" since="5"/> + <method name="getPsc()I" since="5"/> + <method name="getRssi()I"/> + <method name="setCid(I)V" deprecated="16"/> + <method name="setRssi(I)V" deprecated="16"/> + <field name="CREATOR"/> + <field name="UNKNOWN_CID"/> + <field name="UNKNOWN_RSSI"/> + </class> + <class name="android/telephony/PhoneNumberFormattingTextWatcher" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/TextWatcher"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V" since="21"/> + </class> + <class name="android/telephony/PhoneNumberUtils" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addTtsSpan(Landroid/text/Spannable;II)V" since="23"/> + <method name="calledPartyBCDFragmentToString([BII)Ljava/lang/String;" deprecated="27"/> + <method name="calledPartyBCDFragmentToString([BIII)Ljava/lang/String;" since="27"/> + <method name="calledPartyBCDToString([BII)Ljava/lang/String;" deprecated="27"/> + <method name="calledPartyBCDToString([BIII)Ljava/lang/String;" since="27"/> + <method name="compare(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)Z" since="5"/> + <method name="compare(Ljava/lang/String;Ljava/lang/String;)Z"/> + <method name="convertKeypadLettersToDigits(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="createTtsSpan(Ljava/lang/String;)Landroid/text/style/TtsSpan;" since="23"/> + <method name="createTtsSpannable(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;" since="23"/> + <method name="extractNetworkPortion(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="extractPostDialPortion(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="formatJapaneseNumber(Landroid/text/Editable;)V" since="3" deprecated="21"/> + <method name="formatNanpNumber(Landroid/text/Editable;)V" deprecated="21"/> + <method name="formatNumber(Landroid/text/Editable;I)V" deprecated="21"/> + <method name="formatNumber(Ljava/lang/String;)Ljava/lang/String;" deprecated="21"/> + <method name="formatNumber(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" since="21"/> + <method name="formatNumber(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" since="21"/> + <method name="formatNumberToE164(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" since="21"/> + <method name="formatNumberToRFC3966(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" since="23"/> + <method name="getFormatTypeForLocale(Ljava/util/Locale;)I" deprecated="21"/> + <method name="getNumberFromIntent(Landroid/content/Intent;Landroid/content/Context;)Ljava/lang/String;"/> + <method name="getStrippedReversed(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="is12Key(C)Z"/> + <method name="isDialable(C)Z"/> + <method name="isEmergencyNumber(Ljava/lang/String;)Z"/> + <method name="isGlobalPhoneNumber(Ljava/lang/String;)Z"/> + <method name="isISODigit(C)Z"/> + <method name="isLocalEmergencyNumber(Landroid/content/Context;Ljava/lang/String;)Z" since="21"/> + <method name="isNonSeparator(C)Z"/> + <method name="isReallyDialable(C)Z"/> + <method name="isStartsPostDial(C)Z"/> + <method name="isVoiceMailNumber(Ljava/lang/String;)Z" since="21"/> + <method name="isWellFormedSmsAddress(Ljava/lang/String;)Z"/> + <method name="networkPortionToCalledPartyBCD(Ljava/lang/String;)[B"/> + <method name="networkPortionToCalledPartyBCDWithLength(Ljava/lang/String;)[B"/> + <method name="normalizeNumber(Ljava/lang/String;)Ljava/lang/String;" since="21"/> + <method name="numberToCalledPartyBCD(Ljava/lang/String;)[B" deprecated="27"/> + <method name="numberToCalledPartyBCD(Ljava/lang/String;I)[B" since="27"/> + <method name="replaceUnicodeDigits(Ljava/lang/String;)Ljava/lang/String;" since="21"/> + <method name="stringFromStringAndTOA(Ljava/lang/String;I)Ljava/lang/String;"/> + <method name="stripSeparators(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="toCallerIDMinMatch(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="toaFromString(Ljava/lang/String;)I"/> + <field name="BCD_EXTENDED_TYPE_CALLED_PARTY" since="27"/> + <field name="BCD_EXTENDED_TYPE_EF_ADN" since="27"/> + <field name="FORMAT_JAPAN" since="3"/> + <field name="FORMAT_NANP"/> + <field name="FORMAT_UNKNOWN"/> + <field name="PAUSE"/> + <field name="TOA_International"/> + <field name="TOA_Unknown"/> + <field name="WAIT"/> + <field name="WILD"/> + </class> + <class name="android/telephony/PhoneStateListener" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onCallForwardingIndicatorChanged(Z)V"/> + <method name="onCallStateChanged(ILjava/lang/String;)V"/> + <method name="onCellInfoChanged(Ljava/util/List;)V" since="17"/> + <method name="onCellLocationChanged(Landroid/telephony/CellLocation;)V"/> + <method name="onDataActivity(I)V"/> + <method name="onDataConnectionStateChanged(I)V"/> + <method name="onDataConnectionStateChanged(II)V" since="7"/> + <method name="onMessageWaitingIndicatorChanged(Z)V"/> + <method name="onServiceStateChanged(Landroid/telephony/ServiceState;)V"/> + <method name="onSignalStrengthChanged(I)V" deprecated="16"/> + <method name="onSignalStrengthsChanged(Landroid/telephony/SignalStrength;)V" since="7"/> + <field name="LISTEN_CALL_FORWARDING_INDICATOR"/> + <field name="LISTEN_CALL_STATE"/> + <field name="LISTEN_CELL_INFO" since="17"/> + <field name="LISTEN_CELL_LOCATION"/> + <field name="LISTEN_DATA_ACTIVITY"/> + <field name="LISTEN_DATA_CONNECTION_STATE"/> + <field name="LISTEN_MESSAGE_WAITING_INDICATOR"/> + <field name="LISTEN_NONE"/> + <field name="LISTEN_SERVICE_STATE"/> + <field name="LISTEN_SIGNAL_STRENGTH" deprecated="16"/> + <field name="LISTEN_SIGNAL_STRENGTHS" since="7"/> + </class> + <class name="android/telephony/ServiceState" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="<init>(Landroid/telephony/ServiceState;)V"/> + <method name="copyFrom(Landroid/telephony/ServiceState;)V"/> + <method name="getIsManualSelection()Z"/> + <method name="getOperatorAlphaLong()Ljava/lang/String;"/> + <method name="getOperatorAlphaShort()Ljava/lang/String;"/> + <method name="getOperatorNumeric()Ljava/lang/String;"/> + <method name="getRoaming()Z"/> + <method name="getState()I"/> + <method name="setIsManualSelection(Z)V"/> + <method name="setOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="setRoaming(Z)V"/> + <method name="setState(I)V"/> + <method name="setStateOff()V"/> + <method name="setStateOutOfService()V"/> + <field name="CREATOR"/> + <field name="STATE_EMERGENCY_ONLY"/> + <field name="STATE_IN_SERVICE"/> + <field name="STATE_OUT_OF_SERVICE"/> + <field name="STATE_POWER_OFF"/> + </class> + <class name="android/telephony/SignalStrength" since="7"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getCdmaDbm()I"/> + <method name="getCdmaEcio()I"/> + <method name="getEvdoDbm()I"/> + <method name="getEvdoEcio()I"/> + <method name="getEvdoSnr()I"/> + <method name="getGsmBitErrorRate()I"/> + <method name="getGsmSignalStrength()I"/> + <method name="getLevel()I" since="23"/> + <method name="isGsm()Z"/> + </class> + <class name="android/telephony/SmsManager" since="4"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="createAppSpecificSmsToken(Landroid/app/PendingIntent;)Ljava/lang/String;" since="26"/> + <method name="divideMessage(Ljava/lang/String;)Ljava/util/ArrayList;"/> + <method name="downloadMultimediaMessage(Landroid/content/Context;Ljava/lang/String;Landroid/net/Uri;Landroid/os/Bundle;Landroid/app/PendingIntent;)V" since="21"/> + <method name="getCarrierConfigValues()Landroid/os/Bundle;" since="21"/> + <method name="getDefault()Landroid/telephony/SmsManager;"/> + <method name="getDefaultSmsSubscriptionId()I" since="22"/> + <method name="getSmsManagerForSubscriptionId(I)Landroid/telephony/SmsManager;" since="22"/> + <method name="getSubscriptionId()I" since="22"/> + <method name="injectSmsPdu([BLjava/lang/String;Landroid/app/PendingIntent;)V" since="22"/> + <method name="sendDataMessage(Ljava/lang/String;Ljava/lang/String;S[BLandroid/app/PendingIntent;Landroid/app/PendingIntent;)V"/> + <method name="sendMultimediaMessage(Landroid/content/Context;Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/app/PendingIntent;)V" since="21"/> + <method name="sendMultipartTextMessage(Ljava/lang/String;Ljava/lang/String;Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;)V"/> + <method name="sendTextMessage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent;)V"/> + <field name="EXTRA_MMS_DATA" since="21"/> + <field name="EXTRA_MMS_HTTP_STATUS" since="22"/> + <field name="MMS_CONFIG_ALIAS_ENABLED" since="21"/> + <field name="MMS_CONFIG_ALIAS_MAX_CHARS" since="21"/> + <field name="MMS_CONFIG_ALIAS_MIN_CHARS" since="21"/> + <field name="MMS_CONFIG_ALLOW_ATTACH_AUDIO" since="21"/> + <field name="MMS_CONFIG_APPEND_TRANSACTION_ID" since="21"/> + <field name="MMS_CONFIG_EMAIL_GATEWAY_NUMBER" since="21"/> + <field name="MMS_CONFIG_GROUP_MMS_ENABLED" since="21"/> + <field name="MMS_CONFIG_HTTP_PARAMS" since="21"/> + <field name="MMS_CONFIG_HTTP_SOCKET_TIMEOUT" since="21"/> + <field name="MMS_CONFIG_MAX_IMAGE_HEIGHT" since="21"/> + <field name="MMS_CONFIG_MAX_IMAGE_WIDTH" since="21"/> + <field name="MMS_CONFIG_MAX_MESSAGE_SIZE" since="21"/> + <field name="MMS_CONFIG_MESSAGE_TEXT_MAX_SIZE" since="21"/> + <field name="MMS_CONFIG_MMS_DELIVERY_REPORT_ENABLED" since="21"/> + <field name="MMS_CONFIG_MMS_ENABLED" since="21"/> + <field name="MMS_CONFIG_MMS_READ_REPORT_ENABLED" since="21"/> + <field name="MMS_CONFIG_MULTIPART_SMS_ENABLED" since="21"/> + <field name="MMS_CONFIG_NAI_SUFFIX" since="21"/> + <field name="MMS_CONFIG_NOTIFY_WAP_MMSC_ENABLED" since="21"/> + <field name="MMS_CONFIG_RECIPIENT_LIMIT" since="21"/> + <field name="MMS_CONFIG_SEND_MULTIPART_SMS_AS_SEPARATE_MESSAGES" since="21"/> + <field name="MMS_CONFIG_SHOW_CELL_BROADCAST_APP_LINKS" since="22"/> + <field name="MMS_CONFIG_SMS_DELIVERY_REPORT_ENABLED" since="21"/> + <field name="MMS_CONFIG_SMS_TO_MMS_TEXT_LENGTH_THRESHOLD" since="21"/> + <field name="MMS_CONFIG_SMS_TO_MMS_TEXT_THRESHOLD" since="21"/> + <field name="MMS_CONFIG_SUBJECT_MAX_LENGTH" since="21"/> + <field name="MMS_CONFIG_SUPPORT_HTTP_CHARSET_HEADER" since="23"/> + <field name="MMS_CONFIG_SUPPORT_MMS_CONTENT_DISPOSITION" since="21"/> + <field name="MMS_CONFIG_UA_PROF_TAG_NAME" since="21"/> + <field name="MMS_CONFIG_UA_PROF_URL" since="21"/> + <field name="MMS_CONFIG_USER_AGENT" since="21"/> + <field name="MMS_ERROR_CONFIGURATION_ERROR" since="21"/> + <field name="MMS_ERROR_HTTP_FAILURE" since="21"/> + <field name="MMS_ERROR_INVALID_APN" since="21"/> + <field name="MMS_ERROR_IO_ERROR" since="21"/> + <field name="MMS_ERROR_NO_DATA_NETWORK" since="22"/> + <field name="MMS_ERROR_RETRY" since="21"/> + <field name="MMS_ERROR_UNABLE_CONNECT_MMS" since="21"/> + <field name="MMS_ERROR_UNSPECIFIED" since="21"/> + <field name="RESULT_ERROR_GENERIC_FAILURE"/> + <field name="RESULT_ERROR_LIMIT_EXCEEDED" since="27"/> + <field name="RESULT_ERROR_NO_SERVICE"/> + <field name="RESULT_ERROR_NULL_PDU"/> + <field name="RESULT_ERROR_RADIO_OFF"/> + <field name="RESULT_ERROR_SHORT_CODE_NEVER_ALLOWED" since="27"/> + <field name="RESULT_ERROR_SHORT_CODE_NOT_ALLOWED" since="27"/> + <field name="STATUS_ON_ICC_FREE"/> + <field name="STATUS_ON_ICC_READ"/> + <field name="STATUS_ON_ICC_SENT"/> + <field name="STATUS_ON_ICC_UNREAD"/> + <field name="STATUS_ON_ICC_UNSENT"/> + </class> + <class name="android/telephony/SmsMessage" since="4"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="calculateLength(Ljava/lang/CharSequence;Z)[I"/> + <method name="calculateLength(Ljava/lang/String;Z)[I"/> + <method name="createFromPdu([B)Landroid/telephony/SmsMessage;" deprecated="23"/> + <method name="createFromPdu([BLjava/lang/String;)Landroid/telephony/SmsMessage;" since="23"/> + <method name="getDisplayMessageBody()Ljava/lang/String;"/> + <method name="getDisplayOriginatingAddress()Ljava/lang/String;"/> + <method name="getEmailBody()Ljava/lang/String;"/> + <method name="getEmailFrom()Ljava/lang/String;"/> + <method name="getIndexOnIcc()I"/> + <method name="getIndexOnSim()I" deprecated="16"/> + <method name="getMessageBody()Ljava/lang/String;"/> + <method name="getMessageClass()Landroid/telephony/SmsMessage$MessageClass;"/> + <method name="getOriginatingAddress()Ljava/lang/String;"/> + <method name="getPdu()[B"/> + <method name="getProtocolIdentifier()I"/> + <method name="getPseudoSubject()Ljava/lang/String;"/> + <method name="getServiceCenterAddress()Ljava/lang/String;"/> + <method name="getStatus()I"/> + <method name="getStatusOnIcc()I"/> + <method name="getStatusOnSim()I" deprecated="16"/> + <method name="getSubmitPdu(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Landroid/telephony/SmsMessage$SubmitPdu;"/> + <method name="getSubmitPdu(Ljava/lang/String;Ljava/lang/String;S[BZ)Landroid/telephony/SmsMessage$SubmitPdu;"/> + <method name="getTPLayerLengthForPDU(Ljava/lang/String;)I"/> + <method name="getTimestampMillis()J"/> + <method name="getUserData()[B"/> + <method name="isCphsMwiMessage()Z"/> + <method name="isEmail()Z"/> + <method name="isMWIClearMessage()Z"/> + <method name="isMWISetMessage()Z"/> + <method name="isMwiDontStore()Z"/> + <method name="isReplace()Z"/> + <method name="isReplyPathPresent()Z"/> + <method name="isStatusReportMessage()Z"/> + <field name="ENCODING_16BIT"/> + <field name="ENCODING_7BIT"/> + <field name="ENCODING_8BIT"/> + <field name="ENCODING_UNKNOWN"/> + <field name="MAX_USER_DATA_BYTES"/> + <field name="MAX_USER_DATA_BYTES_WITH_HEADER"/> + <field name="MAX_USER_DATA_SEPTETS"/> + <field name="MAX_USER_DATA_SEPTETS_WITH_HEADER"/> + </class> + <class name="android/telephony/SmsMessage$MessageClass" since="4"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/telephony/SmsMessage$MessageClass;"/> + <method name="values()[Landroid/telephony/SmsMessage$MessageClass;"/> + <field name="CLASS_0"/> + <field name="CLASS_1"/> + <field name="CLASS_2"/> + <field name="CLASS_3"/> + <field name="UNKNOWN"/> + </class> + <class name="android/telephony/SmsMessage$SubmitPdu" since="4"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="encodedMessage"/> + <field name="encodedScAddress"/> + </class> + <class name="android/telephony/SubscriptionInfo" since="22"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="createIconBitmap(Landroid/content/Context;)Landroid/graphics/Bitmap;"/> + <method name="getCarrierName()Ljava/lang/CharSequence;"/> + <method name="getCountryIso()Ljava/lang/String;"/> + <method name="getDataRoaming()I"/> + <method name="getDisplayName()Ljava/lang/CharSequence;"/> + <method name="getIccId()Ljava/lang/String;"/> + <method name="getIconTint()I"/> + <method name="getMcc()I"/> + <method name="getMnc()I"/> + <method name="getNumber()Ljava/lang/String;"/> + <method name="getSimSlotIndex()I"/> + <method name="getSubscriptionId()I"/> + <field name="CREATOR"/> + </class> + <class name="android/telephony/SubscriptionManager" since="22"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addOnSubscriptionsChangedListener(Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener;)V"/> + <method name="from(Landroid/content/Context;)Landroid/telephony/SubscriptionManager;"/> + <method name="getActiveSubscriptionInfo(I)Landroid/telephony/SubscriptionInfo;"/> + <method name="getActiveSubscriptionInfoCount()I"/> + <method name="getActiveSubscriptionInfoCountMax()I"/> + <method name="getActiveSubscriptionInfoForSimSlotIndex(I)Landroid/telephony/SubscriptionInfo;"/> + <method name="getActiveSubscriptionInfoList()Ljava/util/List;"/> + <method name="getDefaultDataSubscriptionId()I" since="24"/> + <method name="getDefaultSmsSubscriptionId()I" since="24"/> + <method name="getDefaultSubscriptionId()I" since="24"/> + <method name="getDefaultVoiceSubscriptionId()I" since="24"/> + <method name="isNetworkRoaming(I)Z"/> + <method name="removeOnSubscriptionsChangedListener(Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener;)V"/> + <field name="ACTION_DEFAULT_SMS_SUBSCRIPTION_CHANGED" since="26"/> + <field name="ACTION_DEFAULT_SUBSCRIPTION_CHANGED" since="26"/> + <field name="DATA_ROAMING_DISABLE"/> + <field name="DATA_ROAMING_ENABLE"/> + <field name="EXTRA_SUBSCRIPTION_INDEX" since="26"/> + <field name="INVALID_SUBSCRIPTION_ID" since="24"/> + </class> + <class name="android/telephony/SubscriptionManager$OnSubscriptionsChangedListener" since="22"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onSubscriptionsChanged()V"/> + </class> + <class name="android/telephony/TelephonyManager" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="canChangeDtmfToneLength()Z" since="23"/> + <method name="createForPhoneAccountHandle(Landroid/telecom/PhoneAccountHandle;)Landroid/telephony/TelephonyManager;" since="26"/> + <method name="createForSubscriptionId(I)Landroid/telephony/TelephonyManager;" since="24"/> + <method name="getAllCellInfo()Ljava/util/List;" since="17"/> + <method name="getCallState()I"/> + <method name="getCarrierConfig()Landroid/os/PersistableBundle;" since="26"/> + <method name="getCellLocation()Landroid/telephony/CellLocation;" deprecated="26"/> + <method name="getDataActivity()I"/> + <method name="getDataNetworkType()I" since="24"/> + <method name="getDataState()I"/> + <method name="getDeviceId()Ljava/lang/String;" deprecated="26"/> + <method name="getDeviceId(I)Ljava/lang/String;" since="23" deprecated="26"/> + <method name="getDeviceSoftwareVersion()Ljava/lang/String;"/> + <method name="getForbiddenPlmns()[Ljava/lang/String;" since="26"/> + <method name="getGroupIdLevel1()Ljava/lang/String;" since="18"/> + <method name="getIccAuthentication(IILjava/lang/String;)Ljava/lang/String;" since="24"/> + <method name="getImei()Ljava/lang/String;" since="26"/> + <method name="getImei(I)Ljava/lang/String;" since="26"/> + <method name="getLine1Number()Ljava/lang/String;"/> + <method name="getMeid()Ljava/lang/String;" since="26"/> + <method name="getMeid(I)Ljava/lang/String;" since="26"/> + <method name="getMmsUAProfUrl()Ljava/lang/String;" since="19"/> + <method name="getMmsUserAgent()Ljava/lang/String;" since="19"/> + <method name="getNeighboringCellInfo()Ljava/util/List;" since="3" deprecated="23"/> + <method name="getNetworkCountryIso()Ljava/lang/String;"/> + <method name="getNetworkOperator()Ljava/lang/String;"/> + <method name="getNetworkOperatorName()Ljava/lang/String;"/> + <method name="getNetworkSpecifier()Ljava/lang/String;" since="26"/> + <method name="getNetworkType()I"/> + <method name="getPhoneCount()I" since="23"/> + <method name="getPhoneType()I"/> + <method name="getServiceState()Landroid/telephony/ServiceState;" since="26"/> + <method name="getSignalStrength()Landroid/telephony/SignalStrength;" since="27"/> + <method name="getSimCountryIso()Ljava/lang/String;"/> + <method name="getSimOperator()Ljava/lang/String;"/> + <method name="getSimOperatorName()Ljava/lang/String;"/> + <method name="getSimSerialNumber()Ljava/lang/String;"/> + <method name="getSimState()I"/> + <method name="getSimState(I)I" since="26"/> + <method name="getSubscriberId()Ljava/lang/String;"/> + <method name="getVisualVoicemailPackageName()Ljava/lang/String;" since="26"/> + <method name="getVoiceMailAlphaTag()Ljava/lang/String;"/> + <method name="getVoiceMailNumber()Ljava/lang/String;"/> + <method name="getVoiceNetworkType()I" since="24"/> + <method name="getVoicemailRingtoneUri(Landroid/telecom/PhoneAccountHandle;)Landroid/net/Uri;" since="24"/> + <method name="hasCarrierPrivileges()Z" since="22"/> + <method name="hasIccCard()Z" since="5"/> + <method name="iccCloseLogicalChannel(I)Z" since="21"/> + <method name="iccExchangeSimIO(IIIIILjava/lang/String;)[B" since="21"/> + <method name="iccOpenLogicalChannel(Ljava/lang/String;)Landroid/telephony/IccOpenLogicalChannelResponse;" since="21" deprecated="26"/> + <method name="iccOpenLogicalChannel(Ljava/lang/String;I)Landroid/telephony/IccOpenLogicalChannelResponse;" since="26"/> + <method name="iccTransmitApduBasicChannel(IIIIILjava/lang/String;)Ljava/lang/String;" since="21"/> + <method name="iccTransmitApduLogicalChannel(IIIIIILjava/lang/String;)Ljava/lang/String;" since="21"/> + <method name="isConcurrentVoiceAndDataSupported()Z" since="26"/> + <method name="isDataEnabled()Z" since="26"/> + <method name="isHearingAidCompatibilitySupported()Z" since="23"/> + <method name="isNetworkRoaming()Z"/> + <method name="isSmsCapable()Z" since="21"/> + <method name="isTtyModeSupported()Z" since="23" deprecated="27"/> + <method name="isVoiceCapable()Z" since="22"/> + <method name="isVoicemailVibrationEnabled(Landroid/telecom/PhoneAccountHandle;)Z" since="24"/> + <method name="isWorldPhone()Z" since="23"/> + <method name="listen(Landroid/telephony/PhoneStateListener;I)V"/> + <method name="sendDialerSpecialCode(Ljava/lang/String;)V" since="26"/> + <method name="sendEnvelopeWithStatus(Ljava/lang/String;)Ljava/lang/String;" since="21"/> + <method name="sendUssdRequest(Ljava/lang/String;Landroid/telephony/TelephonyManager$UssdResponseCallback;Landroid/os/Handler;)V" since="26"/> + <method name="sendVisualVoicemailSms(Ljava/lang/String;ILjava/lang/String;Landroid/app/PendingIntent;)V" since="26"/> + <method name="setDataEnabled(Z)V" since="26"/> + <method name="setLine1NumberForDisplay(Ljava/lang/String;Ljava/lang/String;)Z" since="22"/> + <method name="setOperatorBrandOverride(Ljava/lang/String;)Z" since="22"/> + <method name="setPreferredNetworkTypeToGlobal()Z" since="22"/> + <method name="setVisualVoicemailSmsFilterSettings(Landroid/telephony/VisualVoicemailSmsFilterSettings;)V" since="26"/> + <method name="setVoiceMailNumber(Ljava/lang/String;Ljava/lang/String;)Z" since="22"/> + <method name="setVoicemailRingtoneUri(Landroid/telecom/PhoneAccountHandle;Landroid/net/Uri;)V" since="26"/> + <method name="setVoicemailVibrationEnabled(Landroid/telecom/PhoneAccountHandle;Z)V" since="26"/> + <field name="ACTION_CONFIGURE_VOICEMAIL" since="23"/> + <field name="ACTION_PHONE_STATE_CHANGED" since="3"/> + <field name="ACTION_RESPOND_VIA_MESSAGE" since="18"/> + <field name="ACTION_SHOW_VOICEMAIL_NOTIFICATION" since="26"/> + <field name="APPTYPE_CSIM" since="24"/> + <field name="APPTYPE_ISIM" since="24"/> + <field name="APPTYPE_RUIM" since="24"/> + <field name="APPTYPE_SIM" since="24"/> + <field name="APPTYPE_USIM" since="24"/> + <field name="AUTHTYPE_EAP_AKA" since="24"/> + <field name="AUTHTYPE_EAP_SIM" since="24"/> + <field name="CALL_STATE_IDLE"/> + <field name="CALL_STATE_OFFHOOK"/> + <field name="CALL_STATE_RINGING"/> + <field name="DATA_ACTIVITY_DORMANT" since="4"/> + <field name="DATA_ACTIVITY_IN"/> + <field name="DATA_ACTIVITY_INOUT"/> + <field name="DATA_ACTIVITY_NONE"/> + <field name="DATA_ACTIVITY_OUT"/> + <field name="DATA_CONNECTED"/> + <field name="DATA_CONNECTING"/> + <field name="DATA_DISCONNECTED"/> + <field name="DATA_SUSPENDED"/> + <field name="EXTRA_CALL_VOICEMAIL_INTENT" since="26"/> + <field name="EXTRA_HIDE_PUBLIC_SETTINGS" since="26"/> + <field name="EXTRA_INCOMING_NUMBER" since="3"/> + <field name="EXTRA_LAUNCH_VOICEMAIL_SETTINGS_INTENT" since="26"/> + <field name="EXTRA_NOTIFICATION_COUNT" since="26"/> + <field name="EXTRA_PHONE_ACCOUNT_HANDLE" since="26"/> + <field name="EXTRA_STATE" since="3"/> + <field name="EXTRA_STATE_IDLE" since="3"/> + <field name="EXTRA_STATE_OFFHOOK" since="3"/> + <field name="EXTRA_STATE_RINGING" since="3"/> + <field name="EXTRA_VOICEMAIL_NUMBER" since="26"/> + <field name="METADATA_HIDE_VOICEMAIL_SETTINGS_MENU" since="26"/> + <field name="NETWORK_TYPE_1xRTT" since="4"/> + <field name="NETWORK_TYPE_CDMA" since="4"/> + <field name="NETWORK_TYPE_EDGE"/> + <field name="NETWORK_TYPE_EHRPD" since="11"/> + <field name="NETWORK_TYPE_EVDO_0" since="4"/> + <field name="NETWORK_TYPE_EVDO_A" since="4"/> + <field name="NETWORK_TYPE_EVDO_B" since="9"/> + <field name="NETWORK_TYPE_GPRS"/> + <field name="NETWORK_TYPE_GSM" since="25"/> + <field name="NETWORK_TYPE_HSDPA" since="5"/> + <field name="NETWORK_TYPE_HSPA" since="5"/> + <field name="NETWORK_TYPE_HSPAP" since="13"/> + <field name="NETWORK_TYPE_HSUPA" since="5"/> + <field name="NETWORK_TYPE_IDEN" since="8"/> + <field name="NETWORK_TYPE_IWLAN" since="25"/> + <field name="NETWORK_TYPE_LTE" since="11"/> + <field name="NETWORK_TYPE_TD_SCDMA" since="25"/> + <field name="NETWORK_TYPE_UMTS"/> + <field name="NETWORK_TYPE_UNKNOWN"/> + <field name="PHONE_TYPE_CDMA" since="4"/> + <field name="PHONE_TYPE_GSM"/> + <field name="PHONE_TYPE_NONE"/> + <field name="PHONE_TYPE_SIP" since="11"/> + <field name="SIM_STATE_ABSENT"/> + <field name="SIM_STATE_CARD_IO_ERROR" since="26"/> + <field name="SIM_STATE_CARD_RESTRICTED" since="26"/> + <field name="SIM_STATE_NETWORK_LOCKED"/> + <field name="SIM_STATE_NOT_READY" since="26"/> + <field name="SIM_STATE_PERM_DISABLED" since="26"/> + <field name="SIM_STATE_PIN_REQUIRED"/> + <field name="SIM_STATE_PUK_REQUIRED"/> + <field name="SIM_STATE_READY"/> + <field name="SIM_STATE_UNKNOWN"/> + <field name="USSD_ERROR_SERVICE_UNAVAIL" since="26"/> + <field name="USSD_RETURN_FAILURE" since="26"/> + <field name="VVM_TYPE_CVVM" since="23"/> + <field name="VVM_TYPE_OMTP" since="23"/> + </class> + <class name="android/telephony/TelephonyManager$UssdResponseCallback" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onReceiveUssdResponse(Landroid/telephony/TelephonyManager;Ljava/lang/String;Ljava/lang/CharSequence;)V"/> + <method name="onReceiveUssdResponseFailed(Landroid/telephony/TelephonyManager;Ljava/lang/String;I)V"/> + </class> + <class name="android/telephony/VisualVoicemailService" since="26"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="onCellServiceConnected(Landroid/telephony/VisualVoicemailService$VisualVoicemailTask;Landroid/telecom/PhoneAccountHandle;)V"/> + <method name="onSimRemoved(Landroid/telephony/VisualVoicemailService$VisualVoicemailTask;Landroid/telecom/PhoneAccountHandle;)V"/> + <method name="onSmsReceived(Landroid/telephony/VisualVoicemailService$VisualVoicemailTask;Landroid/telephony/VisualVoicemailSms;)V"/> + <method name="onStopped(Landroid/telephony/VisualVoicemailService$VisualVoicemailTask;)V"/> + <field name="SERVICE_INTERFACE"/> + </class> + <class name="android/telephony/VisualVoicemailService$VisualVoicemailTask" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="finish()V"/> + </class> + <class name="android/telephony/VisualVoicemailSms" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getFields()Landroid/os/Bundle;"/> + <method name="getMessageBody()Ljava/lang/String;"/> + <method name="getPhoneAccountHandle()Landroid/telecom/PhoneAccountHandle;"/> + <method name="getPrefix()Ljava/lang/String;"/> + <field name="CREATOR"/> + </class> + <class name="android/telephony/VisualVoicemailSmsFilterSettings" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <field name="CREATOR"/> + <field name="DESTINATION_PORT_ANY"/> + <field name="DESTINATION_PORT_DATA_SMS"/> + <field name="clientPrefix"/> + <field name="destinationPort"/> + <field name="originatingNumbers"/> + </class> + <class name="android/telephony/VisualVoicemailSmsFilterSettings$Builder" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="build()Landroid/telephony/VisualVoicemailSmsFilterSettings;"/> + <method name="setClientPrefix(Ljava/lang/String;)Landroid/telephony/VisualVoicemailSmsFilterSettings$Builder;"/> + <method name="setDestinationPort(I)Landroid/telephony/VisualVoicemailSmsFilterSettings$Builder;"/> + <method name="setOriginatingNumbers(Ljava/util/List;)Landroid/telephony/VisualVoicemailSmsFilterSettings$Builder;"/> + </class> + <class name="android/telephony/cdma/CdmaCellLocation" since="5"> + <extends name="android/telephony/CellLocation"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/os/Bundle;)V"/> + <method name="convertQuartSecToDecDegrees(I)D" since="17"/> + <method name="fillInNotifierBundle(Landroid/os/Bundle;)V"/> + <method name="getBaseStationId()I"/> + <method name="getBaseStationLatitude()I"/> + <method name="getBaseStationLongitude()I"/> + <method name="getNetworkId()I"/> + <method name="getSystemId()I"/> + <method name="setCellLocationData(III)V"/> + <method name="setCellLocationData(IIIII)V"/> + <method name="setStateInvalid()V"/> + </class> + <class name="android/telephony/gsm/GsmCellLocation" since="1"> + <extends name="android/telephony/CellLocation"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/os/Bundle;)V"/> + <method name="fillInNotifierBundle(Landroid/os/Bundle;)V"/> + <method name="getCid()I"/> + <method name="getLac()I"/> + <method name="getPsc()I" since="9"/> + <method name="setLacAndCid(II)V"/> + <method name="setStateInvalid()V"/> + </class> + <class name="android/telephony/gsm/SmsManager" since="1" deprecated="4"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="divideMessage(Ljava/lang/String;)Ljava/util/ArrayList;" deprecated="16"/> + <method name="getDefault()Landroid/telephony/gsm/SmsManager;" deprecated="16"/> + <method name="sendDataMessage(Ljava/lang/String;Ljava/lang/String;S[BLandroid/app/PendingIntent;Landroid/app/PendingIntent;)V" deprecated="16"/> + <method name="sendMultipartTextMessage(Ljava/lang/String;Ljava/lang/String;Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;)V" deprecated="16"/> + <method name="sendTextMessage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent;)V" deprecated="16"/> + <field name="RESULT_ERROR_GENERIC_FAILURE" deprecated="16"/> + <field name="RESULT_ERROR_NO_SERVICE" deprecated="16"/> + <field name="RESULT_ERROR_NULL_PDU" deprecated="16"/> + <field name="RESULT_ERROR_RADIO_OFF" deprecated="16"/> + <field name="STATUS_ON_SIM_FREE" deprecated="16"/> + <field name="STATUS_ON_SIM_READ" deprecated="16"/> + <field name="STATUS_ON_SIM_SENT" deprecated="16"/> + <field name="STATUS_ON_SIM_UNREAD" deprecated="16"/> + <field name="STATUS_ON_SIM_UNSENT" deprecated="16"/> + </class> + <class name="android/telephony/gsm/SmsMessage" since="1" deprecated="4"> + <extends name="java/lang/Object"/> + <method name="<init>()V" deprecated="16"/> + <method name="calculateLength(Ljava/lang/CharSequence;Z)[I" since="3" deprecated="16"/> + <method name="calculateLength(Ljava/lang/String;Z)[I" deprecated="16"/> + <method name="createFromPdu([B)Landroid/telephony/gsm/SmsMessage;" deprecated="16"/> + <method name="getDisplayMessageBody()Ljava/lang/String;" deprecated="16"/> + <method name="getDisplayOriginatingAddress()Ljava/lang/String;" deprecated="16"/> + <method name="getEmailBody()Ljava/lang/String;" deprecated="16"/> + <method name="getEmailFrom()Ljava/lang/String;" deprecated="16"/> + <method name="getIndexOnSim()I" deprecated="16"/> + <method name="getMessageBody()Ljava/lang/String;" deprecated="16"/> + <method name="getMessageClass()Landroid/telephony/gsm/SmsMessage$MessageClass;" deprecated="16"/> + <method name="getOriginatingAddress()Ljava/lang/String;" deprecated="16"/> + <method name="getPdu()[B" deprecated="16"/> + <method name="getProtocolIdentifier()I" deprecated="16"/> + <method name="getPseudoSubject()Ljava/lang/String;" deprecated="16"/> + <method name="getServiceCenterAddress()Ljava/lang/String;" deprecated="16"/> + <method name="getStatus()I" deprecated="16"/> + <method name="getStatusOnSim()I" deprecated="16"/> + <method name="getSubmitPdu(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Landroid/telephony/gsm/SmsMessage$SubmitPdu;" deprecated="16"/> + <method name="getSubmitPdu(Ljava/lang/String;Ljava/lang/String;S[BZ)Landroid/telephony/gsm/SmsMessage$SubmitPdu;" deprecated="16"/> + <method name="getTPLayerLengthForPDU(Ljava/lang/String;)I" deprecated="16"/> + <method name="getTimestampMillis()J" deprecated="16"/> + <method name="getUserData()[B" deprecated="16"/> + <method name="isCphsMwiMessage()Z" deprecated="16"/> + <method name="isEmail()Z" deprecated="16"/> + <method name="isMWIClearMessage()Z" deprecated="16"/> + <method name="isMWISetMessage()Z" deprecated="16"/> + <method name="isMwiDontStore()Z" deprecated="16"/> + <method name="isReplace()Z" deprecated="16"/> + <method name="isReplyPathPresent()Z" deprecated="16"/> + <method name="isStatusReportMessage()Z" deprecated="16"/> + <field name="ENCODING_16BIT" deprecated="16"/> + <field name="ENCODING_7BIT" deprecated="16"/> + <field name="ENCODING_8BIT" deprecated="16"/> + <field name="ENCODING_UNKNOWN" deprecated="16"/> + <field name="MAX_USER_DATA_BYTES" deprecated="16"/> + <field name="MAX_USER_DATA_SEPTETS" deprecated="16"/> + <field name="MAX_USER_DATA_SEPTETS_WITH_HEADER" deprecated="16"/> + </class> + <class name="android/telephony/gsm/SmsMessage$MessageClass" since="1" deprecated="4"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/telephony/gsm/SmsMessage$MessageClass;"/> + <method name="values()[Landroid/telephony/gsm/SmsMessage$MessageClass;"/> + <field name="CLASS_0"/> + <field name="CLASS_1"/> + <field name="CLASS_2"/> + <field name="CLASS_3"/> + <field name="UNKNOWN"/> + </class> + <class name="android/telephony/gsm/SmsMessage$SubmitPdu" since="1" deprecated="4"> + <extends name="java/lang/Object"/> + <method name="<init>()V" deprecated="16"/> + <field name="encodedMessage" deprecated="16"/> + <field name="encodedScAddress" deprecated="16"/> + </class> + <class name="android/telephony/mbms/DownloadRequest" since="27"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="copy(Landroid/telephony/mbms/DownloadRequest;)Landroid/telephony/mbms/DownloadRequest;"/> + <method name="getFileServiceId()Ljava/lang/String;"/> + <method name="getMaxAppIntentSize()I"/> + <method name="getMaxDestinationUriSize()I"/> + <method name="getSourceUri()Landroid/net/Uri;"/> + <method name="getSubscriptionId()I"/> + <field name="CREATOR"/> + </class> + <class name="android/telephony/mbms/DownloadRequest$Builder" since="27"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/net/Uri;)V"/> + <method name="build()Landroid/telephony/mbms/DownloadRequest;"/> + <method name="setAppIntent(Landroid/content/Intent;)Landroid/telephony/mbms/DownloadRequest$Builder;"/> + <method name="setServiceInfo(Landroid/telephony/mbms/FileServiceInfo;)Landroid/telephony/mbms/DownloadRequest$Builder;"/> + <method name="setSubscriptionId(I)Landroid/telephony/mbms/DownloadRequest$Builder;"/> + </class> + <class name="android/telephony/mbms/DownloadStateCallback" since="27"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="isFilterFlagSet(I)Z"/> + <method name="onProgressUpdated(Landroid/telephony/mbms/DownloadRequest;Landroid/telephony/mbms/FileInfo;IIII)V"/> + <method name="onStateUpdated(Landroid/telephony/mbms/DownloadRequest;Landroid/telephony/mbms/FileInfo;I)V"/> + <field name="ALL_UPDATES"/> + <field name="PROGRESS_UPDATES"/> + <field name="STATE_UPDATES"/> + </class> + <class name="android/telephony/mbms/FileInfo" since="27"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getMimeType()Ljava/lang/String;"/> + <method name="getUri()Landroid/net/Uri;"/> + <field name="CREATOR"/> + </class> + <class name="android/telephony/mbms/FileServiceInfo" since="27"> + <extends name="android/telephony/mbms/ServiceInfo"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getFiles()Ljava/util/List;"/> + <field name="CREATOR"/> + </class> + <class name="android/telephony/mbms/MbmsDownloadReceiver" since="27"> + <extends name="android/content/BroadcastReceiver"/> + <method name="<init>()V"/> + </class> + <class name="android/telephony/mbms/MbmsDownloadSessionCallback" since="27"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onError(ILjava/lang/String;)V"/> + <method name="onFileServicesUpdated(Ljava/util/List;)V"/> + <method name="onMiddlewareReady()V"/> + </class> + <class name="android/telephony/mbms/MbmsErrors" since="27"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="ERROR_MIDDLEWARE_LOST"/> + <field name="ERROR_MIDDLEWARE_NOT_BOUND"/> + <field name="ERROR_NO_UNIQUE_MIDDLEWARE"/> + <field name="SUCCESS"/> + </class> + <class name="android/telephony/mbms/MbmsErrors$DownloadErrors" since="27"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="ERROR_CANNOT_CHANGE_TEMP_FILE_ROOT"/> + <field name="ERROR_UNKNOWN_DOWNLOAD_REQUEST"/> + </class> + <class name="android/telephony/mbms/MbmsErrors$GeneralErrors" since="27"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="ERROR_CARRIER_CHANGE_NOT_ALLOWED"/> + <field name="ERROR_IN_E911"/> + <field name="ERROR_MIDDLEWARE_NOT_YET_READY"/> + <field name="ERROR_MIDDLEWARE_TEMPORARILY_UNAVAILABLE"/> + <field name="ERROR_NOT_CONNECTED_TO_HOME_CARRIER_LTE"/> + <field name="ERROR_OUT_OF_MEMORY"/> + <field name="ERROR_UNABLE_TO_READ_SIM"/> + </class> + <class name="android/telephony/mbms/MbmsErrors$InitializationErrors" since="27"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="ERROR_APP_PERMISSIONS_NOT_GRANTED"/> + <field name="ERROR_DUPLICATE_INITIALIZE"/> + <field name="ERROR_UNABLE_TO_INITIALIZE"/> + </class> + <class name="android/telephony/mbms/MbmsErrors$StreamingErrors" since="27"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="ERROR_CONCURRENT_SERVICE_LIMIT_REACHED"/> + <field name="ERROR_DUPLICATE_START_STREAM"/> + <field name="ERROR_UNABLE_TO_START_SERVICE"/> + </class> + <class name="android/telephony/mbms/MbmsStreamingSessionCallback" since="27"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onError(ILjava/lang/String;)V"/> + <method name="onMiddlewareReady()V"/> + <method name="onStreamingServicesUpdated(Ljava/util/List;)V"/> + </class> + <class name="android/telephony/mbms/ServiceInfo" since="27"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getLocales()Ljava/util/List;"/> + <method name="getNameForLocale(Ljava/util/Locale;)Ljava/lang/CharSequence;"/> + <method name="getNamedContentLocales()Ljava/util/Set;"/> + <method name="getServiceClassName()Ljava/lang/String;"/> + <method name="getServiceId()Ljava/lang/String;"/> + <method name="getSessionEndTime()Ljava/util/Date;"/> + <method name="getSessionStartTime()Ljava/util/Date;"/> + </class> + <class name="android/telephony/mbms/StreamingService" since="27"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getInfo()Landroid/telephony/mbms/StreamingServiceInfo;"/> + <method name="getPlaybackUri()Landroid/net/Uri;"/> + <method name="stopStreaming()V"/> + <field name="BROADCAST_METHOD"/> + <field name="REASON_BY_USER_REQUEST"/> + <field name="REASON_END_OF_SESSION"/> + <field name="REASON_FREQUENCY_CONFLICT"/> + <field name="REASON_LEFT_MBMS_BROADCAST_AREA"/> + <field name="REASON_NONE"/> + <field name="REASON_NOT_CONNECTED_TO_HOMECARRIER_LTE"/> + <field name="REASON_OUT_OF_MEMORY"/> + <field name="STATE_STALLED"/> + <field name="STATE_STARTED"/> + <field name="STATE_STOPPED"/> + <field name="UNICAST_METHOD"/> + </class> + <class name="android/telephony/mbms/StreamingServiceCallback" since="27"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onBroadcastSignalStrengthUpdated(I)V"/> + <method name="onError(ILjava/lang/String;)V"/> + <method name="onMediaDescriptionUpdated()V"/> + <method name="onStreamMethodUpdated(I)V"/> + <method name="onStreamStateUpdated(II)V"/> + <field name="SIGNAL_STRENGTH_UNAVAILABLE"/> + </class> + <class name="android/telephony/mbms/StreamingServiceInfo" since="27"> + <extends name="android/telephony/mbms/ServiceInfo"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <field name="CREATOR"/> + </class> + <class name="android/test/ActivityInstrumentationTestCase" since="1" deprecated="3"> + <extends name="android/test/ActivityTestCase"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Class;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Class;Z)V"/> + <method name="testActivityTestCaseSetUpProperly()V"/> + </class> + <class name="android/test/ActivityInstrumentationTestCase2" since="3" deprecated="24"> + <extends name="android/test/ActivityTestCase"/> + <method name="<init>(Ljava/lang/Class;)V" since="8"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Class;)V" deprecated="16"/> + <method name="setActivityInitialTouchMode(Z)V"/> + <method name="setActivityIntent(Landroid/content/Intent;)V"/> + </class> + <class name="android/test/ActivityTestCase" since="1" deprecated="24"> + <extends name="android/test/InstrumentationTestCase"/> + <method name="<init>()V"/> + <method name="getActivity()Landroid/app/Activity;"/> + <method name="scrubClass(Ljava/lang/Class;)V"/> + <method name="setActivity(Landroid/app/Activity;)V"/> + </class> + <class name="android/test/ActivityUnitTestCase" since="1" deprecated="24"> + <extends name="android/test/ActivityTestCase"/> + <method name="<init>(Ljava/lang/Class;)V"/> + <method name="getFinishedActivityRequest()I"/> + <method name="getRequestedOrientation()I"/> + <method name="getStartedActivityIntent()Landroid/content/Intent;"/> + <method name="getStartedActivityRequest()I"/> + <method name="isFinishCalled()Z"/> + <method name="setActivityContext(Landroid/content/Context;)V"/> + <method name="setApplication(Landroid/app/Application;)V"/> + <method name="startActivity(Landroid/content/Intent;Landroid/os/Bundle;Ljava/lang/Object;)Landroid/app/Activity;"/> + </class> + <class name="android/test/AndroidTestCase" since="1" deprecated="24"> + <extends name="junit/framework/TestCase"/> + <method name="<init>()V"/> + <method name="assertActivityRequiresPermission(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" since="4"/> + <method name="assertReadingContentUriRequiresPermission(Landroid/net/Uri;Ljava/lang/String;)V" since="4"/> + <method name="assertWritingContentUriRequiresPermission(Landroid/net/Uri;Ljava/lang/String;)V" since="4"/> + <method name="getContext()Landroid/content/Context;"/> + <method name="scrubClass(Ljava/lang/Class;)V"/> + <method name="setContext(Landroid/content/Context;)V"/> + <method name="testAndroidTestCaseSetupProperly()V"/> + <field name="mContext"/> + </class> + <class name="android/test/AndroidTestRunner" since="1" deprecated="24"> + <extends name="junit/runner/BaseTestRunner"/> + <method name="<init>()V"/> + <method name="addTestListener(Ljunit/framework/TestListener;)V"/> + <method name="clearTestListeners()V"/> + <method name="createTestResult()Ljunit/framework/TestResult;"/> + <method name="getTestCases()Ljava/util/List;"/> + <method name="getTestClassName()Ljava/lang/String;"/> + <method name="getTestResult()Ljunit/framework/TestResult;"/> + <method name="runTest()V"/> + <method name="runTest(Ljunit/framework/TestResult;)V"/> + <method name="setContext(Landroid/content/Context;)V"/> + <method name="setInstrumentaiton(Landroid/app/Instrumentation;)V" deprecated="16"/> + <method name="setInstrumentation(Landroid/app/Instrumentation;)V" since="5"/> + <method name="setTest(Ljunit/framework/Test;)V"/> + <method name="setTestClassName(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="android/test/ApplicationTestCase" since="1" deprecated="24"> + <extends name="android/test/AndroidTestCase"/> + <method name="<init>(Ljava/lang/Class;)V"/> + <method name="createApplication()V"/> + <method name="getApplication()Landroid/app/Application;"/> + <method name="getSystemContext()Landroid/content/Context;"/> + <method name="terminateApplication()V"/> + <method name="testApplicationTestCaseSetUpProperly()V"/> + </class> + <class name="android/test/AssertionFailedError" since="1" deprecated="16"> + <extends name="java/lang/Error"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/test/ComparisonFailure" since="1" deprecated="16"> + <extends name="android/test/AssertionFailedError"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="android/test/FlakyTest" since="1" deprecated="24"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + <method name="tolerance()I"/> + </class> + <class name="android/test/InstrumentationTestCase" since="1" deprecated="24"> + <extends name="junit/framework/TestCase"/> + <method name="<init>()V"/> + <method name="getInstrumentation()Landroid/app/Instrumentation;"/> + <method name="injectInsrumentation(Landroid/app/Instrumentation;)V" deprecated="16"/> + <method name="injectInstrumentation(Landroid/app/Instrumentation;)V" since="5"/> + <method name="launchActivity(Ljava/lang/String;Ljava/lang/Class;Landroid/os/Bundle;)Landroid/app/Activity;"/> + <method name="launchActivityWithIntent(Ljava/lang/String;Ljava/lang/Class;Landroid/content/Intent;)Landroid/app/Activity;" since="3"/> + <method name="runTestOnUiThread(Ljava/lang/Runnable;)V" since="3"/> + <method name="sendKeys(Ljava/lang/String;)V"/> + <method name="sendKeys([I)V"/> + <method name="sendRepeatedKeys([I)V"/> + </class> + <class name="android/test/InstrumentationTestRunner" since="1" deprecated="24"> + <extends name="android/app/Instrumentation"/> + <implements name="android/test/TestSuiteProvider"/> + <method name="<init>()V"/> + <method name="getAllTests()Ljunit/framework/TestSuite;"/> + <method name="getAndroidTestRunner()Landroid/test/AndroidTestRunner;"/> + <method name="getArguments()Landroid/os/Bundle;" since="18"/> + <method name="getLoader()Ljava/lang/ClassLoader;"/> + <field name="REPORT_KEY_NAME_CLASS"/> + <field name="REPORT_KEY_NAME_TEST"/> + <field name="REPORT_KEY_NUM_CURRENT"/> + <field name="REPORT_KEY_NUM_TOTAL"/> + <field name="REPORT_KEY_STACK"/> + <field name="REPORT_VALUE_ID"/> + <field name="REPORT_VALUE_RESULT_ERROR"/> + <field name="REPORT_VALUE_RESULT_FAILURE"/> + <field name="REPORT_VALUE_RESULT_OK"/> + <field name="REPORT_VALUE_RESULT_START"/> + </class> + <class name="android/test/InstrumentationTestSuite" since="1" deprecated="24"> + <extends name="junit/framework/TestSuite"/> + <method name="<init>(Landroid/app/Instrumentation;)V"/> + <method name="<init>(Ljava/lang/Class;Landroid/app/Instrumentation;)V"/> + <method name="<init>(Ljava/lang/String;Landroid/app/Instrumentation;)V"/> + </class> + <class name="android/test/IsolatedContext" since="1" deprecated="24"> + <extends name="android/content/ContextWrapper"/> + <method name="<init>(Landroid/content/ContentResolver;Landroid/content/Context;)V"/> + <method name="getAndClearBroadcastIntents()Ljava/util/List;"/> + </class> + <class name="android/test/LoaderTestCase" since="11"> + <extends name="android/test/AndroidTestCase"/> + <method name="<init>()V"/> + <method name="getLoaderResultSynchronously(Landroid/content/Loader;)Ljava/lang/Object;"/> + </class> + <class name="android/test/MoreAsserts" since="1" deprecated="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="assertAssignableFrom(Ljava/lang/Class;Ljava/lang/Class;)V"/> + <method name="assertAssignableFrom(Ljava/lang/Class;Ljava/lang/Object;)V"/> + <method name="assertContainsRegex(Ljava/lang/String;Ljava/lang/String;)Ljava/util/regex/MatchResult;"/> + <method name="assertContainsRegex(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/regex/MatchResult;"/> + <method name="assertContentsInAnyOrder(Ljava/lang/Iterable;[Ljava/lang/Object;)V"/> + <method name="assertContentsInAnyOrder(Ljava/lang/String;Ljava/lang/Iterable;[Ljava/lang/Object;)V"/> + <method name="assertContentsInOrder(Ljava/lang/Iterable;[Ljava/lang/Object;)V"/> + <method name="assertContentsInOrder(Ljava/lang/String;Ljava/lang/Iterable;[Ljava/lang/Object;)V"/> + <method name="assertEmpty(Ljava/lang/Iterable;)V"/> + <method name="assertEmpty(Ljava/lang/String;Ljava/lang/Iterable;)V"/> + <method name="assertEmpty(Ljava/lang/String;Ljava/util/Map;)V"/> + <method name="assertEmpty(Ljava/util/Map;)V"/> + <method name="assertEquals(Ljava/lang/String;Ljava/util/Set;Ljava/util/Set;)V"/> + <method name="assertEquals(Ljava/lang/String;[B[B)V"/> + <method name="assertEquals(Ljava/lang/String;[D[D)V"/> + <method name="assertEquals(Ljava/lang/String;[I[I)V"/> + <method name="assertEquals(Ljava/lang/String;[Ljava/lang/Object;[Ljava/lang/Object;)V"/> + <method name="assertEquals(Ljava/util/Set;Ljava/util/Set;)V"/> + <method name="assertEquals([B[B)V"/> + <method name="assertEquals([D[D)V"/> + <method name="assertEquals([I[I)V"/> + <method name="assertEquals([Ljava/lang/Object;[Ljava/lang/Object;)V"/> + <method name="assertMatchesRegex(Ljava/lang/String;Ljava/lang/String;)Ljava/util/regex/MatchResult;"/> + <method name="assertMatchesRegex(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/regex/MatchResult;"/> + <method name="assertNotContainsRegex(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="assertNotContainsRegex(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="assertNotEmpty(Ljava/lang/Iterable;)V"/> + <method name="assertNotEmpty(Ljava/lang/String;Ljava/lang/Iterable;)V"/> + <method name="assertNotEmpty(Ljava/lang/String;Ljava/util/Map;)V"/> + <method name="assertNotEmpty(Ljava/util/Map;)V"/> + <method name="assertNotEqual(Ljava/lang/Object;Ljava/lang/Object;)V"/> + <method name="assertNotEqual(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V"/> + <method name="assertNotMatchesRegex(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="assertNotMatchesRegex(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="checkEqualsAndHashCodeMethods(Ljava/lang/Object;Ljava/lang/Object;Z)V"/> + <method name="checkEqualsAndHashCodeMethods(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Z)V"/> + </class> + <class name="android/test/PerformanceTestCase" since="1" deprecated="24"> + <extends name="java/lang/Object"/> + <method name="isPerformanceOnly()Z"/> + <method name="startPerformance(Landroid/test/PerformanceTestCase$Intermediates;)I"/> + </class> + <class name="android/test/PerformanceTestCase$Intermediates" since="1"> + <extends name="java/lang/Object"/> + <method name="addIntermediate(Ljava/lang/String;)V"/> + <method name="addIntermediate(Ljava/lang/String;J)V"/> + <method name="finishTiming(Z)V"/> + <method name="setInternalIterations(I)V"/> + <method name="startTiming(Z)V"/> + </class> + <class name="android/test/ProviderTestCase" since="1" deprecated="5"> + <extends name="android/test/InstrumentationTestCase"/> + <method name="<init>(Ljava/lang/Class;Ljava/lang/String;)V"/> + <method name="getMockContentResolver()Landroid/test/mock/MockContentResolver;"/> + <method name="getMockContext()Landroid/test/IsolatedContext;"/> + <method name="getProvider()Landroid/content/ContentProvider;"/> + <method name="newResolverWithContentProviderFromSql(Landroid/content/Context;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/content/ContentResolver;"/> + </class> + <class name="android/test/ProviderTestCase2" since="3"> + <extends name="android/test/AndroidTestCase"/> + <method name="<init>(Ljava/lang/Class;Ljava/lang/String;)V"/> + <method name="getMockContentResolver()Landroid/test/mock/MockContentResolver;"/> + <method name="getMockContext()Landroid/test/IsolatedContext;"/> + <method name="getProvider()Landroid/content/ContentProvider;"/> + <method name="newResolverWithContentProviderFromSql(Landroid/content/Context;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/content/ContentResolver;"/> + </class> + <class name="android/test/RenamingDelegatingContext" since="1" deprecated="24"> + <extends name="android/content/ContextWrapper"/> + <method name="<init>(Landroid/content/Context;Landroid/content/Context;Ljava/lang/String;)V"/> + <method name="<init>(Landroid/content/Context;Ljava/lang/String;)V"/> + <method name="getDatabasePrefix()Ljava/lang/String;"/> + <method name="makeExistingFilesAndDbsAccessible()V"/> + <method name="providerWithRenamedContext(Ljava/lang/Class;Landroid/content/Context;Ljava/lang/String;)Landroid/content/ContentProvider;"/> + <method name="providerWithRenamedContext(Ljava/lang/Class;Landroid/content/Context;Ljava/lang/String;Z)Landroid/content/ContentProvider;"/> + </class> + <class name="android/test/ServiceTestCase" since="1" deprecated="24"> + <extends name="android/test/AndroidTestCase"/> + <method name="<init>(Ljava/lang/Class;)V"/> + <method name="bindService(Landroid/content/Intent;)Landroid/os/IBinder;"/> + <method name="getApplication()Landroid/app/Application;"/> + <method name="getService()Landroid/app/Service;"/> + <method name="getSystemContext()Landroid/content/Context;"/> + <method name="setApplication(Landroid/app/Application;)V"/> + <method name="setupService()V"/> + <method name="shutdownService()V"/> + <method name="startService(Landroid/content/Intent;)V"/> + <method name="testServiceTestCaseSetUpProperly()V"/> + </class> + <class name="android/test/SingleLaunchActivityTestCase" since="1" deprecated="24"> + <extends name="android/test/InstrumentationTestCase"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Class;)V"/> + <method name="getActivity()Landroid/app/Activity;"/> + <method name="testActivityTestCaseSetUpProperly()V"/> + </class> + <class name="android/test/SyncBaseInstrumentation" since="1" deprecated="24"> + <extends name="android/test/InstrumentationTestCase"/> + <method name="<init>()V"/> + <method name="cancelSyncsandDisableAutoSync()V"/> + <method name="syncProvider(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="android/test/TestSuiteProvider" since="1" deprecated="24"> + <extends name="java/lang/Object"/> + <method name="getTestSuite()Ljunit/framework/TestSuite;"/> + </class> + <class name="android/test/TouchUtils" since="1" deprecated="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="clickView(Landroid/test/InstrumentationTestCase;Landroid/view/View;)V"/> + <method name="drag(Landroid/test/ActivityInstrumentationTestCase;FFFFI)V" deprecated="16"/> + <method name="drag(Landroid/test/InstrumentationTestCase;FFFFI)V" since="3"/> + <method name="dragQuarterScreenDown(Landroid/test/ActivityInstrumentationTestCase;)V" deprecated="16"/> + <method name="dragQuarterScreenDown(Landroid/test/InstrumentationTestCase;Landroid/app/Activity;)V" since="3"/> + <method name="dragQuarterScreenUp(Landroid/test/ActivityInstrumentationTestCase;)V" deprecated="16"/> + <method name="dragQuarterScreenUp(Landroid/test/InstrumentationTestCase;Landroid/app/Activity;)V" since="3"/> + <method name="dragViewBy(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/View;III)I" deprecated="16"/> + <method name="dragViewBy(Landroid/test/InstrumentationTestCase;Landroid/view/View;III)I" since="3" deprecated="16"/> + <method name="dragViewTo(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/View;III)I" deprecated="16"/> + <method name="dragViewTo(Landroid/test/InstrumentationTestCase;Landroid/view/View;III)I" since="3"/> + <method name="dragViewToBottom(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/View;)V" deprecated="16"/> + <method name="dragViewToBottom(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/View;I)V" deprecated="16"/> + <method name="dragViewToBottom(Landroid/test/InstrumentationTestCase;Landroid/app/Activity;Landroid/view/View;)V" since="3"/> + <method name="dragViewToBottom(Landroid/test/InstrumentationTestCase;Landroid/app/Activity;Landroid/view/View;I)V" since="3"/> + <method name="dragViewToTop(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/View;)V" deprecated="16"/> + <method name="dragViewToTop(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/View;I)V" deprecated="16"/> + <method name="dragViewToTop(Landroid/test/InstrumentationTestCase;Landroid/view/View;)V" since="3"/> + <method name="dragViewToTop(Landroid/test/InstrumentationTestCase;Landroid/view/View;I)V" since="3"/> + <method name="dragViewToX(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/View;II)I" deprecated="16"/> + <method name="dragViewToX(Landroid/test/InstrumentationTestCase;Landroid/view/View;II)I" since="3"/> + <method name="dragViewToY(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/View;II)I" deprecated="16"/> + <method name="dragViewToY(Landroid/test/InstrumentationTestCase;Landroid/view/View;II)I" since="3"/> + <method name="longClickView(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/View;)V" deprecated="16"/> + <method name="longClickView(Landroid/test/InstrumentationTestCase;Landroid/view/View;)V" since="3"/> + <method name="scrollToBottom(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/ViewGroup;)V" deprecated="16"/> + <method name="scrollToBottom(Landroid/test/InstrumentationTestCase;Landroid/app/Activity;Landroid/view/ViewGroup;)V" since="3"/> + <method name="scrollToTop(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/ViewGroup;)V" deprecated="16"/> + <method name="scrollToTop(Landroid/test/InstrumentationTestCase;Landroid/app/Activity;Landroid/view/ViewGroup;)V" since="3"/> + <method name="tapView(Landroid/test/InstrumentationTestCase;Landroid/view/View;)V"/> + <method name="touchAndCancelView(Landroid/test/InstrumentationTestCase;Landroid/view/View;)V"/> + </class> + <class name="android/test/UiThreadTest" since="1" deprecated="24"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + </class> + <class name="android/test/ViewAsserts" since="1" deprecated="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="assertBaselineAligned(Landroid/view/View;Landroid/view/View;)V"/> + <method name="assertBottomAligned(Landroid/view/View;Landroid/view/View;)V"/> + <method name="assertBottomAligned(Landroid/view/View;Landroid/view/View;I)V"/> + <method name="assertGroupContains(Landroid/view/ViewGroup;Landroid/view/View;)V"/> + <method name="assertGroupIntegrity(Landroid/view/ViewGroup;)V"/> + <method name="assertGroupNotContains(Landroid/view/ViewGroup;Landroid/view/View;)V"/> + <method name="assertHasScreenCoordinates(Landroid/view/View;Landroid/view/View;II)V"/> + <method name="assertHorizontalCenterAligned(Landroid/view/View;Landroid/view/View;)V"/> + <method name="assertLeftAligned(Landroid/view/View;Landroid/view/View;)V"/> + <method name="assertLeftAligned(Landroid/view/View;Landroid/view/View;I)V"/> + <method name="assertOffScreenAbove(Landroid/view/View;Landroid/view/View;)V"/> + <method name="assertOffScreenBelow(Landroid/view/View;Landroid/view/View;)V"/> + <method name="assertOnScreen(Landroid/view/View;Landroid/view/View;)V"/> + <method name="assertRightAligned(Landroid/view/View;Landroid/view/View;)V"/> + <method name="assertRightAligned(Landroid/view/View;Landroid/view/View;I)V"/> + <method name="assertTopAligned(Landroid/view/View;Landroid/view/View;)V"/> + <method name="assertTopAligned(Landroid/view/View;Landroid/view/View;I)V"/> + <method name="assertVerticalCenterAligned(Landroid/view/View;Landroid/view/View;)V"/> + </class> + <class name="android/test/mock/MockApplication" since="1" deprecated="24"> + <extends name="android/app/Application"/> + <method name="<init>()V"/> + </class> + <class name="android/test/mock/MockContentProvider" since="8"> + <extends name="android/content/ContentProvider"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;[Landroid/content/pm/PathPermission;)V"/> + </class> + <class name="android/test/mock/MockContentResolver" since="1"> + <extends name="android/content/ContentResolver"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/Context;)V" since="18"/> + <method name="addProvider(Ljava/lang/String;Landroid/content/ContentProvider;)V"/> + </class> + <class name="android/test/mock/MockContext" since="1"> + <extends name="android/content/Context"/> + <method name="<init>()V"/> + <method name="getPackageCodePath()Ljava/lang/String;"/> + <method name="getPackageResourcePath()Ljava/lang/String;"/> + </class> + <class name="android/test/mock/MockCursor" since="8" deprecated="24"> + <extends name="java/lang/Object"/> + <implements name="android/database/Cursor"/> + <method name="<init>()V"/> + <method name="abortUpdates()V" removed="11"/> + <method name="commitUpdates()Z" removed="11"/> + <method name="commitUpdates(Ljava/util/Map;)Z" removed="11"/> + <method name="deleteRow()Z" removed="11"/> + <method name="hasUpdates()Z" removed="11"/> + <method name="supportsUpdates()Z" removed="11"/> + <method name="updateBlob(I[B)Z" removed="11"/> + <method name="updateDouble(ID)Z" removed="11"/> + <method name="updateFloat(IF)Z" removed="11"/> + <method name="updateInt(II)Z" removed="11"/> + <method name="updateLong(IJ)Z" removed="11"/> + <method name="updateShort(IS)Z" removed="11"/> + <method name="updateString(ILjava/lang/String;)Z" removed="11"/> + <method name="updateToNull(I)Z" removed="11"/> + </class> + <class name="android/test/mock/MockDialogInterface" since="1" deprecated="24"> + <extends name="java/lang/Object"/> + <implements name="android/content/DialogInterface"/> + <method name="<init>()V"/> + </class> + <class name="android/test/mock/MockPackageManager" since="1" deprecated="24"> + <extends name="android/content/pm/PackageManager"/> + <method name="<init>()V"/> + <method name="getAllIntentFilters(Ljava/lang/String;)Ljava/util/List;" since="23"/> + <method name="getDefaultBrowserPackageName(I)Ljava/lang/String;" since="23" removed="24"/> + <method name="setDefaultBrowserPackageName(Ljava/lang/String;I)Z" since="23" removed="24"/> + <method name="setPackageObbPath(Ljava/lang/String;Ljava/lang/String;)V" since="9" removed="10"/> + </class> + <class name="android/test/mock/MockResources" since="1" deprecated="24"> + <extends name="android/content/res/Resources"/> + <method name="<init>()V"/> + </class> + <class name="android/test/suitebuilder/TestMethod" since="1" deprecated="26"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Class;)V" since="3"/> + <method name="<init>(Ljava/lang/reflect/Method;Ljava/lang/Class;)V"/> + <method name="<init>(Ljunit/framework/TestCase;)V" since="3"/> + <method name="createTest()Ljunit/framework/TestCase;"/> + <method name="getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;"/> + <method name="getEnclosingClass()Ljava/lang/Class;"/> + <method name="getEnclosingClassname()Ljava/lang/String;"/> + <method name="getName()Ljava/lang/String;"/> + </class> + <class name="android/test/suitebuilder/TestSuiteBuilder" since="1" deprecated="26"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/Class;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/ClassLoader;)V"/> + <method name="addRequirements(Ljava/util/List;)Landroid/test/suitebuilder/TestSuiteBuilder;"/> + <method name="addRequirements([Lcom/android/internal/util/Predicate;)Landroid/test/suitebuilder/TestSuiteBuilder;"/> + <method name="build()Ljunit/framework/TestSuite;"/> + <method name="excludePackages([Ljava/lang/String;)Landroid/test/suitebuilder/TestSuiteBuilder;"/> + <method name="getSuiteName()Ljava/lang/String;"/> + <method name="includeAllPackagesUnderHere()Landroid/test/suitebuilder/TestSuiteBuilder;"/> + <method name="includePackages([Ljava/lang/String;)Landroid/test/suitebuilder/TestSuiteBuilder;"/> + <method name="named(Ljava/lang/String;)Landroid/test/suitebuilder/TestSuiteBuilder;"/> + </class> + <class name="android/test/suitebuilder/TestSuiteBuilder$FailedToCreateTests" since="1" deprecated="26"> + <extends name="junit/framework/TestCase"/> + <method name="<init>(Ljava/lang/Exception;)V"/> + <method name="testSuiteConstructionFailed()V"/> + </class> + <class name="android/test/suitebuilder/annotation/LargeTest" since="2" deprecated="24"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + </class> + <class name="android/test/suitebuilder/annotation/MediumTest" since="2" deprecated="24"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + </class> + <class name="android/test/suitebuilder/annotation/SmallTest" since="2" deprecated="24"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + </class> + <class name="android/test/suitebuilder/annotation/Smoke" since="1" deprecated="24"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + </class> + <class name="android/test/suitebuilder/annotation/Suppress" since="1" deprecated="24"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + </class> + <class name="android/text/AlteredCharSequence" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/GetChars"/> + <implements name="java/lang/CharSequence"/> + <method name="<init>()V"/> + <method name="make(Ljava/lang/CharSequence;[CII)Landroid/text/AlteredCharSequence;"/> + </class> + <class name="android/text/AndroidCharacter" since="1" deprecated="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getDirectionalities([C[BI)V"/> + <method name="getEastAsianWidth(C)I" since="8"/> + <method name="getEastAsianWidths([CII[B)V" since="8"/> + <method name="getMirror(C)C"/> + <method name="mirror([CII)Z"/> + <field name="EAST_ASIAN_WIDTH_AMBIGUOUS" since="8"/> + <field name="EAST_ASIAN_WIDTH_FULL_WIDTH" since="8"/> + <field name="EAST_ASIAN_WIDTH_HALF_WIDTH" since="8"/> + <field name="EAST_ASIAN_WIDTH_NARROW" since="8"/> + <field name="EAST_ASIAN_WIDTH_NEUTRAL" since="8"/> + <field name="EAST_ASIAN_WIDTH_WIDE" since="8"/> + </class> + <class name="android/text/Annotation" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/ParcelableSpan" since="3"/> + <method name="<init>(Landroid/os/Parcel;)V" since="3"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="getKey()Ljava/lang/String;"/> + <method name="getValue()Ljava/lang/String;"/> + </class> + <class name="android/text/AutoText" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="get(Ljava/lang/CharSequence;IILandroid/view/View;)Ljava/lang/String;"/> + <method name="getSize(Landroid/view/View;)I" since="3"/> + </class> + <class name="android/text/BidiFormatter" since="18"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getInstance()Landroid/text/BidiFormatter;"/> + <method name="getInstance(Ljava/util/Locale;)Landroid/text/BidiFormatter;"/> + <method name="getInstance(Z)Landroid/text/BidiFormatter;"/> + <method name="getStereoReset()Z"/> + <method name="isRtl(Ljava/lang/CharSequence;)Z" since="26"/> + <method name="isRtl(Ljava/lang/String;)Z"/> + <method name="isRtlContext()Z"/> + <method name="unicodeWrap(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;" since="26"/> + <method name="unicodeWrap(Ljava/lang/CharSequence;Landroid/text/TextDirectionHeuristic;)Ljava/lang/CharSequence;" since="26"/> + <method name="unicodeWrap(Ljava/lang/CharSequence;Landroid/text/TextDirectionHeuristic;Z)Ljava/lang/CharSequence;" since="26"/> + <method name="unicodeWrap(Ljava/lang/CharSequence;Z)Ljava/lang/CharSequence;" since="26"/> + <method name="unicodeWrap(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="unicodeWrap(Ljava/lang/String;Landroid/text/TextDirectionHeuristic;)Ljava/lang/String;"/> + <method name="unicodeWrap(Ljava/lang/String;Landroid/text/TextDirectionHeuristic;Z)Ljava/lang/String;"/> + <method name="unicodeWrap(Ljava/lang/String;Z)Ljava/lang/String;"/> + </class> + <class name="android/text/BidiFormatter$Builder" since="18"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/util/Locale;)V"/> + <method name="<init>(Z)V"/> + <method name="build()Landroid/text/BidiFormatter;"/> + <method name="setTextDirectionHeuristic(Landroid/text/TextDirectionHeuristic;)Landroid/text/BidiFormatter$Builder;"/> + <method name="stereoReset(Z)Landroid/text/BidiFormatter$Builder;"/> + </class> + <class name="android/text/BoringLayout" since="1"> + <extends name="android/text/Layout"/> + <implements name="android/text/TextUtils$EllipsizeCallback"/> + <method name="<init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;Z)V"/> + <method name="<init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;I)V"/> + <method name="isBoring(Ljava/lang/CharSequence;Landroid/text/TextPaint;)Landroid/text/BoringLayout$Metrics;"/> + <method name="isBoring(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/BoringLayout$Metrics;)Landroid/text/BoringLayout$Metrics;"/> + <method name="make(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;Z)Landroid/text/BoringLayout;"/> + <method name="make(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;I)Landroid/text/BoringLayout;"/> + <method name="replaceOrMake(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;Z)Landroid/text/BoringLayout;"/> + <method name="replaceOrMake(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;I)Landroid/text/BoringLayout;"/> + </class> + <class name="android/text/BoringLayout$Metrics" since="1"> + <extends name="android/graphics/Paint$FontMetricsInt"/> + <method name="<init>()V"/> + <field name="width"/> + </class> + <class name="android/text/ClipboardManager" since="1" deprecated="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getText()Ljava/lang/CharSequence;"/> + <method name="hasText()Z"/> + <method name="setText(Ljava/lang/CharSequence;)V"/> + </class> + <class name="android/text/DynamicLayout" since="1"> + <extends name="android/text/Layout"/> + <method name="<init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFZ)V"/> + <method name="<init>(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFZ)V"/> + <method name="<init>(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFZLandroid/text/TextUtils$TruncateAt;I)V"/> + </class> + <class name="android/text/Editable" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/GetChars"/> + <implements name="android/text/Spannable"/> + <implements name="java/lang/Appendable"/> + <implements name="java/lang/CharSequence"/> + <method name="append(C)Landroid/text/Editable;"/> + <method name="append(Ljava/lang/CharSequence;)Landroid/text/Editable;"/> + <method name="append(Ljava/lang/CharSequence;II)Landroid/text/Editable;"/> + <method name="clear()V"/> + <method name="clearSpans()V"/> + <method name="delete(II)Landroid/text/Editable;"/> + <method name="getFilters()[Landroid/text/InputFilter;"/> + <method name="insert(ILjava/lang/CharSequence;)Landroid/text/Editable;"/> + <method name="insert(ILjava/lang/CharSequence;II)Landroid/text/Editable;"/> + <method name="replace(IILjava/lang/CharSequence;)Landroid/text/Editable;"/> + <method name="replace(IILjava/lang/CharSequence;II)Landroid/text/Editable;"/> + <method name="setFilters([Landroid/text/InputFilter;)V"/> + </class> + <class name="android/text/Editable$Factory" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getInstance()Landroid/text/Editable$Factory;"/> + <method name="newEditable(Ljava/lang/CharSequence;)Landroid/text/Editable;"/> + </class> + <class name="android/text/GetChars" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/CharSequence"/> + <method name="getChars(II[CI)V"/> + </class> + <class name="android/text/Html" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="escapeHtml(Ljava/lang/CharSequence;)Ljava/lang/String;" since="16"/> + <method name="fromHtml(Ljava/lang/String;)Landroid/text/Spanned;" deprecated="24"/> + <method name="fromHtml(Ljava/lang/String;I)Landroid/text/Spanned;" since="24"/> + <method name="fromHtml(Ljava/lang/String;ILandroid/text/Html$ImageGetter;Landroid/text/Html$TagHandler;)Landroid/text/Spanned;" since="24"/> + <method name="fromHtml(Ljava/lang/String;Landroid/text/Html$ImageGetter;Landroid/text/Html$TagHandler;)Landroid/text/Spanned;" deprecated="24"/> + <method name="toHtml(Landroid/text/Spanned;)Ljava/lang/String;" deprecated="24"/> + <method name="toHtml(Landroid/text/Spanned;I)Ljava/lang/String;" since="24"/> + <field name="FROM_HTML_MODE_COMPACT" since="24"/> + <field name="FROM_HTML_MODE_LEGACY" since="24"/> + <field name="FROM_HTML_OPTION_USE_CSS_COLORS" since="24"/> + <field name="FROM_HTML_SEPARATOR_LINE_BREAK_BLOCKQUOTE" since="24"/> + <field name="FROM_HTML_SEPARATOR_LINE_BREAK_DIV" since="24"/> + <field name="FROM_HTML_SEPARATOR_LINE_BREAK_HEADING" since="24"/> + <field name="FROM_HTML_SEPARATOR_LINE_BREAK_LIST" since="24"/> + <field name="FROM_HTML_SEPARATOR_LINE_BREAK_LIST_ITEM" since="24"/> + <field name="FROM_HTML_SEPARATOR_LINE_BREAK_PARAGRAPH" since="24"/> + <field name="TO_HTML_PARAGRAPH_LINES_CONSECUTIVE" since="24"/> + <field name="TO_HTML_PARAGRAPH_LINES_INDIVIDUAL" since="24"/> + </class> + <class name="android/text/Html$ImageGetter" since="1"> + <extends name="java/lang/Object"/> + <method name="getDrawable(Ljava/lang/String;)Landroid/graphics/drawable/Drawable;"/> + </class> + <class name="android/text/Html$TagHandler" since="1"> + <extends name="java/lang/Object"/> + <method name="handleTag(ZLjava/lang/String;Landroid/text/Editable;Lorg/xml/sax/XMLReader;)V"/> + </class> + <class name="android/text/InputFilter" since="1"> + <extends name="java/lang/Object"/> + <method name="filter(Ljava/lang/CharSequence;IILandroid/text/Spanned;II)Ljava/lang/CharSequence;"/> + </class> + <class name="android/text/InputFilter$AllCaps" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/InputFilter"/> + <method name="<init>()V"/> + </class> + <class name="android/text/InputFilter$LengthFilter" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/InputFilter"/> + <method name="<init>(I)V"/> + <method name="getMax()I" since="21"/> + </class> + <class name="android/text/InputType" since="3"> + <extends name="java/lang/Object"/> + <field name="TYPE_CLASS_DATETIME"/> + <field name="TYPE_CLASS_NUMBER"/> + <field name="TYPE_CLASS_PHONE"/> + <field name="TYPE_CLASS_TEXT"/> + <field name="TYPE_DATETIME_VARIATION_DATE"/> + <field name="TYPE_DATETIME_VARIATION_NORMAL"/> + <field name="TYPE_DATETIME_VARIATION_TIME"/> + <field name="TYPE_MASK_CLASS"/> + <field name="TYPE_MASK_FLAGS"/> + <field name="TYPE_MASK_VARIATION"/> + <field name="TYPE_NULL"/> + <field name="TYPE_NUMBER_FLAG_DECIMAL"/> + <field name="TYPE_NUMBER_FLAG_SIGNED"/> + <field name="TYPE_NUMBER_VARIATION_NORMAL" since="11"/> + <field name="TYPE_NUMBER_VARIATION_PASSWORD" since="11"/> + <field name="TYPE_TEXT_FLAG_AUTO_COMPLETE"/> + <field name="TYPE_TEXT_FLAG_AUTO_CORRECT"/> + <field name="TYPE_TEXT_FLAG_CAP_CHARACTERS"/> + <field name="TYPE_TEXT_FLAG_CAP_SENTENCES"/> + <field name="TYPE_TEXT_FLAG_CAP_WORDS"/> + <field name="TYPE_TEXT_FLAG_IME_MULTI_LINE"/> + <field name="TYPE_TEXT_FLAG_MULTI_LINE"/> + <field name="TYPE_TEXT_FLAG_NO_SUGGESTIONS" since="5"/> + <field name="TYPE_TEXT_VARIATION_EMAIL_ADDRESS"/> + <field name="TYPE_TEXT_VARIATION_EMAIL_SUBJECT"/> + <field name="TYPE_TEXT_VARIATION_FILTER"/> + <field name="TYPE_TEXT_VARIATION_LONG_MESSAGE"/> + <field name="TYPE_TEXT_VARIATION_NORMAL"/> + <field name="TYPE_TEXT_VARIATION_PASSWORD"/> + <field name="TYPE_TEXT_VARIATION_PERSON_NAME"/> + <field name="TYPE_TEXT_VARIATION_PHONETIC"/> + <field name="TYPE_TEXT_VARIATION_POSTAL_ADDRESS"/> + <field name="TYPE_TEXT_VARIATION_SHORT_MESSAGE"/> + <field name="TYPE_TEXT_VARIATION_URI"/> + <field name="TYPE_TEXT_VARIATION_VISIBLE_PASSWORD"/> + <field name="TYPE_TEXT_VARIATION_WEB_EDIT_TEXT"/> + <field name="TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS" since="11"/> + <field name="TYPE_TEXT_VARIATION_WEB_PASSWORD" since="11"/> + </class> + <class name="android/text/Layout" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FF)V"/> + <method name="draw(Landroid/graphics/Canvas;)V"/> + <method name="draw(Landroid/graphics/Canvas;Landroid/graphics/Path;Landroid/graphics/Paint;I)V"/> + <method name="getAlignment()Landroid/text/Layout$Alignment;"/> + <method name="getBottomPadding()I"/> + <method name="getCursorPath(ILandroid/graphics/Path;Ljava/lang/CharSequence;)V"/> + <method name="getDesiredWidth(Ljava/lang/CharSequence;IILandroid/text/TextPaint;)F"/> + <method name="getDesiredWidth(Ljava/lang/CharSequence;Landroid/text/TextPaint;)F"/> + <method name="getEllipsisCount(I)I"/> + <method name="getEllipsisStart(I)I"/> + <method name="getEllipsizedWidth()I"/> + <method name="getHeight()I"/> + <method name="getLineAscent(I)I"/> + <method name="getLineBaseline(I)I"/> + <method name="getLineBottom(I)I"/> + <method name="getLineBounds(ILandroid/graphics/Rect;)I"/> + <method name="getLineContainsTab(I)Z"/> + <method name="getLineCount()I"/> + <method name="getLineDescent(I)I"/> + <method name="getLineDirections(I)Landroid/text/Layout$Directions;"/> + <method name="getLineEnd(I)I"/> + <method name="getLineForOffset(I)I"/> + <method name="getLineForVertical(I)I"/> + <method name="getLineLeft(I)F"/> + <method name="getLineMax(I)F"/> + <method name="getLineRight(I)F"/> + <method name="getLineStart(I)I"/> + <method name="getLineTop(I)I"/> + <method name="getLineVisibleEnd(I)I"/> + <method name="getLineWidth(I)F"/> + <method name="getOffsetForHorizontal(IF)I"/> + <method name="getOffsetToLeftOf(I)I"/> + <method name="getOffsetToRightOf(I)I"/> + <method name="getPaint()Landroid/text/TextPaint;"/> + <method name="getParagraphAlignment(I)Landroid/text/Layout$Alignment;"/> + <method name="getParagraphDirection(I)I"/> + <method name="getParagraphLeft(I)I"/> + <method name="getParagraphRight(I)I"/> + <method name="getPrimaryHorizontal(I)F"/> + <method name="getSecondaryHorizontal(I)F"/> + <method name="getSelectionPath(IILandroid/graphics/Path;)V"/> + <method name="getSpacingAdd()F"/> + <method name="getSpacingMultiplier()F"/> + <method name="getText()Ljava/lang/CharSequence;"/> + <method name="getTopPadding()I"/> + <method name="getWidth()I"/> + <method name="increaseWidthTo(I)V"/> + <method name="isRtlCharAt(I)Z" since="14"/> + <method name="isSpanned()Z"/> + <field name="BREAK_STRATEGY_BALANCED" since="23"/> + <field name="BREAK_STRATEGY_HIGH_QUALITY" since="23"/> + <field name="BREAK_STRATEGY_SIMPLE" since="23"/> + <field name="DIR_LEFT_TO_RIGHT"/> + <field name="DIR_RIGHT_TO_LEFT"/> + <field name="HYPHENATION_FREQUENCY_FULL" since="23"/> + <field name="HYPHENATION_FREQUENCY_NONE" since="23"/> + <field name="HYPHENATION_FREQUENCY_NORMAL" since="23"/> + <field name="JUSTIFICATION_MODE_INTER_WORD" since="26"/> + <field name="JUSTIFICATION_MODE_NONE" since="26"/> + </class> + <class name="android/text/Layout$Alignment" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/text/Layout$Alignment;"/> + <method name="values()[Landroid/text/Layout$Alignment;"/> + <field name="ALIGN_CENTER"/> + <field name="ALIGN_NORMAL"/> + <field name="ALIGN_OPPOSITE"/> + </class> + <class name="android/text/Layout$Directions" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/text/LoginFilter" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/InputFilter"/> + <method name="<init>()V"/> + <method name="isAllowed(C)Z"/> + <method name="onInvalidCharacter(C)V"/> + <method name="onStart()V"/> + <method name="onStop()V"/> + </class> + <class name="android/text/LoginFilter$PasswordFilterGMail" since="1"> + <extends name="android/text/LoginFilter"/> + <method name="<init>()V"/> + <method name="<init>(Z)V"/> + </class> + <class name="android/text/LoginFilter$UsernameFilterGMail" since="1"> + <extends name="android/text/LoginFilter"/> + <method name="<init>()V"/> + <method name="<init>(Z)V"/> + </class> + <class name="android/text/LoginFilter$UsernameFilterGeneric" since="1"> + <extends name="android/text/LoginFilter"/> + <method name="<init>()V"/> + <method name="<init>(Z)V"/> + </class> + <class name="android/text/NoCopySpan" since="3"> + <extends name="java/lang/Object"/> + </class> + <class name="android/text/NoCopySpan$Concrete" since="3"> + <extends name="java/lang/Object"/> + <implements name="android/text/NoCopySpan"/> + <method name="<init>()V"/> + </class> + <class name="android/text/ParcelableSpan" since="3"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="getSpanTypeId()I"/> + </class> + <class name="android/text/Selection" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="extendDown(Landroid/text/Spannable;Landroid/text/Layout;)Z"/> + <method name="extendLeft(Landroid/text/Spannable;Landroid/text/Layout;)Z"/> + <method name="extendRight(Landroid/text/Spannable;Landroid/text/Layout;)Z"/> + <method name="extendSelection(Landroid/text/Spannable;I)V"/> + <method name="extendToLeftEdge(Landroid/text/Spannable;Landroid/text/Layout;)Z"/> + <method name="extendToRightEdge(Landroid/text/Spannable;Landroid/text/Layout;)Z"/> + <method name="extendUp(Landroid/text/Spannable;Landroid/text/Layout;)Z"/> + <method name="getSelectionEnd(Ljava/lang/CharSequence;)I"/> + <method name="getSelectionStart(Ljava/lang/CharSequence;)I"/> + <method name="moveDown(Landroid/text/Spannable;Landroid/text/Layout;)Z"/> + <method name="moveLeft(Landroid/text/Spannable;Landroid/text/Layout;)Z"/> + <method name="moveRight(Landroid/text/Spannable;Landroid/text/Layout;)Z"/> + <method name="moveToLeftEdge(Landroid/text/Spannable;Landroid/text/Layout;)Z"/> + <method name="moveToRightEdge(Landroid/text/Spannable;Landroid/text/Layout;)Z"/> + <method name="moveUp(Landroid/text/Spannable;Landroid/text/Layout;)Z"/> + <method name="removeSelection(Landroid/text/Spannable;)V"/> + <method name="selectAll(Landroid/text/Spannable;)V"/> + <method name="setSelection(Landroid/text/Spannable;I)V"/> + <method name="setSelection(Landroid/text/Spannable;II)V"/> + <field name="SELECTION_END"/> + <field name="SELECTION_START"/> + </class> + <class name="android/text/SpanWatcher" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/NoCopySpan" since="3"/> + <method name="onSpanAdded(Landroid/text/Spannable;Ljava/lang/Object;II)V"/> + <method name="onSpanChanged(Landroid/text/Spannable;Ljava/lang/Object;IIII)V"/> + <method name="onSpanRemoved(Landroid/text/Spannable;Ljava/lang/Object;II)V"/> + </class> + <class name="android/text/Spannable" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/Spanned"/> + <method name="removeSpan(Ljava/lang/Object;)V"/> + <method name="setSpan(Ljava/lang/Object;III)V"/> + </class> + <class name="android/text/Spannable$Factory" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getInstance()Landroid/text/Spannable$Factory;"/> + <method name="newSpannable(Ljava/lang/CharSequence;)Landroid/text/Spannable;"/> + </class> + <class name="android/text/SpannableString" since="1"> + <extends name="android/text/SpannableStringInternal"/> + <implements name="android/text/GetChars"/> + <implements name="android/text/Spannable"/> + <implements name="java/lang/CharSequence"/> + <method name="<init>(Ljava/lang/CharSequence;)V"/> + <method name="valueOf(Ljava/lang/CharSequence;)Landroid/text/SpannableString;"/> + </class> + <class name="android/text/SpannableStringBuilder" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/Editable"/> + <implements name="android/text/GetChars"/> + <implements name="android/text/Spannable"/> + <implements name="java/lang/Appendable"/> + <implements name="java/lang/CharSequence"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/CharSequence;)V"/> + <method name="<init>(Ljava/lang/CharSequence;II)V"/> + <method name="append(C)Landroid/text/SpannableStringBuilder;"/> + <method name="append(Ljava/lang/CharSequence;)Landroid/text/SpannableStringBuilder;"/> + <method name="append(Ljava/lang/CharSequence;II)Landroid/text/SpannableStringBuilder;"/> + <method name="append(Ljava/lang/CharSequence;Ljava/lang/Object;I)Landroid/text/SpannableStringBuilder;" since="21"/> + <method name="delete(II)Landroid/text/SpannableStringBuilder;"/> + <method name="getTextRunCursor(IIIIILandroid/graphics/Paint;)I" since="11" deprecated="16"/> + <method name="getTextWatcherDepth()I" since="23"/> + <method name="insert(ILjava/lang/CharSequence;)Landroid/text/SpannableStringBuilder;"/> + <method name="insert(ILjava/lang/CharSequence;II)Landroid/text/SpannableStringBuilder;"/> + <method name="replace(IILjava/lang/CharSequence;)Landroid/text/SpannableStringBuilder;"/> + <method name="replace(IILjava/lang/CharSequence;II)Landroid/text/SpannableStringBuilder;"/> + <method name="valueOf(Ljava/lang/CharSequence;)Landroid/text/SpannableStringBuilder;"/> + </class> + <class name="android/text/SpannableStringInternal" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="charAt(I)C"/> + <method name="getChars(II[CI)V"/> + <method name="getSpanEnd(Ljava/lang/Object;)I"/> + <method name="getSpanFlags(Ljava/lang/Object;)I"/> + <method name="getSpanStart(Ljava/lang/Object;)I"/> + <method name="getSpans(IILjava/lang/Class;)[Ljava/lang/Object;"/> + <method name="length()I"/> + <method name="nextSpanTransition(IILjava/lang/Class;)I"/> + </class> + <class name="android/text/Spanned" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/CharSequence"/> + <method name="getSpanEnd(Ljava/lang/Object;)I"/> + <method name="getSpanFlags(Ljava/lang/Object;)I"/> + <method name="getSpanStart(Ljava/lang/Object;)I"/> + <method name="getSpans(IILjava/lang/Class;)[Ljava/lang/Object;"/> + <method name="nextSpanTransition(IILjava/lang/Class;)I"/> + <field name="SPAN_COMPOSING" since="3"/> + <field name="SPAN_EXCLUSIVE_EXCLUSIVE"/> + <field name="SPAN_EXCLUSIVE_INCLUSIVE"/> + <field name="SPAN_INCLUSIVE_EXCLUSIVE"/> + <field name="SPAN_INCLUSIVE_INCLUSIVE"/> + <field name="SPAN_INTERMEDIATE" since="3"/> + <field name="SPAN_MARK_MARK"/> + <field name="SPAN_MARK_POINT"/> + <field name="SPAN_PARAGRAPH"/> + <field name="SPAN_POINT_MARK"/> + <field name="SPAN_POINT_MARK_MASK" since="3"/> + <field name="SPAN_POINT_POINT"/> + <field name="SPAN_PRIORITY"/> + <field name="SPAN_PRIORITY_SHIFT"/> + <field name="SPAN_USER"/> + <field name="SPAN_USER_SHIFT"/> + </class> + <class name="android/text/SpannedString" since="1"> + <extends name="android/text/SpannableStringInternal"/> + <implements name="android/text/GetChars"/> + <implements name="android/text/Spanned"/> + <implements name="java/lang/CharSequence"/> + <method name="<init>(Ljava/lang/CharSequence;)V"/> + <method name="valueOf(Ljava/lang/CharSequence;)Landroid/text/SpannedString;"/> + </class> + <class name="android/text/StaticLayout" since="1"> + <extends name="android/text/Layout"/> + <method name="<init>(Ljava/lang/CharSequence;IILandroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFZ)V"/> + <method name="<init>(Ljava/lang/CharSequence;IILandroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFZLandroid/text/TextUtils$TruncateAt;I)V"/> + <method name="<init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFZ)V"/> + </class> + <class name="android/text/StaticLayout$Builder" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="build()Landroid/text/StaticLayout;"/> + <method name="obtain(Ljava/lang/CharSequence;IILandroid/text/TextPaint;I)Landroid/text/StaticLayout$Builder;"/> + <method name="setAlignment(Landroid/text/Layout$Alignment;)Landroid/text/StaticLayout$Builder;"/> + <method name="setBreakStrategy(I)Landroid/text/StaticLayout$Builder;"/> + <method name="setEllipsize(Landroid/text/TextUtils$TruncateAt;)Landroid/text/StaticLayout$Builder;"/> + <method name="setEllipsizedWidth(I)Landroid/text/StaticLayout$Builder;"/> + <method name="setHyphenationFrequency(I)Landroid/text/StaticLayout$Builder;"/> + <method name="setIncludePad(Z)Landroid/text/StaticLayout$Builder;"/> + <method name="setIndents([I[I)Landroid/text/StaticLayout$Builder;"/> + <method name="setJustificationMode(I)Landroid/text/StaticLayout$Builder;" since="26"/> + <method name="setLineSpacing(FF)Landroid/text/StaticLayout$Builder;"/> + <method name="setMaxLines(I)Landroid/text/StaticLayout$Builder;"/> + <method name="setText(Ljava/lang/CharSequence;)Landroid/text/StaticLayout$Builder;"/> + <method name="setTextDirection(Landroid/text/TextDirectionHeuristic;)Landroid/text/StaticLayout$Builder;"/> + </class> + <class name="android/text/TextDirectionHeuristic" since="18"> + <extends name="java/lang/Object"/> + <method name="isRtl(Ljava/lang/CharSequence;II)Z"/> + <method name="isRtl([CII)Z"/> + </class> + <class name="android/text/TextDirectionHeuristics" since="18"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="ANYRTL_LTR"/> + <field name="FIRSTSTRONG_LTR"/> + <field name="FIRSTSTRONG_RTL"/> + <field name="LOCALE"/> + <field name="LTR"/> + <field name="RTL"/> + </class> + <class name="android/text/TextPaint" since="1"> + <extends name="android/graphics/Paint"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(Landroid/graphics/Paint;)V"/> + <method name="set(Landroid/text/TextPaint;)V"/> + <field name="baselineShift"/> + <field name="bgColor"/> + <field name="density" since="5"/> + <field name="drawableState"/> + <field name="linkColor"/> + </class> + <class name="android/text/TextUtils" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="commaEllipsize(Ljava/lang/CharSequence;Landroid/text/TextPaint;FLjava/lang/String;Ljava/lang/String;)Ljava/lang/CharSequence;" deprecated="26"/> + <method name="concat([Ljava/lang/CharSequence;)Ljava/lang/CharSequence;"/> + <method name="copySpansFrom(Landroid/text/Spanned;IILjava/lang/Class;Landroid/text/Spannable;I)V"/> + <method name="dumpSpans(Ljava/lang/CharSequence;Landroid/util/Printer;Ljava/lang/String;)V" since="3"/> + <method name="ellipsize(Ljava/lang/CharSequence;Landroid/text/TextPaint;FLandroid/text/TextUtils$TruncateAt;)Ljava/lang/CharSequence;"/> + <method name="ellipsize(Ljava/lang/CharSequence;Landroid/text/TextPaint;FLandroid/text/TextUtils$TruncateAt;ZLandroid/text/TextUtils$EllipsizeCallback;)Ljava/lang/CharSequence;"/> + <method name="equals(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Z"/> + <method name="expandTemplate(Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/CharSequence;"/> + <method name="getCapsMode(Ljava/lang/CharSequence;II)I" since="3"/> + <method name="getChars(Ljava/lang/CharSequence;II[CI)V"/> + <method name="getLayoutDirectionFromLocale(Ljava/util/Locale;)I" since="17"/> + <method name="getOffsetAfter(Ljava/lang/CharSequence;I)I"/> + <method name="getOffsetBefore(Ljava/lang/CharSequence;I)I"/> + <method name="getReverse(Ljava/lang/CharSequence;II)Ljava/lang/CharSequence;" deprecated="24"/> + <method name="getTrimmedLength(Ljava/lang/CharSequence;)I"/> + <method name="htmlEncode(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="indexOf(Ljava/lang/CharSequence;C)I"/> + <method name="indexOf(Ljava/lang/CharSequence;CI)I"/> + <method name="indexOf(Ljava/lang/CharSequence;CII)I"/> + <method name="indexOf(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I"/> + <method name="indexOf(Ljava/lang/CharSequence;Ljava/lang/CharSequence;I)I"/> + <method name="indexOf(Ljava/lang/CharSequence;Ljava/lang/CharSequence;II)I"/> + <method name="isDigitsOnly(Ljava/lang/CharSequence;)Z"/> + <method name="isEmpty(Ljava/lang/CharSequence;)Z"/> + <method name="isGraphic(C)Z" deprecated="24"/> + <method name="isGraphic(Ljava/lang/CharSequence;)Z"/> + <method name="join(Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String;"/> + <method name="join(Ljava/lang/CharSequence;[Ljava/lang/Object;)Ljava/lang/String;"/> + <method name="lastIndexOf(Ljava/lang/CharSequence;C)I"/> + <method name="lastIndexOf(Ljava/lang/CharSequence;CI)I"/> + <method name="lastIndexOf(Ljava/lang/CharSequence;CII)I"/> + <method name="listEllipsize(Landroid/content/Context;Ljava/util/List;Ljava/lang/String;Landroid/text/TextPaint;FI)Ljava/lang/CharSequence;" since="26"/> + <method name="regionMatches(Ljava/lang/CharSequence;ILjava/lang/CharSequence;II)Z"/> + <method name="replace(Ljava/lang/CharSequence;[Ljava/lang/String;[Ljava/lang/CharSequence;)Ljava/lang/CharSequence;"/> + <method name="split(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;"/> + <method name="split(Ljava/lang/String;Ljava/util/regex/Pattern;)[Ljava/lang/String;"/> + <method name="stringOrSpannedString(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;"/> + <method name="substring(Ljava/lang/CharSequence;II)Ljava/lang/String;"/> + <method name="writeToParcel(Ljava/lang/CharSequence;Landroid/os/Parcel;I)V"/> + <field name="CAP_MODE_CHARACTERS" since="3"/> + <field name="CAP_MODE_SENTENCES" since="3"/> + <field name="CAP_MODE_WORDS" since="3"/> + <field name="CHAR_SEQUENCE_CREATOR"/> + </class> + <class name="android/text/TextUtils$EllipsizeCallback" since="1"> + <extends name="java/lang/Object"/> + <method name="ellipsized(II)V"/> + </class> + <class name="android/text/TextUtils$SimpleStringSplitter" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/TextUtils$StringSplitter"/> + <implements name="java/util/Iterator"/> + <method name="<init>(C)V"/> + <method name="next()Ljava/lang/String;"/> + </class> + <class name="android/text/TextUtils$StringSplitter" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Iterable"/> + <method name="setString(Ljava/lang/String;)V"/> + </class> + <class name="android/text/TextUtils$TruncateAt" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/text/TextUtils$TruncateAt;"/> + <method name="values()[Landroid/text/TextUtils$TruncateAt;"/> + <field name="END"/> + <field name="MARQUEE" since="2"/> + <field name="MIDDLE"/> + <field name="START"/> + </class> + <class name="android/text/TextWatcher" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/NoCopySpan" since="3"/> + <method name="afterTextChanged(Landroid/text/Editable;)V"/> + <method name="beforeTextChanged(Ljava/lang/CharSequence;III)V"/> + <method name="onTextChanged(Ljava/lang/CharSequence;III)V"/> + </class> + <class name="android/text/format/DateFormat" since="3"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="format(Ljava/lang/CharSequence;J)Ljava/lang/CharSequence;"/> + <method name="format(Ljava/lang/CharSequence;Ljava/util/Calendar;)Ljava/lang/CharSequence;"/> + <method name="format(Ljava/lang/CharSequence;Ljava/util/Date;)Ljava/lang/CharSequence;"/> + <method name="getBestDateTimePattern(Ljava/util/Locale;Ljava/lang/String;)Ljava/lang/String;" since="18"/> + <method name="getDateFormat(Landroid/content/Context;)Ljava/text/DateFormat;"/> + <method name="getDateFormatOrder(Landroid/content/Context;)[C"/> + <method name="getLongDateFormat(Landroid/content/Context;)Ljava/text/DateFormat;"/> + <method name="getMediumDateFormat(Landroid/content/Context;)Ljava/text/DateFormat;"/> + <method name="getTimeFormat(Landroid/content/Context;)Ljava/text/DateFormat;"/> + <method name="is24HourFormat(Landroid/content/Context;)Z"/> + <field name="AM_PM" deprecated="18" removed="22"/> + <field name="CAPITAL_AM_PM" deprecated="18" removed="22"/> + <field name="DATE" deprecated="18" removed="22"/> + <field name="DAY" deprecated="18" removed="22"/> + <field name="HOUR" deprecated="18" removed="22"/> + <field name="HOUR_OF_DAY" deprecated="18" removed="22"/> + <field name="MINUTE" deprecated="18" removed="22"/> + <field name="MONTH" deprecated="18" removed="22"/> + <field name="QUOTE" deprecated="18" removed="22"/> + <field name="SECONDS" deprecated="18" removed="22"/> + <field name="STANDALONE_MONTH" since="17" deprecated="18" removed="22"/> + <field name="TIME_ZONE" deprecated="18" removed="22"/> + <field name="YEAR" deprecated="18" removed="22"/> + </class> + <class name="android/text/format/DateUtils" since="3"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="formatDateRange(Landroid/content/Context;JJI)Ljava/lang/String;"/> + <method name="formatDateRange(Landroid/content/Context;Ljava/util/Formatter;JJI)Ljava/util/Formatter;" since="5"/> + <method name="formatDateRange(Landroid/content/Context;Ljava/util/Formatter;JJILjava/lang/String;)Ljava/util/Formatter;" since="9"/> + <method name="formatDateTime(Landroid/content/Context;JI)Ljava/lang/String;"/> + <method name="formatElapsedTime(J)Ljava/lang/String;"/> + <method name="formatElapsedTime(Ljava/lang/StringBuilder;J)Ljava/lang/String;"/> + <method name="formatSameDayTime(JJII)Ljava/lang/CharSequence;"/> + <method name="getAMPMString(I)Ljava/lang/String;" deprecated="17"/> + <method name="getDayOfWeekString(II)Ljava/lang/String;" deprecated="17"/> + <method name="getMonthString(II)Ljava/lang/String;" deprecated="17"/> + <method name="getRelativeDateTimeString(Landroid/content/Context;JJJI)Ljava/lang/CharSequence;"/> + <method name="getRelativeTimeSpanString(J)Ljava/lang/CharSequence;"/> + <method name="getRelativeTimeSpanString(JJJ)Ljava/lang/CharSequence;"/> + <method name="getRelativeTimeSpanString(JJJI)Ljava/lang/CharSequence;"/> + <method name="getRelativeTimeSpanString(Landroid/content/Context;J)Ljava/lang/CharSequence;"/> + <method name="getRelativeTimeSpanString(Landroid/content/Context;JZ)Ljava/lang/CharSequence;"/> + <method name="isToday(J)Z"/> + <field name="ABBREV_MONTH_FORMAT" deprecated="17"/> + <field name="ABBREV_WEEKDAY_FORMAT"/> + <field name="DAY_IN_MILLIS"/> + <field name="FORMAT_12HOUR" deprecated="17"/> + <field name="FORMAT_24HOUR" deprecated="17"/> + <field name="FORMAT_ABBREV_ALL"/> + <field name="FORMAT_ABBREV_MONTH"/> + <field name="FORMAT_ABBREV_RELATIVE"/> + <field name="FORMAT_ABBREV_TIME"/> + <field name="FORMAT_ABBREV_WEEKDAY"/> + <field name="FORMAT_CAP_AMPM" deprecated="17"/> + <field name="FORMAT_CAP_MIDNIGHT" deprecated="17"/> + <field name="FORMAT_CAP_NOON" deprecated="17"/> + <field name="FORMAT_CAP_NOON_MIDNIGHT" deprecated="17"/> + <field name="FORMAT_NO_MIDNIGHT"/> + <field name="FORMAT_NO_MONTH_DAY"/> + <field name="FORMAT_NO_NOON"/> + <field name="FORMAT_NO_NOON_MIDNIGHT" deprecated="17"/> + <field name="FORMAT_NO_YEAR"/> + <field name="FORMAT_NUMERIC_DATE"/> + <field name="FORMAT_SHOW_DATE"/> + <field name="FORMAT_SHOW_TIME"/> + <field name="FORMAT_SHOW_WEEKDAY"/> + <field name="FORMAT_SHOW_YEAR"/> + <field name="FORMAT_UTC" deprecated="16"/> + <field name="HOUR_IN_MILLIS"/> + <field name="HOUR_MINUTE_24" deprecated="17"/> + <field name="LENGTH_LONG" deprecated="17"/> + <field name="LENGTH_MEDIUM" deprecated="17"/> + <field name="LENGTH_SHORT" deprecated="17"/> + <field name="LENGTH_SHORTER" deprecated="17"/> + <field name="LENGTH_SHORTEST" deprecated="17"/> + <field name="MINUTE_IN_MILLIS"/> + <field name="MONTH_DAY_FORMAT"/> + <field name="MONTH_FORMAT"/> + <field name="NUMERIC_MONTH_FORMAT"/> + <field name="SECOND_IN_MILLIS"/> + <field name="WEEKDAY_FORMAT"/> + <field name="WEEK_IN_MILLIS"/> + <field name="YEAR_FORMAT"/> + <field name="YEAR_FORMAT_TWO_DIGITS"/> + <field name="YEAR_IN_MILLIS"/> + <field name="sameMonthTable" deprecated="17"/> + <field name="sameYearTable" deprecated="17"/> + </class> + <class name="android/text/format/Formatter" since="3"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="formatFileSize(Landroid/content/Context;J)Ljava/lang/String;"/> + <method name="formatIpAddress(I)Ljava/lang/String;" deprecated="16"/> + <method name="formatShortFileSize(Landroid/content/Context;J)Ljava/lang/String;" since="5"/> + </class> + <class name="android/text/format/Time" since="3" deprecated="22"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/text/format/Time;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="after(Landroid/text/format/Time;)Z"/> + <method name="before(Landroid/text/format/Time;)Z"/> + <method name="clear(Ljava/lang/String;)V"/> + <method name="compare(Landroid/text/format/Time;Landroid/text/format/Time;)I"/> + <method name="format(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="format2445()Ljava/lang/String;"/> + <method name="format3339(Z)Ljava/lang/String;"/> + <method name="getActualMaximum(I)I"/> + <method name="getCurrentTimezone()Ljava/lang/String;"/> + <method name="getJulianDay(JJ)I"/> + <method name="getJulianMondayFromWeeksSinceEpoch(I)I" since="11"/> + <method name="getWeekNumber()I"/> + <method name="getWeeksSinceEpochFromJulianDay(II)I" since="11"/> + <method name="isEpoch(Landroid/text/format/Time;)Z"/> + <method name="normalize(Z)J"/> + <method name="parse(Ljava/lang/String;)Z"/> + <method name="parse3339(Ljava/lang/String;)Z"/> + <method name="set(III)V"/> + <method name="set(IIIIII)V"/> + <method name="set(J)V"/> + <method name="set(Landroid/text/format/Time;)V"/> + <method name="setJulianDay(I)J"/> + <method name="setToNow()V"/> + <method name="switchTimezone(Ljava/lang/String;)V"/> + <method name="toMillis(Z)J"/> + <field name="EPOCH_JULIAN_DAY"/> + <field name="FRIDAY"/> + <field name="HOUR"/> + <field name="MINUTE"/> + <field name="MONDAY"/> + <field name="MONDAY_BEFORE_JULIAN_EPOCH" since="11"/> + <field name="MONTH"/> + <field name="MONTH_DAY"/> + <field name="SATURDAY"/> + <field name="SECOND"/> + <field name="SUNDAY"/> + <field name="THURSDAY"/> + <field name="TIMEZONE_UTC"/> + <field name="TUESDAY"/> + <field name="WEDNESDAY"/> + <field name="WEEK_DAY"/> + <field name="WEEK_NUM"/> + <field name="YEAR"/> + <field name="YEAR_DAY"/> + <field name="allDay"/> + <field name="gmtoff"/> + <field name="hour"/> + <field name="isDst"/> + <field name="minute"/> + <field name="month"/> + <field name="monthDay"/> + <field name="second"/> + <field name="timezone"/> + <field name="weekDay"/> + <field name="year"/> + <field name="yearDay"/> + </class> + <class name="android/text/method/ArrowKeyMovementMethod" since="1"> + <extends name="android/text/method/BaseMovementMethod" since="11"/> + <extends name="java/lang/Object" removed="11"/> + <implements name="android/text/method/MovementMethod"/> + <method name="<init>()V"/> + <method name="getInstance()Landroid/text/method/MovementMethod;"/> + </class> + <class name="android/text/method/BaseKeyListener" since="1"> + <extends name="android/text/method/MetaKeyKeyListener"/> + <implements name="android/text/method/KeyListener"/> + <method name="<init>()V"/> + <method name="backspace(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z"/> + <method name="forwardDelete(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z" since="11"/> + </class> + <class name="android/text/method/BaseMovementMethod" since="11"> + <extends name="java/lang/Object"/> + <implements name="android/text/method/MovementMethod"/> + <method name="<init>()V"/> + <method name="bottom(Landroid/widget/TextView;Landroid/text/Spannable;)Z"/> + <method name="down(Landroid/widget/TextView;Landroid/text/Spannable;)Z"/> + <method name="end(Landroid/widget/TextView;Landroid/text/Spannable;)Z"/> + <method name="getMovementMetaState(Landroid/text/Spannable;Landroid/view/KeyEvent;)I"/> + <method name="handleMovementKey(Landroid/widget/TextView;Landroid/text/Spannable;IILandroid/view/KeyEvent;)Z"/> + <method name="home(Landroid/widget/TextView;Landroid/text/Spannable;)Z"/> + <method name="left(Landroid/widget/TextView;Landroid/text/Spannable;)Z"/> + <method name="lineEnd(Landroid/widget/TextView;Landroid/text/Spannable;)Z"/> + <method name="lineStart(Landroid/widget/TextView;Landroid/text/Spannable;)Z"/> + <method name="pageDown(Landroid/widget/TextView;Landroid/text/Spannable;)Z"/> + <method name="pageUp(Landroid/widget/TextView;Landroid/text/Spannable;)Z"/> + <method name="right(Landroid/widget/TextView;Landroid/text/Spannable;)Z"/> + <method name="top(Landroid/widget/TextView;Landroid/text/Spannable;)Z"/> + <method name="up(Landroid/widget/TextView;Landroid/text/Spannable;)Z"/> + </class> + <class name="android/text/method/CharacterPickerDialog" since="1"> + <extends name="android/app/Dialog"/> + <implements name="android/view/View$OnClickListener"/> + <implements name="android/widget/AdapterView$OnItemClickListener"/> + <method name="<init>(Landroid/content/Context;Landroid/view/View;Landroid/text/Editable;Ljava/lang/String;Z)V"/> + </class> + <class name="android/text/method/DateKeyListener" since="1"> + <extends name="android/text/method/NumberKeyListener"/> + <method name="<init>()V" deprecated="26"/> + <method name="<init>(Ljava/util/Locale;)V" since="26"/> + <method name="getInstance()Landroid/text/method/DateKeyListener;" deprecated="26"/> + <method name="getInstance(Ljava/util/Locale;)Landroid/text/method/DateKeyListener;" since="26"/> + <field name="CHARACTERS" deprecated="26"/> + </class> + <class name="android/text/method/DateTimeKeyListener" since="1"> + <extends name="android/text/method/NumberKeyListener"/> + <method name="<init>()V" deprecated="26"/> + <method name="<init>(Ljava/util/Locale;)V" since="26"/> + <method name="getInstance()Landroid/text/method/DateTimeKeyListener;" deprecated="26"/> + <method name="getInstance(Ljava/util/Locale;)Landroid/text/method/DateTimeKeyListener;" since="26"/> + <field name="CHARACTERS" deprecated="26"/> + </class> + <class name="android/text/method/DialerKeyListener" since="1"> + <extends name="android/text/method/NumberKeyListener"/> + <method name="<init>()V"/> + <method name="getInstance()Landroid/text/method/DialerKeyListener;"/> + <field name="CHARACTERS"/> + </class> + <class name="android/text/method/DigitsKeyListener" since="1"> + <extends name="android/text/method/NumberKeyListener"/> + <method name="<init>()V" deprecated="26"/> + <method name="<init>(Ljava/util/Locale;)V" since="26"/> + <method name="<init>(Ljava/util/Locale;ZZ)V" since="26"/> + <method name="<init>(ZZ)V" deprecated="26"/> + <method name="getInstance()Landroid/text/method/DigitsKeyListener;" deprecated="26"/> + <method name="getInstance(Ljava/lang/String;)Landroid/text/method/DigitsKeyListener;"/> + <method name="getInstance(Ljava/util/Locale;)Landroid/text/method/DigitsKeyListener;" since="26"/> + <method name="getInstance(Ljava/util/Locale;ZZ)Landroid/text/method/DigitsKeyListener;" since="26"/> + <method name="getInstance(ZZ)Landroid/text/method/DigitsKeyListener;" deprecated="26"/> + </class> + <class name="android/text/method/HideReturnsTransformationMethod" since="1"> + <extends name="android/text/method/ReplacementTransformationMethod"/> + <method name="<init>()V"/> + <method name="getInstance()Landroid/text/method/HideReturnsTransformationMethod;"/> + </class> + <class name="android/text/method/KeyListener" since="1"> + <extends name="java/lang/Object"/> + <method name="clearMetaKeyState(Landroid/view/View;Landroid/text/Editable;I)V" since="3"/> + <method name="getInputType()I" since="3"/> + <method name="onKeyDown(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z"/> + <method name="onKeyOther(Landroid/view/View;Landroid/text/Editable;Landroid/view/KeyEvent;)Z" since="3"/> + <method name="onKeyUp(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z"/> + </class> + <class name="android/text/method/LinkMovementMethod" since="1"> + <extends name="android/text/method/ScrollingMovementMethod"/> + <method name="<init>()V"/> + </class> + <class name="android/text/method/MetaKeyKeyListener" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="adjustMetaAfterKeypress(J)J" since="3"/> + <method name="adjustMetaAfterKeypress(Landroid/text/Spannable;)V"/> + <method name="clearMetaKeyState(JI)J" since="3"/> + <method name="clearMetaKeyState(Landroid/text/Editable;I)V" since="3"/> + <method name="clearMetaKeyState(Landroid/view/View;Landroid/text/Editable;I)V" since="3"/> + <method name="getMetaState(J)I" since="3"/> + <method name="getMetaState(JI)I" since="3"/> + <method name="getMetaState(Ljava/lang/CharSequence;)I"/> + <method name="getMetaState(Ljava/lang/CharSequence;I)I"/> + <method name="getMetaState(Ljava/lang/CharSequence;ILandroid/view/KeyEvent;)I" since="19"/> + <method name="getMetaState(Ljava/lang/CharSequence;Landroid/view/KeyEvent;)I" since="19"/> + <method name="handleKeyDown(JILandroid/view/KeyEvent;)J" since="3"/> + <method name="handleKeyUp(JILandroid/view/KeyEvent;)J" since="3"/> + <method name="isMetaTracker(Ljava/lang/CharSequence;Ljava/lang/Object;)Z"/> + <method name="isSelectingMetaTracker(Ljava/lang/CharSequence;Ljava/lang/Object;)Z" since="3"/> + <method name="onKeyDown(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z"/> + <method name="onKeyUp(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z"/> + <method name="resetLockedMeta(J)J" since="3"/> + <method name="resetLockedMeta(Landroid/text/Spannable;)V"/> + <method name="resetMetaState(Landroid/text/Spannable;)V"/> + <field name="META_ALT_LOCKED"/> + <field name="META_ALT_ON"/> + <field name="META_CAP_LOCKED"/> + <field name="META_SHIFT_ON"/> + <field name="META_SYM_LOCKED"/> + <field name="META_SYM_ON"/> + </class> + <class name="android/text/method/MovementMethod" since="1"> + <extends name="java/lang/Object"/> + <method name="canSelectArbitrarily()Z"/> + <method name="initialize(Landroid/widget/TextView;Landroid/text/Spannable;)V"/> + <method name="onGenericMotionEvent(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/MotionEvent;)Z" since="12"/> + <method name="onKeyDown(Landroid/widget/TextView;Landroid/text/Spannable;ILandroid/view/KeyEvent;)Z"/> + <method name="onKeyOther(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/KeyEvent;)Z" since="3"/> + <method name="onKeyUp(Landroid/widget/TextView;Landroid/text/Spannable;ILandroid/view/KeyEvent;)Z"/> + <method name="onTakeFocus(Landroid/widget/TextView;Landroid/text/Spannable;I)V"/> + <method name="onTouchEvent(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/MotionEvent;)Z"/> + <method name="onTrackballEvent(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/MotionEvent;)Z"/> + </class> + <class name="android/text/method/MultiTapKeyListener" since="1"> + <extends name="android/text/method/BaseKeyListener"/> + <implements name="android/text/SpanWatcher"/> + <method name="<init>(Landroid/text/method/TextKeyListener$Capitalize;Z)V"/> + <method name="getInstance(ZLandroid/text/method/TextKeyListener$Capitalize;)Landroid/text/method/MultiTapKeyListener;"/> + </class> + <class name="android/text/method/NumberKeyListener" since="1"> + <extends name="android/text/method/BaseKeyListener"/> + <implements name="android/text/InputFilter"/> + <method name="<init>()V"/> + <method name="getAcceptedChars()[C"/> + <method name="lookup(Landroid/view/KeyEvent;Landroid/text/Spannable;)I"/> + <method name="ok([CC)Z"/> + </class> + <class name="android/text/method/PasswordTransformationMethod" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/TextWatcher"/> + <implements name="android/text/method/TransformationMethod"/> + <method name="<init>()V"/> + <method name="getInstance()Landroid/text/method/PasswordTransformationMethod;"/> + </class> + <class name="android/text/method/QwertyKeyListener" since="1"> + <extends name="android/text/method/BaseKeyListener"/> + <method name="<init>(Landroid/text/method/TextKeyListener$Capitalize;Z)V"/> + <method name="getInstance(ZLandroid/text/method/TextKeyListener$Capitalize;)Landroid/text/method/QwertyKeyListener;"/> + <method name="getInstanceForFullKeyboard()Landroid/text/method/QwertyKeyListener;" since="11"/> + <method name="markAsReplaced(Landroid/text/Spannable;IILjava/lang/String;)V"/> + </class> + <class name="android/text/method/ReplacementTransformationMethod" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/method/TransformationMethod"/> + <method name="<init>()V"/> + <method name="getOriginal()[C"/> + <method name="getReplacement()[C"/> + </class> + <class name="android/text/method/ScrollingMovementMethod" since="1"> + <extends name="android/text/method/BaseMovementMethod" since="11"/> + <extends name="java/lang/Object" removed="11"/> + <implements name="android/text/method/MovementMethod"/> + <method name="<init>()V"/> + <method name="down(Landroid/widget/TextView;Landroid/text/Spannable;)Z"/> + <method name="getInstance()Landroid/text/method/MovementMethod;"/> + <method name="left(Landroid/widget/TextView;Landroid/text/Spannable;)Z"/> + <method name="right(Landroid/widget/TextView;Landroid/text/Spannable;)Z"/> + <method name="up(Landroid/widget/TextView;Landroid/text/Spannable;)Z"/> + </class> + <class name="android/text/method/SingleLineTransformationMethod" since="1"> + <extends name="android/text/method/ReplacementTransformationMethod"/> + <method name="<init>()V"/> + <method name="getInstance()Landroid/text/method/SingleLineTransformationMethod;"/> + </class> + <class name="android/text/method/TextKeyListener" since="1"> + <extends name="android/text/method/BaseKeyListener"/> + <implements name="android/text/SpanWatcher"/> + <method name="<init>(Landroid/text/method/TextKeyListener$Capitalize;Z)V"/> + <method name="clear(Landroid/text/Editable;)V"/> + <method name="getInstance()Landroid/text/method/TextKeyListener;"/> + <method name="getInstance(ZLandroid/text/method/TextKeyListener$Capitalize;)Landroid/text/method/TextKeyListener;"/> + <method name="release()V"/> + <method name="shouldCap(Landroid/text/method/TextKeyListener$Capitalize;Ljava/lang/CharSequence;I)Z"/> + </class> + <class name="android/text/method/TextKeyListener$Capitalize" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/text/method/TextKeyListener$Capitalize;"/> + <method name="values()[Landroid/text/method/TextKeyListener$Capitalize;"/> + <field name="CHARACTERS"/> + <field name="NONE"/> + <field name="SENTENCES"/> + <field name="WORDS"/> + </class> + <class name="android/text/method/TimeKeyListener" since="1"> + <extends name="android/text/method/NumberKeyListener"/> + <method name="<init>()V" deprecated="26"/> + <method name="<init>(Ljava/util/Locale;)V" since="26"/> + <method name="getInstance()Landroid/text/method/TimeKeyListener;" deprecated="26"/> + <method name="getInstance(Ljava/util/Locale;)Landroid/text/method/TimeKeyListener;" since="26"/> + <field name="CHARACTERS" deprecated="26"/> + </class> + <class name="android/text/method/Touch" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getInitialScrollX(Landroid/widget/TextView;Landroid/text/Spannable;)I" since="3"/> + <method name="getInitialScrollY(Landroid/widget/TextView;Landroid/text/Spannable;)I" since="3"/> + <method name="onTouchEvent(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/MotionEvent;)Z"/> + <method name="scrollTo(Landroid/widget/TextView;Landroid/text/Layout;II)V"/> + </class> + <class name="android/text/method/TransformationMethod" since="1"> + <extends name="java/lang/Object"/> + <method name="getTransformation(Ljava/lang/CharSequence;Landroid/view/View;)Ljava/lang/CharSequence;"/> + <method name="onFocusChanged(Landroid/view/View;Ljava/lang/CharSequence;ZILandroid/graphics/Rect;)V"/> + </class> + <class name="android/text/style/AbsoluteSizeSpan" since="1"> + <extends name="android/text/style/MetricAffectingSpan"/> + <implements name="android/text/ParcelableSpan" since="3"/> + <method name="<init>(I)V"/> + <method name="<init>(IZ)V" since="5"/> + <method name="<init>(Landroid/os/Parcel;)V" since="3"/> + <method name="getDip()Z" since="5"/> + <method name="getSize()I"/> + </class> + <class name="android/text/style/AlignmentSpan" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/style/ParagraphStyle"/> + <method name="getAlignment()Landroid/text/Layout$Alignment;"/> + </class> + <class name="android/text/style/AlignmentSpan$Standard" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/ParcelableSpan" since="3"/> + <implements name="android/text/style/AlignmentSpan"/> + <method name="<init>(Landroid/os/Parcel;)V" since="3"/> + <method name="<init>(Landroid/text/Layout$Alignment;)V"/> + </class> + <class name="android/text/style/BackgroundColorSpan" since="1"> + <extends name="android/text/style/CharacterStyle"/> + <implements name="android/text/ParcelableSpan" since="3"/> + <implements name="android/text/style/UpdateAppearance" since="3"/> + <method name="<init>(I)V"/> + <method name="<init>(Landroid/os/Parcel;)V" since="3"/> + <method name="getBackgroundColor()I"/> + </class> + <class name="android/text/style/BulletSpan" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/ParcelableSpan" since="3"/> + <implements name="android/text/style/LeadingMarginSpan"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(II)V"/> + <method name="<init>(Landroid/os/Parcel;)V" since="3"/> + <field name="STANDARD_GAP_WIDTH"/> + </class> + <class name="android/text/style/CharacterStyle" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getUnderlying()Landroid/text/style/CharacterStyle;"/> + <method name="updateDrawState(Landroid/text/TextPaint;)V"/> + <method name="wrap(Landroid/text/style/CharacterStyle;)Landroid/text/style/CharacterStyle;"/> + </class> + <class name="android/text/style/ClickableSpan" since="1"> + <extends name="android/text/style/CharacterStyle"/> + <implements name="android/text/style/UpdateAppearance" since="3"/> + <method name="<init>()V"/> + <method name="onClick(Landroid/view/View;)V"/> + </class> + <class name="android/text/style/DrawableMarginSpan" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/style/LeadingMarginSpan"/> + <implements name="android/text/style/LineHeightSpan"/> + <method name="<init>(Landroid/graphics/drawable/Drawable;)V"/> + <method name="<init>(Landroid/graphics/drawable/Drawable;I)V"/> + </class> + <class name="android/text/style/DynamicDrawableSpan" since="1"> + <extends name="android/text/style/ReplacementSpan"/> + <method name="<init>()V"/> + <method name="<init>(I)V" since="3"/> + <method name="getDrawable()Landroid/graphics/drawable/Drawable;"/> + <method name="getVerticalAlignment()I" since="3"/> + <field name="ALIGN_BASELINE" since="3"/> + <field name="ALIGN_BOTTOM" since="3"/> + <field name="mVerticalAlignment" since="3"/> + </class> + <class name="android/text/style/EasyEditSpan" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/text/ParcelableSpan"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/app/PendingIntent;)V" since="18"/> + <method name="<init>(Landroid/os/Parcel;)V" since="18"/> + <field name="EXTRA_TEXT_CHANGED_TYPE" since="18"/> + <field name="TEXT_DELETED" since="18"/> + <field name="TEXT_MODIFIED" since="18"/> + </class> + <class name="android/text/style/ForegroundColorSpan" since="1"> + <extends name="android/text/style/CharacterStyle"/> + <implements name="android/text/ParcelableSpan" since="3"/> + <implements name="android/text/style/UpdateAppearance" since="3"/> + <method name="<init>(I)V"/> + <method name="<init>(Landroid/os/Parcel;)V" since="3"/> + <method name="getForegroundColor()I"/> + </class> + <class name="android/text/style/IconMarginSpan" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/style/LeadingMarginSpan"/> + <implements name="android/text/style/LineHeightSpan"/> + <method name="<init>(Landroid/graphics/Bitmap;)V"/> + <method name="<init>(Landroid/graphics/Bitmap;I)V"/> + </class> + <class name="android/text/style/ImageSpan" since="1"> + <extends name="android/text/style/DynamicDrawableSpan"/> + <method name="<init>(Landroid/content/Context;I)V"/> + <method name="<init>(Landroid/content/Context;II)V" since="3"/> + <method name="<init>(Landroid/content/Context;Landroid/graphics/Bitmap;)V" since="4"/> + <method name="<init>(Landroid/content/Context;Landroid/graphics/Bitmap;I)V" since="4"/> + <method name="<init>(Landroid/content/Context;Landroid/net/Uri;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/net/Uri;I)V" since="3"/> + <method name="<init>(Landroid/graphics/Bitmap;)V" deprecated="16"/> + <method name="<init>(Landroid/graphics/Bitmap;I)V" since="3" deprecated="16"/> + <method name="<init>(Landroid/graphics/drawable/Drawable;)V"/> + <method name="<init>(Landroid/graphics/drawable/Drawable;I)V" since="3"/> + <method name="<init>(Landroid/graphics/drawable/Drawable;Ljava/lang/String;)V"/> + <method name="<init>(Landroid/graphics/drawable/Drawable;Ljava/lang/String;I)V" since="3"/> + <method name="getSource()Ljava/lang/String;"/> + </class> + <class name="android/text/style/LeadingMarginSpan" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/style/ParagraphStyle"/> + <method name="drawLeadingMargin(Landroid/graphics/Canvas;Landroid/graphics/Paint;IIIIILjava/lang/CharSequence;IIZLandroid/text/Layout;)V"/> + <method name="getLeadingMargin(Z)I"/> + </class> + <class name="android/text/style/LeadingMarginSpan$LeadingMarginSpan2" since="8"> + <extends name="java/lang/Object"/> + <implements name="android/text/style/LeadingMarginSpan"/> + <implements name="android/text/style/WrapTogetherSpan"/> + <method name="getLeadingMarginLineCount()I"/> + </class> + <class name="android/text/style/LeadingMarginSpan$Standard" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/ParcelableSpan" since="3"/> + <implements name="android/text/style/LeadingMarginSpan"/> + <method name="<init>(I)V"/> + <method name="<init>(II)V"/> + <method name="<init>(Landroid/os/Parcel;)V" since="3"/> + </class> + <class name="android/text/style/LineBackgroundSpan" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/style/ParagraphStyle"/> + <method name="drawBackground(Landroid/graphics/Canvas;Landroid/graphics/Paint;IIIIILjava/lang/CharSequence;III)V"/> + </class> + <class name="android/text/style/LineHeightSpan" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/style/ParagraphStyle"/> + <implements name="android/text/style/WrapTogetherSpan"/> + <method name="chooseHeight(Ljava/lang/CharSequence;IIIILandroid/graphics/Paint$FontMetricsInt;)V"/> + </class> + <class name="android/text/style/LineHeightSpan$WithDensity" since="5"> + <extends name="java/lang/Object"/> + <implements name="android/text/style/LineHeightSpan"/> + <method name="chooseHeight(Ljava/lang/CharSequence;IIIILandroid/graphics/Paint$FontMetricsInt;Landroid/text/TextPaint;)V"/> + </class> + <class name="android/text/style/LocaleSpan" since="17"> + <extends name="android/text/style/MetricAffectingSpan"/> + <implements name="android/text/ParcelableSpan"/> + <method name="<init>(Landroid/os/LocaleList;)V" since="24"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="<init>(Ljava/util/Locale;)V"/> + <method name="getLocale()Ljava/util/Locale;"/> + <method name="getLocales()Landroid/os/LocaleList;" since="24"/> + </class> + <class name="android/text/style/MaskFilterSpan" since="1"> + <extends name="android/text/style/CharacterStyle"/> + <implements name="android/text/style/UpdateAppearance" since="3"/> + <method name="<init>(Landroid/graphics/MaskFilter;)V"/> + <method name="getMaskFilter()Landroid/graphics/MaskFilter;"/> + </class> + <class name="android/text/style/MetricAffectingSpan" since="1"> + <extends name="android/text/style/CharacterStyle"/> + <implements name="android/text/style/UpdateLayout"/> + <method name="<init>()V"/> + <method name="getUnderlying()Landroid/text/style/MetricAffectingSpan;"/> + <method name="updateMeasureState(Landroid/text/TextPaint;)V"/> + </class> + <class name="android/text/style/ParagraphStyle" since="1"> + <extends name="java/lang/Object"/> + </class> + <class name="android/text/style/QuoteSpan" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/ParcelableSpan" since="3"/> + <implements name="android/text/style/LeadingMarginSpan"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(Landroid/os/Parcel;)V" since="3"/> + <method name="getColor()I"/> + </class> + <class name="android/text/style/RasterizerSpan" since="1" removed="26"> + <extends name="android/text/style/CharacterStyle"/> + <implements name="android/text/style/UpdateAppearance" since="3"/> + <method name="<init>(Landroid/graphics/Rasterizer;)V"/> + <method name="getRasterizer()Landroid/graphics/Rasterizer;"/> + </class> + <class name="android/text/style/RelativeSizeSpan" since="1"> + <extends name="android/text/style/MetricAffectingSpan"/> + <implements name="android/text/ParcelableSpan" since="3"/> + <method name="<init>(F)V"/> + <method name="<init>(Landroid/os/Parcel;)V" since="3"/> + <method name="getSizeChange()F"/> + </class> + <class name="android/text/style/ReplacementSpan" since="1"> + <extends name="android/text/style/MetricAffectingSpan"/> + <method name="<init>()V"/> + <method name="draw(Landroid/graphics/Canvas;Ljava/lang/CharSequence;IIFIIILandroid/graphics/Paint;)V"/> + <method name="getSize(Landroid/graphics/Paint;Ljava/lang/CharSequence;IILandroid/graphics/Paint$FontMetricsInt;)I"/> + </class> + <class name="android/text/style/ScaleXSpan" since="1"> + <extends name="android/text/style/MetricAffectingSpan"/> + <implements name="android/text/ParcelableSpan" since="3"/> + <method name="<init>(F)V"/> + <method name="<init>(Landroid/os/Parcel;)V" since="3"/> + <method name="getScaleX()F"/> + </class> + <class name="android/text/style/StrikethroughSpan" since="1"> + <extends name="android/text/style/CharacterStyle"/> + <implements name="android/text/ParcelableSpan" since="3"/> + <implements name="android/text/style/UpdateAppearance" since="3"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/os/Parcel;)V" since="3"/> + </class> + <class name="android/text/style/StyleSpan" since="1"> + <extends name="android/text/style/MetricAffectingSpan"/> + <implements name="android/text/ParcelableSpan" since="3"/> + <method name="<init>(I)V"/> + <method name="<init>(Landroid/os/Parcel;)V" since="3"/> + <method name="getStyle()I"/> + </class> + <class name="android/text/style/SubscriptSpan" since="1"> + <extends name="android/text/style/MetricAffectingSpan"/> + <implements name="android/text/ParcelableSpan" since="3"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/os/Parcel;)V" since="3"/> + </class> + <class name="android/text/style/SuggestionSpan" since="14"> + <extends name="android/text/style/CharacterStyle"/> + <implements name="android/text/ParcelableSpan"/> + <method name="<init>(Landroid/content/Context;Ljava/util/Locale;[Ljava/lang/String;ILjava/lang/Class;)V"/> + <method name="<init>(Landroid/content/Context;[Ljava/lang/String;I)V"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="<init>(Ljava/util/Locale;[Ljava/lang/String;I)V"/> + <method name="getFlags()I"/> + <method name="getLocale()Ljava/lang/String;" deprecated="24"/> + <method name="getLocaleObject()Ljava/util/Locale;" since="24"/> + <method name="getSuggestions()[Ljava/lang/String;"/> + <method name="setFlags(I)V"/> + <field name="ACTION_SUGGESTION_PICKED"/> + <field name="CREATOR"/> + <field name="FLAG_AUTO_CORRECTION" since="15"/> + <field name="FLAG_EASY_CORRECT"/> + <field name="FLAG_MISSPELLED"/> + <field name="SUGGESTIONS_MAX_SIZE"/> + <field name="SUGGESTION_SPAN_PICKED_AFTER"/> + <field name="SUGGESTION_SPAN_PICKED_BEFORE"/> + <field name="SUGGESTION_SPAN_PICKED_HASHCODE"/> + </class> + <class name="android/text/style/SuperscriptSpan" since="1"> + <extends name="android/text/style/MetricAffectingSpan"/> + <implements name="android/text/ParcelableSpan" since="3"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/os/Parcel;)V" since="3"/> + </class> + <class name="android/text/style/TabStopSpan" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/style/ParagraphStyle"/> + <method name="getTabStop()I"/> + </class> + <class name="android/text/style/TabStopSpan$Standard" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/style/TabStopSpan"/> + <method name="<init>(I)V"/> + </class> + <class name="android/text/style/TextAppearanceSpan" since="1"> + <extends name="android/text/style/MetricAffectingSpan"/> + <implements name="android/text/ParcelableSpan" since="3"/> + <method name="<init>(Landroid/content/Context;I)V"/> + <method name="<init>(Landroid/content/Context;II)V"/> + <method name="<init>(Landroid/os/Parcel;)V" since="3"/> + <method name="<init>(Ljava/lang/String;IILandroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;)V"/> + <method name="getFamily()Ljava/lang/String;"/> + <method name="getLinkTextColor()Landroid/content/res/ColorStateList;"/> + <method name="getTextColor()Landroid/content/res/ColorStateList;"/> + <method name="getTextSize()I"/> + <method name="getTextStyle()I"/> + </class> + <class name="android/text/style/TtsSpan" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/text/ParcelableSpan"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="<init>(Ljava/lang/String;Landroid/os/PersistableBundle;)V"/> + <method name="getArgs()Landroid/os/PersistableBundle;"/> + <method name="getType()Ljava/lang/String;"/> + <field name="ANIMACY_ANIMATE"/> + <field name="ANIMACY_INANIMATE"/> + <field name="ARG_ANIMACY"/> + <field name="ARG_CASE"/> + <field name="ARG_COUNTRY_CODE"/> + <field name="ARG_CURRENCY"/> + <field name="ARG_DAY"/> + <field name="ARG_DENOMINATOR"/> + <field name="ARG_DIGITS"/> + <field name="ARG_DOMAIN"/> + <field name="ARG_EXTENSION"/> + <field name="ARG_FRACTIONAL_PART"/> + <field name="ARG_FRAGMENT_ID"/> + <field name="ARG_GENDER"/> + <field name="ARG_HOURS"/> + <field name="ARG_INTEGER_PART"/> + <field name="ARG_MINUTES"/> + <field name="ARG_MONTH"/> + <field name="ARG_MULTIPLICITY"/> + <field name="ARG_NUMBER"/> + <field name="ARG_NUMBER_PARTS"/> + <field name="ARG_NUMERATOR"/> + <field name="ARG_PASSWORD"/> + <field name="ARG_PATH"/> + <field name="ARG_PORT"/> + <field name="ARG_PROTOCOL"/> + <field name="ARG_QUANTITY"/> + <field name="ARG_QUERY_STRING"/> + <field name="ARG_TEXT"/> + <field name="ARG_UNIT"/> + <field name="ARG_USERNAME"/> + <field name="ARG_VERBATIM"/> + <field name="ARG_WEEKDAY"/> + <field name="ARG_YEAR"/> + <field name="CASE_ABLATIVE"/> + <field name="CASE_ACCUSATIVE"/> + <field name="CASE_DATIVE"/> + <field name="CASE_GENITIVE"/> + <field name="CASE_INSTRUMENTAL"/> + <field name="CASE_LOCATIVE"/> + <field name="CASE_NOMINATIVE"/> + <field name="CASE_VOCATIVE"/> + <field name="GENDER_FEMALE"/> + <field name="GENDER_MALE"/> + <field name="GENDER_NEUTRAL"/> + <field name="MONTH_APRIL"/> + <field name="MONTH_AUGUST"/> + <field name="MONTH_DECEMBER"/> + <field name="MONTH_FEBRUARY"/> + <field name="MONTH_JANUARY"/> + <field name="MONTH_JULY"/> + <field name="MONTH_JUNE"/> + <field name="MONTH_MARCH"/> + <field name="MONTH_MAY"/> + <field name="MONTH_NOVEMBER"/> + <field name="MONTH_OCTOBER"/> + <field name="MONTH_SEPTEMBER"/> + <field name="MULTIPLICITY_DUAL"/> + <field name="MULTIPLICITY_PLURAL"/> + <field name="MULTIPLICITY_SINGLE"/> + <field name="TYPE_CARDINAL"/> + <field name="TYPE_DATE"/> + <field name="TYPE_DECIMAL"/> + <field name="TYPE_DIGITS"/> + <field name="TYPE_ELECTRONIC"/> + <field name="TYPE_FRACTION"/> + <field name="TYPE_MEASURE"/> + <field name="TYPE_MONEY"/> + <field name="TYPE_ORDINAL"/> + <field name="TYPE_TELEPHONE"/> + <field name="TYPE_TEXT"/> + <field name="TYPE_TIME"/> + <field name="TYPE_VERBATIM"/> + <field name="WEEKDAY_FRIDAY"/> + <field name="WEEKDAY_MONDAY"/> + <field name="WEEKDAY_SATURDAY"/> + <field name="WEEKDAY_SUNDAY"/> + <field name="WEEKDAY_THURSDAY"/> + <field name="WEEKDAY_TUESDAY"/> + <field name="WEEKDAY_WEDNESDAY"/> + </class> + <class name="android/text/style/TtsSpan$Builder" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="build()Landroid/text/style/TtsSpan;"/> + <method name="setIntArgument(Ljava/lang/String;I)Landroid/text/style/TtsSpan$Builder;"/> + <method name="setLongArgument(Ljava/lang/String;J)Landroid/text/style/TtsSpan$Builder;"/> + <method name="setStringArgument(Ljava/lang/String;Ljava/lang/String;)Landroid/text/style/TtsSpan$Builder;"/> + </class> + <class name="android/text/style/TtsSpan$CardinalBuilder" since="21"> + <extends name="android/text/style/TtsSpan$SemioticClassBuilder"/> + <method name="<init>()V"/> + <method name="<init>(J)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="setNumber(J)Landroid/text/style/TtsSpan$CardinalBuilder;"/> + <method name="setNumber(Ljava/lang/String;)Landroid/text/style/TtsSpan$CardinalBuilder;"/> + </class> + <class name="android/text/style/TtsSpan$DateBuilder" since="21"> + <extends name="android/text/style/TtsSpan$SemioticClassBuilder"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;)V"/> + <method name="setDay(I)Landroid/text/style/TtsSpan$DateBuilder;"/> + <method name="setMonth(I)Landroid/text/style/TtsSpan$DateBuilder;"/> + <method name="setWeekday(I)Landroid/text/style/TtsSpan$DateBuilder;"/> + <method name="setYear(I)Landroid/text/style/TtsSpan$DateBuilder;"/> + </class> + <class name="android/text/style/TtsSpan$DecimalBuilder" since="21"> + <extends name="android/text/style/TtsSpan$SemioticClassBuilder"/> + <method name="<init>()V"/> + <method name="<init>(DII)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="setArgumentsFromDouble(DII)Landroid/text/style/TtsSpan$DecimalBuilder;"/> + <method name="setFractionalPart(Ljava/lang/String;)Landroid/text/style/TtsSpan$DecimalBuilder;"/> + <method name="setIntegerPart(J)Landroid/text/style/TtsSpan$DecimalBuilder;"/> + <method name="setIntegerPart(Ljava/lang/String;)Landroid/text/style/TtsSpan$DecimalBuilder;"/> + </class> + <class name="android/text/style/TtsSpan$DigitsBuilder" since="21"> + <extends name="android/text/style/TtsSpan$SemioticClassBuilder"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="setDigits(Ljava/lang/String;)Landroid/text/style/TtsSpan$DigitsBuilder;"/> + </class> + <class name="android/text/style/TtsSpan$ElectronicBuilder" since="21"> + <extends name="android/text/style/TtsSpan$SemioticClassBuilder"/> + <method name="<init>()V"/> + <method name="setDomain(Ljava/lang/String;)Landroid/text/style/TtsSpan$ElectronicBuilder;"/> + <method name="setEmailArguments(Ljava/lang/String;Ljava/lang/String;)Landroid/text/style/TtsSpan$ElectronicBuilder;"/> + <method name="setFragmentId(Ljava/lang/String;)Landroid/text/style/TtsSpan$ElectronicBuilder;"/> + <method name="setPassword(Ljava/lang/String;)Landroid/text/style/TtsSpan$ElectronicBuilder;"/> + <method name="setPath(Ljava/lang/String;)Landroid/text/style/TtsSpan$ElectronicBuilder;"/> + <method name="setPort(I)Landroid/text/style/TtsSpan$ElectronicBuilder;"/> + <method name="setProtocol(Ljava/lang/String;)Landroid/text/style/TtsSpan$ElectronicBuilder;"/> + <method name="setQueryString(Ljava/lang/String;)Landroid/text/style/TtsSpan$ElectronicBuilder;"/> + <method name="setUsername(Ljava/lang/String;)Landroid/text/style/TtsSpan$ElectronicBuilder;"/> + </class> + <class name="android/text/style/TtsSpan$FractionBuilder" since="21"> + <extends name="android/text/style/TtsSpan$SemioticClassBuilder"/> + <method name="<init>()V"/> + <method name="<init>(JJJ)V"/> + <method name="setDenominator(J)Landroid/text/style/TtsSpan$FractionBuilder;"/> + <method name="setDenominator(Ljava/lang/String;)Landroid/text/style/TtsSpan$FractionBuilder;"/> + <method name="setIntegerPart(J)Landroid/text/style/TtsSpan$FractionBuilder;"/> + <method name="setIntegerPart(Ljava/lang/String;)Landroid/text/style/TtsSpan$FractionBuilder;"/> + <method name="setNumerator(J)Landroid/text/style/TtsSpan$FractionBuilder;"/> + <method name="setNumerator(Ljava/lang/String;)Landroid/text/style/TtsSpan$FractionBuilder;"/> + </class> + <class name="android/text/style/TtsSpan$MeasureBuilder" since="21"> + <extends name="android/text/style/TtsSpan$SemioticClassBuilder"/> + <method name="<init>()V"/> + <method name="setDenominator(J)Landroid/text/style/TtsSpan$MeasureBuilder;"/> + <method name="setDenominator(Ljava/lang/String;)Landroid/text/style/TtsSpan$MeasureBuilder;"/> + <method name="setFractionalPart(Ljava/lang/String;)Landroid/text/style/TtsSpan$MeasureBuilder;"/> + <method name="setIntegerPart(J)Landroid/text/style/TtsSpan$MeasureBuilder;"/> + <method name="setIntegerPart(Ljava/lang/String;)Landroid/text/style/TtsSpan$MeasureBuilder;"/> + <method name="setNumber(J)Landroid/text/style/TtsSpan$MeasureBuilder;"/> + <method name="setNumber(Ljava/lang/String;)Landroid/text/style/TtsSpan$MeasureBuilder;"/> + <method name="setNumerator(J)Landroid/text/style/TtsSpan$MeasureBuilder;"/> + <method name="setNumerator(Ljava/lang/String;)Landroid/text/style/TtsSpan$MeasureBuilder;"/> + <method name="setUnit(Ljava/lang/String;)Landroid/text/style/TtsSpan$MeasureBuilder;"/> + </class> + <class name="android/text/style/TtsSpan$MoneyBuilder" since="21"> + <extends name="android/text/style/TtsSpan$SemioticClassBuilder"/> + <method name="<init>()V"/> + <method name="setCurrency(Ljava/lang/String;)Landroid/text/style/TtsSpan$MoneyBuilder;"/> + <method name="setFractionalPart(Ljava/lang/String;)Landroid/text/style/TtsSpan$MoneyBuilder;"/> + <method name="setIntegerPart(J)Landroid/text/style/TtsSpan$MoneyBuilder;"/> + <method name="setIntegerPart(Ljava/lang/String;)Landroid/text/style/TtsSpan$MoneyBuilder;"/> + <method name="setQuantity(Ljava/lang/String;)Landroid/text/style/TtsSpan$MoneyBuilder;"/> + </class> + <class name="android/text/style/TtsSpan$OrdinalBuilder" since="21"> + <extends name="android/text/style/TtsSpan$SemioticClassBuilder"/> + <method name="<init>()V"/> + <method name="<init>(J)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="setNumber(J)Landroid/text/style/TtsSpan$OrdinalBuilder;"/> + <method name="setNumber(Ljava/lang/String;)Landroid/text/style/TtsSpan$OrdinalBuilder;"/> + </class> + <class name="android/text/style/TtsSpan$SemioticClassBuilder" since="21"> + <extends name="android/text/style/TtsSpan$Builder"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="setAnimacy(Ljava/lang/String;)Landroid/text/style/TtsSpan$SemioticClassBuilder;"/> + <method name="setCase(Ljava/lang/String;)Landroid/text/style/TtsSpan$SemioticClassBuilder;"/> + <method name="setGender(Ljava/lang/String;)Landroid/text/style/TtsSpan$SemioticClassBuilder;"/> + <method name="setMultiplicity(Ljava/lang/String;)Landroid/text/style/TtsSpan$SemioticClassBuilder;"/> + </class> + <class name="android/text/style/TtsSpan$TelephoneBuilder" since="21"> + <extends name="android/text/style/TtsSpan$SemioticClassBuilder"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="setCountryCode(Ljava/lang/String;)Landroid/text/style/TtsSpan$TelephoneBuilder;"/> + <method name="setExtension(Ljava/lang/String;)Landroid/text/style/TtsSpan$TelephoneBuilder;"/> + <method name="setNumberParts(Ljava/lang/String;)Landroid/text/style/TtsSpan$TelephoneBuilder;"/> + </class> + <class name="android/text/style/TtsSpan$TextBuilder" since="21"> + <extends name="android/text/style/TtsSpan$SemioticClassBuilder"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="setText(Ljava/lang/String;)Landroid/text/style/TtsSpan$TextBuilder;"/> + </class> + <class name="android/text/style/TtsSpan$TimeBuilder" since="21"> + <extends name="android/text/style/TtsSpan$SemioticClassBuilder"/> + <method name="<init>()V"/> + <method name="<init>(II)V"/> + <method name="setHours(I)Landroid/text/style/TtsSpan$TimeBuilder;"/> + <method name="setMinutes(I)Landroid/text/style/TtsSpan$TimeBuilder;"/> + </class> + <class name="android/text/style/TtsSpan$VerbatimBuilder" since="21"> + <extends name="android/text/style/TtsSpan$SemioticClassBuilder"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="setVerbatim(Ljava/lang/String;)Landroid/text/style/TtsSpan$VerbatimBuilder;"/> + </class> + <class name="android/text/style/TypefaceSpan" since="1"> + <extends name="android/text/style/MetricAffectingSpan"/> + <implements name="android/text/ParcelableSpan" since="3"/> + <method name="<init>(Landroid/os/Parcel;)V" since="3"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getFamily()Ljava/lang/String;"/> + </class> + <class name="android/text/style/URLSpan" since="1"> + <extends name="android/text/style/ClickableSpan"/> + <implements name="android/text/ParcelableSpan" since="3"/> + <method name="<init>(Landroid/os/Parcel;)V" since="3"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getURL()Ljava/lang/String;"/> + </class> + <class name="android/text/style/UnderlineSpan" since="1"> + <extends name="android/text/style/CharacterStyle"/> + <implements name="android/text/ParcelableSpan" since="3"/> + <implements name="android/text/style/UpdateAppearance" since="3"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/os/Parcel;)V" since="3"/> + </class> + <class name="android/text/style/UpdateAppearance" since="3"> + <extends name="java/lang/Object"/> + </class> + <class name="android/text/style/UpdateLayout" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/style/UpdateAppearance" since="3"/> + </class> + <class name="android/text/style/WrapTogetherSpan" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/text/style/ParagraphStyle"/> + </class> + <class name="android/text/util/Linkify" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addLinks(Landroid/text/Spannable;I)Z"/> + <method name="addLinks(Landroid/text/Spannable;Ljava/util/regex/Pattern;Ljava/lang/String;)Z"/> + <method name="addLinks(Landroid/text/Spannable;Ljava/util/regex/Pattern;Ljava/lang/String;Landroid/text/util/Linkify$MatchFilter;Landroid/text/util/Linkify$TransformFilter;)Z"/> + <method name="addLinks(Landroid/text/Spannable;Ljava/util/regex/Pattern;Ljava/lang/String;[Ljava/lang/String;Landroid/text/util/Linkify$MatchFilter;Landroid/text/util/Linkify$TransformFilter;)Z" since="24"/> + <method name="addLinks(Landroid/widget/TextView;I)Z"/> + <method name="addLinks(Landroid/widget/TextView;Ljava/util/regex/Pattern;Ljava/lang/String;)V"/> + <method name="addLinks(Landroid/widget/TextView;Ljava/util/regex/Pattern;Ljava/lang/String;Landroid/text/util/Linkify$MatchFilter;Landroid/text/util/Linkify$TransformFilter;)V"/> + <method name="addLinks(Landroid/widget/TextView;Ljava/util/regex/Pattern;Ljava/lang/String;[Ljava/lang/String;Landroid/text/util/Linkify$MatchFilter;Landroid/text/util/Linkify$TransformFilter;)V" since="24"/> + <field name="ALL"/> + <field name="EMAIL_ADDRESSES"/> + <field name="MAP_ADDRESSES"/> + <field name="PHONE_NUMBERS"/> + <field name="WEB_URLS"/> + <field name="sPhoneNumberMatchFilter"/> + <field name="sPhoneNumberTransformFilter"/> + <field name="sUrlMatchFilter"/> + </class> + <class name="android/text/util/Linkify$MatchFilter" since="1"> + <extends name="java/lang/Object"/> + <method name="acceptMatch(Ljava/lang/CharSequence;II)Z"/> + </class> + <class name="android/text/util/Linkify$TransformFilter" since="1"> + <extends name="java/lang/Object"/> + <method name="transformUrl(Ljava/util/regex/Matcher;Ljava/lang/String;)Ljava/lang/String;"/> + </class> + <class name="android/text/util/Rfc822Token" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="getAddress()Ljava/lang/String;"/> + <method name="getComment()Ljava/lang/String;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="quoteComment(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="quoteName(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="quoteNameIfNecessary(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="setAddress(Ljava/lang/String;)V"/> + <method name="setComment(Ljava/lang/String;)V"/> + <method name="setName(Ljava/lang/String;)V"/> + </class> + <class name="android/text/util/Rfc822Tokenizer" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/widget/MultiAutoCompleteTextView$Tokenizer"/> + <method name="<init>()V"/> + <method name="tokenize(Ljava/lang/CharSequence;)[Landroid/text/util/Rfc822Token;"/> + <method name="tokenize(Ljava/lang/CharSequence;Ljava/util/Collection;)V" since="8"/> + </class> + <class name="android/transition/ArcMotion" since="21"> + <extends name="android/transition/PathMotion"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="getMaximumAngle()F"/> + <method name="getMinimumHorizontalAngle()F"/> + <method name="getMinimumVerticalAngle()F"/> + <method name="setMaximumAngle(F)V"/> + <method name="setMinimumHorizontalAngle(F)V"/> + <method name="setMinimumVerticalAngle(F)V"/> + </class> + <class name="android/transition/AutoTransition" since="19"> + <extends name="android/transition/TransitionSet"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" since="21"/> + </class> + <class name="android/transition/ChangeBounds" since="19"> + <extends name="android/transition/Transition"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" since="21"/> + <method name="getResizeClip()Z" since="22"/> + <method name="setReparent(Z)V" deprecated="21"/> + <method name="setResizeClip(Z)V"/> + </class> + <class name="android/transition/ChangeClipBounds" since="21"> + <extends name="android/transition/Transition"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + </class> + <class name="android/transition/ChangeImageTransform" since="21"> + <extends name="android/transition/Transition"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + </class> + <class name="android/transition/ChangeScroll" since="23"> + <extends name="android/transition/Transition"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + </class> + <class name="android/transition/ChangeTransform" since="21"> + <extends name="android/transition/Transition"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="getReparent()Z"/> + <method name="getReparentWithOverlay()Z"/> + <method name="setReparent(Z)V"/> + <method name="setReparentWithOverlay(Z)V"/> + </class> + <class name="android/transition/CircularPropagation" since="21"> + <extends name="android/transition/VisibilityPropagation"/> + <method name="<init>()V"/> + <method name="setPropagationSpeed(F)V"/> + </class> + <class name="android/transition/Explode" since="21"> + <extends name="android/transition/Visibility"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + </class> + <class name="android/transition/Fade" since="19"> + <extends name="android/transition/Visibility"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" since="21"/> + <field name="IN"/> + <field name="OUT"/> + </class> + <class name="android/transition/PathMotion" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="getPath(FFFF)Landroid/graphics/Path;"/> + </class> + <class name="android/transition/PatternPathMotion" since="21"> + <extends name="android/transition/PathMotion"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/graphics/Path;)V"/> + <method name="getPatternPath()Landroid/graphics/Path;"/> + <method name="setPatternPath(Landroid/graphics/Path;)V"/> + </class> + <class name="android/transition/Scene" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/view/ViewGroup;)V"/> + <method name="<init>(Landroid/view/ViewGroup;Landroid/view/View;)V" since="21"/> + <method name="<init>(Landroid/view/ViewGroup;Landroid/view/ViewGroup;)V" deprecated="21"/> + <method name="enter()V"/> + <method name="exit()V"/> + <method name="getSceneForLayout(Landroid/view/ViewGroup;ILandroid/content/Context;)Landroid/transition/Scene;"/> + <method name="getSceneRoot()Landroid/view/ViewGroup;"/> + <method name="setEnterAction(Ljava/lang/Runnable;)V"/> + <method name="setExitAction(Ljava/lang/Runnable;)V"/> + </class> + <class name="android/transition/SidePropagation" since="21"> + <extends name="android/transition/VisibilityPropagation"/> + <method name="<init>()V"/> + <method name="setPropagationSpeed(F)V"/> + <method name="setSide(I)V"/> + </class> + <class name="android/transition/Slide" since="21"> + <extends name="android/transition/Visibility"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="getSlideEdge()I"/> + <method name="setSlideEdge(I)V"/> + </class> + <class name="android/transition/Transition" since="19"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" since="21"/> + <method name="addListener(Landroid/transition/Transition$TransitionListener;)Landroid/transition/Transition;"/> + <method name="addTarget(I)Landroid/transition/Transition;"/> + <method name="addTarget(Landroid/view/View;)Landroid/transition/Transition;"/> + <method name="addTarget(Ljava/lang/Class;)Landroid/transition/Transition;" since="21"/> + <method name="addTarget(Ljava/lang/String;)Landroid/transition/Transition;" since="21"/> + <method name="canRemoveViews()Z" since="21"/> + <method name="captureEndValues(Landroid/transition/TransitionValues;)V"/> + <method name="captureStartValues(Landroid/transition/TransitionValues;)V"/> + <method name="clone()Landroid/transition/Transition;"/> + <method name="createAnimator(Landroid/view/ViewGroup;Landroid/transition/TransitionValues;Landroid/transition/TransitionValues;)Landroid/animation/Animator;"/> + <method name="excludeChildren(IZ)Landroid/transition/Transition;"/> + <method name="excludeChildren(Landroid/view/View;Z)Landroid/transition/Transition;"/> + <method name="excludeChildren(Ljava/lang/Class;Z)Landroid/transition/Transition;"/> + <method name="excludeTarget(IZ)Landroid/transition/Transition;"/> + <method name="excludeTarget(Landroid/view/View;Z)Landroid/transition/Transition;"/> + <method name="excludeTarget(Ljava/lang/Class;Z)Landroid/transition/Transition;"/> + <method name="excludeTarget(Ljava/lang/String;Z)Landroid/transition/Transition;" since="21"/> + <method name="getDuration()J"/> + <method name="getEpicenter()Landroid/graphics/Rect;" since="21"/> + <method name="getEpicenterCallback()Landroid/transition/Transition$EpicenterCallback;" since="21"/> + <method name="getInterpolator()Landroid/animation/TimeInterpolator;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getPathMotion()Landroid/transition/PathMotion;" since="21"/> + <method name="getPropagation()Landroid/transition/TransitionPropagation;" since="21"/> + <method name="getStartDelay()J"/> + <method name="getTargetIds()Ljava/util/List;"/> + <method name="getTargetNames()Ljava/util/List;" since="21"/> + <method name="getTargetTypes()Ljava/util/List;" since="21"/> + <method name="getTargets()Ljava/util/List;"/> + <method name="getTransitionProperties()[Ljava/lang/String;"/> + <method name="getTransitionValues(Landroid/view/View;Z)Landroid/transition/TransitionValues;"/> + <method name="isTransitionRequired(Landroid/transition/TransitionValues;Landroid/transition/TransitionValues;)Z" since="23"/> + <method name="removeListener(Landroid/transition/Transition$TransitionListener;)Landroid/transition/Transition;"/> + <method name="removeTarget(I)Landroid/transition/Transition;"/> + <method name="removeTarget(Landroid/view/View;)Landroid/transition/Transition;"/> + <method name="removeTarget(Ljava/lang/Class;)Landroid/transition/Transition;" since="21"/> + <method name="removeTarget(Ljava/lang/String;)Landroid/transition/Transition;" since="21"/> + <method name="setDuration(J)Landroid/transition/Transition;"/> + <method name="setEpicenterCallback(Landroid/transition/Transition$EpicenterCallback;)V" since="21"/> + <method name="setInterpolator(Landroid/animation/TimeInterpolator;)Landroid/transition/Transition;"/> + <method name="setMatchOrder([I)V" since="21"/> + <method name="setPathMotion(Landroid/transition/PathMotion;)V" since="21"/> + <method name="setPropagation(Landroid/transition/TransitionPropagation;)V" since="21"/> + <method name="setStartDelay(J)Landroid/transition/Transition;"/> + <field name="MATCH_ID" since="21"/> + <field name="MATCH_INSTANCE" since="21"/> + <field name="MATCH_ITEM_ID" since="21"/> + <field name="MATCH_NAME" since="21"/> + </class> + <class name="android/transition/Transition$EpicenterCallback" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onGetEpicenter(Landroid/transition/Transition;)Landroid/graphics/Rect;"/> + </class> + <class name="android/transition/Transition$TransitionListener" since="19"> + <extends name="java/lang/Object"/> + <method name="onTransitionCancel(Landroid/transition/Transition;)V"/> + <method name="onTransitionEnd(Landroid/transition/Transition;)V"/> + <method name="onTransitionPause(Landroid/transition/Transition;)V"/> + <method name="onTransitionResume(Landroid/transition/Transition;)V"/> + <method name="onTransitionStart(Landroid/transition/Transition;)V"/> + </class> + <class name="android/transition/TransitionInflater" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="from(Landroid/content/Context;)Landroid/transition/TransitionInflater;"/> + <method name="inflateTransition(I)Landroid/transition/Transition;"/> + <method name="inflateTransitionManager(ILandroid/view/ViewGroup;)Landroid/transition/TransitionManager;"/> + </class> + <class name="android/transition/TransitionListenerAdapter" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/transition/Transition$TransitionListener"/> + <method name="<init>()V"/> + </class> + <class name="android/transition/TransitionManager" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="beginDelayedTransition(Landroid/view/ViewGroup;)V"/> + <method name="beginDelayedTransition(Landroid/view/ViewGroup;Landroid/transition/Transition;)V"/> + <method name="endTransitions(Landroid/view/ViewGroup;)V" since="23"/> + <method name="go(Landroid/transition/Scene;)V"/> + <method name="go(Landroid/transition/Scene;Landroid/transition/Transition;)V"/> + <method name="setTransition(Landroid/transition/Scene;Landroid/transition/Scene;Landroid/transition/Transition;)V"/> + <method name="setTransition(Landroid/transition/Scene;Landroid/transition/Transition;)V"/> + <method name="transitionTo(Landroid/transition/Scene;)V"/> + </class> + <class name="android/transition/TransitionPropagation" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="captureValues(Landroid/transition/TransitionValues;)V"/> + <method name="getPropagationProperties()[Ljava/lang/String;"/> + <method name="getStartDelay(Landroid/view/ViewGroup;Landroid/transition/Transition;Landroid/transition/TransitionValues;Landroid/transition/TransitionValues;)J"/> + </class> + <class name="android/transition/TransitionSet" since="19"> + <extends name="android/transition/Transition"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" since="21"/> + <method name="addListener(Landroid/transition/Transition$TransitionListener;)Landroid/transition/TransitionSet;"/> + <method name="addTarget(I)Landroid/transition/TransitionSet;"/> + <method name="addTarget(Landroid/view/View;)Landroid/transition/TransitionSet;"/> + <method name="addTarget(Ljava/lang/Class;)Landroid/transition/TransitionSet;" since="21"/> + <method name="addTarget(Ljava/lang/String;)Landroid/transition/TransitionSet;" since="21"/> + <method name="addTransition(Landroid/transition/Transition;)Landroid/transition/TransitionSet;"/> + <method name="clone()Landroid/transition/TransitionSet;"/> + <method name="getOrdering()I"/> + <method name="getTransitionAt(I)Landroid/transition/Transition;" since="21"/> + <method name="getTransitionCount()I" since="21"/> + <method name="removeListener(Landroid/transition/Transition$TransitionListener;)Landroid/transition/TransitionSet;"/> + <method name="removeTarget(I)Landroid/transition/TransitionSet;"/> + <method name="removeTarget(Landroid/view/View;)Landroid/transition/TransitionSet;"/> + <method name="removeTarget(Ljava/lang/Class;)Landroid/transition/TransitionSet;" since="21"/> + <method name="removeTarget(Ljava/lang/String;)Landroid/transition/TransitionSet;" since="21"/> + <method name="removeTransition(Landroid/transition/Transition;)Landroid/transition/TransitionSet;"/> + <method name="setDuration(J)Landroid/transition/TransitionSet;"/> + <method name="setInterpolator(Landroid/animation/TimeInterpolator;)Landroid/transition/TransitionSet;"/> + <method name="setOrdering(I)Landroid/transition/TransitionSet;"/> + <method name="setStartDelay(J)Landroid/transition/TransitionSet;"/> + <field name="ORDERING_SEQUENTIAL"/> + <field name="ORDERING_TOGETHER"/> + </class> + <class name="android/transition/TransitionValues" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="values"/> + <field name="view"/> + </class> + <class name="android/transition/Visibility" since="19"> + <extends name="android/transition/Transition"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" since="21"/> + <method name="getMode()I" since="21"/> + <method name="isVisible(Landroid/transition/TransitionValues;)Z"/> + <method name="onAppear(Landroid/view/ViewGroup;Landroid/transition/TransitionValues;ILandroid/transition/TransitionValues;I)Landroid/animation/Animator;"/> + <method name="onAppear(Landroid/view/ViewGroup;Landroid/view/View;Landroid/transition/TransitionValues;Landroid/transition/TransitionValues;)Landroid/animation/Animator;" since="21"/> + <method name="onDisappear(Landroid/view/ViewGroup;Landroid/transition/TransitionValues;ILandroid/transition/TransitionValues;I)Landroid/animation/Animator;"/> + <method name="onDisappear(Landroid/view/ViewGroup;Landroid/view/View;Landroid/transition/TransitionValues;Landroid/transition/TransitionValues;)Landroid/animation/Animator;" since="21"/> + <method name="setMode(I)V" since="21"/> + <field name="MODE_IN" since="21"/> + <field name="MODE_OUT" since="21"/> + </class> + <class name="android/transition/VisibilityPropagation" since="21"> + <extends name="android/transition/TransitionPropagation"/> + <method name="<init>()V"/> + <method name="getViewVisibility(Landroid/transition/TransitionValues;)I"/> + <method name="getViewX(Landroid/transition/TransitionValues;)I"/> + <method name="getViewY(Landroid/transition/TransitionValues;)I"/> + </class> + <class name="android/util/AndroidException" since="1"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/Exception;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="11"/> + </class> + <class name="android/util/AndroidRuntimeException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/Exception;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="11"/> + </class> + <class name="android/util/ArrayMap" since="19"> + <extends name="java/lang/Object"/> + <implements name="java/util/Map"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(Landroid/util/ArrayMap;)V"/> + <method name="containsAll(Ljava/util/Collection;)Z"/> + <method name="ensureCapacity(I)V"/> + <method name="indexOfKey(Ljava/lang/Object;)I" since="21"/> + <method name="keyAt(I)Ljava/lang/Object;"/> + <method name="putAll(Landroid/util/ArrayMap;)V"/> + <method name="removeAll(Ljava/util/Collection;)Z"/> + <method name="removeAt(I)Ljava/lang/Object;"/> + <method name="retainAll(Ljava/util/Collection;)Z"/> + <method name="setValueAt(ILjava/lang/Object;)Ljava/lang/Object;"/> + <method name="valueAt(I)Ljava/lang/Object;"/> + </class> + <class name="android/util/ArraySet" since="23"> + <extends name="java/lang/Object"/> + <implements name="java/util/Collection"/> + <implements name="java/util/Set"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(Landroid/util/ArraySet;)V"/> + <method name="addAll(Landroid/util/ArraySet;)V"/> + <method name="ensureCapacity(I)V"/> + <method name="indexOf(Ljava/lang/Object;)I"/> + <method name="removeAll(Landroid/util/ArraySet;)Z"/> + <method name="removeAt(I)Ljava/lang/Object;"/> + <method name="valueAt(I)Ljava/lang/Object;"/> + </class> + <class name="android/util/AtomicFile" since="17"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/io/File;)V"/> + <method name="delete()V"/> + <method name="failWrite(Ljava/io/FileOutputStream;)V"/> + <method name="finishWrite(Ljava/io/FileOutputStream;)V"/> + <method name="getBaseFile()Ljava/io/File;"/> + <method name="openRead()Ljava/io/FileInputStream;"/> + <method name="readFully()[B"/> + <method name="startWrite()Ljava/io/FileOutputStream;"/> + </class> + <class name="android/util/AttributeSet" since="1"> + <extends name="java/lang/Object"/> + <method name="getAttributeBooleanValue(IZ)Z"/> + <method name="getAttributeBooleanValue(Ljava/lang/String;Ljava/lang/String;Z)Z"/> + <method name="getAttributeCount()I"/> + <method name="getAttributeFloatValue(IF)F"/> + <method name="getAttributeFloatValue(Ljava/lang/String;Ljava/lang/String;F)F"/> + <method name="getAttributeIntValue(II)I"/> + <method name="getAttributeIntValue(Ljava/lang/String;Ljava/lang/String;I)I"/> + <method name="getAttributeListValue(I[Ljava/lang/String;I)I"/> + <method name="getAttributeListValue(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;I)I"/> + <method name="getAttributeName(I)Ljava/lang/String;"/> + <method name="getAttributeNameResource(I)I"/> + <method name="getAttributeResourceValue(II)I"/> + <method name="getAttributeResourceValue(Ljava/lang/String;Ljava/lang/String;I)I"/> + <method name="getAttributeUnsignedIntValue(II)I"/> + <method name="getAttributeUnsignedIntValue(Ljava/lang/String;Ljava/lang/String;I)I"/> + <method name="getAttributeValue(I)Ljava/lang/String;"/> + <method name="getAttributeValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getClassAttribute()Ljava/lang/String;"/> + <method name="getIdAttribute()Ljava/lang/String;"/> + <method name="getIdAttributeResourceValue(I)I"/> + <method name="getPositionDescription()Ljava/lang/String;"/> + <method name="getStyleAttribute()I"/> + </class> + <class name="android/util/Base64" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="decode(Ljava/lang/String;I)[B"/> + <method name="decode([BI)[B"/> + <method name="decode([BIII)[B"/> + <method name="encode([BI)[B"/> + <method name="encode([BIII)[B"/> + <method name="encodeToString([BI)Ljava/lang/String;"/> + <method name="encodeToString([BIII)Ljava/lang/String;"/> + <field name="CRLF"/> + <field name="DEFAULT"/> + <field name="NO_CLOSE"/> + <field name="NO_PADDING"/> + <field name="NO_WRAP"/> + <field name="URL_SAFE"/> + </class> + <class name="android/util/Base64DataException" since="11"> + <extends name="java/io/IOException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/util/Base64InputStream" since="8"> + <extends name="java/io/FilterInputStream"/> + <method name="<init>(Ljava/io/InputStream;I)V"/> + </class> + <class name="android/util/Base64OutputStream" since="8"> + <extends name="java/io/FilterOutputStream"/> + <method name="<init>(Ljava/io/OutputStream;I)V"/> + </class> + <class name="android/util/Config" since="1" deprecated="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="DEBUG" deprecated="16"/> + <field name="LOGD" deprecated="16"/> + <field name="LOGV" deprecated="16"/> + <field name="PROFILE" deprecated="16"/> + <field name="RELEASE" deprecated="16"/> + </class> + <class name="android/util/DebugUtils" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="isObjectSelected(Ljava/lang/Object;)Z"/> + </class> + <class name="android/util/DisplayMetrics" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="equals(Landroid/util/DisplayMetrics;)Z" since="17"/> + <method name="setTo(Landroid/util/DisplayMetrics;)V"/> + <method name="setToDefaults()V"/> + <field name="DENSITY_260" since="25"/> + <field name="DENSITY_280" since="22"/> + <field name="DENSITY_300" since="25"/> + <field name="DENSITY_340" since="25"/> + <field name="DENSITY_360" since="23"/> + <field name="DENSITY_400" since="19"/> + <field name="DENSITY_420" since="23"/> + <field name="DENSITY_560" since="21"/> + <field name="DENSITY_DEFAULT" since="4"/> + <field name="DENSITY_DEVICE_STABLE" since="24"/> + <field name="DENSITY_HIGH" since="4"/> + <field name="DENSITY_LOW" since="4"/> + <field name="DENSITY_MEDIUM" since="4"/> + <field name="DENSITY_TV" since="13"/> + <field name="DENSITY_XHIGH" since="9"/> + <field name="DENSITY_XXHIGH" since="16"/> + <field name="DENSITY_XXXHIGH" since="18"/> + <field name="density"/> + <field name="densityDpi" since="4"/> + <field name="heightPixels"/> + <field name="scaledDensity"/> + <field name="widthPixels"/> + <field name="xdpi"/> + <field name="ydpi"/> + </class> + <class name="android/util/EventLog" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getTagCode(Ljava/lang/String;)I"/> + <method name="getTagName(I)Ljava/lang/String;"/> + <method name="readEvents([ILjava/util/Collection;)V"/> + <method name="writeEvent(IF)I" since="23"/> + <method name="writeEvent(II)I"/> + <method name="writeEvent(IJ)I"/> + <method name="writeEvent(ILjava/lang/String;)I"/> + <method name="writeEvent(I[Ljava/lang/Object;)I"/> + </class> + <class name="android/util/EventLog$Event" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getData()Ljava/lang/Object;"/> + <method name="getProcessId()I"/> + <method name="getTag()I"/> + <method name="getThreadId()I"/> + <method name="getTimeNanos()J"/> + </class> + <class name="android/util/EventLogTags" since="1" deprecated="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/io/BufferedReader;)V"/> + <method name="get(I)Landroid/util/EventLogTags$Description;"/> + <method name="get(Ljava/lang/String;)Landroid/util/EventLogTags$Description;"/> + </class> + <class name="android/util/EventLogTags$Description" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="mName"/> + <field name="mTag"/> + </class> + <class name="android/util/FloatMath" since="1" deprecated="22"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="ceil(F)F" removed="23"/> + <method name="cos(F)F" removed="23"/> + <method name="exp(F)F" since="17" removed="23"/> + <method name="floor(F)F" removed="23"/> + <method name="hypot(FF)F" since="17" removed="23"/> + <method name="pow(FF)F" since="17" removed="23"/> + <method name="sin(F)F" removed="23"/> + <method name="sqrt(F)F" removed="23"/> + </class> + <class name="android/util/FloatProperty" since="24"> + <extends name="android/util/Property"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="set(Ljava/lang/Object;Ljava/lang/Float;)V"/> + <method name="setValue(Ljava/lang/Object;F)V"/> + </class> + <class name="android/util/Half" since="26"> + <extends name="java/lang/Number"/> + <implements name="java/lang/Comparable"/> + <method name="<init>(D)V"/> + <method name="<init>(F)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(S)V"/> + <method name="abs(S)S"/> + <method name="ceil(S)S"/> + <method name="compare(SS)I"/> + <method name="compareTo(Landroid/util/Half;)I"/> + <method name="copySign(SS)S"/> + <method name="equals(SS)Z"/> + <method name="floor(S)S"/> + <method name="getExponent(S)I"/> + <method name="getSign(S)I"/> + <method name="getSignificand(S)I"/> + <method name="greater(SS)Z"/> + <method name="greaterEquals(SS)Z"/> + <method name="halfToIntBits(S)I"/> + <method name="halfToRawIntBits(S)I"/> + <method name="halfToShortBits(S)S"/> + <method name="halfValue()S"/> + <method name="hashCode(S)I"/> + <method name="intBitsToHalf(I)S"/> + <method name="isInfinite(S)Z"/> + <method name="isNaN()Z"/> + <method name="isNaN(S)Z"/> + <method name="isNormalized(S)Z"/> + <method name="less(SS)Z"/> + <method name="lessEquals(SS)Z"/> + <method name="max(SS)S"/> + <method name="min(SS)S"/> + <method name="parseHalf(Ljava/lang/String;)S"/> + <method name="round(S)S"/> + <method name="toFloat(S)F"/> + <method name="toHalf(F)S"/> + <method name="toHexString(S)Ljava/lang/String;"/> + <method name="toString(S)Ljava/lang/String;"/> + <method name="trunc(S)S"/> + <method name="valueOf(F)Landroid/util/Half;"/> + <method name="valueOf(Ljava/lang/String;)Landroid/util/Half;"/> + <method name="valueOf(S)Landroid/util/Half;"/> + <field name="EPSILON"/> + <field name="LOWEST_VALUE"/> + <field name="MAX_EXPONENT"/> + <field name="MAX_VALUE"/> + <field name="MIN_EXPONENT"/> + <field name="MIN_NORMAL"/> + <field name="MIN_VALUE"/> + <field name="NEGATIVE_INFINITY"/> + <field name="NEGATIVE_ZERO"/> + <field name="NaN"/> + <field name="POSITIVE_INFINITY"/> + <field name="POSITIVE_ZERO"/> + <field name="SIZE"/> + </class> + <class name="android/util/IntProperty" since="24"> + <extends name="android/util/Property"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="set(Ljava/lang/Object;Ljava/lang/Integer;)V"/> + <method name="setValue(Ljava/lang/Object;I)V"/> + </class> + <class name="android/util/JsonReader" since="11"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable"/> + <method name="<init>(Ljava/io/Reader;)V"/> + <method name="beginArray()V"/> + <method name="beginObject()V"/> + <method name="endArray()V"/> + <method name="endObject()V"/> + <method name="hasNext()Z"/> + <method name="isLenient()Z"/> + <method name="nextBoolean()Z"/> + <method name="nextDouble()D"/> + <method name="nextInt()I"/> + <method name="nextLong()J"/> + <method name="nextName()Ljava/lang/String;"/> + <method name="nextNull()V"/> + <method name="nextString()Ljava/lang/String;"/> + <method name="peek()Landroid/util/JsonToken;"/> + <method name="setLenient(Z)V"/> + <method name="skipValue()V"/> + </class> + <class name="android/util/JsonToken" since="11"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/util/JsonToken;"/> + <method name="values()[Landroid/util/JsonToken;"/> + <field name="BEGIN_ARRAY"/> + <field name="BEGIN_OBJECT"/> + <field name="BOOLEAN"/> + <field name="END_ARRAY"/> + <field name="END_DOCUMENT"/> + <field name="END_OBJECT"/> + <field name="NAME"/> + <field name="NULL"/> + <field name="NUMBER"/> + <field name="STRING"/> + </class> + <class name="android/util/JsonWriter" since="11"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable"/> + <method name="<init>(Ljava/io/Writer;)V"/> + <method name="beginArray()Landroid/util/JsonWriter;"/> + <method name="beginObject()Landroid/util/JsonWriter;"/> + <method name="endArray()Landroid/util/JsonWriter;"/> + <method name="endObject()Landroid/util/JsonWriter;"/> + <method name="flush()V"/> + <method name="isLenient()Z"/> + <method name="name(Ljava/lang/String;)Landroid/util/JsonWriter;"/> + <method name="nullValue()Landroid/util/JsonWriter;"/> + <method name="setIndent(Ljava/lang/String;)V"/> + <method name="setLenient(Z)V"/> + <method name="value(D)Landroid/util/JsonWriter;"/> + <method name="value(J)Landroid/util/JsonWriter;"/> + <method name="value(Ljava/lang/Number;)Landroid/util/JsonWriter;"/> + <method name="value(Ljava/lang/String;)Landroid/util/JsonWriter;"/> + <method name="value(Z)Landroid/util/JsonWriter;"/> + </class> + <class name="android/util/LayoutDirection" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="INHERIT"/> + <field name="LOCALE"/> + <field name="LTR"/> + <field name="RTL"/> + </class> + <class name="android/util/Log" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="d(Ljava/lang/String;Ljava/lang/String;)I"/> + <method name="d(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I"/> + <method name="e(Ljava/lang/String;Ljava/lang/String;)I"/> + <method name="e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I"/> + <method name="getStackTraceString(Ljava/lang/Throwable;)Ljava/lang/String;"/> + <method name="i(Ljava/lang/String;Ljava/lang/String;)I"/> + <method name="i(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I"/> + <method name="isLoggable(Ljava/lang/String;I)Z"/> + <method name="println(ILjava/lang/String;Ljava/lang/String;)I"/> + <method name="v(Ljava/lang/String;Ljava/lang/String;)I"/> + <method name="v(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I"/> + <method name="w(Ljava/lang/String;Ljava/lang/String;)I"/> + <method name="w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I"/> + <method name="w(Ljava/lang/String;Ljava/lang/Throwable;)I"/> + <method name="wtf(Ljava/lang/String;Ljava/lang/String;)I" since="8"/> + <method name="wtf(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I" since="8"/> + <method name="wtf(Ljava/lang/String;Ljava/lang/Throwable;)I" since="8"/> + <field name="ASSERT"/> + <field name="DEBUG"/> + <field name="ERROR"/> + <field name="INFO"/> + <field name="VERBOSE"/> + <field name="WARN"/> + </class> + <class name="android/util/LogPrinter" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/util/Printer"/> + <method name="<init>(ILjava/lang/String;)V"/> + </class> + <class name="android/util/LongSparseArray" since="16"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="append(JLjava/lang/Object;)V"/> + <method name="clear()V"/> + <method name="clone()Landroid/util/LongSparseArray;"/> + <method name="delete(J)V"/> + <method name="get(J)Ljava/lang/Object;"/> + <method name="get(JLjava/lang/Object;)Ljava/lang/Object;"/> + <method name="indexOfKey(J)I"/> + <method name="indexOfValue(Ljava/lang/Object;)I"/> + <method name="keyAt(I)J"/> + <method name="put(JLjava/lang/Object;)V"/> + <method name="remove(J)V"/> + <method name="removeAt(I)V"/> + <method name="setValueAt(ILjava/lang/Object;)V"/> + <method name="size()I"/> + <method name="valueAt(I)Ljava/lang/Object;"/> + </class> + <class name="android/util/LruCache" since="12"> + <extends name="java/lang/Object"/> + <method name="<init>(I)V"/> + <method name="create(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="createCount()I"/> + <method name="entryRemoved(ZLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V"/> + <method name="evictAll()V"/> + <method name="evictionCount()I"/> + <method name="get(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="hitCount()I"/> + <method name="maxSize()I"/> + <method name="missCount()I"/> + <method name="put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="putCount()I"/> + <method name="remove(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="resize(I)V" since="21"/> + <method name="size()I"/> + <method name="sizeOf(Ljava/lang/Object;Ljava/lang/Object;)I"/> + <method name="snapshot()Ljava/util/Map;"/> + <method name="trimToSize(I)V" since="17"/> + </class> + <class name="android/util/MalformedJsonException" since="11"> + <extends name="java/io/IOException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/util/MonthDisplayHelper" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(II)V"/> + <method name="<init>(III)V"/> + <method name="getColumnOf(I)I"/> + <method name="getDayAt(II)I"/> + <method name="getDigitsForRow(I)[I"/> + <method name="getFirstDayOfMonth()I"/> + <method name="getMonth()I"/> + <method name="getNumberOfDaysInMonth()I"/> + <method name="getOffset()I"/> + <method name="getRowOf(I)I"/> + <method name="getWeekStartDay()I"/> + <method name="getYear()I"/> + <method name="isWithinCurrentMonth(II)Z"/> + <method name="nextMonth()V"/> + <method name="previousMonth()V"/> + </class> + <class name="android/util/MutableBoolean" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(Z)V"/> + <field name="value"/> + </class> + <class name="android/util/MutableByte" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(B)V"/> + <field name="value"/> + </class> + <class name="android/util/MutableChar" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(C)V"/> + <field name="value"/> + </class> + <class name="android/util/MutableDouble" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(D)V"/> + <field name="value"/> + </class> + <class name="android/util/MutableFloat" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(F)V"/> + <field name="value"/> + </class> + <class name="android/util/MutableInt" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(I)V"/> + <field name="value"/> + </class> + <class name="android/util/MutableLong" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(J)V"/> + <field name="value"/> + </class> + <class name="android/util/MutableShort" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(S)V"/> + <field name="value"/> + </class> + <class name="android/util/NoSuchPropertyException" since="14"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/util/Pair" since="5"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/Object;Ljava/lang/Object;)V"/> + <method name="create(Ljava/lang/Object;Ljava/lang/Object;)Landroid/util/Pair;"/> + <field name="first"/> + <field name="second"/> + </class> + <class name="android/util/Patterns" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="concatGroups(Ljava/util/regex/Matcher;)Ljava/lang/String;"/> + <method name="digitsAndPlusOnly(Ljava/util/regex/Matcher;)Ljava/lang/String;"/> + <field name="DOMAIN_NAME"/> + <field name="EMAIL_ADDRESS"/> + <field name="GOOD_IRI_CHAR" deprecated="24"/> + <field name="IP_ADDRESS"/> + <field name="PHONE"/> + <field name="TOP_LEVEL_DOMAIN" deprecated="21"/> + <field name="TOP_LEVEL_DOMAIN_STR" deprecated="21"/> + <field name="TOP_LEVEL_DOMAIN_STR_FOR_WEB_URL" deprecated="21"/> + <field name="WEB_URL"/> + </class> + <class name="android/util/PrintStreamPrinter" since="3"> + <extends name="java/lang/Object"/> + <implements name="android/util/Printer"/> + <method name="<init>(Ljava/io/PrintStream;)V"/> + </class> + <class name="android/util/PrintWriterPrinter" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/util/Printer"/> + <method name="<init>(Ljava/io/PrintWriter;)V"/> + </class> + <class name="android/util/Printer" since="1"> + <extends name="java/lang/Object"/> + <method name="println(Ljava/lang/String;)V"/> + </class> + <class name="android/util/Property" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/Class;Ljava/lang/String;)V"/> + <method name="get(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getType()Ljava/lang/Class;"/> + <method name="isReadOnly()Z"/> + <method name="of(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;)Landroid/util/Property;"/> + <method name="set(Ljava/lang/Object;Ljava/lang/Object;)V"/> + </class> + <class name="android/util/Range" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/Comparable;Ljava/lang/Comparable;)V"/> + <method name="clamp(Ljava/lang/Comparable;)Ljava/lang/Comparable;"/> + <method name="contains(Landroid/util/Range;)Z"/> + <method name="contains(Ljava/lang/Comparable;)Z"/> + <method name="create(Ljava/lang/Comparable;Ljava/lang/Comparable;)Landroid/util/Range;"/> + <method name="extend(Landroid/util/Range;)Landroid/util/Range;"/> + <method name="extend(Ljava/lang/Comparable;)Landroid/util/Range;"/> + <method name="extend(Ljava/lang/Comparable;Ljava/lang/Comparable;)Landroid/util/Range;"/> + <method name="getLower()Ljava/lang/Comparable;"/> + <method name="getUpper()Ljava/lang/Comparable;"/> + <method name="intersect(Landroid/util/Range;)Landroid/util/Range;"/> + <method name="intersect(Ljava/lang/Comparable;Ljava/lang/Comparable;)Landroid/util/Range;"/> + </class> + <class name="android/util/Rational" since="21"> + <extends name="java/lang/Number"/> + <implements name="java/lang/Comparable"/> + <method name="<init>(II)V"/> + <method name="compareTo(Landroid/util/Rational;)I"/> + <method name="getDenominator()I"/> + <method name="getNumerator()I"/> + <method name="isFinite()Z"/> + <method name="isInfinite()Z"/> + <method name="isNaN()Z"/> + <method name="isZero()Z"/> + <method name="parseRational(Ljava/lang/String;)Landroid/util/Rational;"/> + <field name="NEGATIVE_INFINITY"/> + <field name="NaN"/> + <field name="POSITIVE_INFINITY"/> + <field name="ZERO"/> + </class> + <class name="android/util/Size" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(II)V"/> + <method name="getHeight()I"/> + <method name="getWidth()I"/> + <method name="parseSize(Ljava/lang/String;)Landroid/util/Size;"/> + </class> + <class name="android/util/SizeF" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(FF)V"/> + <method name="getHeight()F"/> + <method name="getWidth()F"/> + <method name="parseSizeF(Ljava/lang/String;)Landroid/util/SizeF;"/> + </class> + <class name="android/util/SparseArray" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable" since="14"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="append(ILjava/lang/Object;)V"/> + <method name="clear()V"/> + <method name="clone()Landroid/util/SparseArray;" since="14"/> + <method name="delete(I)V"/> + <method name="get(I)Ljava/lang/Object;"/> + <method name="get(ILjava/lang/Object;)Ljava/lang/Object;"/> + <method name="indexOfKey(I)I"/> + <method name="indexOfValue(Ljava/lang/Object;)I"/> + <method name="keyAt(I)I"/> + <method name="put(ILjava/lang/Object;)V"/> + <method name="remove(I)V"/> + <method name="removeAt(I)V" since="11"/> + <method name="removeAtRange(II)V" since="19"/> + <method name="setValueAt(ILjava/lang/Object;)V"/> + <method name="size()I"/> + <method name="valueAt(I)Ljava/lang/Object;"/> + </class> + <class name="android/util/SparseBooleanArray" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable" since="14"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="append(IZ)V"/> + <method name="clear()V"/> + <method name="clone()Landroid/util/SparseBooleanArray;" since="14"/> + <method name="delete(I)V"/> + <method name="get(I)Z"/> + <method name="get(IZ)Z"/> + <method name="indexOfKey(I)I"/> + <method name="indexOfValue(Z)I"/> + <method name="keyAt(I)I"/> + <method name="put(IZ)V"/> + <method name="size()I"/> + <method name="valueAt(I)Z"/> + </class> + <class name="android/util/SparseIntArray" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable" since="14"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="append(II)V"/> + <method name="clear()V"/> + <method name="clone()Landroid/util/SparseIntArray;" since="14"/> + <method name="delete(I)V"/> + <method name="get(I)I"/> + <method name="get(II)I"/> + <method name="indexOfKey(I)I"/> + <method name="indexOfValue(I)I"/> + <method name="keyAt(I)I"/> + <method name="put(II)V"/> + <method name="removeAt(I)V" since="3"/> + <method name="size()I"/> + <method name="valueAt(I)I"/> + </class> + <class name="android/util/SparseLongArray" since="18"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="append(IJ)V"/> + <method name="clear()V"/> + <method name="clone()Landroid/util/SparseLongArray;"/> + <method name="delete(I)V"/> + <method name="get(I)J"/> + <method name="get(IJ)J"/> + <method name="indexOfKey(I)I"/> + <method name="indexOfValue(J)I"/> + <method name="keyAt(I)I"/> + <method name="put(IJ)V"/> + <method name="removeAt(I)V"/> + <method name="size()I"/> + <method name="valueAt(I)J"/> + </class> + <class name="android/util/StateSet" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="dump([I)Ljava/lang/String;"/> + <method name="isWildCard([I)Z"/> + <method name="stateSetMatches([II)Z"/> + <method name="stateSetMatches([I[I)Z"/> + <method name="trimStateSet([II)[I"/> + <field name="NOTHING" since="11"/> + <field name="WILD_CARD"/> + </class> + <class name="android/util/StringBuilderPrinter" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/util/Printer"/> + <method name="<init>(Ljava/lang/StringBuilder;)V"/> + </class> + <class name="android/util/TimeFormatException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + </class> + <class name="android/util/TimeUtils" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getTimeZone(IZJLjava/lang/String;)Ljava/util/TimeZone;"/> + <method name="getTimeZoneDatabaseVersion()Ljava/lang/String;" since="3"/> + </class> + <class name="android/util/TimingLogger" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="addSplit(Ljava/lang/String;)V"/> + <method name="dumpToLog()V"/> + <method name="reset()V"/> + <method name="reset(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="android/util/TypedValue" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="applyDimension(IFLandroid/util/DisplayMetrics;)F"/> + <method name="coerceToString()Ljava/lang/CharSequence;"/> + <method name="coerceToString(II)Ljava/lang/String;"/> + <method name="complexToDimension(ILandroid/util/DisplayMetrics;)F"/> + <method name="complexToDimensionNoisy(ILandroid/util/DisplayMetrics;)F" removed="20"/> + <method name="complexToDimensionPixelOffset(ILandroid/util/DisplayMetrics;)I"/> + <method name="complexToDimensionPixelSize(ILandroid/util/DisplayMetrics;)I"/> + <method name="complexToFloat(I)F"/> + <method name="complexToFraction(IFF)F"/> + <method name="getComplexUnit()I" since="22"/> + <method name="getDimension(Landroid/util/DisplayMetrics;)F"/> + <method name="getFloat()F"/> + <method name="getFraction(FF)F"/> + <method name="setTo(Landroid/util/TypedValue;)V"/> + <field name="COMPLEX_MANTISSA_MASK"/> + <field name="COMPLEX_MANTISSA_SHIFT"/> + <field name="COMPLEX_RADIX_0p23"/> + <field name="COMPLEX_RADIX_16p7"/> + <field name="COMPLEX_RADIX_23p0"/> + <field name="COMPLEX_RADIX_8p15"/> + <field name="COMPLEX_RADIX_MASK"/> + <field name="COMPLEX_RADIX_SHIFT"/> + <field name="COMPLEX_UNIT_DIP"/> + <field name="COMPLEX_UNIT_FRACTION"/> + <field name="COMPLEX_UNIT_FRACTION_PARENT"/> + <field name="COMPLEX_UNIT_IN"/> + <field name="COMPLEX_UNIT_MASK"/> + <field name="COMPLEX_UNIT_MM"/> + <field name="COMPLEX_UNIT_PT"/> + <field name="COMPLEX_UNIT_PX"/> + <field name="COMPLEX_UNIT_SHIFT"/> + <field name="COMPLEX_UNIT_SP"/> + <field name="DATA_NULL_EMPTY" since="22"/> + <field name="DATA_NULL_UNDEFINED" since="22"/> + <field name="DENSITY_DEFAULT" since="4"/> + <field name="DENSITY_NONE" since="4"/> + <field name="TYPE_ATTRIBUTE"/> + <field name="TYPE_DIMENSION"/> + <field name="TYPE_FIRST_COLOR_INT"/> + <field name="TYPE_FIRST_INT"/> + <field name="TYPE_FLOAT"/> + <field name="TYPE_FRACTION"/> + <field name="TYPE_INT_BOOLEAN"/> + <field name="TYPE_INT_COLOR_ARGB4"/> + <field name="TYPE_INT_COLOR_ARGB8"/> + <field name="TYPE_INT_COLOR_RGB4"/> + <field name="TYPE_INT_COLOR_RGB8"/> + <field name="TYPE_INT_DEC"/> + <field name="TYPE_INT_HEX"/> + <field name="TYPE_LAST_COLOR_INT"/> + <field name="TYPE_LAST_INT"/> + <field name="TYPE_NULL"/> + <field name="TYPE_REFERENCE"/> + <field name="TYPE_STRING"/> + <field name="assetCookie"/> + <field name="changingConfigurations"/> + <field name="data"/> + <field name="density" since="4"/> + <field name="resourceId"/> + <field name="string"/> + <field name="type"/> + </class> + <class name="android/util/Xml" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="asAttributeSet(Lorg/xmlpull/v1/XmlPullParser;)Landroid/util/AttributeSet;"/> + <method name="findEncodingByName(Ljava/lang/String;)Landroid/util/Xml$Encoding;"/> + <method name="newPullParser()Lorg/xmlpull/v1/XmlPullParser;"/> + <method name="newSerializer()Lorg/xmlpull/v1/XmlSerializer;"/> + <method name="parse(Ljava/io/InputStream;Landroid/util/Xml$Encoding;Lorg/xml/sax/ContentHandler;)V"/> + <method name="parse(Ljava/io/Reader;Lorg/xml/sax/ContentHandler;)V"/> + <method name="parse(Ljava/lang/String;Lorg/xml/sax/ContentHandler;)V"/> + <field name="FEATURE_RELAXED"/> + </class> + <class name="android/util/Xml$Encoding" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/util/Xml$Encoding;"/> + <method name="values()[Landroid/util/Xml$Encoding;"/> + <field name="ISO_8859_1"/> + <field name="US_ASCII"/> + <field name="UTF_16"/> + <field name="UTF_8"/> + </class> + <class name="android/view/AbsSavedState" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="<init>(Landroid/os/Parcel;Ljava/lang/ClassLoader;)V" since="24"/> + <method name="<init>(Landroid/os/Parcelable;)V"/> + <method name="getSuperState()Landroid/os/Parcelable;"/> + <field name="CREATOR"/> + <field name="EMPTY_STATE"/> + </class> + <class name="android/view/ActionMode" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="finish()V"/> + <method name="getCustomView()Landroid/view/View;"/> + <method name="getMenu()Landroid/view/Menu;"/> + <method name="getMenuInflater()Landroid/view/MenuInflater;"/> + <method name="getSubtitle()Ljava/lang/CharSequence;"/> + <method name="getTag()Ljava/lang/Object;" since="14"/> + <method name="getTitle()Ljava/lang/CharSequence;"/> + <method name="getTitleOptionalHint()Z" since="16"/> + <method name="getType()I" since="23"/> + <method name="hide(J)V" since="23"/> + <method name="invalidate()V"/> + <method name="invalidateContentRect()V" since="23"/> + <method name="isTitleOptional()Z" since="16"/> + <method name="onWindowFocusChanged(Z)V" since="23"/> + <method name="setCustomView(Landroid/view/View;)V"/> + <method name="setSubtitle(I)V"/> + <method name="setSubtitle(Ljava/lang/CharSequence;)V"/> + <method name="setTag(Ljava/lang/Object;)V" since="14"/> + <method name="setTitle(I)V"/> + <method name="setTitle(Ljava/lang/CharSequence;)V"/> + <method name="setTitleOptionalHint(Z)V" since="16"/> + <method name="setType(I)V" since="23"/> + <field name="DEFAULT_HIDE_DURATION" since="23"/> + <field name="TYPE_FLOATING" since="23"/> + <field name="TYPE_PRIMARY" since="23"/> + </class> + <class name="android/view/ActionMode$Callback" since="11"> + <extends name="java/lang/Object"/> + <method name="onActionItemClicked(Landroid/view/ActionMode;Landroid/view/MenuItem;)Z"/> + <method name="onCreateActionMode(Landroid/view/ActionMode;Landroid/view/Menu;)Z"/> + <method name="onDestroyActionMode(Landroid/view/ActionMode;)V"/> + <method name="onPrepareActionMode(Landroid/view/ActionMode;Landroid/view/Menu;)Z"/> + </class> + <class name="android/view/ActionMode$Callback2" since="23"> + <extends name="java/lang/Object"/> + <implements name="android/view/ActionMode$Callback"/> + <method name="<init>()V"/> + <method name="onGetContentRect(Landroid/view/ActionMode;Landroid/view/View;Landroid/graphics/Rect;)V"/> + </class> + <class name="android/view/ActionProvider" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="hasSubMenu()Z"/> + <method name="isVisible()Z" since="16"/> + <method name="onCreateActionView()Landroid/view/View;" deprecated="16"/> + <method name="onCreateActionView(Landroid/view/MenuItem;)Landroid/view/View;" since="16"/> + <method name="onPerformDefaultAction()Z"/> + <method name="onPrepareSubMenu(Landroid/view/SubMenu;)V"/> + <method name="overridesItemVisibility()Z" since="16"/> + <method name="refreshVisibility()V" since="16"/> + <method name="setVisibilityListener(Landroid/view/ActionProvider$VisibilityListener;)V" since="16"/> + </class> + <class name="android/view/ActionProvider$VisibilityListener" since="16"> + <extends name="java/lang/Object"/> + <method name="onActionProviderVisibilityChanged(Z)V"/> + </class> + <class name="android/view/Choreographer" since="16"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getInstance()Landroid/view/Choreographer;"/> + <method name="postFrameCallback(Landroid/view/Choreographer$FrameCallback;)V"/> + <method name="postFrameCallbackDelayed(Landroid/view/Choreographer$FrameCallback;J)V"/> + <method name="removeFrameCallback(Landroid/view/Choreographer$FrameCallback;)V"/> + </class> + <class name="android/view/Choreographer$FrameCallback" since="16"> + <extends name="java/lang/Object"/> + <method name="doFrame(J)V"/> + </class> + <class name="android/view/CollapsibleActionView" since="14"> + <extends name="java/lang/Object"/> + <method name="onActionViewCollapsed()V"/> + <method name="onActionViewExpanded()V"/> + </class> + <class name="android/view/ContextMenu" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/view/Menu"/> + <method name="clearHeader()V"/> + <method name="setHeaderIcon(I)Landroid/view/ContextMenu;"/> + <method name="setHeaderIcon(Landroid/graphics/drawable/Drawable;)Landroid/view/ContextMenu;"/> + <method name="setHeaderTitle(I)Landroid/view/ContextMenu;"/> + <method name="setHeaderTitle(Ljava/lang/CharSequence;)Landroid/view/ContextMenu;"/> + <method name="setHeaderView(Landroid/view/View;)Landroid/view/ContextMenu;"/> + </class> + <class name="android/view/ContextMenu$ContextMenuInfo" since="1"> + <extends name="java/lang/Object"/> + </class> + <class name="android/view/ContextThemeWrapper" since="1"> + <extends name="android/content/ContextWrapper"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/Context;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/content/res/Resources$Theme;)V" since="23"/> + <method name="applyOverrideConfiguration(Landroid/content/res/Configuration;)V" since="17"/> + <method name="onApplyThemeResource(Landroid/content/res/Resources$Theme;IZ)V"/> + </class> + <class name="android/view/Display" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAppVsyncOffsetNanos()J" since="21"/> + <method name="getCurrentSizeRange(Landroid/graphics/Point;Landroid/graphics/Point;)V" since="16"/> + <method name="getDisplayId()I"/> + <method name="getFlags()I" since="17"/> + <method name="getHdrCapabilities()Landroid/view/Display$HdrCapabilities;" since="24"/> + <method name="getHeight()I" deprecated="16"/> + <method name="getMetrics(Landroid/util/DisplayMetrics;)V"/> + <method name="getMode()Landroid/view/Display$Mode;" since="23"/> + <method name="getName()Ljava/lang/String;" since="17"/> + <method name="getOrientation()I" deprecated="16"/> + <method name="getPixelFormat()I" deprecated="17"/> + <method name="getPresentationDeadlineNanos()J" since="21"/> + <method name="getRealMetrics(Landroid/util/DisplayMetrics;)V" since="17"/> + <method name="getRealSize(Landroid/graphics/Point;)V" since="17"/> + <method name="getRectSize(Landroid/graphics/Rect;)V" since="13"/> + <method name="getRefreshRate()F"/> + <method name="getRotation()I" since="8"/> + <method name="getSize(Landroid/graphics/Point;)V" since="13"/> + <method name="getState()I" since="20"/> + <method name="getSupportedModes()[Landroid/view/Display$Mode;" since="23"/> + <method name="getSupportedRefreshRates()[F" since="21" deprecated="23"/> + <method name="getWidth()I" deprecated="16"/> + <method name="isHdr()Z" since="26"/> + <method name="isValid()Z" since="17"/> + <method name="isWideColorGamut()Z" since="26"/> + <field name="DEFAULT_DISPLAY"/> + <field name="FLAG_PRESENTATION" since="19"/> + <field name="FLAG_PRIVATE" since="19"/> + <field name="FLAG_ROUND" since="23"/> + <field name="FLAG_SECURE" since="17"/> + <field name="FLAG_SUPPORTS_PROTECTED_BUFFERS" since="17"/> + <field name="INVALID_DISPLAY" since="23"/> + <field name="STATE_DOZE" since="21"/> + <field name="STATE_DOZE_SUSPEND" since="21"/> + <field name="STATE_DOZING" since="20" removed="21"/> + <field name="STATE_OFF" since="20"/> + <field name="STATE_ON" since="20"/> + <field name="STATE_UNKNOWN" since="20"/> + <field name="STATE_VR" since="26"/> + </class> + <class name="android/view/Display$HdrCapabilities" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getDesiredMaxAverageLuminance()F"/> + <method name="getDesiredMaxLuminance()F"/> + <method name="getDesiredMinLuminance()F"/> + <method name="getSupportedHdrTypes()[I"/> + <field name="CREATOR"/> + <field name="HDR_TYPE_DOLBY_VISION"/> + <field name="HDR_TYPE_HDR10"/> + <field name="HDR_TYPE_HLG"/> + <field name="INVALID_LUMINANCE"/> + </class> + <class name="android/view/Display$Mode" since="23"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getModeId()I"/> + <method name="getPhysicalHeight()I"/> + <method name="getPhysicalWidth()I"/> + <method name="getRefreshRate()F"/> + <field name="CREATOR"/> + </class> + <class name="android/view/DragAndDropPermissions" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable" since="25"/> + <method name="<init>()V"/> + <method name="release()V"/> + <field name="CREATOR" since="25"/> + </class> + <class name="android/view/DragEvent" since="11"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getAction()I"/> + <method name="getClipData()Landroid/content/ClipData;"/> + <method name="getClipDescription()Landroid/content/ClipDescription;"/> + <method name="getLocalState()Ljava/lang/Object;"/> + <method name="getResult()Z"/> + <method name="getX()F"/> + <method name="getY()F"/> + <field name="ACTION_DRAG_ENDED"/> + <field name="ACTION_DRAG_ENTERED"/> + <field name="ACTION_DRAG_EXITED"/> + <field name="ACTION_DRAG_LOCATION"/> + <field name="ACTION_DRAG_STARTED"/> + <field name="ACTION_DROP"/> + <field name="CREATOR"/> + </class> + <class name="android/view/FocusFinder" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="findNearestTouchable(Landroid/view/ViewGroup;III[I)Landroid/view/View;"/> + <method name="findNextFocus(Landroid/view/ViewGroup;Landroid/view/View;I)Landroid/view/View;"/> + <method name="findNextFocusFromRect(Landroid/view/ViewGroup;Landroid/graphics/Rect;I)Landroid/view/View;"/> + <method name="findNextKeyboardNavigationCluster(Landroid/view/View;Landroid/view/View;I)Landroid/view/View;" since="26"/> + <method name="getInstance()Landroid/view/FocusFinder;"/> + </class> + <class name="android/view/FrameMetrics" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/view/FrameMetrics;)V"/> + <method name="getMetric(I)J"/> + <field name="ANIMATION_DURATION"/> + <field name="COMMAND_ISSUE_DURATION"/> + <field name="DRAW_DURATION"/> + <field name="FIRST_DRAW_FRAME"/> + <field name="INPUT_HANDLING_DURATION"/> + <field name="INTENDED_VSYNC_TIMESTAMP" since="26"/> + <field name="LAYOUT_MEASURE_DURATION"/> + <field name="SWAP_BUFFERS_DURATION"/> + <field name="SYNC_DURATION"/> + <field name="TOTAL_DURATION"/> + <field name="UNKNOWN_DELAY_DURATION"/> + <field name="VSYNC_TIMESTAMP" since="26"/> + </class> + <class name="android/view/FrameStats" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getEndTimeNano()J"/> + <method name="getFrameCount()I"/> + <method name="getFramePresentedTimeNano(I)J"/> + <method name="getRefreshPeriodNano()J"/> + <method name="getStartTimeNano()J"/> + <field name="UNDEFINED_TIME_NANO"/> + </class> + <class name="android/view/GestureDetector" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;Landroid/view/GestureDetector$OnGestureListener;)V" since="3"/> + <method name="<init>(Landroid/content/Context;Landroid/view/GestureDetector$OnGestureListener;Landroid/os/Handler;)V" since="3"/> + <method name="<init>(Landroid/content/Context;Landroid/view/GestureDetector$OnGestureListener;Landroid/os/Handler;Z)V" since="8"/> + <method name="<init>(Landroid/view/GestureDetector$OnGestureListener;)V" deprecated="16"/> + <method name="<init>(Landroid/view/GestureDetector$OnGestureListener;Landroid/os/Handler;)V" deprecated="16"/> + <method name="isLongpressEnabled()Z"/> + <method name="onGenericMotionEvent(Landroid/view/MotionEvent;)Z" since="23"/> + <method name="onTouchEvent(Landroid/view/MotionEvent;)Z"/> + <method name="setContextClickListener(Landroid/view/GestureDetector$OnContextClickListener;)V" since="23"/> + <method name="setIsLongpressEnabled(Z)V"/> + <method name="setOnDoubleTapListener(Landroid/view/GestureDetector$OnDoubleTapListener;)V" since="3"/> + </class> + <class name="android/view/GestureDetector$OnContextClickListener" since="23"> + <extends name="java/lang/Object"/> + <method name="onContextClick(Landroid/view/MotionEvent;)Z"/> + </class> + <class name="android/view/GestureDetector$OnDoubleTapListener" since="3"> + <extends name="java/lang/Object"/> + <method name="onDoubleTap(Landroid/view/MotionEvent;)Z"/> + <method name="onDoubleTapEvent(Landroid/view/MotionEvent;)Z"/> + <method name="onSingleTapConfirmed(Landroid/view/MotionEvent;)Z"/> + </class> + <class name="android/view/GestureDetector$OnGestureListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onDown(Landroid/view/MotionEvent;)Z"/> + <method name="onFling(Landroid/view/MotionEvent;Landroid/view/MotionEvent;FF)Z"/> + <method name="onLongPress(Landroid/view/MotionEvent;)V"/> + <method name="onScroll(Landroid/view/MotionEvent;Landroid/view/MotionEvent;FF)Z"/> + <method name="onShowPress(Landroid/view/MotionEvent;)V"/> + <method name="onSingleTapUp(Landroid/view/MotionEvent;)Z"/> + </class> + <class name="android/view/GestureDetector$SimpleOnGestureListener" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/view/GestureDetector$OnContextClickListener" since="23"/> + <implements name="android/view/GestureDetector$OnDoubleTapListener" since="3"/> + <implements name="android/view/GestureDetector$OnGestureListener"/> + <method name="<init>()V"/> + </class> + <class name="android/view/Gravity" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="apply(IIILandroid/graphics/Rect;IILandroid/graphics/Rect;)V"/> + <method name="apply(IIILandroid/graphics/Rect;IILandroid/graphics/Rect;I)V" since="17"/> + <method name="apply(IIILandroid/graphics/Rect;Landroid/graphics/Rect;)V"/> + <method name="apply(IIILandroid/graphics/Rect;Landroid/graphics/Rect;I)V" since="17"/> + <method name="applyDisplay(ILandroid/graphics/Rect;Landroid/graphics/Rect;)V" since="3"/> + <method name="applyDisplay(ILandroid/graphics/Rect;Landroid/graphics/Rect;I)V" since="17"/> + <method name="getAbsoluteGravity(II)I" since="14"/> + <method name="isHorizontal(I)Z"/> + <method name="isVertical(I)Z"/> + <field name="AXIS_CLIP" since="3"/> + <field name="AXIS_PULL_AFTER"/> + <field name="AXIS_PULL_BEFORE"/> + <field name="AXIS_SPECIFIED"/> + <field name="AXIS_X_SHIFT"/> + <field name="AXIS_Y_SHIFT"/> + <field name="BOTTOM"/> + <field name="CENTER"/> + <field name="CENTER_HORIZONTAL"/> + <field name="CENTER_VERTICAL"/> + <field name="CLIP_HORIZONTAL" since="3"/> + <field name="CLIP_VERTICAL" since="3"/> + <field name="DISPLAY_CLIP_HORIZONTAL" since="3"/> + <field name="DISPLAY_CLIP_VERTICAL" since="3"/> + <field name="END" since="14"/> + <field name="FILL"/> + <field name="FILL_HORIZONTAL"/> + <field name="FILL_VERTICAL"/> + <field name="HORIZONTAL_GRAVITY_MASK"/> + <field name="LEFT"/> + <field name="NO_GRAVITY"/> + <field name="RELATIVE_HORIZONTAL_GRAVITY_MASK" since="14"/> + <field name="RELATIVE_LAYOUT_DIRECTION" since="14"/> + <field name="RIGHT"/> + <field name="START" since="14"/> + <field name="TOP"/> + <field name="VERTICAL_GRAVITY_MASK"/> + </class> + <class name="android/view/HapticFeedbackConstants" since="3"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="CLOCK_TICK" since="21"/> + <field name="CONTEXT_CLICK" since="23"/> + <field name="FLAG_IGNORE_GLOBAL_SETTING"/> + <field name="FLAG_IGNORE_VIEW_SETTING"/> + <field name="KEYBOARD_TAP" since="8"/> + <field name="LONG_PRESS"/> + <field name="VIRTUAL_KEY" since="5"/> + </class> + <class name="android/view/InflateException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="android/view/InputDevice" since="9"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getControllerNumber()I" since="19"/> + <method name="getDescriptor()Ljava/lang/String;" since="16"/> + <method name="getDevice(I)Landroid/view/InputDevice;"/> + <method name="getDeviceIds()[I"/> + <method name="getId()I"/> + <method name="getKeyCharacterMap()Landroid/view/KeyCharacterMap;"/> + <method name="getKeyboardType()I"/> + <method name="getMotionRange(I)Landroid/view/InputDevice$MotionRange;"/> + <method name="getMotionRange(II)Landroid/view/InputDevice$MotionRange;" since="12"/> + <method name="getMotionRanges()Ljava/util/List;" since="12"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getProductId()I" since="19"/> + <method name="getSources()I"/> + <method name="getVendorId()I" since="19"/> + <method name="getVibrator()Landroid/os/Vibrator;" since="16"/> + <method name="hasKeys([I)[Z" since="19"/> + <method name="hasMicrophone()Z" since="23"/> + <method name="isVirtual()Z" since="16"/> + <method name="supportsSource(I)Z" since="21"/> + <field name="CREATOR"/> + <field name="KEYBOARD_TYPE_ALPHABETIC"/> + <field name="KEYBOARD_TYPE_NONE"/> + <field name="KEYBOARD_TYPE_NON_ALPHABETIC"/> + <field name="MOTION_RANGE_ORIENTATION" deprecated="16"/> + <field name="MOTION_RANGE_PRESSURE" deprecated="16"/> + <field name="MOTION_RANGE_SIZE" deprecated="16"/> + <field name="MOTION_RANGE_TOOL_MAJOR" deprecated="16"/> + <field name="MOTION_RANGE_TOOL_MINOR" deprecated="16"/> + <field name="MOTION_RANGE_TOUCH_MAJOR" deprecated="16"/> + <field name="MOTION_RANGE_TOUCH_MINOR" deprecated="16"/> + <field name="MOTION_RANGE_X" deprecated="16"/> + <field name="MOTION_RANGE_Y" deprecated="16"/> + <field name="SOURCE_ANY"/> + <field name="SOURCE_BLUETOOTH_STYLUS" since="23"/> + <field name="SOURCE_CLASS_BUTTON"/> + <field name="SOURCE_CLASS_JOYSTICK" since="12"/> + <field name="SOURCE_CLASS_MASK"/> + <field name="SOURCE_CLASS_NONE" since="18"/> + <field name="SOURCE_CLASS_POINTER"/> + <field name="SOURCE_CLASS_POSITION"/> + <field name="SOURCE_CLASS_TRACKBALL"/> + <field name="SOURCE_DPAD"/> + <field name="SOURCE_GAMEPAD" since="12"/> + <field name="SOURCE_HDMI" since="21"/> + <field name="SOURCE_JOYSTICK" since="12"/> + <field name="SOURCE_KEYBOARD"/> + <field name="SOURCE_MOUSE"/> + <field name="SOURCE_MOUSE_RELATIVE" since="26"/> + <field name="SOURCE_ROTARY_ENCODER" since="26"/> + <field name="SOURCE_STYLUS" since="14"/> + <field name="SOURCE_TOUCHPAD"/> + <field name="SOURCE_TOUCHSCREEN"/> + <field name="SOURCE_TOUCH_NAVIGATION" since="18"/> + <field name="SOURCE_TRACKBALL"/> + <field name="SOURCE_UNKNOWN"/> + </class> + <class name="android/view/InputDevice$MotionRange" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAxis()I" since="12"/> + <method name="getFlat()F"/> + <method name="getFuzz()F"/> + <method name="getMax()F"/> + <method name="getMin()F"/> + <method name="getRange()F"/> + <method name="getResolution()F" since="18"/> + <method name="getSource()I" since="12"/> + <method name="isFromSource(I)Z" since="18"/> + </class> + <class name="android/view/InputEvent" since="9"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getDevice()Landroid/view/InputDevice;"/> + <method name="getDeviceId()I"/> + <method name="getEventTime()J" since="16"/> + <method name="getSource()I"/> + <method name="isFromSource(I)Z" since="18"/> + <field name="CREATOR"/> + </class> + <class name="android/view/InputQueue" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/view/InputQueue$Callback" since="9"> + <extends name="java/lang/Object"/> + <method name="onInputQueueCreated(Landroid/view/InputQueue;)V"/> + <method name="onInputQueueDestroyed(Landroid/view/InputQueue;)V"/> + </class> + <class name="android/view/KeyCharacterMap" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable" since="16"/> + <method name="<init>()V"/> + <method name="deviceHasKey(I)Z" since="3"/> + <method name="deviceHasKeys([I)[Z" since="3"/> + <method name="get(II)I"/> + <method name="getDeadChar(II)I"/> + <method name="getDisplayLabel(I)C"/> + <method name="getEvents([C)[Landroid/view/KeyEvent;"/> + <method name="getKeyData(ILandroid/view/KeyCharacterMap$KeyData;)Z" deprecated="16"/> + <method name="getKeyboardType()I"/> + <method name="getMatch(I[C)C"/> + <method name="getMatch(I[CI)C"/> + <method name="getModifierBehavior()I" since="11"/> + <method name="getNumber(I)C"/> + <method name="isPrintingKey(I)Z"/> + <method name="load(I)Landroid/view/KeyCharacterMap;"/> + <field name="ALPHA"/> + <field name="BUILT_IN_KEYBOARD" deprecated="16"/> + <field name="COMBINING_ACCENT"/> + <field name="COMBINING_ACCENT_MASK"/> + <field name="CREATOR" since="16"/> + <field name="FULL" since="11"/> + <field name="HEX_INPUT"/> + <field name="MODIFIER_BEHAVIOR_CHORDED" since="11"/> + <field name="MODIFIER_BEHAVIOR_CHORDED_OR_TOGGLED" since="11"/> + <field name="NUMERIC"/> + <field name="PICKER_DIALOG_INPUT"/> + <field name="PREDICTIVE"/> + <field name="SPECIAL_FUNCTION" since="11"/> + <field name="VIRTUAL_KEYBOARD" since="11"/> + </class> + <class name="android/view/KeyCharacterMap$KeyData" since="1" deprecated="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="META_LENGTH"/> + <field name="displayLabel"/> + <field name="meta"/> + <field name="number"/> + </class> + <class name="android/view/KeyCharacterMap$UnavailableException" since="11"> + <extends name="android/util/AndroidRuntimeException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/view/KeyEvent" since="1"> + <extends name="android/view/InputEvent" since="9"/> + <extends name="java/lang/Object" removed="9"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(II)V"/> + <method name="<init>(JJIII)V"/> + <method name="<init>(JJIIII)V"/> + <method name="<init>(JJIIIIII)V"/> + <method name="<init>(JJIIIIIII)V"/> + <method name="<init>(JJIIIIIIII)V" since="9"/> + <method name="<init>(JLjava/lang/String;II)V" since="3"/> + <method name="<init>(Landroid/view/KeyEvent;)V" since="3"/> + <method name="<init>(Landroid/view/KeyEvent;JI)V" deprecated="16"/> + <method name="changeAction(Landroid/view/KeyEvent;I)Landroid/view/KeyEvent;" since="3"/> + <method name="changeFlags(Landroid/view/KeyEvent;I)Landroid/view/KeyEvent;" since="3"/> + <method name="changeTimeRepeat(Landroid/view/KeyEvent;JI)Landroid/view/KeyEvent;" since="3"/> + <method name="changeTimeRepeat(Landroid/view/KeyEvent;JII)Landroid/view/KeyEvent;" since="5"/> + <method name="dispatch(Landroid/view/KeyEvent$Callback;)Z" deprecated="16"/> + <method name="dispatch(Landroid/view/KeyEvent$Callback;Landroid/view/KeyEvent$DispatcherState;Ljava/lang/Object;)Z" since="5"/> + <method name="getAction()I"/> + <method name="getCharacters()Ljava/lang/String;" since="3"/> + <method name="getDeadChar(II)I"/> + <method name="getDeviceId()I"/> + <method name="getDisplayLabel()C"/> + <method name="getDownTime()J"/> + <method name="getEventTime()J"/> + <method name="getFlags()I"/> + <method name="getKeyCharacterMap()Landroid/view/KeyCharacterMap;" since="11"/> + <method name="getKeyCode()I"/> + <method name="getKeyData(Landroid/view/KeyCharacterMap$KeyData;)Z" deprecated="16"/> + <method name="getMatch([C)C"/> + <method name="getMatch([CI)C"/> + <method name="getMaxKeyCode()I" since="3"/> + <method name="getMetaState()I"/> + <method name="getModifierMetaStateMask()I" since="11"/> + <method name="getModifiers()I" since="13"/> + <method name="getNumber()C"/> + <method name="getRepeatCount()I"/> + <method name="getScanCode()I"/> + <method name="getUnicodeChar()I"/> + <method name="getUnicodeChar(I)I"/> + <method name="hasModifiers(I)Z" since="11"/> + <method name="hasNoModifiers()Z" since="11"/> + <method name="isAltPressed()Z"/> + <method name="isCanceled()Z" since="5"/> + <method name="isCapsLockOn()Z" since="11"/> + <method name="isCtrlPressed()Z" since="11"/> + <method name="isFunctionPressed()Z" since="11"/> + <method name="isGamepadButton(I)Z" since="12"/> + <method name="isLongPress()Z" since="5"/> + <method name="isMetaPressed()Z" since="11"/> + <method name="isModifierKey(I)Z"/> + <method name="isNumLockOn()Z" since="11"/> + <method name="isPrintingKey()Z"/> + <method name="isScrollLockOn()Z" since="11"/> + <method name="isShiftPressed()Z"/> + <method name="isSymPressed()Z"/> + <method name="isSystem()Z"/> + <method name="isTracking()Z" since="5"/> + <method name="keyCodeFromString(Ljava/lang/String;)I" since="12"/> + <method name="keyCodeToString(I)Ljava/lang/String;" since="12"/> + <method name="metaStateHasModifiers(II)Z" since="11"/> + <method name="metaStateHasNoModifiers(I)Z" since="11"/> + <method name="normalizeMetaState(I)I" since="11"/> + <method name="setSource(I)V" since="12"/> + <method name="startTracking()V" since="5"/> + <field name="ACTION_DOWN"/> + <field name="ACTION_MULTIPLE"/> + <field name="ACTION_UP"/> + <field name="CREATOR"/> + <field name="FLAG_CANCELED" since="5"/> + <field name="FLAG_CANCELED_LONG_PRESS" since="5"/> + <field name="FLAG_EDITOR_ACTION" since="3"/> + <field name="FLAG_FALLBACK" since="11"/> + <field name="FLAG_FROM_SYSTEM" since="3"/> + <field name="FLAG_KEEP_TOUCH_MODE" since="3"/> + <field name="FLAG_LONG_PRESS" since="5"/> + <field name="FLAG_SOFT_KEYBOARD" since="3"/> + <field name="FLAG_TRACKING" since="5"/> + <field name="FLAG_VIRTUAL_HARD_KEY" since="5"/> + <field name="FLAG_WOKE_HERE" deprecated="20"/> + <field name="KEYCODE_0"/> + <field name="KEYCODE_1"/> + <field name="KEYCODE_11" since="21"/> + <field name="KEYCODE_12" since="21"/> + <field name="KEYCODE_2"/> + <field name="KEYCODE_3"/> + <field name="KEYCODE_3D_MODE" since="14"/> + <field name="KEYCODE_4"/> + <field name="KEYCODE_5"/> + <field name="KEYCODE_6"/> + <field name="KEYCODE_7"/> + <field name="KEYCODE_8"/> + <field name="KEYCODE_9"/> + <field name="KEYCODE_A"/> + <field name="KEYCODE_ALT_LEFT"/> + <field name="KEYCODE_ALT_RIGHT"/> + <field name="KEYCODE_APOSTROPHE"/> + <field name="KEYCODE_APP_SWITCH" since="11"/> + <field name="KEYCODE_ASSIST" since="16"/> + <field name="KEYCODE_AT"/> + <field name="KEYCODE_AVR_INPUT" since="11"/> + <field name="KEYCODE_AVR_POWER" since="11"/> + <field name="KEYCODE_B"/> + <field name="KEYCODE_BACK"/> + <field name="KEYCODE_BACKSLASH"/> + <field name="KEYCODE_BOOKMARK" since="11"/> + <field name="KEYCODE_BREAK" since="11"/> + <field name="KEYCODE_BRIGHTNESS_DOWN" since="18"/> + <field name="KEYCODE_BRIGHTNESS_UP" since="18"/> + <field name="KEYCODE_BUTTON_1" since="12"/> + <field name="KEYCODE_BUTTON_10" since="12"/> + <field name="KEYCODE_BUTTON_11" since="12"/> + <field name="KEYCODE_BUTTON_12" since="12"/> + <field name="KEYCODE_BUTTON_13" since="12"/> + <field name="KEYCODE_BUTTON_14" since="12"/> + <field name="KEYCODE_BUTTON_15" since="12"/> + <field name="KEYCODE_BUTTON_16" since="12"/> + <field name="KEYCODE_BUTTON_2" since="12"/> + <field name="KEYCODE_BUTTON_3" since="12"/> + <field name="KEYCODE_BUTTON_4" since="12"/> + <field name="KEYCODE_BUTTON_5" since="12"/> + <field name="KEYCODE_BUTTON_6" since="12"/> + <field name="KEYCODE_BUTTON_7" since="12"/> + <field name="KEYCODE_BUTTON_8" since="12"/> + <field name="KEYCODE_BUTTON_9" since="12"/> + <field name="KEYCODE_BUTTON_A" since="9"/> + <field name="KEYCODE_BUTTON_B" since="9"/> + <field name="KEYCODE_BUTTON_C" since="9"/> + <field name="KEYCODE_BUTTON_L1" since="9"/> + <field name="KEYCODE_BUTTON_L2" since="9"/> + <field name="KEYCODE_BUTTON_MODE" since="9"/> + <field name="KEYCODE_BUTTON_R1" since="9"/> + <field name="KEYCODE_BUTTON_R2" since="9"/> + <field name="KEYCODE_BUTTON_SELECT" since="9"/> + <field name="KEYCODE_BUTTON_START" since="9"/> + <field name="KEYCODE_BUTTON_THUMBL" since="9"/> + <field name="KEYCODE_BUTTON_THUMBR" since="9"/> + <field name="KEYCODE_BUTTON_X" since="9"/> + <field name="KEYCODE_BUTTON_Y" since="9"/> + <field name="KEYCODE_BUTTON_Z" since="9"/> + <field name="KEYCODE_C"/> + <field name="KEYCODE_CALCULATOR" since="15"/> + <field name="KEYCODE_CALENDAR" since="15"/> + <field name="KEYCODE_CALL"/> + <field name="KEYCODE_CAMERA"/> + <field name="KEYCODE_CAPS_LOCK" since="11"/> + <field name="KEYCODE_CAPTIONS" since="11"/> + <field name="KEYCODE_CHANNEL_DOWN" since="11"/> + <field name="KEYCODE_CHANNEL_UP" since="11"/> + <field name="KEYCODE_CLEAR"/> + <field name="KEYCODE_COMMA"/> + <field name="KEYCODE_CONTACTS" since="15"/> + <field name="KEYCODE_COPY" since="24"/> + <field name="KEYCODE_CTRL_LEFT" since="11"/> + <field name="KEYCODE_CTRL_RIGHT" since="11"/> + <field name="KEYCODE_CUT" since="24"/> + <field name="KEYCODE_D"/> + <field name="KEYCODE_DEL"/> + <field name="KEYCODE_DPAD_CENTER"/> + <field name="KEYCODE_DPAD_DOWN"/> + <field name="KEYCODE_DPAD_DOWN_LEFT" since="24"/> + <field name="KEYCODE_DPAD_DOWN_RIGHT" since="24"/> + <field name="KEYCODE_DPAD_LEFT"/> + <field name="KEYCODE_DPAD_RIGHT"/> + <field name="KEYCODE_DPAD_UP"/> + <field name="KEYCODE_DPAD_UP_LEFT" since="24"/> + <field name="KEYCODE_DPAD_UP_RIGHT" since="24"/> + <field name="KEYCODE_DVR" since="11"/> + <field name="KEYCODE_E"/> + <field name="KEYCODE_EISU" since="16"/> + <field name="KEYCODE_ENDCALL"/> + <field name="KEYCODE_ENTER"/> + <field name="KEYCODE_ENVELOPE"/> + <field name="KEYCODE_EQUALS"/> + <field name="KEYCODE_ESCAPE" since="11"/> + <field name="KEYCODE_EXPLORER"/> + <field name="KEYCODE_F"/> + <field name="KEYCODE_F1" since="11"/> + <field name="KEYCODE_F10" since="11"/> + <field name="KEYCODE_F11" since="11"/> + <field name="KEYCODE_F12" since="11"/> + <field name="KEYCODE_F2" since="11"/> + <field name="KEYCODE_F3" since="11"/> + <field name="KEYCODE_F4" since="11"/> + <field name="KEYCODE_F5" since="11"/> + <field name="KEYCODE_F6" since="11"/> + <field name="KEYCODE_F7" since="11"/> + <field name="KEYCODE_F8" since="11"/> + <field name="KEYCODE_F9" since="11"/> + <field name="KEYCODE_FOCUS"/> + <field name="KEYCODE_FORWARD" since="11"/> + <field name="KEYCODE_FORWARD_DEL" since="11"/> + <field name="KEYCODE_FUNCTION" since="11"/> + <field name="KEYCODE_G"/> + <field name="KEYCODE_GRAVE"/> + <field name="KEYCODE_GUIDE" since="11"/> + <field name="KEYCODE_H"/> + <field name="KEYCODE_HEADSETHOOK"/> + <field name="KEYCODE_HELP" since="21"/> + <field name="KEYCODE_HENKAN" since="16"/> + <field name="KEYCODE_HOME"/> + <field name="KEYCODE_I"/> + <field name="KEYCODE_INFO" since="11"/> + <field name="KEYCODE_INSERT" since="11"/> + <field name="KEYCODE_J"/> + <field name="KEYCODE_K"/> + <field name="KEYCODE_KANA" since="16"/> + <field name="KEYCODE_KATAKANA_HIRAGANA" since="16"/> + <field name="KEYCODE_L"/> + <field name="KEYCODE_LANGUAGE_SWITCH" since="14"/> + <field name="KEYCODE_LAST_CHANNEL" since="21"/> + <field name="KEYCODE_LEFT_BRACKET"/> + <field name="KEYCODE_M"/> + <field name="KEYCODE_MANNER_MODE" since="14"/> + <field name="KEYCODE_MEDIA_AUDIO_TRACK" since="19"/> + <field name="KEYCODE_MEDIA_CLOSE" since="11"/> + <field name="KEYCODE_MEDIA_EJECT" since="11"/> + <field name="KEYCODE_MEDIA_FAST_FORWARD" since="3"/> + <field name="KEYCODE_MEDIA_NEXT" since="3"/> + <field name="KEYCODE_MEDIA_PAUSE" since="11"/> + <field name="KEYCODE_MEDIA_PLAY" since="11"/> + <field name="KEYCODE_MEDIA_PLAY_PAUSE" since="3"/> + <field name="KEYCODE_MEDIA_PREVIOUS" since="3"/> + <field name="KEYCODE_MEDIA_RECORD" since="11"/> + <field name="KEYCODE_MEDIA_REWIND" since="3"/> + <field name="KEYCODE_MEDIA_SKIP_BACKWARD" since="23"/> + <field name="KEYCODE_MEDIA_SKIP_FORWARD" since="23"/> + <field name="KEYCODE_MEDIA_STEP_BACKWARD" since="23"/> + <field name="KEYCODE_MEDIA_STEP_FORWARD" since="23"/> + <field name="KEYCODE_MEDIA_STOP" since="3"/> + <field name="KEYCODE_MEDIA_TOP_MENU" since="21"/> + <field name="KEYCODE_MENU"/> + <field name="KEYCODE_META_LEFT" since="11"/> + <field name="KEYCODE_META_RIGHT" since="11"/> + <field name="KEYCODE_MINUS"/> + <field name="KEYCODE_MOVE_END" since="11"/> + <field name="KEYCODE_MOVE_HOME" since="11"/> + <field name="KEYCODE_MUHENKAN" since="16"/> + <field name="KEYCODE_MUSIC" since="15"/> + <field name="KEYCODE_MUTE" since="3"/> + <field name="KEYCODE_N"/> + <field name="KEYCODE_NAVIGATE_IN" since="23"/> + <field name="KEYCODE_NAVIGATE_NEXT" since="23"/> + <field name="KEYCODE_NAVIGATE_OUT" since="23"/> + <field name="KEYCODE_NAVIGATE_PREVIOUS" since="23"/> + <field name="KEYCODE_NOTIFICATION"/> + <field name="KEYCODE_NUM"/> + <field name="KEYCODE_NUMPAD_0" since="11"/> + <field name="KEYCODE_NUMPAD_1" since="11"/> + <field name="KEYCODE_NUMPAD_2" since="11"/> + <field name="KEYCODE_NUMPAD_3" since="11"/> + <field name="KEYCODE_NUMPAD_4" since="11"/> + <field name="KEYCODE_NUMPAD_5" since="11"/> + <field name="KEYCODE_NUMPAD_6" since="11"/> + <field name="KEYCODE_NUMPAD_7" since="11"/> + <field name="KEYCODE_NUMPAD_8" since="11"/> + <field name="KEYCODE_NUMPAD_9" since="11"/> + <field name="KEYCODE_NUMPAD_ADD" since="11"/> + <field name="KEYCODE_NUMPAD_COMMA" since="11"/> + <field name="KEYCODE_NUMPAD_DIVIDE" since="11"/> + <field name="KEYCODE_NUMPAD_DOT" since="11"/> + <field name="KEYCODE_NUMPAD_ENTER" since="11"/> + <field name="KEYCODE_NUMPAD_EQUALS" since="11"/> + <field name="KEYCODE_NUMPAD_LEFT_PAREN" since="11"/> + <field name="KEYCODE_NUMPAD_MULTIPLY" since="11"/> + <field name="KEYCODE_NUMPAD_RIGHT_PAREN" since="11"/> + <field name="KEYCODE_NUMPAD_SUBTRACT" since="11"/> + <field name="KEYCODE_NUM_LOCK" since="11"/> + <field name="KEYCODE_O"/> + <field name="KEYCODE_P"/> + <field name="KEYCODE_PAGE_DOWN" since="9"/> + <field name="KEYCODE_PAGE_UP" since="9"/> + <field name="KEYCODE_PAIRING" since="21"/> + <field name="KEYCODE_PASTE" since="24"/> + <field name="KEYCODE_PERIOD"/> + <field name="KEYCODE_PICTSYMBOLS" since="9"/> + <field name="KEYCODE_PLUS"/> + <field name="KEYCODE_POUND"/> + <field name="KEYCODE_POWER"/> + <field name="KEYCODE_PROG_BLUE" since="11"/> + <field name="KEYCODE_PROG_GREEN" since="11"/> + <field name="KEYCODE_PROG_RED" since="11"/> + <field name="KEYCODE_PROG_YELLOW" since="11"/> + <field name="KEYCODE_Q"/> + <field name="KEYCODE_R"/> + <field name="KEYCODE_RIGHT_BRACKET"/> + <field name="KEYCODE_RO" since="16"/> + <field name="KEYCODE_S"/> + <field name="KEYCODE_SCROLL_LOCK" since="11"/> + <field name="KEYCODE_SEARCH"/> + <field name="KEYCODE_SEMICOLON"/> + <field name="KEYCODE_SETTINGS" since="11"/> + <field name="KEYCODE_SHIFT_LEFT"/> + <field name="KEYCODE_SHIFT_RIGHT"/> + <field name="KEYCODE_SLASH"/> + <field name="KEYCODE_SLEEP" since="20"/> + <field name="KEYCODE_SOFT_LEFT"/> + <field name="KEYCODE_SOFT_RIGHT"/> + <field name="KEYCODE_SOFT_SLEEP" since="24"/> + <field name="KEYCODE_SPACE"/> + <field name="KEYCODE_STAR"/> + <field name="KEYCODE_STB_INPUT" since="11"/> + <field name="KEYCODE_STB_POWER" since="11"/> + <field name="KEYCODE_STEM_1" since="24"/> + <field name="KEYCODE_STEM_2" since="24"/> + <field name="KEYCODE_STEM_3" since="24"/> + <field name="KEYCODE_STEM_PRIMARY" since="24"/> + <field name="KEYCODE_SWITCH_CHARSET" since="9"/> + <field name="KEYCODE_SYM"/> + <field name="KEYCODE_SYSRQ" since="11"/> + <field name="KEYCODE_SYSTEM_NAVIGATION_DOWN" since="25"/> + <field name="KEYCODE_SYSTEM_NAVIGATION_LEFT" since="25"/> + <field name="KEYCODE_SYSTEM_NAVIGATION_RIGHT" since="25"/> + <field name="KEYCODE_SYSTEM_NAVIGATION_UP" since="25"/> + <field name="KEYCODE_T"/> + <field name="KEYCODE_TAB"/> + <field name="KEYCODE_TV" since="11"/> + <field name="KEYCODE_TV_ANTENNA_CABLE" since="21"/> + <field name="KEYCODE_TV_AUDIO_DESCRIPTION" since="21"/> + <field name="KEYCODE_TV_AUDIO_DESCRIPTION_MIX_DOWN" since="21"/> + <field name="KEYCODE_TV_AUDIO_DESCRIPTION_MIX_UP" since="21"/> + <field name="KEYCODE_TV_CONTENTS_MENU" since="21"/> + <field name="KEYCODE_TV_DATA_SERVICE" since="21"/> + <field name="KEYCODE_TV_INPUT" since="11"/> + <field name="KEYCODE_TV_INPUT_COMPONENT_1" since="21"/> + <field name="KEYCODE_TV_INPUT_COMPONENT_2" since="21"/> + <field name="KEYCODE_TV_INPUT_COMPOSITE_1" since="21"/> + <field name="KEYCODE_TV_INPUT_COMPOSITE_2" since="21"/> + <field name="KEYCODE_TV_INPUT_HDMI_1" since="21"/> + <field name="KEYCODE_TV_INPUT_HDMI_2" since="21"/> + <field name="KEYCODE_TV_INPUT_HDMI_3" since="21"/> + <field name="KEYCODE_TV_INPUT_HDMI_4" since="21"/> + <field name="KEYCODE_TV_INPUT_VGA_1" since="21"/> + <field name="KEYCODE_TV_MEDIA_CONTEXT_MENU" since="21"/> + <field name="KEYCODE_TV_NETWORK" since="21"/> + <field name="KEYCODE_TV_NUMBER_ENTRY" since="21"/> + <field name="KEYCODE_TV_POWER" since="11"/> + <field name="KEYCODE_TV_RADIO_SERVICE" since="21"/> + <field name="KEYCODE_TV_SATELLITE" since="21"/> + <field name="KEYCODE_TV_SATELLITE_BS" since="21"/> + <field name="KEYCODE_TV_SATELLITE_CS" since="21"/> + <field name="KEYCODE_TV_SATELLITE_SERVICE" since="21"/> + <field name="KEYCODE_TV_TELETEXT" since="21"/> + <field name="KEYCODE_TV_TERRESTRIAL_ANALOG" since="21"/> + <field name="KEYCODE_TV_TERRESTRIAL_DIGITAL" since="21"/> + <field name="KEYCODE_TV_TIMER_PROGRAMMING" since="21"/> + <field name="KEYCODE_TV_ZOOM_MODE" since="21"/> + <field name="KEYCODE_U"/> + <field name="KEYCODE_UNKNOWN"/> + <field name="KEYCODE_V"/> + <field name="KEYCODE_VOICE_ASSIST" since="21"/> + <field name="KEYCODE_VOLUME_DOWN"/> + <field name="KEYCODE_VOLUME_MUTE" since="11"/> + <field name="KEYCODE_VOLUME_UP"/> + <field name="KEYCODE_W"/> + <field name="KEYCODE_WAKEUP" since="20"/> + <field name="KEYCODE_WINDOW" since="11"/> + <field name="KEYCODE_X"/> + <field name="KEYCODE_Y"/> + <field name="KEYCODE_YEN" since="16"/> + <field name="KEYCODE_Z"/> + <field name="KEYCODE_ZENKAKU_HANKAKU" since="16"/> + <field name="KEYCODE_ZOOM_IN" since="11"/> + <field name="KEYCODE_ZOOM_OUT" since="11"/> + <field name="MAX_KEYCODE" deprecated="16"/> + <field name="META_ALT_LEFT_ON"/> + <field name="META_ALT_MASK" since="11"/> + <field name="META_ALT_ON"/> + <field name="META_ALT_RIGHT_ON"/> + <field name="META_CAPS_LOCK_ON" since="11"/> + <field name="META_CTRL_LEFT_ON" since="11"/> + <field name="META_CTRL_MASK" since="11"/> + <field name="META_CTRL_ON" since="11"/> + <field name="META_CTRL_RIGHT_ON" since="11"/> + <field name="META_FUNCTION_ON" since="11"/> + <field name="META_META_LEFT_ON" since="11"/> + <field name="META_META_MASK" since="11"/> + <field name="META_META_ON" since="11"/> + <field name="META_META_RIGHT_ON" since="11"/> + <field name="META_NUM_LOCK_ON" since="11"/> + <field name="META_SCROLL_LOCK_ON" since="11"/> + <field name="META_SHIFT_LEFT_ON"/> + <field name="META_SHIFT_MASK" since="11"/> + <field name="META_SHIFT_ON"/> + <field name="META_SHIFT_RIGHT_ON"/> + <field name="META_SYM_ON"/> + </class> + <class name="android/view/KeyEvent$Callback" since="1"> + <extends name="java/lang/Object"/> + <method name="onKeyDown(ILandroid/view/KeyEvent;)Z"/> + <method name="onKeyLongPress(ILandroid/view/KeyEvent;)Z" since="5"/> + <method name="onKeyMultiple(IILandroid/view/KeyEvent;)Z"/> + <method name="onKeyUp(ILandroid/view/KeyEvent;)Z"/> + </class> + <class name="android/view/KeyEvent$DispatcherState" since="5"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="handleUpEvent(Landroid/view/KeyEvent;)V"/> + <method name="isTracking(Landroid/view/KeyEvent;)Z"/> + <method name="performedLongPress(Landroid/view/KeyEvent;)V"/> + <method name="reset()V"/> + <method name="reset(Ljava/lang/Object;)V"/> + <method name="startTracking(Landroid/view/KeyEvent;Ljava/lang/Object;)V"/> + </class> + <class name="android/view/KeyboardShortcutGroup" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Ljava/lang/CharSequence;)V"/> + <method name="<init>(Ljava/lang/CharSequence;Ljava/util/List;)V"/> + <method name="addItem(Landroid/view/KeyboardShortcutInfo;)V"/> + <method name="getItems()Ljava/util/List;"/> + <method name="getLabel()Ljava/lang/CharSequence;"/> + <field name="CREATOR"/> + </class> + <class name="android/view/KeyboardShortcutInfo" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Ljava/lang/CharSequence;CI)V"/> + <method name="<init>(Ljava/lang/CharSequence;II)V"/> + <method name="getBaseCharacter()C"/> + <method name="getKeycode()I"/> + <method name="getLabel()Ljava/lang/CharSequence;"/> + <method name="getModifiers()I"/> + <field name="CREATOR"/> + </class> + <class name="android/view/LayoutInflater" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/view/LayoutInflater;Landroid/content/Context;)V"/> + <method name="cloneInContext(Landroid/content/Context;)Landroid/view/LayoutInflater;"/> + <method name="createView(Ljava/lang/String;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;"/> + <method name="from(Landroid/content/Context;)Landroid/view/LayoutInflater;"/> + <method name="getContext()Landroid/content/Context;"/> + <method name="getFactory()Landroid/view/LayoutInflater$Factory;"/> + <method name="getFactory2()Landroid/view/LayoutInflater$Factory2;" since="11"/> + <method name="getFilter()Landroid/view/LayoutInflater$Filter;"/> + <method name="inflate(ILandroid/view/ViewGroup;)Landroid/view/View;"/> + <method name="inflate(ILandroid/view/ViewGroup;Z)Landroid/view/View;"/> + <method name="inflate(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/ViewGroup;)Landroid/view/View;"/> + <method name="inflate(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/ViewGroup;Z)Landroid/view/View;"/> + <method name="onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;" since="11"/> + <method name="onCreateView(Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;"/> + <method name="setFactory(Landroid/view/LayoutInflater$Factory;)V"/> + <method name="setFactory2(Landroid/view/LayoutInflater$Factory2;)V" since="11"/> + <method name="setFilter(Landroid/view/LayoutInflater$Filter;)V"/> + </class> + <class name="android/view/LayoutInflater$Factory" since="1"> + <extends name="java/lang/Object"/> + <method name="onCreateView(Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;"/> + </class> + <class name="android/view/LayoutInflater$Factory2" since="11"> + <extends name="java/lang/Object"/> + <implements name="android/view/LayoutInflater$Factory"/> + <method name="onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;"/> + </class> + <class name="android/view/LayoutInflater$Filter" since="1"> + <extends name="java/lang/Object"/> + <method name="onLoadClass(Ljava/lang/Class;)Z"/> + </class> + <class name="android/view/Menu" since="1"> + <extends name="java/lang/Object"/> + <method name="add(I)Landroid/view/MenuItem;"/> + <method name="add(IIII)Landroid/view/MenuItem;"/> + <method name="add(IIILjava/lang/CharSequence;)Landroid/view/MenuItem;"/> + <method name="add(Ljava/lang/CharSequence;)Landroid/view/MenuItem;"/> + <method name="addIntentOptions(IIILandroid/content/ComponentName;[Landroid/content/Intent;Landroid/content/Intent;I[Landroid/view/MenuItem;)I"/> + <method name="addSubMenu(I)Landroid/view/SubMenu;"/> + <method name="addSubMenu(IIII)Landroid/view/SubMenu;"/> + <method name="addSubMenu(IIILjava/lang/CharSequence;)Landroid/view/SubMenu;"/> + <method name="addSubMenu(Ljava/lang/CharSequence;)Landroid/view/SubMenu;"/> + <method name="clear()V"/> + <method name="close()V" since="3"/> + <method name="findItem(I)Landroid/view/MenuItem;"/> + <method name="getItem(I)Landroid/view/MenuItem;" since="3"/> + <method name="hasVisibleItems()Z"/> + <method name="isShortcutKey(ILandroid/view/KeyEvent;)Z"/> + <method name="performIdentifierAction(II)Z"/> + <method name="performShortcut(ILandroid/view/KeyEvent;I)Z"/> + <method name="removeGroup(I)V"/> + <method name="removeItem(I)V"/> + <method name="setGroupCheckable(IZZ)V"/> + <method name="setGroupEnabled(IZ)V"/> + <method name="setGroupVisible(IZ)V"/> + <method name="setQwertyMode(Z)V"/> + <method name="size()I"/> + <field name="CATEGORY_ALTERNATIVE"/> + <field name="CATEGORY_CONTAINER"/> + <field name="CATEGORY_SECONDARY"/> + <field name="CATEGORY_SYSTEM"/> + <field name="FIRST"/> + <field name="FLAG_ALWAYS_PERFORM_CLOSE"/> + <field name="FLAG_APPEND_TO_GROUP"/> + <field name="FLAG_PERFORM_NO_CLOSE"/> + <field name="NONE"/> + <field name="SUPPORTED_MODIFIERS_MASK" since="26"/> + </class> + <class name="android/view/MenuInflater" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="inflate(ILandroid/view/Menu;)V"/> + </class> + <class name="android/view/MenuItem" since="1"> + <extends name="java/lang/Object"/> + <method name="collapseActionView()Z" since="14"/> + <method name="expandActionView()Z" since="14"/> + <method name="getActionProvider()Landroid/view/ActionProvider;" since="14"/> + <method name="getActionView()Landroid/view/View;" since="11"/> + <method name="getAlphabeticModifiers()I" since="26"/> + <method name="getAlphabeticShortcut()C"/> + <method name="getContentDescription()Ljava/lang/CharSequence;" since="26"/> + <method name="getGroupId()I"/> + <method name="getIcon()Landroid/graphics/drawable/Drawable;"/> + <method name="getIconTintList()Landroid/content/res/ColorStateList;" since="26"/> + <method name="getIconTintMode()Landroid/graphics/PorterDuff$Mode;" since="26"/> + <method name="getIntent()Landroid/content/Intent;"/> + <method name="getItemId()I"/> + <method name="getMenuInfo()Landroid/view/ContextMenu$ContextMenuInfo;"/> + <method name="getNumericModifiers()I" since="26"/> + <method name="getNumericShortcut()C"/> + <method name="getOrder()I"/> + <method name="getSubMenu()Landroid/view/SubMenu;"/> + <method name="getTitle()Ljava/lang/CharSequence;"/> + <method name="getTitleCondensed()Ljava/lang/CharSequence;"/> + <method name="getTooltipText()Ljava/lang/CharSequence;" since="26"/> + <method name="hasSubMenu()Z"/> + <method name="isActionViewExpanded()Z" since="14"/> + <method name="isCheckable()Z"/> + <method name="isChecked()Z"/> + <method name="isEnabled()Z"/> + <method name="isVisible()Z"/> + <method name="setActionProvider(Landroid/view/ActionProvider;)Landroid/view/MenuItem;" since="14"/> + <method name="setActionView(I)Landroid/view/MenuItem;" since="11"/> + <method name="setActionView(Landroid/view/View;)Landroid/view/MenuItem;" since="11"/> + <method name="setAlphabeticShortcut(C)Landroid/view/MenuItem;"/> + <method name="setAlphabeticShortcut(CI)Landroid/view/MenuItem;" since="26"/> + <method name="setCheckable(Z)Landroid/view/MenuItem;"/> + <method name="setChecked(Z)Landroid/view/MenuItem;"/> + <method name="setContentDescription(Ljava/lang/CharSequence;)Landroid/view/MenuItem;" since="26"/> + <method name="setEnabled(Z)Landroid/view/MenuItem;"/> + <method name="setIcon(I)Landroid/view/MenuItem;"/> + <method name="setIcon(Landroid/graphics/drawable/Drawable;)Landroid/view/MenuItem;"/> + <method name="setIconTintList(Landroid/content/res/ColorStateList;)Landroid/view/MenuItem;" since="26"/> + <method name="setIconTintMode(Landroid/graphics/PorterDuff$Mode;)Landroid/view/MenuItem;" since="26"/> + <method name="setIntent(Landroid/content/Intent;)Landroid/view/MenuItem;"/> + <method name="setNumericShortcut(C)Landroid/view/MenuItem;"/> + <method name="setNumericShortcut(CI)Landroid/view/MenuItem;" since="26"/> + <method name="setOnActionExpandListener(Landroid/view/MenuItem$OnActionExpandListener;)Landroid/view/MenuItem;" since="14"/> + <method name="setOnMenuItemClickListener(Landroid/view/MenuItem$OnMenuItemClickListener;)Landroid/view/MenuItem;"/> + <method name="setShortcut(CC)Landroid/view/MenuItem;"/> + <method name="setShortcut(CCII)Landroid/view/MenuItem;" since="26"/> + <method name="setShowAsAction(I)V" since="11"/> + <method name="setShowAsActionFlags(I)Landroid/view/MenuItem;" since="14"/> + <method name="setTitle(I)Landroid/view/MenuItem;"/> + <method name="setTitle(Ljava/lang/CharSequence;)Landroid/view/MenuItem;"/> + <method name="setTitleCondensed(Ljava/lang/CharSequence;)Landroid/view/MenuItem;"/> + <method name="setTooltipText(Ljava/lang/CharSequence;)Landroid/view/MenuItem;" since="26"/> + <method name="setVisible(Z)Landroid/view/MenuItem;"/> + <field name="SHOW_AS_ACTION_ALWAYS" since="11"/> + <field name="SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW" since="14"/> + <field name="SHOW_AS_ACTION_IF_ROOM" since="11"/> + <field name="SHOW_AS_ACTION_NEVER" since="11"/> + <field name="SHOW_AS_ACTION_WITH_TEXT" since="11"/> + </class> + <class name="android/view/MenuItem$OnActionExpandListener" since="14"> + <extends name="java/lang/Object"/> + <method name="onMenuItemActionCollapse(Landroid/view/MenuItem;)Z"/> + <method name="onMenuItemActionExpand(Landroid/view/MenuItem;)Z"/> + </class> + <class name="android/view/MenuItem$OnMenuItemClickListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onMenuItemClick(Landroid/view/MenuItem;)Z"/> + </class> + <class name="android/view/MotionEvent" since="1"> + <extends name="android/view/InputEvent" since="9"/> + <extends name="java/lang/Object" removed="9"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="actionToString(I)Ljava/lang/String;" since="19"/> + <method name="addBatch(JFFFFI)V"/> + <method name="addBatch(J[Landroid/view/MotionEvent$PointerCoords;I)V" since="9"/> + <method name="axisFromString(Ljava/lang/String;)I" since="12"/> + <method name="axisToString(I)Ljava/lang/String;" since="12"/> + <method name="findPointerIndex(I)I" since="5"/> + <method name="getAction()I"/> + <method name="getActionButton()I" since="23"/> + <method name="getActionIndex()I" since="8"/> + <method name="getActionMasked()I" since="8"/> + <method name="getAxisValue(I)F" since="12"/> + <method name="getAxisValue(II)F" since="12"/> + <method name="getButtonState()I" since="14"/> + <method name="getDeviceId()I"/> + <method name="getDownTime()J"/> + <method name="getEdgeFlags()I"/> + <method name="getEventTime()J"/> + <method name="getFlags()I" since="9"/> + <method name="getHistoricalAxisValue(II)F" since="12"/> + <method name="getHistoricalAxisValue(III)F" since="12"/> + <method name="getHistoricalEventTime(I)J"/> + <method name="getHistoricalOrientation(I)F" since="9"/> + <method name="getHistoricalOrientation(II)F" since="9"/> + <method name="getHistoricalPointerCoords(IILandroid/view/MotionEvent$PointerCoords;)V" since="9"/> + <method name="getHistoricalPressure(I)F"/> + <method name="getHistoricalPressure(II)F" since="5"/> + <method name="getHistoricalSize(I)F"/> + <method name="getHistoricalSize(II)F" since="5"/> + <method name="getHistoricalToolMajor(I)F" since="9"/> + <method name="getHistoricalToolMajor(II)F" since="9"/> + <method name="getHistoricalToolMinor(I)F" since="9"/> + <method name="getHistoricalToolMinor(II)F" since="9"/> + <method name="getHistoricalTouchMajor(I)F" since="9"/> + <method name="getHistoricalTouchMajor(II)F" since="9"/> + <method name="getHistoricalTouchMinor(I)F" since="9"/> + <method name="getHistoricalTouchMinor(II)F" since="9"/> + <method name="getHistoricalX(I)F"/> + <method name="getHistoricalX(II)F" since="5"/> + <method name="getHistoricalY(I)F"/> + <method name="getHistoricalY(II)F" since="5"/> + <method name="getHistorySize()I"/> + <method name="getMetaState()I"/> + <method name="getOrientation()F" since="9"/> + <method name="getOrientation(I)F" since="9"/> + <method name="getPointerCoords(ILandroid/view/MotionEvent$PointerCoords;)V" since="9"/> + <method name="getPointerCount()I" since="5"/> + <method name="getPointerId(I)I" since="5"/> + <method name="getPointerProperties(ILandroid/view/MotionEvent$PointerProperties;)V" since="14"/> + <method name="getPressure()F"/> + <method name="getPressure(I)F" since="5"/> + <method name="getRawX()F"/> + <method name="getRawY()F"/> + <method name="getSize()F"/> + <method name="getSize(I)F" since="5"/> + <method name="getToolMajor()F" since="9"/> + <method name="getToolMajor(I)F" since="9"/> + <method name="getToolMinor()F" since="9"/> + <method name="getToolMinor(I)F" since="9"/> + <method name="getToolType(I)I" since="14"/> + <method name="getTouchMajor()F" since="9"/> + <method name="getTouchMajor(I)F" since="9"/> + <method name="getTouchMinor()F" since="9"/> + <method name="getTouchMinor(I)F" since="9"/> + <method name="getX()F"/> + <method name="getX(I)F" since="5"/> + <method name="getXPrecision()F"/> + <method name="getY()F"/> + <method name="getY(I)F" since="5"/> + <method name="getYPrecision()F"/> + <method name="isButtonPressed(I)Z" since="21"/> + <method name="obtain(JJIFFFFIFFII)Landroid/view/MotionEvent;"/> + <method name="obtain(JJIFFI)Landroid/view/MotionEvent;"/> + <method name="obtain(JJIIFFFFIFFII)Landroid/view/MotionEvent;" since="5" deprecated="16"/> + <method name="obtain(JJII[I[Landroid/view/MotionEvent$PointerCoords;IFFIIII)Landroid/view/MotionEvent;" since="9" deprecated="16"/> + <method name="obtain(JJII[Landroid/view/MotionEvent$PointerProperties;[Landroid/view/MotionEvent$PointerCoords;IIFFIIII)Landroid/view/MotionEvent;" since="14"/> + <method name="obtain(Landroid/view/MotionEvent;)Landroid/view/MotionEvent;"/> + <method name="obtainNoHistory(Landroid/view/MotionEvent;)Landroid/view/MotionEvent;" since="5"/> + <method name="offsetLocation(FF)V"/> + <method name="recycle()V"/> + <method name="setAction(I)V"/> + <method name="setEdgeFlags(I)V"/> + <method name="setLocation(FF)V"/> + <method name="setSource(I)V" since="12"/> + <method name="transform(Landroid/graphics/Matrix;)V" since="11"/> + <field name="ACTION_BUTTON_PRESS" since="23"/> + <field name="ACTION_BUTTON_RELEASE" since="23"/> + <field name="ACTION_CANCEL"/> + <field name="ACTION_DOWN"/> + <field name="ACTION_HOVER_ENTER" since="14"/> + <field name="ACTION_HOVER_EXIT" since="14"/> + <field name="ACTION_HOVER_MOVE" since="12"/> + <field name="ACTION_MASK" since="5"/> + <field name="ACTION_MOVE"/> + <field name="ACTION_OUTSIDE" since="3"/> + <field name="ACTION_POINTER_1_DOWN" since="5" deprecated="16"/> + <field name="ACTION_POINTER_1_UP" since="5" deprecated="16"/> + <field name="ACTION_POINTER_2_DOWN" since="5" deprecated="16"/> + <field name="ACTION_POINTER_2_UP" since="5" deprecated="16"/> + <field name="ACTION_POINTER_3_DOWN" since="5" deprecated="16"/> + <field name="ACTION_POINTER_3_UP" since="5" deprecated="16"/> + <field name="ACTION_POINTER_DOWN" since="5"/> + <field name="ACTION_POINTER_ID_MASK" since="5" deprecated="16"/> + <field name="ACTION_POINTER_ID_SHIFT" since="5" deprecated="16"/> + <field name="ACTION_POINTER_INDEX_MASK" since="8"/> + <field name="ACTION_POINTER_INDEX_SHIFT" since="8"/> + <field name="ACTION_POINTER_UP" since="5"/> + <field name="ACTION_SCROLL" since="12"/> + <field name="ACTION_UP"/> + <field name="AXIS_BRAKE" since="12"/> + <field name="AXIS_DISTANCE" since="14"/> + <field name="AXIS_GAS" since="12"/> + <field name="AXIS_GENERIC_1" since="12"/> + <field name="AXIS_GENERIC_10" since="12"/> + <field name="AXIS_GENERIC_11" since="12"/> + <field name="AXIS_GENERIC_12" since="12"/> + <field name="AXIS_GENERIC_13" since="12"/> + <field name="AXIS_GENERIC_14" since="12"/> + <field name="AXIS_GENERIC_15" since="12"/> + <field name="AXIS_GENERIC_16" since="12"/> + <field name="AXIS_GENERIC_2" since="12"/> + <field name="AXIS_GENERIC_3" since="12"/> + <field name="AXIS_GENERIC_4" since="12"/> + <field name="AXIS_GENERIC_5" since="12"/> + <field name="AXIS_GENERIC_6" since="12"/> + <field name="AXIS_GENERIC_7" since="12"/> + <field name="AXIS_GENERIC_8" since="12"/> + <field name="AXIS_GENERIC_9" since="12"/> + <field name="AXIS_HAT_X" since="12"/> + <field name="AXIS_HAT_Y" since="12"/> + <field name="AXIS_HSCROLL" since="12"/> + <field name="AXIS_LTRIGGER" since="12"/> + <field name="AXIS_ORIENTATION" since="12"/> + <field name="AXIS_PRESSURE" since="12"/> + <field name="AXIS_RELATIVE_X" since="24"/> + <field name="AXIS_RELATIVE_Y" since="24"/> + <field name="AXIS_RTRIGGER" since="12"/> + <field name="AXIS_RUDDER" since="12"/> + <field name="AXIS_RX" since="12"/> + <field name="AXIS_RY" since="12"/> + <field name="AXIS_RZ" since="12"/> + <field name="AXIS_SCROLL" since="26"/> + <field name="AXIS_SIZE" since="12"/> + <field name="AXIS_THROTTLE" since="12"/> + <field name="AXIS_TILT" since="14"/> + <field name="AXIS_TOOL_MAJOR" since="12"/> + <field name="AXIS_TOOL_MINOR" since="12"/> + <field name="AXIS_TOUCH_MAJOR" since="12"/> + <field name="AXIS_TOUCH_MINOR" since="12"/> + <field name="AXIS_VSCROLL" since="12"/> + <field name="AXIS_WHEEL" since="12"/> + <field name="AXIS_X" since="12"/> + <field name="AXIS_Y" since="12"/> + <field name="AXIS_Z" since="12"/> + <field name="BUTTON_BACK" since="14"/> + <field name="BUTTON_FORWARD" since="14"/> + <field name="BUTTON_PRIMARY" since="14"/> + <field name="BUTTON_SECONDARY" since="14"/> + <field name="BUTTON_STYLUS_PRIMARY" since="23"/> + <field name="BUTTON_STYLUS_SECONDARY" since="23"/> + <field name="BUTTON_TERTIARY" since="14"/> + <field name="CREATOR"/> + <field name="EDGE_BOTTOM"/> + <field name="EDGE_LEFT"/> + <field name="EDGE_RIGHT"/> + <field name="EDGE_TOP"/> + <field name="FLAG_WINDOW_IS_OBSCURED" since="9"/> + <field name="INVALID_POINTER_ID" since="14"/> + <field name="TOOL_TYPE_ERASER" since="14"/> + <field name="TOOL_TYPE_FINGER" since="14"/> + <field name="TOOL_TYPE_MOUSE" since="14"/> + <field name="TOOL_TYPE_STYLUS" since="14"/> + <field name="TOOL_TYPE_UNKNOWN" since="14"/> + </class> + <class name="android/view/MotionEvent$PointerCoords" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/view/MotionEvent$PointerCoords;)V" since="12"/> + <method name="clear()V" since="12"/> + <method name="copyFrom(Landroid/view/MotionEvent$PointerCoords;)V" since="12"/> + <method name="getAxisValue(I)F" since="12"/> + <method name="setAxisValue(IF)V" since="12"/> + <field name="orientation"/> + <field name="pressure"/> + <field name="size"/> + <field name="toolMajor"/> + <field name="toolMinor"/> + <field name="touchMajor"/> + <field name="touchMinor"/> + <field name="x"/> + <field name="y"/> + </class> + <class name="android/view/MotionEvent$PointerProperties" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/view/MotionEvent$PointerProperties;)V"/> + <method name="clear()V"/> + <method name="copyFrom(Landroid/view/MotionEvent$PointerProperties;)V"/> + <field name="id"/> + <field name="toolType"/> + </class> + <class name="android/view/OrientationEventListener" since="3"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;I)V"/> + <method name="canDetectOrientation()Z"/> + <method name="disable()V"/> + <method name="enable()V"/> + <method name="onOrientationChanged(I)V"/> + <field name="ORIENTATION_UNKNOWN"/> + </class> + <class name="android/view/OrientationListener" since="1" deprecated="3"> + <extends name="java/lang/Object"/> + <implements name="android/hardware/SensorListener"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;I)V" since="3"/> + <method name="disable()V"/> + <method name="enable()V"/> + <method name="onOrientationChanged(I)V"/> + <field name="ORIENTATION_UNKNOWN"/> + </class> + <class name="android/view/PixelCopy" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="request(Landroid/view/Surface;Landroid/graphics/Bitmap;Landroid/view/PixelCopy$OnPixelCopyFinishedListener;Landroid/os/Handler;)V"/> + <method name="request(Landroid/view/Surface;Landroid/graphics/Rect;Landroid/graphics/Bitmap;Landroid/view/PixelCopy$OnPixelCopyFinishedListener;Landroid/os/Handler;)V" since="26"/> + <method name="request(Landroid/view/SurfaceView;Landroid/graphics/Bitmap;Landroid/view/PixelCopy$OnPixelCopyFinishedListener;Landroid/os/Handler;)V"/> + <method name="request(Landroid/view/SurfaceView;Landroid/graphics/Rect;Landroid/graphics/Bitmap;Landroid/view/PixelCopy$OnPixelCopyFinishedListener;Landroid/os/Handler;)V" since="26"/> + <method name="request(Landroid/view/Window;Landroid/graphics/Bitmap;Landroid/view/PixelCopy$OnPixelCopyFinishedListener;Landroid/os/Handler;)V" since="26"/> + <method name="request(Landroid/view/Window;Landroid/graphics/Rect;Landroid/graphics/Bitmap;Landroid/view/PixelCopy$OnPixelCopyFinishedListener;Landroid/os/Handler;)V" since="26"/> + <field name="ERROR_DESTINATION_INVALID"/> + <field name="ERROR_SOURCE_INVALID"/> + <field name="ERROR_SOURCE_NO_DATA"/> + <field name="ERROR_TIMEOUT"/> + <field name="ERROR_UNKNOWN"/> + <field name="SUCCESS"/> + </class> + <class name="android/view/PixelCopy$OnPixelCopyFinishedListener" since="24"> + <extends name="java/lang/Object"/> + <method name="onPixelCopyFinished(I)V"/> + </class> + <class name="android/view/PointerIcon" since="24"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="create(Landroid/graphics/Bitmap;FF)Landroid/view/PointerIcon;"/> + <method name="getSystemIcon(Landroid/content/Context;I)Landroid/view/PointerIcon;"/> + <method name="load(Landroid/content/res/Resources;I)Landroid/view/PointerIcon;"/> + <field name="CREATOR"/> + <field name="TYPE_ALIAS"/> + <field name="TYPE_ALL_SCROLL"/> + <field name="TYPE_ARROW"/> + <field name="TYPE_CELL"/> + <field name="TYPE_CONTEXT_MENU"/> + <field name="TYPE_COPY"/> + <field name="TYPE_CROSSHAIR"/> + <field name="TYPE_DEFAULT"/> + <field name="TYPE_GRAB"/> + <field name="TYPE_GRABBING"/> + <field name="TYPE_HAND"/> + <field name="TYPE_HELP"/> + <field name="TYPE_HORIZONTAL_DOUBLE_ARROW"/> + <field name="TYPE_NO_DROP"/> + <field name="TYPE_NULL"/> + <field name="TYPE_TEXT"/> + <field name="TYPE_TOP_LEFT_DIAGONAL_DOUBLE_ARROW"/> + <field name="TYPE_TOP_RIGHT_DIAGONAL_DOUBLE_ARROW"/> + <field name="TYPE_VERTICAL_DOUBLE_ARROW"/> + <field name="TYPE_VERTICAL_TEXT"/> + <field name="TYPE_WAIT"/> + <field name="TYPE_ZOOM_IN"/> + <field name="TYPE_ZOOM_OUT"/> + </class> + <class name="android/view/ScaleGestureDetector" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;Landroid/view/ScaleGestureDetector$OnScaleGestureListener;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/view/ScaleGestureDetector$OnScaleGestureListener;Landroid/os/Handler;)V" since="19"/> + <method name="getCurrentSpan()F"/> + <method name="getCurrentSpanX()F" since="11"/> + <method name="getCurrentSpanY()F" since="11"/> + <method name="getEventTime()J"/> + <method name="getFocusX()F"/> + <method name="getFocusY()F"/> + <method name="getPreviousSpan()F"/> + <method name="getPreviousSpanX()F" since="11"/> + <method name="getPreviousSpanY()F" since="11"/> + <method name="getScaleFactor()F"/> + <method name="getTimeDelta()J"/> + <method name="isInProgress()Z"/> + <method name="isQuickScaleEnabled()Z" since="19"/> + <method name="isStylusScaleEnabled()Z" since="23"/> + <method name="onTouchEvent(Landroid/view/MotionEvent;)Z"/> + <method name="setQuickScaleEnabled(Z)V" since="19"/> + <method name="setStylusScaleEnabled(Z)V" since="23"/> + </class> + <class name="android/view/ScaleGestureDetector$OnScaleGestureListener" since="8"> + <extends name="java/lang/Object"/> + <method name="onScale(Landroid/view/ScaleGestureDetector;)Z"/> + <method name="onScaleBegin(Landroid/view/ScaleGestureDetector;)Z"/> + <method name="onScaleEnd(Landroid/view/ScaleGestureDetector;)V"/> + </class> + <class name="android/view/ScaleGestureDetector$SimpleOnScaleGestureListener" since="8"> + <extends name="java/lang/Object"/> + <implements name="android/view/ScaleGestureDetector$OnScaleGestureListener"/> + <method name="<init>()V"/> + </class> + <class name="android/view/SearchEvent" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/view/InputDevice;)V"/> + <method name="getInputDevice()Landroid/view/InputDevice;"/> + </class> + <class name="android/view/SoundEffectConstants" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getContantForFocusDirection(I)I"/> + <field name="CLICK"/> + <field name="NAVIGATION_DOWN"/> + <field name="NAVIGATION_LEFT"/> + <field name="NAVIGATION_RIGHT"/> + <field name="NAVIGATION_UP"/> + </class> + <class name="android/view/SubMenu" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/view/Menu"/> + <method name="clearHeader()V"/> + <method name="getItem()Landroid/view/MenuItem;"/> + <method name="setHeaderIcon(I)Landroid/view/SubMenu;"/> + <method name="setHeaderIcon(Landroid/graphics/drawable/Drawable;)Landroid/view/SubMenu;"/> + <method name="setHeaderTitle(I)Landroid/view/SubMenu;"/> + <method name="setHeaderTitle(Ljava/lang/CharSequence;)Landroid/view/SubMenu;"/> + <method name="setHeaderView(Landroid/view/View;)Landroid/view/SubMenu;"/> + <method name="setIcon(I)Landroid/view/SubMenu;"/> + <method name="setIcon(Landroid/graphics/drawable/Drawable;)Landroid/view/SubMenu;"/> + </class> + <class name="android/view/Surface" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V" removed="14"/> + <method name="<init>(Landroid/graphics/SurfaceTexture;)V" since="14"/> + <method name="freeze()V" removed="14"/> + <method name="hide()V" removed="14"/> + <method name="isValid()Z"/> + <method name="lockCanvas(Landroid/graphics/Rect;)Landroid/graphics/Canvas;"/> + <method name="lockHardwareCanvas()Landroid/graphics/Canvas;" since="23"/> + <method name="readFromParcel(Landroid/os/Parcel;)V"/> + <method name="release()V" since="14"/> + <method name="setAlpha(F)V" removed="14"/> + <method name="setFlags(II)V" removed="14"/> + <method name="setFreezeTint(I)V" removed="14"/> + <method name="setLayer(I)V" removed="14"/> + <method name="setMatrix(FFFF)V" removed="14"/> + <method name="setOrientation(II)V" removed="14"/> + <method name="setPosition(II)V" removed="14"/> + <method name="setSize(II)V" removed="14"/> + <method name="setTransparentRegionHint(Landroid/graphics/Region;)V" removed="14"/> + <method name="show()V" removed="14"/> + <method name="unfreeze()V" removed="14"/> + <method name="unlockCanvas(Landroid/graphics/Canvas;)V" deprecated="17"/> + <method name="unlockCanvasAndPost(Landroid/graphics/Canvas;)V"/> + <field name="CREATOR"/> + <field name="FX_SURFACE_BLUR" removed="14"/> + <field name="FX_SURFACE_DIM" removed="14"/> + <field name="FX_SURFACE_MASK" removed="14"/> + <field name="FX_SURFACE_NORMAL" removed="14"/> + <field name="GPU" removed="14"/> + <field name="HARDWARE" removed="14"/> + <field name="HIDDEN" removed="14"/> + <field name="NON_PREMULTIPLIED" removed="14"/> + <field name="PUSH_BUFFERS" removed="14"/> + <field name="ROTATION_0"/> + <field name="ROTATION_180"/> + <field name="ROTATION_270"/> + <field name="ROTATION_90"/> + <field name="SECURE" removed="14"/> + <field name="SURACE_FROZEN" removed="14"/> + <field name="SURFACE_BLUR_FREEZE" removed="14"/> + <field name="SURFACE_DITHER" removed="14"/> + <field name="SURFACE_FROZEN" since="4" removed="14"/> + <field name="SURFACE_HIDDEN" removed="14"/> + </class> + <class name="android/view/Surface$OutOfResourcesException" since="1"> + <extends name="java/lang/Exception" removed="19"/> + <extends name="java/lang/RuntimeException" since="19"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/view/SurfaceHolder" since="1"> + <extends name="java/lang/Object"/> + <method name="addCallback(Landroid/view/SurfaceHolder$Callback;)V"/> + <method name="getSurface()Landroid/view/Surface;"/> + <method name="getSurfaceFrame()Landroid/graphics/Rect;"/> + <method name="isCreating()Z"/> + <method name="lockCanvas()Landroid/graphics/Canvas;"/> + <method name="lockCanvas(Landroid/graphics/Rect;)Landroid/graphics/Canvas;"/> + <method name="lockHardwareCanvas()Landroid/graphics/Canvas;" since="26"/> + <method name="removeCallback(Landroid/view/SurfaceHolder$Callback;)V"/> + <method name="setFixedSize(II)V"/> + <method name="setFormat(I)V"/> + <method name="setKeepScreenOn(Z)V"/> + <method name="setSizeFromLayout()V"/> + <method name="setType(I)V" deprecated="16"/> + <method name="unlockCanvasAndPost(Landroid/graphics/Canvas;)V"/> + <field name="SURFACE_TYPE_GPU" deprecated="16"/> + <field name="SURFACE_TYPE_HARDWARE" deprecated="16"/> + <field name="SURFACE_TYPE_NORMAL" deprecated="16"/> + <field name="SURFACE_TYPE_PUSH_BUFFERS" deprecated="16"/> + </class> + <class name="android/view/SurfaceHolder$BadSurfaceTypeException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/view/SurfaceHolder$Callback" since="1"> + <extends name="java/lang/Object"/> + <method name="surfaceChanged(Landroid/view/SurfaceHolder;III)V"/> + <method name="surfaceCreated(Landroid/view/SurfaceHolder;)V"/> + <method name="surfaceDestroyed(Landroid/view/SurfaceHolder;)V"/> + </class> + <class name="android/view/SurfaceHolder$Callback2" since="9"> + <extends name="java/lang/Object"/> + <implements name="android/view/SurfaceHolder$Callback"/> + <method name="surfaceRedrawNeeded(Landroid/view/SurfaceHolder;)V"/> + <method name="surfaceRedrawNeededAsync(Landroid/view/SurfaceHolder;Ljava/lang/Runnable;)V" since="26"/> + </class> + <class name="android/view/SurfaceView" since="1"> + <extends name="android/view/View"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="gatherTransparentRegion(Landroid/graphics/Region;)Z"/> + <method name="getHolder()Landroid/view/SurfaceHolder;"/> + <method name="setSecure(Z)V" since="17"/> + <method name="setZOrderMediaOverlay(Z)V" since="5"/> + <method name="setZOrderOnTop(Z)V" since="5"/> + </class> + <class name="android/view/TextureView" since="14"> + <extends name="android/view/View"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getBitmap()Landroid/graphics/Bitmap;"/> + <method name="getBitmap(II)Landroid/graphics/Bitmap;"/> + <method name="getBitmap(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap;"/> + <method name="getSurfaceTexture()Landroid/graphics/SurfaceTexture;"/> + <method name="getSurfaceTextureListener()Landroid/view/TextureView$SurfaceTextureListener;"/> + <method name="getTransform(Landroid/graphics/Matrix;)Landroid/graphics/Matrix;"/> + <method name="isAvailable()Z"/> + <method name="lockCanvas()Landroid/graphics/Canvas;"/> + <method name="lockCanvas(Landroid/graphics/Rect;)Landroid/graphics/Canvas;"/> + <method name="setOpaque(Z)V"/> + <method name="setSurfaceTexture(Landroid/graphics/SurfaceTexture;)V" since="16"/> + <method name="setSurfaceTextureListener(Landroid/view/TextureView$SurfaceTextureListener;)V"/> + <method name="setTransform(Landroid/graphics/Matrix;)V"/> + <method name="unlockCanvasAndPost(Landroid/graphics/Canvas;)V"/> + </class> + <class name="android/view/TextureView$SurfaceTextureListener" since="14"> + <extends name="java/lang/Object"/> + <method name="onSurfaceTextureAvailable(Landroid/graphics/SurfaceTexture;II)V"/> + <method name="onSurfaceTextureDestroyed(Landroid/graphics/SurfaceTexture;)Z"/> + <method name="onSurfaceTextureSizeChanged(Landroid/graphics/SurfaceTexture;II)V"/> + <method name="onSurfaceTextureUpdated(Landroid/graphics/SurfaceTexture;)V"/> + </class> + <class name="android/view/TouchDelegate" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/graphics/Rect;Landroid/view/View;)V"/> + <method name="onTouchEvent(Landroid/view/MotionEvent;)Z"/> + <field name="ABOVE"/> + <field name="BELOW"/> + <field name="TO_LEFT"/> + <field name="TO_RIGHT"/> + </class> + <class name="android/view/VelocityTracker" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addMovement(Landroid/view/MotionEvent;)V"/> + <method name="clear()V"/> + <method name="computeCurrentVelocity(I)V"/> + <method name="computeCurrentVelocity(IF)V" since="4"/> + <method name="getXVelocity()F"/> + <method name="getXVelocity(I)F" since="8"/> + <method name="getYVelocity()F"/> + <method name="getYVelocity(I)F" since="8"/> + <method name="obtain()Landroid/view/VelocityTracker;"/> + <method name="recycle()V"/> + </class> + <class name="android/view/View" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/graphics/drawable/Drawable$Callback"/> + <implements name="android/view/KeyEvent$Callback"/> + <implements name="android/view/accessibility/AccessibilityEventSource" since="4"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="addChildrenForAccessibility(Ljava/util/ArrayList;)V" since="16"/> + <method name="addExtraDataToAccessibilityNodeInfo(Landroid/view/accessibility/AccessibilityNodeInfo;Ljava/lang/String;Landroid/os/Bundle;)V" since="26"/> + <method name="addFocusables(Ljava/util/ArrayList;I)V"/> + <method name="addFocusables(Ljava/util/ArrayList;II)V" since="4"/> + <method name="addKeyboardNavigationClusters(Ljava/util/Collection;I)V" since="26"/> + <method name="addOnAttachStateChangeListener(Landroid/view/View$OnAttachStateChangeListener;)V" since="12"/> + <method name="addOnLayoutChangeListener(Landroid/view/View$OnLayoutChangeListener;)V" since="11"/> + <method name="addTouchables(Ljava/util/ArrayList;)V"/> + <method name="animate()Landroid/view/ViewPropertyAnimator;" since="12"/> + <method name="announceForAccessibility(Ljava/lang/CharSequence;)V" since="16"/> + <method name="autofill(Landroid/util/SparseArray;)V" since="26"/> + <method name="autofill(Landroid/view/autofill/AutofillValue;)V" since="26"/> + <method name="awakenScrollBars()Z" since="5"/> + <method name="awakenScrollBars(I)Z" since="5"/> + <method name="awakenScrollBars(IZ)Z" since="5"/> + <method name="bringToFront()V"/> + <method name="buildDrawingCache()V"/> + <method name="buildDrawingCache(Z)V" since="4"/> + <method name="buildLayer()V" since="12"/> + <method name="callOnClick()Z" since="15"/> + <method name="canResolveLayoutDirection()Z" since="19"/> + <method name="canResolveTextAlignment()Z" since="19"/> + <method name="canResolveTextDirection()Z" since="19"/> + <method name="canScrollHorizontally(I)Z" since="14"/> + <method name="canScrollVertically(I)Z" since="14"/> + <method name="cancelDragAndDrop()V" since="24"/> + <method name="cancelLongPress()V"/> + <method name="cancelPendingInputEvents()V" since="19"/> + <method name="checkInputConnectionProxy(Landroid/view/View;)Z" since="3"/> + <method name="clearAnimation()V"/> + <method name="clearFocus()V"/> + <method name="combineMeasuredStates(II)I" since="11"/> + <method name="computeHorizontalScrollExtent()I"/> + <method name="computeHorizontalScrollOffset()I"/> + <method name="computeHorizontalScrollRange()I"/> + <method name="computeScroll()V"/> + <method name="computeSystemWindowInsets(Landroid/view/WindowInsets;Landroid/graphics/Rect;)Landroid/view/WindowInsets;" since="21"/> + <method name="computeVerticalScrollExtent()I"/> + <method name="computeVerticalScrollOffset()I"/> + <method name="computeVerticalScrollRange()I"/> + <method name="createAccessibilityNodeInfo()Landroid/view/accessibility/AccessibilityNodeInfo;" since="14"/> + <method name="createContextMenu(Landroid/view/ContextMenu;)V"/> + <method name="destroyDrawingCache()V"/> + <method name="dispatchApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets;" since="20"/> + <method name="dispatchCapturedPointerEvent(Landroid/view/MotionEvent;)Z" since="26"/> + <method name="dispatchConfigurationChanged(Landroid/content/res/Configuration;)V" since="8"/> + <method name="dispatchDisplayHint(I)V" since="8"/> + <method name="dispatchDragEvent(Landroid/view/DragEvent;)Z" since="11"/> + <method name="dispatchDraw(Landroid/graphics/Canvas;)V"/> + <method name="dispatchDrawableHotspotChanged(FF)V" since="22"/> + <method name="dispatchFinishTemporaryDetach()V" since="24"/> + <method name="dispatchGenericFocusedEvent(Landroid/view/MotionEvent;)Z" since="14"/> + <method name="dispatchGenericMotionEvent(Landroid/view/MotionEvent;)Z" since="12"/> + <method name="dispatchGenericPointerEvent(Landroid/view/MotionEvent;)Z" since="14"/> + <method name="dispatchHoverEvent(Landroid/view/MotionEvent;)Z" since="14"/> + <method name="dispatchKeyEvent(Landroid/view/KeyEvent;)Z"/> + <method name="dispatchKeyEventPreIme(Landroid/view/KeyEvent;)Z" since="3"/> + <method name="dispatchKeyShortcutEvent(Landroid/view/KeyEvent;)Z"/> + <method name="dispatchNestedFling(FFZ)Z" since="21"/> + <method name="dispatchNestedPreFling(FF)Z" since="21"/> + <method name="dispatchNestedPrePerformAccessibilityAction(ILandroid/os/Bundle;)Z" since="22"/> + <method name="dispatchNestedPreScroll(II[I[I)Z" since="21"/> + <method name="dispatchNestedScroll(IIII[I)Z" since="21"/> + <method name="dispatchPointerCaptureChanged(Z)V" since="26"/> + <method name="dispatchPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)Z" since="4"/> + <method name="dispatchProvideAutofillStructure(Landroid/view/ViewStructure;I)V" since="26"/> + <method name="dispatchProvideStructure(Landroid/view/ViewStructure;)V" since="23"/> + <method name="dispatchRestoreInstanceState(Landroid/util/SparseArray;)V"/> + <method name="dispatchSaveInstanceState(Landroid/util/SparseArray;)V"/> + <method name="dispatchSetActivated(Z)V" since="11"/> + <method name="dispatchSetPressed(Z)V"/> + <method name="dispatchSetSelected(Z)V"/> + <method name="dispatchStartTemporaryDetach()V" since="24"/> + <method name="dispatchSystemUiVisibilityChanged(I)V" since="11"/> + <method name="dispatchTouchEvent(Landroid/view/MotionEvent;)Z"/> + <method name="dispatchTrackballEvent(Landroid/view/MotionEvent;)Z"/> + <method name="dispatchUnhandledMove(Landroid/view/View;I)Z"/> + <method name="dispatchVisibilityChanged(Landroid/view/View;I)V" since="8"/> + <method name="dispatchWindowFocusChanged(Z)V"/> + <method name="dispatchWindowSystemUiVisiblityChanged(I)V" since="16"/> + <method name="dispatchWindowVisibilityChanged(I)V"/> + <method name="draw(Landroid/graphics/Canvas;)V"/> + <method name="drawableHotspotChanged(FF)V" since="21"/> + <method name="drawableStateChanged()V"/> + <method name="findFocus()Landroid/view/View;"/> + <method name="findViewById(I)Landroid/view/View;"/> + <method name="findViewWithTag(Ljava/lang/Object;)Landroid/view/View;"/> + <method name="findViewsWithText(Ljava/util/ArrayList;Ljava/lang/CharSequence;I)V" since="14"/> + <method name="fitSystemWindows(Landroid/graphics/Rect;)Z" deprecated="20"/> + <method name="fitsSystemWindows()Z" since="14" removed="16"/> + <method name="focusSearch(I)Landroid/view/View;"/> + <method name="forceHasOverlappingRendering(Z)V" since="24"/> + <method name="forceLayout()V"/> + <method name="generateViewId()I" since="17"/> + <method name="getAccessibilityClassName()Ljava/lang/CharSequence;" since="23"/> + <method name="getAccessibilityLiveRegion()I" since="19"/> + <method name="getAccessibilityNodeProvider()Landroid/view/accessibility/AccessibilityNodeProvider;" since="16"/> + <method name="getAccessibilityTraversalAfter()I" since="22"/> + <method name="getAccessibilityTraversalBefore()I" since="22"/> + <method name="getAlpha()F" since="11"/> + <method name="getAnimation()Landroid/view/animation/Animation;"/> + <method name="getApplicationWindowToken()Landroid/os/IBinder;"/> + <method name="getAutofillHints()[Ljava/lang/String;" since="26"/> + <method name="getAutofillId()Landroid/view/autofill/AutofillId;" since="26"/> + <method name="getAutofillType()I" since="26"/> + <method name="getAutofillValue()Landroid/view/autofill/AutofillValue;" since="26"/> + <method name="getBackground()Landroid/graphics/drawable/Drawable;"/> + <method name="getBackgroundTintList()Landroid/content/res/ColorStateList;" since="21"/> + <method name="getBackgroundTintMode()Landroid/graphics/PorterDuff$Mode;" since="21"/> + <method name="getBaseline()I"/> + <method name="getBottom()I"/> + <method name="getBottomFadingEdgeStrength()F"/> + <method name="getBottomPaddingOffset()I" since="2"/> + <method name="getCameraDistance()F" since="16"/> + <method name="getClipBounds()Landroid/graphics/Rect;" since="18"/> + <method name="getClipBounds(Landroid/graphics/Rect;)Z" since="23"/> + <method name="getClipToOutline()Z" since="21"/> + <method name="getContentDescription()Ljava/lang/CharSequence;" since="4"/> + <method name="getContext()Landroid/content/Context;"/> + <method name="getContextMenuInfo()Landroid/view/ContextMenu$ContextMenuInfo;"/> + <method name="getDefaultFocusHighlightEnabled()Z" since="26"/> + <method name="getDefaultSize(II)I"/> + <method name="getDisplay()Landroid/view/Display;" since="17"/> + <method name="getDrawableState()[I"/> + <method name="getDrawingCache()Landroid/graphics/Bitmap;"/> + <method name="getDrawingCache(Z)Landroid/graphics/Bitmap;" since="4"/> + <method name="getDrawingCacheBackgroundColor()I"/> + <method name="getDrawingCacheQuality()I"/> + <method name="getDrawingRect(Landroid/graphics/Rect;)V"/> + <method name="getDrawingTime()J"/> + <method name="getElevation()F" since="21"/> + <method name="getFilterTouchesWhenObscured()Z" since="9"/> + <method name="getFitsSystemWindows()Z" since="16"/> + <method name="getFocusable()I" since="26"/> + <method name="getFocusables(I)Ljava/util/ArrayList;"/> + <method name="getFocusedRect(Landroid/graphics/Rect;)V"/> + <method name="getForeground()Landroid/graphics/drawable/Drawable;" since="23"/> + <method name="getForegroundGravity()I" since="23"/> + <method name="getForegroundTintList()Landroid/content/res/ColorStateList;" since="23"/> + <method name="getForegroundTintMode()Landroid/graphics/PorterDuff$Mode;" since="23"/> + <method name="getGlobalVisibleRect(Landroid/graphics/Rect;)Z"/> + <method name="getGlobalVisibleRect(Landroid/graphics/Rect;Landroid/graphics/Point;)Z"/> + <method name="getHandler()Landroid/os/Handler;"/> + <method name="getHasOverlappingRendering()Z" since="24"/> + <method name="getHeight()I"/> + <method name="getHitRect(Landroid/graphics/Rect;)V"/> + <method name="getHorizontalFadingEdgeLength()I"/> + <method name="getHorizontalScrollbarHeight()I"/> + <method name="getId()I"/> + <method name="getImportantForAccessibility()I" since="16"/> + <method name="getImportantForAutofill()I" since="26"/> + <method name="getKeepScreenOn()Z"/> + <method name="getKeyDispatcherState()Landroid/view/KeyEvent$DispatcherState;" since="5"/> + <method name="getLabelFor()I" since="17"/> + <method name="getLayerType()I" since="11"/> + <method name="getLayoutDirection()I" since="17"/> + <method name="getLayoutParams()Landroid/view/ViewGroup$LayoutParams;"/> + <method name="getLeft()I"/> + <method name="getLeftFadingEdgeStrength()F"/> + <method name="getLeftPaddingOffset()I" since="2"/> + <method name="getLocalVisibleRect(Landroid/graphics/Rect;)Z"/> + <method name="getLocationInWindow([I)V"/> + <method name="getLocationOnScreen([I)V"/> + <method name="getMatrix()Landroid/graphics/Matrix;" since="11"/> + <method name="getMeasuredHeight()I"/> + <method name="getMeasuredHeightAndState()I" since="11"/> + <method name="getMeasuredState()I" since="11"/> + <method name="getMeasuredWidth()I"/> + <method name="getMeasuredWidthAndState()I" since="11"/> + <method name="getMinimumHeight()I" since="16"/> + <method name="getMinimumWidth()I" since="16"/> + <method name="getNextClusterForwardId()I" since="26"/> + <method name="getNextFocusDownId()I"/> + <method name="getNextFocusForwardId()I" since="11"/> + <method name="getNextFocusLeftId()I"/> + <method name="getNextFocusRightId()I"/> + <method name="getNextFocusUpId()I"/> + <method name="getOnFocusChangeListener()Landroid/view/View$OnFocusChangeListener;"/> + <method name="getOutlineProvider()Landroid/view/ViewOutlineProvider;" since="21"/> + <method name="getOverScrollMode()I" since="9"/> + <method name="getOverlay()Landroid/view/ViewOverlay;" since="18"/> + <method name="getPaddingBottom()I"/> + <method name="getPaddingEnd()I" since="17"/> + <method name="getPaddingLeft()I"/> + <method name="getPaddingRight()I"/> + <method name="getPaddingStart()I" since="17"/> + <method name="getPaddingTop()I"/> + <method name="getParent()Landroid/view/ViewParent;"/> + <method name="getParentForAccessibility()Landroid/view/ViewParent;" since="16"/> + <method name="getPivotX()F" since="11"/> + <method name="getPivotY()F" since="11"/> + <method name="getPointerIcon()Landroid/view/PointerIcon;" since="24"/> + <method name="getResources()Landroid/content/res/Resources;"/> + <method name="getRevealOnFocusHint()Z" since="25"/> + <method name="getRight()I"/> + <method name="getRightFadingEdgeStrength()F"/> + <method name="getRightPaddingOffset()I" since="2"/> + <method name="getRootView()Landroid/view/View;"/> + <method name="getRootWindowInsets()Landroid/view/WindowInsets;" since="23"/> + <method name="getRotation()F" since="11"/> + <method name="getRotationX()F" since="11"/> + <method name="getRotationY()F" since="11"/> + <method name="getScaleX()F" since="11"/> + <method name="getScaleY()F" since="11"/> + <method name="getScrollBarDefaultDelayBeforeFade()I" since="16"/> + <method name="getScrollBarFadeDuration()I" since="16"/> + <method name="getScrollBarSize()I" since="16"/> + <method name="getScrollBarStyle()I"/> + <method name="getScrollIndicators()I" since="23"/> + <method name="getScrollX()I"/> + <method name="getScrollY()I"/> + <method name="getSolidColor()I"/> + <method name="getStateListAnimator()Landroid/animation/StateListAnimator;" since="21"/> + <method name="getSuggestedMinimumHeight()I"/> + <method name="getSuggestedMinimumWidth()I"/> + <method name="getSystemUiVisibility()I" since="11"/> + <method name="getTag()Ljava/lang/Object;"/> + <method name="getTag(I)Ljava/lang/Object;" since="4"/> + <method name="getTextAlignment()I" since="17"/> + <method name="getTextDirection()I" since="17"/> + <method name="getTooltipText()Ljava/lang/CharSequence;" since="26"/> + <method name="getTop()I"/> + <method name="getTopFadingEdgeStrength()F"/> + <method name="getTopPaddingOffset()I" since="2"/> + <method name="getTouchDelegate()Landroid/view/TouchDelegate;"/> + <method name="getTouchables()Ljava/util/ArrayList;"/> + <method name="getTransitionName()Ljava/lang/String;" since="21"/> + <method name="getTranslationX()F" since="11"/> + <method name="getTranslationY()F" since="11"/> + <method name="getTranslationZ()F" since="21"/> + <method name="getVerticalFadingEdgeLength()I"/> + <method name="getVerticalScrollbarPosition()I" since="11"/> + <method name="getVerticalScrollbarWidth()I"/> + <method name="getViewTreeObserver()Landroid/view/ViewTreeObserver;"/> + <method name="getVisibility()I"/> + <method name="getWidth()I"/> + <method name="getWindowAttachCount()I"/> + <method name="getWindowId()Landroid/view/WindowId;" since="18"/> + <method name="getWindowSystemUiVisibility()I" since="16"/> + <method name="getWindowToken()Landroid/os/IBinder;"/> + <method name="getWindowVisibility()I"/> + <method name="getWindowVisibleDisplayFrame(Landroid/graphics/Rect;)V" since="3"/> + <method name="getX()F" since="11"/> + <method name="getY()F" since="11"/> + <method name="getZ()F" since="21"/> + <method name="hasExplicitFocusable()Z" since="26"/> + <method name="hasFocus()Z"/> + <method name="hasFocusable()Z"/> + <method name="hasNestedScrollingParent()Z" since="21"/> + <method name="hasOnClickListeners()Z" since="15"/> + <method name="hasOverlappingRendering()Z" since="16"/> + <method name="hasPointerCapture()Z" since="26"/> + <method name="hasTransientState()Z" since="16"/> + <method name="hasWindowFocus()Z"/> + <method name="inflate(Landroid/content/Context;ILandroid/view/ViewGroup;)Landroid/view/View;"/> + <method name="initializeFadingEdge(Landroid/content/res/TypedArray;)V" removed="21"/> + <method name="initializeScrollbars(Landroid/content/res/TypedArray;)V" removed="21"/> + <method name="invalidate()V"/> + <method name="invalidate(IIII)V"/> + <method name="invalidate(Landroid/graphics/Rect;)V"/> + <method name="invalidateOutline()V" since="21"/> + <method name="isAccessibilityFocused()Z" since="21"/> + <method name="isActivated()Z" since="11"/> + <method name="isAttachedToWindow()Z" since="19"/> + <method name="isClickable()Z"/> + <method name="isContextClickable()Z" since="23"/> + <method name="isDirty()Z" since="11"/> + <method name="isDrawingCacheEnabled()Z"/> + <method name="isDuplicateParentStateEnabled()Z"/> + <method name="isEnabled()Z"/> + <method name="isFocusable()Z"/> + <method name="isFocusableInTouchMode()Z"/> + <method name="isFocused()Z"/> + <method name="isFocusedByDefault()Z" since="26"/> + <method name="isHapticFeedbackEnabled()Z" since="3"/> + <method name="isHardwareAccelerated()Z" since="11"/> + <method name="isHorizontalFadingEdgeEnabled()Z"/> + <method name="isHorizontalScrollBarEnabled()Z"/> + <method name="isHovered()Z" since="14"/> + <method name="isImportantForAccessibility()Z" since="21"/> + <method name="isImportantForAutofill()Z" since="26"/> + <method name="isInEditMode()Z" since="3"/> + <method name="isInLayout()Z" since="18"/> + <method name="isInTouchMode()Z"/> + <method name="isKeyboardNavigationCluster()Z" since="26"/> + <method name="isLaidOut()Z" since="19"/> + <method name="isLayoutDirectionResolved()Z" since="19"/> + <method name="isLayoutRequested()Z"/> + <method name="isLongClickable()Z"/> + <method name="isNestedScrollingEnabled()Z" since="21"/> + <method name="isOpaque()Z" since="7"/> + <method name="isPaddingOffsetRequired()Z" since="2"/> + <method name="isPaddingRelative()Z" since="17"/> + <method name="isPressed()Z"/> + <method name="isSaveEnabled()Z"/> + <method name="isSaveFromParentEnabled()Z" since="11"/> + <method name="isScrollContainer()Z" since="16"/> + <method name="isScrollbarFadingEnabled()Z" since="5"/> + <method name="isSelected()Z"/> + <method name="isShown()Z"/> + <method name="isSoundEffectsEnabled()Z"/> + <method name="isTemporarilyDetached()Z" since="24"/> + <method name="isTextAlignmentResolved()Z" since="19"/> + <method name="isTextDirectionResolved()Z" since="19"/> + <method name="isVerticalFadingEdgeEnabled()Z"/> + <method name="isVerticalScrollBarEnabled()Z"/> + <method name="jumpDrawablesToCurrentState()V" since="11"/> + <method name="keyboardNavigationClusterSearch(Landroid/view/View;I)Landroid/view/View;" since="26"/> + <method name="layout(IIII)V"/> + <method name="measure(II)V"/> + <method name="mergeDrawableStates([I[I)[I"/> + <method name="offsetLeftAndRight(I)V"/> + <method name="offsetTopAndBottom(I)V"/> + <method name="onAnimationEnd()V"/> + <method name="onAnimationStart()V"/> + <method name="onApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets;" since="20"/> + <method name="onAttachedToWindow()V"/> + <method name="onCancelPendingInputEvents()V" since="19"/> + <method name="onCapturedPointerEvent(Landroid/view/MotionEvent;)Z" since="26"/> + <method name="onCheckIsTextEditor()Z" since="3"/> + <method name="onConfigurationChanged(Landroid/content/res/Configuration;)V" since="8"/> + <method name="onCreateContextMenu(Landroid/view/ContextMenu;)V"/> + <method name="onCreateDrawableState(I)[I"/> + <method name="onCreateInputConnection(Landroid/view/inputmethod/EditorInfo;)Landroid/view/inputmethod/InputConnection;" since="3"/> + <method name="onDetachedFromWindow()V"/> + <method name="onDisplayHint(I)V" since="8"/> + <method name="onDragEvent(Landroid/view/DragEvent;)Z" since="11"/> + <method name="onDraw(Landroid/graphics/Canvas;)V"/> + <method name="onDrawForeground(Landroid/graphics/Canvas;)V" since="23"/> + <method name="onDrawScrollBars(Landroid/graphics/Canvas;)V" since="7"/> + <method name="onFilterTouchEventForSecurity(Landroid/view/MotionEvent;)Z" since="9"/> + <method name="onFinishInflate()V"/> + <method name="onFinishTemporaryDetach()V" since="3"/> + <method name="onFocusChanged(ZILandroid/graphics/Rect;)V"/> + <method name="onGenericMotionEvent(Landroid/view/MotionEvent;)Z" since="12"/> + <method name="onHoverChanged(Z)V" since="14"/> + <method name="onHoverEvent(Landroid/view/MotionEvent;)Z" since="14"/> + <method name="onInitializeAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V" since="14"/> + <method name="onInitializeAccessibilityNodeInfo(Landroid/view/accessibility/AccessibilityNodeInfo;)V" since="14"/> + <method name="onKeyPreIme(ILandroid/view/KeyEvent;)Z" since="3"/> + <method name="onKeyShortcut(ILandroid/view/KeyEvent;)Z"/> + <method name="onLayout(ZIIII)V"/> + <method name="onMeasure(II)V"/> + <method name="onOverScrolled(IIZZ)V" since="9"/> + <method name="onPointerCaptureChange(Z)V" since="26"/> + <method name="onPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V" since="14"/> + <method name="onProvideAutofillStructure(Landroid/view/ViewStructure;I)V" since="26"/> + <method name="onProvideAutofillVirtualStructure(Landroid/view/ViewStructure;I)V" since="26"/> + <method name="onProvideStructure(Landroid/view/ViewStructure;)V" since="23"/> + <method name="onProvideVirtualStructure(Landroid/view/ViewStructure;)V" since="23"/> + <method name="onResolvePointerIcon(Landroid/view/MotionEvent;I)Landroid/view/PointerIcon;" since="24"/> + <method name="onRestoreInstanceState(Landroid/os/Parcelable;)V"/> + <method name="onRtlPropertiesChanged(I)V" since="17"/> + <method name="onSaveInstanceState()Landroid/os/Parcelable;"/> + <method name="onScreenStateChanged(I)V" since="16"/> + <method name="onScrollChanged(IIII)V"/> + <method name="onSetAlpha(I)Z"/> + <method name="onSizeChanged(IIII)V"/> + <method name="onStartTemporaryDetach()V" since="3"/> + <method name="onTouchEvent(Landroid/view/MotionEvent;)Z"/> + <method name="onTrackballEvent(Landroid/view/MotionEvent;)Z"/> + <method name="onVisibilityAggregated(Z)V" since="24"/> + <method name="onVisibilityChanged(Landroid/view/View;I)V" since="8"/> + <method name="onWindowFocusChanged(Z)V"/> + <method name="onWindowSystemUiVisibilityChanged(I)V" since="16"/> + <method name="onWindowVisibilityChanged(I)V"/> + <method name="overScrollBy(IIIIIIIIZ)Z" since="9"/> + <method name="performAccessibilityAction(ILandroid/os/Bundle;)Z" since="16"/> + <method name="performClick()Z"/> + <method name="performContextClick()Z" since="23"/> + <method name="performContextClick(FF)Z" since="24"/> + <method name="performHapticFeedback(I)Z" since="3"/> + <method name="performHapticFeedback(II)Z" since="3"/> + <method name="performLongClick()Z"/> + <method name="performLongClick(FF)Z" since="24"/> + <method name="playSoundEffect(I)V"/> + <method name="post(Ljava/lang/Runnable;)Z"/> + <method name="postDelayed(Ljava/lang/Runnable;J)Z"/> + <method name="postInvalidate()V"/> + <method name="postInvalidate(IIII)V"/> + <method name="postInvalidateDelayed(J)V"/> + <method name="postInvalidateDelayed(JIIII)V"/> + <method name="postInvalidateOnAnimation()V" since="16"/> + <method name="postInvalidateOnAnimation(IIII)V" since="16"/> + <method name="postOnAnimation(Ljava/lang/Runnable;)V" since="16"/> + <method name="postOnAnimationDelayed(Ljava/lang/Runnable;J)V" since="16"/> + <method name="refreshDrawableState()V"/> + <method name="releasePointerCapture()V" since="26"/> + <method name="removeCallbacks(Ljava/lang/Runnable;)Z"/> + <method name="removeOnAttachStateChangeListener(Landroid/view/View$OnAttachStateChangeListener;)V" since="12"/> + <method name="removeOnLayoutChangeListener(Landroid/view/View$OnLayoutChangeListener;)V" since="11"/> + <method name="requestApplyInsets()V" since="20"/> + <method name="requestFitSystemWindows()V" since="16" deprecated="20"/> + <method name="requestFocus()Z"/> + <method name="requestFocus(I)Z"/> + <method name="requestFocus(ILandroid/graphics/Rect;)Z"/> + <method name="requestFocusFromTouch()Z"/> + <method name="requestLayout()V"/> + <method name="requestPointerCapture()V" since="26"/> + <method name="requestRectangleOnScreen(Landroid/graphics/Rect;)Z"/> + <method name="requestRectangleOnScreen(Landroid/graphics/Rect;Z)Z"/> + <method name="requestUnbufferedDispatch(Landroid/view/MotionEvent;)V" since="21"/> + <method name="resolveSize(II)I"/> + <method name="resolveSizeAndState(III)I" since="11"/> + <method name="restoreDefaultFocus()Z" since="26"/> + <method name="restoreHierarchyState(Landroid/util/SparseArray;)V"/> + <method name="saveHierarchyState(Landroid/util/SparseArray;)V"/> + <method name="scrollBy(II)V"/> + <method name="scrollTo(II)V"/> + <method name="setAccessibilityDelegate(Landroid/view/View$AccessibilityDelegate;)V" since="14"/> + <method name="setAccessibilityLiveRegion(I)V" since="19"/> + <method name="setAccessibilityTraversalAfter(I)V" since="22"/> + <method name="setAccessibilityTraversalBefore(I)V" since="22"/> + <method name="setActivated(Z)V" since="11"/> + <method name="setAlpha(F)V" since="11"/> + <method name="setAnimation(Landroid/view/animation/Animation;)V"/> + <method name="setAutofillHints([Ljava/lang/String;)V" since="26"/> + <method name="setBackground(Landroid/graphics/drawable/Drawable;)V" since="16"/> + <method name="setBackgroundColor(I)V"/> + <method name="setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V" deprecated="16"/> + <method name="setBackgroundResource(I)V"/> + <method name="setBackgroundTintList(Landroid/content/res/ColorStateList;)V" since="21"/> + <method name="setBackgroundTintMode(Landroid/graphics/PorterDuff$Mode;)V" since="21"/> + <method name="setBottom(I)V" since="11"/> + <method name="setCameraDistance(F)V" since="12"/> + <method name="setClickable(Z)V"/> + <method name="setClipBounds(Landroid/graphics/Rect;)V" since="18"/> + <method name="setClipToOutline(Z)V" since="21"/> + <method name="setContentDescription(Ljava/lang/CharSequence;)V" since="4"/> + <method name="setContextClickable(Z)V" since="23"/> + <method name="setDefaultFocusHighlightEnabled(Z)V" since="26"/> + <method name="setDrawingCacheBackgroundColor(I)V"/> + <method name="setDrawingCacheEnabled(Z)V"/> + <method name="setDrawingCacheQuality(I)V"/> + <method name="setDuplicateParentStateEnabled(Z)V"/> + <method name="setElevation(F)V" since="21"/> + <method name="setEnabled(Z)V"/> + <method name="setFadingEdgeLength(I)V"/> + <method name="setFilterTouchesWhenObscured(Z)V" since="9"/> + <method name="setFitsSystemWindows(Z)V" since="14"/> + <method name="setFocusable(I)V" since="26"/> + <method name="setFocusable(Z)V"/> + <method name="setFocusableInTouchMode(Z)V"/> + <method name="setFocusedByDefault(Z)V" since="26"/> + <method name="setForeground(Landroid/graphics/drawable/Drawable;)V" since="23"/> + <method name="setForegroundGravity(I)V" since="23"/> + <method name="setForegroundTintList(Landroid/content/res/ColorStateList;)V" since="23"/> + <method name="setForegroundTintMode(Landroid/graphics/PorterDuff$Mode;)V" since="23"/> + <method name="setHapticFeedbackEnabled(Z)V" since="3"/> + <method name="setHasTransientState(Z)V" since="16"/> + <method name="setHorizontalFadingEdgeEnabled(Z)V"/> + <method name="setHorizontalScrollBarEnabled(Z)V"/> + <method name="setHovered(Z)V" since="14"/> + <method name="setId(I)V"/> + <method name="setImportantForAccessibility(I)V" since="16"/> + <method name="setImportantForAutofill(I)V" since="26"/> + <method name="setKeepScreenOn(Z)V"/> + <method name="setKeyboardNavigationCluster(Z)V" since="26"/> + <method name="setLabelFor(I)V" since="17"/> + <method name="setLayerPaint(Landroid/graphics/Paint;)V" since="17"/> + <method name="setLayerType(ILandroid/graphics/Paint;)V" since="11"/> + <method name="setLayoutDirection(I)V" since="17"/> + <method name="setLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V"/> + <method name="setLeft(I)V" since="11"/> + <method name="setLongClickable(Z)V"/> + <method name="setMeasuredDimension(II)V"/> + <method name="setMinimumHeight(I)V"/> + <method name="setMinimumWidth(I)V"/> + <method name="setNestedScrollingEnabled(Z)V" since="21"/> + <method name="setNextClusterForwardId(I)V" since="26"/> + <method name="setNextFocusDownId(I)V"/> + <method name="setNextFocusForwardId(I)V" since="11"/> + <method name="setNextFocusLeftId(I)V"/> + <method name="setNextFocusRightId(I)V"/> + <method name="setNextFocusUpId(I)V"/> + <method name="setOnApplyWindowInsetsListener(Landroid/view/View$OnApplyWindowInsetsListener;)V" since="20"/> + <method name="setOnCapturedPointerListener(Landroid/view/View$OnCapturedPointerListener;)V" since="26"/> + <method name="setOnClickListener(Landroid/view/View$OnClickListener;)V"/> + <method name="setOnContextClickListener(Landroid/view/View$OnContextClickListener;)V" since="23"/> + <method name="setOnCreateContextMenuListener(Landroid/view/View$OnCreateContextMenuListener;)V"/> + <method name="setOnDragListener(Landroid/view/View$OnDragListener;)V" since="11"/> + <method name="setOnFocusChangeListener(Landroid/view/View$OnFocusChangeListener;)V"/> + <method name="setOnGenericMotionListener(Landroid/view/View$OnGenericMotionListener;)V" since="12"/> + <method name="setOnHoverListener(Landroid/view/View$OnHoverListener;)V" since="14"/> + <method name="setOnKeyListener(Landroid/view/View$OnKeyListener;)V"/> + <method name="setOnLongClickListener(Landroid/view/View$OnLongClickListener;)V"/> + <method name="setOnScrollChangeListener(Landroid/view/View$OnScrollChangeListener;)V" since="23"/> + <method name="setOnSystemUiVisibilityChangeListener(Landroid/view/View$OnSystemUiVisibilityChangeListener;)V" since="11"/> + <method name="setOnTouchListener(Landroid/view/View$OnTouchListener;)V"/> + <method name="setOutlineProvider(Landroid/view/ViewOutlineProvider;)V" since="21"/> + <method name="setOverScrollMode(I)V" since="9"/> + <method name="setPadding(IIII)V"/> + <method name="setPaddingRelative(IIII)V" since="17"/> + <method name="setPivotX(F)V" since="11"/> + <method name="setPivotY(F)V" since="11"/> + <method name="setPointerIcon(Landroid/view/PointerIcon;)V" since="24"/> + <method name="setPressed(Z)V"/> + <method name="setRevealOnFocusHint(Z)V" since="25"/> + <method name="setRight(I)V" since="11"/> + <method name="setRotation(F)V" since="11"/> + <method name="setRotationX(F)V" since="11"/> + <method name="setRotationY(F)V" since="11"/> + <method name="setSaveEnabled(Z)V"/> + <method name="setSaveFromParentEnabled(Z)V" since="11"/> + <method name="setScaleX(F)V" since="11"/> + <method name="setScaleY(F)V" since="11"/> + <method name="setScrollBarDefaultDelayBeforeFade(I)V" since="16"/> + <method name="setScrollBarFadeDuration(I)V" since="16"/> + <method name="setScrollBarSize(I)V" since="16"/> + <method name="setScrollBarStyle(I)V"/> + <method name="setScrollContainer(Z)V" since="3"/> + <method name="setScrollIndicators(I)V" since="23"/> + <method name="setScrollIndicators(II)V" since="23"/> + <method name="setScrollX(I)V" since="14"/> + <method name="setScrollY(I)V" since="14"/> + <method name="setScrollbarFadingEnabled(Z)V" since="5"/> + <method name="setSelected(Z)V"/> + <method name="setSoundEffectsEnabled(Z)V"/> + <method name="setStateListAnimator(Landroid/animation/StateListAnimator;)V" since="21"/> + <method name="setSystemUiVisibility(I)V" since="11"/> + <method name="setTag(ILjava/lang/Object;)V" since="4"/> + <method name="setTag(Ljava/lang/Object;)V"/> + <method name="setTextAlignment(I)V" since="17"/> + <method name="setTextDirection(I)V" since="17"/> + <method name="setTooltipText(Ljava/lang/CharSequence;)V" since="26"/> + <method name="setTop(I)V" since="11"/> + <method name="setTouchDelegate(Landroid/view/TouchDelegate;)V"/> + <method name="setTransitionName(Ljava/lang/String;)V" since="21"/> + <method name="setTranslationX(F)V" since="11"/> + <method name="setTranslationY(F)V" since="11"/> + <method name="setTranslationZ(F)V" since="21"/> + <method name="setVerticalFadingEdgeEnabled(Z)V"/> + <method name="setVerticalScrollBarEnabled(Z)V"/> + <method name="setVerticalScrollbarPosition(I)V" since="11"/> + <method name="setVisibility(I)V"/> + <method name="setWillNotCacheDrawing(Z)V"/> + <method name="setWillNotDraw(Z)V"/> + <method name="setX(F)V" since="11"/> + <method name="setY(F)V" since="11"/> + <method name="setZ(F)V" since="21"/> + <method name="showContextMenu()Z"/> + <method name="showContextMenu(FF)Z" since="24"/> + <method name="startActionMode(Landroid/view/ActionMode$Callback;)Landroid/view/ActionMode;" since="11"/> + <method name="startActionMode(Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode;" since="23"/> + <method name="startAnimation(Landroid/view/animation/Animation;)V"/> + <method name="startDrag(Landroid/content/ClipData;Landroid/view/View$DragShadowBuilder;Ljava/lang/Object;I)Z" since="11" deprecated="24"/> + <method name="startDragAndDrop(Landroid/content/ClipData;Landroid/view/View$DragShadowBuilder;Ljava/lang/Object;I)Z" since="24"/> + <method name="startNestedScroll(I)Z" since="21"/> + <method name="stopNestedScroll()V" since="21"/> + <method name="unscheduleDrawable(Landroid/graphics/drawable/Drawable;)V"/> + <method name="updateDragShadow(Landroid/view/View$DragShadowBuilder;)V" since="24"/> + <method name="verifyDrawable(Landroid/graphics/drawable/Drawable;)Z"/> + <method name="willNotCacheDrawing()Z"/> + <method name="willNotDraw()Z"/> + <field name="ACCESSIBILITY_LIVE_REGION_ASSERTIVE" since="19"/> + <field name="ACCESSIBILITY_LIVE_REGION_NONE" since="19"/> + <field name="ACCESSIBILITY_LIVE_REGION_POLITE" since="19"/> + <field name="ALPHA" since="14"/> + <field name="AUTOFILL_FLAG_INCLUDE_NOT_IMPORTANT_VIEWS" since="26"/> + <field name="AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE" since="26"/> + <field name="AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DAY" since="26"/> + <field name="AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_MONTH" since="26"/> + <field name="AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR" since="26"/> + <field name="AUTOFILL_HINT_CREDIT_CARD_NUMBER" since="26"/> + <field name="AUTOFILL_HINT_CREDIT_CARD_SECURITY_CODE" since="26"/> + <field name="AUTOFILL_HINT_EMAIL_ADDRESS" since="26"/> + <field name="AUTOFILL_HINT_NAME" since="26"/> + <field name="AUTOFILL_HINT_PASSWORD" since="26"/> + <field name="AUTOFILL_HINT_PHONE" since="26"/> + <field name="AUTOFILL_HINT_POSTAL_ADDRESS" since="26"/> + <field name="AUTOFILL_HINT_POSTAL_CODE" since="26"/> + <field name="AUTOFILL_HINT_USERNAME" since="26"/> + <field name="AUTOFILL_TYPE_DATE" since="26"/> + <field name="AUTOFILL_TYPE_LIST" since="26"/> + <field name="AUTOFILL_TYPE_NONE" since="26"/> + <field name="AUTOFILL_TYPE_TEXT" since="26"/> + <field name="AUTOFILL_TYPE_TOGGLE" since="26"/> + <field name="DRAG_FLAG_GLOBAL" since="24"/> + <field name="DRAG_FLAG_GLOBAL_PERSISTABLE_URI_PERMISSION" since="24"/> + <field name="DRAG_FLAG_GLOBAL_PREFIX_URI_PERMISSION" since="24"/> + <field name="DRAG_FLAG_GLOBAL_URI_READ" since="24"/> + <field name="DRAG_FLAG_GLOBAL_URI_WRITE" since="24"/> + <field name="DRAG_FLAG_OPAQUE" since="24"/> + <field name="DRAWING_CACHE_QUALITY_AUTO"/> + <field name="DRAWING_CACHE_QUALITY_HIGH"/> + <field name="DRAWING_CACHE_QUALITY_LOW"/> + <field name="EMPTY_STATE_SET"/> + <field name="ENABLED_FOCUSED_SELECTED_STATE_SET"/> + <field name="ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET"/> + <field name="ENABLED_FOCUSED_STATE_SET"/> + <field name="ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET"/> + <field name="ENABLED_SELECTED_STATE_SET"/> + <field name="ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET"/> + <field name="ENABLED_STATE_SET"/> + <field name="ENABLED_WINDOW_FOCUSED_STATE_SET"/> + <field name="FIND_VIEWS_WITH_CONTENT_DESCRIPTION" since="14"/> + <field name="FIND_VIEWS_WITH_TEXT" since="14"/> + <field name="FOCUSABLE" since="26"/> + <field name="FOCUSABLES_ALL" since="4"/> + <field name="FOCUSABLES_TOUCH_MODE" since="4"/> + <field name="FOCUSABLE_AUTO" since="26"/> + <field name="FOCUSED_SELECTED_STATE_SET"/> + <field name="FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET"/> + <field name="FOCUSED_STATE_SET"/> + <field name="FOCUSED_WINDOW_FOCUSED_STATE_SET"/> + <field name="FOCUS_BACKWARD"/> + <field name="FOCUS_DOWN"/> + <field name="FOCUS_FORWARD"/> + <field name="FOCUS_LEFT"/> + <field name="FOCUS_RIGHT"/> + <field name="FOCUS_UP"/> + <field name="GONE"/> + <field name="HAPTIC_FEEDBACK_ENABLED" since="3"/> + <field name="IMPORTANT_FOR_ACCESSIBILITY_AUTO" since="16"/> + <field name="IMPORTANT_FOR_ACCESSIBILITY_NO" since="16"/> + <field name="IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS" since="19"/> + <field name="IMPORTANT_FOR_ACCESSIBILITY_YES" since="16"/> + <field name="IMPORTANT_FOR_AUTOFILL_AUTO" since="26"/> + <field name="IMPORTANT_FOR_AUTOFILL_NO" since="26"/> + <field name="IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS" since="26"/> + <field name="IMPORTANT_FOR_AUTOFILL_YES" since="26"/> + <field name="IMPORTANT_FOR_AUTOFILL_YES_EXCLUDE_DESCENDANTS" since="26"/> + <field name="INVISIBLE"/> + <field name="KEEP_SCREEN_ON"/> + <field name="LAYER_TYPE_HARDWARE" since="11"/> + <field name="LAYER_TYPE_NONE" since="11"/> + <field name="LAYER_TYPE_SOFTWARE" since="11"/> + <field name="LAYOUT_DIRECTION_INHERIT" since="17"/> + <field name="LAYOUT_DIRECTION_LOCALE" since="17"/> + <field name="LAYOUT_DIRECTION_LTR" since="17"/> + <field name="LAYOUT_DIRECTION_RTL" since="17"/> + <field name="MEASURED_HEIGHT_STATE_SHIFT" since="11"/> + <field name="MEASURED_SIZE_MASK" since="11"/> + <field name="MEASURED_STATE_MASK" since="11"/> + <field name="MEASURED_STATE_TOO_SMALL" since="11"/> + <field name="NOT_FOCUSABLE" since="26"/> + <field name="NO_ID"/> + <field name="OVER_SCROLL_ALWAYS" since="9"/> + <field name="OVER_SCROLL_IF_CONTENT_SCROLLS" since="9"/> + <field name="OVER_SCROLL_NEVER" since="9"/> + <field name="PRESSED_ENABLED_FOCUSED_SELECTED_STATE_SET"/> + <field name="PRESSED_ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET"/> + <field name="PRESSED_ENABLED_FOCUSED_STATE_SET"/> + <field name="PRESSED_ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET"/> + <field name="PRESSED_ENABLED_SELECTED_STATE_SET"/> + <field name="PRESSED_ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET"/> + <field name="PRESSED_ENABLED_STATE_SET"/> + <field name="PRESSED_ENABLED_WINDOW_FOCUSED_STATE_SET"/> + <field name="PRESSED_FOCUSED_SELECTED_STATE_SET"/> + <field name="PRESSED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET"/> + <field name="PRESSED_FOCUSED_STATE_SET"/> + <field name="PRESSED_FOCUSED_WINDOW_FOCUSED_STATE_SET"/> + <field name="PRESSED_SELECTED_STATE_SET"/> + <field name="PRESSED_SELECTED_WINDOW_FOCUSED_STATE_SET"/> + <field name="PRESSED_STATE_SET" since="19"/> + <field name="PRESSED_WINDOW_FOCUSED_STATE_SET"/> + <field name="ROTATION" since="14"/> + <field name="ROTATION_X" since="14"/> + <field name="ROTATION_Y" since="14"/> + <field name="SCALE_X" since="14"/> + <field name="SCALE_Y" since="14"/> + <field name="SCREEN_STATE_OFF" since="16"/> + <field name="SCREEN_STATE_ON" since="16"/> + <field name="SCROLLBARS_INSIDE_INSET"/> + <field name="SCROLLBARS_INSIDE_OVERLAY"/> + <field name="SCROLLBARS_OUTSIDE_INSET"/> + <field name="SCROLLBARS_OUTSIDE_OVERLAY"/> + <field name="SCROLLBAR_POSITION_DEFAULT" since="11"/> + <field name="SCROLLBAR_POSITION_LEFT" since="11"/> + <field name="SCROLLBAR_POSITION_RIGHT" since="11"/> + <field name="SCROLL_AXIS_HORIZONTAL" since="21"/> + <field name="SCROLL_AXIS_NONE" since="21"/> + <field name="SCROLL_AXIS_VERTICAL" since="21"/> + <field name="SCROLL_INDICATOR_BOTTOM" since="23"/> + <field name="SCROLL_INDICATOR_END" since="23"/> + <field name="SCROLL_INDICATOR_LEFT" since="23"/> + <field name="SCROLL_INDICATOR_RIGHT" since="23"/> + <field name="SCROLL_INDICATOR_START" since="23"/> + <field name="SCROLL_INDICATOR_TOP" since="23"/> + <field name="SELECTED_STATE_SET"/> + <field name="SELECTED_WINDOW_FOCUSED_STATE_SET"/> + <field name="SOUND_EFFECTS_ENABLED"/> + <field name="STATUS_BAR_HIDDEN" since="11" deprecated="16"/> + <field name="STATUS_BAR_VISIBLE" since="11" deprecated="16"/> + <field name="SYSTEM_UI_FLAG_FULLSCREEN" since="16"/> + <field name="SYSTEM_UI_FLAG_HIDE_NAVIGATION" since="14"/> + <field name="SYSTEM_UI_FLAG_IMMERSIVE" since="19"/> + <field name="SYSTEM_UI_FLAG_IMMERSIVE_STICKY" since="19"/> + <field name="SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN" since="16"/> + <field name="SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION" since="16"/> + <field name="SYSTEM_UI_FLAG_LAYOUT_STABLE" since="16"/> + <field name="SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR" since="26"/> + <field name="SYSTEM_UI_FLAG_LIGHT_STATUS_BAR" since="23"/> + <field name="SYSTEM_UI_FLAG_LOW_PROFILE" since="14"/> + <field name="SYSTEM_UI_FLAG_VISIBLE" since="14"/> + <field name="SYSTEM_UI_LAYOUT_FLAGS" since="16"/> + <field name="TEXT_ALIGNMENT_CENTER" since="17"/> + <field name="TEXT_ALIGNMENT_GRAVITY" since="17"/> + <field name="TEXT_ALIGNMENT_INHERIT" since="16"/> + <field name="TEXT_ALIGNMENT_RESOLVED_DEFAULT" since="16" removed="17"/> + <field name="TEXT_ALIGNMENT_TEXT_END" since="17"/> + <field name="TEXT_ALIGNMENT_TEXT_START" since="17"/> + <field name="TEXT_ALIGNMENT_VIEW_END" since="17"/> + <field name="TEXT_ALIGNMENT_VIEW_START" since="17"/> + <field name="TEXT_DIRECTION_ANY_RTL" since="17"/> + <field name="TEXT_DIRECTION_FIRST_STRONG" since="17"/> + <field name="TEXT_DIRECTION_FIRST_STRONG_LTR" since="23"/> + <field name="TEXT_DIRECTION_FIRST_STRONG_RTL" since="23"/> + <field name="TEXT_DIRECTION_INHERIT" since="17"/> + <field name="TEXT_DIRECTION_LOCALE" since="17"/> + <field name="TEXT_DIRECTION_LTR" since="17"/> + <field name="TEXT_DIRECTION_RTL" since="17"/> + <field name="TRANSLATION_X" since="14"/> + <field name="TRANSLATION_Y" since="14"/> + <field name="TRANSLATION_Z" since="21"/> + <field name="VIEW_LOG_TAG"/> + <field name="VISIBLE"/> + <field name="WINDOW_FOCUSED_STATE_SET"/> + <field name="X" since="14"/> + <field name="Y" since="14"/> + <field name="Z" since="21"/> + </class> + <class name="android/view/View$AccessibilityDelegate" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addExtraDataToAccessibilityNodeInfo(Landroid/view/View;Landroid/view/accessibility/AccessibilityNodeInfo;Ljava/lang/String;Landroid/os/Bundle;)V" since="26"/> + <method name="dispatchPopulateAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z"/> + <method name="getAccessibilityNodeProvider(Landroid/view/View;)Landroid/view/accessibility/AccessibilityNodeProvider;" since="16"/> + <method name="onInitializeAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V"/> + <method name="onInitializeAccessibilityNodeInfo(Landroid/view/View;Landroid/view/accessibility/AccessibilityNodeInfo;)V"/> + <method name="onPopulateAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V"/> + <method name="onRequestSendAccessibilityEvent(Landroid/view/ViewGroup;Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z"/> + <method name="performAccessibilityAction(Landroid/view/View;ILandroid/os/Bundle;)Z" since="16"/> + <method name="sendAccessibilityEvent(Landroid/view/View;I)V"/> + <method name="sendAccessibilityEventUnchecked(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V"/> + </class> + <class name="android/view/View$BaseSavedState" since="1"> + <extends name="android/view/AbsSavedState"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="<init>(Landroid/os/Parcel;Ljava/lang/ClassLoader;)V" since="24"/> + <method name="<init>(Landroid/os/Parcelable;)V"/> + <field name="CREATOR"/> + </class> + <class name="android/view/View$DragShadowBuilder" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/view/View;)V"/> + <method name="getView()Landroid/view/View;"/> + <method name="onDrawShadow(Landroid/graphics/Canvas;)V"/> + <method name="onProvideShadowMetrics(Landroid/graphics/Point;Landroid/graphics/Point;)V"/> + </class> + <class name="android/view/View$MeasureSpec" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getMode(I)I"/> + <method name="getSize(I)I"/> + <method name="makeMeasureSpec(II)I"/> + <method name="toString(I)Ljava/lang/String;"/> + <field name="AT_MOST"/> + <field name="EXACTLY"/> + <field name="UNSPECIFIED"/> + </class> + <class name="android/view/View$OnApplyWindowInsetsListener" since="20"> + <extends name="java/lang/Object"/> + <method name="onApplyWindowInsets(Landroid/view/View;Landroid/view/WindowInsets;)Landroid/view/WindowInsets;"/> + </class> + <class name="android/view/View$OnAttachStateChangeListener" since="12"> + <extends name="java/lang/Object"/> + <method name="onViewAttachedToWindow(Landroid/view/View;)V"/> + <method name="onViewDetachedFromWindow(Landroid/view/View;)V"/> + </class> + <class name="android/view/View$OnCapturedPointerListener" since="26"> + <extends name="java/lang/Object"/> + <method name="onCapturedPointer(Landroid/view/View;Landroid/view/MotionEvent;)Z"/> + </class> + <class name="android/view/View$OnClickListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onClick(Landroid/view/View;)V"/> + </class> + <class name="android/view/View$OnContextClickListener" since="23"> + <extends name="java/lang/Object"/> + <method name="onContextClick(Landroid/view/View;)Z"/> + </class> + <class name="android/view/View$OnCreateContextMenuListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onCreateContextMenu(Landroid/view/ContextMenu;Landroid/view/View;Landroid/view/ContextMenu$ContextMenuInfo;)V"/> + </class> + <class name="android/view/View$OnDragListener" since="11"> + <extends name="java/lang/Object"/> + <method name="onDrag(Landroid/view/View;Landroid/view/DragEvent;)Z"/> + </class> + <class name="android/view/View$OnFocusChangeListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onFocusChange(Landroid/view/View;Z)V"/> + </class> + <class name="android/view/View$OnGenericMotionListener" since="12"> + <extends name="java/lang/Object"/> + <method name="onGenericMotion(Landroid/view/View;Landroid/view/MotionEvent;)Z"/> + </class> + <class name="android/view/View$OnHoverListener" since="14"> + <extends name="java/lang/Object"/> + <method name="onHover(Landroid/view/View;Landroid/view/MotionEvent;)Z"/> + </class> + <class name="android/view/View$OnKeyListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onKey(Landroid/view/View;ILandroid/view/KeyEvent;)Z"/> + </class> + <class name="android/view/View$OnLayoutChangeListener" since="11"> + <extends name="java/lang/Object"/> + <method name="onLayoutChange(Landroid/view/View;IIIIIIII)V"/> + </class> + <class name="android/view/View$OnLongClickListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onLongClick(Landroid/view/View;)Z"/> + </class> + <class name="android/view/View$OnScrollChangeListener" since="23"> + <extends name="java/lang/Object"/> + <method name="onScrollChange(Landroid/view/View;IIII)V"/> + </class> + <class name="android/view/View$OnSystemUiVisibilityChangeListener" since="11"> + <extends name="java/lang/Object"/> + <method name="onSystemUiVisibilityChange(I)V"/> + </class> + <class name="android/view/View$OnTouchListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onTouch(Landroid/view/View;Landroid/view/MotionEvent;)Z"/> + </class> + <class name="android/view/ViewAnimationUtils" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="createCircularReveal(Landroid/view/View;IIFF)Landroid/animation/Animator;"/> + </class> + <class name="android/view/ViewConfiguration" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V" deprecated="16"/> + <method name="get(Landroid/content/Context;)Landroid/view/ViewConfiguration;" since="3"/> + <method name="getDefaultActionModeHideDuration()J" since="23"/> + <method name="getDoubleTapTimeout()I" since="3"/> + <method name="getEdgeSlop()I" deprecated="16"/> + <method name="getFadingEdgeLength()I" deprecated="16"/> + <method name="getGlobalActionKeyTimeout()J" deprecated="20"/> + <method name="getJumpTapTimeout()I"/> + <method name="getKeyRepeatDelay()I" since="12"/> + <method name="getKeyRepeatTimeout()I" since="12"/> + <method name="getLongPressTimeout()I"/> + <method name="getMaximumDrawingCacheSize()I" deprecated="16"/> + <method name="getMaximumFlingVelocity()I" since="4" deprecated="16"/> + <method name="getMinimumFlingVelocity()I" deprecated="16"/> + <method name="getPressedStateDuration()I"/> + <method name="getScaledDoubleTapSlop()I" since="3"/> + <method name="getScaledEdgeSlop()I" since="3"/> + <method name="getScaledFadingEdgeLength()I" since="3"/> + <method name="getScaledHorizontalScrollFactor()F" since="26"/> + <method name="getScaledMaximumDrawingCacheSize()I" since="3"/> + <method name="getScaledMaximumFlingVelocity()I" since="4"/> + <method name="getScaledMinimumFlingVelocity()I" since="3"/> + <method name="getScaledOverflingDistance()I" since="9"/> + <method name="getScaledOverscrollDistance()I" since="9"/> + <method name="getScaledPagingTouchSlop()I" since="8"/> + <method name="getScaledScrollBarSize()I" since="3"/> + <method name="getScaledTouchSlop()I" since="3"/> + <method name="getScaledVerticalScrollFactor()F" since="26"/> + <method name="getScaledWindowTouchSlop()I" since="3"/> + <method name="getScrollBarFadeDuration()I" since="5"/> + <method name="getScrollBarSize()I" deprecated="16"/> + <method name="getScrollDefaultDelay()I" since="5"/> + <method name="getScrollFriction()F"/> + <method name="getTapTimeout()I"/> + <method name="getTouchSlop()I" deprecated="16"/> + <method name="getWindowTouchSlop()I" deprecated="16"/> + <method name="getZoomControlsTimeout()J"/> + <method name="hasPermanentMenuKey()Z" since="14"/> + </class> + <class name="android/view/ViewDebug" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="dumpCapturedView(Ljava/lang/String;Ljava/lang/Object;)V" since="3"/> + <method name="startHierarchyTracing(Ljava/lang/String;Landroid/view/View;)V" deprecated="16"/> + <method name="startRecyclerTracing(Ljava/lang/String;Landroid/view/View;)V" deprecated="16"/> + <method name="stopHierarchyTracing()V" deprecated="16"/> + <method name="stopRecyclerTracing()V" deprecated="16"/> + <method name="trace(Landroid/view/View;Landroid/view/ViewDebug$HierarchyTraceType;)V" deprecated="16"/> + <method name="trace(Landroid/view/View;Landroid/view/ViewDebug$RecyclerTraceType;[I)V" deprecated="16"/> + <field name="TRACE_HIERARCHY" deprecated="16"/> + <field name="TRACE_RECYCLER" deprecated="16"/> + </class> + <class name="android/view/ViewDebug$CapturedViewProperty" since="3"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + <method name="retrieveReturn()Z"/> + </class> + <class name="android/view/ViewDebug$ExportedProperty" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + <method name="category()Ljava/lang/String;" since="9"/> + <method name="deepExport()Z"/> + <method name="flagMapping()[Landroid/view/ViewDebug$FlagToString;" since="4"/> + <method name="formatToHexString()Z" since="21"/> + <method name="hasAdjacentMapping()Z" since="21"/> + <method name="indexMapping()[Landroid/view/ViewDebug$IntToString;" since="3"/> + <method name="mapping()[Landroid/view/ViewDebug$IntToString;"/> + <method name="prefix()Ljava/lang/String;"/> + <method name="resolveId()Z"/> + </class> + <class name="android/view/ViewDebug$FlagToString" since="4"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + <method name="equals()I"/> + <method name="mask()I"/> + <method name="name()Ljava/lang/String;"/> + <method name="outputIf()Z"/> + </class> + <class name="android/view/ViewDebug$HierarchyTraceType" since="1" deprecated="16"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/view/ViewDebug$HierarchyTraceType;"/> + <method name="values()[Landroid/view/ViewDebug$HierarchyTraceType;"/> + <field name="BUILD_CACHE"/> + <field name="DRAW"/> + <field name="INVALIDATE"/> + <field name="INVALIDATE_CHILD"/> + <field name="INVALIDATE_CHILD_IN_PARENT"/> + <field name="ON_LAYOUT"/> + <field name="ON_MEASURE"/> + <field name="REQUEST_LAYOUT"/> + </class> + <class name="android/view/ViewDebug$IntToString" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + <method name="from()I"/> + <method name="to()Ljava/lang/String;"/> + </class> + <class name="android/view/ViewDebug$RecyclerTraceType" since="1" deprecated="16"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/view/ViewDebug$RecyclerTraceType;"/> + <method name="values()[Landroid/view/ViewDebug$RecyclerTraceType;"/> + <field name="BIND_VIEW"/> + <field name="MOVE_FROM_ACTIVE_TO_SCRAP_HEAP"/> + <field name="MOVE_TO_ACTIVE_HEAP" removed="8"/> + <field name="MOVE_TO_SCRAP_HEAP"/> + <field name="NEW_VIEW"/> + <field name="RECYCLE_FROM_ACTIVE_HEAP"/> + <field name="RECYCLE_FROM_SCRAP_HEAP"/> + </class> + <class name="android/view/ViewGroup" since="1"> + <extends name="android/view/View"/> + <implements name="android/view/ViewManager"/> + <implements name="android/view/ViewParent"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="addStatesFromChildren()Z"/> + <method name="addView(Landroid/view/View;)V"/> + <method name="addView(Landroid/view/View;I)V"/> + <method name="addView(Landroid/view/View;II)V"/> + <method name="addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V"/> + <method name="addViewInLayout(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)Z"/> + <method name="addViewInLayout(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;Z)Z"/> + <method name="attachLayoutAnimationParameters(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;II)V"/> + <method name="attachViewToParent(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V"/> + <method name="canAnimate()Z"/> + <method name="checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z"/> + <method name="cleanupLayoutState(Landroid/view/View;)V"/> + <method name="clearDisappearingChildren()V"/> + <method name="debug(I)V"/> + <method name="detachAllViewsFromParent()V"/> + <method name="detachViewFromParent(I)V"/> + <method name="detachViewFromParent(Landroid/view/View;)V"/> + <method name="detachViewsFromParent(II)V"/> + <method name="dispatchFreezeSelfOnly(Landroid/util/SparseArray;)V"/> + <method name="dispatchThawSelfOnly(Landroid/util/SparseArray;)V"/> + <method name="drawChild(Landroid/graphics/Canvas;Landroid/view/View;J)Z"/> + <method name="endViewTransition(Landroid/view/View;)V" since="11"/> + <method name="gatherTransparentRegion(Landroid/graphics/Region;)Z"/> + <method name="generateDefaultLayoutParams()Landroid/view/ViewGroup$LayoutParams;"/> + <method name="generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams;"/> + <method name="generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroid/view/ViewGroup$LayoutParams;"/> + <method name="getChildAt(I)Landroid/view/View;"/> + <method name="getChildCount()I"/> + <method name="getChildDrawingOrder(II)I"/> + <method name="getChildMeasureSpec(III)I"/> + <method name="getChildStaticTransformation(Landroid/view/View;Landroid/view/animation/Transformation;)Z"/> + <method name="getClipChildren()Z" since="18"/> + <method name="getClipToPadding()Z" since="21"/> + <method name="getDescendantFocusability()I"/> + <method name="getFocusedChild()Landroid/view/View;"/> + <method name="getLayoutAnimation()Landroid/view/animation/LayoutAnimationController;"/> + <method name="getLayoutAnimationListener()Landroid/view/animation/Animation$AnimationListener;"/> + <method name="getLayoutMode()I" since="18"/> + <method name="getLayoutTransition()Landroid/animation/LayoutTransition;" since="11"/> + <method name="getNestedScrollAxes()I" since="21"/> + <method name="getOverlay()Landroid/view/ViewGroupOverlay;" since="18"/> + <method name="getPersistentDrawingCache()I"/> + <method name="getTouchscreenBlocksFocus()Z" since="21"/> + <method name="indexOfChild(Landroid/view/View;)I"/> + <method name="isAlwaysDrawnWithCacheEnabled()Z" deprecated="23"/> + <method name="isAnimationCacheEnabled()Z" deprecated="23"/> + <method name="isChildrenDrawingOrderEnabled()Z" since="7"/> + <method name="isChildrenDrawnWithCacheEnabled()Z" deprecated="23"/> + <method name="isMotionEventSplittingEnabled()Z" since="11"/> + <method name="isTransitionGroup()Z" since="21"/> + <method name="measureChild(Landroid/view/View;II)V"/> + <method name="measureChildWithMargins(Landroid/view/View;IIII)V"/> + <method name="measureChildren(II)V"/> + <method name="offsetDescendantRectToMyCoords(Landroid/view/View;Landroid/graphics/Rect;)V"/> + <method name="offsetRectIntoDescendantCoords(Landroid/view/View;Landroid/graphics/Rect;)V"/> + <method name="onInterceptHoverEvent(Landroid/view/MotionEvent;)Z" since="14"/> + <method name="onInterceptTouchEvent(Landroid/view/MotionEvent;)Z"/> + <method name="onRequestFocusInDescendants(ILandroid/graphics/Rect;)Z"/> + <method name="onRequestSendAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z" since="14"/> + <method name="onViewAdded(Landroid/view/View;)V" since="23"/> + <method name="onViewRemoved(Landroid/view/View;)V" since="23"/> + <method name="removeAllViews()V"/> + <method name="removeAllViewsInLayout()V"/> + <method name="removeDetachedView(Landroid/view/View;Z)V"/> + <method name="removeViewAt(I)V"/> + <method name="removeViewInLayout(Landroid/view/View;)V"/> + <method name="removeViews(II)V"/> + <method name="removeViewsInLayout(II)V"/> + <method name="requestChildRectangleOnScreen(Landroid/view/View;Landroid/graphics/Rect;Z)Z"/> + <method name="resetResolvedLayoutDirection()V" since="14" removed="16"/> + <method name="resetResolvedTextDirection()V" since="14" removed="16"/> + <method name="scheduleLayoutAnimation()V"/> + <method name="setAddStatesFromChildren(Z)V"/> + <method name="setAlwaysDrawnWithCacheEnabled(Z)V" deprecated="23"/> + <method name="setAnimationCacheEnabled(Z)V" deprecated="23"/> + <method name="setChildrenDrawingCacheEnabled(Z)V"/> + <method name="setChildrenDrawingOrderEnabled(Z)V" since="7"/> + <method name="setChildrenDrawnWithCacheEnabled(Z)V" deprecated="23"/> + <method name="setClipChildren(Z)V"/> + <method name="setClipToPadding(Z)V"/> + <method name="setDescendantFocusability(I)V"/> + <method name="setLayoutAnimation(Landroid/view/animation/LayoutAnimationController;)V"/> + <method name="setLayoutAnimationListener(Landroid/view/animation/Animation$AnimationListener;)V"/> + <method name="setLayoutMode(I)V" since="18"/> + <method name="setLayoutTransition(Landroid/animation/LayoutTransition;)V" since="11"/> + <method name="setMotionEventSplittingEnabled(Z)V" since="11"/> + <method name="setOnHierarchyChangeListener(Landroid/view/ViewGroup$OnHierarchyChangeListener;)V"/> + <method name="setPersistentDrawingCache(I)V"/> + <method name="setStaticTransformationsEnabled(Z)V" since="3"/> + <method name="setTouchscreenBlocksFocus(Z)V" since="21"/> + <method name="setTransitionGroup(Z)V" since="21"/> + <method name="shouldDelayChildPressedState()Z" since="14"/> + <method name="startLayoutAnimation()V"/> + <method name="startViewTransition(Landroid/view/View;)V" since="11"/> + <field name="CLIP_TO_PADDING_MASK"/> + <field name="FLAG_USE_CHILD_DRAWING_ORDER" removed="7"/> + <field name="FOCUS_AFTER_DESCENDANTS"/> + <field name="FOCUS_BEFORE_DESCENDANTS"/> + <field name="FOCUS_BLOCK_DESCENDANTS"/> + <field name="LAYOUT_MODE_CLIP_BOUNDS" since="18"/> + <field name="LAYOUT_MODE_OPTICAL_BOUNDS" since="18"/> + <field name="PERSISTENT_ALL_CACHES"/> + <field name="PERSISTENT_ANIMATION_CACHE"/> + <field name="PERSISTENT_NO_CACHE"/> + <field name="PERSISTENT_SCROLLING_CACHE"/> + </class> + <class name="android/view/ViewGroup$LayoutParams" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(II)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/view/ViewGroup$LayoutParams;)V"/> + <method name="resolveLayoutDirection(I)V" since="17"/> + <method name="setBaseAttributes(Landroid/content/res/TypedArray;II)V"/> + <field name="FILL_PARENT" deprecated="16"/> + <field name="MATCH_PARENT" since="8"/> + <field name="WRAP_CONTENT"/> + <field name="height"/> + <field name="layoutAnimationParameters"/> + <field name="width"/> + </class> + <class name="android/view/ViewGroup$MarginLayoutParams" since="1"> + <extends name="android/view/ViewGroup$LayoutParams"/> + <method name="<init>(II)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/view/ViewGroup$LayoutParams;)V"/> + <method name="<init>(Landroid/view/ViewGroup$MarginLayoutParams;)V"/> + <method name="getLayoutDirection()I" since="17"/> + <method name="getMarginEnd()I" since="17"/> + <method name="getMarginStart()I" since="17"/> + <method name="isMarginRelative()Z" since="17"/> + <method name="setLayoutDirection(I)V" since="17"/> + <method name="setMarginEnd(I)V" since="17"/> + <method name="setMarginStart(I)V" since="17"/> + <method name="setMargins(IIII)V"/> + <field name="bottomMargin"/> + <field name="leftMargin"/> + <field name="rightMargin"/> + <field name="topMargin"/> + </class> + <class name="android/view/ViewGroup$OnHierarchyChangeListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onChildViewAdded(Landroid/view/View;Landroid/view/View;)V"/> + <method name="onChildViewRemoved(Landroid/view/View;Landroid/view/View;)V"/> + </class> + <class name="android/view/ViewGroupOverlay" since="18"> + <extends name="android/view/ViewOverlay"/> + <method name="<init>()V"/> + <method name="add(Landroid/view/View;)V"/> + <method name="remove(Landroid/view/View;)V"/> + </class> + <class name="android/view/ViewManager" since="1"> + <extends name="java/lang/Object"/> + <method name="addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V"/> + <method name="removeView(Landroid/view/View;)V"/> + <method name="updateViewLayout(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V"/> + </class> + <class name="android/view/ViewOutlineProvider" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getOutline(Landroid/view/View;Landroid/graphics/Outline;)V"/> + <field name="BACKGROUND"/> + <field name="BOUNDS"/> + <field name="PADDED_BOUNDS"/> + </class> + <class name="android/view/ViewOverlay" since="18"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="add(Landroid/graphics/drawable/Drawable;)V"/> + <method name="clear()V"/> + <method name="remove(Landroid/graphics/drawable/Drawable;)V"/> + </class> + <class name="android/view/ViewParent" since="1"> + <extends name="java/lang/Object"/> + <method name="bringChildToFront(Landroid/view/View;)V"/> + <method name="canResolveLayoutDirection()Z" since="19"/> + <method name="canResolveTextAlignment()Z" since="19"/> + <method name="canResolveTextDirection()Z" since="19"/> + <method name="childDrawableStateChanged(Landroid/view/View;)V"/> + <method name="childHasTransientStateChanged(Landroid/view/View;Z)V" since="19"/> + <method name="clearChildFocus(Landroid/view/View;)V"/> + <method name="createContextMenu(Landroid/view/ContextMenu;)V"/> + <method name="focusSearch(Landroid/view/View;I)Landroid/view/View;"/> + <method name="focusableViewAvailable(Landroid/view/View;)V"/> + <method name="getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;)Z"/> + <method name="getLayoutDirection()I" since="19"/> + <method name="getParent()Landroid/view/ViewParent;"/> + <method name="getParentForAccessibility()Landroid/view/ViewParent;" since="16"/> + <method name="getTextAlignment()I" since="19"/> + <method name="getTextDirection()I" since="19"/> + <method name="invalidateChild(Landroid/view/View;Landroid/graphics/Rect;)V" deprecated="26"/> + <method name="invalidateChildInParent([ILandroid/graphics/Rect;)Landroid/view/ViewParent;" deprecated="26"/> + <method name="isLayoutDirectionResolved()Z" since="19"/> + <method name="isLayoutRequested()Z"/> + <method name="isTextAlignmentResolved()Z" since="19"/> + <method name="isTextDirectionResolved()Z" since="19"/> + <method name="keyboardNavigationClusterSearch(Landroid/view/View;I)Landroid/view/View;" since="26"/> + <method name="notifySubtreeAccessibilityStateChanged(Landroid/view/View;Landroid/view/View;I)V" since="19"/> + <method name="onDescendantInvalidated(Landroid/view/View;Landroid/view/View;)V" since="26"/> + <method name="onNestedFling(Landroid/view/View;FFZ)Z" since="21"/> + <method name="onNestedPreFling(Landroid/view/View;FF)Z" since="21"/> + <method name="onNestedPrePerformAccessibilityAction(Landroid/view/View;ILandroid/os/Bundle;)Z" since="22"/> + <method name="onNestedPreScroll(Landroid/view/View;II[I)V" since="21"/> + <method name="onNestedScroll(Landroid/view/View;IIII)V" since="21"/> + <method name="onNestedScrollAccepted(Landroid/view/View;Landroid/view/View;I)V" since="21"/> + <method name="onStartNestedScroll(Landroid/view/View;Landroid/view/View;I)Z" since="21"/> + <method name="onStopNestedScroll(Landroid/view/View;)V" since="21"/> + <method name="recomputeViewAttributes(Landroid/view/View;)V"/> + <method name="requestChildFocus(Landroid/view/View;Landroid/view/View;)V"/> + <method name="requestChildRectangleOnScreen(Landroid/view/View;Landroid/graphics/Rect;Z)Z" since="3"/> + <method name="requestDisallowInterceptTouchEvent(Z)V"/> + <method name="requestFitSystemWindows()V" since="16"/> + <method name="requestLayout()V"/> + <method name="requestSendAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z" since="14"/> + <method name="requestTransparentRegion(Landroid/view/View;)V"/> + <method name="showContextMenuForChild(Landroid/view/View;)Z"/> + <method name="showContextMenuForChild(Landroid/view/View;FF)Z" since="24"/> + <method name="startActionModeForChild(Landroid/view/View;Landroid/view/ActionMode$Callback;)Landroid/view/ActionMode;" since="11"/> + <method name="startActionModeForChild(Landroid/view/View;Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode;" since="23"/> + </class> + <class name="android/view/ViewPropertyAnimator" since="12"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="alpha(F)Landroid/view/ViewPropertyAnimator;"/> + <method name="alphaBy(F)Landroid/view/ViewPropertyAnimator;"/> + <method name="cancel()V" since="14"/> + <method name="getDuration()J" since="14"/> + <method name="getInterpolator()Landroid/animation/TimeInterpolator;" since="18"/> + <method name="getStartDelay()J" since="14"/> + <method name="rotation(F)Landroid/view/ViewPropertyAnimator;"/> + <method name="rotationBy(F)Landroid/view/ViewPropertyAnimator;"/> + <method name="rotationX(F)Landroid/view/ViewPropertyAnimator;"/> + <method name="rotationXBy(F)Landroid/view/ViewPropertyAnimator;"/> + <method name="rotationY(F)Landroid/view/ViewPropertyAnimator;"/> + <method name="rotationYBy(F)Landroid/view/ViewPropertyAnimator;"/> + <method name="scaleX(F)Landroid/view/ViewPropertyAnimator;"/> + <method name="scaleXBy(F)Landroid/view/ViewPropertyAnimator;"/> + <method name="scaleY(F)Landroid/view/ViewPropertyAnimator;"/> + <method name="scaleYBy(F)Landroid/view/ViewPropertyAnimator;"/> + <method name="setDuration(J)Landroid/view/ViewPropertyAnimator;"/> + <method name="setInterpolator(Landroid/animation/TimeInterpolator;)Landroid/view/ViewPropertyAnimator;"/> + <method name="setListener(Landroid/animation/Animator$AnimatorListener;)Landroid/view/ViewPropertyAnimator;"/> + <method name="setStartDelay(J)Landroid/view/ViewPropertyAnimator;" since="14"/> + <method name="setUpdateListener(Landroid/animation/ValueAnimator$AnimatorUpdateListener;)Landroid/view/ViewPropertyAnimator;" since="19"/> + <method name="start()V" since="14"/> + <method name="translationX(F)Landroid/view/ViewPropertyAnimator;"/> + <method name="translationXBy(F)Landroid/view/ViewPropertyAnimator;"/> + <method name="translationY(F)Landroid/view/ViewPropertyAnimator;"/> + <method name="translationYBy(F)Landroid/view/ViewPropertyAnimator;"/> + <method name="translationZ(F)Landroid/view/ViewPropertyAnimator;" since="21"/> + <method name="translationZBy(F)Landroid/view/ViewPropertyAnimator;" since="21"/> + <method name="withEndAction(Ljava/lang/Runnable;)Landroid/view/ViewPropertyAnimator;" since="16"/> + <method name="withLayer()Landroid/view/ViewPropertyAnimator;" since="16"/> + <method name="withStartAction(Ljava/lang/Runnable;)Landroid/view/ViewPropertyAnimator;" since="16"/> + <method name="x(F)Landroid/view/ViewPropertyAnimator;"/> + <method name="xBy(F)Landroid/view/ViewPropertyAnimator;"/> + <method name="y(F)Landroid/view/ViewPropertyAnimator;"/> + <method name="yBy(F)Landroid/view/ViewPropertyAnimator;"/> + <method name="z(F)Landroid/view/ViewPropertyAnimator;" since="21"/> + <method name="zBy(F)Landroid/view/ViewPropertyAnimator;" since="21"/> + </class> + <class name="android/view/ViewStructure" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addChildCount(I)I"/> + <method name="asyncCommit()V"/> + <method name="asyncNewChild(I)Landroid/view/ViewStructure;"/> + <method name="getAutofillId()Landroid/view/autofill/AutofillId;" since="26"/> + <method name="getChildCount()I"/> + <method name="getExtras()Landroid/os/Bundle;"/> + <method name="getHint()Ljava/lang/CharSequence;"/> + <method name="getText()Ljava/lang/CharSequence;"/> + <method name="getTextSelectionEnd()I"/> + <method name="getTextSelectionStart()I"/> + <method name="hasExtras()Z"/> + <method name="newChild(I)Landroid/view/ViewStructure;"/> + <method name="newHtmlInfoBuilder(Ljava/lang/String;)Landroid/view/ViewStructure$HtmlInfo$Builder;" since="26"/> + <method name="setAccessibilityFocused(Z)V"/> + <method name="setActivated(Z)V"/> + <method name="setAlpha(F)V"/> + <method name="setAutofillHints([Ljava/lang/String;)V" since="26"/> + <method name="setAutofillId(Landroid/view/autofill/AutofillId;)V" since="26"/> + <method name="setAutofillId(Landroid/view/autofill/AutofillId;I)V" since="26"/> + <method name="setAutofillOptions([Ljava/lang/CharSequence;)V" since="26"/> + <method name="setAutofillType(I)V" since="26"/> + <method name="setAutofillValue(Landroid/view/autofill/AutofillValue;)V" since="26"/> + <method name="setCheckable(Z)V"/> + <method name="setChecked(Z)V"/> + <method name="setChildCount(I)V"/> + <method name="setClassName(Ljava/lang/String;)V"/> + <method name="setClickable(Z)V"/> + <method name="setContentDescription(Ljava/lang/CharSequence;)V"/> + <method name="setContextClickable(Z)V"/> + <method name="setDataIsSensitive(Z)V" since="26"/> + <method name="setDimens(IIIIII)V"/> + <method name="setElevation(F)V"/> + <method name="setEnabled(Z)V"/> + <method name="setFocusable(Z)V"/> + <method name="setFocused(Z)V"/> + <method name="setHint(Ljava/lang/CharSequence;)V"/> + <method name="setHtmlInfo(Landroid/view/ViewStructure$HtmlInfo;)V" since="26"/> + <method name="setId(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="setInputType(I)V" since="26"/> + <method name="setLocaleList(Landroid/os/LocaleList;)V" since="26"/> + <method name="setLongClickable(Z)V"/> + <method name="setOpaque(Z)V" since="26"/> + <method name="setSelected(Z)V"/> + <method name="setText(Ljava/lang/CharSequence;)V"/> + <method name="setText(Ljava/lang/CharSequence;II)V"/> + <method name="setTextLines([I[I)V"/> + <method name="setTextStyle(FIII)V"/> + <method name="setTransformation(Landroid/graphics/Matrix;)V"/> + <method name="setVisibility(I)V"/> + <method name="setWebDomain(Ljava/lang/String;)V" since="26"/> + </class> + <class name="android/view/ViewStructure$HtmlInfo" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAttributes()Ljava/util/List;"/> + <method name="getTag()Ljava/lang/String;"/> + </class> + <class name="android/view/ViewStructure$HtmlInfo$Builder" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addAttribute(Ljava/lang/String;Ljava/lang/String;)Landroid/view/ViewStructure$HtmlInfo$Builder;"/> + <method name="build()Landroid/view/ViewStructure$HtmlInfo;"/> + </class> + <class name="android/view/ViewStub" since="1"> + <extends name="android/view/View"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getInflatedId()I"/> + <method name="getLayoutInflater()Landroid/view/LayoutInflater;" since="16"/> + <method name="getLayoutResource()I"/> + <method name="inflate()Landroid/view/View;"/> + <method name="setInflatedId(I)V"/> + <method name="setLayoutInflater(Landroid/view/LayoutInflater;)V" since="16"/> + <method name="setLayoutResource(I)V"/> + <method name="setOnInflateListener(Landroid/view/ViewStub$OnInflateListener;)V"/> + </class> + <class name="android/view/ViewStub$OnInflateListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onInflate(Landroid/view/ViewStub;Landroid/view/View;)V"/> + </class> + <class name="android/view/ViewTreeObserver" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addOnDrawListener(Landroid/view/ViewTreeObserver$OnDrawListener;)V" since="16"/> + <method name="addOnGlobalFocusChangeListener(Landroid/view/ViewTreeObserver$OnGlobalFocusChangeListener;)V"/> + <method name="addOnGlobalLayoutListener(Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;)V"/> + <method name="addOnPreDrawListener(Landroid/view/ViewTreeObserver$OnPreDrawListener;)V"/> + <method name="addOnScrollChangedListener(Landroid/view/ViewTreeObserver$OnScrollChangedListener;)V" since="3"/> + <method name="addOnTouchModeChangeListener(Landroid/view/ViewTreeObserver$OnTouchModeChangeListener;)V"/> + <method name="addOnWindowAttachListener(Landroid/view/ViewTreeObserver$OnWindowAttachListener;)V" since="18"/> + <method name="addOnWindowFocusChangeListener(Landroid/view/ViewTreeObserver$OnWindowFocusChangeListener;)V" since="18"/> + <method name="dispatchOnDraw()V" since="16"/> + <method name="dispatchOnGlobalLayout()V"/> + <method name="dispatchOnPreDraw()Z"/> + <method name="isAlive()Z"/> + <method name="removeGlobalOnLayoutListener(Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;)V" deprecated="16"/> + <method name="removeOnDrawListener(Landroid/view/ViewTreeObserver$OnDrawListener;)V" since="16"/> + <method name="removeOnGlobalFocusChangeListener(Landroid/view/ViewTreeObserver$OnGlobalFocusChangeListener;)V"/> + <method name="removeOnGlobalLayoutListener(Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;)V" since="16"/> + <method name="removeOnPreDrawListener(Landroid/view/ViewTreeObserver$OnPreDrawListener;)V"/> + <method name="removeOnScrollChangedListener(Landroid/view/ViewTreeObserver$OnScrollChangedListener;)V" since="3"/> + <method name="removeOnTouchModeChangeListener(Landroid/view/ViewTreeObserver$OnTouchModeChangeListener;)V"/> + <method name="removeOnWindowAttachListener(Landroid/view/ViewTreeObserver$OnWindowAttachListener;)V" since="18"/> + <method name="removeOnWindowFocusChangeListener(Landroid/view/ViewTreeObserver$OnWindowFocusChangeListener;)V" since="18"/> + </class> + <class name="android/view/ViewTreeObserver$OnDrawListener" since="16"> + <extends name="java/lang/Object"/> + <method name="onDraw()V"/> + </class> + <class name="android/view/ViewTreeObserver$OnGlobalFocusChangeListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onGlobalFocusChanged(Landroid/view/View;Landroid/view/View;)V"/> + </class> + <class name="android/view/ViewTreeObserver$OnGlobalLayoutListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onGlobalLayout()V"/> + </class> + <class name="android/view/ViewTreeObserver$OnPreDrawListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onPreDraw()Z"/> + </class> + <class name="android/view/ViewTreeObserver$OnScrollChangedListener" since="3"> + <extends name="java/lang/Object"/> + <method name="onScrollChanged()V"/> + </class> + <class name="android/view/ViewTreeObserver$OnTouchModeChangeListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onTouchModeChanged(Z)V"/> + </class> + <class name="android/view/ViewTreeObserver$OnWindowAttachListener" since="18"> + <extends name="java/lang/Object"/> + <method name="onWindowAttached()V"/> + <method name="onWindowDetached()V"/> + </class> + <class name="android/view/ViewTreeObserver$OnWindowFocusChangeListener" since="18"> + <extends name="java/lang/Object"/> + <method name="onWindowFocusChanged(Z)V"/> + </class> + <class name="android/view/Window" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="addContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V"/> + <method name="addFlags(I)V"/> + <method name="addOnFrameMetricsAvailableListener(Landroid/view/Window$OnFrameMetricsAvailableListener;Landroid/os/Handler;)V" since="24"/> + <method name="clearFlags(I)V"/> + <method name="closeAllPanels()V"/> + <method name="closePanel(I)V"/> + <method name="findViewById(I)Landroid/view/View;"/> + <method name="getAllowEnterTransitionOverlap()Z" since="21"/> + <method name="getAllowReturnTransitionOverlap()Z" since="21"/> + <method name="getAttributes()Landroid/view/WindowManager$LayoutParams;"/> + <method name="getCallback()Landroid/view/Window$Callback;"/> + <method name="getColorMode()I" since="26"/> + <method name="getContainer()Landroid/view/Window;"/> + <method name="getContentScene()Landroid/transition/Scene;" since="21"/> + <method name="getContext()Landroid/content/Context;"/> + <method name="getCurrentFocus()Landroid/view/View;"/> + <method name="getDecorView()Landroid/view/View;"/> + <method name="getDefaultFeatures(Landroid/content/Context;)I" since="22"/> + <method name="getEnterTransition()Landroid/transition/Transition;" since="21"/> + <method name="getExitTransition()Landroid/transition/Transition;" since="21"/> + <method name="getFeatures()I"/> + <method name="getForcedWindowFlags()I"/> + <method name="getLayoutInflater()Landroid/view/LayoutInflater;"/> + <method name="getLocalFeatures()I"/> + <method name="getMediaController()Landroid/media/session/MediaController;" since="21"/> + <method name="getNavigationBarColor()I" since="21"/> + <method name="getReenterTransition()Landroid/transition/Transition;" since="21"/> + <method name="getReturnTransition()Landroid/transition/Transition;" since="21"/> + <method name="getSharedElementEnterTransition()Landroid/transition/Transition;" since="21"/> + <method name="getSharedElementExitTransition()Landroid/transition/Transition;" since="21"/> + <method name="getSharedElementReenterTransition()Landroid/transition/Transition;" since="21"/> + <method name="getSharedElementReturnTransition()Landroid/transition/Transition;" since="21"/> + <method name="getSharedElementsUseOverlay()Z" since="21"/> + <method name="getStatusBarColor()I" since="21"/> + <method name="getTransitionBackgroundFadeDuration()J" since="21"/> + <method name="getTransitionManager()Landroid/transition/TransitionManager;" since="21"/> + <method name="getVolumeControlStream()I"/> + <method name="getWindowManager()Landroid/view/WindowManager;"/> + <method name="getWindowStyle()Landroid/content/res/TypedArray;"/> + <method name="hasChildren()Z"/> + <method name="hasFeature(I)Z" since="11"/> + <method name="hasSoftInputMode()Z" since="3"/> + <method name="injectInputEvent(Landroid/view/InputEvent;)V" since="19"/> + <method name="invalidatePanelMenu(I)V" since="11"/> + <method name="isActive()Z"/> + <method name="isFloating()Z"/> + <method name="isShortcutKey(ILandroid/view/KeyEvent;)Z"/> + <method name="makeActive()V"/> + <method name="onActive()V"/> + <method name="onConfigurationChanged(Landroid/content/res/Configuration;)V"/> + <method name="openPanel(ILandroid/view/KeyEvent;)V"/> + <method name="peekDecorView()Landroid/view/View;"/> + <method name="performContextMenuIdentifierAction(II)Z"/> + <method name="performPanelIdentifierAction(III)Z"/> + <method name="performPanelShortcut(IILandroid/view/KeyEvent;I)Z"/> + <method name="removeOnFrameMetricsAvailableListener(Landroid/view/Window$OnFrameMetricsAvailableListener;)V" since="24"/> + <method name="requestFeature(I)Z"/> + <method name="restoreHierarchyState(Landroid/os/Bundle;)V"/> + <method name="saveHierarchyState()Landroid/os/Bundle;"/> + <method name="setAllowEnterTransitionOverlap(Z)V" since="21"/> + <method name="setAllowReturnTransitionOverlap(Z)V" since="21"/> + <method name="setAttributes(Landroid/view/WindowManager$LayoutParams;)V"/> + <method name="setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V"/> + <method name="setBackgroundDrawableResource(I)V"/> + <method name="setCallback(Landroid/view/Window$Callback;)V"/> + <method name="setChildDrawable(ILandroid/graphics/drawable/Drawable;)V"/> + <method name="setChildInt(II)V"/> + <method name="setClipToOutline(Z)V" since="22"/> + <method name="setColorMode(I)V" since="26"/> + <method name="setContainer(Landroid/view/Window;)V"/> + <method name="setContentView(I)V"/> + <method name="setContentView(Landroid/view/View;)V"/> + <method name="setContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V"/> + <method name="setDecorCaptionShade(I)V" since="24"/> + <method name="setDefaultWindowFormat(I)V"/> + <method name="setDimAmount(F)V" since="14"/> + <method name="setElevation(F)V" since="22"/> + <method name="setEnterTransition(Landroid/transition/Transition;)V" since="21"/> + <method name="setExitTransition(Landroid/transition/Transition;)V" since="21"/> + <method name="setFeatureDrawable(ILandroid/graphics/drawable/Drawable;)V"/> + <method name="setFeatureDrawableAlpha(II)V"/> + <method name="setFeatureDrawableResource(II)V"/> + <method name="setFeatureDrawableUri(ILandroid/net/Uri;)V"/> + <method name="setFeatureInt(II)V"/> + <method name="setFlags(II)V"/> + <method name="setFormat(I)V"/> + <method name="setGravity(I)V"/> + <method name="setIcon(I)V" since="19"/> + <method name="setLayout(II)V"/> + <method name="setLocalFocus(ZZ)V" since="19"/> + <method name="setLogo(I)V" since="19"/> + <method name="setMediaController(Landroid/media/session/MediaController;)V" since="21"/> + <method name="setNavigationBarColor(I)V" since="21"/> + <method name="setReenterTransition(Landroid/transition/Transition;)V" since="21"/> + <method name="setResizingCaptionDrawable(Landroid/graphics/drawable/Drawable;)V" since="24"/> + <method name="setRestrictedCaptionAreaListener(Landroid/view/Window$OnRestrictedCaptionAreaChangedListener;)V" since="24"/> + <method name="setReturnTransition(Landroid/transition/Transition;)V" since="21"/> + <method name="setSharedElementEnterTransition(Landroid/transition/Transition;)V" since="21"/> + <method name="setSharedElementExitTransition(Landroid/transition/Transition;)V" since="21"/> + <method name="setSharedElementReenterTransition(Landroid/transition/Transition;)V" since="21"/> + <method name="setSharedElementReturnTransition(Landroid/transition/Transition;)V" since="21"/> + <method name="setSharedElementsUseOverlay(Z)V" since="21"/> + <method name="setSoftInputMode(I)V" since="3"/> + <method name="setStatusBarColor(I)V" since="21"/> + <method name="setSustainedPerformanceMode(Z)V" since="24"/> + <method name="setTitle(Ljava/lang/CharSequence;)V"/> + <method name="setTitleColor(I)V" deprecated="21"/> + <method name="setTransitionBackgroundFadeDuration(J)V" since="21"/> + <method name="setTransitionManager(Landroid/transition/TransitionManager;)V" since="21"/> + <method name="setType(I)V"/> + <method name="setUiOptions(I)V" since="14"/> + <method name="setUiOptions(II)V" since="14"/> + <method name="setVolumeControlStream(I)V"/> + <method name="setWindowAnimations(I)V" since="3"/> + <method name="setWindowManager(Landroid/view/WindowManager;Landroid/os/IBinder;Ljava/lang/String;)V"/> + <method name="setWindowManager(Landroid/view/WindowManager;Landroid/os/IBinder;Ljava/lang/String;Z)V" since="11"/> + <method name="superDispatchGenericMotionEvent(Landroid/view/MotionEvent;)Z" since="12"/> + <method name="superDispatchKeyEvent(Landroid/view/KeyEvent;)Z"/> + <method name="superDispatchKeyShortcutEvent(Landroid/view/KeyEvent;)Z" since="11"/> + <method name="superDispatchTouchEvent(Landroid/view/MotionEvent;)Z"/> + <method name="superDispatchTrackballEvent(Landroid/view/MotionEvent;)Z"/> + <method name="takeInputQueue(Landroid/view/InputQueue$Callback;)V" since="9"/> + <method name="takeKeyEvents(Z)V"/> + <method name="takeSurface(Landroid/view/SurfaceHolder$Callback2;)V" since="9"/> + <method name="togglePanel(ILandroid/view/KeyEvent;)V"/> + <field name="DECOR_CAPTION_SHADE_AUTO" since="24"/> + <field name="DECOR_CAPTION_SHADE_DARK" since="24"/> + <field name="DECOR_CAPTION_SHADE_LIGHT" since="24"/> + <field name="DEFAULT_FEATURES" deprecated="22"/> + <field name="FEATURE_ACTION_BAR" since="11"/> + <field name="FEATURE_ACTION_BAR_OVERLAY" since="11"/> + <field name="FEATURE_ACTION_MODE_OVERLAY" since="11"/> + <field name="FEATURE_ACTIVITY_TRANSITIONS" since="21"/> + <field name="FEATURE_CONTENT_TRANSITIONS" since="21"/> + <field name="FEATURE_CONTEXT_MENU"/> + <field name="FEATURE_CUSTOM_TITLE"/> + <field name="FEATURE_INDETERMINATE_PROGRESS" deprecated="24"/> + <field name="FEATURE_LEFT_ICON"/> + <field name="FEATURE_NO_TITLE"/> + <field name="FEATURE_OPTIONS_PANEL"/> + <field name="FEATURE_PROGRESS" deprecated="24"/> + <field name="FEATURE_RIGHT_ICON"/> + <field name="FEATURE_SWIPE_TO_DISMISS" since="20"/> + <field name="ID_ANDROID_CONTENT"/> + <field name="NAVIGATION_BAR_BACKGROUND_TRANSITION_NAME" since="21"/> + <field name="PROGRESS_END" deprecated="24"/> + <field name="PROGRESS_INDETERMINATE_OFF" deprecated="24"/> + <field name="PROGRESS_INDETERMINATE_ON" deprecated="24"/> + <field name="PROGRESS_SECONDARY_END" deprecated="24"/> + <field name="PROGRESS_SECONDARY_START" deprecated="24"/> + <field name="PROGRESS_START" deprecated="24"/> + <field name="PROGRESS_VISIBILITY_OFF" deprecated="24"/> + <field name="PROGRESS_VISIBILITY_ON" deprecated="24"/> + <field name="STATUS_BAR_BACKGROUND_TRANSITION_NAME" since="21"/> + </class> + <class name="android/view/Window$Callback" since="1"> + <extends name="java/lang/Object"/> + <method name="dispatchGenericMotionEvent(Landroid/view/MotionEvent;)Z" since="12"/> + <method name="dispatchKeyEvent(Landroid/view/KeyEvent;)Z"/> + <method name="dispatchKeyShortcutEvent(Landroid/view/KeyEvent;)Z" since="11"/> + <method name="dispatchPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)Z" since="4"/> + <method name="dispatchTouchEvent(Landroid/view/MotionEvent;)Z"/> + <method name="dispatchTrackballEvent(Landroid/view/MotionEvent;)Z"/> + <method name="onActionModeFinished(Landroid/view/ActionMode;)V" since="11"/> + <method name="onActionModeStarted(Landroid/view/ActionMode;)V" since="11"/> + <method name="onAttachedToWindow()V" since="5"/> + <method name="onContentChanged()V"/> + <method name="onCreatePanelMenu(ILandroid/view/Menu;)Z"/> + <method name="onCreatePanelView(I)Landroid/view/View;"/> + <method name="onDetachedFromWindow()V" since="5"/> + <method name="onMenuItemSelected(ILandroid/view/MenuItem;)Z"/> + <method name="onMenuOpened(ILandroid/view/Menu;)Z"/> + <method name="onPanelClosed(ILandroid/view/Menu;)V"/> + <method name="onPointerCaptureChanged(Z)V" since="26"/> + <method name="onPreparePanel(ILandroid/view/View;Landroid/view/Menu;)Z"/> + <method name="onProvideKeyboardShortcuts(Ljava/util/List;Landroid/view/Menu;I)V" since="24"/> + <method name="onSearchRequested()Z"/> + <method name="onSearchRequested(Landroid/view/SearchEvent;)Z" since="23"/> + <method name="onWindowAttributesChanged(Landroid/view/WindowManager$LayoutParams;)V"/> + <method name="onWindowFocusChanged(Z)V"/> + <method name="onWindowStartingActionMode(Landroid/view/ActionMode$Callback;)Landroid/view/ActionMode;" since="11"/> + <method name="onWindowStartingActionMode(Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode;" since="23"/> + </class> + <class name="android/view/Window$OnFrameMetricsAvailableListener" since="24"> + <extends name="java/lang/Object"/> + <method name="onFrameMetricsAvailable(Landroid/view/Window;Landroid/view/FrameMetrics;I)V"/> + </class> + <class name="android/view/Window$OnRestrictedCaptionAreaChangedListener" since="24"> + <extends name="java/lang/Object"/> + <method name="onRestrictedCaptionAreaChanged(Landroid/graphics/Rect;)V"/> + </class> + <class name="android/view/WindowAnimationFrameStats" since="21"> + <extends name="android/view/FrameStats"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <field name="CREATOR"/> + </class> + <class name="android/view/WindowContentFrameStats" since="21"> + <extends name="android/view/FrameStats"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getFramePostedTimeNano(I)J"/> + <method name="getFrameReadyTimeNano(I)J"/> + <field name="CREATOR"/> + </class> + <class name="android/view/WindowId" since="18"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="isFocused()Z"/> + <method name="registerFocusObserver(Landroid/view/WindowId$FocusObserver;)V"/> + <method name="unregisterFocusObserver(Landroid/view/WindowId$FocusObserver;)V"/> + <field name="CREATOR"/> + </class> + <class name="android/view/WindowId$FocusObserver" since="18"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onFocusGained(Landroid/view/WindowId;)V"/> + <method name="onFocusLost(Landroid/view/WindowId;)V"/> + </class> + <class name="android/view/WindowInsets" since="20"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/view/WindowInsets;)V"/> + <method name="consumeStableInsets()Landroid/view/WindowInsets;" since="21"/> + <method name="consumeSystemWindowInsets()Landroid/view/WindowInsets;"/> + <method name="getStableInsetBottom()I" since="21"/> + <method name="getStableInsetLeft()I" since="21"/> + <method name="getStableInsetRight()I" since="21"/> + <method name="getStableInsetTop()I" since="21"/> + <method name="getSystemWindowInsetBottom()I"/> + <method name="getSystemWindowInsetLeft()I"/> + <method name="getSystemWindowInsetRight()I"/> + <method name="getSystemWindowInsetTop()I"/> + <method name="hasInsets()Z"/> + <method name="hasStableInsets()Z" since="21"/> + <method name="hasSystemWindowInsets()Z"/> + <method name="isConsumed()Z" since="21"/> + <method name="isRound()Z"/> + <method name="replaceSystemWindowInsets(IIII)Landroid/view/WindowInsets;"/> + <method name="replaceSystemWindowInsets(Landroid/graphics/Rect;)Landroid/view/WindowInsets;" since="21"/> + </class> + <class name="android/view/WindowManager" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/view/ViewManager"/> + <method name="getDefaultDisplay()Landroid/view/Display;"/> + <method name="removeViewImmediate(Landroid/view/View;)V"/> + </class> + <class name="android/view/WindowManager$BadTokenException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/view/WindowManager$InvalidDisplayException" since="17"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/view/WindowManager$LayoutParams" since="1"> + <extends name="android/view/ViewGroup$LayoutParams"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(II)V"/> + <method name="<init>(III)V"/> + <method name="<init>(IIIII)V"/> + <method name="<init>(IIIIIII)V"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="copyFrom(Landroid/view/WindowManager$LayoutParams;)I"/> + <method name="debug(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getColorMode()I" since="26"/> + <method name="getTitle()Ljava/lang/CharSequence;"/> + <method name="mayUseInputMethod(I)Z" since="3"/> + <method name="setColorMode(I)V" since="26"/> + <method name="setTitle(Ljava/lang/CharSequence;)V"/> + <field name="ALPHA_CHANGED"/> + <field name="ANIMATION_CHANGED"/> + <field name="BRIGHTNESS_OVERRIDE_FULL" since="8"/> + <field name="BRIGHTNESS_OVERRIDE_NONE" since="8"/> + <field name="BRIGHTNESS_OVERRIDE_OFF" since="8"/> + <field name="CREATOR"/> + <field name="DIM_AMOUNT_CHANGED"/> + <field name="FIRST_APPLICATION_WINDOW"/> + <field name="FIRST_SUB_WINDOW"/> + <field name="FIRST_SYSTEM_WINDOW"/> + <field name="FLAGS_CHANGED"/> + <field name="FLAG_ALLOW_LOCK_WHILE_SCREEN_ON" since="8"/> + <field name="FLAG_ALT_FOCUSABLE_IM" since="3"/> + <field name="FLAG_BLUR_BEHIND" deprecated="16"/> + <field name="FLAG_DIM_BEHIND"/> + <field name="FLAG_DISMISS_KEYGUARD" since="5" deprecated="26"/> + <field name="FLAG_DITHER" deprecated="17"/> + <field name="FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS" since="21"/> + <field name="FLAG_FORCE_NOT_FULLSCREEN"/> + <field name="FLAG_FULLSCREEN"/> + <field name="FLAG_HARDWARE_ACCELERATED" since="11"/> + <field name="FLAG_IGNORE_CHEEK_PRESSES"/> + <field name="FLAG_KEEP_SCREEN_ON"/> + <field name="FLAG_LAYOUT_ATTACHED_IN_DECOR" since="22"/> + <field name="FLAG_LAYOUT_INSET_DECOR"/> + <field name="FLAG_LAYOUT_IN_OVERSCAN" since="18"/> + <field name="FLAG_LAYOUT_IN_SCREEN"/> + <field name="FLAG_LAYOUT_NO_LIMITS"/> + <field name="FLAG_LOCAL_FOCUS_MODE" since="19"/> + <field name="FLAG_NOT_FOCUSABLE"/> + <field name="FLAG_NOT_TOUCHABLE"/> + <field name="FLAG_NOT_TOUCH_MODAL"/> + <field name="FLAG_SCALED"/> + <field name="FLAG_SECURE"/> + <field name="FLAG_SHOW_WALLPAPER" since="5"/> + <field name="FLAG_SHOW_WHEN_LOCKED" since="5"/> + <field name="FLAG_SPLIT_TOUCH" since="11"/> + <field name="FLAG_TOUCHABLE_WHEN_WAKING" deprecated="20"/> + <field name="FLAG_TRANSLUCENT_NAVIGATION" since="19"/> + <field name="FLAG_TRANSLUCENT_STATUS" since="19"/> + <field name="FLAG_TURN_SCREEN_ON" since="5"/> + <field name="FLAG_WATCH_OUTSIDE_TOUCH" since="3"/> + <field name="FORMAT_CHANGED"/> + <field name="LAST_APPLICATION_WINDOW"/> + <field name="LAST_SUB_WINDOW"/> + <field name="LAST_SYSTEM_WINDOW"/> + <field name="LAYOUT_CHANGED"/> + <field name="MEMORY_TYPE_CHANGED"/> + <field name="MEMORY_TYPE_GPU" deprecated="16"/> + <field name="MEMORY_TYPE_HARDWARE" deprecated="16"/> + <field name="MEMORY_TYPE_NORMAL" deprecated="16"/> + <field name="MEMORY_TYPE_PUSH_BUFFERS" deprecated="16"/> + <field name="ROTATION_ANIMATION_CHANGED" since="18"/> + <field name="ROTATION_ANIMATION_CROSSFADE" since="18"/> + <field name="ROTATION_ANIMATION_JUMPCUT" since="18"/> + <field name="ROTATION_ANIMATION_ROTATE" since="18"/> + <field name="ROTATION_ANIMATION_SEAMLESS" since="26"/> + <field name="SCREEN_BRIGHTNESS_CHANGED" since="3"/> + <field name="SCREEN_ORIENTATION_CHANGED" since="3"/> + <field name="SOFT_INPUT_ADJUST_NOTHING" since="11"/> + <field name="SOFT_INPUT_ADJUST_PAN" since="3"/> + <field name="SOFT_INPUT_ADJUST_RESIZE" since="3"/> + <field name="SOFT_INPUT_ADJUST_UNSPECIFIED" since="3"/> + <field name="SOFT_INPUT_IS_FORWARD_NAVIGATION" since="3"/> + <field name="SOFT_INPUT_MASK_ADJUST" since="3"/> + <field name="SOFT_INPUT_MASK_STATE" since="3"/> + <field name="SOFT_INPUT_MODE_CHANGED" since="3"/> + <field name="SOFT_INPUT_STATE_ALWAYS_HIDDEN" since="3"/> + <field name="SOFT_INPUT_STATE_ALWAYS_VISIBLE" since="3"/> + <field name="SOFT_INPUT_STATE_HIDDEN" since="3"/> + <field name="SOFT_INPUT_STATE_UNCHANGED" since="3"/> + <field name="SOFT_INPUT_STATE_UNSPECIFIED" since="3"/> + <field name="SOFT_INPUT_STATE_VISIBLE" since="3"/> + <field name="TITLE_CHANGED"/> + <field name="TYPE_ACCESSIBILITY_OVERLAY" since="22"/> + <field name="TYPE_APPLICATION"/> + <field name="TYPE_APPLICATION_ATTACHED_DIALOG" since="3"/> + <field name="TYPE_APPLICATION_MEDIA"/> + <field name="TYPE_APPLICATION_OVERLAY" since="26"/> + <field name="TYPE_APPLICATION_PANEL"/> + <field name="TYPE_APPLICATION_STARTING"/> + <field name="TYPE_APPLICATION_SUB_PANEL"/> + <field name="TYPE_BASE_APPLICATION"/> + <field name="TYPE_CHANGED"/> + <field name="TYPE_DRAWN_APPLICATION" since="25"/> + <field name="TYPE_INPUT_METHOD" since="3"/> + <field name="TYPE_INPUT_METHOD_DIALOG" since="3"/> + <field name="TYPE_KEYGUARD" removed="21"/> + <field name="TYPE_KEYGUARD_DIALOG"/> + <field name="TYPE_PHONE" deprecated="26"/> + <field name="TYPE_PRIORITY_PHONE" deprecated="26"/> + <field name="TYPE_PRIVATE_PRESENTATION" since="19"/> + <field name="TYPE_SEARCH_BAR"/> + <field name="TYPE_STATUS_BAR"/> + <field name="TYPE_STATUS_BAR_PANEL"/> + <field name="TYPE_SYSTEM_ALERT" deprecated="26"/> + <field name="TYPE_SYSTEM_DIALOG"/> + <field name="TYPE_SYSTEM_ERROR" deprecated="26"/> + <field name="TYPE_SYSTEM_OVERLAY" deprecated="26"/> + <field name="TYPE_TOAST" deprecated="26"/> + <field name="TYPE_WALLPAPER" since="5"/> + <field name="alpha"/> + <field name="buttonBrightness" since="8"/> + <field name="dimAmount"/> + <field name="flags"/> + <field name="format"/> + <field name="gravity"/> + <field name="horizontalMargin"/> + <field name="horizontalWeight"/> + <field name="memoryType" deprecated="16"/> + <field name="packageName"/> + <field name="preferredDisplayModeId" since="23"/> + <field name="preferredRefreshRate" since="21" deprecated="23"/> + <field name="rotationAnimation" since="18"/> + <field name="screenBrightness" since="3"/> + <field name="screenOrientation" since="3"/> + <field name="softInputMode" since="3"/> + <field name="systemUiVisibility" since="11"/> + <field name="token"/> + <field name="type"/> + <field name="verticalMargin"/> + <field name="verticalWeight"/> + <field name="windowAnimations"/> + <field name="x"/> + <field name="y"/> + </class> + <class name="android/view/accessibility/AccessibilityEvent" since="4"> + <extends name="android/view/accessibility/AccessibilityRecord" since="14"/> + <extends name="java/lang/Object" removed="14"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="appendRecord(Landroid/view/accessibility/AccessibilityRecord;)V" since="14"/> + <method name="eventTypeToString(I)Ljava/lang/String;" since="14"/> + <method name="getAction()I" since="16"/> + <method name="getAddedCount()I" removed="14"/> + <method name="getBeforeText()Ljava/lang/CharSequence;" removed="14"/> + <method name="getClassName()Ljava/lang/CharSequence;" removed="14"/> + <method name="getContentChangeTypes()I" since="19"/> + <method name="getContentDescription()Ljava/lang/CharSequence;" removed="14"/> + <method name="getCurrentItemIndex()I" removed="14"/> + <method name="getEventTime()J"/> + <method name="getEventType()I"/> + <method name="getFromIndex()I" removed="14"/> + <method name="getItemCount()I" removed="14"/> + <method name="getMovementGranularity()I" since="16"/> + <method name="getPackageName()Ljava/lang/CharSequence;"/> + <method name="getParcelableData()Landroid/os/Parcelable;" removed="14"/> + <method name="getRecord(I)Landroid/view/accessibility/AccessibilityRecord;" since="14"/> + <method name="getRecordCount()I" since="14"/> + <method name="getRemovedCount()I" removed="14"/> + <method name="getText()Ljava/util/List;" removed="14"/> + <method name="initFromParcel(Landroid/os/Parcel;)V"/> + <method name="isChecked()Z" removed="14"/> + <method name="isEnabled()Z" removed="14"/> + <method name="isFullScreen()Z" removed="14"/> + <method name="isPassword()Z" removed="14"/> + <method name="obtain()Landroid/view/accessibility/AccessibilityEvent;"/> + <method name="obtain(I)Landroid/view/accessibility/AccessibilityEvent;"/> + <method name="obtain(Landroid/view/accessibility/AccessibilityEvent;)Landroid/view/accessibility/AccessibilityEvent;" since="14"/> + <method name="recycle()V"/> + <method name="setAction(I)V" since="16"/> + <method name="setAddedCount(I)V" removed="14"/> + <method name="setBeforeText(Ljava/lang/CharSequence;)V" removed="14"/> + <method name="setChecked(Z)V" removed="14"/> + <method name="setClassName(Ljava/lang/CharSequence;)V" removed="14"/> + <method name="setContentChangeTypes(I)V" since="19"/> + <method name="setContentDescription(Ljava/lang/CharSequence;)V" removed="14"/> + <method name="setCurrentItemIndex(I)V" removed="14"/> + <method name="setEnabled(Z)V" removed="14"/> + <method name="setEventTime(J)V"/> + <method name="setEventType(I)V"/> + <method name="setFromIndex(I)V" removed="14"/> + <method name="setFullScreen(Z)V" removed="14"/> + <method name="setItemCount(I)V" removed="14"/> + <method name="setMovementGranularity(I)V" since="16"/> + <method name="setPackageName(Ljava/lang/CharSequence;)V"/> + <method name="setParcelableData(Landroid/os/Parcelable;)V" removed="14"/> + <method name="setPassword(Z)V" removed="14"/> + <method name="setRemovedCount(I)V" removed="14"/> + <field name="CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION" since="19"/> + <field name="CONTENT_CHANGE_TYPE_SUBTREE" since="19"/> + <field name="CONTENT_CHANGE_TYPE_TEXT" since="19"/> + <field name="CONTENT_CHANGE_TYPE_UNDEFINED" since="19"/> + <field name="CREATOR"/> + <field name="INVALID_POSITION"/> + <field name="MAX_TEXT_LENGTH" deprecated="16"/> + <field name="TYPES_ALL_MASK"/> + <field name="TYPE_ANNOUNCEMENT" since="16"/> + <field name="TYPE_ASSIST_READING_CONTEXT" since="23"/> + <field name="TYPE_GESTURE_DETECTION_END" since="17"/> + <field name="TYPE_GESTURE_DETECTION_START" since="17"/> + <field name="TYPE_NOTIFICATION_STATE_CHANGED"/> + <field name="TYPE_TOUCH_EXPLORATION_GESTURE_END" since="14"/> + <field name="TYPE_TOUCH_EXPLORATION_GESTURE_START" since="14"/> + <field name="TYPE_TOUCH_INTERACTION_END" since="17"/> + <field name="TYPE_TOUCH_INTERACTION_START" since="17"/> + <field name="TYPE_VIEW_ACCESSIBILITY_FOCUSED" since="16"/> + <field name="TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED" since="16"/> + <field name="TYPE_VIEW_CLICKED"/> + <field name="TYPE_VIEW_CONTEXT_CLICKED" since="23"/> + <field name="TYPE_VIEW_FOCUSED"/> + <field name="TYPE_VIEW_HOVER_ENTER" since="14"/> + <field name="TYPE_VIEW_HOVER_EXIT" since="14"/> + <field name="TYPE_VIEW_LONG_CLICKED"/> + <field name="TYPE_VIEW_SCROLLED" since="14"/> + <field name="TYPE_VIEW_SELECTED"/> + <field name="TYPE_VIEW_TEXT_CHANGED"/> + <field name="TYPE_VIEW_TEXT_SELECTION_CHANGED" since="14"/> + <field name="TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY" since="16"/> + <field name="TYPE_WINDOWS_CHANGED" since="21"/> + <field name="TYPE_WINDOW_CONTENT_CHANGED" since="14"/> + <field name="TYPE_WINDOW_STATE_CHANGED"/> + </class> + <class name="android/view/accessibility/AccessibilityEventSource" since="4"> + <extends name="java/lang/Object"/> + <method name="sendAccessibilityEvent(I)V"/> + <method name="sendAccessibilityEventUnchecked(Landroid/view/accessibility/AccessibilityEvent;)V"/> + </class> + <class name="android/view/accessibility/AccessibilityManager" since="4"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addAccessibilityStateChangeListener(Landroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener;)Z" since="14"/> + <method name="addAccessibilityStateChangeListener(Landroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener;Landroid/os/Handler;)V" since="26"/> + <method name="addTouchExplorationStateChangeListener(Landroid/view/accessibility/AccessibilityManager$TouchExplorationStateChangeListener;)Z" since="19"/> + <method name="addTouchExplorationStateChangeListener(Landroid/view/accessibility/AccessibilityManager$TouchExplorationStateChangeListener;Landroid/os/Handler;)V" since="26"/> + <method name="getAccessibilityServiceList()Ljava/util/List;" deprecated="16"/> + <method name="getEnabledAccessibilityServiceList(I)Ljava/util/List;" since="14"/> + <method name="getInstalledAccessibilityServiceList()Ljava/util/List;" since="14"/> + <method name="interrupt()V"/> + <method name="isEnabled()Z"/> + <method name="isTouchExplorationEnabled()Z" since="14"/> + <method name="removeAccessibilityStateChangeListener(Landroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener;)Z" since="14"/> + <method name="removeTouchExplorationStateChangeListener(Landroid/view/accessibility/AccessibilityManager$TouchExplorationStateChangeListener;)Z" since="19"/> + <method name="sendAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V"/> + </class> + <class name="android/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener" since="14"> + <extends name="java/lang/Object"/> + <method name="onAccessibilityStateChanged(Z)V"/> + </class> + <class name="android/view/accessibility/AccessibilityManager$TouchExplorationStateChangeListener" since="19"> + <extends name="java/lang/Object"/> + <method name="onTouchExplorationStateChanged(Z)V"/> + </class> + <class name="android/view/accessibility/AccessibilityNodeInfo" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="addAction(I)V" deprecated="21"/> + <method name="addAction(Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;)V" since="21"/> + <method name="addChild(Landroid/view/View;)V"/> + <method name="addChild(Landroid/view/View;I)V" since="16"/> + <method name="canOpenPopup()Z" since="19"/> + <method name="findAccessibilityNodeInfosByText(Ljava/lang/String;)Ljava/util/List;"/> + <method name="findAccessibilityNodeInfosByViewId(Ljava/lang/String;)Ljava/util/List;" since="18"/> + <method name="findFocus(I)Landroid/view/accessibility/AccessibilityNodeInfo;" since="16"/> + <method name="focusSearch(I)Landroid/view/accessibility/AccessibilityNodeInfo;" since="16"/> + <method name="getActionList()Ljava/util/List;" since="21"/> + <method name="getActions()I" deprecated="21"/> + <method name="getAvailableExtraData()Ljava/util/List;" since="26"/> + <method name="getBoundsInParent(Landroid/graphics/Rect;)V"/> + <method name="getBoundsInScreen(Landroid/graphics/Rect;)V"/> + <method name="getChild(I)Landroid/view/accessibility/AccessibilityNodeInfo;"/> + <method name="getChildCount()I"/> + <method name="getClassName()Ljava/lang/CharSequence;"/> + <method name="getCollectionInfo()Landroid/view/accessibility/AccessibilityNodeInfo$CollectionInfo;" since="19"/> + <method name="getCollectionItemInfo()Landroid/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo;" since="19"/> + <method name="getContentDescription()Ljava/lang/CharSequence;"/> + <method name="getDrawingOrder()I" since="24"/> + <method name="getError()Ljava/lang/CharSequence;" since="21"/> + <method name="getExtras()Landroid/os/Bundle;" since="19"/> + <method name="getHintText()Ljava/lang/CharSequence;" since="26"/> + <method name="getInputType()I" since="19"/> + <method name="getLabelFor()Landroid/view/accessibility/AccessibilityNodeInfo;" since="17"/> + <method name="getLabeledBy()Landroid/view/accessibility/AccessibilityNodeInfo;" since="17"/> + <method name="getLiveRegion()I" since="19"/> + <method name="getMaxTextLength()I" since="21"/> + <method name="getMovementGranularities()I" since="16"/> + <method name="getPackageName()Ljava/lang/CharSequence;"/> + <method name="getParent()Landroid/view/accessibility/AccessibilityNodeInfo;"/> + <method name="getRangeInfo()Landroid/view/accessibility/AccessibilityNodeInfo$RangeInfo;" since="19"/> + <method name="getText()Ljava/lang/CharSequence;"/> + <method name="getTextSelectionEnd()I" since="18"/> + <method name="getTextSelectionStart()I" since="18"/> + <method name="getTraversalAfter()Landroid/view/accessibility/AccessibilityNodeInfo;" since="22"/> + <method name="getTraversalBefore()Landroid/view/accessibility/AccessibilityNodeInfo;" since="22"/> + <method name="getViewIdResourceName()Ljava/lang/String;" since="18"/> + <method name="getWindow()Landroid/view/accessibility/AccessibilityWindowInfo;" since="21"/> + <method name="getWindowId()I"/> + <method name="isAccessibilityFocused()Z" since="16"/> + <method name="isCheckable()Z"/> + <method name="isChecked()Z"/> + <method name="isClickable()Z"/> + <method name="isContentInvalid()Z" since="19"/> + <method name="isContextClickable()Z" since="23"/> + <method name="isDismissable()Z" since="19"/> + <method name="isEditable()Z" since="18"/> + <method name="isEnabled()Z"/> + <method name="isFocusable()Z"/> + <method name="isFocused()Z"/> + <method name="isImportantForAccessibility()Z" since="24"/> + <method name="isLongClickable()Z"/> + <method name="isMultiLine()Z" since="19"/> + <method name="isPassword()Z"/> + <method name="isScrollable()Z"/> + <method name="isSelected()Z"/> + <method name="isShowingHintText()Z" since="26"/> + <method name="isVisibleToUser()Z" since="16"/> + <method name="obtain()Landroid/view/accessibility/AccessibilityNodeInfo;"/> + <method name="obtain(Landroid/view/View;)Landroid/view/accessibility/AccessibilityNodeInfo;"/> + <method name="obtain(Landroid/view/View;I)Landroid/view/accessibility/AccessibilityNodeInfo;" since="16"/> + <method name="obtain(Landroid/view/accessibility/AccessibilityNodeInfo;)Landroid/view/accessibility/AccessibilityNodeInfo;"/> + <method name="performAction(I)Z"/> + <method name="performAction(ILandroid/os/Bundle;)Z" since="16"/> + <method name="recycle()V"/> + <method name="refresh()Z" since="18"/> + <method name="refreshWithExtraData(Ljava/lang/String;Landroid/os/Bundle;)Z" since="26"/> + <method name="removeAction(I)V" since="21" deprecated="21"/> + <method name="removeAction(Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;)Z" since="21"/> + <method name="removeChild(Landroid/view/View;)Z" since="21"/> + <method name="removeChild(Landroid/view/View;I)Z" since="21"/> + <method name="setAccessibilityFocused(Z)V" since="16"/> + <method name="setAvailableExtraData(Ljava/util/List;)V" since="26"/> + <method name="setBoundsInParent(Landroid/graphics/Rect;)V"/> + <method name="setBoundsInScreen(Landroid/graphics/Rect;)V"/> + <method name="setCanOpenPopup(Z)V" since="19"/> + <method name="setCheckable(Z)V"/> + <method name="setChecked(Z)V"/> + <method name="setClassName(Ljava/lang/CharSequence;)V"/> + <method name="setClickable(Z)V"/> + <method name="setCollectionInfo(Landroid/view/accessibility/AccessibilityNodeInfo$CollectionInfo;)V" since="19"/> + <method name="setCollectionItemInfo(Landroid/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo;)V" since="19"/> + <method name="setContentDescription(Ljava/lang/CharSequence;)V"/> + <method name="setContentInvalid(Z)V" since="19"/> + <method name="setContextClickable(Z)V" since="23"/> + <method name="setDismissable(Z)V" since="19"/> + <method name="setDrawingOrder(I)V" since="24"/> + <method name="setEditable(Z)V" since="18"/> + <method name="setEnabled(Z)V"/> + <method name="setError(Ljava/lang/CharSequence;)V" since="21"/> + <method name="setFocusable(Z)V"/> + <method name="setFocused(Z)V"/> + <method name="setHintText(Ljava/lang/CharSequence;)V" since="26"/> + <method name="setImportantForAccessibility(Z)V" since="24"/> + <method name="setInputType(I)V" since="19"/> + <method name="setLabelFor(Landroid/view/View;)V" since="17"/> + <method name="setLabelFor(Landroid/view/View;I)V" since="17"/> + <method name="setLabeledBy(Landroid/view/View;)V" since="17"/> + <method name="setLabeledBy(Landroid/view/View;I)V" since="17"/> + <method name="setLiveRegion(I)V" since="19"/> + <method name="setLongClickable(Z)V"/> + <method name="setMaxTextLength(I)V" since="21"/> + <method name="setMovementGranularities(I)V" since="16"/> + <method name="setMultiLine(Z)V" since="19"/> + <method name="setPackageName(Ljava/lang/CharSequence;)V"/> + <method name="setParent(Landroid/view/View;)V"/> + <method name="setParent(Landroid/view/View;I)V" since="16"/> + <method name="setPassword(Z)V"/> + <method name="setRangeInfo(Landroid/view/accessibility/AccessibilityNodeInfo$RangeInfo;)V" since="19"/> + <method name="setScrollable(Z)V"/> + <method name="setSelected(Z)V"/> + <method name="setShowingHintText(Z)V" since="26"/> + <method name="setSource(Landroid/view/View;)V"/> + <method name="setSource(Landroid/view/View;I)V" since="16"/> + <method name="setText(Ljava/lang/CharSequence;)V"/> + <method name="setTextSelection(II)V" since="18"/> + <method name="setTraversalAfter(Landroid/view/View;)V" since="22"/> + <method name="setTraversalAfter(Landroid/view/View;I)V" since="22"/> + <method name="setTraversalBefore(Landroid/view/View;)V" since="22"/> + <method name="setTraversalBefore(Landroid/view/View;I)V" since="22"/> + <method name="setViewIdResourceName(Ljava/lang/String;)V" since="18"/> + <method name="setVisibleToUser(Z)V" since="16"/> + <field name="ACTION_ACCESSIBILITY_FOCUS" since="16"/> + <field name="ACTION_ARGUMENT_COLUMN_INT" since="23"/> + <field name="ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN" since="18"/> + <field name="ACTION_ARGUMENT_HTML_ELEMENT_STRING" since="16"/> + <field name="ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT" since="16"/> + <field name="ACTION_ARGUMENT_MOVE_WINDOW_X" since="26"/> + <field name="ACTION_ARGUMENT_MOVE_WINDOW_Y" since="26"/> + <field name="ACTION_ARGUMENT_PROGRESS_VALUE" since="24"/> + <field name="ACTION_ARGUMENT_ROW_INT" since="23"/> + <field name="ACTION_ARGUMENT_SELECTION_END_INT" since="18"/> + <field name="ACTION_ARGUMENT_SELECTION_START_INT" since="18"/> + <field name="ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE" since="21"/> + <field name="ACTION_CLEAR_ACCESSIBILITY_FOCUS" since="16"/> + <field name="ACTION_CLEAR_FOCUS"/> + <field name="ACTION_CLEAR_SELECTION"/> + <field name="ACTION_CLICK" since="16"/> + <field name="ACTION_COLLAPSE" since="19"/> + <field name="ACTION_COPY" since="18"/> + <field name="ACTION_CUT" since="18"/> + <field name="ACTION_DISMISS" since="19"/> + <field name="ACTION_EXPAND" since="19"/> + <field name="ACTION_FOCUS"/> + <field name="ACTION_LONG_CLICK" since="16"/> + <field name="ACTION_NEXT_AT_MOVEMENT_GRANULARITY" since="16"/> + <field name="ACTION_NEXT_HTML_ELEMENT" since="16"/> + <field name="ACTION_PASTE" since="18"/> + <field name="ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY" since="16"/> + <field name="ACTION_PREVIOUS_HTML_ELEMENT" since="16"/> + <field name="ACTION_SCROLL_BACKWARD" since="16"/> + <field name="ACTION_SCROLL_FORWARD" since="16"/> + <field name="ACTION_SELECT"/> + <field name="ACTION_SET_SELECTION" since="18"/> + <field name="ACTION_SET_TEXT" since="21"/> + <field name="CREATOR"/> + <field name="EXTRA_DATA_TEXT_CHARACTER_LOCATION_ARG_LENGTH" since="26"/> + <field name="EXTRA_DATA_TEXT_CHARACTER_LOCATION_ARG_START_INDEX" since="26"/> + <field name="EXTRA_DATA_TEXT_CHARACTER_LOCATION_KEY" since="26"/> + <field name="FOCUS_ACCESSIBILITY" since="16"/> + <field name="FOCUS_INPUT" since="16"/> + <field name="MOVEMENT_GRANULARITY_CHARACTER" since="16"/> + <field name="MOVEMENT_GRANULARITY_LINE" since="16"/> + <field name="MOVEMENT_GRANULARITY_PAGE" since="16"/> + <field name="MOVEMENT_GRANULARITY_PARAGRAPH" since="16"/> + <field name="MOVEMENT_GRANULARITY_WORD" since="16"/> + </class> + <class name="android/view/accessibility/AccessibilityNodeInfo$AccessibilityAction" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>(ILjava/lang/CharSequence;)V"/> + <method name="getId()I"/> + <method name="getLabel()Ljava/lang/CharSequence;"/> + <field name="ACTION_ACCESSIBILITY_FOCUS"/> + <field name="ACTION_CLEAR_ACCESSIBILITY_FOCUS"/> + <field name="ACTION_CLEAR_FOCUS"/> + <field name="ACTION_CLEAR_SELECTION"/> + <field name="ACTION_CLICK"/> + <field name="ACTION_COLLAPSE"/> + <field name="ACTION_CONTEXT_CLICK" since="23"/> + <field name="ACTION_COPY"/> + <field name="ACTION_CUT"/> + <field name="ACTION_DISMISS"/> + <field name="ACTION_EXPAND"/> + <field name="ACTION_FOCUS"/> + <field name="ACTION_LONG_CLICK"/> + <field name="ACTION_MOVE_WINDOW" since="26"/> + <field name="ACTION_NEXT_AT_MOVEMENT_GRANULARITY"/> + <field name="ACTION_NEXT_HTML_ELEMENT"/> + <field name="ACTION_PASTE"/> + <field name="ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY"/> + <field name="ACTION_PREVIOUS_HTML_ELEMENT"/> + <field name="ACTION_SCROLL_BACKWARD"/> + <field name="ACTION_SCROLL_DOWN" since="23"/> + <field name="ACTION_SCROLL_FORWARD"/> + <field name="ACTION_SCROLL_LEFT" since="23"/> + <field name="ACTION_SCROLL_RIGHT" since="23"/> + <field name="ACTION_SCROLL_TO_POSITION" since="23"/> + <field name="ACTION_SCROLL_UP" since="23"/> + <field name="ACTION_SELECT"/> + <field name="ACTION_SET_PROGRESS" since="24"/> + <field name="ACTION_SET_SELECTION"/> + <field name="ACTION_SET_TEXT"/> + <field name="ACTION_SHOW_ON_SCREEN" since="23"/> + </class> + <class name="android/view/accessibility/AccessibilityNodeInfo$CollectionInfo" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getColumnCount()I"/> + <method name="getRowCount()I"/> + <method name="getSelectionMode()I" since="21"/> + <method name="isHierarchical()Z"/> + <method name="obtain(IIZ)Landroid/view/accessibility/AccessibilityNodeInfo$CollectionInfo;"/> + <method name="obtain(IIZI)Landroid/view/accessibility/AccessibilityNodeInfo$CollectionInfo;" since="21"/> + <field name="SELECTION_MODE_MULTIPLE" since="21"/> + <field name="SELECTION_MODE_NONE" since="21"/> + <field name="SELECTION_MODE_SINGLE" since="21"/> + </class> + <class name="android/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getColumnIndex()I"/> + <method name="getColumnSpan()I"/> + <method name="getRowIndex()I"/> + <method name="getRowSpan()I"/> + <method name="isHeading()Z"/> + <method name="isSelected()Z" since="21"/> + <method name="obtain(IIIIZ)Landroid/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo;"/> + <method name="obtain(IIIIZZ)Landroid/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo;" since="21"/> + </class> + <class name="android/view/accessibility/AccessibilityNodeInfo$RangeInfo" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getCurrent()F"/> + <method name="getMax()F"/> + <method name="getMin()F"/> + <method name="getType()I"/> + <method name="obtain(IFFF)Landroid/view/accessibility/AccessibilityNodeInfo$RangeInfo;"/> + <field name="RANGE_TYPE_FLOAT"/> + <field name="RANGE_TYPE_INT"/> + <field name="RANGE_TYPE_PERCENT"/> + </class> + <class name="android/view/accessibility/AccessibilityNodeProvider" since="16"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addExtraDataToAccessibilityNodeInfo(ILandroid/view/accessibility/AccessibilityNodeInfo;Ljava/lang/String;Landroid/os/Bundle;)V" since="26"/> + <method name="createAccessibilityNodeInfo(I)Landroid/view/accessibility/AccessibilityNodeInfo;"/> + <method name="findAccessibilityNodeInfosByText(Ljava/lang/String;I)Ljava/util/List;"/> + <method name="findFocus(I)Landroid/view/accessibility/AccessibilityNodeInfo;" since="19"/> + <method name="performAction(IILandroid/os/Bundle;)Z"/> + <field name="HOST_VIEW_ID" since="21"/> + </class> + <class name="android/view/accessibility/AccessibilityRecord" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAddedCount()I"/> + <method name="getBeforeText()Ljava/lang/CharSequence;"/> + <method name="getClassName()Ljava/lang/CharSequence;"/> + <method name="getContentDescription()Ljava/lang/CharSequence;"/> + <method name="getCurrentItemIndex()I"/> + <method name="getFromIndex()I"/> + <method name="getItemCount()I"/> + <method name="getMaxScrollX()I" since="15"/> + <method name="getMaxScrollY()I" since="15"/> + <method name="getParcelableData()Landroid/os/Parcelable;"/> + <method name="getRemovedCount()I"/> + <method name="getScrollX()I"/> + <method name="getScrollY()I"/> + <method name="getSource()Landroid/view/accessibility/AccessibilityNodeInfo;"/> + <method name="getText()Ljava/util/List;"/> + <method name="getToIndex()I"/> + <method name="getWindowId()I"/> + <method name="isChecked()Z"/> + <method name="isEnabled()Z"/> + <method name="isFullScreen()Z"/> + <method name="isPassword()Z"/> + <method name="isScrollable()Z"/> + <method name="obtain()Landroid/view/accessibility/AccessibilityRecord;"/> + <method name="obtain(Landroid/view/accessibility/AccessibilityRecord;)Landroid/view/accessibility/AccessibilityRecord;"/> + <method name="recycle()V"/> + <method name="setAddedCount(I)V"/> + <method name="setBeforeText(Ljava/lang/CharSequence;)V"/> + <method name="setChecked(Z)V"/> + <method name="setClassName(Ljava/lang/CharSequence;)V"/> + <method name="setContentDescription(Ljava/lang/CharSequence;)V"/> + <method name="setCurrentItemIndex(I)V"/> + <method name="setEnabled(Z)V"/> + <method name="setFromIndex(I)V"/> + <method name="setFullScreen(Z)V"/> + <method name="setItemCount(I)V"/> + <method name="setMaxScrollX(I)V" since="15"/> + <method name="setMaxScrollY(I)V" since="15"/> + <method name="setParcelableData(Landroid/os/Parcelable;)V"/> + <method name="setPassword(Z)V"/> + <method name="setRemovedCount(I)V"/> + <method name="setScrollX(I)V"/> + <method name="setScrollY(I)V"/> + <method name="setScrollable(Z)V"/> + <method name="setSource(Landroid/view/View;)V"/> + <method name="setSource(Landroid/view/View;I)V" since="16"/> + <method name="setToIndex(I)V"/> + </class> + <class name="android/view/accessibility/AccessibilityWindowInfo" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getAnchor()Landroid/view/accessibility/AccessibilityNodeInfo;" since="24"/> + <method name="getBoundsInScreen(Landroid/graphics/Rect;)V"/> + <method name="getChild(I)Landroid/view/accessibility/AccessibilityWindowInfo;"/> + <method name="getChildCount()I"/> + <method name="getId()I"/> + <method name="getLayer()I"/> + <method name="getParent()Landroid/view/accessibility/AccessibilityWindowInfo;"/> + <method name="getRoot()Landroid/view/accessibility/AccessibilityNodeInfo;"/> + <method name="getTitle()Ljava/lang/CharSequence;" since="24"/> + <method name="getType()I"/> + <method name="isAccessibilityFocused()Z"/> + <method name="isActive()Z"/> + <method name="isFocused()Z"/> + <method name="isInPictureInPictureMode()Z" since="26"/> + <method name="obtain()Landroid/view/accessibility/AccessibilityWindowInfo;"/> + <method name="obtain(Landroid/view/accessibility/AccessibilityWindowInfo;)Landroid/view/accessibility/AccessibilityWindowInfo;"/> + <method name="recycle()V"/> + <field name="CREATOR"/> + <field name="TYPE_ACCESSIBILITY_OVERLAY" since="22"/> + <field name="TYPE_APPLICATION"/> + <field name="TYPE_INPUT_METHOD"/> + <field name="TYPE_SPLIT_SCREEN_DIVIDER" since="24"/> + <field name="TYPE_SYSTEM"/> + </class> + <class name="android/view/accessibility/CaptioningManager" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addCaptioningChangeListener(Landroid/view/accessibility/CaptioningManager$CaptioningChangeListener;)V"/> + <method name="getFontScale()F"/> + <method name="getLocale()Ljava/util/Locale;"/> + <method name="getUserStyle()Landroid/view/accessibility/CaptioningManager$CaptionStyle;"/> + <method name="isEnabled()Z"/> + <method name="removeCaptioningChangeListener(Landroid/view/accessibility/CaptioningManager$CaptioningChangeListener;)V"/> + </class> + <class name="android/view/accessibility/CaptioningManager$CaptionStyle" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getTypeface()Landroid/graphics/Typeface;"/> + <method name="hasBackgroundColor()Z" since="21"/> + <method name="hasEdgeColor()Z" since="21"/> + <method name="hasEdgeType()Z" since="21"/> + <method name="hasForegroundColor()Z" since="21"/> + <method name="hasWindowColor()Z" since="21"/> + <field name="EDGE_TYPE_DEPRESSED" since="21"/> + <field name="EDGE_TYPE_DROP_SHADOW"/> + <field name="EDGE_TYPE_NONE"/> + <field name="EDGE_TYPE_OUTLINE"/> + <field name="EDGE_TYPE_RAISED" since="21"/> + <field name="EDGE_TYPE_UNSPECIFIED" since="21"/> + <field name="backgroundColor"/> + <field name="edgeColor"/> + <field name="edgeType"/> + <field name="foregroundColor"/> + <field name="windowColor" since="21"/> + </class> + <class name="android/view/accessibility/CaptioningManager$CaptioningChangeListener" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onEnabledChanged(Z)V"/> + <method name="onFontScaleChanged(F)V"/> + <method name="onLocaleChanged(Ljava/util/Locale;)V"/> + <method name="onUserStyleChanged(Landroid/view/accessibility/CaptioningManager$CaptionStyle;)V"/> + </class> + <class name="android/view/animation/AccelerateDecelerateInterpolator" since="1"> + <extends name="android/view/animation/BaseInterpolator" since="22"/> + <extends name="java/lang/Object" removed="22"/> + <implements name="android/view/animation/Interpolator" removed="22"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + </class> + <class name="android/view/animation/AccelerateInterpolator" since="1"> + <extends name="android/view/animation/BaseInterpolator" since="22"/> + <extends name="java/lang/Object" removed="22"/> + <implements name="android/view/animation/Interpolator" removed="22"/> + <method name="<init>()V"/> + <method name="<init>(F)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + </class> + <class name="android/view/animation/AlphaAnimation" since="1"> + <extends name="android/view/animation/Animation"/> + <method name="<init>(FF)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + </class> + <class name="android/view/animation/Animation" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable" since="3"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="applyTransformation(FLandroid/view/animation/Transformation;)V"/> + <method name="cancel()V" since="8"/> + <method name="clone()Landroid/view/animation/Animation;" since="3"/> + <method name="computeDurationHint()J" since="3"/> + <method name="ensureInterpolator()V"/> + <method name="getBackgroundColor()I" since="12"/> + <method name="getDetachWallpaper()Z" since="5"/> + <method name="getDuration()J"/> + <method name="getFillAfter()Z"/> + <method name="getFillBefore()Z"/> + <method name="getInterpolator()Landroid/view/animation/Interpolator;"/> + <method name="getRepeatCount()I"/> + <method name="getRepeatMode()I"/> + <method name="getScaleFactor()F" since="11"/> + <method name="getStartOffset()J"/> + <method name="getStartTime()J"/> + <method name="getTransformation(JLandroid/view/animation/Transformation;)Z"/> + <method name="getTransformation(JLandroid/view/animation/Transformation;F)Z" since="11"/> + <method name="getZAdjustment()I"/> + <method name="hasEnded()Z"/> + <method name="hasStarted()Z"/> + <method name="initialize(IIII)V"/> + <method name="isFillEnabled()Z" since="3"/> + <method name="isInitialized()Z"/> + <method name="reset()V"/> + <method name="resolveSize(IFII)F"/> + <method name="restrictDuration(J)V"/> + <method name="scaleCurrentDuration(F)V"/> + <method name="setAnimationListener(Landroid/view/animation/Animation$AnimationListener;)V"/> + <method name="setBackgroundColor(I)V" since="12"/> + <method name="setDetachWallpaper(Z)V" since="5"/> + <method name="setDuration(J)V"/> + <method name="setFillAfter(Z)V"/> + <method name="setFillBefore(Z)V"/> + <method name="setFillEnabled(Z)V" since="3"/> + <method name="setInterpolator(Landroid/content/Context;I)V"/> + <method name="setInterpolator(Landroid/view/animation/Interpolator;)V"/> + <method name="setRepeatCount(I)V"/> + <method name="setRepeatMode(I)V"/> + <method name="setStartOffset(J)V"/> + <method name="setStartTime(J)V"/> + <method name="setZAdjustment(I)V"/> + <method name="start()V"/> + <method name="startNow()V"/> + <method name="willChangeBounds()Z"/> + <method name="willChangeTransformationMatrix()Z"/> + <field name="ABSOLUTE"/> + <field name="INFINITE"/> + <field name="RELATIVE_TO_PARENT"/> + <field name="RELATIVE_TO_SELF"/> + <field name="RESTART"/> + <field name="REVERSE"/> + <field name="START_ON_FIRST_FRAME"/> + <field name="ZORDER_BOTTOM"/> + <field name="ZORDER_NORMAL"/> + <field name="ZORDER_TOP"/> + </class> + <class name="android/view/animation/Animation$AnimationListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onAnimationEnd(Landroid/view/animation/Animation;)V"/> + <method name="onAnimationRepeat(Landroid/view/animation/Animation;)V"/> + <method name="onAnimationStart(Landroid/view/animation/Animation;)V"/> + </class> + <class name="android/view/animation/Animation$Description" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="type"/> + <field name="value"/> + </class> + <class name="android/view/animation/AnimationSet" since="1"> + <extends name="android/view/animation/Animation"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Z)V"/> + <method name="addAnimation(Landroid/view/animation/Animation;)V"/> + <method name="clone()Landroid/view/animation/AnimationSet;" since="3"/> + <method name="getAnimations()Ljava/util/List;"/> + </class> + <class name="android/view/animation/AnimationUtils" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="currentAnimationTimeMillis()J"/> + <method name="loadAnimation(Landroid/content/Context;I)Landroid/view/animation/Animation;"/> + <method name="loadInterpolator(Landroid/content/Context;I)Landroid/view/animation/Interpolator;"/> + <method name="loadLayoutAnimation(Landroid/content/Context;I)Landroid/view/animation/LayoutAnimationController;"/> + <method name="makeInAnimation(Landroid/content/Context;Z)Landroid/view/animation/Animation;"/> + <method name="makeInChildBottomAnimation(Landroid/content/Context;)Landroid/view/animation/Animation;"/> + <method name="makeOutAnimation(Landroid/content/Context;Z)Landroid/view/animation/Animation;"/> + </class> + <class name="android/view/animation/AnticipateInterpolator" since="4"> + <extends name="android/view/animation/BaseInterpolator" since="22"/> + <extends name="java/lang/Object" removed="22"/> + <implements name="android/view/animation/Interpolator" removed="22"/> + <method name="<init>()V"/> + <method name="<init>(F)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + </class> + <class name="android/view/animation/AnticipateOvershootInterpolator" since="4"> + <extends name="android/view/animation/BaseInterpolator" since="22"/> + <extends name="java/lang/Object" removed="22"/> + <implements name="android/view/animation/Interpolator" removed="22"/> + <method name="<init>()V"/> + <method name="<init>(F)V"/> + <method name="<init>(FF)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + </class> + <class name="android/view/animation/BaseInterpolator" since="22"> + <extends name="java/lang/Object"/> + <implements name="android/view/animation/Interpolator"/> + <method name="<init>()V"/> + </class> + <class name="android/view/animation/BounceInterpolator" since="4"> + <extends name="android/view/animation/BaseInterpolator" since="22"/> + <extends name="java/lang/Object" removed="22"/> + <implements name="android/view/animation/Interpolator" removed="22"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + </class> + <class name="android/view/animation/CycleInterpolator" since="1"> + <extends name="android/view/animation/BaseInterpolator" since="22"/> + <extends name="java/lang/Object" removed="22"/> + <implements name="android/view/animation/Interpolator" removed="22"/> + <method name="<init>(F)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + </class> + <class name="android/view/animation/DecelerateInterpolator" since="1"> + <extends name="android/view/animation/BaseInterpolator" since="22"/> + <extends name="java/lang/Object" removed="22"/> + <implements name="android/view/animation/Interpolator" removed="22"/> + <method name="<init>()V"/> + <method name="<init>(F)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + </class> + <class name="android/view/animation/GridLayoutAnimationController" since="1"> + <extends name="android/view/animation/LayoutAnimationController"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/view/animation/Animation;)V"/> + <method name="<init>(Landroid/view/animation/Animation;FF)V"/> + <method name="getColumnDelay()F"/> + <method name="getDirection()I"/> + <method name="getDirectionPriority()I"/> + <method name="getRowDelay()F"/> + <method name="setColumnDelay(F)V"/> + <method name="setDirection(I)V"/> + <method name="setDirectionPriority(I)V"/> + <method name="setRowDelay(F)V"/> + <field name="DIRECTION_BOTTOM_TO_TOP"/> + <field name="DIRECTION_HORIZONTAL_MASK"/> + <field name="DIRECTION_LEFT_TO_RIGHT"/> + <field name="DIRECTION_RIGHT_TO_LEFT"/> + <field name="DIRECTION_TOP_TO_BOTTOM"/> + <field name="DIRECTION_VERTICAL_MASK"/> + <field name="PRIORITY_COLUMN"/> + <field name="PRIORITY_NONE"/> + <field name="PRIORITY_ROW"/> + </class> + <class name="android/view/animation/GridLayoutAnimationController$AnimationParameters" since="1"> + <extends name="android/view/animation/LayoutAnimationController$AnimationParameters"/> + <method name="<init>()V"/> + <field name="column"/> + <field name="columnsCount"/> + <field name="row"/> + <field name="rowsCount"/> + </class> + <class name="android/view/animation/Interpolator" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/animation/TimeInterpolator" since="11"/> + <method name="getInterpolation(F)F" removed="11"/> + </class> + <class name="android/view/animation/LayoutAnimationController" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/view/animation/Animation;)V"/> + <method name="<init>(Landroid/view/animation/Animation;F)V"/> + <method name="getAnimation()Landroid/view/animation/Animation;"/> + <method name="getAnimationForView(Landroid/view/View;)Landroid/view/animation/Animation;"/> + <method name="getDelay()F"/> + <method name="getDelayForView(Landroid/view/View;)J"/> + <method name="getInterpolator()Landroid/view/animation/Interpolator;"/> + <method name="getOrder()I"/> + <method name="getTransformedIndex(Landroid/view/animation/LayoutAnimationController$AnimationParameters;)I"/> + <method name="isDone()Z"/> + <method name="setAnimation(Landroid/content/Context;I)V"/> + <method name="setAnimation(Landroid/view/animation/Animation;)V"/> + <method name="setDelay(F)V"/> + <method name="setInterpolator(Landroid/content/Context;I)V"/> + <method name="setInterpolator(Landroid/view/animation/Interpolator;)V"/> + <method name="setOrder(I)V"/> + <method name="start()V"/> + <method name="willOverlap()Z"/> + <field name="ORDER_NORMAL"/> + <field name="ORDER_RANDOM"/> + <field name="ORDER_REVERSE"/> + <field name="mAnimation"/> + <field name="mInterpolator"/> + <field name="mRandomizer"/> + </class> + <class name="android/view/animation/LayoutAnimationController$AnimationParameters" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="count"/> + <field name="index"/> + </class> + <class name="android/view/animation/LinearInterpolator" since="1"> + <extends name="android/view/animation/BaseInterpolator" since="22"/> + <extends name="java/lang/Object" removed="22"/> + <implements name="android/view/animation/Interpolator" removed="22"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + </class> + <class name="android/view/animation/OvershootInterpolator" since="4"> + <extends name="android/view/animation/BaseInterpolator" since="22"/> + <extends name="java/lang/Object" removed="22"/> + <implements name="android/view/animation/Interpolator" removed="22"/> + <method name="<init>()V"/> + <method name="<init>(F)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + </class> + <class name="android/view/animation/PathInterpolator" since="21"> + <extends name="android/view/animation/BaseInterpolator" since="22"/> + <extends name="java/lang/Object" removed="22"/> + <implements name="android/view/animation/Interpolator" removed="22"/> + <method name="<init>(FF)V"/> + <method name="<init>(FFFF)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/graphics/Path;)V"/> + </class> + <class name="android/view/animation/RotateAnimation" since="1"> + <extends name="android/view/animation/Animation"/> + <method name="<init>(FF)V"/> + <method name="<init>(FFFF)V"/> + <method name="<init>(FFIFIF)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + </class> + <class name="android/view/animation/ScaleAnimation" since="1"> + <extends name="android/view/animation/Animation"/> + <method name="<init>(FFFF)V"/> + <method name="<init>(FFFFFF)V"/> + <method name="<init>(FFFFIFIF)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + </class> + <class name="android/view/animation/Transformation" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="clear()V"/> + <method name="compose(Landroid/view/animation/Transformation;)V"/> + <method name="getAlpha()F"/> + <method name="getMatrix()Landroid/graphics/Matrix;"/> + <method name="getTransformationType()I"/> + <method name="set(Landroid/view/animation/Transformation;)V"/> + <method name="setAlpha(F)V"/> + <method name="setTransformationType(I)V"/> + <method name="toShortString()Ljava/lang/String;" since="3"/> + <field name="TYPE_ALPHA"/> + <field name="TYPE_BOTH"/> + <field name="TYPE_IDENTITY"/> + <field name="TYPE_MATRIX"/> + <field name="mAlpha"/> + <field name="mMatrix"/> + <field name="mTransformationType"/> + </class> + <class name="android/view/animation/TranslateAnimation" since="1"> + <extends name="android/view/animation/Animation"/> + <method name="<init>(FFFF)V"/> + <method name="<init>(IFIFIFIF)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + </class> + <class name="android/view/autofill/AutofillId" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <field name="CREATOR"/> + </class> + <class name="android/view/autofill/AutofillManager" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="cancel()V"/> + <method name="commit()V"/> + <method name="disableAutofillServices()V"/> + <method name="hasEnabledAutofillServices()Z"/> + <method name="isAutofillSupported()Z"/> + <method name="isEnabled()Z"/> + <method name="notifyValueChanged(Landroid/view/View;)V"/> + <method name="notifyValueChanged(Landroid/view/View;ILandroid/view/autofill/AutofillValue;)V"/> + <method name="notifyViewEntered(Landroid/view/View;)V"/> + <method name="notifyViewEntered(Landroid/view/View;ILandroid/graphics/Rect;)V"/> + <method name="notifyViewExited(Landroid/view/View;)V"/> + <method name="notifyViewExited(Landroid/view/View;I)V"/> + <method name="registerCallback(Landroid/view/autofill/AutofillManager$AutofillCallback;)V"/> + <method name="requestAutofill(Landroid/view/View;)V"/> + <method name="requestAutofill(Landroid/view/View;ILandroid/graphics/Rect;)V"/> + <method name="unregisterCallback(Landroid/view/autofill/AutofillManager$AutofillCallback;)V"/> + <field name="EXTRA_ASSIST_STRUCTURE"/> + <field name="EXTRA_AUTHENTICATION_RESULT"/> + <field name="EXTRA_CLIENT_STATE"/> + </class> + <class name="android/view/autofill/AutofillManager$AutofillCallback" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onAutofillEvent(Landroid/view/View;I)V"/> + <method name="onAutofillEvent(Landroid/view/View;II)V"/> + <field name="EVENT_INPUT_HIDDEN"/> + <field name="EVENT_INPUT_SHOWN"/> + <field name="EVENT_INPUT_UNAVAILABLE"/> + </class> + <class name="android/view/autofill/AutofillValue" since="26"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="forDate(J)Landroid/view/autofill/AutofillValue;"/> + <method name="forList(I)Landroid/view/autofill/AutofillValue;"/> + <method name="forText(Ljava/lang/CharSequence;)Landroid/view/autofill/AutofillValue;"/> + <method name="forToggle(Z)Landroid/view/autofill/AutofillValue;"/> + <method name="getDateValue()J"/> + <method name="getListValue()I"/> + <method name="getTextValue()Ljava/lang/CharSequence;"/> + <method name="getToggleValue()Z"/> + <method name="isDate()Z"/> + <method name="isList()Z"/> + <method name="isText()Z"/> + <method name="isToggle()Z"/> + <field name="CREATOR"/> + </class> + <class name="android/view/inputmethod/BaseInputConnection" since="3"> + <extends name="java/lang/Object"/> + <implements name="android/view/inputmethod/InputConnection"/> + <method name="<init>(Landroid/view/View;Z)V"/> + <method name="getComposingSpanEnd(Landroid/text/Spannable;)I"/> + <method name="getComposingSpanStart(Landroid/text/Spannable;)I"/> + <method name="getEditable()Landroid/text/Editable;"/> + <method name="removeComposingSpans(Landroid/text/Spannable;)V"/> + <method name="setComposingSpans(Landroid/text/Spannable;)V"/> + </class> + <class name="android/view/inputmethod/CompletionInfo" since="3"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(JILjava/lang/CharSequence;)V"/> + <method name="<init>(JILjava/lang/CharSequence;Ljava/lang/CharSequence;)V"/> + <method name="getId()J"/> + <method name="getLabel()Ljava/lang/CharSequence;"/> + <method name="getPosition()I"/> + <method name="getText()Ljava/lang/CharSequence;"/> + <field name="CREATOR"/> + </class> + <class name="android/view/inputmethod/CorrectionInfo" since="11"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(ILjava/lang/CharSequence;Ljava/lang/CharSequence;)V"/> + <method name="getNewText()Ljava/lang/CharSequence;"/> + <method name="getOffset()I"/> + <method name="getOldText()Ljava/lang/CharSequence;"/> + <field name="CREATOR"/> + </class> + <class name="android/view/inputmethod/CursorAnchorInfo" since="21"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="getCharacterBounds(I)Landroid/graphics/RectF;"/> + <method name="getCharacterBoundsFlags(I)I"/> + <method name="getComposingText()Ljava/lang/CharSequence;"/> + <method name="getComposingTextStart()I"/> + <method name="getInsertionMarkerBaseline()F"/> + <method name="getInsertionMarkerBottom()F"/> + <method name="getInsertionMarkerFlags()I"/> + <method name="getInsertionMarkerHorizontal()F"/> + <method name="getInsertionMarkerTop()F"/> + <method name="getMatrix()Landroid/graphics/Matrix;"/> + <method name="getSelectionEnd()I"/> + <method name="getSelectionStart()I"/> + <field name="CREATOR"/> + <field name="FLAG_HAS_INVISIBLE_REGION"/> + <field name="FLAG_HAS_VISIBLE_REGION"/> + <field name="FLAG_IS_RTL"/> + </class> + <class name="android/view/inputmethod/CursorAnchorInfo$Builder" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addCharacterBounds(IFFFFI)Landroid/view/inputmethod/CursorAnchorInfo$Builder;"/> + <method name="build()Landroid/view/inputmethod/CursorAnchorInfo;"/> + <method name="reset()V"/> + <method name="setComposingText(ILjava/lang/CharSequence;)Landroid/view/inputmethod/CursorAnchorInfo$Builder;"/> + <method name="setInsertionMarkerLocation(FFFFI)Landroid/view/inputmethod/CursorAnchorInfo$Builder;"/> + <method name="setMatrix(Landroid/graphics/Matrix;)Landroid/view/inputmethod/CursorAnchorInfo$Builder;"/> + <method name="setSelectionRange(II)Landroid/view/inputmethod/CursorAnchorInfo$Builder;"/> + </class> + <class name="android/view/inputmethod/EditorInfo" since="3"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <implements name="android/text/InputType"/> + <method name="<init>()V"/> + <method name="dump(Landroid/util/Printer;Ljava/lang/String;)V"/> + <method name="makeCompatible(I)V" since="11"/> + <field name="CREATOR"/> + <field name="IME_ACTION_DONE"/> + <field name="IME_ACTION_GO"/> + <field name="IME_ACTION_NEXT"/> + <field name="IME_ACTION_NONE"/> + <field name="IME_ACTION_PREVIOUS" since="11"/> + <field name="IME_ACTION_SEARCH"/> + <field name="IME_ACTION_SEND"/> + <field name="IME_ACTION_UNSPECIFIED"/> + <field name="IME_FLAG_FORCE_ASCII" since="16"/> + <field name="IME_FLAG_NAVIGATE_NEXT" since="11"/> + <field name="IME_FLAG_NAVIGATE_PREVIOUS" since="11"/> + <field name="IME_FLAG_NO_ACCESSORY_ACTION"/> + <field name="IME_FLAG_NO_ENTER_ACTION"/> + <field name="IME_FLAG_NO_EXTRACT_UI"/> + <field name="IME_FLAG_NO_FULLSCREEN" since="11"/> + <field name="IME_FLAG_NO_PERSONALIZED_LEARNING" since="26"/> + <field name="IME_MASK_ACTION"/> + <field name="IME_NULL"/> + <field name="actionId"/> + <field name="actionLabel"/> + <field name="contentMimeTypes" since="25"/> + <field name="extras"/> + <field name="fieldId"/> + <field name="fieldName"/> + <field name="hintLocales" since="24"/> + <field name="hintText"/> + <field name="imeOptions"/> + <field name="initialCapsMode"/> + <field name="initialSelEnd"/> + <field name="initialSelStart"/> + <field name="inputType"/> + <field name="label"/> + <field name="packageName"/> + <field name="privateImeOptions"/> + </class> + <class name="android/view/inputmethod/ExtractedText" since="3"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <field name="CREATOR"/> + <field name="FLAG_SELECTING"/> + <field name="FLAG_SINGLE_LINE"/> + <field name="flags"/> + <field name="partialEndOffset"/> + <field name="partialStartOffset"/> + <field name="selectionEnd"/> + <field name="selectionStart"/> + <field name="startOffset"/> + <field name="text"/> + </class> + <class name="android/view/inputmethod/ExtractedTextRequest" since="3"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <field name="CREATOR"/> + <field name="flags"/> + <field name="hintMaxChars"/> + <field name="hintMaxLines"/> + <field name="token"/> + </class> + <class name="android/view/inputmethod/InputBinding" since="3"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/view/inputmethod/InputConnection;Landroid/os/IBinder;II)V"/> + <method name="<init>(Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/InputBinding;)V"/> + <method name="getConnection()Landroid/view/inputmethod/InputConnection;"/> + <method name="getConnectionToken()Landroid/os/IBinder;"/> + <method name="getPid()I"/> + <method name="getUid()I"/> + <field name="CREATOR"/> + </class> + <class name="android/view/inputmethod/InputConnection" since="3"> + <extends name="java/lang/Object"/> + <method name="beginBatchEdit()Z"/> + <method name="clearMetaKeyStates(I)Z"/> + <method name="closeConnection()V" since="24"/> + <method name="commitCompletion(Landroid/view/inputmethod/CompletionInfo;)Z"/> + <method name="commitContent(Landroid/view/inputmethod/InputContentInfo;ILandroid/os/Bundle;)Z" since="25"/> + <method name="commitCorrection(Landroid/view/inputmethod/CorrectionInfo;)Z" since="11"/> + <method name="commitText(Ljava/lang/CharSequence;I)Z"/> + <method name="deleteSurroundingText(II)Z"/> + <method name="deleteSurroundingTextInCodePoints(II)Z" since="24"/> + <method name="endBatchEdit()Z"/> + <method name="finishComposingText()Z"/> + <method name="getCursorCapsMode(I)I"/> + <method name="getExtractedText(Landroid/view/inputmethod/ExtractedTextRequest;I)Landroid/view/inputmethod/ExtractedText;"/> + <method name="getHandler()Landroid/os/Handler;" since="24"/> + <method name="getSelectedText(I)Ljava/lang/CharSequence;" since="9"/> + <method name="getTextAfterCursor(II)Ljava/lang/CharSequence;"/> + <method name="getTextBeforeCursor(II)Ljava/lang/CharSequence;"/> + <method name="performContextMenuAction(I)Z"/> + <method name="performEditorAction(I)Z"/> + <method name="performPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)Z"/> + <method name="reportFullscreenMode(Z)Z"/> + <method name="requestCursorUpdates(I)Z" since="21"/> + <method name="sendKeyEvent(Landroid/view/KeyEvent;)Z"/> + <method name="setComposingRegion(II)Z" since="9"/> + <method name="setComposingText(Ljava/lang/CharSequence;I)Z"/> + <method name="setSelection(II)Z"/> + <field name="CURSOR_UPDATE_IMMEDIATE" since="21"/> + <field name="CURSOR_UPDATE_MONITOR" since="21"/> + <field name="GET_EXTRACTED_TEXT_MONITOR"/> + <field name="GET_TEXT_WITH_STYLES"/> + <field name="INPUT_CONTENT_GRANT_READ_URI_PERMISSION" since="25"/> + </class> + <class name="android/view/inputmethod/InputConnectionWrapper" since="3"> + <extends name="java/lang/Object"/> + <implements name="android/view/inputmethod/InputConnection"/> + <method name="<init>(Landroid/view/inputmethod/InputConnection;Z)V"/> + <method name="setTarget(Landroid/view/inputmethod/InputConnection;)V"/> + </class> + <class name="android/view/inputmethod/InputContentInfo" since="25"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/net/Uri;Landroid/content/ClipDescription;)V"/> + <method name="<init>(Landroid/net/Uri;Landroid/content/ClipDescription;Landroid/net/Uri;)V"/> + <method name="getContentUri()Landroid/net/Uri;"/> + <method name="getDescription()Landroid/content/ClipDescription;"/> + <method name="getLinkUri()Landroid/net/Uri;"/> + <method name="releasePermission()V"/> + <method name="requestPermission()V"/> + <field name="CREATOR"/> + </class> + <class name="android/view/inputmethod/InputMethod" since="3"> + <extends name="java/lang/Object"/> + <method name="attachToken(Landroid/os/IBinder;)V"/> + <method name="bindInput(Landroid/view/inputmethod/InputBinding;)V"/> + <method name="changeInputMethodSubtype(Landroid/view/inputmethod/InputMethodSubtype;)V" since="11"/> + <method name="createSession(Landroid/view/inputmethod/InputMethod$SessionCallback;)V"/> + <method name="hideSoftInput(ILandroid/os/ResultReceiver;)V"/> + <method name="restartInput(Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/EditorInfo;)V"/> + <method name="revokeSession(Landroid/view/inputmethod/InputMethodSession;)V"/> + <method name="setSessionEnabled(Landroid/view/inputmethod/InputMethodSession;Z)V"/> + <method name="showSoftInput(ILandroid/os/ResultReceiver;)V"/> + <method name="startInput(Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/EditorInfo;)V"/> + <method name="unbindInput()V"/> + <field name="SERVICE_INTERFACE"/> + <field name="SERVICE_META_DATA"/> + <field name="SHOW_EXPLICIT"/> + <field name="SHOW_FORCED"/> + </class> + <class name="android/view/inputmethod/InputMethod$SessionCallback" since="3"> + <extends name="java/lang/Object"/> + <method name="sessionCreated(Landroid/view/inputmethod/InputMethodSession;)V"/> + </class> + <class name="android/view/inputmethod/InputMethodInfo" since="3"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/content/Context;Landroid/content/pm/ResolveInfo;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/String;)V"/> + <method name="dump(Landroid/util/Printer;Ljava/lang/String;)V"/> + <method name="getComponent()Landroid/content/ComponentName;"/> + <method name="getId()Ljava/lang/String;"/> + <method name="getIsDefaultResourceId()I"/> + <method name="getPackageName()Ljava/lang/String;"/> + <method name="getServiceInfo()Landroid/content/pm/ServiceInfo;"/> + <method name="getServiceName()Ljava/lang/String;"/> + <method name="getSettingsActivity()Ljava/lang/String;"/> + <method name="getSubtypeAt(I)Landroid/view/inputmethod/InputMethodSubtype;" since="11"/> + <method name="getSubtypeCount()I" since="11"/> + <method name="loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;"/> + <method name="loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;"/> + <field name="CREATOR"/> + </class> + <class name="android/view/inputmethod/InputMethodManager" since="3"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="dispatchKeyEventFromInputMethod(Landroid/view/View;Landroid/view/KeyEvent;)V" since="24"/> + <method name="displayCompletions(Landroid/view/View;[Landroid/view/inputmethod/CompletionInfo;)V"/> + <method name="getCurrentInputMethodSubtype()Landroid/view/inputmethod/InputMethodSubtype;" since="11"/> + <method name="getEnabledInputMethodList()Ljava/util/List;"/> + <method name="getEnabledInputMethodSubtypeList(Landroid/view/inputmethod/InputMethodInfo;Z)Ljava/util/List;" since="11"/> + <method name="getInputMethodList()Ljava/util/List;"/> + <method name="getLastInputMethodSubtype()Landroid/view/inputmethod/InputMethodSubtype;" since="14"/> + <method name="getShortcutInputMethodsAndSubtypes()Ljava/util/Map;" since="11"/> + <method name="hideSoftInputFromInputMethod(Landroid/os/IBinder;I)V"/> + <method name="hideSoftInputFromWindow(Landroid/os/IBinder;I)Z"/> + <method name="hideSoftInputFromWindow(Landroid/os/IBinder;ILandroid/os/ResultReceiver;)Z"/> + <method name="hideStatusIcon(Landroid/os/IBinder;)V"/> + <method name="isAcceptingText()Z"/> + <method name="isActive()Z"/> + <method name="isActive(Landroid/view/View;)Z"/> + <method name="isFullscreenMode()Z"/> + <method name="isWatchingCursor(Landroid/view/View;)Z" deprecated="21"/> + <method name="restartInput(Landroid/view/View;)V"/> + <method name="sendAppPrivateCommand(Landroid/view/View;Ljava/lang/String;Landroid/os/Bundle;)V"/> + <method name="setAdditionalInputMethodSubtypes(Ljava/lang/String;[Landroid/view/inputmethod/InputMethodSubtype;)V" since="14"/> + <method name="setCurrentInputMethodSubtype(Landroid/view/inputmethod/InputMethodSubtype;)Z" since="11"/> + <method name="setInputMethod(Landroid/os/IBinder;Ljava/lang/String;)V"/> + <method name="setInputMethodAndSubtype(Landroid/os/IBinder;Ljava/lang/String;Landroid/view/inputmethod/InputMethodSubtype;)V" since="11"/> + <method name="shouldOfferSwitchingToNextInputMethod(Landroid/os/IBinder;)Z" since="19"/> + <method name="showInputMethodAndSubtypeEnabler(Ljava/lang/String;)V" since="11"/> + <method name="showInputMethodPicker()V"/> + <method name="showSoftInput(Landroid/view/View;I)Z"/> + <method name="showSoftInput(Landroid/view/View;ILandroid/os/ResultReceiver;)Z"/> + <method name="showSoftInputFromInputMethod(Landroid/os/IBinder;I)V"/> + <method name="showStatusIcon(Landroid/os/IBinder;Ljava/lang/String;I)V"/> + <method name="switchToLastInputMethod(Landroid/os/IBinder;)Z" since="11"/> + <method name="switchToNextInputMethod(Landroid/os/IBinder;Z)Z" since="16"/> + <method name="toggleSoftInput(II)V"/> + <method name="toggleSoftInputFromWindow(Landroid/os/IBinder;II)V"/> + <method name="updateCursor(Landroid/view/View;IIII)V" deprecated="21"/> + <method name="updateCursorAnchorInfo(Landroid/view/View;Landroid/view/inputmethod/CursorAnchorInfo;)V" since="21"/> + <method name="updateExtractedText(Landroid/view/View;ILandroid/view/inputmethod/ExtractedText;)V"/> + <method name="updateSelection(Landroid/view/View;IIII)V"/> + <method name="viewClicked(Landroid/view/View;)V" since="14"/> + <field name="HIDE_IMPLICIT_ONLY"/> + <field name="HIDE_NOT_ALWAYS"/> + <field name="RESULT_HIDDEN"/> + <field name="RESULT_SHOWN"/> + <field name="RESULT_UNCHANGED_HIDDEN"/> + <field name="RESULT_UNCHANGED_SHOWN"/> + <field name="SHOW_FORCED"/> + <field name="SHOW_IMPLICIT"/> + </class> + <class name="android/view/inputmethod/InputMethodSession" since="3"> + <extends name="java/lang/Object"/> + <method name="appPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)V"/> + <method name="dispatchGenericMotionEvent(ILandroid/view/MotionEvent;Landroid/view/inputmethod/InputMethodSession$EventCallback;)V" since="17"/> + <method name="dispatchKeyEvent(ILandroid/view/KeyEvent;Landroid/view/inputmethod/InputMethodSession$EventCallback;)V"/> + <method name="dispatchTrackballEvent(ILandroid/view/MotionEvent;Landroid/view/inputmethod/InputMethodSession$EventCallback;)V"/> + <method name="displayCompletions([Landroid/view/inputmethod/CompletionInfo;)V"/> + <method name="finishInput()V"/> + <method name="toggleSoftInput(II)V"/> + <method name="updateCursor(Landroid/graphics/Rect;)V"/> + <method name="updateCursorAnchorInfo(Landroid/view/inputmethod/CursorAnchorInfo;)V" since="21"/> + <method name="updateExtractedText(ILandroid/view/inputmethod/ExtractedText;)V"/> + <method name="updateSelection(IIIIII)V"/> + <method name="viewClicked(Z)V" since="14"/> + </class> + <class name="android/view/inputmethod/InputMethodSession$EventCallback" since="3"> + <extends name="java/lang/Object"/> + <method name="finishedEvent(IZ)V"/> + </class> + <class name="android/view/inputmethod/InputMethodSubtype" since="11"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V" removed="14"/> + <method name="<init>(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)V" since="14" deprecated="19"/> + <method name="<init>(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZI)V" since="17" deprecated="19"/> + <method name="containsExtraValueKey(Ljava/lang/String;)Z" since="12"/> + <method name="getDisplayName(Landroid/content/Context;Ljava/lang/String;Landroid/content/pm/ApplicationInfo;)Ljava/lang/CharSequence;" since="14"/> + <method name="getExtraValue()Ljava/lang/String;"/> + <method name="getExtraValueOf(Ljava/lang/String;)Ljava/lang/String;" since="12"/> + <method name="getIconResId()I"/> + <method name="getLanguageTag()Ljava/lang/String;" since="24"/> + <method name="getLocale()Ljava/lang/String;" deprecated="24"/> + <method name="getMode()Ljava/lang/String;"/> + <method name="getNameResId()I"/> + <method name="isAsciiCapable()Z" since="19"/> + <method name="isAuxiliary()Z" since="14"/> + <method name="overridesImplicitlyEnabledSubtype()Z" since="14"/> + <field name="CREATOR"/> + </class> + <class name="android/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="build()Landroid/view/inputmethod/InputMethodSubtype;"/> + <method name="setIsAsciiCapable(Z)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;"/> + <method name="setIsAuxiliary(Z)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;"/> + <method name="setLanguageTag(Ljava/lang/String;)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;" since="24"/> + <method name="setOverridesImplicitlyEnabledSubtype(Z)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;"/> + <method name="setSubtypeExtraValue(Ljava/lang/String;)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;"/> + <method name="setSubtypeIconResId(I)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;"/> + <method name="setSubtypeId(I)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;"/> + <method name="setSubtypeLocale(Ljava/lang/String;)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;"/> + <method name="setSubtypeMode(Ljava/lang/String;)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;"/> + <method name="setSubtypeNameResId(I)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;"/> + </class> + <class name="android/view/textclassifier/TextClassification" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getConfidenceScore(Ljava/lang/String;)F"/> + <method name="getEntity(I)Ljava/lang/String;"/> + <method name="getEntityCount()I"/> + <method name="getIcon()Landroid/graphics/drawable/Drawable;"/> + <method name="getIntent()Landroid/content/Intent;"/> + <method name="getLabel()Ljava/lang/CharSequence;"/> + <method name="getOnClickListener()Landroid/view/View$OnClickListener;"/> + <method name="getText()Ljava/lang/String;"/> + </class> + <class name="android/view/textclassifier/TextClassification$Builder" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="build()Landroid/view/textclassifier/TextClassification;"/> + <method name="setEntityType(Ljava/lang/String;F)Landroid/view/textclassifier/TextClassification$Builder;"/> + <method name="setIcon(Landroid/graphics/drawable/Drawable;)Landroid/view/textclassifier/TextClassification$Builder;"/> + <method name="setIntent(Landroid/content/Intent;)Landroid/view/textclassifier/TextClassification$Builder;"/> + <method name="setLabel(Ljava/lang/String;)Landroid/view/textclassifier/TextClassification$Builder;"/> + <method name="setOnClickListener(Landroid/view/View$OnClickListener;)Landroid/view/textclassifier/TextClassification$Builder;"/> + <method name="setText(Ljava/lang/String;)Landroid/view/textclassifier/TextClassification$Builder;"/> + </class> + <class name="android/view/textclassifier/TextClassificationManager" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getTextClassifier()Landroid/view/textclassifier/TextClassifier;"/> + <method name="setTextClassifier(Landroid/view/textclassifier/TextClassifier;)V"/> + </class> + <class name="android/view/textclassifier/TextClassifier" since="26"> + <extends name="java/lang/Object"/> + <method name="classifyText(Ljava/lang/CharSequence;IILandroid/os/LocaleList;)Landroid/view/textclassifier/TextClassification;"/> + <method name="suggestSelection(Ljava/lang/CharSequence;IILandroid/os/LocaleList;)Landroid/view/textclassifier/TextSelection;"/> + <field name="NO_OP"/> + <field name="TYPE_ADDRESS"/> + <field name="TYPE_EMAIL"/> + <field name="TYPE_OTHER"/> + <field name="TYPE_PHONE"/> + <field name="TYPE_URL"/> + </class> + <class name="android/view/textclassifier/TextSelection" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getConfidenceScore(Ljava/lang/String;)F"/> + <method name="getEntity(I)Ljava/lang/String;"/> + <method name="getEntityCount()I"/> + <method name="getSelectionEndIndex()I"/> + <method name="getSelectionStartIndex()I"/> + </class> + <class name="android/view/textclassifier/TextSelection$Builder" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>(II)V"/> + <method name="build()Landroid/view/textclassifier/TextSelection;"/> + <method name="setEntityType(Ljava/lang/String;F)Landroid/view/textclassifier/TextSelection$Builder;"/> + </class> + <class name="android/view/textservice/SentenceSuggestionsInfo" since="16"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="<init>([Landroid/view/textservice/SuggestionsInfo;[I[I)V"/> + <method name="getLengthAt(I)I"/> + <method name="getOffsetAt(I)I"/> + <method name="getSuggestionsCount()I"/> + <method name="getSuggestionsInfoAt(I)Landroid/view/textservice/SuggestionsInfo;"/> + <field name="CREATOR"/> + </class> + <class name="android/view/textservice/SpellCheckerInfo" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>()V"/> + <method name="getComponent()Landroid/content/ComponentName;"/> + <method name="getId()Ljava/lang/String;"/> + <method name="getPackageName()Ljava/lang/String;"/> + <method name="getServiceInfo()Landroid/content/pm/ServiceInfo;"/> + <method name="getSettingsActivity()Ljava/lang/String;"/> + <method name="getSubtypeAt(I)Landroid/view/textservice/SpellCheckerSubtype;"/> + <method name="getSubtypeCount()I"/> + <method name="loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;"/> + <method name="loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;"/> + <field name="CREATOR"/> + </class> + <class name="android/view/textservice/SpellCheckerSession" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="cancel()V" since="15"/> + <method name="close()V"/> + <method name="getSentenceSuggestions([Landroid/view/textservice/TextInfo;I)V" since="16"/> + <method name="getSpellChecker()Landroid/view/textservice/SpellCheckerInfo;"/> + <method name="getSuggestions(Landroid/view/textservice/TextInfo;I)V" deprecated="16"/> + <method name="getSuggestions([Landroid/view/textservice/TextInfo;IZ)V" deprecated="16"/> + <method name="isSessionDisconnected()Z"/> + <field name="SERVICE_META_DATA"/> + </class> + <class name="android/view/textservice/SpellCheckerSession$SpellCheckerSessionListener" since="14"> + <extends name="java/lang/Object"/> + <method name="onGetSentenceSuggestions([Landroid/view/textservice/SentenceSuggestionsInfo;)V" since="16"/> + <method name="onGetSuggestions([Landroid/view/textservice/SuggestionsInfo;)V"/> + </class> + <class name="android/view/textservice/SpellCheckerSubtype" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(ILjava/lang/String;Ljava/lang/String;)V" deprecated="24"/> + <method name="containsExtraValueKey(Ljava/lang/String;)Z" since="16"/> + <method name="getDisplayName(Landroid/content/Context;Ljava/lang/String;Landroid/content/pm/ApplicationInfo;)Ljava/lang/CharSequence;"/> + <method name="getExtraValue()Ljava/lang/String;"/> + <method name="getExtraValueOf(Ljava/lang/String;)Ljava/lang/String;" since="16"/> + <method name="getLanguageTag()Ljava/lang/String;" since="24"/> + <method name="getLocale()Ljava/lang/String;" deprecated="24"/> + <method name="getNameResId()I"/> + <field name="CREATOR"/> + </class> + <class name="android/view/textservice/SuggestionsInfo" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(I[Ljava/lang/String;)V"/> + <method name="<init>(I[Ljava/lang/String;II)V"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="getCookie()I"/> + <method name="getSequence()I"/> + <method name="getSuggestionAt(I)Ljava/lang/String;"/> + <method name="getSuggestionsAttributes()I"/> + <method name="getSuggestionsCount()I"/> + <method name="setCookieAndSequence(II)V"/> + <field name="CREATOR"/> + <field name="RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS" since="15"/> + <field name="RESULT_ATTR_IN_THE_DICTIONARY"/> + <field name="RESULT_ATTR_LOOKS_LIKE_TYPO"/> + </class> + <class name="android/view/textservice/TextInfo" since="14"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="<init>(Ljava/lang/CharSequence;IIII)V" since="21"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;II)V"/> + <method name="getCharSequence()Ljava/lang/CharSequence;" since="21"/> + <method name="getCookie()I"/> + <method name="getSequence()I"/> + <method name="getText()Ljava/lang/String;"/> + <field name="CREATOR"/> + </class> + <class name="android/view/textservice/TextServicesManager" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="newSpellCheckerSession(Landroid/os/Bundle;Ljava/util/Locale;Landroid/view/textservice/SpellCheckerSession$SpellCheckerSessionListener;Z)Landroid/view/textservice/SpellCheckerSession;"/> + </class> + <class name="android/webkit/CacheManager" since="1" deprecated="11" removed="17"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="cacheDisabled()Z" deprecated="16"/> + <method name="endCacheTransaction()Z" deprecated="16"/> + <method name="getCacheFile(Ljava/lang/String;Ljava/util/Map;)Landroid/webkit/CacheManager$CacheResult;" deprecated="16"/> + <method name="getCacheFileBaseDir()Ljava/io/File;" deprecated="16"/> + <method name="saveCacheFile(Ljava/lang/String;Landroid/webkit/CacheManager$CacheResult;)V" deprecated="16"/> + <method name="startCacheTransaction()Z" deprecated="16"/> + </class> + <class name="android/webkit/CacheManager$CacheResult" since="1" deprecated="11" removed="17"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getContentDisposition()Ljava/lang/String;" since="7"/> + <method name="getContentLength()J"/> + <method name="getETag()Ljava/lang/String;"/> + <method name="getEncoding()Ljava/lang/String;"/> + <method name="getExpires()J"/> + <method name="getExpiresString()Ljava/lang/String;" since="7"/> + <method name="getHttpStatusCode()I"/> + <method name="getInputStream()Ljava/io/InputStream;"/> + <method name="getLastModified()Ljava/lang/String;"/> + <method name="getLocalPath()Ljava/lang/String;"/> + <method name="getLocation()Ljava/lang/String;"/> + <method name="getMimeType()Ljava/lang/String;"/> + <method name="getOutputStream()Ljava/io/OutputStream;"/> + <method name="setEncoding(Ljava/lang/String;)V"/> + <method name="setInputStream(Ljava/io/InputStream;)V"/> + </class> + <class name="android/webkit/CallbackProxy" since="1" removed="8"> + <extends name="android/os/Handler"/> + <method name="<init>(Landroid/content/Context;Landroid/webkit/WebView;)V"/> + <method name="addMessageToConsole(Ljava/lang/String;ILjava/lang/String;)V" since="7"/> + <method name="createWindow(ZZ)Landroid/webkit/WebView;"/> + <method name="doUpdateVisitedHistory(Ljava/lang/String;Z)V"/> + <method name="getBackForwardList()Landroid/webkit/WebBackForwardList;"/> + <method name="getProgress()I"/> + <method name="getVisitedHistory(Landroid/webkit/ValueCallback;)V" since="7"/> + <method name="getWebChromeClient()Landroid/webkit/WebChromeClient;" since="7"/> + <method name="onCloseWindow(Landroid/webkit/WebView;)V"/> + <method name="onDownloadStart(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;J)Z"/> + <method name="onExceededDatabaseQuota(Ljava/lang/String;Ljava/lang/String;JJJLandroid/webkit/WebStorage$QuotaUpdater;)V" since="5"/> + <method name="onFormResubmission(Landroid/os/Message;Landroid/os/Message;)V"/> + <method name="onGeolocationPermissionsHidePrompt()V" since="7"/> + <method name="onGeolocationPermissionsShowPrompt(Ljava/lang/String;Landroid/webkit/GeolocationPermissions$Callback;)V" since="7"/> + <method name="onJsAlert(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="onJsBeforeUnload(Ljava/lang/String;Ljava/lang/String;)Z"/> + <method name="onJsConfirm(Ljava/lang/String;Ljava/lang/String;)Z"/> + <method name="onJsPrompt(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="onJsTimeout()Z" since="7"/> + <method name="onLoadResource(Ljava/lang/String;)V"/> + <method name="onPageFinished(Ljava/lang/String;)V"/> + <method name="onPageStarted(Ljava/lang/String;Landroid/graphics/Bitmap;)V"/> + <method name="onProgressChanged(I)V"/> + <method name="onReachedMaxAppCacheSize(JJLandroid/webkit/WebStorage$QuotaUpdater;)V" since="7"/> + <method name="onReceivedError(ILjava/lang/String;Ljava/lang/String;)V"/> + <method name="onReceivedHttpAuthRequest(Landroid/webkit/HttpAuthHandler;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="onReceivedIcon(Landroid/graphics/Bitmap;)V"/> + <method name="onReceivedTitle(Ljava/lang/String;)V"/> + <method name="onRequestFocus()V"/> + <method name="onSavePassword(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Message;)Z"/> + <method name="onScaleChanged(FF)V"/> + <method name="onTooManyRedirects(Landroid/os/Message;Landroid/os/Message;)V"/> + <method name="onUnhandledKeyEvent(Landroid/view/KeyEvent;)V"/> + <method name="setDownloadListener(Landroid/webkit/DownloadListener;)V"/> + <method name="setWebChromeClient(Landroid/webkit/WebChromeClient;)V"/> + <method name="setWebViewClient(Landroid/webkit/WebViewClient;)V"/> + <method name="shouldOverrideUrlLoading(Ljava/lang/String;)Z"/> + <method name="uiOverrideKeyEvent(Landroid/view/KeyEvent;)Z"/> + <method name="uiOverrideUrlLoading(Ljava/lang/String;)Z"/> + </class> + <class name="android/webkit/ClientCertRequest" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="cancel()V"/> + <method name="getHost()Ljava/lang/String;"/> + <method name="getKeyTypes()[Ljava/lang/String;"/> + <method name="getPort()I"/> + <method name="getPrincipals()[Ljava/security/Principal;"/> + <method name="ignore()V"/> + <method name="proceed(Ljava/security/PrivateKey;[Ljava/security/cert/X509Certificate;)V"/> + </class> + <class name="android/webkit/ConsoleMessage" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;ILandroid/webkit/ConsoleMessage$MessageLevel;)V"/> + <method name="lineNumber()I"/> + <method name="message()Ljava/lang/String;"/> + <method name="messageLevel()Landroid/webkit/ConsoleMessage$MessageLevel;"/> + <method name="sourceId()Ljava/lang/String;"/> + </class> + <class name="android/webkit/ConsoleMessage$MessageLevel" since="8"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/webkit/ConsoleMessage$MessageLevel;"/> + <method name="values()[Landroid/webkit/ConsoleMessage$MessageLevel;"/> + <field name="DEBUG"/> + <field name="ERROR"/> + <field name="LOG"/> + <field name="TIP"/> + <field name="WARNING"/> + </class> + <class name="android/webkit/CookieManager" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="acceptCookie()Z"/> + <method name="acceptThirdPartyCookies(Landroid/webkit/WebView;)Z" since="21"/> + <method name="allowFileSchemeCookies()Z" since="12"/> + <method name="flush()V" since="21"/> + <method name="getCookie(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getInstance()Landroid/webkit/CookieManager;"/> + <method name="hasCookies()Z"/> + <method name="removeAllCookie()V" deprecated="21"/> + <method name="removeAllCookies(Landroid/webkit/ValueCallback;)V" since="21"/> + <method name="removeExpiredCookie()V" deprecated="21"/> + <method name="removeSessionCookie()V" deprecated="21"/> + <method name="removeSessionCookies(Landroid/webkit/ValueCallback;)V" since="21"/> + <method name="setAcceptCookie(Z)V"/> + <method name="setAcceptFileSchemeCookies(Z)V" since="12"/> + <method name="setAcceptThirdPartyCookies(Landroid/webkit/WebView;Z)V" since="21"/> + <method name="setCookie(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="setCookie(Ljava/lang/String;Ljava/lang/String;Landroid/webkit/ValueCallback;)V" since="21"/> + </class> + <class name="android/webkit/CookieSyncManager" since="1" deprecated="21"> + <extends name="android/webkit/WebSyncManager"/> + <method name="<init>()V"/> + <method name="createInstance(Landroid/content/Context;)Landroid/webkit/CookieSyncManager;"/> + <method name="getInstance()Landroid/webkit/CookieSyncManager;"/> + <method name="syncFromRamToFlash()V" deprecated="21"/> + <field name="LOGTAG" since="21"/> + <field name="mDataBase" since="21"/> + <field name="mHandler" since="21"/> + </class> + <class name="android/webkit/DateSorter" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="getBoundary(I)J"/> + <method name="getIndex(J)I"/> + <method name="getLabel(I)Ljava/lang/String;"/> + <field name="DAY_COUNT"/> + </class> + <class name="android/webkit/DownloadListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onDownloadStart(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V"/> + </class> + <class name="android/webkit/GeolocationPermissions" since="5"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="allow(Ljava/lang/String;)V" since="7"/> + <method name="clear(Ljava/lang/String;)V" since="7"/> + <method name="clearAll()V" since="7"/> + <method name="getAllowed(Ljava/lang/String;Landroid/webkit/ValueCallback;)V" since="7"/> + <method name="getInstance()Landroid/webkit/GeolocationPermissions;" since="7"/> + <method name="getOrigins(Landroid/webkit/ValueCallback;)V" since="7"/> + </class> + <class name="android/webkit/GeolocationPermissions$Callback" since="5"> + <extends name="java/lang/Object"/> + <method name="invoke(Ljava/lang/String;ZZ)V"/> + </class> + <class name="android/webkit/HttpAuthHandler" since="1"> + <extends name="android/os/Handler"/> + <method name="<init>()V"/> + <method name="cancel()V"/> + <method name="proceed(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="useHttpAuthUsernamePassword()Z"/> + </class> + <class name="android/webkit/JavascriptInterface" since="17"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + </class> + <class name="android/webkit/JsPromptResult" since="1"> + <extends name="android/webkit/JsResult"/> + <method name="<init>()V"/> + <method name="confirm(Ljava/lang/String;)V"/> + </class> + <class name="android/webkit/JsResult" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="cancel()V"/> + <method name="confirm()V"/> + <method name="wakeUp()V" removed="16"/> + <field name="mProxy" removed="8"/> + <field name="mResult" removed="16"/> + </class> + <class name="android/webkit/MimeTypeMap" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getExtensionFromMimeType(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getFileExtensionFromUrl(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getMimeTypeFromExtension(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getSingleton()Landroid/webkit/MimeTypeMap;"/> + <method name="hasExtension(Ljava/lang/String;)Z"/> + <method name="hasMimeType(Ljava/lang/String;)Z"/> + </class> + <class name="android/webkit/PermissionRequest" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="deny()V"/> + <method name="getOrigin()Landroid/net/Uri;"/> + <method name="getResources()[Ljava/lang/String;"/> + <method name="grant([Ljava/lang/String;)V"/> + <field name="RESOURCE_AUDIO_CAPTURE"/> + <field name="RESOURCE_MIDI_SYSEX" since="23"/> + <field name="RESOURCE_PROTECTED_MEDIA_ID"/> + <field name="RESOURCE_VIDEO_CAPTURE"/> + </class> + <class name="android/webkit/Plugin" since="1" deprecated="5" removed="12"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="dispatchClickEvent(Landroid/content/Context;)V"/> + <method name="getDescription()Ljava/lang/String;"/> + <method name="getFileName()Ljava/lang/String;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getPath()Ljava/lang/String;"/> + <method name="setClickHandler(Landroid/webkit/Plugin$PreferencesClickHandler;)V"/> + <method name="setDescription(Ljava/lang/String;)V"/> + <method name="setFileName(Ljava/lang/String;)V"/> + <method name="setName(Ljava/lang/String;)V"/> + <method name="setPath(Ljava/lang/String;)V"/> + </class> + <class name="android/webkit/Plugin$PreferencesClickHandler" since="1" removed="12"> + <extends name="java/lang/Object"/> + <method name="handleClickEvent(Landroid/content/Context;)V"/> + </class> + <class name="android/webkit/PluginData" since="3" deprecated="5" removed="12"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/io/InputStream;JLjava/util/Map;I)V"/> + <method name="getContentLength()J"/> + <method name="getHeaders()Ljava/util/Map;"/> + <method name="getInputStream()Ljava/io/InputStream;"/> + <method name="getStatusCode()I"/> + </class> + <class name="android/webkit/PluginList" since="1" deprecated="5" removed="12"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addPlugin(Landroid/webkit/Plugin;)V"/> + <method name="clear()V"/> + <method name="getList()Ljava/util/List;"/> + <method name="pluginClicked(Landroid/content/Context;I)V"/> + <method name="removePlugin(Landroid/webkit/Plugin;)V"/> + </class> + <class name="android/webkit/PluginStub" since="5"> + <extends name="java/lang/Object"/> + <method name="getEmbeddedView(ILandroid/content/Context;)Landroid/view/View;"/> + <method name="getFullScreenView(ILandroid/content/Context;)Landroid/view/View;"/> + </class> + <class name="android/webkit/RenderProcessGoneDetail" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="didCrash()Z"/> + <method name="rendererPriorityAtExit()I"/> + </class> + <class name="android/webkit/ServiceWorkerClient" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="shouldInterceptRequest(Landroid/webkit/WebResourceRequest;)Landroid/webkit/WebResourceResponse;"/> + </class> + <class name="android/webkit/ServiceWorkerController" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getInstance()Landroid/webkit/ServiceWorkerController;"/> + <method name="getServiceWorkerWebSettings()Landroid/webkit/ServiceWorkerWebSettings;"/> + <method name="setServiceWorkerClient(Landroid/webkit/ServiceWorkerClient;)V"/> + </class> + <class name="android/webkit/ServiceWorkerWebSettings" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAllowContentAccess()Z"/> + <method name="getAllowFileAccess()Z"/> + <method name="getBlockNetworkLoads()Z"/> + <method name="getCacheMode()I"/> + <method name="setAllowContentAccess(Z)V"/> + <method name="setAllowFileAccess(Z)V"/> + <method name="setBlockNetworkLoads(Z)V"/> + <method name="setCacheMode(I)V"/> + </class> + <class name="android/webkit/SslErrorHandler" since="1"> + <extends name="android/os/Handler"/> + <method name="<init>()V"/> + <method name="cancel()V"/> + <method name="proceed()V"/> + </class> + <class name="android/webkit/URLUtil" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="composeSearchUrl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="decode([B)[B"/> + <method name="guessFileName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="guessUrl(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="isAboutUrl(Ljava/lang/String;)Z"/> + <method name="isAssetUrl(Ljava/lang/String;)Z"/> + <method name="isContentUrl(Ljava/lang/String;)Z"/> + <method name="isCookielessProxyUrl(Ljava/lang/String;)Z" deprecated="16"/> + <method name="isDataUrl(Ljava/lang/String;)Z"/> + <method name="isFileUrl(Ljava/lang/String;)Z"/> + <method name="isHttpUrl(Ljava/lang/String;)Z"/> + <method name="isHttpsUrl(Ljava/lang/String;)Z"/> + <method name="isJavaScriptUrl(Ljava/lang/String;)Z"/> + <method name="isNetworkUrl(Ljava/lang/String;)Z"/> + <method name="isValidUrl(Ljava/lang/String;)Z"/> + <method name="stripAnchor(Ljava/lang/String;)Ljava/lang/String;"/> + </class> + <class name="android/webkit/UrlInterceptHandler" since="1" deprecated="5" removed="12"> + <extends name="java/lang/Object"/> + <method name="getPluginData(Ljava/lang/String;Ljava/util/Map;)Landroid/webkit/PluginData;" since="3"/> + <method name="service(Ljava/lang/String;Ljava/util/Map;)Landroid/webkit/CacheManager$CacheResult;"/> + </class> + <class name="android/webkit/UrlInterceptRegistry" since="1" deprecated="5" removed="12"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getPluginData(Ljava/lang/String;Ljava/util/Map;)Landroid/webkit/PluginData;" since="3"/> + <method name="getSurrogate(Ljava/lang/String;Ljava/util/Map;)Landroid/webkit/CacheManager$CacheResult;"/> + <method name="registerHandler(Landroid/webkit/UrlInterceptHandler;)Z"/> + <method name="setUrlInterceptDisabled(Z)V"/> + <method name="unregisterHandler(Landroid/webkit/UrlInterceptHandler;)Z"/> + <method name="urlInterceptDisabled()Z"/> + </class> + <class name="android/webkit/ValueCallback" since="7"> + <extends name="java/lang/Object"/> + <method name="onReceiveValue(Ljava/lang/Object;)V"/> + </class> + <class name="android/webkit/WebBackForwardList" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="clone()Landroid/webkit/WebBackForwardList;"/> + <method name="getCurrentIndex()I"/> + <method name="getCurrentItem()Landroid/webkit/WebHistoryItem;"/> + <method name="getItemAtIndex(I)Landroid/webkit/WebHistoryItem;"/> + <method name="getSize()I"/> + </class> + <class name="android/webkit/WebChromeClient" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getDefaultVideoPoster()Landroid/graphics/Bitmap;" since="7"/> + <method name="getVideoLoadingProgressView()Landroid/view/View;" since="7"/> + <method name="getVisitedHistory(Landroid/webkit/ValueCallback;)V" since="7"/> + <method name="onCloseWindow(Landroid/webkit/WebView;)V"/> + <method name="onConsoleMessage(Landroid/webkit/ConsoleMessage;)Z" since="8"/> + <method name="onConsoleMessage(Ljava/lang/String;ILjava/lang/String;)V" since="7" deprecated="16"/> + <method name="onCreateWindow(Landroid/webkit/WebView;ZZLandroid/os/Message;)Z"/> + <method name="onExceededDatabaseQuota(Ljava/lang/String;Ljava/lang/String;JJJLandroid/webkit/WebStorage$QuotaUpdater;)V" since="5" deprecated="19"/> + <method name="onGeolocationPermissionsHidePrompt()V" since="5"/> + <method name="onGeolocationPermissionsShowPrompt(Ljava/lang/String;Landroid/webkit/GeolocationPermissions$Callback;)V" since="5"/> + <method name="onHideCustomView()V" since="7"/> + <method name="onJsAlert(Landroid/webkit/WebView;Ljava/lang/String;Ljava/lang/String;Landroid/webkit/JsResult;)Z"/> + <method name="onJsBeforeUnload(Landroid/webkit/WebView;Ljava/lang/String;Ljava/lang/String;Landroid/webkit/JsResult;)Z"/> + <method name="onJsConfirm(Landroid/webkit/WebView;Ljava/lang/String;Ljava/lang/String;Landroid/webkit/JsResult;)Z"/> + <method name="onJsPrompt(Landroid/webkit/WebView;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/webkit/JsPromptResult;)Z"/> + <method name="onJsTimeout()Z" since="7" deprecated="17"/> + <method name="onPermissionRequest(Landroid/webkit/PermissionRequest;)V" since="21"/> + <method name="onPermissionRequestCanceled(Landroid/webkit/PermissionRequest;)V" since="21"/> + <method name="onProgressChanged(Landroid/webkit/WebView;I)V"/> + <method name="onReachedMaxAppCacheSize(JJLandroid/webkit/WebStorage$QuotaUpdater;)V" since="7" deprecated="19"/> + <method name="onReceivedIcon(Landroid/webkit/WebView;Landroid/graphics/Bitmap;)V"/> + <method name="onReceivedTitle(Landroid/webkit/WebView;Ljava/lang/String;)V"/> + <method name="onReceivedTouchIconUrl(Landroid/webkit/WebView;Ljava/lang/String;Z)V" since="7"/> + <method name="onRequestFocus(Landroid/webkit/WebView;)V"/> + <method name="onShowCustomView(Landroid/view/View;ILandroid/webkit/WebChromeClient$CustomViewCallback;)V" since="14" deprecated="18"/> + <method name="onShowCustomView(Landroid/view/View;Landroid/webkit/WebChromeClient$CustomViewCallback;)V" since="7"/> + <method name="onShowFileChooser(Landroid/webkit/WebView;Landroid/webkit/ValueCallback;Landroid/webkit/WebChromeClient$FileChooserParams;)Z" since="21"/> + </class> + <class name="android/webkit/WebChromeClient$CustomViewCallback" since="7"> + <extends name="java/lang/Object"/> + <method name="onCustomViewHidden()V"/> + </class> + <class name="android/webkit/WebChromeClient$FileChooserParams" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="createIntent()Landroid/content/Intent;"/> + <method name="getAcceptTypes()[Ljava/lang/String;"/> + <method name="getFilenameHint()Ljava/lang/String;"/> + <method name="getMode()I"/> + <method name="getTitle()Ljava/lang/CharSequence;"/> + <method name="isCaptureEnabled()Z"/> + <method name="parseResult(ILandroid/content/Intent;)[Landroid/net/Uri;"/> + <field name="MODE_OPEN"/> + <field name="MODE_OPEN_MULTIPLE"/> + <field name="MODE_SAVE"/> + </class> + <class name="android/webkit/WebHistoryItem" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="clone()Landroid/webkit/WebHistoryItem;"/> + <method name="getFavicon()Landroid/graphics/Bitmap;"/> + <method name="getId()I" deprecated="16" removed="17"/> + <method name="getOriginalUrl()Ljava/lang/String;" since="3"/> + <method name="getTitle()Ljava/lang/String;"/> + <method name="getUrl()Ljava/lang/String;"/> + </class> + <class name="android/webkit/WebIconDatabase" since="1" deprecated="18"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="close()V"/> + <method name="getInstance()Landroid/webkit/WebIconDatabase;"/> + <method name="open(Ljava/lang/String;)V"/> + <method name="releaseIconForPageUrl(Ljava/lang/String;)V"/> + <method name="removeAllIcons()V"/> + <method name="requestIconForPageUrl(Ljava/lang/String;Landroid/webkit/WebIconDatabase$IconListener;)V"/> + <method name="retainIconForPageUrl(Ljava/lang/String;)V"/> + </class> + <class name="android/webkit/WebIconDatabase$IconListener" since="1" deprecated="18"> + <extends name="java/lang/Object"/> + <method name="onReceivedIcon(Ljava/lang/String;Landroid/graphics/Bitmap;)V"/> + </class> + <class name="android/webkit/WebMessage" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;[Landroid/webkit/WebMessagePort;)V"/> + <method name="getData()Ljava/lang/String;"/> + <method name="getPorts()[Landroid/webkit/WebMessagePort;"/> + </class> + <class name="android/webkit/WebMessagePort" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="close()V"/> + <method name="postMessage(Landroid/webkit/WebMessage;)V"/> + <method name="setWebMessageCallback(Landroid/webkit/WebMessagePort$WebMessageCallback;)V"/> + <method name="setWebMessageCallback(Landroid/webkit/WebMessagePort$WebMessageCallback;Landroid/os/Handler;)V"/> + </class> + <class name="android/webkit/WebMessagePort$WebMessageCallback" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onMessage(Landroid/webkit/WebMessagePort;Landroid/webkit/WebMessage;)V"/> + </class> + <class name="android/webkit/WebResourceError" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getDescription()Ljava/lang/CharSequence;"/> + <method name="getErrorCode()I"/> + </class> + <class name="android/webkit/WebResourceRequest" since="21"> + <extends name="java/lang/Object"/> + <method name="getMethod()Ljava/lang/String;"/> + <method name="getRequestHeaders()Ljava/util/Map;"/> + <method name="getUrl()Landroid/net/Uri;"/> + <method name="hasGesture()Z"/> + <method name="isForMainFrame()Z"/> + <method name="isRedirect()Z" since="24"/> + </class> + <class name="android/webkit/WebResourceResponse" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/util/Map;Ljava/io/InputStream;)V" since="21"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/io/InputStream;)V"/> + <method name="getData()Ljava/io/InputStream;"/> + <method name="getEncoding()Ljava/lang/String;"/> + <method name="getMimeType()Ljava/lang/String;"/> + <method name="getReasonPhrase()Ljava/lang/String;" since="21"/> + <method name="getResponseHeaders()Ljava/util/Map;" since="21"/> + <method name="getStatusCode()I" since="21"/> + <method name="setData(Ljava/io/InputStream;)V"/> + <method name="setEncoding(Ljava/lang/String;)V"/> + <method name="setMimeType(Ljava/lang/String;)V"/> + <method name="setResponseHeaders(Ljava/util/Map;)V" since="21"/> + <method name="setStatusCodeAndReasonPhrase(ILjava/lang/String;)V" since="21"/> + </class> + <class name="android/webkit/WebSettings" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="enableSmoothTransition()Z" since="11" deprecated="17"/> + <method name="getAllowContentAccess()Z" since="11"/> + <method name="getAllowFileAccess()Z" since="3"/> + <method name="getAllowFileAccessFromFileURLs()Z" since="16"/> + <method name="getAllowUniversalAccessFromFileURLs()Z" since="16"/> + <method name="getBlockNetworkImage()Z"/> + <method name="getBlockNetworkLoads()Z" since="8"/> + <method name="getBuiltInZoomControls()Z" since="3"/> + <method name="getCacheMode()I"/> + <method name="getCursiveFontFamily()Ljava/lang/String;"/> + <method name="getDatabaseEnabled()Z" since="5"/> + <method name="getDatabasePath()Ljava/lang/String;" since="5" deprecated="19"/> + <method name="getDefaultFixedFontSize()I"/> + <method name="getDefaultFontSize()I"/> + <method name="getDefaultTextEncodingName()Ljava/lang/String;"/> + <method name="getDefaultUserAgent(Landroid/content/Context;)Ljava/lang/String;" since="17"/> + <method name="getDefaultZoom()Landroid/webkit/WebSettings$ZoomDensity;" since="7" deprecated="19"/> + <method name="getDisabledActionModeMenuItems()I" since="24"/> + <method name="getDisplayZoomControls()Z" since="11"/> + <method name="getDomStorageEnabled()Z" since="7"/> + <method name="getFantasyFontFamily()Ljava/lang/String;"/> + <method name="getFixedFontFamily()Ljava/lang/String;"/> + <method name="getJavaScriptCanOpenWindowsAutomatically()Z"/> + <method name="getJavaScriptEnabled()Z"/> + <method name="getLayoutAlgorithm()Landroid/webkit/WebSettings$LayoutAlgorithm;"/> + <method name="getLightTouchEnabled()Z" deprecated="18"/> + <method name="getLoadWithOverviewMode()Z" since="7"/> + <method name="getLoadsImagesAutomatically()Z"/> + <method name="getMediaPlaybackRequiresUserGesture()Z" since="17"/> + <method name="getMinimumFontSize()I"/> + <method name="getMinimumLogicalFontSize()I"/> + <method name="getMixedContentMode()I" since="21"/> + <method name="getNavDump()Z" deprecated="16" removed="17"/> + <method name="getOffscreenPreRaster()Z" since="23"/> + <method name="getPluginState()Landroid/webkit/WebSettings$PluginState;" since="8" deprecated="18"/> + <method name="getPluginsEnabled()Z" deprecated="16" removed="18"/> + <method name="getPluginsPath()Ljava/lang/String;" deprecated="16" removed="18"/> + <method name="getSafeBrowsingEnabled()Z" since="26"/> + <method name="getSansSerifFontFamily()Ljava/lang/String;"/> + <method name="getSaveFormData()Z" deprecated="26"/> + <method name="getSavePassword()Z" deprecated="18"/> + <method name="getSerifFontFamily()Ljava/lang/String;"/> + <method name="getStandardFontFamily()Ljava/lang/String;"/> + <method name="getTextSize()Landroid/webkit/WebSettings$TextSize;" deprecated="16"/> + <method name="getTextZoom()I" since="14"/> + <method name="getUseDoubleTree()Z" deprecated="16" removed="17"/> + <method name="getUseWebViewBackgroundForOverscrollBackground()Z" since="9" deprecated="16" removed="17"/> + <method name="getUseWideViewPort()Z"/> + <method name="getUserAgent()I" deprecated="16" removed="17"/> + <method name="getUserAgentString()Ljava/lang/String;" since="3"/> + <method name="setAllowContentAccess(Z)V" since="11"/> + <method name="setAllowFileAccess(Z)V" since="3"/> + <method name="setAllowFileAccessFromFileURLs(Z)V" since="16"/> + <method name="setAllowUniversalAccessFromFileURLs(Z)V" since="16"/> + <method name="setAppCacheEnabled(Z)V" since="7"/> + <method name="setAppCacheMaxSize(J)V" since="7" deprecated="18"/> + <method name="setAppCachePath(Ljava/lang/String;)V" since="7"/> + <method name="setBlockNetworkImage(Z)V"/> + <method name="setBlockNetworkLoads(Z)V" since="8"/> + <method name="setBuiltInZoomControls(Z)V" since="3"/> + <method name="setCacheMode(I)V"/> + <method name="setCursiveFontFamily(Ljava/lang/String;)V"/> + <method name="setDatabaseEnabled(Z)V" since="5"/> + <method name="setDatabasePath(Ljava/lang/String;)V" since="5" deprecated="19"/> + <method name="setDefaultFixedFontSize(I)V"/> + <method name="setDefaultFontSize(I)V"/> + <method name="setDefaultTextEncodingName(Ljava/lang/String;)V"/> + <method name="setDefaultZoom(Landroid/webkit/WebSettings$ZoomDensity;)V" since="7" deprecated="19"/> + <method name="setDisabledActionModeMenuItems(I)V" since="24"/> + <method name="setDisplayZoomControls(Z)V" since="11"/> + <method name="setDomStorageEnabled(Z)V" since="7"/> + <method name="setEnableSmoothTransition(Z)V" since="11" deprecated="17"/> + <method name="setFantasyFontFamily(Ljava/lang/String;)V"/> + <method name="setFixedFontFamily(Ljava/lang/String;)V"/> + <method name="setGeolocationDatabasePath(Ljava/lang/String;)V" since="5" deprecated="24"/> + <method name="setGeolocationEnabled(Z)V" since="5"/> + <method name="setJavaScriptCanOpenWindowsAutomatically(Z)V"/> + <method name="setJavaScriptEnabled(Z)V"/> + <method name="setLayoutAlgorithm(Landroid/webkit/WebSettings$LayoutAlgorithm;)V"/> + <method name="setLightTouchEnabled(Z)V" deprecated="18"/> + <method name="setLoadWithOverviewMode(Z)V" since="7"/> + <method name="setLoadsImagesAutomatically(Z)V"/> + <method name="setMediaPlaybackRequiresUserGesture(Z)V" since="17"/> + <method name="setMinimumFontSize(I)V"/> + <method name="setMinimumLogicalFontSize(I)V"/> + <method name="setMixedContentMode(I)V" since="21"/> + <method name="setNavDump(Z)V" deprecated="16" removed="17"/> + <method name="setNeedInitialFocus(Z)V"/> + <method name="setOffscreenPreRaster(Z)V" since="23"/> + <method name="setPluginState(Landroid/webkit/WebSettings$PluginState;)V" since="8" deprecated="18"/> + <method name="setPluginsEnabled(Z)V" deprecated="16" removed="18"/> + <method name="setPluginsPath(Ljava/lang/String;)V" deprecated="16" removed="18"/> + <method name="setRenderPriority(Landroid/webkit/WebSettings$RenderPriority;)V" deprecated="18"/> + <method name="setSafeBrowsingEnabled(Z)V" since="26"/> + <method name="setSansSerifFontFamily(Ljava/lang/String;)V"/> + <method name="setSaveFormData(Z)V" deprecated="26"/> + <method name="setSavePassword(Z)V" deprecated="18"/> + <method name="setSerifFontFamily(Ljava/lang/String;)V"/> + <method name="setStandardFontFamily(Ljava/lang/String;)V"/> + <method name="setSupportMultipleWindows(Z)V"/> + <method name="setSupportZoom(Z)V"/> + <method name="setTextSize(Landroid/webkit/WebSettings$TextSize;)V" deprecated="16"/> + <method name="setTextZoom(I)V" since="14"/> + <method name="setUseDoubleTree(Z)V" deprecated="16" removed="17"/> + <method name="setUseWebViewBackgroundForOverscrollBackground(Z)V" since="9" deprecated="16" removed="17"/> + <method name="setUseWideViewPort(Z)V"/> + <method name="setUserAgent(I)V" deprecated="16" removed="17"/> + <method name="setUserAgentString(Ljava/lang/String;)V" since="3"/> + <method name="supportMultipleWindows()Z"/> + <method name="supportZoom()Z"/> + <field name="LOAD_CACHE_ELSE_NETWORK"/> + <field name="LOAD_CACHE_ONLY"/> + <field name="LOAD_DEFAULT"/> + <field name="LOAD_NORMAL" deprecated="17"/> + <field name="LOAD_NO_CACHE"/> + <field name="MENU_ITEM_NONE" since="24"/> + <field name="MENU_ITEM_PROCESS_TEXT" since="24"/> + <field name="MENU_ITEM_SHARE" since="24"/> + <field name="MENU_ITEM_WEB_SEARCH" since="24"/> + <field name="MIXED_CONTENT_ALWAYS_ALLOW" since="21"/> + <field name="MIXED_CONTENT_COMPATIBILITY_MODE" since="21"/> + <field name="MIXED_CONTENT_NEVER_ALLOW" since="21"/> + </class> + <class name="android/webkit/WebSettings$LayoutAlgorithm" since="1" deprecated="12"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/webkit/WebSettings$LayoutAlgorithm;"/> + <method name="values()[Landroid/webkit/WebSettings$LayoutAlgorithm;"/> + <field name="NARROW_COLUMNS"/> + <field name="NORMAL"/> + <field name="SINGLE_COLUMN"/> + <field name="TEXT_AUTOSIZING" since="19"/> + </class> + <class name="android/webkit/WebSettings$PluginState" since="8"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/webkit/WebSettings$PluginState;"/> + <method name="values()[Landroid/webkit/WebSettings$PluginState;"/> + <field name="OFF"/> + <field name="ON"/> + <field name="ON_DEMAND"/> + </class> + <class name="android/webkit/WebSettings$RenderPriority" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/webkit/WebSettings$RenderPriority;"/> + <method name="values()[Landroid/webkit/WebSettings$RenderPriority;"/> + <field name="HIGH"/> + <field name="LOW"/> + <field name="NORMAL"/> + </class> + <class name="android/webkit/WebSettings$TextSize" since="1" deprecated="16"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/webkit/WebSettings$TextSize;"/> + <method name="values()[Landroid/webkit/WebSettings$TextSize;"/> + <field name="LARGER"/> + <field name="LARGEST"/> + <field name="NORMAL"/> + <field name="SMALLER"/> + <field name="SMALLEST"/> + </class> + <class name="android/webkit/WebSettings$ZoomDensity" since="7"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/webkit/WebSettings$ZoomDensity;"/> + <method name="values()[Landroid/webkit/WebSettings$ZoomDensity;"/> + <field name="CLOSE"/> + <field name="FAR"/> + <field name="MEDIUM"/> + </class> + <class name="android/webkit/WebStorage" since="5"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="deleteAllData()V" since="7"/> + <method name="deleteOrigin(Ljava/lang/String;)V" since="7"/> + <method name="getInstance()Landroid/webkit/WebStorage;" since="7"/> + <method name="getOrigins(Landroid/webkit/ValueCallback;)V" since="7"/> + <method name="getQuotaForOrigin(Ljava/lang/String;Landroid/webkit/ValueCallback;)V" since="7"/> + <method name="getUsageForOrigin(Ljava/lang/String;Landroid/webkit/ValueCallback;)V" since="7"/> + <method name="setQuotaForOrigin(Ljava/lang/String;J)V" since="7" deprecated="18"/> + </class> + <class name="android/webkit/WebStorage$Origin" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getOrigin()Ljava/lang/String;"/> + <method name="getQuota()J"/> + <method name="getUsage()J"/> + </class> + <class name="android/webkit/WebStorage$QuotaUpdater" since="5" deprecated="19"> + <extends name="java/lang/Object"/> + <method name="updateQuota(J)V"/> + </class> + <class name="android/webkit/WebSyncManager" since="1" deprecated="21"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Runnable"/> + <method name="<init>(Landroid/content/Context;Ljava/lang/String;)V"/> + <method name="onSyncInit()V"/> + <method name="resetSync()V"/> + <method name="startSync()V"/> + <method name="stopSync()V"/> + <method name="sync()V"/> + <field name="LOGTAG"/> + <field name="mDataBase"/> + <field name="mHandler"/> + </class> + <class name="android/webkit/WebView" since="1"> + <extends name="android/widget/AbsoluteLayout"/> + <implements name="android/view/ViewGroup$OnHierarchyChangeListener"/> + <implements name="android/view/ViewTreeObserver$OnGlobalFocusChangeListener"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;IZ)V" since="11" deprecated="17"/> + <method name="addJavascriptInterface(Ljava/lang/Object;Ljava/lang/String;)V"/> + <method name="canGoBack()Z"/> + <method name="canGoBackOrForward(I)Z"/> + <method name="canGoForward()Z"/> + <method name="canZoomIn()Z" since="11" deprecated="17"/> + <method name="canZoomOut()Z" since="11" deprecated="17"/> + <method name="capturePicture()Landroid/graphics/Picture;" deprecated="19"/> + <method name="clearCache(Z)V"/> + <method name="clearClientCertPreferences(Ljava/lang/Runnable;)V" since="21"/> + <method name="clearFormData()V"/> + <method name="clearHistory()V"/> + <method name="clearMatches()V" since="3"/> + <method name="clearSslPreferences()V"/> + <method name="clearView()V" deprecated="18"/> + <method name="copyBackForwardList()Landroid/webkit/WebBackForwardList;"/> + <method name="createPrintDocumentAdapter()Landroid/print/PrintDocumentAdapter;" since="19" deprecated="21"/> + <method name="createPrintDocumentAdapter(Ljava/lang/String;)Landroid/print/PrintDocumentAdapter;" since="21"/> + <method name="createWebMessageChannel()[Landroid/webkit/WebMessagePort;" since="23"/> + <method name="debugDump()V" deprecated="16" removed="17"/> + <method name="destroy()V"/> + <method name="disablePlatformNotifications()V" deprecated="16" removed="17"/> + <method name="documentHasImages(Landroid/os/Message;)V"/> + <method name="emulateShiftHeld()V" since="8" deprecated="16" removed="17"/> + <method name="enablePlatformNotifications()V" deprecated="16" removed="17"/> + <method name="enableSlowWholeDocumentDraw()V" since="21"/> + <method name="evaluateJavascript(Ljava/lang/String;Landroid/webkit/ValueCallback;)V" since="19"/> + <method name="findAddress(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="findAll(Ljava/lang/String;)I" since="3" deprecated="16"/> + <method name="findAllAsync(Ljava/lang/String;)V" since="16"/> + <method name="findNext(Z)V" since="3"/> + <method name="flingScroll(II)V"/> + <method name="freeMemory()V" since="7" deprecated="19"/> + <method name="getCertificate()Landroid/net/http/SslCertificate;"/> + <method name="getContentHeight()I"/> + <method name="getCurrentWebViewPackage()Landroid/content/pm/PackageInfo;" since="26"/> + <method name="getFavicon()Landroid/graphics/Bitmap;"/> + <method name="getHitTestResult()Landroid/webkit/WebView$HitTestResult;"/> + <method name="getHttpAuthUsernamePassword(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;" deprecated="26"/> + <method name="getOriginalUrl()Ljava/lang/String;" since="3"/> + <method name="getPluginList()Landroid/webkit/PluginList;" removed="12"/> + <method name="getProgress()I"/> + <method name="getRendererPriorityWaivedWhenNotVisible()Z" since="26"/> + <method name="getRendererRequestedPriority()I" since="26"/> + <method name="getScale()F" deprecated="17"/> + <method name="getSettings()Landroid/webkit/WebSettings;"/> + <method name="getTitle()Ljava/lang/String;"/> + <method name="getUrl()Ljava/lang/String;"/> + <method name="getVisibleTitleHeight()I" since="11" deprecated="16" removed="17"/> + <method name="getWebChromeClient()Landroid/webkit/WebChromeClient;" since="26"/> + <method name="getWebViewClient()Landroid/webkit/WebViewClient;" since="26"/> + <method name="getZoomControls()Landroid/view/View;" removed="16"/> + <method name="goBack()V"/> + <method name="goBackOrForward(I)V"/> + <method name="goForward()V"/> + <method name="invokeZoomPicker()V"/> + <method name="isPrivateBrowsingEnabled()Z" since="11"/> + <method name="loadData(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="loadDataWithBaseURL(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="loadUrl(Ljava/lang/String;)V"/> + <method name="loadUrl(Ljava/lang/String;Ljava/util/Map;)V" since="8"/> + <method name="onPause()V" since="11"/> + <method name="onResume()V" since="11"/> + <method name="overlayHorizontalScrollbar()Z" deprecated="23"/> + <method name="overlayVerticalScrollbar()Z" deprecated="23"/> + <method name="pageDown(Z)Z"/> + <method name="pageUp(Z)Z"/> + <method name="pauseTimers()V"/> + <method name="postUrl(Ljava/lang/String;[B)V" since="5"/> + <method name="postVisualStateCallback(JLandroid/webkit/WebView$VisualStateCallback;)V" since="23"/> + <method name="postWebMessage(Landroid/webkit/WebMessage;Landroid/net/Uri;)V" since="23"/> + <method name="refreshPlugins(Z)V" removed="12"/> + <method name="reload()V"/> + <method name="removeJavascriptInterface(Ljava/lang/String;)V" since="11"/> + <method name="requestFocusNodeHref(Landroid/os/Message;)V"/> + <method name="requestImageRef(Landroid/os/Message;)V"/> + <method name="restorePicture(Landroid/os/Bundle;Ljava/io/File;)Z" since="3" deprecated="16" removed="17"/> + <method name="restoreState(Landroid/os/Bundle;)Landroid/webkit/WebBackForwardList;"/> + <method name="resumeTimers()V"/> + <method name="savePassword(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" deprecated="18"/> + <method name="savePicture(Landroid/os/Bundle;Ljava/io/File;)Z" since="3" deprecated="16" removed="17"/> + <method name="saveState(Landroid/os/Bundle;)Landroid/webkit/WebBackForwardList;"/> + <method name="saveWebArchive(Ljava/lang/String;)V" since="11"/> + <method name="saveWebArchive(Ljava/lang/String;ZLandroid/webkit/ValueCallback;)V" since="11"/> + <method name="setCertificate(Landroid/net/http/SslCertificate;)V" deprecated="17"/> + <method name="setDownloadListener(Landroid/webkit/DownloadListener;)V"/> + <method name="setFindListener(Landroid/webkit/WebView$FindListener;)V" since="16"/> + <method name="setHorizontalScrollbarOverlay(Z)V" deprecated="23"/> + <method name="setHttpAuthUsernamePassword(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" deprecated="26"/> + <method name="setInitialScale(I)V"/> + <method name="setMapTrackballToArrowKeys(Z)V" deprecated="17"/> + <method name="setNetworkAvailable(Z)V" since="3"/> + <method name="setPictureListener(Landroid/webkit/WebView$PictureListener;)V" deprecated="16"/> + <method name="setRendererPriorityPolicy(IZ)V" since="26"/> + <method name="setVerticalScrollbarOverlay(Z)V" deprecated="23"/> + <method name="setWebChromeClient(Landroid/webkit/WebChromeClient;)V"/> + <method name="setWebContentsDebuggingEnabled(Z)V" since="19"/> + <method name="setWebViewClient(Landroid/webkit/WebViewClient;)V"/> + <method name="showFindDialog(Ljava/lang/String;Z)Z" since="11" deprecated="18"/> + <method name="stopLoading()V"/> + <method name="zoomBy(F)V" since="21"/> + <method name="zoomIn()Z"/> + <method name="zoomOut()Z"/> + <field name="RENDERER_PRIORITY_BOUND" since="26"/> + <field name="RENDERER_PRIORITY_IMPORTANT" since="26"/> + <field name="RENDERER_PRIORITY_WAIVED" since="26"/> + <field name="SCHEME_GEO"/> + <field name="SCHEME_MAILTO"/> + <field name="SCHEME_TEL"/> + </class> + <class name="android/webkit/WebView$FindListener" since="16"> + <extends name="java/lang/Object"/> + <method name="onFindResultReceived(IIZ)V"/> + </class> + <class name="android/webkit/WebView$HitTestResult" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V" since="16"/> + <method name="<init>(Landroid/webkit/WebView;)V" removed="16"/> + <method name="getExtra()Ljava/lang/String;"/> + <method name="getType()I"/> + <field name="ANCHOR_TYPE" deprecated="16"/> + <field name="EDIT_TEXT_TYPE"/> + <field name="EMAIL_TYPE"/> + <field name="GEO_TYPE"/> + <field name="IMAGE_ANCHOR_TYPE" deprecated="16"/> + <field name="IMAGE_TYPE"/> + <field name="PHONE_TYPE"/> + <field name="SRC_ANCHOR_TYPE"/> + <field name="SRC_IMAGE_ANCHOR_TYPE"/> + <field name="UNKNOWN_TYPE"/> + </class> + <class name="android/webkit/WebView$PictureListener" since="1" deprecated="12"> + <extends name="java/lang/Object"/> + <method name="onNewPicture(Landroid/webkit/WebView;Landroid/graphics/Picture;)V" deprecated="16"/> + </class> + <class name="android/webkit/WebView$VisualStateCallback" since="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="onComplete(J)V"/> + </class> + <class name="android/webkit/WebView$WebViewTransport" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/webkit/WebView;)V"/> + <method name="getWebView()Landroid/webkit/WebView;"/> + <method name="setWebView(Landroid/webkit/WebView;)V"/> + </class> + <class name="android/webkit/WebViewClient" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="doUpdateVisitedHistory(Landroid/webkit/WebView;Ljava/lang/String;Z)V"/> + <method name="onFormResubmission(Landroid/webkit/WebView;Landroid/os/Message;Landroid/os/Message;)V"/> + <method name="onLoadResource(Landroid/webkit/WebView;Ljava/lang/String;)V"/> + <method name="onPageCommitVisible(Landroid/webkit/WebView;Ljava/lang/String;)V" since="23"/> + <method name="onPageFinished(Landroid/webkit/WebView;Ljava/lang/String;)V"/> + <method name="onPageStarted(Landroid/webkit/WebView;Ljava/lang/String;Landroid/graphics/Bitmap;)V"/> + <method name="onReceivedClientCertRequest(Landroid/webkit/WebView;Landroid/webkit/ClientCertRequest;)V" since="21"/> + <method name="onReceivedError(Landroid/webkit/WebView;ILjava/lang/String;Ljava/lang/String;)V" deprecated="23"/> + <method name="onReceivedError(Landroid/webkit/WebView;Landroid/webkit/WebResourceRequest;Landroid/webkit/WebResourceError;)V" since="23"/> + <method name="onReceivedHttpAuthRequest(Landroid/webkit/WebView;Landroid/webkit/HttpAuthHandler;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="onReceivedHttpError(Landroid/webkit/WebView;Landroid/webkit/WebResourceRequest;Landroid/webkit/WebResourceResponse;)V" since="23"/> + <method name="onReceivedLoginRequest(Landroid/webkit/WebView;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" since="12"/> + <method name="onReceivedSslError(Landroid/webkit/WebView;Landroid/webkit/SslErrorHandler;Landroid/net/http/SslError;)V" since="8"/> + <method name="onRenderProcessGone(Landroid/webkit/WebView;Landroid/webkit/RenderProcessGoneDetail;)Z" since="26"/> + <method name="onScaleChanged(Landroid/webkit/WebView;FF)V"/> + <method name="onTooManyRedirects(Landroid/webkit/WebView;Landroid/os/Message;Landroid/os/Message;)V" deprecated="16"/> + <method name="onUnhandledInputEvent(Landroid/webkit/WebView;Landroid/view/InputEvent;)V" since="21" removed="24"/> + <method name="onUnhandledKeyEvent(Landroid/webkit/WebView;Landroid/view/KeyEvent;)V" deprecated="21"/> + <method name="shouldInterceptRequest(Landroid/webkit/WebView;Landroid/webkit/WebResourceRequest;)Landroid/webkit/WebResourceResponse;" since="21"/> + <method name="shouldInterceptRequest(Landroid/webkit/WebView;Ljava/lang/String;)Landroid/webkit/WebResourceResponse;" since="11" deprecated="21"/> + <method name="shouldOverrideKeyEvent(Landroid/webkit/WebView;Landroid/view/KeyEvent;)Z"/> + <method name="shouldOverrideUrlLoading(Landroid/webkit/WebView;Landroid/webkit/WebResourceRequest;)Z" since="24"/> + <method name="shouldOverrideUrlLoading(Landroid/webkit/WebView;Ljava/lang/String;)Z" deprecated="24"/> + <field name="ERROR_AUTHENTICATION" since="5"/> + <field name="ERROR_BAD_URL" since="5"/> + <field name="ERROR_CONNECT" since="5"/> + <field name="ERROR_FAILED_SSL_HANDSHAKE" since="5"/> + <field name="ERROR_FILE" since="5"/> + <field name="ERROR_FILE_NOT_FOUND" since="5"/> + <field name="ERROR_HOST_LOOKUP" since="5"/> + <field name="ERROR_IO" since="5"/> + <field name="ERROR_PROXY_AUTHENTICATION" since="5"/> + <field name="ERROR_REDIRECT_LOOP" since="5"/> + <field name="ERROR_TIMEOUT" since="5"/> + <field name="ERROR_TOO_MANY_REQUESTS" since="5"/> + <field name="ERROR_UNKNOWN" since="5"/> + <field name="ERROR_UNSAFE_RESOURCE" since="26"/> + <field name="ERROR_UNSUPPORTED_AUTH_SCHEME" since="5"/> + <field name="ERROR_UNSUPPORTED_SCHEME" since="5"/> + </class> + <class name="android/webkit/WebViewDatabase" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="clearFormData()V" deprecated="26"/> + <method name="clearHttpAuthUsernamePassword()V"/> + <method name="clearUsernamePassword()V" deprecated="18"/> + <method name="getHttpAuthUsernamePassword(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;" since="26"/> + <method name="getInstance(Landroid/content/Context;)Landroid/webkit/WebViewDatabase;"/> + <method name="hasFormData()Z" deprecated="26"/> + <method name="hasHttpAuthUsernamePassword()Z"/> + <method name="hasUsernamePassword()Z" deprecated="18"/> + <method name="setHttpAuthUsernamePassword(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" since="26"/> + <field name="LOGTAG" removed="17"/> + </class> + <class name="android/webkit/WebViewFragment" since="11"> + <extends name="android/app/Fragment"/> + <method name="<init>()V"/> + <method name="getWebView()Landroid/webkit/WebView;"/> + </class> + <class name="android/widget/AbsListView" since="1"> + <extends name="android/widget/AdapterView"/> + <implements name="android/text/TextWatcher"/> + <implements name="android/view/ViewTreeObserver$OnGlobalLayoutListener"/> + <implements name="android/view/ViewTreeObserver$OnTouchModeChangeListener"/> + <implements name="android/widget/Filter$FilterListener"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="canScrollList(I)Z" since="19"/> + <method name="clearChoices()V" since="11"/> + <method name="clearTextFilter()V"/> + <method name="deferNotifyDataSetChanged()V" since="14"/> + <method name="fling(I)V" since="21"/> + <method name="generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/AbsListView$LayoutParams;"/> + <method name="getCacheColorHint()I"/> + <method name="getCheckedItemCount()I" since="11"/> + <method name="getCheckedItemIds()[J" since="11"/> + <method name="getCheckedItemPosition()I" since="11"/> + <method name="getCheckedItemPositions()Landroid/util/SparseBooleanArray;" since="11"/> + <method name="getChoiceMode()I" since="11"/> + <method name="getListPaddingBottom()I"/> + <method name="getListPaddingLeft()I"/> + <method name="getListPaddingRight()I"/> + <method name="getListPaddingTop()I"/> + <method name="getSelector()Landroid/graphics/drawable/Drawable;"/> + <method name="getTextFilter()Ljava/lang/CharSequence;" since="3"/> + <method name="getTranscriptMode()I"/> + <method name="handleDataChanged()V"/> + <method name="hasTextFilter()Z"/> + <method name="invalidateViews()V"/> + <method name="isFastScrollAlwaysVisible()Z" since="11"/> + <method name="isFastScrollEnabled()Z" since="3"/> + <method name="isInFilterMode()Z"/> + <method name="isItemChecked(I)Z" since="11"/> + <method name="isScrollingCacheEnabled()Z"/> + <method name="isSmoothScrollbarEnabled()Z" since="3"/> + <method name="isStackFromBottom()Z"/> + <method name="isTextFilterEnabled()Z"/> + <method name="layoutChildren()V"/> + <method name="onInitializeAccessibilityNodeInfoForItem(Landroid/view/View;ILandroid/view/accessibility/AccessibilityNodeInfo;)V" since="19"/> + <method name="onRemoteAdapterConnected()Z" since="11"/> + <method name="onRemoteAdapterDisconnected()V" since="11"/> + <method name="pointToPosition(II)I"/> + <method name="pointToRowId(II)J"/> + <method name="reclaimViews(Ljava/util/List;)V"/> + <method name="scrollListBy(I)V" since="19"/> + <method name="setAdapter(Landroid/widget/ListAdapter;)V" since="11"/> + <method name="setCacheColorHint(I)V"/> + <method name="setChoiceMode(I)V" since="11"/> + <method name="setDrawSelectorOnTop(Z)V"/> + <method name="setFastScrollAlwaysVisible(Z)V" since="11"/> + <method name="setFastScrollEnabled(Z)V" since="3"/> + <method name="setFastScrollStyle(I)V" since="21"/> + <method name="setFilterText(Ljava/lang/String;)V"/> + <method name="setFriction(F)V" since="11"/> + <method name="setItemChecked(IZ)V" since="11"/> + <method name="setMultiChoiceModeListener(Landroid/widget/AbsListView$MultiChoiceModeListener;)V" since="11"/> + <method name="setOnScrollListener(Landroid/widget/AbsListView$OnScrollListener;)V"/> + <method name="setRecyclerListener(Landroid/widget/AbsListView$RecyclerListener;)V"/> + <method name="setRemoteViewsAdapter(Landroid/content/Intent;)V" since="11"/> + <method name="setScrollIndicators(Landroid/view/View;Landroid/view/View;)V"/> + <method name="setScrollingCacheEnabled(Z)V"/> + <method name="setSelectionFromTop(II)V" since="21"/> + <method name="setSelector(I)V"/> + <method name="setSelector(Landroid/graphics/drawable/Drawable;)V"/> + <method name="setSmoothScrollbarEnabled(Z)V" since="3"/> + <method name="setStackFromBottom(Z)V"/> + <method name="setTextFilterEnabled(Z)V"/> + <method name="setTranscriptMode(I)V"/> + <method name="setVelocityScale(F)V" since="11"/> + <method name="smoothScrollBy(II)V" since="8"/> + <method name="smoothScrollToPosition(I)V" since="8"/> + <method name="smoothScrollToPosition(II)V" since="8"/> + <method name="smoothScrollToPositionFromTop(II)V" since="11"/> + <method name="smoothScrollToPositionFromTop(III)V" since="11"/> + <field name="CHOICE_MODE_MULTIPLE" since="11"/> + <field name="CHOICE_MODE_MULTIPLE_MODAL" since="11"/> + <field name="CHOICE_MODE_NONE" since="11"/> + <field name="CHOICE_MODE_SINGLE" since="11"/> + <field name="TRANSCRIPT_MODE_ALWAYS_SCROLL"/> + <field name="TRANSCRIPT_MODE_DISABLED"/> + <field name="TRANSCRIPT_MODE_NORMAL"/> + </class> + <class name="android/widget/AbsListView$LayoutParams" since="1"> + <extends name="android/view/ViewGroup$LayoutParams"/> + <method name="<init>(II)V"/> + <method name="<init>(III)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/view/ViewGroup$LayoutParams;)V"/> + </class> + <class name="android/widget/AbsListView$MultiChoiceModeListener" since="11"> + <extends name="java/lang/Object"/> + <implements name="android/view/ActionMode$Callback"/> + <method name="onItemCheckedStateChanged(Landroid/view/ActionMode;IJZ)V"/> + </class> + <class name="android/widget/AbsListView$OnScrollListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onScroll(Landroid/widget/AbsListView;III)V"/> + <method name="onScrollStateChanged(Landroid/widget/AbsListView;I)V"/> + <field name="SCROLL_STATE_FLING"/> + <field name="SCROLL_STATE_IDLE"/> + <field name="SCROLL_STATE_TOUCH_SCROLL"/> + </class> + <class name="android/widget/AbsListView$RecyclerListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onMovedToScrapHeap(Landroid/view/View;)V"/> + </class> + <class name="android/widget/AbsListView$SelectionBoundsAdjuster" since="11"> + <extends name="java/lang/Object"/> + <method name="adjustListItemSelectionBounds(Landroid/graphics/Rect;)V"/> + </class> + <class name="android/widget/AbsSeekBar" since="1"> + <extends name="android/widget/ProgressBar"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getKeyProgressIncrement()I" since="3"/> + <method name="getSplitTrack()Z" since="21"/> + <method name="getThumb()Landroid/graphics/drawable/Drawable;" since="16"/> + <method name="getThumbOffset()I"/> + <method name="getThumbTintList()Landroid/content/res/ColorStateList;" since="21"/> + <method name="getThumbTintMode()Landroid/graphics/PorterDuff$Mode;" since="21"/> + <method name="getTickMark()Landroid/graphics/drawable/Drawable;" since="24"/> + <method name="getTickMarkTintList()Landroid/content/res/ColorStateList;" since="24"/> + <method name="getTickMarkTintMode()Landroid/graphics/PorterDuff$Mode;" since="24"/> + <method name="setKeyProgressIncrement(I)V" since="3"/> + <method name="setSplitTrack(Z)V" since="21"/> + <method name="setThumb(Landroid/graphics/drawable/Drawable;)V"/> + <method name="setThumbOffset(I)V"/> + <method name="setThumbTintList(Landroid/content/res/ColorStateList;)V" since="21"/> + <method name="setThumbTintMode(Landroid/graphics/PorterDuff$Mode;)V" since="21"/> + <method name="setTickMark(Landroid/graphics/drawable/Drawable;)V" since="24"/> + <method name="setTickMarkTintList(Landroid/content/res/ColorStateList;)V" since="24"/> + <method name="setTickMarkTintMode(Landroid/graphics/PorterDuff$Mode;)V" since="24"/> + </class> + <class name="android/widget/AbsSpinner" since="1"> + <extends name="android/widget/AdapterView"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getAdapter()Landroid/widget/SpinnerAdapter;"/> + <method name="pointToPosition(II)I"/> + <method name="setAdapter(Landroid/widget/SpinnerAdapter;)V"/> + <method name="setSelection(IZ)V"/> + </class> + <class name="android/widget/AbsoluteLayout" since="1" deprecated="3"> + <extends name="android/view/ViewGroup"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + </class> + <class name="android/widget/AbsoluteLayout$LayoutParams" since="1"> + <extends name="android/view/ViewGroup$LayoutParams"/> + <method name="<init>(IIII)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/view/ViewGroup$LayoutParams;)V"/> + <method name="debug(Ljava/lang/String;)Ljava/lang/String;"/> + <field name="x"/> + <field name="y"/> + </class> + <class name="android/widget/ActionMenuView" since="21"> + <extends name="android/widget/LinearLayout"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="dismissPopupMenus()V"/> + <method name="generateDefaultLayoutParams()Landroid/widget/ActionMenuView$LayoutParams;"/> + <method name="generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/ActionMenuView$LayoutParams;"/> + <method name="generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroid/widget/ActionMenuView$LayoutParams;"/> + <method name="getMenu()Landroid/view/Menu;"/> + <method name="getOverflowIcon()Landroid/graphics/drawable/Drawable;" since="23"/> + <method name="getPopupTheme()I"/> + <method name="hideOverflowMenu()Z"/> + <method name="isOverflowMenuShowing()Z"/> + <method name="setOnMenuItemClickListener(Landroid/widget/ActionMenuView$OnMenuItemClickListener;)V"/> + <method name="setOverflowIcon(Landroid/graphics/drawable/Drawable;)V" since="23"/> + <method name="setPopupTheme(I)V"/> + <method name="showOverflowMenu()Z"/> + </class> + <class name="android/widget/ActionMenuView$LayoutParams" since="21"> + <extends name="android/widget/LinearLayout$LayoutParams"/> + <method name="<init>(II)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/view/ViewGroup$LayoutParams;)V"/> + <method name="<init>(Landroid/widget/ActionMenuView$LayoutParams;)V"/> + </class> + <class name="android/widget/ActionMenuView$OnMenuItemClickListener" since="21"> + <extends name="java/lang/Object"/> + <method name="onMenuItemClick(Landroid/view/MenuItem;)Z"/> + </class> + <class name="android/widget/Adapter" since="1"> + <extends name="java/lang/Object"/> + <method name="getAutofillOptions()[Ljava/lang/CharSequence;" since="26"/> + <method name="getCount()I"/> + <method name="getItem(I)Ljava/lang/Object;"/> + <method name="getItemId(I)J"/> + <method name="getItemViewType(I)I"/> + <method name="getView(ILandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;"/> + <method name="getViewTypeCount()I"/> + <method name="hasStableIds()Z"/> + <method name="isEmpty()Z"/> + <method name="registerDataSetObserver(Landroid/database/DataSetObserver;)V"/> + <method name="unregisterDataSetObserver(Landroid/database/DataSetObserver;)V"/> + <field name="IGNORE_ITEM_VIEW_TYPE"/> + <field name="NO_SELECTION"/> + </class> + <class name="android/widget/AdapterView" since="1"> + <extends name="android/view/ViewGroup"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getAdapter()Landroid/widget/Adapter;"/> + <method name="getCount()I"/> + <method name="getEmptyView()Landroid/view/View;"/> + <method name="getFirstVisiblePosition()I"/> + <method name="getItemAtPosition(I)Ljava/lang/Object;"/> + <method name="getItemIdAtPosition(I)J"/> + <method name="getLastVisiblePosition()I"/> + <method name="getOnItemClickListener()Landroid/widget/AdapterView$OnItemClickListener;"/> + <method name="getOnItemLongClickListener()Landroid/widget/AdapterView$OnItemLongClickListener;"/> + <method name="getOnItemSelectedListener()Landroid/widget/AdapterView$OnItemSelectedListener;"/> + <method name="getPositionForView(Landroid/view/View;)I"/> + <method name="getSelectedItem()Ljava/lang/Object;"/> + <method name="getSelectedItemId()J"/> + <method name="getSelectedItemPosition()I"/> + <method name="getSelectedView()Landroid/view/View;"/> + <method name="performItemClick(Landroid/view/View;IJ)Z"/> + <method name="setAdapter(Landroid/widget/Adapter;)V"/> + <method name="setEmptyView(Landroid/view/View;)V"/> + <method name="setOnItemClickListener(Landroid/widget/AdapterView$OnItemClickListener;)V"/> + <method name="setOnItemLongClickListener(Landroid/widget/AdapterView$OnItemLongClickListener;)V"/> + <method name="setOnItemSelectedListener(Landroid/widget/AdapterView$OnItemSelectedListener;)V"/> + <method name="setSelection(I)V"/> + <field name="INVALID_POSITION"/> + <field name="INVALID_ROW_ID"/> + <field name="ITEM_VIEW_TYPE_HEADER_OR_FOOTER"/> + <field name="ITEM_VIEW_TYPE_IGNORE"/> + </class> + <class name="android/widget/AdapterView$AdapterContextMenuInfo" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/view/ContextMenu$ContextMenuInfo"/> + <method name="<init>(Landroid/view/View;IJ)V"/> + <field name="id"/> + <field name="position"/> + <field name="targetView"/> + </class> + <class name="android/widget/AdapterView$OnItemClickListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onItemClick(Landroid/widget/AdapterView;Landroid/view/View;IJ)V"/> + </class> + <class name="android/widget/AdapterView$OnItemLongClickListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onItemLongClick(Landroid/widget/AdapterView;Landroid/view/View;IJ)Z"/> + </class> + <class name="android/widget/AdapterView$OnItemSelectedListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onItemSelected(Landroid/widget/AdapterView;Landroid/view/View;IJ)V"/> + <method name="onNothingSelected(Landroid/widget/AdapterView;)V"/> + </class> + <class name="android/widget/AdapterViewAnimator" since="11"> + <extends name="android/widget/AdapterView"/> + <implements name="android/widget/Advanceable" since="16"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" since="14"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="advance()V"/> + <method name="deferNotifyDataSetChanged()V" since="14"/> + <method name="fyiWillBeAdvancedByHostKThx()V"/> + <method name="getCurrentView()Landroid/view/View;"/> + <method name="getDisplayedChild()I"/> + <method name="getInAnimation()Landroid/animation/ObjectAnimator;"/> + <method name="getOutAnimation()Landroid/animation/ObjectAnimator;"/> + <method name="onRemoteAdapterConnected()Z"/> + <method name="onRemoteAdapterDisconnected()V"/> + <method name="setAnimateFirstView(Z)V"/> + <method name="setDisplayedChild(I)V"/> + <method name="setInAnimation(Landroid/animation/ObjectAnimator;)V"/> + <method name="setInAnimation(Landroid/content/Context;I)V"/> + <method name="setOutAnimation(Landroid/animation/ObjectAnimator;)V"/> + <method name="setOutAnimation(Landroid/content/Context;I)V"/> + <method name="setRemoteViewsAdapter(Landroid/content/Intent;)V"/> + <method name="showNext()V"/> + <method name="showPrevious()V"/> + </class> + <class name="android/widget/AdapterViewFlipper" since="11"> + <extends name="android/widget/AdapterViewAnimator"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" since="21"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getFlipInterval()I" since="16"/> + <method name="isAutoStart()Z"/> + <method name="isFlipping()Z"/> + <method name="setAutoStart(Z)V"/> + <method name="setFlipInterval(I)V"/> + <method name="startFlipping()V"/> + <method name="stopFlipping()V"/> + </class> + <class name="android/widget/Advanceable" since="16"> + <extends name="java/lang/Object"/> + <method name="advance()V"/> + <method name="fyiWillBeAdvancedByHostKThx()V"/> + </class> + <class name="android/widget/AlphabetIndexer" since="3"> + <extends name="android/database/DataSetObserver"/> + <implements name="android/widget/SectionIndexer"/> + <method name="<init>(Landroid/database/Cursor;ILjava/lang/CharSequence;)V"/> + <method name="compare(Ljava/lang/String;Ljava/lang/String;)I"/> + <method name="setCursor(Landroid/database/Cursor;)V"/> + <field name="mAlphabet"/> + <field name="mColumnIndex"/> + <field name="mDataCursor"/> + </class> + <class name="android/widget/AnalogClock" since="1" deprecated="23"> + <extends name="android/view/View"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + </class> + <class name="android/widget/ArrayAdapter" since="1"> + <extends name="android/widget/BaseAdapter"/> + <implements name="android/widget/Filterable"/> + <implements name="android/widget/ThemedSpinnerAdapter" since="23"/> + <method name="<init>(Landroid/content/Context;I)V"/> + <method name="<init>(Landroid/content/Context;II)V"/> + <method name="<init>(Landroid/content/Context;IILjava/util/List;)V"/> + <method name="<init>(Landroid/content/Context;II[Ljava/lang/Object;)V"/> + <method name="<init>(Landroid/content/Context;ILjava/util/List;)V"/> + <method name="<init>(Landroid/content/Context;I[Ljava/lang/Object;)V"/> + <method name="add(Ljava/lang/Object;)V"/> + <method name="addAll(Ljava/util/Collection;)V" since="11"/> + <method name="addAll([Ljava/lang/Object;)V" since="11"/> + <method name="clear()V"/> + <method name="createFromResource(Landroid/content/Context;II)Landroid/widget/ArrayAdapter;"/> + <method name="getContext()Landroid/content/Context;"/> + <method name="getPosition(Ljava/lang/Object;)I"/> + <method name="insert(Ljava/lang/Object;I)V"/> + <method name="remove(Ljava/lang/Object;)V"/> + <method name="setDropDownViewResource(I)V"/> + <method name="setNotifyOnChange(Z)V"/> + <method name="sort(Ljava/util/Comparator;)V" since="3"/> + </class> + <class name="android/widget/AutoCompleteTextView" since="1"> + <extends name="android/widget/EditText"/> + <implements name="android/widget/Filter$FilterListener"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;IILandroid/content/res/Resources$Theme;)V" since="24"/> + <method name="clearListSelection()V" since="3"/> + <method name="convertSelectionToString(Ljava/lang/Object;)Ljava/lang/CharSequence;"/> + <method name="dismissDropDown()V"/> + <method name="enoughToFilter()Z"/> + <method name="getAdapter()Landroid/widget/ListAdapter;"/> + <method name="getCompletionHint()Ljava/lang/CharSequence;" since="16"/> + <method name="getDropDownAnchor()I" since="3"/> + <method name="getDropDownBackground()Landroid/graphics/drawable/Drawable;" since="5"/> + <method name="getDropDownHeight()I" since="4"/> + <method name="getDropDownHorizontalOffset()I" since="5"/> + <method name="getDropDownVerticalOffset()I" since="5"/> + <method name="getDropDownWidth()I" since="3"/> + <method name="getFilter()Landroid/widget/Filter;"/> + <method name="getItemClickListener()Landroid/widget/AdapterView$OnItemClickListener;" deprecated="16"/> + <method name="getItemSelectedListener()Landroid/widget/AdapterView$OnItemSelectedListener;" deprecated="16"/> + <method name="getListSelection()I" since="3"/> + <method name="getOnItemClickListener()Landroid/widget/AdapterView$OnItemClickListener;" since="3"/> + <method name="getOnItemSelectedListener()Landroid/widget/AdapterView$OnItemSelectedListener;" since="3"/> + <method name="getThreshold()I"/> + <method name="getValidator()Landroid/widget/AutoCompleteTextView$Validator;"/> + <method name="isPerformingCompletion()Z" since="3"/> + <method name="isPopupShowing()Z"/> + <method name="performCompletion()V"/> + <method name="performFiltering(Ljava/lang/CharSequence;I)V"/> + <method name="performValidation()V"/> + <method name="replaceText(Ljava/lang/CharSequence;)V"/> + <method name="setAdapter(Landroid/widget/ListAdapter;)V"/> + <method name="setCompletionHint(Ljava/lang/CharSequence;)V"/> + <method name="setDropDownAnchor(I)V" since="3"/> + <method name="setDropDownBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V" since="5"/> + <method name="setDropDownBackgroundResource(I)V" since="5"/> + <method name="setDropDownHeight(I)V" since="4"/> + <method name="setDropDownHorizontalOffset(I)V" since="5"/> + <method name="setDropDownVerticalOffset(I)V" since="5"/> + <method name="setDropDownWidth(I)V" since="3"/> + <method name="setListSelection(I)V" since="3"/> + <method name="setOnDismissListener(Landroid/widget/AutoCompleteTextView$OnDismissListener;)V" since="17"/> + <method name="setOnItemClickListener(Landroid/widget/AdapterView$OnItemClickListener;)V"/> + <method name="setOnItemSelectedListener(Landroid/widget/AdapterView$OnItemSelectedListener;)V"/> + <method name="setText(Ljava/lang/CharSequence;Z)V" since="17"/> + <method name="setThreshold(I)V"/> + <method name="setValidator(Landroid/widget/AutoCompleteTextView$Validator;)V"/> + <method name="showDropDown()V"/> + </class> + <class name="android/widget/AutoCompleteTextView$OnDismissListener" since="17"> + <extends name="java/lang/Object"/> + <method name="onDismiss()V"/> + </class> + <class name="android/widget/AutoCompleteTextView$Validator" since="1"> + <extends name="java/lang/Object"/> + <method name="fixText(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;"/> + <method name="isValid(Ljava/lang/CharSequence;)Z"/> + </class> + <class name="android/widget/BaseAdapter" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/widget/ListAdapter"/> + <implements name="android/widget/SpinnerAdapter"/> + <method name="<init>()V"/> + <method name="notifyDataSetChanged()V"/> + <method name="notifyDataSetInvalidated()V"/> + </class> + <class name="android/widget/BaseExpandableListAdapter" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/widget/ExpandableListAdapter"/> + <implements name="android/widget/HeterogeneousExpandableList" since="8"/> + <method name="<init>()V"/> + <method name="notifyDataSetChanged()V"/> + <method name="notifyDataSetInvalidated()V"/> + </class> + <class name="android/widget/Button" since="1"> + <extends name="android/widget/TextView"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + </class> + <class name="android/widget/CalendarView" since="11"> + <extends name="android/widget/FrameLayout"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getDate()J"/> + <method name="getDateTextAppearance()I" since="16"/> + <method name="getFirstDayOfWeek()I"/> + <method name="getFocusedMonthDateColor()I" since="16" deprecated="23"/> + <method name="getMaxDate()J"/> + <method name="getMinDate()J"/> + <method name="getSelectedDateVerticalBar()Landroid/graphics/drawable/Drawable;" since="16" deprecated="23"/> + <method name="getSelectedWeekBackgroundColor()I" since="16" deprecated="23"/> + <method name="getShowWeekNumber()Z" deprecated="24"/> + <method name="getShownWeekCount()I" since="16" deprecated="23"/> + <method name="getUnfocusedMonthDateColor()I" since="16" deprecated="23"/> + <method name="getWeekDayTextAppearance()I" since="16"/> + <method name="getWeekNumberColor()I" since="16" deprecated="23"/> + <method name="getWeekSeparatorLineColor()I" since="16" deprecated="23"/> + <method name="setDate(J)V"/> + <method name="setDate(JZZ)V"/> + <method name="setDateTextAppearance(I)V" since="16"/> + <method name="setFirstDayOfWeek(I)V"/> + <method name="setFocusedMonthDateColor(I)V" since="16" deprecated="23"/> + <method name="setMaxDate(J)V"/> + <method name="setMinDate(J)V"/> + <method name="setOnDateChangeListener(Landroid/widget/CalendarView$OnDateChangeListener;)V"/> + <method name="setSelectedDateVerticalBar(I)V" since="16" deprecated="23"/> + <method name="setSelectedDateVerticalBar(Landroid/graphics/drawable/Drawable;)V" since="16" deprecated="23"/> + <method name="setSelectedWeekBackgroundColor(I)V" since="16" deprecated="23"/> + <method name="setShowWeekNumber(Z)V" deprecated="24"/> + <method name="setShownWeekCount(I)V" since="16" deprecated="23"/> + <method name="setUnfocusedMonthDateColor(I)V" since="16" deprecated="23"/> + <method name="setWeekDayTextAppearance(I)V" since="16"/> + <method name="setWeekNumberColor(I)V" since="16" deprecated="23"/> + <method name="setWeekSeparatorLineColor(I)V" since="16" deprecated="23"/> + </class> + <class name="android/widget/CalendarView$OnDateChangeListener" since="11"> + <extends name="java/lang/Object"/> + <method name="onSelectedDayChange(Landroid/widget/CalendarView;III)V"/> + </class> + <class name="android/widget/CheckBox" since="1"> + <extends name="android/widget/CompoundButton"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + </class> + <class name="android/widget/Checkable" since="1"> + <extends name="java/lang/Object"/> + <method name="isChecked()Z"/> + <method name="setChecked(Z)V"/> + <method name="toggle()V"/> + </class> + <class name="android/widget/CheckedTextView" since="1"> + <extends name="android/widget/TextView"/> + <implements name="android/widget/Checkable"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getCheckMarkDrawable()Landroid/graphics/drawable/Drawable;" since="16"/> + <method name="getCheckMarkTintList()Landroid/content/res/ColorStateList;" since="21"/> + <method name="getCheckMarkTintMode()Landroid/graphics/PorterDuff$Mode;" since="21"/> + <method name="onPaddingChanged(I)V" since="16" removed="17"/> + <method name="setCheckMarkDrawable(I)V"/> + <method name="setCheckMarkDrawable(Landroid/graphics/drawable/Drawable;)V"/> + <method name="setCheckMarkTintList(Landroid/content/res/ColorStateList;)V" since="21"/> + <method name="setCheckMarkTintMode(Landroid/graphics/PorterDuff$Mode;)V" since="21"/> + </class> + <class name="android/widget/Chronometer" since="1"> + <extends name="android/widget/TextView"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getBase()J"/> + <method name="getFormat()Ljava/lang/String;"/> + <method name="getOnChronometerTickListener()Landroid/widget/Chronometer$OnChronometerTickListener;" since="3"/> + <method name="isCountDown()Z" since="24"/> + <method name="isTheFinalCountDown()Z" since="26"/> + <method name="setBase(J)V"/> + <method name="setCountDown(Z)V" since="24"/> + <method name="setFormat(Ljava/lang/String;)V"/> + <method name="setOnChronometerTickListener(Landroid/widget/Chronometer$OnChronometerTickListener;)V" since="3"/> + <method name="start()V"/> + <method name="stop()V"/> + </class> + <class name="android/widget/Chronometer$OnChronometerTickListener" since="3"> + <extends name="java/lang/Object"/> + <method name="onChronometerTick(Landroid/widget/Chronometer;)V"/> + </class> + <class name="android/widget/CompoundButton" since="1"> + <extends name="android/widget/Button"/> + <implements name="android/widget/Checkable"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getButtonDrawable()Landroid/graphics/drawable/Drawable;" since="23"/> + <method name="getButtonTintList()Landroid/content/res/ColorStateList;" since="21"/> + <method name="getButtonTintMode()Landroid/graphics/PorterDuff$Mode;" since="21"/> + <method name="setButtonDrawable(I)V"/> + <method name="setButtonDrawable(Landroid/graphics/drawable/Drawable;)V"/> + <method name="setButtonTintList(Landroid/content/res/ColorStateList;)V" since="21"/> + <method name="setButtonTintMode(Landroid/graphics/PorterDuff$Mode;)V" since="21"/> + <method name="setOnCheckedChangeListener(Landroid/widget/CompoundButton$OnCheckedChangeListener;)V"/> + </class> + <class name="android/widget/CompoundButton$OnCheckedChangeListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onCheckedChanged(Landroid/widget/CompoundButton;Z)V"/> + </class> + <class name="android/widget/CursorAdapter" since="1"> + <extends name="android/widget/BaseAdapter"/> + <implements name="android/widget/Filterable"/> + <implements name="android/widget/ThemedSpinnerAdapter" since="23"/> + <method name="<init>(Landroid/content/Context;Landroid/database/Cursor;)V" deprecated="16"/> + <method name="<init>(Landroid/content/Context;Landroid/database/Cursor;I)V" since="11"/> + <method name="<init>(Landroid/content/Context;Landroid/database/Cursor;Z)V"/> + <method name="bindView(Landroid/view/View;Landroid/content/Context;Landroid/database/Cursor;)V"/> + <method name="changeCursor(Landroid/database/Cursor;)V"/> + <method name="convertToString(Landroid/database/Cursor;)Ljava/lang/CharSequence;"/> + <method name="getCursor()Landroid/database/Cursor;"/> + <method name="getFilterQueryProvider()Landroid/widget/FilterQueryProvider;"/> + <method name="init(Landroid/content/Context;Landroid/database/Cursor;Z)V" deprecated="16"/> + <method name="newDropDownView(Landroid/content/Context;Landroid/database/Cursor;Landroid/view/ViewGroup;)Landroid/view/View;"/> + <method name="newView(Landroid/content/Context;Landroid/database/Cursor;Landroid/view/ViewGroup;)Landroid/view/View;"/> + <method name="onContentChanged()V" since="3"/> + <method name="runQueryOnBackgroundThread(Ljava/lang/CharSequence;)Landroid/database/Cursor;"/> + <method name="setFilterQueryProvider(Landroid/widget/FilterQueryProvider;)V"/> + <method name="swapCursor(Landroid/database/Cursor;)Landroid/database/Cursor;" since="11"/> + <field name="FLAG_AUTO_REQUERY" since="11" deprecated="16"/> + <field name="FLAG_REGISTER_CONTENT_OBSERVER" since="11"/> + </class> + <class name="android/widget/CursorTreeAdapter" since="1"> + <extends name="android/widget/BaseExpandableListAdapter"/> + <implements name="android/widget/Filterable"/> + <method name="<init>(Landroid/database/Cursor;Landroid/content/Context;)V"/> + <method name="<init>(Landroid/database/Cursor;Landroid/content/Context;Z)V"/> + <method name="bindChildView(Landroid/view/View;Landroid/content/Context;Landroid/database/Cursor;Z)V"/> + <method name="bindGroupView(Landroid/view/View;Landroid/content/Context;Landroid/database/Cursor;Z)V"/> + <method name="changeCursor(Landroid/database/Cursor;)V"/> + <method name="convertToString(Landroid/database/Cursor;)Ljava/lang/String;"/> + <method name="getChild(II)Landroid/database/Cursor;"/> + <method name="getChildrenCursor(Landroid/database/Cursor;)Landroid/database/Cursor;"/> + <method name="getCursor()Landroid/database/Cursor;"/> + <method name="getFilterQueryProvider()Landroid/widget/FilterQueryProvider;"/> + <method name="getGroup(I)Landroid/database/Cursor;"/> + <method name="newChildView(Landroid/content/Context;Landroid/database/Cursor;ZLandroid/view/ViewGroup;)Landroid/view/View;"/> + <method name="newGroupView(Landroid/content/Context;Landroid/database/Cursor;ZLandroid/view/ViewGroup;)Landroid/view/View;"/> + <method name="notifyDataSetChanged(Z)V"/> + <method name="runQueryOnBackgroundThread(Ljava/lang/CharSequence;)Landroid/database/Cursor;"/> + <method name="setChildrenCursor(ILandroid/database/Cursor;)V"/> + <method name="setFilterQueryProvider(Landroid/widget/FilterQueryProvider;)V"/> + <method name="setGroupCursor(Landroid/database/Cursor;)V"/> + </class> + <class name="android/widget/DatePicker" since="1"> + <extends name="android/widget/FrameLayout"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getCalendarView()Landroid/widget/CalendarView;" since="12" deprecated="24"/> + <method name="getCalendarViewShown()Z" since="11" deprecated="24"/> + <method name="getDayOfMonth()I"/> + <method name="getFirstDayOfWeek()I" since="21"/> + <method name="getMaxDate()J" since="11"/> + <method name="getMinDate()J" since="11"/> + <method name="getMonth()I"/> + <method name="getSpinnersShown()Z" since="11" deprecated="24"/> + <method name="getYear()I"/> + <method name="init(IIILandroid/widget/DatePicker$OnDateChangedListener;)V"/> + <method name="setCalendarViewShown(Z)V" since="11" deprecated="24"/> + <method name="setFirstDayOfWeek(I)V" since="21"/> + <method name="setMaxDate(J)V" since="11"/> + <method name="setMinDate(J)V" since="11"/> + <method name="setOnDateChangedListener(Landroid/widget/DatePicker$OnDateChangedListener;)V" since="26"/> + <method name="setSpinnersShown(Z)V" since="11" deprecated="24"/> + <method name="updateDate(III)V"/> + </class> + <class name="android/widget/DatePicker$OnDateChangedListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onDateChanged(Landroid/widget/DatePicker;III)V"/> + </class> + <class name="android/widget/DialerFilter" since="1" deprecated="26"> + <extends name="android/widget/RelativeLayout"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="append(Ljava/lang/String;)V"/> + <method name="clearText()V"/> + <method name="getDigits()Ljava/lang/CharSequence;"/> + <method name="getFilterText()Ljava/lang/CharSequence;"/> + <method name="getLetters()Ljava/lang/CharSequence;"/> + <method name="getMode()I"/> + <method name="isQwertyKeyboard()Z"/> + <method name="onModeChange(II)V"/> + <method name="removeFilterWatcher(Landroid/text/TextWatcher;)V"/> + <method name="setDigitsWatcher(Landroid/text/TextWatcher;)V"/> + <method name="setFilterWatcher(Landroid/text/TextWatcher;)V"/> + <method name="setLettersWatcher(Landroid/text/TextWatcher;)V"/> + <method name="setMode(I)V"/> + <field name="DIGITS_AND_LETTERS"/> + <field name="DIGITS_AND_LETTERS_NO_DIGITS"/> + <field name="DIGITS_AND_LETTERS_NO_LETTERS"/> + <field name="DIGITS_ONLY"/> + <field name="LETTERS_ONLY"/> + </class> + <class name="android/widget/DigitalClock" since="1" deprecated="17"> + <extends name="android/widget/TextView"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + </class> + <class name="android/widget/EdgeEffect" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="draw(Landroid/graphics/Canvas;)Z"/> + <method name="finish()V"/> + <method name="getColor()I" since="21"/> + <method name="getMaxHeight()I" since="21"/> + <method name="isFinished()Z"/> + <method name="onAbsorb(I)V"/> + <method name="onPull(F)V"/> + <method name="onPull(FF)V" since="21"/> + <method name="onRelease()V"/> + <method name="setColor(I)V" since="21"/> + <method name="setSize(II)V"/> + </class> + <class name="android/widget/EditText" since="1"> + <extends name="android/widget/TextView"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="extendSelection(I)V"/> + <method name="getText()Landroid/text/Editable;"/> + <method name="selectAll()V"/> + <method name="setSelection(I)V"/> + <method name="setSelection(II)V"/> + </class> + <class name="android/widget/ExpandableListAdapter" since="1"> + <extends name="java/lang/Object"/> + <method name="areAllItemsEnabled()Z"/> + <method name="getChild(II)Ljava/lang/Object;"/> + <method name="getChildId(II)J"/> + <method name="getChildView(IIZLandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;"/> + <method name="getChildrenCount(I)I"/> + <method name="getCombinedChildId(JJ)J"/> + <method name="getCombinedGroupId(J)J"/> + <method name="getGroup(I)Ljava/lang/Object;"/> + <method name="getGroupCount()I"/> + <method name="getGroupId(I)J"/> + <method name="getGroupView(IZLandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;"/> + <method name="hasStableIds()Z"/> + <method name="isChildSelectable(II)Z"/> + <method name="isEmpty()Z"/> + <method name="onGroupCollapsed(I)V"/> + <method name="onGroupExpanded(I)V"/> + <method name="registerDataSetObserver(Landroid/database/DataSetObserver;)V"/> + <method name="unregisterDataSetObserver(Landroid/database/DataSetObserver;)V"/> + </class> + <class name="android/widget/ExpandableListView" since="1"> + <extends name="android/widget/ListView"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="collapseGroup(I)Z"/> + <method name="expandGroup(I)Z"/> + <method name="expandGroup(IZ)Z" since="14"/> + <method name="getExpandableListAdapter()Landroid/widget/ExpandableListAdapter;"/> + <method name="getExpandableListPosition(I)J"/> + <method name="getFlatListPosition(J)I"/> + <method name="getPackedPositionChild(J)I"/> + <method name="getPackedPositionForChild(II)J"/> + <method name="getPackedPositionForGroup(I)J"/> + <method name="getPackedPositionGroup(J)I"/> + <method name="getPackedPositionType(J)I"/> + <method name="getSelectedId()J"/> + <method name="getSelectedPosition()J"/> + <method name="isGroupExpanded(I)Z"/> + <method name="setAdapter(Landroid/widget/ExpandableListAdapter;)V"/> + <method name="setChildDivider(Landroid/graphics/drawable/Drawable;)V"/> + <method name="setChildIndicator(Landroid/graphics/drawable/Drawable;)V"/> + <method name="setChildIndicatorBounds(II)V"/> + <method name="setChildIndicatorBoundsRelative(II)V" since="18"/> + <method name="setGroupIndicator(Landroid/graphics/drawable/Drawable;)V"/> + <method name="setIndicatorBounds(II)V"/> + <method name="setIndicatorBoundsRelative(II)V" since="18"/> + <method name="setOnChildClickListener(Landroid/widget/ExpandableListView$OnChildClickListener;)V"/> + <method name="setOnGroupClickListener(Landroid/widget/ExpandableListView$OnGroupClickListener;)V"/> + <method name="setOnGroupCollapseListener(Landroid/widget/ExpandableListView$OnGroupCollapseListener;)V"/> + <method name="setOnGroupExpandListener(Landroid/widget/ExpandableListView$OnGroupExpandListener;)V"/> + <method name="setSelectedChild(IIZ)Z"/> + <method name="setSelectedGroup(I)V"/> + <field name="CHILD_INDICATOR_INHERIT"/> + <field name="PACKED_POSITION_TYPE_CHILD"/> + <field name="PACKED_POSITION_TYPE_GROUP"/> + <field name="PACKED_POSITION_TYPE_NULL"/> + <field name="PACKED_POSITION_VALUE_NULL"/> + </class> + <class name="android/widget/ExpandableListView$ExpandableListContextMenuInfo" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/view/ContextMenu$ContextMenuInfo"/> + <method name="<init>(Landroid/view/View;JJ)V"/> + <field name="id"/> + <field name="packedPosition"/> + <field name="targetView"/> + </class> + <class name="android/widget/ExpandableListView$OnChildClickListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onChildClick(Landroid/widget/ExpandableListView;Landroid/view/View;IIJ)Z"/> + </class> + <class name="android/widget/ExpandableListView$OnGroupClickListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onGroupClick(Landroid/widget/ExpandableListView;Landroid/view/View;IJ)Z"/> + </class> + <class name="android/widget/ExpandableListView$OnGroupCollapseListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onGroupCollapse(I)V"/> + </class> + <class name="android/widget/ExpandableListView$OnGroupExpandListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onGroupExpand(I)V"/> + </class> + <class name="android/widget/Filter" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="convertResultToString(Ljava/lang/Object;)Ljava/lang/CharSequence;"/> + <method name="filter(Ljava/lang/CharSequence;)V"/> + <method name="filter(Ljava/lang/CharSequence;Landroid/widget/Filter$FilterListener;)V"/> + <method name="performFiltering(Ljava/lang/CharSequence;)Landroid/widget/Filter$FilterResults;"/> + <method name="publishResults(Ljava/lang/CharSequence;Landroid/widget/Filter$FilterResults;)V"/> + </class> + <class name="android/widget/Filter$FilterListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onFilterComplete(I)V"/> + </class> + <class name="android/widget/Filter$FilterResults" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="count"/> + <field name="values"/> + </class> + <class name="android/widget/FilterQueryProvider" since="1"> + <extends name="java/lang/Object"/> + <method name="runQuery(Ljava/lang/CharSequence;)Landroid/database/Cursor;"/> + </class> + <class name="android/widget/Filterable" since="1"> + <extends name="java/lang/Object"/> + <method name="getFilter()Landroid/widget/Filter;"/> + </class> + <class name="android/widget/FrameLayout" since="1"> + <extends name="android/view/ViewGroup"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="generateDefaultLayoutParams()Landroid/widget/FrameLayout$LayoutParams;"/> + <method name="generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/FrameLayout$LayoutParams;"/> + <method name="getConsiderGoneChildrenWhenMeasuring()Z" deprecated="16"/> + <method name="getForeground()Landroid/graphics/drawable/Drawable;" removed="23"/> + <method name="getForegroundGravity()I" since="16" removed="23"/> + <method name="getForegroundTintList()Landroid/content/res/ColorStateList;" since="21" removed="23"/> + <method name="getForegroundTintMode()Landroid/graphics/PorterDuff$Mode;" since="21" removed="23"/> + <method name="getMeasureAllChildren()Z" since="14"/> + <method name="setForeground(Landroid/graphics/drawable/Drawable;)V" removed="23"/> + <method name="setForegroundGravity(I)V"/> + <method name="setForegroundTintList(Landroid/content/res/ColorStateList;)V" since="21" removed="23"/> + <method name="setForegroundTintMode(Landroid/graphics/PorterDuff$Mode;)V" since="21" removed="23"/> + <method name="setMeasureAllChildren(Z)V"/> + </class> + <class name="android/widget/FrameLayout$LayoutParams" since="1"> + <extends name="android/view/ViewGroup$MarginLayoutParams"/> + <method name="<init>(II)V"/> + <method name="<init>(III)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/view/ViewGroup$LayoutParams;)V"/> + <method name="<init>(Landroid/view/ViewGroup$MarginLayoutParams;)V"/> + <method name="<init>(Landroid/widget/FrameLayout$LayoutParams;)V" since="19"/> + <field name="UNSPECIFIED_GRAVITY" since="24"/> + <field name="gravity"/> + </class> + <class name="android/widget/Gallery" since="1" deprecated="16"> + <extends name="android/widget/AbsSpinner"/> + <implements name="android/view/GestureDetector$OnGestureListener"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="setAnimationDuration(I)V"/> + <method name="setCallbackDuringFling(Z)V"/> + <method name="setGravity(I)V"/> + <method name="setSpacing(I)V"/> + <method name="setUnselectedAlpha(F)V"/> + </class> + <class name="android/widget/Gallery$LayoutParams" since="1"> + <extends name="android/view/ViewGroup$LayoutParams"/> + <method name="<init>(II)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/view/ViewGroup$LayoutParams;)V"/> + </class> + <class name="android/widget/GridLayout" since="14"> + <extends name="android/view/ViewGroup"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="generateDefaultLayoutParams()Landroid/widget/GridLayout$LayoutParams;"/> + <method name="generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/GridLayout$LayoutParams;"/> + <method name="generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroid/widget/GridLayout$LayoutParams;"/> + <method name="getAlignmentMode()I"/> + <method name="getColumnCount()I"/> + <method name="getOrientation()I"/> + <method name="getRowCount()I"/> + <method name="getUseDefaultMargins()Z"/> + <method name="isColumnOrderPreserved()Z"/> + <method name="isRowOrderPreserved()Z"/> + <method name="setAlignmentMode(I)V"/> + <method name="setColumnCount(I)V"/> + <method name="setColumnOrderPreserved(Z)V"/> + <method name="setOrientation(I)V"/> + <method name="setRowCount(I)V"/> + <method name="setRowOrderPreserved(Z)V"/> + <method name="setUseDefaultMargins(Z)V"/> + <method name="spec(I)Landroid/widget/GridLayout$Spec;"/> + <method name="spec(IF)Landroid/widget/GridLayout$Spec;" since="21"/> + <method name="spec(II)Landroid/widget/GridLayout$Spec;"/> + <method name="spec(IIF)Landroid/widget/GridLayout$Spec;" since="21"/> + <method name="spec(IILandroid/widget/GridLayout$Alignment;)Landroid/widget/GridLayout$Spec;"/> + <method name="spec(IILandroid/widget/GridLayout$Alignment;F)Landroid/widget/GridLayout$Spec;" since="21"/> + <method name="spec(ILandroid/widget/GridLayout$Alignment;)Landroid/widget/GridLayout$Spec;"/> + <method name="spec(ILandroid/widget/GridLayout$Alignment;F)Landroid/widget/GridLayout$Spec;" since="21"/> + <field name="ALIGN_BOUNDS"/> + <field name="ALIGN_MARGINS"/> + <field name="BASELINE"/> + <field name="BOTTOM"/> + <field name="CENTER"/> + <field name="END" since="16"/> + <field name="FILL"/> + <field name="HORIZONTAL"/> + <field name="LEFT"/> + <field name="RIGHT"/> + <field name="START" since="16"/> + <field name="TOP"/> + <field name="UNDEFINED"/> + <field name="VERTICAL"/> + </class> + <class name="android/widget/GridLayout$Alignment" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/widget/GridLayout$LayoutParams" since="14"> + <extends name="android/view/ViewGroup$MarginLayoutParams"/> + <method name="<init>()V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/view/ViewGroup$LayoutParams;)V"/> + <method name="<init>(Landroid/view/ViewGroup$MarginLayoutParams;)V"/> + <method name="<init>(Landroid/widget/GridLayout$LayoutParams;)V"/> + <method name="<init>(Landroid/widget/GridLayout$Spec;Landroid/widget/GridLayout$Spec;)V"/> + <method name="setGravity(I)V"/> + <field name="columnSpec"/> + <field name="rowSpec"/> + </class> + <class name="android/widget/GridLayout$Spec" since="14"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="android/widget/GridView" since="1"> + <extends name="android/widget/AbsListView"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getAdapter()Landroid/widget/ListAdapter;"/> + <method name="getColumnWidth()I" since="16"/> + <method name="getGravity()I" since="16"/> + <method name="getHorizontalSpacing()I" since="16"/> + <method name="getNumColumns()I" since="11"/> + <method name="getRequestedColumnWidth()I" since="16"/> + <method name="getRequestedHorizontalSpacing()I" since="16"/> + <method name="getStretchMode()I"/> + <method name="getVerticalSpacing()I" since="16"/> + <method name="setAdapter(Landroid/widget/ListAdapter;)V"/> + <method name="setColumnWidth(I)V"/> + <method name="setGravity(I)V"/> + <method name="setHorizontalSpacing(I)V"/> + <method name="setNumColumns(I)V"/> + <method name="setStretchMode(I)V"/> + <method name="setVerticalSpacing(I)V"/> + <method name="smoothScrollByOffset(I)V" since="11"/> + <field name="AUTO_FIT"/> + <field name="NO_STRETCH"/> + <field name="STRETCH_COLUMN_WIDTH"/> + <field name="STRETCH_SPACING"/> + <field name="STRETCH_SPACING_UNIFORM" since="3"/> + </class> + <class name="android/widget/HeaderViewListAdapter" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/widget/Filterable"/> + <implements name="android/widget/WrapperListAdapter"/> + <method name="<init>(Ljava/util/ArrayList;Ljava/util/ArrayList;Landroid/widget/ListAdapter;)V"/> + <method name="getFootersCount()I"/> + <method name="getHeadersCount()I"/> + <method name="removeFooter(Landroid/view/View;)Z"/> + <method name="removeHeader(Landroid/view/View;)Z"/> + </class> + <class name="android/widget/HeterogeneousExpandableList" since="8"> + <extends name="java/lang/Object"/> + <method name="getChildType(II)I"/> + <method name="getChildTypeCount()I"/> + <method name="getGroupType(I)I"/> + <method name="getGroupTypeCount()I"/> + </class> + <class name="android/widget/HorizontalScrollView" since="3"> + <extends name="android/widget/FrameLayout"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="arrowScroll(I)Z"/> + <method name="computeScrollDeltaToGetChildRectOnScreen(Landroid/graphics/Rect;)I"/> + <method name="executeKeyEvent(Landroid/view/KeyEvent;)Z"/> + <method name="fling(I)V"/> + <method name="fullScroll(I)Z"/> + <method name="getMaxScrollAmount()I"/> + <method name="isFillViewport()Z"/> + <method name="isSmoothScrollingEnabled()Z"/> + <method name="pageScroll(I)Z"/> + <method name="setFillViewport(Z)V"/> + <method name="setSmoothScrollingEnabled(Z)V"/> + <method name="smoothScrollBy(II)V"/> + <method name="smoothScrollTo(II)V"/> + </class> + <class name="android/widget/ImageButton" since="1"> + <extends name="android/widget/ImageView"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + </class> + <class name="android/widget/ImageSwitcher" since="1"> + <extends name="android/widget/ViewSwitcher"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="setImageDrawable(Landroid/graphics/drawable/Drawable;)V"/> + <method name="setImageResource(I)V"/> + <method name="setImageURI(Landroid/net/Uri;)V"/> + </class> + <class name="android/widget/ImageView" since="1"> + <extends name="android/view/View"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="clearColorFilter()V"/> + <method name="getAdjustViewBounds()Z" since="16"/> + <method name="getBaselineAlignBottom()Z" since="11"/> + <method name="getColorFilter()Landroid/graphics/ColorFilter;" since="16"/> + <method name="getCropToPadding()Z" since="16"/> + <method name="getDrawable()Landroid/graphics/drawable/Drawable;"/> + <method name="getImageAlpha()I" since="16"/> + <method name="getImageMatrix()Landroid/graphics/Matrix;"/> + <method name="getImageTintList()Landroid/content/res/ColorStateList;" since="21"/> + <method name="getImageTintMode()Landroid/graphics/PorterDuff$Mode;" since="21"/> + <method name="getMaxHeight()I" since="16"/> + <method name="getMaxWidth()I" since="16"/> + <method name="getScaleType()Landroid/widget/ImageView$ScaleType;"/> + <method name="setAdjustViewBounds(Z)V"/> + <method name="setAlpha(I)V" deprecated="16"/> + <method name="setBaseline(I)V" since="11"/> + <method name="setBaselineAlignBottom(Z)V" since="11"/> + <method name="setColorFilter(I)V" since="8"/> + <method name="setColorFilter(ILandroid/graphics/PorterDuff$Mode;)V"/> + <method name="setColorFilter(Landroid/graphics/ColorFilter;)V"/> + <method name="setCropToPadding(Z)V" since="16"/> + <method name="setFrame(IIII)Z"/> + <method name="setImageAlpha(I)V" since="16"/> + <method name="setImageBitmap(Landroid/graphics/Bitmap;)V"/> + <method name="setImageDrawable(Landroid/graphics/drawable/Drawable;)V"/> + <method name="setImageIcon(Landroid/graphics/drawable/Icon;)V" since="23"/> + <method name="setImageLevel(I)V"/> + <method name="setImageMatrix(Landroid/graphics/Matrix;)V"/> + <method name="setImageResource(I)V"/> + <method name="setImageState([IZ)V"/> + <method name="setImageTintList(Landroid/content/res/ColorStateList;)V" since="21"/> + <method name="setImageTintMode(Landroid/graphics/PorterDuff$Mode;)V" since="21"/> + <method name="setImageURI(Landroid/net/Uri;)V"/> + <method name="setMaxHeight(I)V"/> + <method name="setMaxWidth(I)V"/> + <method name="setScaleType(Landroid/widget/ImageView$ScaleType;)V"/> + </class> + <class name="android/widget/ImageView$ScaleType" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/widget/ImageView$ScaleType;"/> + <method name="values()[Landroid/widget/ImageView$ScaleType;"/> + <field name="CENTER"/> + <field name="CENTER_CROP"/> + <field name="CENTER_INSIDE"/> + <field name="FIT_CENTER"/> + <field name="FIT_END"/> + <field name="FIT_START"/> + <field name="FIT_XY"/> + <field name="MATRIX"/> + </class> + <class name="android/widget/LinearLayout" since="1"> + <extends name="android/view/ViewGroup"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" since="11"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="generateDefaultLayoutParams()Landroid/widget/LinearLayout$LayoutParams;"/> + <method name="generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/LinearLayout$LayoutParams;"/> + <method name="generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroid/widget/LinearLayout$LayoutParams;"/> + <method name="getBaselineAlignedChildIndex()I"/> + <method name="getDividerDrawable()Landroid/graphics/drawable/Drawable;" since="16"/> + <method name="getDividerPadding()I" since="14"/> + <method name="getGravity()I" since="24"/> + <method name="getOrientation()I"/> + <method name="getShowDividers()I" since="11"/> + <method name="getWeightSum()F"/> + <method name="isBaselineAligned()Z"/> + <method name="isMeasureWithLargestChildEnabled()Z" since="11"/> + <method name="setBaselineAligned(Z)V"/> + <method name="setBaselineAlignedChildIndex(I)V"/> + <method name="setDividerDrawable(Landroid/graphics/drawable/Drawable;)V" since="11"/> + <method name="setDividerPadding(I)V" since="14"/> + <method name="setGravity(I)V"/> + <method name="setHorizontalGravity(I)V"/> + <method name="setMeasureWithLargestChildEnabled(Z)V" since="11"/> + <method name="setOrientation(I)V"/> + <method name="setShowDividers(I)V" since="11"/> + <method name="setVerticalGravity(I)V"/> + <method name="setWeightSum(F)V"/> + <field name="HORIZONTAL"/> + <field name="SHOW_DIVIDER_BEGINNING" since="11"/> + <field name="SHOW_DIVIDER_END" since="11"/> + <field name="SHOW_DIVIDER_MIDDLE" since="11"/> + <field name="SHOW_DIVIDER_NONE" since="11"/> + <field name="VERTICAL"/> + </class> + <class name="android/widget/LinearLayout$LayoutParams" since="1"> + <extends name="android/view/ViewGroup$MarginLayoutParams"/> + <method name="<init>(II)V"/> + <method name="<init>(IIF)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/view/ViewGroup$LayoutParams;)V"/> + <method name="<init>(Landroid/view/ViewGroup$MarginLayoutParams;)V"/> + <method name="<init>(Landroid/widget/LinearLayout$LayoutParams;)V" since="19"/> + <method name="debug(Ljava/lang/String;)Ljava/lang/String;"/> + <field name="gravity"/> + <field name="weight"/> + </class> + <class name="android/widget/ListAdapter" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/widget/Adapter"/> + <method name="areAllItemsEnabled()Z"/> + <method name="isEnabled(I)Z"/> + </class> + <class name="android/widget/ListPopupWindow" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V"/> + <method name="clearListSelection()V"/> + <method name="createDragToOpenListener(Landroid/view/View;)Landroid/view/View$OnTouchListener;" since="19"/> + <method name="dismiss()V"/> + <method name="getAnchorView()Landroid/view/View;"/> + <method name="getAnimationStyle()I"/> + <method name="getBackground()Landroid/graphics/drawable/Drawable;"/> + <method name="getHeight()I"/> + <method name="getHorizontalOffset()I"/> + <method name="getInputMethodMode()I"/> + <method name="getListView()Landroid/widget/ListView;"/> + <method name="getPromptPosition()I"/> + <method name="getSelectedItem()Ljava/lang/Object;"/> + <method name="getSelectedItemId()J"/> + <method name="getSelectedItemPosition()I"/> + <method name="getSelectedView()Landroid/view/View;"/> + <method name="getSoftInputMode()I"/> + <method name="getVerticalOffset()I"/> + <method name="getWidth()I"/> + <method name="isInputMethodNotNeeded()Z"/> + <method name="isModal()Z"/> + <method name="isShowing()Z"/> + <method name="onKeyDown(ILandroid/view/KeyEvent;)Z"/> + <method name="onKeyPreIme(ILandroid/view/KeyEvent;)Z"/> + <method name="onKeyUp(ILandroid/view/KeyEvent;)Z"/> + <method name="performItemClick(I)Z"/> + <method name="postShow()V"/> + <method name="setAdapter(Landroid/widget/ListAdapter;)V"/> + <method name="setAnchorView(Landroid/view/View;)V"/> + <method name="setAnimationStyle(I)V"/> + <method name="setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V"/> + <method name="setContentWidth(I)V"/> + <method name="setDropDownGravity(I)V" since="19"/> + <method name="setHeight(I)V"/> + <method name="setHorizontalOffset(I)V"/> + <method name="setInputMethodMode(I)V"/> + <method name="setListSelector(Landroid/graphics/drawable/Drawable;)V"/> + <method name="setModal(Z)V"/> + <method name="setOnDismissListener(Landroid/widget/PopupWindow$OnDismissListener;)V"/> + <method name="setOnItemClickListener(Landroid/widget/AdapterView$OnItemClickListener;)V"/> + <method name="setOnItemSelectedListener(Landroid/widget/AdapterView$OnItemSelectedListener;)V"/> + <method name="setPromptPosition(I)V"/> + <method name="setPromptView(Landroid/view/View;)V"/> + <method name="setSelection(I)V"/> + <method name="setSoftInputMode(I)V"/> + <method name="setVerticalOffset(I)V"/> + <method name="setWidth(I)V"/> + <method name="setWindowLayoutType(I)V" since="23"/> + <method name="show()V"/> + <field name="INPUT_METHOD_FROM_FOCUSABLE"/> + <field name="INPUT_METHOD_NEEDED"/> + <field name="INPUT_METHOD_NOT_NEEDED"/> + <field name="MATCH_PARENT"/> + <field name="POSITION_PROMPT_ABOVE"/> + <field name="POSITION_PROMPT_BELOW"/> + <field name="WRAP_CONTENT"/> + </class> + <class name="android/widget/ListView" since="1"> + <extends name="android/widget/AbsListView"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="addFooterView(Landroid/view/View;)V"/> + <method name="addFooterView(Landroid/view/View;Ljava/lang/Object;Z)V"/> + <method name="addHeaderView(Landroid/view/View;)V"/> + <method name="addHeaderView(Landroid/view/View;Ljava/lang/Object;Z)V"/> + <method name="areFooterDividersEnabled()Z" since="19"/> + <method name="areHeaderDividersEnabled()Z" since="19"/> + <method name="clearChoices()V" removed="11"/> + <method name="findViewTraversal(I)Landroid/view/View;" removed="26"/> + <method name="findViewWithTagTraversal(Ljava/lang/Object;)Landroid/view/View;" removed="26"/> + <method name="getAdapter()Landroid/widget/ListAdapter;"/> + <method name="getCheckItemIds()[J" since="4" deprecated="16"/> + <method name="getCheckedItemIds()[J" since="8" removed="11"/> + <method name="getCheckedItemPosition()I" removed="11"/> + <method name="getCheckedItemPositions()Landroid/util/SparseBooleanArray;" removed="11"/> + <method name="getChoiceMode()I" removed="11"/> + <method name="getDivider()Landroid/graphics/drawable/Drawable;"/> + <method name="getDividerHeight()I"/> + <method name="getFooterViewsCount()I"/> + <method name="getHeaderViewsCount()I"/> + <method name="getItemsCanFocus()Z"/> + <method name="getMaxScrollAmount()I"/> + <method name="getOverscrollFooter()Landroid/graphics/drawable/Drawable;" since="9"/> + <method name="getOverscrollHeader()Landroid/graphics/drawable/Drawable;" since="9"/> + <method name="isItemChecked(I)Z" removed="11"/> + <method name="removeFooterView(Landroid/view/View;)Z"/> + <method name="removeHeaderView(Landroid/view/View;)Z"/> + <method name="setAdapter(Landroid/widget/ListAdapter;)V"/> + <method name="setChoiceMode(I)V" removed="11"/> + <method name="setDivider(Landroid/graphics/drawable/Drawable;)V"/> + <method name="setDividerHeight(I)V"/> + <method name="setFooterDividersEnabled(Z)V" since="3"/> + <method name="setHeaderDividersEnabled(Z)V" since="3"/> + <method name="setItemChecked(IZ)V" removed="11"/> + <method name="setItemsCanFocus(Z)V"/> + <method name="setOverscrollFooter(Landroid/graphics/drawable/Drawable;)V" since="9"/> + <method name="setOverscrollHeader(Landroid/graphics/drawable/Drawable;)V" since="9"/> + <method name="setSelectionAfterHeaderView()V"/> + <method name="setSelectionFromTop(II)V" removed="21"/> + <method name="smoothScrollByOffset(I)V" since="11"/> + <field name="CHOICE_MODE_MULTIPLE" removed="11"/> + <field name="CHOICE_MODE_NONE" removed="11"/> + <field name="CHOICE_MODE_SINGLE" removed="11"/> + </class> + <class name="android/widget/ListView$FixedViewInfo" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/widget/ListView;)V"/> + <field name="data"/> + <field name="isSelectable"/> + <field name="view"/> + </class> + <class name="android/widget/MediaController" since="1"> + <extends name="android/widget/FrameLayout"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Z)V"/> + <method name="hide()V"/> + <method name="isShowing()Z"/> + <method name="setAnchorView(Landroid/view/View;)V"/> + <method name="setMediaPlayer(Landroid/widget/MediaController$MediaPlayerControl;)V"/> + <method name="setPrevNextListeners(Landroid/view/View$OnClickListener;Landroid/view/View$OnClickListener;)V"/> + <method name="show()V"/> + <method name="show(I)V"/> + </class> + <class name="android/widget/MediaController$MediaPlayerControl" since="1"> + <extends name="java/lang/Object"/> + <method name="canPause()Z" since="5"/> + <method name="canSeekBackward()Z" since="5"/> + <method name="canSeekForward()Z" since="5"/> + <method name="getAudioSessionId()I" since="18"/> + <method name="getBufferPercentage()I"/> + <method name="getCurrentPosition()I"/> + <method name="getDuration()I"/> + <method name="isPlaying()Z"/> + <method name="pause()V"/> + <method name="seekTo(I)V"/> + <method name="start()V"/> + </class> + <class name="android/widget/MultiAutoCompleteTextView" since="1"> + <extends name="android/widget/AutoCompleteTextView"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="performFiltering(Ljava/lang/CharSequence;III)V"/> + <method name="setTokenizer(Landroid/widget/MultiAutoCompleteTextView$Tokenizer;)V"/> + </class> + <class name="android/widget/MultiAutoCompleteTextView$CommaTokenizer" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/widget/MultiAutoCompleteTextView$Tokenizer"/> + <method name="<init>()V"/> + </class> + <class name="android/widget/MultiAutoCompleteTextView$Tokenizer" since="1"> + <extends name="java/lang/Object"/> + <method name="findTokenEnd(Ljava/lang/CharSequence;I)I"/> + <method name="findTokenStart(Ljava/lang/CharSequence;I)I"/> + <method name="terminateToken(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;"/> + </class> + <class name="android/widget/NumberPicker" since="11"> + <extends name="android/widget/LinearLayout"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getDisplayedValues()[Ljava/lang/String;"/> + <method name="getMaxValue()I"/> + <method name="getMinValue()I"/> + <method name="getValue()I"/> + <method name="getWrapSelectorWheel()Z"/> + <method name="setDisplayedValues([Ljava/lang/String;)V"/> + <method name="setFormatter(Landroid/widget/NumberPicker$Formatter;)V"/> + <method name="setMaxValue(I)V"/> + <method name="setMinValue(I)V"/> + <method name="setOnLongPressUpdateInterval(J)V"/> + <method name="setOnScrollListener(Landroid/widget/NumberPicker$OnScrollListener;)V"/> + <method name="setOnValueChangedListener(Landroid/widget/NumberPicker$OnValueChangeListener;)V"/> + <method name="setValue(I)V"/> + <method name="setWrapSelectorWheel(Z)V"/> + </class> + <class name="android/widget/NumberPicker$Formatter" since="11"> + <extends name="java/lang/Object"/> + <method name="format(I)Ljava/lang/String;"/> + </class> + <class name="android/widget/NumberPicker$OnScrollListener" since="11"> + <extends name="java/lang/Object"/> + <method name="onScrollStateChange(Landroid/widget/NumberPicker;I)V"/> + <field name="SCROLL_STATE_FLING"/> + <field name="SCROLL_STATE_IDLE"/> + <field name="SCROLL_STATE_TOUCH_SCROLL"/> + </class> + <class name="android/widget/NumberPicker$OnValueChangeListener" since="11"> + <extends name="java/lang/Object"/> + <method name="onValueChange(Landroid/widget/NumberPicker;II)V"/> + </class> + <class name="android/widget/OverScroller" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/view/animation/Interpolator;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/view/animation/Interpolator;FF)V" deprecated="26"/> + <method name="<init>(Landroid/content/Context;Landroid/view/animation/Interpolator;FFZ)V" since="11" deprecated="26"/> + <method name="abortAnimation()V"/> + <method name="computeScrollOffset()Z"/> + <method name="fling(IIIIIIII)V"/> + <method name="fling(IIIIIIIIII)V"/> + <method name="forceFinished(Z)V"/> + <method name="getCurrVelocity()F" since="14"/> + <method name="getCurrX()I"/> + <method name="getCurrY()I"/> + <method name="getFinalX()I"/> + <method name="getFinalY()I"/> + <method name="getStartX()I"/> + <method name="getStartY()I"/> + <method name="isFinished()Z"/> + <method name="isOverScrolled()Z"/> + <method name="notifyHorizontalEdgeReached(III)V"/> + <method name="notifyVerticalEdgeReached(III)V"/> + <method name="setFriction(F)V" since="11"/> + <method name="springBack(IIIIII)Z"/> + <method name="startScroll(IIII)V"/> + <method name="startScroll(IIIII)V"/> + </class> + <class name="android/widget/PopupMenu" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;Landroid/view/View;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/view/View;I)V" since="19"/> + <method name="<init>(Landroid/content/Context;Landroid/view/View;III)V" since="22"/> + <method name="dismiss()V"/> + <method name="getDragToOpenListener()Landroid/view/View$OnTouchListener;" since="19"/> + <method name="getGravity()I" since="23"/> + <method name="getMenu()Landroid/view/Menu;"/> + <method name="getMenuInflater()Landroid/view/MenuInflater;"/> + <method name="inflate(I)V" since="14"/> + <method name="setGravity(I)V" since="23"/> + <method name="setOnDismissListener(Landroid/widget/PopupMenu$OnDismissListener;)V" since="14"/> + <method name="setOnMenuItemClickListener(Landroid/widget/PopupMenu$OnMenuItemClickListener;)V"/> + <method name="show()V"/> + </class> + <class name="android/widget/PopupMenu$OnDismissListener" since="14"> + <extends name="java/lang/Object"/> + <method name="onDismiss(Landroid/widget/PopupMenu;)V"/> + </class> + <class name="android/widget/PopupMenu$OnMenuItemClickListener" since="11"> + <extends name="java/lang/Object"/> + <method name="onMenuItemClick(Landroid/view/MenuItem;)Z"/> + </class> + <class name="android/widget/PopupWindow" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(II)V"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="11"/> + <method name="<init>(Landroid/view/View;)V"/> + <method name="<init>(Landroid/view/View;II)V"/> + <method name="<init>(Landroid/view/View;IIZ)V"/> + <method name="dismiss()V"/> + <method name="getAnimationStyle()I"/> + <method name="getBackground()Landroid/graphics/drawable/Drawable;"/> + <method name="getContentView()Landroid/view/View;"/> + <method name="getElevation()F" since="21"/> + <method name="getEnterTransition()Landroid/transition/Transition;" since="24"/> + <method name="getExitTransition()Landroid/transition/Transition;" since="24"/> + <method name="getHeight()I"/> + <method name="getInputMethodMode()I" since="3"/> + <method name="getMaxAvailableHeight(Landroid/view/View;)I"/> + <method name="getMaxAvailableHeight(Landroid/view/View;I)I" since="3"/> + <method name="getMaxAvailableHeight(Landroid/view/View;IZ)I" since="24"/> + <method name="getOverlapAnchor()Z" since="23"/> + <method name="getSoftInputMode()I" since="4"/> + <method name="getWidth()I"/> + <method name="getWindowLayoutType()I" since="23"/> + <method name="isAboveAnchor()Z" since="3"/> + <method name="isAttachedInDecor()Z" since="22"/> + <method name="isClippingEnabled()Z" since="3"/> + <method name="isFocusable()Z"/> + <method name="isOutsideTouchable()Z" since="3"/> + <method name="isShowing()Z"/> + <method name="isSplitTouchEnabled()Z" since="11"/> + <method name="isTouchable()Z" since="3"/> + <method name="setAnimationStyle(I)V"/> + <method name="setAttachedInDecor(Z)V" since="22"/> + <method name="setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V"/> + <method name="setClippingEnabled(Z)V" since="3"/> + <method name="setContentView(Landroid/view/View;)V"/> + <method name="setElevation(F)V" since="21"/> + <method name="setEnterTransition(Landroid/transition/Transition;)V" since="23"/> + <method name="setExitTransition(Landroid/transition/Transition;)V" since="23"/> + <method name="setFocusable(Z)V"/> + <method name="setHeight(I)V"/> + <method name="setIgnoreCheekPress()V"/> + <method name="setInputMethodMode(I)V" since="3"/> + <method name="setOnDismissListener(Landroid/widget/PopupWindow$OnDismissListener;)V"/> + <method name="setOutsideTouchable(Z)V" since="3"/> + <method name="setOverlapAnchor(Z)V" since="23"/> + <method name="setSoftInputMode(I)V" since="4"/> + <method name="setSplitTouchEnabled(Z)V" since="11"/> + <method name="setTouchInterceptor(Landroid/view/View$OnTouchListener;)V" since="3"/> + <method name="setTouchable(Z)V" since="3"/> + <method name="setWidth(I)V"/> + <method name="setWindowLayoutMode(II)V" since="3" deprecated="23"/> + <method name="setWindowLayoutType(I)V" since="23"/> + <method name="showAsDropDown(Landroid/view/View;)V"/> + <method name="showAsDropDown(Landroid/view/View;II)V"/> + <method name="showAsDropDown(Landroid/view/View;III)V" since="19"/> + <method name="showAtLocation(Landroid/view/View;III)V"/> + <method name="update()V" since="3"/> + <method name="update(II)V" since="4"/> + <method name="update(IIII)V"/> + <method name="update(IIIIZ)V" since="3"/> + <method name="update(Landroid/view/View;II)V"/> + <method name="update(Landroid/view/View;IIII)V"/> + <field name="INPUT_METHOD_FROM_FOCUSABLE" since="3"/> + <field name="INPUT_METHOD_NEEDED" since="3"/> + <field name="INPUT_METHOD_NOT_NEEDED" since="3"/> + </class> + <class name="android/widget/PopupWindow$OnDismissListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onDismiss()V"/> + </class> + <class name="android/widget/ProgressBar" since="1"> + <extends name="android/view/View"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getIndeterminateDrawable()Landroid/graphics/drawable/Drawable;"/> + <method name="getIndeterminateTintList()Landroid/content/res/ColorStateList;" since="21"/> + <method name="getIndeterminateTintMode()Landroid/graphics/PorterDuff$Mode;" since="21"/> + <method name="getInterpolator()Landroid/view/animation/Interpolator;"/> + <method name="getMax()I"/> + <method name="getMin()I" since="26"/> + <method name="getProgress()I"/> + <method name="getProgressBackgroundTintList()Landroid/content/res/ColorStateList;" since="21"/> + <method name="getProgressBackgroundTintMode()Landroid/graphics/PorterDuff$Mode;" since="21"/> + <method name="getProgressDrawable()Landroid/graphics/drawable/Drawable;"/> + <method name="getProgressTintList()Landroid/content/res/ColorStateList;" since="21"/> + <method name="getProgressTintMode()Landroid/graphics/PorterDuff$Mode;" since="21"/> + <method name="getSecondaryProgress()I"/> + <method name="getSecondaryProgressTintList()Landroid/content/res/ColorStateList;" since="21"/> + <method name="getSecondaryProgressTintMode()Landroid/graphics/PorterDuff$Mode;" since="21"/> + <method name="incrementProgressBy(I)V"/> + <method name="incrementSecondaryProgressBy(I)V"/> + <method name="isAnimating()Z" since="26"/> + <method name="isIndeterminate()Z"/> + <method name="setIndeterminate(Z)V"/> + <method name="setIndeterminateDrawable(Landroid/graphics/drawable/Drawable;)V"/> + <method name="setIndeterminateDrawableTiled(Landroid/graphics/drawable/Drawable;)V" since="21"/> + <method name="setIndeterminateTintList(Landroid/content/res/ColorStateList;)V" since="21"/> + <method name="setIndeterminateTintMode(Landroid/graphics/PorterDuff$Mode;)V" since="21"/> + <method name="setInterpolator(Landroid/content/Context;I)V"/> + <method name="setInterpolator(Landroid/view/animation/Interpolator;)V"/> + <method name="setMax(I)V"/> + <method name="setMin(I)V" since="26"/> + <method name="setProgress(I)V"/> + <method name="setProgress(IZ)V" since="24"/> + <method name="setProgressBackgroundTintList(Landroid/content/res/ColorStateList;)V" since="21"/> + <method name="setProgressBackgroundTintMode(Landroid/graphics/PorterDuff$Mode;)V" since="21"/> + <method name="setProgressDrawable(Landroid/graphics/drawable/Drawable;)V"/> + <method name="setProgressDrawableTiled(Landroid/graphics/drawable/Drawable;)V" since="21"/> + <method name="setProgressTintList(Landroid/content/res/ColorStateList;)V" since="21"/> + <method name="setProgressTintMode(Landroid/graphics/PorterDuff$Mode;)V" since="21"/> + <method name="setSecondaryProgress(I)V"/> + <method name="setSecondaryProgressTintList(Landroid/content/res/ColorStateList;)V" since="21"/> + <method name="setSecondaryProgressTintMode(Landroid/graphics/PorterDuff$Mode;)V" since="21"/> + </class> + <class name="android/widget/QuickContactBadge" since="5"> + <extends name="android/widget/ImageView"/> + <implements name="android/view/View$OnClickListener"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="assignContactFromEmail(Ljava/lang/String;Z)V"/> + <method name="assignContactFromEmail(Ljava/lang/String;ZLandroid/os/Bundle;)V" since="18"/> + <method name="assignContactFromPhone(Ljava/lang/String;Z)V"/> + <method name="assignContactFromPhone(Ljava/lang/String;ZLandroid/os/Bundle;)V" since="18"/> + <method name="assignContactUri(Landroid/net/Uri;)V"/> + <method name="setExcludeMimes([Ljava/lang/String;)V"/> + <method name="setImageToDefault()V" since="11"/> + <method name="setMode(I)V"/> + <method name="setOverlay(Landroid/graphics/drawable/Drawable;)V" since="21"/> + <method name="setPrioritizedMimeType(Ljava/lang/String;)V" since="23"/> + <field name="mExcludeMimes"/> + </class> + <class name="android/widget/RadioButton" since="1"> + <extends name="android/widget/CompoundButton"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + </class> + <class name="android/widget/RadioGroup" since="1"> + <extends name="android/widget/LinearLayout"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="check(I)V"/> + <method name="clearCheck()V"/> + <method name="generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/RadioGroup$LayoutParams;"/> + <method name="getCheckedRadioButtonId()I"/> + <method name="setOnCheckedChangeListener(Landroid/widget/RadioGroup$OnCheckedChangeListener;)V"/> + </class> + <class name="android/widget/RadioGroup$LayoutParams" since="1"> + <extends name="android/widget/LinearLayout$LayoutParams"/> + <method name="<init>(II)V"/> + <method name="<init>(IIF)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/view/ViewGroup$LayoutParams;)V"/> + <method name="<init>(Landroid/view/ViewGroup$MarginLayoutParams;)V"/> + </class> + <class name="android/widget/RadioGroup$OnCheckedChangeListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onCheckedChanged(Landroid/widget/RadioGroup;I)V"/> + </class> + <class name="android/widget/RatingBar" since="1"> + <extends name="android/widget/AbsSeekBar"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getNumStars()I"/> + <method name="getOnRatingBarChangeListener()Landroid/widget/RatingBar$OnRatingBarChangeListener;"/> + <method name="getRating()F"/> + <method name="getStepSize()F"/> + <method name="isIndicator()Z"/> + <method name="setIsIndicator(Z)V"/> + <method name="setNumStars(I)V"/> + <method name="setOnRatingBarChangeListener(Landroid/widget/RatingBar$OnRatingBarChangeListener;)V"/> + <method name="setRating(F)V"/> + <method name="setStepSize(F)V"/> + </class> + <class name="android/widget/RatingBar$OnRatingBarChangeListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onRatingChanged(Landroid/widget/RatingBar;FZ)V"/> + </class> + <class name="android/widget/RelativeLayout" since="1"> + <extends name="android/view/ViewGroup"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/RelativeLayout$LayoutParams;"/> + <method name="getGravity()I" since="16"/> + <method name="setGravity(I)V"/> + <method name="setHorizontalGravity(I)V"/> + <method name="setIgnoreGravity(I)V"/> + <method name="setVerticalGravity(I)V"/> + <field name="ABOVE"/> + <field name="ALIGN_BASELINE"/> + <field name="ALIGN_BOTTOM"/> + <field name="ALIGN_END" since="17"/> + <field name="ALIGN_LEFT"/> + <field name="ALIGN_PARENT_BOTTOM"/> + <field name="ALIGN_PARENT_END" since="17"/> + <field name="ALIGN_PARENT_LEFT"/> + <field name="ALIGN_PARENT_RIGHT"/> + <field name="ALIGN_PARENT_START" since="17"/> + <field name="ALIGN_PARENT_TOP"/> + <field name="ALIGN_RIGHT"/> + <field name="ALIGN_START" since="17"/> + <field name="ALIGN_TOP"/> + <field name="BELOW"/> + <field name="CENTER_HORIZONTAL"/> + <field name="CENTER_IN_PARENT"/> + <field name="CENTER_VERTICAL"/> + <field name="END_OF" since="17"/> + <field name="LEFT_OF"/> + <field name="RIGHT_OF"/> + <field name="START_OF" since="17"/> + <field name="TRUE"/> + </class> + <class name="android/widget/RelativeLayout$LayoutParams" since="1"> + <extends name="android/view/ViewGroup$MarginLayoutParams"/> + <method name="<init>(II)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/view/ViewGroup$LayoutParams;)V"/> + <method name="<init>(Landroid/view/ViewGroup$MarginLayoutParams;)V"/> + <method name="<init>(Landroid/widget/RelativeLayout$LayoutParams;)V" since="19"/> + <method name="addRule(I)V"/> + <method name="addRule(II)V"/> + <method name="debug(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getRule(I)I" since="23"/> + <method name="getRules()[I"/> + <method name="removeRule(I)V" since="17"/> + <field name="alignWithParent"/> + </class> + <class name="android/widget/RemoteViews" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/os/Parcelable"/> + <implements name="android/view/LayoutInflater$Filter"/> + <method name="<init>(Landroid/os/Parcel;)V"/> + <method name="<init>(Landroid/widget/RemoteViews;Landroid/widget/RemoteViews;)V" since="16"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="addView(ILandroid/widget/RemoteViews;)V" since="7"/> + <method name="apply(Landroid/content/Context;Landroid/view/ViewGroup;)Landroid/view/View;"/> + <method name="clone()Landroid/widget/RemoteViews;" since="9"/> + <method name="getLayoutId()I"/> + <method name="getPackage()Ljava/lang/String;"/> + <method name="reapply(Landroid/content/Context;Landroid/view/View;)V"/> + <method name="removeAllViews(I)V" since="7"/> + <method name="setAccessibilityTraversalAfter(II)V" since="22"/> + <method name="setAccessibilityTraversalBefore(II)V" since="22"/> + <method name="setBitmap(ILjava/lang/String;Landroid/graphics/Bitmap;)V" since="3"/> + <method name="setBoolean(ILjava/lang/String;Z)V" since="3"/> + <method name="setBundle(ILjava/lang/String;Landroid/os/Bundle;)V" since="8"/> + <method name="setByte(ILjava/lang/String;B)V" since="3"/> + <method name="setChar(ILjava/lang/String;C)V" since="3"/> + <method name="setCharSequence(ILjava/lang/String;Ljava/lang/CharSequence;)V" since="3"/> + <method name="setChronometer(IJLjava/lang/String;Z)V"/> + <method name="setChronometerCountDown(IZ)V" since="24"/> + <method name="setContentDescription(ILjava/lang/CharSequence;)V" since="15"/> + <method name="setDisplayedChild(II)V" since="12"/> + <method name="setDouble(ILjava/lang/String;D)V" since="3"/> + <method name="setEmptyView(II)V" since="11"/> + <method name="setFloat(ILjava/lang/String;F)V" since="3"/> + <method name="setIcon(ILjava/lang/String;Landroid/graphics/drawable/Icon;)V" since="23"/> + <method name="setImageViewBitmap(ILandroid/graphics/Bitmap;)V" since="3"/> + <method name="setImageViewIcon(ILandroid/graphics/drawable/Icon;)V" since="23"/> + <method name="setImageViewResource(II)V"/> + <method name="setImageViewUri(ILandroid/net/Uri;)V"/> + <method name="setInt(ILjava/lang/String;I)V" since="3"/> + <method name="setIntent(ILjava/lang/String;Landroid/content/Intent;)V" since="11"/> + <method name="setLabelFor(II)V" since="17"/> + <method name="setLong(ILjava/lang/String;J)V" since="3"/> + <method name="setOnClickFillInIntent(ILandroid/content/Intent;)V" since="11"/> + <method name="setOnClickPendingIntent(ILandroid/app/PendingIntent;)V" since="3"/> + <method name="setPendingIntentTemplate(ILandroid/app/PendingIntent;)V" since="11"/> + <method name="setProgressBar(IIIZ)V"/> + <method name="setRelativeScrollPosition(II)V" since="11"/> + <method name="setRemoteAdapter(IILandroid/content/Intent;)V" since="11" deprecated="16"/> + <method name="setRemoteAdapter(ILandroid/content/Intent;)V" since="14"/> + <method name="setScrollPosition(II)V" since="11"/> + <method name="setShort(ILjava/lang/String;S)V" since="3"/> + <method name="setString(ILjava/lang/String;Ljava/lang/String;)V" since="3"/> + <method name="setTextColor(II)V" since="3"/> + <method name="setTextViewCompoundDrawables(IIIII)V" since="16"/> + <method name="setTextViewCompoundDrawablesRelative(IIIII)V" since="16"/> + <method name="setTextViewText(ILjava/lang/CharSequence;)V"/> + <method name="setTextViewTextSize(IIF)V" since="16"/> + <method name="setUri(ILjava/lang/String;Landroid/net/Uri;)V" since="3"/> + <method name="setViewPadding(IIIII)V" since="16"/> + <method name="setViewVisibility(II)V"/> + <method name="showNext(I)V" since="11"/> + <method name="showPrevious(I)V" since="11"/> + <field name="CREATOR"/> + </class> + <class name="android/widget/RemoteViews$ActionException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>(Ljava/lang/Exception;)V" since="3"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="android/widget/RemoteViews$RemoteView" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + </class> + <class name="android/widget/RemoteViewsService" since="11"> + <extends name="android/app/Service"/> + <method name="<init>()V"/> + <method name="onGetViewFactory(Landroid/content/Intent;)Landroid/widget/RemoteViewsService$RemoteViewsFactory;"/> + </class> + <class name="android/widget/RemoteViewsService$RemoteViewsFactory" since="11"> + <extends name="java/lang/Object"/> + <method name="getCount()I"/> + <method name="getItemId(I)J"/> + <method name="getLoadingView()Landroid/widget/RemoteViews;"/> + <method name="getViewAt(I)Landroid/widget/RemoteViews;"/> + <method name="getViewTypeCount()I"/> + <method name="hasStableIds()Z"/> + <method name="onCreate()V"/> + <method name="onDataSetChanged()V"/> + <method name="onDestroy()V"/> + </class> + <class name="android/widget/ResourceCursorAdapter" since="1"> + <extends name="android/widget/CursorAdapter"/> + <method name="<init>(Landroid/content/Context;ILandroid/database/Cursor;)V" deprecated="16"/> + <method name="<init>(Landroid/content/Context;ILandroid/database/Cursor;I)V" since="11"/> + <method name="<init>(Landroid/content/Context;ILandroid/database/Cursor;Z)V" since="3"/> + <method name="setDropDownViewResource(I)V"/> + <method name="setViewResource(I)V" since="3"/> + </class> + <class name="android/widget/ResourceCursorTreeAdapter" since="1"> + <extends name="android/widget/CursorTreeAdapter"/> + <method name="<init>(Landroid/content/Context;Landroid/database/Cursor;II)V"/> + <method name="<init>(Landroid/content/Context;Landroid/database/Cursor;III)V"/> + <method name="<init>(Landroid/content/Context;Landroid/database/Cursor;IIII)V"/> + </class> + <class name="android/widget/ScrollView" since="1"> + <extends name="android/widget/FrameLayout"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="arrowScroll(I)Z"/> + <method name="computeScrollDeltaToGetChildRectOnScreen(Landroid/graphics/Rect;)I"/> + <method name="executeKeyEvent(Landroid/view/KeyEvent;)Z"/> + <method name="fling(I)V"/> + <method name="fullScroll(I)Z"/> + <method name="getMaxScrollAmount()I"/> + <method name="isFillViewport()Z"/> + <method name="isSmoothScrollingEnabled()Z"/> + <method name="pageScroll(I)Z"/> + <method name="setFillViewport(Z)V"/> + <method name="setSmoothScrollingEnabled(Z)V"/> + <method name="smoothScrollBy(II)V"/> + <method name="smoothScrollTo(II)V"/> + </class> + <class name="android/widget/Scroller" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/view/animation/Interpolator;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/view/animation/Interpolator;Z)V" since="11"/> + <method name="abortAnimation()V"/> + <method name="computeScrollOffset()Z"/> + <method name="extendDuration(I)V"/> + <method name="fling(IIIIIIII)V"/> + <method name="forceFinished(Z)V"/> + <method name="getCurrVelocity()F" since="14"/> + <method name="getCurrX()I"/> + <method name="getCurrY()I"/> + <method name="getDuration()I"/> + <method name="getFinalX()I"/> + <method name="getFinalY()I"/> + <method name="getStartX()I" since="3"/> + <method name="getStartY()I" since="3"/> + <method name="isFinished()Z"/> + <method name="setFinalX(I)V"/> + <method name="setFinalY(I)V"/> + <method name="setFriction(F)V" since="11"/> + <method name="startScroll(IIII)V"/> + <method name="startScroll(IIIII)V"/> + <method name="timePassed()I"/> + </class> + <class name="android/widget/SearchView" since="11"> + <extends name="android/widget/LinearLayout"/> + <implements name="android/view/CollapsibleActionView" since="14"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" since="21"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getImeOptions()I" since="16"/> + <method name="getInputType()I" since="16"/> + <method name="getMaxWidth()I" since="16"/> + <method name="getQuery()Ljava/lang/CharSequence;"/> + <method name="getQueryHint()Ljava/lang/CharSequence;" since="16"/> + <method name="getSuggestionsAdapter()Landroid/widget/CursorAdapter;"/> + <method name="isIconfiedByDefault()Z"/> + <method name="isIconified()Z"/> + <method name="isQueryRefinementEnabled()Z"/> + <method name="isSubmitButtonEnabled()Z"/> + <method name="setIconified(Z)V"/> + <method name="setIconifiedByDefault(Z)V"/> + <method name="setImeOptions(I)V" since="14"/> + <method name="setInputType(I)V" since="14"/> + <method name="setMaxWidth(I)V"/> + <method name="setOnCloseListener(Landroid/widget/SearchView$OnCloseListener;)V"/> + <method name="setOnQueryTextFocusChangeListener(Landroid/view/View$OnFocusChangeListener;)V"/> + <method name="setOnQueryTextListener(Landroid/widget/SearchView$OnQueryTextListener;)V"/> + <method name="setOnSearchClickListener(Landroid/view/View$OnClickListener;)V"/> + <method name="setOnSuggestionListener(Landroid/widget/SearchView$OnSuggestionListener;)V"/> + <method name="setQuery(Ljava/lang/CharSequence;Z)V"/> + <method name="setQueryHint(Ljava/lang/CharSequence;)V"/> + <method name="setQueryRefinementEnabled(Z)V"/> + <method name="setSearchableInfo(Landroid/app/SearchableInfo;)V"/> + <method name="setSubmitButtonEnabled(Z)V"/> + <method name="setSuggestionsAdapter(Landroid/widget/CursorAdapter;)V"/> + </class> + <class name="android/widget/SearchView$OnCloseListener" since="11"> + <extends name="java/lang/Object"/> + <method name="onClose()Z"/> + </class> + <class name="android/widget/SearchView$OnQueryTextListener" since="11"> + <extends name="java/lang/Object"/> + <method name="onQueryTextChange(Ljava/lang/String;)Z"/> + <method name="onQueryTextSubmit(Ljava/lang/String;)Z"/> + </class> + <class name="android/widget/SearchView$OnSuggestionListener" since="11"> + <extends name="java/lang/Object"/> + <method name="onSuggestionClick(I)Z"/> + <method name="onSuggestionSelect(I)Z"/> + </class> + <class name="android/widget/SectionIndexer" since="3"> + <extends name="java/lang/Object"/> + <method name="getPositionForSection(I)I"/> + <method name="getSectionForPosition(I)I"/> + <method name="getSections()[Ljava/lang/Object;"/> + </class> + <class name="android/widget/SeekBar" since="1"> + <extends name="android/widget/AbsSeekBar"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="setOnSeekBarChangeListener(Landroid/widget/SeekBar$OnSeekBarChangeListener;)V"/> + </class> + <class name="android/widget/SeekBar$OnSeekBarChangeListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onProgressChanged(Landroid/widget/SeekBar;IZ)V"/> + <method name="onStartTrackingTouch(Landroid/widget/SeekBar;)V"/> + <method name="onStopTrackingTouch(Landroid/widget/SeekBar;)V"/> + </class> + <class name="android/widget/ShareActionProvider" since="14"> + <extends name="android/view/ActionProvider"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="setOnShareTargetSelectedListener(Landroid/widget/ShareActionProvider$OnShareTargetSelectedListener;)V"/> + <method name="setShareHistoryFileName(Ljava/lang/String;)V"/> + <method name="setShareIntent(Landroid/content/Intent;)V"/> + <field name="DEFAULT_SHARE_HISTORY_FILE_NAME"/> + </class> + <class name="android/widget/ShareActionProvider$OnShareTargetSelectedListener" since="14"> + <extends name="java/lang/Object"/> + <method name="onShareTargetSelected(Landroid/widget/ShareActionProvider;Landroid/content/Intent;)Z"/> + </class> + <class name="android/widget/SimpleAdapter" since="1"> + <extends name="android/widget/BaseAdapter"/> + <implements name="android/widget/Filterable"/> + <implements name="android/widget/ThemedSpinnerAdapter" since="23"/> + <method name="<init>(Landroid/content/Context;Ljava/util/List;I[Ljava/lang/String;[I)V"/> + <method name="getViewBinder()Landroid/widget/SimpleAdapter$ViewBinder;"/> + <method name="setDropDownViewResource(I)V"/> + <method name="setViewBinder(Landroid/widget/SimpleAdapter$ViewBinder;)V"/> + <method name="setViewImage(Landroid/widget/ImageView;I)V"/> + <method name="setViewImage(Landroid/widget/ImageView;Ljava/lang/String;)V"/> + <method name="setViewText(Landroid/widget/TextView;Ljava/lang/String;)V"/> + </class> + <class name="android/widget/SimpleAdapter$ViewBinder" since="1"> + <extends name="java/lang/Object"/> + <method name="setViewValue(Landroid/view/View;Ljava/lang/Object;Ljava/lang/String;)Z"/> + </class> + <class name="android/widget/SimpleCursorAdapter" since="1"> + <extends name="android/widget/ResourceCursorAdapter"/> + <method name="<init>(Landroid/content/Context;ILandroid/database/Cursor;[Ljava/lang/String;[I)V" deprecated="16"/> + <method name="<init>(Landroid/content/Context;ILandroid/database/Cursor;[Ljava/lang/String;[II)V" since="11"/> + <method name="changeCursorAndColumns(Landroid/database/Cursor;[Ljava/lang/String;[I)V" since="3"/> + <method name="getCursorToStringConverter()Landroid/widget/SimpleCursorAdapter$CursorToStringConverter;"/> + <method name="getStringConversionColumn()I"/> + <method name="getViewBinder()Landroid/widget/SimpleCursorAdapter$ViewBinder;"/> + <method name="setCursorToStringConverter(Landroid/widget/SimpleCursorAdapter$CursorToStringConverter;)V"/> + <method name="setStringConversionColumn(I)V"/> + <method name="setViewBinder(Landroid/widget/SimpleCursorAdapter$ViewBinder;)V"/> + <method name="setViewImage(Landroid/widget/ImageView;Ljava/lang/String;)V"/> + <method name="setViewText(Landroid/widget/TextView;Ljava/lang/String;)V"/> + </class> + <class name="android/widget/SimpleCursorAdapter$CursorToStringConverter" since="1"> + <extends name="java/lang/Object"/> + <method name="convertToString(Landroid/database/Cursor;)Ljava/lang/CharSequence;"/> + </class> + <class name="android/widget/SimpleCursorAdapter$ViewBinder" since="1"> + <extends name="java/lang/Object"/> + <method name="setViewValue(Landroid/view/View;Landroid/database/Cursor;I)Z"/> + </class> + <class name="android/widget/SimpleCursorTreeAdapter" since="1"> + <extends name="android/widget/ResourceCursorTreeAdapter"/> + <method name="<init>(Landroid/content/Context;Landroid/database/Cursor;II[Ljava/lang/String;[III[Ljava/lang/String;[I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/database/Cursor;II[Ljava/lang/String;[II[Ljava/lang/String;[I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/database/Cursor;I[Ljava/lang/String;[II[Ljava/lang/String;[I)V"/> + <method name="getViewBinder()Landroid/widget/SimpleCursorTreeAdapter$ViewBinder;" since="5"/> + <method name="setViewBinder(Landroid/widget/SimpleCursorTreeAdapter$ViewBinder;)V" since="5"/> + <method name="setViewImage(Landroid/widget/ImageView;Ljava/lang/String;)V"/> + <method name="setViewText(Landroid/widget/TextView;Ljava/lang/String;)V" since="5"/> + </class> + <class name="android/widget/SimpleCursorTreeAdapter$ViewBinder" since="5"> + <extends name="java/lang/Object"/> + <method name="setViewValue(Landroid/view/View;Landroid/database/Cursor;I)Z"/> + </class> + <class name="android/widget/SimpleExpandableListAdapter" since="1"> + <extends name="android/widget/BaseExpandableListAdapter"/> + <method name="<init>(Landroid/content/Context;Ljava/util/List;II[Ljava/lang/String;[ILjava/util/List;II[Ljava/lang/String;[I)V"/> + <method name="<init>(Landroid/content/Context;Ljava/util/List;II[Ljava/lang/String;[ILjava/util/List;I[Ljava/lang/String;[I)V"/> + <method name="<init>(Landroid/content/Context;Ljava/util/List;I[Ljava/lang/String;[ILjava/util/List;I[Ljava/lang/String;[I)V"/> + <method name="newChildView(ZLandroid/view/ViewGroup;)Landroid/view/View;"/> + <method name="newGroupView(ZLandroid/view/ViewGroup;)Landroid/view/View;"/> + </class> + <class name="android/widget/SlidingDrawer" since="3" deprecated="17"> + <extends name="android/view/ViewGroup"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="animateClose()V"/> + <method name="animateOpen()V"/> + <method name="animateToggle()V"/> + <method name="close()V"/> + <method name="getContent()Landroid/view/View;"/> + <method name="getHandle()Landroid/view/View;"/> + <method name="isMoving()Z"/> + <method name="isOpened()Z"/> + <method name="lock()V"/> + <method name="open()V"/> + <method name="setOnDrawerCloseListener(Landroid/widget/SlidingDrawer$OnDrawerCloseListener;)V"/> + <method name="setOnDrawerOpenListener(Landroid/widget/SlidingDrawer$OnDrawerOpenListener;)V"/> + <method name="setOnDrawerScrollListener(Landroid/widget/SlidingDrawer$OnDrawerScrollListener;)V"/> + <method name="toggle()V"/> + <method name="unlock()V"/> + <field name="ORIENTATION_HORIZONTAL"/> + <field name="ORIENTATION_VERTICAL"/> + </class> + <class name="android/widget/SlidingDrawer$OnDrawerCloseListener" since="3"> + <extends name="java/lang/Object"/> + <method name="onDrawerClosed()V"/> + </class> + <class name="android/widget/SlidingDrawer$OnDrawerOpenListener" since="3"> + <extends name="java/lang/Object"/> + <method name="onDrawerOpened()V"/> + </class> + <class name="android/widget/SlidingDrawer$OnDrawerScrollListener" since="3"> + <extends name="java/lang/Object"/> + <method name="onScrollEnded()V"/> + <method name="onScrollStarted()V"/> + </class> + <class name="android/widget/Space" since="14"> + <extends name="android/view/View"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + </class> + <class name="android/widget/Spinner" since="1"> + <extends name="android/widget/AbsSpinner"/> + <implements name="android/content/DialogInterface$OnClickListener"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;I)V" since="11"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="11"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;III)V" since="21"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;IIILandroid/content/res/Resources$Theme;)V" since="23"/> + <method name="getDropDownHorizontalOffset()I" since="16"/> + <method name="getDropDownVerticalOffset()I" since="16"/> + <method name="getDropDownWidth()I" since="16"/> + <method name="getGravity()I" since="16"/> + <method name="getPopupBackground()Landroid/graphics/drawable/Drawable;" since="16"/> + <method name="getPopupContext()Landroid/content/Context;" since="23"/> + <method name="getPrompt()Ljava/lang/CharSequence;"/> + <method name="setDropDownHorizontalOffset(I)V" since="16"/> + <method name="setDropDownVerticalOffset(I)V" since="16"/> + <method name="setDropDownWidth(I)V" since="16"/> + <method name="setGravity(I)V" since="11"/> + <method name="setPopupBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V" since="16"/> + <method name="setPopupBackgroundResource(I)V" since="16"/> + <method name="setPrompt(Ljava/lang/CharSequence;)V"/> + <method name="setPromptId(I)V"/> + <field name="MODE_DIALOG" since="11"/> + <field name="MODE_DROPDOWN" since="11"/> + </class> + <class name="android/widget/SpinnerAdapter" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/widget/Adapter"/> + <method name="getDropDownView(ILandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;"/> + </class> + <class name="android/widget/StackView" since="11"> + <extends name="android/widget/AdapterViewAnimator"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" since="14"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + </class> + <class name="android/widget/Switch" since="14"> + <extends name="android/widget/CompoundButton"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getShowText()Z" since="21"/> + <method name="getSplitTrack()Z" since="21"/> + <method name="getSwitchMinWidth()I" since="16"/> + <method name="getSwitchPadding()I" since="16"/> + <method name="getTextOff()Ljava/lang/CharSequence;"/> + <method name="getTextOn()Ljava/lang/CharSequence;"/> + <method name="getThumbDrawable()Landroid/graphics/drawable/Drawable;" since="16"/> + <method name="getThumbTextPadding()I" since="16"/> + <method name="getThumbTintList()Landroid/content/res/ColorStateList;" since="23"/> + <method name="getThumbTintMode()Landroid/graphics/PorterDuff$Mode;" since="23"/> + <method name="getTrackDrawable()Landroid/graphics/drawable/Drawable;" since="16"/> + <method name="getTrackTintList()Landroid/content/res/ColorStateList;" since="23"/> + <method name="getTrackTintMode()Landroid/graphics/PorterDuff$Mode;" since="23"/> + <method name="setShowText(Z)V" since="21"/> + <method name="setSplitTrack(Z)V" since="21"/> + <method name="setSwitchMinWidth(I)V" since="16"/> + <method name="setSwitchPadding(I)V" since="16"/> + <method name="setSwitchTextAppearance(Landroid/content/Context;I)V"/> + <method name="setSwitchTypeface(Landroid/graphics/Typeface;)V"/> + <method name="setSwitchTypeface(Landroid/graphics/Typeface;I)V"/> + <method name="setTextOff(Ljava/lang/CharSequence;)V"/> + <method name="setTextOn(Ljava/lang/CharSequence;)V"/> + <method name="setThumbDrawable(Landroid/graphics/drawable/Drawable;)V" since="16"/> + <method name="setThumbResource(I)V" since="16"/> + <method name="setThumbTextPadding(I)V" since="16"/> + <method name="setThumbTintList(Landroid/content/res/ColorStateList;)V" since="23"/> + <method name="setThumbTintMode(Landroid/graphics/PorterDuff$Mode;)V" since="23"/> + <method name="setTrackDrawable(Landroid/graphics/drawable/Drawable;)V" since="16"/> + <method name="setTrackResource(I)V" since="16"/> + <method name="setTrackTintList(Landroid/content/res/ColorStateList;)V" since="23"/> + <method name="setTrackTintMode(Landroid/graphics/PorterDuff$Mode;)V" since="23"/> + </class> + <class name="android/widget/TabHost" since="1"> + <extends name="android/widget/FrameLayout"/> + <implements name="android/view/ViewTreeObserver$OnTouchModeChangeListener"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" since="21"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="addTab(Landroid/widget/TabHost$TabSpec;)V"/> + <method name="clearAllTabs()V"/> + <method name="getCurrentTab()I"/> + <method name="getCurrentTabTag()Ljava/lang/String;"/> + <method name="getCurrentTabView()Landroid/view/View;"/> + <method name="getCurrentView()Landroid/view/View;"/> + <method name="getTabContentView()Landroid/widget/FrameLayout;"/> + <method name="getTabWidget()Landroid/widget/TabWidget;"/> + <method name="newTabSpec(Ljava/lang/String;)Landroid/widget/TabHost$TabSpec;"/> + <method name="setCurrentTab(I)V"/> + <method name="setCurrentTabByTag(Ljava/lang/String;)V"/> + <method name="setOnTabChangedListener(Landroid/widget/TabHost$OnTabChangeListener;)V"/> + <method name="setup()V"/> + <method name="setup(Landroid/app/LocalActivityManager;)V"/> + </class> + <class name="android/widget/TabHost$OnTabChangeListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onTabChanged(Ljava/lang/String;)V"/> + </class> + <class name="android/widget/TabHost$TabContentFactory" since="1"> + <extends name="java/lang/Object"/> + <method name="createTabContent(Ljava/lang/String;)Landroid/view/View;"/> + </class> + <class name="android/widget/TabHost$TabSpec" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/widget/TabHost;)V"/> + <method name="getTag()Ljava/lang/String;" since="4"/> + <method name="setContent(I)Landroid/widget/TabHost$TabSpec;"/> + <method name="setContent(Landroid/content/Intent;)Landroid/widget/TabHost$TabSpec;"/> + <method name="setContent(Landroid/widget/TabHost$TabContentFactory;)Landroid/widget/TabHost$TabSpec;"/> + <method name="setIndicator(Landroid/view/View;)Landroid/widget/TabHost$TabSpec;" since="4"/> + <method name="setIndicator(Ljava/lang/CharSequence;)Landroid/widget/TabHost$TabSpec;"/> + <method name="setIndicator(Ljava/lang/CharSequence;Landroid/graphics/drawable/Drawable;)Landroid/widget/TabHost$TabSpec;"/> + </class> + <class name="android/widget/TabWidget" since="1"> + <extends name="android/widget/LinearLayout"/> + <implements name="android/view/View$OnFocusChangeListener"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="focusCurrentTab(I)V"/> + <method name="getChildTabViewAt(I)Landroid/view/View;" since="4"/> + <method name="getLeftStripDrawable()Landroid/graphics/drawable/Drawable;" since="24"/> + <method name="getRightStripDrawable()Landroid/graphics/drawable/Drawable;" since="24"/> + <method name="getTabCount()I" since="4"/> + <method name="isStripEnabled()Z" since="8"/> + <method name="setCurrentTab(I)V"/> + <method name="setDividerDrawable(I)V" since="4"/> + <method name="setDividerDrawable(Landroid/graphics/drawable/Drawable;)V" since="4"/> + <method name="setLeftStripDrawable(I)V" since="8"/> + <method name="setLeftStripDrawable(Landroid/graphics/drawable/Drawable;)V" since="8"/> + <method name="setRightStripDrawable(I)V" since="8"/> + <method name="setRightStripDrawable(Landroid/graphics/drawable/Drawable;)V" since="8"/> + <method name="setStripEnabled(Z)V" since="8"/> + </class> + <class name="android/widget/TableLayout" since="1"> + <extends name="android/widget/LinearLayout"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/TableLayout$LayoutParams;"/> + <method name="isColumnCollapsed(I)Z"/> + <method name="isColumnShrinkable(I)Z"/> + <method name="isColumnStretchable(I)Z"/> + <method name="isShrinkAllColumns()Z"/> + <method name="isStretchAllColumns()Z"/> + <method name="setColumnCollapsed(IZ)V"/> + <method name="setColumnShrinkable(IZ)V"/> + <method name="setColumnStretchable(IZ)V"/> + <method name="setShrinkAllColumns(Z)V"/> + <method name="setStretchAllColumns(Z)V"/> + </class> + <class name="android/widget/TableLayout$LayoutParams" since="1"> + <extends name="android/widget/LinearLayout$LayoutParams"/> + <method name="<init>()V"/> + <method name="<init>(II)V"/> + <method name="<init>(IIF)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/view/ViewGroup$LayoutParams;)V"/> + <method name="<init>(Landroid/view/ViewGroup$MarginLayoutParams;)V"/> + </class> + <class name="android/widget/TableRow" since="1"> + <extends name="android/widget/LinearLayout"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/TableRow$LayoutParams;"/> + <method name="getVirtualChildAt(I)Landroid/view/View;"/> + <method name="getVirtualChildCount()I"/> + </class> + <class name="android/widget/TableRow$LayoutParams" since="1"> + <extends name="android/widget/LinearLayout$LayoutParams"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(II)V"/> + <method name="<init>(IIF)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/view/ViewGroup$LayoutParams;)V"/> + <method name="<init>(Landroid/view/ViewGroup$MarginLayoutParams;)V"/> + <field name="column"/> + <field name="span"/> + </class> + <class name="android/widget/TextClock" since="17"> + <extends name="android/widget/TextView"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getFormat12Hour()Ljava/lang/CharSequence;"/> + <method name="getFormat24Hour()Ljava/lang/CharSequence;"/> + <method name="getTimeZone()Ljava/lang/String;"/> + <method name="is24HourModeEnabled()Z"/> + <method name="setFormat12Hour(Ljava/lang/CharSequence;)V"/> + <method name="setFormat24Hour(Ljava/lang/CharSequence;)V"/> + <method name="setTimeZone(Ljava/lang/String;)V"/> + <field name="DEFAULT_FORMAT_12_HOUR" deprecated="18"/> + <field name="DEFAULT_FORMAT_24_HOUR" deprecated="18"/> + </class> + <class name="android/widget/TextSwitcher" since="1"> + <extends name="android/widget/ViewSwitcher"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="setCurrentText(Ljava/lang/CharSequence;)V"/> + <method name="setText(Ljava/lang/CharSequence;)V"/> + </class> + <class name="android/widget/TextView" since="1"> + <extends name="android/view/View"/> + <implements name="android/view/ViewTreeObserver$OnPreDrawListener"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="addTextChangedListener(Landroid/text/TextWatcher;)V"/> + <method name="append(Ljava/lang/CharSequence;)V"/> + <method name="append(Ljava/lang/CharSequence;II)V"/> + <method name="beginBatchEdit()V" since="3"/> + <method name="bringPointIntoView(I)Z" since="3"/> + <method name="clearComposingText()V" since="3"/> + <method name="debug(I)V"/> + <method name="didTouchFocusSelect()Z" since="3"/> + <method name="endBatchEdit()V" since="3"/> + <method name="extractText(Landroid/view/inputmethod/ExtractedTextRequest;Landroid/view/inputmethod/ExtractedText;)Z" since="3"/> + <method name="getAutoLinkMask()I"/> + <method name="getAutoSizeMaxTextSize()I" since="26"/> + <method name="getAutoSizeMinTextSize()I" since="26"/> + <method name="getAutoSizeStepGranularity()I" since="26"/> + <method name="getAutoSizeTextAvailableSizes()[I" since="26"/> + <method name="getAutoSizeTextType()I" since="26"/> + <method name="getBreakStrategy()I" since="23"/> + <method name="getCompoundDrawablePadding()I"/> + <method name="getCompoundDrawableTintList()Landroid/content/res/ColorStateList;" since="23"/> + <method name="getCompoundDrawableTintMode()Landroid/graphics/PorterDuff$Mode;" since="23"/> + <method name="getCompoundDrawables()[Landroid/graphics/drawable/Drawable;"/> + <method name="getCompoundDrawablesRelative()[Landroid/graphics/drawable/Drawable;" since="17"/> + <method name="getCompoundPaddingBottom()I"/> + <method name="getCompoundPaddingEnd()I" since="17"/> + <method name="getCompoundPaddingLeft()I"/> + <method name="getCompoundPaddingRight()I"/> + <method name="getCompoundPaddingStart()I" since="17"/> + <method name="getCompoundPaddingTop()I"/> + <method name="getCurrentHintTextColor()I"/> + <method name="getCurrentTextColor()I"/> + <method name="getCustomInsertionActionModeCallback()Landroid/view/ActionMode$Callback;" since="23"/> + <method name="getCustomSelectionActionModeCallback()Landroid/view/ActionMode$Callback;" since="11"/> + <method name="getDefaultEditable()Z"/> + <method name="getDefaultMovementMethod()Landroid/text/method/MovementMethod;"/> + <method name="getEditableText()Landroid/text/Editable;" since="3"/> + <method name="getEllipsize()Landroid/text/TextUtils$TruncateAt;"/> + <method name="getError()Ljava/lang/CharSequence;"/> + <method name="getExtendedPaddingBottom()I"/> + <method name="getExtendedPaddingTop()I"/> + <method name="getFilters()[Landroid/text/InputFilter;"/> + <method name="getFontFeatureSettings()Ljava/lang/String;" since="21"/> + <method name="getFontVariationSettings()Ljava/lang/String;" since="26"/> + <method name="getFreezesText()Z"/> + <method name="getGravity()I"/> + <method name="getHighlightColor()I" since="16"/> + <method name="getHint()Ljava/lang/CharSequence;"/> + <method name="getHintTextColors()Landroid/content/res/ColorStateList;"/> + <method name="getHyphenationFrequency()I" since="23"/> + <method name="getImeActionId()I" since="3"/> + <method name="getImeActionLabel()Ljava/lang/CharSequence;" since="3"/> + <method name="getImeHintLocales()Landroid/os/LocaleList;" since="24"/> + <method name="getImeOptions()I" since="3"/> + <method name="getIncludeFontPadding()Z" since="16"/> + <method name="getInputExtras(Z)Landroid/os/Bundle;" since="3"/> + <method name="getInputType()I" since="3"/> + <method name="getJustificationMode()I" since="26"/> + <method name="getKeyListener()Landroid/text/method/KeyListener;"/> + <method name="getLayout()Landroid/text/Layout;"/> + <method name="getLetterSpacing()F" since="21"/> + <method name="getLineBounds(ILandroid/graphics/Rect;)I"/> + <method name="getLineCount()I"/> + <method name="getLineHeight()I"/> + <method name="getLineSpacingExtra()F" since="16"/> + <method name="getLineSpacingMultiplier()F" since="16"/> + <method name="getLinkTextColors()Landroid/content/res/ColorStateList;"/> + <method name="getLinksClickable()Z"/> + <method name="getMarqueeRepeatLimit()I" since="16"/> + <method name="getMaxEms()I" since="16"/> + <method name="getMaxHeight()I" since="16"/> + <method name="getMaxLines()I" since="16"/> + <method name="getMaxWidth()I" since="16"/> + <method name="getMinEms()I" since="16"/> + <method name="getMinHeight()I" since="16"/> + <method name="getMinLines()I" since="16"/> + <method name="getMinWidth()I" since="16"/> + <method name="getMovementMethod()Landroid/text/method/MovementMethod;"/> + <method name="getOffsetForPosition(FF)I" since="14"/> + <method name="getPaint()Landroid/text/TextPaint;"/> + <method name="getPaintFlags()I"/> + <method name="getPrivateImeOptions()Ljava/lang/String;" since="3"/> + <method name="getSelectionEnd()I"/> + <method name="getSelectionStart()I"/> + <method name="getShadowColor()I" since="16"/> + <method name="getShadowDx()F" since="16"/> + <method name="getShadowDy()F" since="16"/> + <method name="getShadowRadius()F" since="16"/> + <method name="getShowSoftInputOnFocus()Z" since="21"/> + <method name="getText()Ljava/lang/CharSequence;"/> + <method name="getTextClassifier()Landroid/view/textclassifier/TextClassifier;" since="26"/> + <method name="getTextColor(Landroid/content/Context;Landroid/content/res/TypedArray;I)I" removed="21"/> + <method name="getTextColors()Landroid/content/res/ColorStateList;"/> + <method name="getTextColors(Landroid/content/Context;Landroid/content/res/TypedArray;)Landroid/content/res/ColorStateList;" removed="21"/> + <method name="getTextLocale()Ljava/util/Locale;" since="17"/> + <method name="getTextLocales()Landroid/os/LocaleList;" since="24"/> + <method name="getTextScaleX()F"/> + <method name="getTextSize()F"/> + <method name="getTotalPaddingBottom()I"/> + <method name="getTotalPaddingEnd()I" since="17"/> + <method name="getTotalPaddingLeft()I"/> + <method name="getTotalPaddingRight()I"/> + <method name="getTotalPaddingStart()I" since="17"/> + <method name="getTotalPaddingTop()I"/> + <method name="getTransformationMethod()Landroid/text/method/TransformationMethod;"/> + <method name="getTypeface()Landroid/graphics/Typeface;"/> + <method name="getUrls()[Landroid/text/style/URLSpan;"/> + <method name="hasSelection()Z"/> + <method name="isCursorVisible()Z" since="16"/> + <method name="isInputMethodTarget()Z" since="3"/> + <method name="isSuggestionsEnabled()Z" since="14"/> + <method name="isTextSelectable()Z" since="11"/> + <method name="length()I"/> + <method name="moveCursorToVisibleOffset()Z" since="3"/> + <method name="onBeginBatchEdit()V" since="3"/> + <method name="onCommitCompletion(Landroid/view/inputmethod/CompletionInfo;)V" since="3"/> + <method name="onCommitCorrection(Landroid/view/inputmethod/CorrectionInfo;)V" since="11"/> + <method name="onEditorAction(I)V" since="3"/> + <method name="onEndBatchEdit()V" since="3"/> + <method name="onPrivateIMECommand(Ljava/lang/String;Landroid/os/Bundle;)Z" since="3"/> + <method name="onSelectionChanged(II)V" since="3"/> + <method name="onTextChanged(Ljava/lang/CharSequence;III)V"/> + <method name="onTextContextMenuItem(I)Z" since="3"/> + <method name="removeTextChangedListener(Landroid/text/TextWatcher;)V"/> + <method name="resetResolvedDrawables()V" since="14" removed="17"/> + <method name="resetResolvedLayoutDirection()V" since="14" removed="16"/> + <method name="resolveDrawables()V" since="14" removed="17"/> + <method name="resolveTextDirection()V" since="14" removed="16"/> + <method name="setAllCaps(Z)V" since="14"/> + <method name="setAutoLinkMask(I)V"/> + <method name="setAutoSizeTextTypeUniformWithConfiguration(IIII)V" since="26"/> + <method name="setAutoSizeTextTypeUniformWithPresetSizes([II)V" since="26"/> + <method name="setAutoSizeTextTypeWithDefaults(I)V" since="26"/> + <method name="setBreakStrategy(I)V" since="23"/> + <method name="setCompoundDrawablePadding(I)V"/> + <method name="setCompoundDrawableTintList(Landroid/content/res/ColorStateList;)V" since="23"/> + <method name="setCompoundDrawableTintMode(Landroid/graphics/PorterDuff$Mode;)V" since="23"/> + <method name="setCompoundDrawables(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V"/> + <method name="setCompoundDrawablesRelative(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V" since="17"/> + <method name="setCompoundDrawablesRelativeWithIntrinsicBounds(IIII)V" since="17"/> + <method name="setCompoundDrawablesRelativeWithIntrinsicBounds(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V" since="17"/> + <method name="setCompoundDrawablesWithIntrinsicBounds(IIII)V" since="3"/> + <method name="setCompoundDrawablesWithIntrinsicBounds(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V"/> + <method name="setCursorVisible(Z)V"/> + <method name="setCustomInsertionActionModeCallback(Landroid/view/ActionMode$Callback;)V" since="23"/> + <method name="setCustomSelectionActionModeCallback(Landroid/view/ActionMode$Callback;)V" since="11"/> + <method name="setEditableFactory(Landroid/text/Editable$Factory;)V"/> + <method name="setElegantTextHeight(Z)V" since="21"/> + <method name="setEllipsize(Landroid/text/TextUtils$TruncateAt;)V"/> + <method name="setEms(I)V"/> + <method name="setError(Ljava/lang/CharSequence;)V"/> + <method name="setError(Ljava/lang/CharSequence;Landroid/graphics/drawable/Drawable;)V"/> + <method name="setExtractedText(Landroid/view/inputmethod/ExtractedText;)V" since="3"/> + <method name="setFilters([Landroid/text/InputFilter;)V"/> + <method name="setFontFeatureSettings(Ljava/lang/String;)V" since="21"/> + <method name="setFontVariationSettings(Ljava/lang/String;)Z" since="26"/> + <method name="setFrame(IIII)Z"/> + <method name="setFreezesText(Z)V"/> + <method name="setGravity(I)V"/> + <method name="setHeight(I)V"/> + <method name="setHighlightColor(I)V"/> + <method name="setHint(I)V"/> + <method name="setHint(Ljava/lang/CharSequence;)V"/> + <method name="setHintTextColor(I)V"/> + <method name="setHintTextColor(Landroid/content/res/ColorStateList;)V"/> + <method name="setHorizontallyScrolling(Z)V"/> + <method name="setHyphenationFrequency(I)V" since="23"/> + <method name="setImeActionLabel(Ljava/lang/CharSequence;I)V" since="3"/> + <method name="setImeHintLocales(Landroid/os/LocaleList;)V" since="24"/> + <method name="setImeOptions(I)V" since="3"/> + <method name="setIncludeFontPadding(Z)V"/> + <method name="setInputExtras(I)V" since="3"/> + <method name="setInputType(I)V" since="3"/> + <method name="setJustificationMode(I)V" since="26"/> + <method name="setKeyListener(Landroid/text/method/KeyListener;)V"/> + <method name="setLetterSpacing(F)V" since="21"/> + <method name="setLineSpacing(FF)V"/> + <method name="setLines(I)V"/> + <method name="setLinkTextColor(I)V"/> + <method name="setLinkTextColor(Landroid/content/res/ColorStateList;)V"/> + <method name="setLinksClickable(Z)V"/> + <method name="setMarqueeRepeatLimit(I)V" since="2"/> + <method name="setMaxEms(I)V"/> + <method name="setMaxHeight(I)V"/> + <method name="setMaxLines(I)V"/> + <method name="setMaxWidth(I)V"/> + <method name="setMinEms(I)V"/> + <method name="setMinHeight(I)V"/> + <method name="setMinLines(I)V"/> + <method name="setMinWidth(I)V"/> + <method name="setMovementMethod(Landroid/text/method/MovementMethod;)V"/> + <method name="setOnEditorActionListener(Landroid/widget/TextView$OnEditorActionListener;)V" since="3"/> + <method name="setPaddingRelative(IIII)V" since="16"/> + <method name="setPaintFlags(I)V"/> + <method name="setPrivateImeOptions(Ljava/lang/String;)V" since="3"/> + <method name="setRawInputType(I)V" since="3"/> + <method name="setScroller(Landroid/widget/Scroller;)V"/> + <method name="setSelectAllOnFocus(Z)V"/> + <method name="setShadowLayer(FFFI)V"/> + <method name="setShowSoftInputOnFocus(Z)V" since="21"/> + <method name="setSingleLine()V"/> + <method name="setSingleLine(Z)V"/> + <method name="setSpannableFactory(Landroid/text/Spannable$Factory;)V"/> + <method name="setText(I)V"/> + <method name="setText(ILandroid/widget/TextView$BufferType;)V"/> + <method name="setText(Ljava/lang/CharSequence;)V"/> + <method name="setText(Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;)V"/> + <method name="setText([CII)V"/> + <method name="setTextAppearance(I)V" since="23"/> + <method name="setTextAppearance(Landroid/content/Context;I)V" deprecated="23"/> + <method name="setTextClassifier(Landroid/view/textclassifier/TextClassifier;)V" since="26"/> + <method name="setTextColor(I)V"/> + <method name="setTextColor(Landroid/content/res/ColorStateList;)V"/> + <method name="setTextIsSelectable(Z)V" since="11"/> + <method name="setTextKeepState(Ljava/lang/CharSequence;)V"/> + <method name="setTextKeepState(Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;)V"/> + <method name="setTextLocale(Ljava/util/Locale;)V" since="17"/> + <method name="setTextLocales(Landroid/os/LocaleList;)V" since="24"/> + <method name="setTextScaleX(F)V"/> + <method name="setTextSize(F)V"/> + <method name="setTextSize(IF)V"/> + <method name="setTransformationMethod(Landroid/text/method/TransformationMethod;)V"/> + <method name="setTypeface(Landroid/graphics/Typeface;)V"/> + <method name="setTypeface(Landroid/graphics/Typeface;I)V"/> + <method name="setWidth(I)V"/> + <field name="AUTO_SIZE_TEXT_TYPE_NONE" since="26"/> + <field name="AUTO_SIZE_TEXT_TYPE_UNIFORM" since="26"/> + </class> + <class name="android/widget/TextView$BufferType" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Landroid/widget/TextView$BufferType;"/> + <method name="values()[Landroid/widget/TextView$BufferType;"/> + <field name="EDITABLE"/> + <field name="NORMAL"/> + <field name="SPANNABLE"/> + </class> + <class name="android/widget/TextView$OnEditorActionListener" since="3"> + <extends name="java/lang/Object"/> + <method name="onEditorAction(Landroid/widget/TextView;ILandroid/view/KeyEvent;)Z"/> + </class> + <class name="android/widget/TextView$SavedState" since="1"> + <extends name="android/view/View$BaseSavedState"/> + <method name="<init>()V"/> + <field name="CREATOR"/> + </class> + <class name="android/widget/ThemedSpinnerAdapter" since="23"> + <extends name="java/lang/Object"/> + <implements name="android/widget/SpinnerAdapter"/> + <method name="getDropDownViewTheme()Landroid/content/res/Resources$Theme;"/> + <method name="setDropDownViewTheme(Landroid/content/res/Resources$Theme;)V"/> + </class> + <class name="android/widget/TimePicker" since="1"> + <extends name="android/widget/FrameLayout"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getCurrentHour()Ljava/lang/Integer;" deprecated="23"/> + <method name="getCurrentMinute()Ljava/lang/Integer;" deprecated="23"/> + <method name="getHour()I" since="23"/> + <method name="getMinute()I" since="23"/> + <method name="is24HourView()Z"/> + <method name="setCurrentHour(Ljava/lang/Integer;)V" deprecated="23"/> + <method name="setCurrentMinute(Ljava/lang/Integer;)V" deprecated="23"/> + <method name="setHour(I)V" since="23"/> + <method name="setIs24HourView(Ljava/lang/Boolean;)V"/> + <method name="setMinute(I)V" since="23"/> + <method name="setOnTimeChangedListener(Landroid/widget/TimePicker$OnTimeChangedListener;)V"/> + <method name="validateInput()Z" since="26"/> + </class> + <class name="android/widget/TimePicker$OnTimeChangedListener" since="1"> + <extends name="java/lang/Object"/> + <method name="onTimeChanged(Landroid/widget/TimePicker;II)V"/> + </class> + <class name="android/widget/Toast" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="cancel()V"/> + <method name="getDuration()I"/> + <method name="getGravity()I"/> + <method name="getHorizontalMargin()F"/> + <method name="getVerticalMargin()F"/> + <method name="getView()Landroid/view/View;"/> + <method name="getXOffset()I"/> + <method name="getYOffset()I"/> + <method name="makeText(Landroid/content/Context;II)Landroid/widget/Toast;"/> + <method name="makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;"/> + <method name="setDuration(I)V"/> + <method name="setGravity(III)V"/> + <method name="setMargin(FF)V"/> + <method name="setText(I)V"/> + <method name="setText(Ljava/lang/CharSequence;)V"/> + <method name="setView(Landroid/view/View;)V"/> + <method name="show()V"/> + <field name="LENGTH_LONG"/> + <field name="LENGTH_SHORT"/> + </class> + <class name="android/widget/ToggleButton" since="1"> + <extends name="android/widget/CompoundButton"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getTextOff()Ljava/lang/CharSequence;"/> + <method name="getTextOn()Ljava/lang/CharSequence;"/> + <method name="setTextOff(Ljava/lang/CharSequence;)V"/> + <method name="setTextOn(Ljava/lang/CharSequence;)V"/> + </class> + <class name="android/widget/Toolbar" since="21"> + <extends name="android/view/ViewGroup"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V"/> + <method name="collapseActionView()V"/> + <method name="dismissPopupMenus()V"/> + <method name="generateDefaultLayoutParams()Landroid/widget/Toolbar$LayoutParams;"/> + <method name="generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/Toolbar$LayoutParams;"/> + <method name="generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroid/widget/Toolbar$LayoutParams;"/> + <method name="getContentInsetEnd()I"/> + <method name="getContentInsetEndWithActions()I" since="24"/> + <method name="getContentInsetLeft()I"/> + <method name="getContentInsetRight()I"/> + <method name="getContentInsetStart()I"/> + <method name="getContentInsetStartWithNavigation()I" since="24"/> + <method name="getCurrentContentInsetEnd()I" since="24"/> + <method name="getCurrentContentInsetLeft()I" since="24"/> + <method name="getCurrentContentInsetRight()I" since="24"/> + <method name="getCurrentContentInsetStart()I" since="24"/> + <method name="getLogo()Landroid/graphics/drawable/Drawable;"/> + <method name="getLogoDescription()Ljava/lang/CharSequence;"/> + <method name="getMenu()Landroid/view/Menu;"/> + <method name="getNavigationContentDescription()Ljava/lang/CharSequence;"/> + <method name="getNavigationIcon()Landroid/graphics/drawable/Drawable;"/> + <method name="getOverflowIcon()Landroid/graphics/drawable/Drawable;" since="23"/> + <method name="getPopupTheme()I"/> + <method name="getSubtitle()Ljava/lang/CharSequence;"/> + <method name="getTitle()Ljava/lang/CharSequence;"/> + <method name="getTitleMarginBottom()I" since="24"/> + <method name="getTitleMarginEnd()I" since="24"/> + <method name="getTitleMarginStart()I" since="24"/> + <method name="getTitleMarginTop()I" since="24"/> + <method name="hasExpandedActionView()Z"/> + <method name="hideOverflowMenu()Z"/> + <method name="inflateMenu(I)V"/> + <method name="isOverflowMenuShowing()Z"/> + <method name="setContentInsetEndWithActions(I)V" since="24"/> + <method name="setContentInsetStartWithNavigation(I)V" since="24"/> + <method name="setContentInsetsAbsolute(II)V"/> + <method name="setContentInsetsRelative(II)V"/> + <method name="setLogo(I)V"/> + <method name="setLogo(Landroid/graphics/drawable/Drawable;)V"/> + <method name="setLogoDescription(I)V"/> + <method name="setLogoDescription(Ljava/lang/CharSequence;)V"/> + <method name="setNavigationContentDescription(I)V"/> + <method name="setNavigationContentDescription(Ljava/lang/CharSequence;)V"/> + <method name="setNavigationIcon(I)V"/> + <method name="setNavigationIcon(Landroid/graphics/drawable/Drawable;)V"/> + <method name="setNavigationOnClickListener(Landroid/view/View$OnClickListener;)V"/> + <method name="setOnMenuItemClickListener(Landroid/widget/Toolbar$OnMenuItemClickListener;)V"/> + <method name="setOverflowIcon(Landroid/graphics/drawable/Drawable;)V" since="23"/> + <method name="setPopupTheme(I)V"/> + <method name="setSubtitle(I)V"/> + <method name="setSubtitle(Ljava/lang/CharSequence;)V"/> + <method name="setSubtitleTextAppearance(Landroid/content/Context;I)V"/> + <method name="setSubtitleTextColor(I)V"/> + <method name="setTitle(I)V"/> + <method name="setTitle(Ljava/lang/CharSequence;)V"/> + <method name="setTitleMargin(IIII)V" since="24"/> + <method name="setTitleMarginBottom(I)V" since="24"/> + <method name="setTitleMarginEnd(I)V" since="24"/> + <method name="setTitleMarginStart(I)V" since="24"/> + <method name="setTitleMarginTop(I)V" since="24"/> + <method name="setTitleTextAppearance(Landroid/content/Context;I)V"/> + <method name="setTitleTextColor(I)V"/> + <method name="showOverflowMenu()Z"/> + </class> + <class name="android/widget/Toolbar$LayoutParams" since="21"> + <extends name="android/app/ActionBar$LayoutParams"/> + <method name="<init>(I)V"/> + <method name="<init>(II)V"/> + <method name="<init>(III)V"/> + <method name="<init>(Landroid/app/ActionBar$LayoutParams;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/view/ViewGroup$LayoutParams;)V"/> + <method name="<init>(Landroid/view/ViewGroup$MarginLayoutParams;)V"/> + <method name="<init>(Landroid/widget/Toolbar$LayoutParams;)V"/> + </class> + <class name="android/widget/Toolbar$OnMenuItemClickListener" since="21"> + <extends name="java/lang/Object"/> + <method name="onMenuItemClick(Landroid/view/MenuItem;)Z"/> + </class> + <class name="android/widget/TwoLineListItem" since="1" deprecated="17"> + <extends name="android/widget/RelativeLayout"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="getText1()Landroid/widget/TextView;"/> + <method name="getText2()Landroid/widget/TextView;"/> + </class> + <class name="android/widget/VideoView" since="1"> + <extends name="android/view/SurfaceView"/> + <implements name="android/widget/MediaController$MediaPlayerControl"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="addSubtitleSource(Ljava/io/InputStream;Landroid/media/MediaFormat;)V" since="19"/> + <method name="resolveAdjustedSize(II)I"/> + <method name="resume()V" since="8"/> + <method name="setAudioAttributes(Landroid/media/AudioAttributes;)V" since="26"/> + <method name="setAudioFocusRequest(I)V" since="26"/> + <method name="setMediaController(Landroid/widget/MediaController;)V"/> + <method name="setOnCompletionListener(Landroid/media/MediaPlayer$OnCompletionListener;)V"/> + <method name="setOnErrorListener(Landroid/media/MediaPlayer$OnErrorListener;)V"/> + <method name="setOnInfoListener(Landroid/media/MediaPlayer$OnInfoListener;)V" since="17"/> + <method name="setOnPreparedListener(Landroid/media/MediaPlayer$OnPreparedListener;)V"/> + <method name="setVideoPath(Ljava/lang/String;)V"/> + <method name="setVideoURI(Landroid/net/Uri;)V"/> + <method name="setVideoURI(Landroid/net/Uri;Ljava/util/Map;)V" since="21"/> + <method name="stopPlayback()V"/> + <method name="suspend()V" since="8"/> + </class> + <class name="android/widget/ViewAnimator" since="1"> + <extends name="android/widget/FrameLayout"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="getAnimateFirstView()Z" since="17"/> + <method name="getCurrentView()Landroid/view/View;"/> + <method name="getDisplayedChild()I"/> + <method name="getInAnimation()Landroid/view/animation/Animation;"/> + <method name="getOutAnimation()Landroid/view/animation/Animation;"/> + <method name="setAnimateFirstView(Z)V"/> + <method name="setDisplayedChild(I)V"/> + <method name="setInAnimation(Landroid/content/Context;I)V"/> + <method name="setInAnimation(Landroid/view/animation/Animation;)V"/> + <method name="setOutAnimation(Landroid/content/Context;I)V"/> + <method name="setOutAnimation(Landroid/view/animation/Animation;)V"/> + <method name="showNext()V"/> + <method name="showPrevious()V"/> + </class> + <class name="android/widget/ViewFlipper" since="1"> + <extends name="android/widget/ViewAnimator"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="isAutoStart()Z" since="7"/> + <method name="isFlipping()Z"/> + <method name="setAutoStart(Z)V" since="7"/> + <method name="setFlipInterval(I)V"/> + <method name="startFlipping()V"/> + <method name="stopFlipping()V"/> + </class> + <class name="android/widget/ViewSwitcher" since="1"> + <extends name="android/widget/ViewAnimator"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="getNextView()Landroid/view/View;"/> + <method name="reset()V"/> + <method name="setFactory(Landroid/widget/ViewSwitcher$ViewFactory;)V"/> + </class> + <class name="android/widget/ViewSwitcher$ViewFactory" since="1"> + <extends name="java/lang/Object"/> + <method name="makeView()Landroid/view/View;"/> + </class> + <class name="android/widget/WrapperListAdapter" since="1"> + <extends name="java/lang/Object"/> + <implements name="android/widget/ListAdapter"/> + <method name="getWrappedAdapter()Landroid/widget/ListAdapter;"/> + </class> + <class name="android/widget/ZoomButton" since="1" deprecated="26"> + <extends name="android/widget/ImageButton"/> + <implements name="android/view/View$OnLongClickListener"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="21"/> + <method name="setZoomSpeed(J)V"/> + </class> + <class name="android/widget/ZoomButtonsController" since="4" deprecated="26"> + <extends name="java/lang/Object"/> + <implements name="android/view/View$OnTouchListener"/> + <method name="<init>(Landroid/view/View;)V"/> + <method name="getContainer()Landroid/view/ViewGroup;"/> + <method name="getZoomControls()Landroid/view/View;"/> + <method name="isAutoDismissed()Z"/> + <method name="isVisible()Z"/> + <method name="setAutoDismissed(Z)V"/> + <method name="setFocusable(Z)V"/> + <method name="setOnZoomListener(Landroid/widget/ZoomButtonsController$OnZoomListener;)V"/> + <method name="setVisible(Z)V"/> + <method name="setZoomInEnabled(Z)V"/> + <method name="setZoomOutEnabled(Z)V"/> + <method name="setZoomSpeed(J)V"/> + </class> + <class name="android/widget/ZoomButtonsController$OnZoomListener" since="4"> + <extends name="java/lang/Object"/> + <method name="onVisibilityChanged(Z)V"/> + <method name="onZoom(Z)V"/> + </class> + <class name="android/widget/ZoomControls" since="1"> + <extends name="android/widget/LinearLayout"/> + <method name="<init>(Landroid/content/Context;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="hide()V"/> + <method name="setIsZoomInEnabled(Z)V"/> + <method name="setIsZoomOutEnabled(Z)V"/> + <method name="setOnZoomInClickListener(Landroid/view/View$OnClickListener;)V"/> + <method name="setOnZoomOutClickListener(Landroid/view/View$OnClickListener;)V"/> + <method name="setZoomSpeed(J)V"/> + <method name="show()V"/> + </class> + <class name="com/android/internal/util/Predicate" since="1" deprecated="26"> + <extends name="java/lang/Object"/> + <method name="apply(Ljava/lang/Object;)Z"/> + </class> + <class name="com/google/android/maps/GeoPoint" since="1" removed="3"> + <extends name="java/lang/Object"/> + <method name="<init>(II)V"/> + <method name="getLatitudeE6()I"/> + <method name="getLongitudeE6()I"/> + </class> + <class name="com/google/android/maps/ItemizedOverlay" since="1" removed="3"> + <extends name="com/google/android/maps/Overlay"/> + <method name="<init>(Landroid/graphics/drawable/Drawable;)V"/> + <method name="boundCenter(Landroid/graphics/drawable/Drawable;)Landroid/graphics/drawable/Drawable;"/> + <method name="boundCenterBottom(Landroid/graphics/drawable/Drawable;)Landroid/graphics/drawable/Drawable;"/> + <method name="createItem(I)Lcom/google/android/maps/OverlayItem;"/> + <method name="getCenter()Lcom/google/android/maps/GeoPoint;"/> + <method name="getFocus()Lcom/google/android/maps/OverlayItem;"/> + <method name="getIndexToDraw(I)I"/> + <method name="getItem(I)Lcom/google/android/maps/OverlayItem;"/> + <method name="getLastFocusedIndex()I"/> + <method name="getLatSpanE6()I"/> + <method name="getLonSpanE6()I"/> + <method name="hitTest(Lcom/google/android/maps/OverlayItem;Landroid/graphics/drawable/Drawable;II)Z"/> + <method name="nextFocus(Z)Lcom/google/android/maps/OverlayItem;"/> + <method name="onTap(I)Z"/> + <method name="populate()V"/> + <method name="setDrawFocusedItem(Z)V"/> + <method name="setFocus(Lcom/google/android/maps/OverlayItem;)V"/> + <method name="setLastFocusedIndex(I)V"/> + <method name="setOnFocusChangeListener(Lcom/google/android/maps/ItemizedOverlay$OnFocusChangeListener;)V"/> + <method name="size()I"/> + </class> + <class name="com/google/android/maps/ItemizedOverlay$OnFocusChangeListener" since="1" removed="3"> + <extends name="java/lang/Object"/> + <method name="onFocusChanged(Lcom/google/android/maps/ItemizedOverlay;Lcom/google/android/maps/OverlayItem;)V"/> + </class> + <class name="com/google/android/maps/MapActivity" since="1" removed="3"> + <extends name="android/app/Activity"/> + <method name="<init>()V"/> + <method name="isLocationDisplayed()Z"/> + <method name="isRouteDisplayed()Z"/> + </class> + <class name="com/google/android/maps/MapController" since="1" removed="3"> + <extends name="java/lang/Object"/> + <implements name="android/view/View$OnKeyListener"/> + <method name="<init>()V"/> + <method name="animateTo(Lcom/google/android/maps/GeoPoint;)V"/> + <method name="animateTo(Lcom/google/android/maps/GeoPoint;Landroid/os/Message;)V"/> + <method name="animateTo(Lcom/google/android/maps/GeoPoint;Ljava/lang/Runnable;)V"/> + <method name="scrollBy(II)V"/> + <method name="setCenter(Lcom/google/android/maps/GeoPoint;)V"/> + <method name="setZoom(I)I"/> + <method name="stopAnimation(Z)V"/> + <method name="stopPanning()V"/> + <method name="zoomIn()Z"/> + <method name="zoomInFixing(II)Z"/> + <method name="zoomOut()Z"/> + <method name="zoomOutFixing(II)Z"/> + <method name="zoomToSpan(II)V"/> + </class> + <class name="com/google/android/maps/MapView" since="1" removed="3"> + <extends name="android/view/ViewGroup"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V"/> + <method name="<init>(Landroid/content/Context;Ljava/lang/String;)V"/> + <method name="canCoverCenter()Z"/> + <method name="displayZoomControls(Z)V"/> + <method name="generateDefaultLayoutParams()Lcom/google/android/maps/MapView$LayoutParams;"/> + <method name="getController()Lcom/google/android/maps/MapController;"/> + <method name="getLatitudeSpan()I"/> + <method name="getLongitudeSpan()I"/> + <method name="getMapCenter()Lcom/google/android/maps/GeoPoint;"/> + <method name="getMaxZoomLevel()I"/> + <method name="getOverlays()Ljava/util/List;"/> + <method name="getProjection()Lcom/google/android/maps/Projection;"/> + <method name="getZoomControls()Landroid/view/View;"/> + <method name="getZoomLevel()I"/> + <method name="isSatellite()Z"/> + <method name="isStreetView()Z"/> + <method name="isTraffic()Z"/> + <method name="onRestoreInstanceState(Landroid/os/Bundle;)V"/> + <method name="onSaveInstanceState(Landroid/os/Bundle;)V"/> + <method name="preLoad()V"/> + <method name="setReticleDrawMode(Lcom/google/android/maps/MapView$ReticleDrawMode;)V"/> + <method name="setSatellite(Z)V"/> + <method name="setStreetView(Z)V"/> + <method name="setTraffic(Z)V"/> + </class> + <class name="com/google/android/maps/MapView$LayoutParams" since="1" removed="3"> + <extends name="android/view/ViewGroup$LayoutParams"/> + <method name="<init>(IIIII)V"/> + <method name="<init>(IILcom/google/android/maps/GeoPoint;I)V"/> + <method name="<init>(IILcom/google/android/maps/GeoPoint;III)V"/> + <method name="<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V"/> + <method name="<init>(Landroid/view/ViewGroup$LayoutParams;)V"/> + <method name="debug(Ljava/lang/String;)Ljava/lang/String;"/> + <field name="BOTTOM"/> + <field name="BOTTOM_CENTER"/> + <field name="CENTER"/> + <field name="CENTER_HORIZONTAL"/> + <field name="CENTER_VERTICAL"/> + <field name="LEFT"/> + <field name="MODE_MAP"/> + <field name="MODE_VIEW"/> + <field name="RIGHT"/> + <field name="TOP"/> + <field name="TOP_LEFT"/> + <field name="alignment"/> + <field name="mode"/> + <field name="point"/> + <field name="x"/> + <field name="y"/> + </class> + <class name="com/google/android/maps/MapView$ReticleDrawMode" since="1" removed="3"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Lcom/google/android/maps/MapView$ReticleDrawMode;"/> + <method name="values()[Lcom/google/android/maps/MapView$ReticleDrawMode;"/> + <field name="DRAW_RETICLE_NEVER"/> + <field name="DRAW_RETICLE_OVER"/> + <field name="DRAW_RETICLE_UNDER"/> + </class> + <class name="com/google/android/maps/MyLocationOverlay" since="1" removed="3"> + <extends name="com/google/android/maps/Overlay"/> + <implements name="android/hardware/SensorListener"/> + <implements name="android/location/LocationListener"/> + <method name="<init>(Landroid/content/Context;Lcom/google/android/maps/MapView;)V"/> + <method name="disableCompass()V"/> + <method name="disableMyLocation()V"/> + <method name="dispatchTap()Z"/> + <method name="drawCompass(Landroid/graphics/Canvas;F)V"/> + <method name="drawMyLocation(Landroid/graphics/Canvas;Lcom/google/android/maps/MapView;Landroid/location/Location;Lcom/google/android/maps/GeoPoint;J)V"/> + <method name="enableCompass()Z"/> + <method name="enableMyLocation()Z"/> + <method name="getLastFix()Landroid/location/Location;"/> + <method name="getMyLocation()Lcom/google/android/maps/GeoPoint;"/> + <method name="getOrientation()F"/> + <method name="isCompassEnabled()Z"/> + <method name="isMyLocationEnabled()Z"/> + <method name="runOnFirstFix(Ljava/lang/Runnable;)Z"/> + </class> + <class name="com/google/android/maps/Overlay" since="1" removed="3"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="draw(Landroid/graphics/Canvas;Lcom/google/android/maps/MapView;Z)V"/> + <method name="draw(Landroid/graphics/Canvas;Lcom/google/android/maps/MapView;ZJ)Z"/> + <method name="drawAt(Landroid/graphics/Canvas;Landroid/graphics/drawable/Drawable;IIZ)V"/> + <method name="onKeyDown(ILandroid/view/KeyEvent;Lcom/google/android/maps/MapView;)Z"/> + <method name="onKeyUp(ILandroid/view/KeyEvent;Lcom/google/android/maps/MapView;)Z"/> + <method name="onTap(Lcom/google/android/maps/GeoPoint;Lcom/google/android/maps/MapView;)Z"/> + <method name="onTouchEvent(Landroid/view/MotionEvent;Lcom/google/android/maps/MapView;)Z"/> + <method name="onTrackballEvent(Landroid/view/MotionEvent;Lcom/google/android/maps/MapView;)Z"/> + <field name="SHADOW_X_SKEW"/> + <field name="SHADOW_Y_SCALE"/> + </class> + <class name="com/google/android/maps/OverlayItem" since="1" removed="3"> + <extends name="java/lang/Object"/> + <method name="<init>(Lcom/google/android/maps/GeoPoint;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="getMarker(I)Landroid/graphics/drawable/Drawable;"/> + <method name="getPoint()Lcom/google/android/maps/GeoPoint;"/> + <method name="getSnippet()Ljava/lang/String;"/> + <method name="getTitle()Ljava/lang/String;"/> + <method name="routableAddress()Ljava/lang/String;"/> + <method name="setMarker(Landroid/graphics/drawable/Drawable;)V"/> + <method name="setState(Landroid/graphics/drawable/Drawable;I)V"/> + <field name="ITEM_STATE_FOCUSED_MASK"/> + <field name="ITEM_STATE_PRESSED_MASK"/> + <field name="ITEM_STATE_SELECTED_MASK"/> + <field name="mMarker"/> + <field name="mPoint"/> + <field name="mSnippet"/> + <field name="mTitle"/> + </class> + <class name="com/google/android/maps/Projection" since="1" removed="3"> + <extends name="java/lang/Object"/> + <method name="fromPixels(II)Lcom/google/android/maps/GeoPoint;"/> + <method name="metersToEquatorPixels(F)F"/> + <method name="toPixels(Lcom/google/android/maps/GeoPoint;Landroid/graphics/Point;)Landroid/graphics/Point;"/> + </class> + <class name="com/google/android/maps/TrackballGestureDetector" since="1" removed="3"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="analyze(Landroid/view/MotionEvent;)V"/> + <method name="getCurrentDownX()F"/> + <method name="getCurrentDownY()F"/> + <method name="getFirstDownX()F"/> + <method name="getFirstDownY()F"/> + <method name="isDoubleTap()Z"/> + <method name="isScroll()Z"/> + <method name="isTap()Z"/> + <method name="registerLongPressCallback(Ljava/lang/Runnable;)V"/> + <method name="scrollX()F"/> + <method name="scrollY()F"/> + </class> + <class name="dalvik/annotation/TestTarget" since="1" deprecated="14"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + <method name="conceptName()Ljava/lang/String;" since="3"/> + <method name="methodArgs()[Ljava/lang/Class;"/> + <method name="methodName()Ljava/lang/String;"/> + </class> + <class name="dalvik/annotation/TestTargetClass" since="1" deprecated="14"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + <method name="value()Ljava/lang/Class;"/> + </class> + <class name="dalvik/bytecode/OpcodeInfo" since="11"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="MAXIMUM_PACKED_VALUE"/> + <field name="MAXIMUM_VALUE"/> + </class> + <class name="dalvik/bytecode/Opcodes" since="1"> + <extends name="java/lang/Object"/> + <field name="OP_ADD_DOUBLE"/> + <field name="OP_ADD_DOUBLE_2ADDR"/> + <field name="OP_ADD_FLOAT"/> + <field name="OP_ADD_FLOAT_2ADDR"/> + <field name="OP_ADD_INT"/> + <field name="OP_ADD_INT_2ADDR"/> + <field name="OP_ADD_INT_LIT16"/> + <field name="OP_ADD_INT_LIT8"/> + <field name="OP_ADD_LONG"/> + <field name="OP_ADD_LONG_2ADDR"/> + <field name="OP_AGET"/> + <field name="OP_AGET_BOOLEAN"/> + <field name="OP_AGET_BYTE"/> + <field name="OP_AGET_CHAR"/> + <field name="OP_AGET_OBJECT"/> + <field name="OP_AGET_SHORT"/> + <field name="OP_AGET_WIDE"/> + <field name="OP_AND_INT"/> + <field name="OP_AND_INT_2ADDR"/> + <field name="OP_AND_INT_LIT16"/> + <field name="OP_AND_INT_LIT8"/> + <field name="OP_AND_LONG"/> + <field name="OP_AND_LONG_2ADDR"/> + <field name="OP_APUT"/> + <field name="OP_APUT_BOOLEAN"/> + <field name="OP_APUT_BYTE"/> + <field name="OP_APUT_CHAR"/> + <field name="OP_APUT_OBJECT"/> + <field name="OP_APUT_SHORT"/> + <field name="OP_APUT_WIDE"/> + <field name="OP_ARRAY_LENGTH"/> + <field name="OP_BREAKPOINT" since="8" deprecated="16"/> + <field name="OP_CHECK_CAST"/> + <field name="OP_CHECK_CAST_JUMBO" since="11"/> + <field name="OP_CMPG_DOUBLE"/> + <field name="OP_CMPG_FLOAT"/> + <field name="OP_CMPL_DOUBLE"/> + <field name="OP_CMPL_FLOAT"/> + <field name="OP_CMP_LONG"/> + <field name="OP_CONST"/> + <field name="OP_CONST_16"/> + <field name="OP_CONST_4"/> + <field name="OP_CONST_CLASS"/> + <field name="OP_CONST_CLASS_JUMBO" since="11"/> + <field name="OP_CONST_HIGH16"/> + <field name="OP_CONST_METHOD_HANDLE" since="27"/> + <field name="OP_CONST_METHOD_TYPE" since="27"/> + <field name="OP_CONST_STRING"/> + <field name="OP_CONST_STRING_JUMBO"/> + <field name="OP_CONST_WIDE"/> + <field name="OP_CONST_WIDE_16"/> + <field name="OP_CONST_WIDE_32"/> + <field name="OP_CONST_WIDE_HIGH16"/> + <field name="OP_DIV_DOUBLE"/> + <field name="OP_DIV_DOUBLE_2ADDR"/> + <field name="OP_DIV_FLOAT"/> + <field name="OP_DIV_FLOAT_2ADDR"/> + <field name="OP_DIV_INT"/> + <field name="OP_DIV_INT_2ADDR"/> + <field name="OP_DIV_INT_LIT16"/> + <field name="OP_DIV_INT_LIT8"/> + <field name="OP_DIV_LONG"/> + <field name="OP_DIV_LONG_2ADDR"/> + <field name="OP_DOUBLE_TO_FLOAT"/> + <field name="OP_DOUBLE_TO_INT"/> + <field name="OP_DOUBLE_TO_LONG"/> + <field name="OP_EXECUTE_INLINE" deprecated="16"/> + <field name="OP_EXECUTE_INLINE_RANGE" since="8" deprecated="16"/> + <field name="OP_FILLED_NEW_ARRAY"/> + <field name="OP_FILLED_NEW_ARRAY_JUMBO" since="11"/> + <field name="OP_FILLED_NEW_ARRAY_RANGE"/> + <field name="OP_FILL_ARRAY_DATA"/> + <field name="OP_FLOAT_TO_DOUBLE"/> + <field name="OP_FLOAT_TO_INT"/> + <field name="OP_FLOAT_TO_LONG"/> + <field name="OP_GOTO"/> + <field name="OP_GOTO_16"/> + <field name="OP_GOTO_32"/> + <field name="OP_IF_EQ"/> + <field name="OP_IF_EQZ"/> + <field name="OP_IF_GE"/> + <field name="OP_IF_GEZ"/> + <field name="OP_IF_GT"/> + <field name="OP_IF_GTZ"/> + <field name="OP_IF_LE"/> + <field name="OP_IF_LEZ"/> + <field name="OP_IF_LT"/> + <field name="OP_IF_LTZ"/> + <field name="OP_IF_NE"/> + <field name="OP_IF_NEZ"/> + <field name="OP_IGET"/> + <field name="OP_IGET_BOOLEAN"/> + <field name="OP_IGET_BOOLEAN_JUMBO" since="11"/> + <field name="OP_IGET_BYTE"/> + <field name="OP_IGET_BYTE_JUMBO" since="11"/> + <field name="OP_IGET_CHAR"/> + <field name="OP_IGET_CHAR_JUMBO" since="11"/> + <field name="OP_IGET_JUMBO" since="11"/> + <field name="OP_IGET_OBJECT"/> + <field name="OP_IGET_OBJECT_JUMBO" since="11"/> + <field name="OP_IGET_OBJECT_QUICK" deprecated="16"/> + <field name="OP_IGET_QUICK" deprecated="16"/> + <field name="OP_IGET_SHORT"/> + <field name="OP_IGET_SHORT_JUMBO" since="11"/> + <field name="OP_IGET_WIDE"/> + <field name="OP_IGET_WIDE_JUMBO" since="11"/> + <field name="OP_IGET_WIDE_QUICK" deprecated="16"/> + <field name="OP_IGET_WIDE_VOLATILE" since="9" deprecated="16"/> + <field name="OP_INSTANCE_OF"/> + <field name="OP_INSTANCE_OF_JUMBO" since="11"/> + <field name="OP_INT_TO_BYTE"/> + <field name="OP_INT_TO_CHAR"/> + <field name="OP_INT_TO_DOUBLE"/> + <field name="OP_INT_TO_FLOAT"/> + <field name="OP_INT_TO_LONG"/> + <field name="OP_INT_TO_SHORT"/> + <field name="OP_INVOKE_CUSTOM" since="26"/> + <field name="OP_INVOKE_CUSTOM_RANGE" since="26"/> + <field name="OP_INVOKE_DIRECT"/> + <field name="OP_INVOKE_DIRECT_EMPTY" deprecated="16"/> + <field name="OP_INVOKE_DIRECT_JUMBO" since="11"/> + <field name="OP_INVOKE_DIRECT_RANGE"/> + <field name="OP_INVOKE_INTERFACE"/> + <field name="OP_INVOKE_INTERFACE_JUMBO" since="11"/> + <field name="OP_INVOKE_INTERFACE_RANGE"/> + <field name="OP_INVOKE_POLYMORPHIC" since="26"/> + <field name="OP_INVOKE_POLYMORPHIC_RANGE" since="26"/> + <field name="OP_INVOKE_STATIC"/> + <field name="OP_INVOKE_STATIC_JUMBO" since="11"/> + <field name="OP_INVOKE_STATIC_RANGE"/> + <field name="OP_INVOKE_SUPER"/> + <field name="OP_INVOKE_SUPER_JUMBO" since="11"/> + <field name="OP_INVOKE_SUPER_QUICK" deprecated="16"/> + <field name="OP_INVOKE_SUPER_QUICK_RANGE" deprecated="16"/> + <field name="OP_INVOKE_SUPER_RANGE"/> + <field name="OP_INVOKE_VIRTUAL"/> + <field name="OP_INVOKE_VIRTUAL_JUMBO" since="11"/> + <field name="OP_INVOKE_VIRTUAL_QUICK" deprecated="16"/> + <field name="OP_INVOKE_VIRTUAL_QUICK_RANGE" deprecated="16"/> + <field name="OP_INVOKE_VIRTUAL_RANGE"/> + <field name="OP_IPUT"/> + <field name="OP_IPUT_BOOLEAN"/> + <field name="OP_IPUT_BOOLEAN_JUMBO" since="11"/> + <field name="OP_IPUT_BYTE"/> + <field name="OP_IPUT_BYTE_JUMBO" since="11"/> + <field name="OP_IPUT_CHAR"/> + <field name="OP_IPUT_CHAR_JUMBO" since="11"/> + <field name="OP_IPUT_JUMBO" since="11"/> + <field name="OP_IPUT_OBJECT"/> + <field name="OP_IPUT_OBJECT_JUMBO" since="11"/> + <field name="OP_IPUT_OBJECT_QUICK" deprecated="16"/> + <field name="OP_IPUT_QUICK" deprecated="16"/> + <field name="OP_IPUT_SHORT"/> + <field name="OP_IPUT_SHORT_JUMBO" since="11"/> + <field name="OP_IPUT_WIDE"/> + <field name="OP_IPUT_WIDE_JUMBO" since="11"/> + <field name="OP_IPUT_WIDE_QUICK" deprecated="16"/> + <field name="OP_IPUT_WIDE_VOLATILE" since="9" deprecated="16"/> + <field name="OP_LONG_TO_DOUBLE"/> + <field name="OP_LONG_TO_FLOAT"/> + <field name="OP_LONG_TO_INT"/> + <field name="OP_MONITOR_ENTER"/> + <field name="OP_MONITOR_EXIT"/> + <field name="OP_MOVE"/> + <field name="OP_MOVE_16"/> + <field name="OP_MOVE_EXCEPTION"/> + <field name="OP_MOVE_FROM16"/> + <field name="OP_MOVE_OBJECT"/> + <field name="OP_MOVE_OBJECT_16"/> + <field name="OP_MOVE_OBJECT_FROM16"/> + <field name="OP_MOVE_RESULT"/> + <field name="OP_MOVE_RESULT_OBJECT"/> + <field name="OP_MOVE_RESULT_WIDE"/> + <field name="OP_MOVE_WIDE"/> + <field name="OP_MOVE_WIDE_16"/> + <field name="OP_MOVE_WIDE_FROM16"/> + <field name="OP_MUL_DOUBLE"/> + <field name="OP_MUL_DOUBLE_2ADDR"/> + <field name="OP_MUL_FLOAT"/> + <field name="OP_MUL_FLOAT_2ADDR"/> + <field name="OP_MUL_INT"/> + <field name="OP_MUL_INT_2ADDR"/> + <field name="OP_MUL_INT_LIT16"/> + <field name="OP_MUL_INT_LIT8"/> + <field name="OP_MUL_LONG"/> + <field name="OP_MUL_LONG_2ADDR"/> + <field name="OP_NEG_DOUBLE"/> + <field name="OP_NEG_FLOAT"/> + <field name="OP_NEG_INT"/> + <field name="OP_NEG_LONG"/> + <field name="OP_NEW_ARRAY"/> + <field name="OP_NEW_ARRAY_JUMBO" since="11"/> + <field name="OP_NEW_INSTANCE"/> + <field name="OP_NEW_INSTANCE_JUMBO" since="11"/> + <field name="OP_NOP"/> + <field name="OP_NOT_INT"/> + <field name="OP_NOT_LONG"/> + <field name="OP_OR_INT"/> + <field name="OP_OR_INT_2ADDR"/> + <field name="OP_OR_INT_LIT16"/> + <field name="OP_OR_INT_LIT8"/> + <field name="OP_OR_LONG"/> + <field name="OP_OR_LONG_2ADDR"/> + <field name="OP_PACKED_SWITCH"/> + <field name="OP_REM_DOUBLE"/> + <field name="OP_REM_DOUBLE_2ADDR"/> + <field name="OP_REM_FLOAT"/> + <field name="OP_REM_FLOAT_2ADDR"/> + <field name="OP_REM_INT"/> + <field name="OP_REM_INT_2ADDR"/> + <field name="OP_REM_INT_LIT16"/> + <field name="OP_REM_INT_LIT8"/> + <field name="OP_REM_LONG"/> + <field name="OP_REM_LONG_2ADDR"/> + <field name="OP_RETURN"/> + <field name="OP_RETURN_OBJECT"/> + <field name="OP_RETURN_VOID"/> + <field name="OP_RETURN_WIDE"/> + <field name="OP_RSUB_INT"/> + <field name="OP_RSUB_INT_LIT8"/> + <field name="OP_SGET"/> + <field name="OP_SGET_BOOLEAN"/> + <field name="OP_SGET_BOOLEAN_JUMBO" since="11"/> + <field name="OP_SGET_BYTE"/> + <field name="OP_SGET_BYTE_JUMBO" since="11"/> + <field name="OP_SGET_CHAR"/> + <field name="OP_SGET_CHAR_JUMBO" since="11"/> + <field name="OP_SGET_JUMBO" since="11"/> + <field name="OP_SGET_OBJECT"/> + <field name="OP_SGET_OBJECT_JUMBO" since="11"/> + <field name="OP_SGET_SHORT"/> + <field name="OP_SGET_SHORT_JUMBO" since="11"/> + <field name="OP_SGET_WIDE"/> + <field name="OP_SGET_WIDE_JUMBO" since="11"/> + <field name="OP_SGET_WIDE_VOLATILE" since="9" deprecated="16"/> + <field name="OP_SHL_INT"/> + <field name="OP_SHL_INT_2ADDR"/> + <field name="OP_SHL_INT_LIT8"/> + <field name="OP_SHL_LONG"/> + <field name="OP_SHL_LONG_2ADDR"/> + <field name="OP_SHR_INT"/> + <field name="OP_SHR_INT_2ADDR"/> + <field name="OP_SHR_INT_LIT8"/> + <field name="OP_SHR_LONG"/> + <field name="OP_SHR_LONG_2ADDR"/> + <field name="OP_SPARSE_SWITCH"/> + <field name="OP_SPUT"/> + <field name="OP_SPUT_BOOLEAN"/> + <field name="OP_SPUT_BOOLEAN_JUMBO" since="11"/> + <field name="OP_SPUT_BYTE"/> + <field name="OP_SPUT_BYTE_JUMBO" since="11"/> + <field name="OP_SPUT_CHAR"/> + <field name="OP_SPUT_CHAR_JUMBO" since="11"/> + <field name="OP_SPUT_JUMBO" since="11"/> + <field name="OP_SPUT_OBJECT"/> + <field name="OP_SPUT_OBJECT_JUMBO" since="11"/> + <field name="OP_SPUT_SHORT"/> + <field name="OP_SPUT_SHORT_JUMBO" since="11"/> + <field name="OP_SPUT_WIDE"/> + <field name="OP_SPUT_WIDE_JUMBO" since="11"/> + <field name="OP_SPUT_WIDE_VOLATILE" since="9" deprecated="16"/> + <field name="OP_SUB_DOUBLE"/> + <field name="OP_SUB_DOUBLE_2ADDR"/> + <field name="OP_SUB_FLOAT"/> + <field name="OP_SUB_FLOAT_2ADDR"/> + <field name="OP_SUB_INT"/> + <field name="OP_SUB_INT_2ADDR"/> + <field name="OP_SUB_LONG"/> + <field name="OP_SUB_LONG_2ADDR"/> + <field name="OP_THROW"/> + <field name="OP_THROW_VERIFICATION_ERROR" since="8" deprecated="16"/> + <field name="OP_UNUSED_3e" removed="8"/> + <field name="OP_UNUSED_3f" removed="8"/> + <field name="OP_UNUSED_40" removed="8"/> + <field name="OP_UNUSED_41" removed="8"/> + <field name="OP_UNUSED_42" removed="8"/> + <field name="OP_UNUSED_43" removed="8"/> + <field name="OP_UNUSED_73" removed="8"/> + <field name="OP_UNUSED_79" removed="8"/> + <field name="OP_UNUSED_7A" removed="8"/> + <field name="OP_UNUSED_E3" removed="8"/> + <field name="OP_UNUSED_E4" removed="8"/> + <field name="OP_UNUSED_E5" removed="8"/> + <field name="OP_UNUSED_E6" removed="8"/> + <field name="OP_UNUSED_E7" removed="8"/> + <field name="OP_UNUSED_E8" removed="8"/> + <field name="OP_UNUSED_E9" removed="8"/> + <field name="OP_UNUSED_EA" removed="8"/> + <field name="OP_UNUSED_EB" removed="8"/> + <field name="OP_UNUSED_EC" removed="8"/> + <field name="OP_UNUSED_ED" removed="8"/> + <field name="OP_UNUSED_EF" removed="8"/> + <field name="OP_UNUSED_F1" removed="8"/> + <field name="OP_UNUSED_FC" removed="8"/> + <field name="OP_UNUSED_FD" removed="8"/> + <field name="OP_UNUSED_FE" removed="8"/> + <field name="OP_UNUSED_FF" removed="8"/> + <field name="OP_USHR_INT"/> + <field name="OP_USHR_INT_2ADDR"/> + <field name="OP_USHR_INT_LIT8"/> + <field name="OP_USHR_LONG"/> + <field name="OP_USHR_LONG_2ADDR"/> + <field name="OP_XOR_INT"/> + <field name="OP_XOR_INT_2ADDR"/> + <field name="OP_XOR_INT_LIT16"/> + <field name="OP_XOR_INT_LIT8"/> + <field name="OP_XOR_LONG"/> + <field name="OP_XOR_LONG_2ADDR"/> + </class> + <class name="dalvik/system/AllocationLimitError" since="1" removed="9"> + <extends name="java/lang/VirtualMachineError"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="dalvik/system/BaseDexClassLoader" since="14"> + <extends name="java/lang/ClassLoader"/> + <method name="<init>(Ljava/lang/String;Ljava/io/File;Ljava/lang/String;Ljava/lang/ClassLoader;)V"/> + </class> + <class name="dalvik/system/DexClassLoader" since="3"> + <extends name="dalvik/system/BaseDexClassLoader" since="14"/> + <extends name="java/lang/ClassLoader" removed="14"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)V"/> + </class> + <class name="dalvik/system/DexFile" since="1" deprecated="26"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/io/File;)V" deprecated="26"/> + <method name="<init>(Ljava/lang/String;)V" deprecated="26"/> + <method name="close()V"/> + <method name="entries()Ljava/util/Enumeration;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="isDexOptNeeded(Ljava/lang/String;)Z"/> + <method name="loadClass(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class;"/> + <method name="loadDex(Ljava/lang/String;Ljava/lang/String;I)Ldalvik/system/DexFile;" since="3" deprecated="26"/> + </class> + <class name="dalvik/system/InMemoryDexClassLoader" since="26"> + <extends name="dalvik/system/BaseDexClassLoader"/> + <method name="<init>(Ljava/nio/ByteBuffer;Ljava/lang/ClassLoader;)V"/> + <method name="<init>([Ljava/nio/ByteBuffer;Ljava/lang/ClassLoader;)V" since="27"/> + </class> + <class name="dalvik/system/PathClassLoader" since="1"> + <extends name="dalvik/system/BaseDexClassLoader" since="14"/> + <extends name="java/lang/ClassLoader" removed="14"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/ClassLoader;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)V"/> + </class> + <class name="dalvik/system/PotentialDeadlockError" since="1" removed="9"> + <extends name="java/lang/VirtualMachineError"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="dalvik/system/StaleDexCacheError" since="1" removed="9"> + <extends name="java/lang/VirtualMachineError"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="dalvik/system/TemporaryDirectory" since="1" removed="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="setUpDirectory(Ljava/io/File;)V"/> + <method name="setUpDirectory(Ljava/lang/String;)V"/> + </class> + <class name="dalvik/system/TouchDex" since="1" removed="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="main([Ljava/lang/String;)V"/> + <method name="start(Ljava/lang/String;)I"/> + </class> + <class name="dalvik/system/VMDebug" since="1" removed="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="dumpHprofData(Ljava/lang/String;)V" since="3"/> + <method name="getAllocCount(I)I"/> + <method name="getInstructionCount([I)V"/> + <method name="getLoadedClassCount()I"/> + <method name="isDebuggerConnected()Z"/> + <method name="isDebuggingEnabled()Z" since="3"/> + <method name="lastDebuggerActivity()J"/> + <method name="printLoadedClasses(I)V"/> + <method name="resetAllocCount(I)V"/> + <method name="resetInstructionCount()V"/> + <method name="setAllocationLimit(I)I"/> + <method name="setGlobalAllocationLimit(I)I"/> + <method name="startAllocCounting()V"/> + <method name="startEmulatorTracing()V"/> + <method name="startInstructionCounting()V"/> + <method name="startMethodTracing()V"/> + <method name="startMethodTracing(Ljava/lang/String;II)V"/> + <method name="stopAllocCounting()V"/> + <method name="stopEmulatorTracing()V"/> + <method name="stopInstructionCounting()V"/> + <method name="stopMethodTracing()V"/> + <method name="threadCpuTimeNanos()J"/> + <field name="DEFAULT_METHOD_TRACE_FILE_NAME"/> + <field name="KIND_ALL_COUNTS"/> + <field name="KIND_GLOBAL_ALLOCATED_BYTES"/> + <field name="KIND_GLOBAL_ALLOCATED_OBJECTS"/> + <field name="KIND_GLOBAL_CLASS_INIT_COUNT" since="8"/> + <field name="KIND_GLOBAL_CLASS_INIT_TIME" since="8"/> + <field name="KIND_GLOBAL_EXT_ALLOCATED_BYTES"/> + <field name="KIND_GLOBAL_EXT_ALLOCATED_OBJECTS"/> + <field name="KIND_GLOBAL_EXT_FREED_BYTES"/> + <field name="KIND_GLOBAL_EXT_FREED_OBJECTS"/> + <field name="KIND_GLOBAL_FREED_BYTES"/> + <field name="KIND_GLOBAL_FREED_OBJECTS"/> + <field name="KIND_GLOBAL_GC_INVOCATIONS"/> + <field name="KIND_THREAD_ALLOCATED_BYTES"/> + <field name="KIND_THREAD_ALLOCATED_OBJECTS"/> + <field name="KIND_THREAD_CLASS_INIT_COUNT" since="8"/> + <field name="KIND_THREAD_CLASS_INIT_TIME" since="8"/> + <field name="KIND_THREAD_EXT_ALLOCATED_BYTES"/> + <field name="KIND_THREAD_EXT_ALLOCATED_OBJECTS"/> + <field name="KIND_THREAD_EXT_FREED_BYTES"/> + <field name="KIND_THREAD_EXT_FREED_OBJECTS"/> + <field name="KIND_THREAD_FREED_BYTES"/> + <field name="KIND_THREAD_FREED_OBJECTS"/> + <field name="KIND_THREAD_GC_INVOCATIONS"/> + <field name="TRACE_COUNT_ALLOCS"/> + </class> + <class name="dalvik/system/VMRuntime" since="1" removed="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="gcSoftReferences()V"/> + <method name="getExternalBytesAllocated()J"/> + <method name="getMinimumHeapSize()J"/> + <method name="getRuntime()Ldalvik/system/VMRuntime;"/> + <method name="getTargetHeapUtilization()F"/> + <method name="runFinalizationSync()V"/> + <method name="setMinimumHeapSize(J)J"/> + <method name="setTargetHeapUtilization(F)F"/> + </class> + <class name="dalvik/system/VMStack" since="1" removed="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getCallingClassLoader()Ljava/lang/ClassLoader;"/> + <method name="getCallingClassLoader2()Ljava/lang/ClassLoader;"/> + <method name="getClasses(IZ)[Ljava/lang/Class;"/> + <method name="getThreadStackTrace(Ljava/lang/Thread;)[Ljava/lang/StackTraceElement;"/> + </class> + <class name="dalvik/system/Zygote" since="1" removed="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="fork()I"/> + <method name="forkAndSpecialize(II[II[[I)I" since="3"/> + <method name="forkAndSpecialize(II[IZ[[I)I"/> + <method name="forkSystemServer(II[II[[I)I" since="3"/> + <method name="forkSystemServer(II[IZ[[I)I"/> + <field name="DEBUG_ENABLE_ASSERT" since="3"/> + <field name="DEBUG_ENABLE_CHECKJNI" since="3"/> + <field name="DEBUG_ENABLE_DEBUGGER" since="3"/> + <field name="DEBUG_ENABLE_SAFEMODE" since="8"/> + </class> + <class name="java/awt/font/NumericShaper" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="getContextualShaper(I)Ljava/awt/font/NumericShaper;"/> + <method name="getContextualShaper(II)Ljava/awt/font/NumericShaper;"/> + <method name="getContextualShaper(Ljava/util/Set;)Ljava/awt/font/NumericShaper;" since="24"/> + <method name="getContextualShaper(Ljava/util/Set;Ljava/awt/font/NumericShaper$Range;)Ljava/awt/font/NumericShaper;" since="24"/> + <method name="getRangeSet()Ljava/util/Set;" since="24"/> + <method name="getRanges()I"/> + <method name="getShaper(I)Ljava/awt/font/NumericShaper;"/> + <method name="getShaper(Ljava/awt/font/NumericShaper$Range;)Ljava/awt/font/NumericShaper;" since="24"/> + <method name="isContextual()Z"/> + <method name="shape([CII)V"/> + <method name="shape([CIII)V"/> + <method name="shape([CIILjava/awt/font/NumericShaper$Range;)V" since="24"/> + <field name="ALL_RANGES"/> + <field name="ARABIC"/> + <field name="BENGALI"/> + <field name="DEVANAGARI"/> + <field name="EASTERN_ARABIC"/> + <field name="ETHIOPIC"/> + <field name="EUROPEAN"/> + <field name="GUJARATI"/> + <field name="GURMUKHI"/> + <field name="KANNADA"/> + <field name="KHMER"/> + <field name="LAO"/> + <field name="MALAYALAM"/> + <field name="MONGOLIAN"/> + <field name="MYANMAR"/> + <field name="ORIYA"/> + <field name="TAMIL"/> + <field name="TELUGU"/> + <field name="THAI"/> + <field name="TIBETAN"/> + </class> + <class name="java/awt/font/NumericShaper$Range" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/awt/font/NumericShaper$Range;"/> + <method name="values()[Ljava/awt/font/NumericShaper$Range;"/> + <field name="ARABIC"/> + <field name="BALINESE"/> + <field name="BENGALI"/> + <field name="CHAM"/> + <field name="DEVANAGARI"/> + <field name="EASTERN_ARABIC"/> + <field name="ETHIOPIC"/> + <field name="EUROPEAN"/> + <field name="GUJARATI"/> + <field name="GURMUKHI"/> + <field name="JAVANESE"/> + <field name="KANNADA"/> + <field name="KAYAH_LI"/> + <field name="KHMER"/> + <field name="LAO"/> + <field name="LEPCHA"/> + <field name="LIMBU"/> + <field name="MALAYALAM"/> + <field name="MEETEI_MAYEK"/> + <field name="MONGOLIAN"/> + <field name="MYANMAR"/> + <field name="MYANMAR_SHAN"/> + <field name="NEW_TAI_LUE"/> + <field name="NKO"/> + <field name="OL_CHIKI"/> + <field name="ORIYA"/> + <field name="SAURASHTRA"/> + <field name="SUNDANESE"/> + <field name="TAI_THAM_HORA"/> + <field name="TAI_THAM_THAM"/> + <field name="TAMIL"/> + <field name="TELUGU"/> + <field name="THAI"/> + <field name="TIBETAN"/> + <field name="VAI"/> + </class> + <class name="java/awt/font/TextAttribute" since="1"> + <extends name="java/text/AttributedCharacterIterator$Attribute"/> + <method name="<init>(Ljava/lang/String;)V"/> + <field name="BACKGROUND"/> + <field name="BIDI_EMBEDDING"/> + <field name="CHAR_REPLACEMENT"/> + <field name="FAMILY"/> + <field name="FONT"/> + <field name="FOREGROUND"/> + <field name="INPUT_METHOD_HIGHLIGHT"/> + <field name="INPUT_METHOD_UNDERLINE"/> + <field name="JUSTIFICATION"/> + <field name="JUSTIFICATION_FULL"/> + <field name="JUSTIFICATION_NONE"/> + <field name="KERNING" since="9"/> + <field name="KERNING_ON" since="9"/> + <field name="LIGATURES" since="9"/> + <field name="LIGATURES_ON" since="9"/> + <field name="NUMERIC_SHAPING"/> + <field name="POSTURE"/> + <field name="POSTURE_OBLIQUE"/> + <field name="POSTURE_REGULAR"/> + <field name="RUN_DIRECTION"/> + <field name="RUN_DIRECTION_LTR"/> + <field name="RUN_DIRECTION_RTL"/> + <field name="SIZE"/> + <field name="STRIKETHROUGH"/> + <field name="STRIKETHROUGH_ON"/> + <field name="SUPERSCRIPT"/> + <field name="SUPERSCRIPT_SUB"/> + <field name="SUPERSCRIPT_SUPER"/> + <field name="SWAP_COLORS"/> + <field name="SWAP_COLORS_ON"/> + <field name="TRACKING" since="9"/> + <field name="TRACKING_LOOSE" since="9"/> + <field name="TRACKING_TIGHT" since="9"/> + <field name="TRANSFORM"/> + <field name="UNDERLINE"/> + <field name="UNDERLINE_LOW_DASHED"/> + <field name="UNDERLINE_LOW_DOTTED"/> + <field name="UNDERLINE_LOW_GRAY"/> + <field name="UNDERLINE_LOW_ONE_PIXEL"/> + <field name="UNDERLINE_LOW_TWO_PIXEL"/> + <field name="UNDERLINE_ON"/> + <field name="WEIGHT"/> + <field name="WEIGHT_BOLD"/> + <field name="WEIGHT_DEMIBOLD"/> + <field name="WEIGHT_DEMILIGHT"/> + <field name="WEIGHT_EXTRABOLD"/> + <field name="WEIGHT_EXTRA_LIGHT"/> + <field name="WEIGHT_HEAVY"/> + <field name="WEIGHT_LIGHT"/> + <field name="WEIGHT_MEDIUM"/> + <field name="WEIGHT_REGULAR"/> + <field name="WEIGHT_SEMIBOLD"/> + <field name="WEIGHT_ULTRABOLD"/> + <field name="WIDTH"/> + <field name="WIDTH_CONDENSED"/> + <field name="WIDTH_EXTENDED"/> + <field name="WIDTH_REGULAR"/> + <field name="WIDTH_SEMI_CONDENSED"/> + <field name="WIDTH_SEMI_EXTENDED"/> + </class> + <class name="java/beans/IndexedPropertyChangeEvent" since="3"> + <extends name="java/beans/PropertyChangeEvent"/> + <method name="<init>(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;I)V"/> + <method name="getIndex()I"/> + </class> + <class name="java/beans/PropertyChangeEvent" since="3"> + <extends name="java/util/EventObject"/> + <method name="<init>(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V"/> + <method name="getNewValue()Ljava/lang/Object;"/> + <method name="getOldValue()Ljava/lang/Object;"/> + <method name="getPropagationId()Ljava/lang/Object;"/> + <method name="getPropertyName()Ljava/lang/String;"/> + <method name="setPropagationId(Ljava/lang/Object;)V"/> + </class> + <class name="java/beans/PropertyChangeListener" since="3"> + <extends name="java/lang/Object"/> + <implements name="java/util/EventListener"/> + <method name="propertyChange(Ljava/beans/PropertyChangeEvent;)V"/> + </class> + <class name="java/beans/PropertyChangeListenerProxy" since="3"> + <extends name="java/util/EventListenerProxy"/> + <implements name="java/beans/PropertyChangeListener"/> + <method name="<init>(Ljava/lang/String;Ljava/beans/PropertyChangeListener;)V"/> + <method name="getPropertyName()Ljava/lang/String;"/> + </class> + <class name="java/beans/PropertyChangeSupport" since="3"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(Ljava/lang/Object;)V"/> + <method name="addPropertyChangeListener(Ljava/beans/PropertyChangeListener;)V"/> + <method name="addPropertyChangeListener(Ljava/lang/String;Ljava/beans/PropertyChangeListener;)V"/> + <method name="fireIndexedPropertyChange(Ljava/lang/String;III)V"/> + <method name="fireIndexedPropertyChange(Ljava/lang/String;ILjava/lang/Object;Ljava/lang/Object;)V"/> + <method name="fireIndexedPropertyChange(Ljava/lang/String;IZZ)V"/> + <method name="firePropertyChange(Ljava/beans/PropertyChangeEvent;)V"/> + <method name="firePropertyChange(Ljava/lang/String;II)V"/> + <method name="firePropertyChange(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V"/> + <method name="firePropertyChange(Ljava/lang/String;ZZ)V"/> + <method name="getPropertyChangeListeners()[Ljava/beans/PropertyChangeListener;"/> + <method name="getPropertyChangeListeners(Ljava/lang/String;)[Ljava/beans/PropertyChangeListener;"/> + <method name="hasListeners(Ljava/lang/String;)Z"/> + <method name="removePropertyChangeListener(Ljava/beans/PropertyChangeListener;)V"/> + <method name="removePropertyChangeListener(Ljava/lang/String;Ljava/beans/PropertyChangeListener;)V"/> + </class> + <class name="java/io/BufferedInputStream" since="1"> + <extends name="java/io/FilterInputStream"/> + <method name="<init>(Ljava/io/InputStream;)V"/> + <method name="<init>(Ljava/io/InputStream;I)V"/> + <field name="buf"/> + <field name="count"/> + <field name="marklimit"/> + <field name="markpos"/> + <field name="pos"/> + </class> + <class name="java/io/BufferedOutputStream" since="1"> + <extends name="java/io/FilterOutputStream"/> + <method name="<init>(Ljava/io/OutputStream;)V"/> + <method name="<init>(Ljava/io/OutputStream;I)V"/> + <field name="buf"/> + <field name="count"/> + </class> + <class name="java/io/BufferedReader" since="1"> + <extends name="java/io/Reader"/> + <method name="<init>(Ljava/io/Reader;)V"/> + <method name="<init>(Ljava/io/Reader;I)V"/> + <method name="lines()Ljava/util/stream/Stream;" since="24"/> + <method name="readLine()Ljava/lang/String;"/> + </class> + <class name="java/io/BufferedWriter" since="1"> + <extends name="java/io/Writer"/> + <method name="<init>(Ljava/io/Writer;)V"/> + <method name="<init>(Ljava/io/Writer;I)V"/> + <method name="newLine()V"/> + </class> + <class name="java/io/ByteArrayInputStream" since="1"> + <extends name="java/io/InputStream"/> + <method name="<init>([B)V"/> + <method name="<init>([BII)V"/> + <field name="buf"/> + <field name="count"/> + <field name="mark"/> + <field name="pos"/> + </class> + <class name="java/io/ByteArrayOutputStream" since="1"> + <extends name="java/io/OutputStream"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="reset()V"/> + <method name="size()I"/> + <method name="toByteArray()[B"/> + <method name="toString(I)Ljava/lang/String;" deprecated="16"/> + <method name="toString(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="writeTo(Ljava/io/OutputStream;)V"/> + <field name="buf"/> + <field name="count"/> + </class> + <class name="java/io/CharArrayReader" since="1"> + <extends name="java/io/Reader"/> + <method name="<init>([C)V"/> + <method name="<init>([CII)V"/> + <field name="buf"/> + <field name="count"/> + <field name="markedPos"/> + <field name="pos"/> + </class> + <class name="java/io/CharArrayWriter" since="1"> + <extends name="java/io/Writer"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="append(C)Ljava/io/CharArrayWriter;"/> + <method name="append(Ljava/lang/CharSequence;)Ljava/io/CharArrayWriter;"/> + <method name="append(Ljava/lang/CharSequence;II)Ljava/io/CharArrayWriter;"/> + <method name="reset()V"/> + <method name="size()I"/> + <method name="toCharArray()[C"/> + <method name="writeTo(Ljava/io/Writer;)V"/> + <field name="buf"/> + <field name="count"/> + </class> + <class name="java/io/CharConversionException" since="1"> + <extends name="java/io/IOException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/io/Closeable" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable" since="19"/> + <method name="close()V"/> + </class> + <class name="java/io/Console" since="9"> + <extends name="java/lang/Object"/> + <implements name="java/io/Flushable"/> + <method name="<init>()V"/> + <method name="format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/Console;"/> + <method name="printf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/Console;"/> + <method name="readLine()Ljava/lang/String;"/> + <method name="readLine(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;"/> + <method name="readPassword()[C"/> + <method name="readPassword(Ljava/lang/String;[Ljava/lang/Object;)[C"/> + <method name="reader()Ljava/io/Reader;"/> + <method name="writer()Ljava/io/PrintWriter;"/> + </class> + <class name="java/io/DataInput" since="1"> + <extends name="java/lang/Object"/> + <method name="readBoolean()Z"/> + <method name="readByte()B"/> + <method name="readChar()C"/> + <method name="readDouble()D"/> + <method name="readFloat()F"/> + <method name="readFully([B)V"/> + <method name="readFully([BII)V"/> + <method name="readInt()I"/> + <method name="readLine()Ljava/lang/String;"/> + <method name="readLong()J"/> + <method name="readShort()S"/> + <method name="readUTF()Ljava/lang/String;"/> + <method name="readUnsignedByte()I"/> + <method name="readUnsignedShort()I"/> + <method name="skipBytes(I)I"/> + </class> + <class name="java/io/DataInputStream" since="1"> + <extends name="java/io/FilterInputStream"/> + <implements name="java/io/DataInput"/> + <method name="<init>(Ljava/io/InputStream;)V"/> + <method name="readUTF(Ljava/io/DataInput;)Ljava/lang/String;"/> + </class> + <class name="java/io/DataOutput" since="1"> + <extends name="java/lang/Object"/> + <method name="write(I)V"/> + <method name="write([B)V"/> + <method name="write([BII)V"/> + <method name="writeBoolean(Z)V"/> + <method name="writeByte(I)V"/> + <method name="writeBytes(Ljava/lang/String;)V"/> + <method name="writeChar(I)V"/> + <method name="writeChars(Ljava/lang/String;)V"/> + <method name="writeDouble(D)V"/> + <method name="writeFloat(F)V"/> + <method name="writeInt(I)V"/> + <method name="writeLong(J)V"/> + <method name="writeShort(I)V"/> + <method name="writeUTF(Ljava/lang/String;)V"/> + </class> + <class name="java/io/DataOutputStream" since="1"> + <extends name="java/io/FilterOutputStream"/> + <implements name="java/io/DataOutput"/> + <method name="<init>(Ljava/io/OutputStream;)V"/> + <method name="size()I"/> + <field name="written"/> + </class> + <class name="java/io/EOFException" since="1"> + <extends name="java/io/IOException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/io/Externalizable" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="readExternal(Ljava/io/ObjectInput;)V"/> + <method name="writeExternal(Ljava/io/ObjectOutput;)V"/> + </class> + <class name="java/io/File" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Comparable"/> + <method name="<init>(Ljava/io/File;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/net/URI;)V"/> + <method name="canExecute()Z" since="9"/> + <method name="canRead()Z"/> + <method name="canWrite()Z"/> + <method name="compareTo(Ljava/io/File;)I"/> + <method name="createNewFile()Z"/> + <method name="createTempFile(Ljava/lang/String;Ljava/lang/String;)Ljava/io/File;"/> + <method name="createTempFile(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Ljava/io/File;"/> + <method name="delete()Z"/> + <method name="deleteOnExit()V"/> + <method name="exists()Z"/> + <method name="getAbsoluteFile()Ljava/io/File;"/> + <method name="getAbsolutePath()Ljava/lang/String;"/> + <method name="getCanonicalFile()Ljava/io/File;"/> + <method name="getCanonicalPath()Ljava/lang/String;"/> + <method name="getFreeSpace()J" since="9"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getParent()Ljava/lang/String;"/> + <method name="getParentFile()Ljava/io/File;"/> + <method name="getPath()Ljava/lang/String;"/> + <method name="getTotalSpace()J" since="9"/> + <method name="getUsableSpace()J" since="9"/> + <method name="isAbsolute()Z"/> + <method name="isDirectory()Z"/> + <method name="isFile()Z"/> + <method name="isHidden()Z"/> + <method name="lastModified()J"/> + <method name="length()J"/> + <method name="list()[Ljava/lang/String;"/> + <method name="list(Ljava/io/FilenameFilter;)[Ljava/lang/String;"/> + <method name="listFiles()[Ljava/io/File;"/> + <method name="listFiles(Ljava/io/FileFilter;)[Ljava/io/File;"/> + <method name="listFiles(Ljava/io/FilenameFilter;)[Ljava/io/File;"/> + <method name="listRoots()[Ljava/io/File;"/> + <method name="mkdir()Z"/> + <method name="mkdirs()Z"/> + <method name="renameTo(Ljava/io/File;)Z"/> + <method name="setExecutable(Z)Z" since="9"/> + <method name="setExecutable(ZZ)Z" since="9"/> + <method name="setLastModified(J)Z"/> + <method name="setReadOnly()Z"/> + <method name="setReadable(Z)Z" since="9"/> + <method name="setReadable(ZZ)Z" since="9"/> + <method name="setWritable(Z)Z" since="9"/> + <method name="setWritable(ZZ)Z" since="9"/> + <method name="toPath()Ljava/nio/file/Path;" since="26"/> + <method name="toURI()Ljava/net/URI;"/> + <method name="toURL()Ljava/net/URL;" deprecated="16"/> + <field name="pathSeparator"/> + <field name="pathSeparatorChar"/> + <field name="separator"/> + <field name="separatorChar"/> + </class> + <class name="java/io/FileDescriptor" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="sync()V"/> + <method name="valid()Z"/> + <field name="err"/> + <field name="in"/> + <field name="out"/> + </class> + <class name="java/io/FileFilter" since="1"> + <extends name="java/lang/Object"/> + <method name="accept(Ljava/io/File;)Z"/> + </class> + <class name="java/io/FileInputStream" since="1"> + <extends name="java/io/InputStream"/> + <method name="<init>(Ljava/io/File;)V"/> + <method name="<init>(Ljava/io/FileDescriptor;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getChannel()Ljava/nio/channels/FileChannel;"/> + <method name="getFD()Ljava/io/FileDescriptor;"/> + </class> + <class name="java/io/FileNotFoundException" since="1"> + <extends name="java/io/IOException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/io/FileOutputStream" since="1"> + <extends name="java/io/OutputStream"/> + <method name="<init>(Ljava/io/File;)V"/> + <method name="<init>(Ljava/io/File;Z)V"/> + <method name="<init>(Ljava/io/FileDescriptor;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Z)V"/> + <method name="getChannel()Ljava/nio/channels/FileChannel;"/> + <method name="getFD()Ljava/io/FileDescriptor;"/> + </class> + <class name="java/io/FilePermission" since="1"> + <extends name="java/security/Permission"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="java/io/FileReader" since="1"> + <extends name="java/io/InputStreamReader"/> + <method name="<init>(Ljava/io/File;)V"/> + <method name="<init>(Ljava/io/FileDescriptor;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/io/FileWriter" since="1"> + <extends name="java/io/OutputStreamWriter"/> + <method name="<init>(Ljava/io/File;)V"/> + <method name="<init>(Ljava/io/File;Z)V"/> + <method name="<init>(Ljava/io/FileDescriptor;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Z)V"/> + </class> + <class name="java/io/FilenameFilter" since="1"> + <extends name="java/lang/Object"/> + <method name="accept(Ljava/io/File;Ljava/lang/String;)Z"/> + </class> + <class name="java/io/FilterInputStream" since="1"> + <extends name="java/io/InputStream"/> + <method name="<init>(Ljava/io/InputStream;)V"/> + <field name="in"/> + </class> + <class name="java/io/FilterOutputStream" since="1"> + <extends name="java/io/OutputStream"/> + <method name="<init>(Ljava/io/OutputStream;)V"/> + <field name="out"/> + </class> + <class name="java/io/FilterReader" since="1"> + <extends name="java/io/Reader"/> + <method name="<init>(Ljava/io/Reader;)V"/> + <field name="in"/> + </class> + <class name="java/io/FilterWriter" since="1"> + <extends name="java/io/Writer"/> + <method name="<init>(Ljava/io/Writer;)V"/> + <field name="out"/> + </class> + <class name="java/io/Flushable" since="1"> + <extends name="java/lang/Object"/> + <method name="flush()V"/> + </class> + <class name="java/io/IOError" since="9"> + <extends name="java/lang/Error"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/io/IOException" since="1"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="9"/> + <method name="<init>(Ljava/lang/Throwable;)V" since="9"/> + </class> + <class name="java/io/InputStream" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable"/> + <method name="<init>()V"/> + <method name="available()I"/> + <method name="mark(I)V"/> + <method name="markSupported()Z"/> + <method name="read()I"/> + <method name="read([B)I"/> + <method name="read([BII)I"/> + <method name="reset()V"/> + <method name="skip(J)J"/> + </class> + <class name="java/io/InputStreamReader" since="1"> + <extends name="java/io/Reader"/> + <method name="<init>(Ljava/io/InputStream;)V"/> + <method name="<init>(Ljava/io/InputStream;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/io/InputStream;Ljava/nio/charset/Charset;)V"/> + <method name="<init>(Ljava/io/InputStream;Ljava/nio/charset/CharsetDecoder;)V"/> + <method name="getEncoding()Ljava/lang/String;"/> + </class> + <class name="java/io/InterruptedIOException" since="1"> + <extends name="java/io/IOException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <field name="bytesTransferred"/> + </class> + <class name="java/io/InvalidClassException" since="1"> + <extends name="java/io/ObjectStreamException"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <field name="classname"/> + </class> + <class name="java/io/InvalidObjectException" since="1"> + <extends name="java/io/ObjectStreamException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/io/LineNumberInputStream" since="1" deprecated="1"> + <extends name="java/io/FilterInputStream"/> + <method name="<init>(Ljava/io/InputStream;)V"/> + <method name="getLineNumber()I"/> + <method name="setLineNumber(I)V"/> + </class> + <class name="java/io/LineNumberReader" since="1"> + <extends name="java/io/BufferedReader"/> + <method name="<init>(Ljava/io/Reader;)V"/> + <method name="<init>(Ljava/io/Reader;I)V"/> + <method name="getLineNumber()I"/> + <method name="setLineNumber(I)V"/> + </class> + <class name="java/io/NotActiveException" since="1"> + <extends name="java/io/ObjectStreamException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/io/NotSerializableException" since="1"> + <extends name="java/io/ObjectStreamException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/io/ObjectInput" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/DataInput"/> + <implements name="java/lang/AutoCloseable" since="19"/> + <method name="available()I"/> + <method name="close()V"/> + <method name="read()I"/> + <method name="read([B)I"/> + <method name="read([BII)I"/> + <method name="readObject()Ljava/lang/Object;"/> + <method name="skip(J)J"/> + </class> + <class name="java/io/ObjectInputStream" since="1"> + <extends name="java/io/InputStream"/> + <implements name="java/io/ObjectInput"/> + <implements name="java/io/ObjectStreamConstants"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/io/InputStream;)V"/> + <method name="defaultReadObject()V"/> + <method name="enableResolveObject(Z)Z"/> + <method name="readClassDescriptor()Ljava/io/ObjectStreamClass;"/> + <method name="readFields()Ljava/io/ObjectInputStream$GetField;"/> + <method name="readObjectOverride()Ljava/lang/Object;"/> + <method name="readStreamHeader()V"/> + <method name="readUnshared()Ljava/lang/Object;"/> + <method name="registerValidation(Ljava/io/ObjectInputValidation;I)V"/> + <method name="resolveClass(Ljava/io/ObjectStreamClass;)Ljava/lang/Class;"/> + <method name="resolveObject(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="resolveProxyClass([Ljava/lang/String;)Ljava/lang/Class;"/> + </class> + <class name="java/io/ObjectInputStream$GetField" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="defaulted(Ljava/lang/String;)Z"/> + <method name="get(Ljava/lang/String;B)B"/> + <method name="get(Ljava/lang/String;C)C"/> + <method name="get(Ljava/lang/String;D)D"/> + <method name="get(Ljava/lang/String;F)F"/> + <method name="get(Ljava/lang/String;I)I"/> + <method name="get(Ljava/lang/String;J)J"/> + <method name="get(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="get(Ljava/lang/String;S)S"/> + <method name="get(Ljava/lang/String;Z)Z"/> + <method name="getObjectStreamClass()Ljava/io/ObjectStreamClass;"/> + </class> + <class name="java/io/ObjectInputValidation" since="1"> + <extends name="java/lang/Object"/> + <method name="validateObject()V"/> + </class> + <class name="java/io/ObjectOutput" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/DataOutput"/> + <implements name="java/lang/AutoCloseable" since="19"/> + <method name="close()V"/> + <method name="flush()V"/> + <method name="writeObject(Ljava/lang/Object;)V"/> + </class> + <class name="java/io/ObjectOutputStream" since="1"> + <extends name="java/io/OutputStream"/> + <implements name="java/io/ObjectOutput"/> + <implements name="java/io/ObjectStreamConstants"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/io/OutputStream;)V"/> + <method name="annotateClass(Ljava/lang/Class;)V"/> + <method name="annotateProxyClass(Ljava/lang/Class;)V"/> + <method name="defaultWriteObject()V"/> + <method name="drain()V"/> + <method name="enableReplaceObject(Z)Z"/> + <method name="putFields()Ljava/io/ObjectOutputStream$PutField;"/> + <method name="replaceObject(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="reset()V"/> + <method name="useProtocolVersion(I)V"/> + <method name="writeClassDescriptor(Ljava/io/ObjectStreamClass;)V"/> + <method name="writeFields()V"/> + <method name="writeObjectOverride(Ljava/lang/Object;)V"/> + <method name="writeStreamHeader()V"/> + <method name="writeUnshared(Ljava/lang/Object;)V"/> + </class> + <class name="java/io/ObjectOutputStream$PutField" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="put(Ljava/lang/String;B)V"/> + <method name="put(Ljava/lang/String;C)V"/> + <method name="put(Ljava/lang/String;D)V"/> + <method name="put(Ljava/lang/String;F)V"/> + <method name="put(Ljava/lang/String;I)V"/> + <method name="put(Ljava/lang/String;J)V"/> + <method name="put(Ljava/lang/String;Ljava/lang/Object;)V"/> + <method name="put(Ljava/lang/String;S)V"/> + <method name="put(Ljava/lang/String;Z)V"/> + <method name="write(Ljava/io/ObjectOutput;)V" deprecated="16"/> + </class> + <class name="java/io/ObjectStreamClass" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="forClass()Ljava/lang/Class;"/> + <method name="getField(Ljava/lang/String;)Ljava/io/ObjectStreamField;"/> + <method name="getFields()[Ljava/io/ObjectStreamField;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getSerialVersionUID()J"/> + <method name="lookup(Ljava/lang/Class;)Ljava/io/ObjectStreamClass;"/> + <method name="lookupAny(Ljava/lang/Class;)Ljava/io/ObjectStreamClass;" since="9"/> + <field name="NO_FIELDS"/> + </class> + <class name="java/io/ObjectStreamConstants" since="1"> + <extends name="java/lang/Object"/> + <field name="PROTOCOL_VERSION_1"/> + <field name="PROTOCOL_VERSION_2"/> + <field name="SC_BLOCK_DATA"/> + <field name="SC_ENUM"/> + <field name="SC_EXTERNALIZABLE"/> + <field name="SC_SERIALIZABLE"/> + <field name="SC_WRITE_METHOD"/> + <field name="STREAM_MAGIC"/> + <field name="STREAM_VERSION"/> + <field name="SUBCLASS_IMPLEMENTATION_PERMISSION"/> + <field name="SUBSTITUTION_PERMISSION"/> + <field name="TC_ARRAY"/> + <field name="TC_BASE"/> + <field name="TC_BLOCKDATA"/> + <field name="TC_BLOCKDATALONG"/> + <field name="TC_CLASS"/> + <field name="TC_CLASSDESC"/> + <field name="TC_ENDBLOCKDATA"/> + <field name="TC_ENUM"/> + <field name="TC_EXCEPTION"/> + <field name="TC_LONGSTRING"/> + <field name="TC_MAX"/> + <field name="TC_NULL"/> + <field name="TC_OBJECT"/> + <field name="TC_PROXYCLASSDESC"/> + <field name="TC_REFERENCE"/> + <field name="TC_RESET"/> + <field name="TC_STRING"/> + <field name="baseWireHandle"/> + </class> + <class name="java/io/ObjectStreamException" since="1"> + <extends name="java/io/IOException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/io/ObjectStreamField" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Comparable"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Class;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Class;Z)V"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getOffset()I"/> + <method name="getType()Ljava/lang/Class;"/> + <method name="getTypeCode()C"/> + <method name="getTypeString()Ljava/lang/String;"/> + <method name="isPrimitive()Z"/> + <method name="isUnshared()Z"/> + <method name="setOffset(I)V"/> + </class> + <class name="java/io/OptionalDataException" since="1"> + <extends name="java/io/ObjectStreamException"/> + <method name="<init>()V"/> + <field name="eof"/> + <field name="length"/> + </class> + <class name="java/io/OutputStream" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable"/> + <implements name="java/io/Flushable"/> + <method name="<init>()V"/> + <method name="write(I)V"/> + <method name="write([B)V"/> + <method name="write([BII)V"/> + </class> + <class name="java/io/OutputStreamWriter" since="1"> + <extends name="java/io/Writer"/> + <method name="<init>(Ljava/io/OutputStream;)V"/> + <method name="<init>(Ljava/io/OutputStream;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/io/OutputStream;Ljava/nio/charset/Charset;)V"/> + <method name="<init>(Ljava/io/OutputStream;Ljava/nio/charset/CharsetEncoder;)V"/> + <method name="getEncoding()Ljava/lang/String;"/> + </class> + <class name="java/io/PipedInputStream" since="1"> + <extends name="java/io/InputStream"/> + <method name="<init>()V"/> + <method name="<init>(I)V" since="9"/> + <method name="<init>(Ljava/io/PipedOutputStream;)V"/> + <method name="<init>(Ljava/io/PipedOutputStream;I)V" since="9"/> + <method name="connect(Ljava/io/PipedOutputStream;)V"/> + <method name="receive(I)V"/> + <field name="PIPE_SIZE"/> + <field name="buffer"/> + <field name="in"/> + <field name="out"/> + </class> + <class name="java/io/PipedOutputStream" since="1"> + <extends name="java/io/OutputStream"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/io/PipedInputStream;)V"/> + <method name="connect(Ljava/io/PipedInputStream;)V"/> + </class> + <class name="java/io/PipedReader" since="1"> + <extends name="java/io/Reader"/> + <method name="<init>()V"/> + <method name="<init>(I)V" since="9"/> + <method name="<init>(Ljava/io/PipedWriter;)V"/> + <method name="<init>(Ljava/io/PipedWriter;I)V" since="9"/> + <method name="connect(Ljava/io/PipedWriter;)V"/> + </class> + <class name="java/io/PipedWriter" since="1"> + <extends name="java/io/Writer"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/io/PipedReader;)V"/> + <method name="connect(Ljava/io/PipedReader;)V"/> + </class> + <class name="java/io/PrintStream" since="1"> + <extends name="java/io/FilterOutputStream"/> + <implements name="java/lang/Appendable"/> + <method name="<init>(Ljava/io/File;)V"/> + <method name="<init>(Ljava/io/File;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/io/OutputStream;)V"/> + <method name="<init>(Ljava/io/OutputStream;Z)V"/> + <method name="<init>(Ljava/io/OutputStream;ZLjava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="append(C)Ljava/io/PrintStream;"/> + <method name="append(Ljava/lang/CharSequence;)Ljava/io/PrintStream;"/> + <method name="append(Ljava/lang/CharSequence;II)Ljava/io/PrintStream;"/> + <method name="checkError()Z"/> + <method name="clearError()V" since="9"/> + <method name="format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;"/> + <method name="format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;"/> + <method name="print(C)V"/> + <method name="print(D)V"/> + <method name="print(F)V"/> + <method name="print(I)V"/> + <method name="print(J)V"/> + <method name="print(Ljava/lang/Object;)V"/> + <method name="print(Ljava/lang/String;)V"/> + <method name="print(Z)V"/> + <method name="print([C)V"/> + <method name="printf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;"/> + <method name="printf(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;"/> + <method name="println()V"/> + <method name="println(C)V"/> + <method name="println(D)V"/> + <method name="println(F)V"/> + <method name="println(I)V"/> + <method name="println(J)V"/> + <method name="println(Ljava/lang/Object;)V"/> + <method name="println(Ljava/lang/String;)V"/> + <method name="println(Z)V"/> + <method name="println([C)V"/> + <method name="setError()V"/> + </class> + <class name="java/io/PrintWriter" since="1"> + <extends name="java/io/Writer"/> + <method name="<init>(Ljava/io/File;)V"/> + <method name="<init>(Ljava/io/File;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/io/OutputStream;)V"/> + <method name="<init>(Ljava/io/OutputStream;Z)V"/> + <method name="<init>(Ljava/io/Writer;)V"/> + <method name="<init>(Ljava/io/Writer;Z)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="append(C)Ljava/io/PrintWriter;"/> + <method name="append(Ljava/lang/CharSequence;)Ljava/io/PrintWriter;"/> + <method name="append(Ljava/lang/CharSequence;II)Ljava/io/PrintWriter;"/> + <method name="checkError()Z"/> + <method name="clearError()V" since="9"/> + <method name="format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter;"/> + <method name="format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter;"/> + <method name="print(C)V"/> + <method name="print(D)V"/> + <method name="print(F)V"/> + <method name="print(I)V"/> + <method name="print(J)V"/> + <method name="print(Ljava/lang/Object;)V"/> + <method name="print(Ljava/lang/String;)V"/> + <method name="print(Z)V"/> + <method name="print([C)V"/> + <method name="printf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter;"/> + <method name="printf(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter;"/> + <method name="println()V"/> + <method name="println(C)V"/> + <method name="println(D)V"/> + <method name="println(F)V"/> + <method name="println(I)V"/> + <method name="println(J)V"/> + <method name="println(Ljava/lang/Object;)V"/> + <method name="println(Ljava/lang/String;)V"/> + <method name="println(Z)V"/> + <method name="println([C)V"/> + <method name="setError()V"/> + <field name="out"/> + </class> + <class name="java/io/PushbackInputStream" since="1"> + <extends name="java/io/FilterInputStream"/> + <method name="<init>(Ljava/io/InputStream;)V"/> + <method name="<init>(Ljava/io/InputStream;I)V"/> + <method name="unread(I)V"/> + <method name="unread([B)V"/> + <method name="unread([BII)V"/> + <field name="buf"/> + <field name="pos"/> + </class> + <class name="java/io/PushbackReader" since="1"> + <extends name="java/io/FilterReader"/> + <method name="<init>(Ljava/io/Reader;)V"/> + <method name="<init>(Ljava/io/Reader;I)V"/> + <method name="unread(I)V"/> + <method name="unread([C)V"/> + <method name="unread([CII)V"/> + </class> + <class name="java/io/RandomAccessFile" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable"/> + <implements name="java/io/DataInput"/> + <implements name="java/io/DataOutput"/> + <method name="<init>(Ljava/io/File;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="getChannel()Ljava/nio/channels/FileChannel;"/> + <method name="getFD()Ljava/io/FileDescriptor;"/> + <method name="getFilePointer()J"/> + <method name="length()J"/> + <method name="read()I"/> + <method name="read([B)I"/> + <method name="read([BII)I"/> + <method name="seek(J)V"/> + <method name="setLength(J)V"/> + </class> + <class name="java/io/Reader" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable"/> + <implements name="java/lang/Readable"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/Object;)V"/> + <method name="mark(I)V"/> + <method name="markSupported()Z"/> + <method name="read()I"/> + <method name="read([C)I"/> + <method name="read([CII)I"/> + <method name="ready()Z"/> + <method name="reset()V"/> + <method name="skip(J)J"/> + <field name="lock"/> + </class> + <class name="java/io/SequenceInputStream" since="1"> + <extends name="java/io/InputStream"/> + <method name="<init>(Ljava/io/InputStream;Ljava/io/InputStream;)V"/> + <method name="<init>(Ljava/util/Enumeration;)V"/> + </class> + <class name="java/io/Serializable" since="1"> + <extends name="java/lang/Object"/> + </class> + <class name="java/io/SerializablePermission" since="1"> + <extends name="java/security/BasicPermission"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="java/io/StreamCorruptedException" since="1"> + <extends name="java/io/ObjectStreamException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/io/StreamTokenizer" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/io/InputStream;)V" deprecated="16"/> + <method name="<init>(Ljava/io/Reader;)V"/> + <method name="commentChar(I)V"/> + <method name="eolIsSignificant(Z)V"/> + <method name="lineno()I"/> + <method name="lowerCaseMode(Z)V"/> + <method name="nextToken()I"/> + <method name="ordinaryChar(I)V"/> + <method name="ordinaryChars(II)V"/> + <method name="parseNumbers()V"/> + <method name="pushBack()V"/> + <method name="quoteChar(I)V"/> + <method name="resetSyntax()V"/> + <method name="slashSlashComments(Z)V"/> + <method name="slashStarComments(Z)V"/> + <method name="whitespaceChars(II)V"/> + <method name="wordChars(II)V"/> + <field name="TT_EOF"/> + <field name="TT_EOL"/> + <field name="TT_NUMBER"/> + <field name="TT_WORD"/> + <field name="nval"/> + <field name="sval"/> + <field name="ttype"/> + </class> + <class name="java/io/StringBufferInputStream" since="1" deprecated="1"> + <extends name="java/io/InputStream"/> + <method name="<init>(Ljava/lang/String;)V"/> + <field name="buffer"/> + <field name="count"/> + <field name="pos"/> + </class> + <class name="java/io/StringReader" since="1"> + <extends name="java/io/Reader"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/io/StringWriter" since="1"> + <extends name="java/io/Writer"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="append(C)Ljava/io/StringWriter;"/> + <method name="append(Ljava/lang/CharSequence;)Ljava/io/StringWriter;"/> + <method name="append(Ljava/lang/CharSequence;II)Ljava/io/StringWriter;"/> + <method name="getBuffer()Ljava/lang/StringBuffer;"/> + </class> + <class name="java/io/SyncFailedException" since="1"> + <extends name="java/io/IOException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/io/UTFDataFormatException" since="1"> + <extends name="java/io/IOException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/io/UncheckedIOException" since="24"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>(Ljava/io/IOException;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/io/IOException;)V"/> + <method name="getCause()Ljava/io/IOException;"/> + </class> + <class name="java/io/UnsupportedEncodingException" since="1"> + <extends name="java/io/IOException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/io/WriteAbortedException" since="1"> + <extends name="java/io/ObjectStreamException"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Exception;)V"/> + <field name="detail"/> + </class> + <class name="java/io/Writer" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable"/> + <implements name="java/io/Flushable"/> + <implements name="java/lang/Appendable"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/Object;)V"/> + <method name="append(C)Ljava/io/Writer;"/> + <method name="append(Ljava/lang/CharSequence;)Ljava/io/Writer;"/> + <method name="append(Ljava/lang/CharSequence;II)Ljava/io/Writer;"/> + <method name="write(I)V"/> + <method name="write(Ljava/lang/String;)V"/> + <method name="write(Ljava/lang/String;II)V"/> + <method name="write([C)V"/> + <method name="write([CII)V"/> + <field name="lock"/> + </class> + <class name="java/lang/AbstractMethodError" since="1"> + <extends name="java/lang/IncompatibleClassChangeError"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/AbstractStringBuilder" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Appendable" since="26"/> + <implements name="java/lang/CharSequence" since="24"/> + <method name="<init>()V"/> + <method name="append(C)Ljava/lang/AbstractStringBuilder;" since="26"/> + <method name="append(Ljava/lang/CharSequence;)Ljava/lang/AbstractStringBuilder;" since="26"/> + <method name="append(Ljava/lang/CharSequence;II)Ljava/lang/AbstractStringBuilder;" since="26"/> + <method name="capacity()I"/> + <method name="charAt(I)C"/> + <method name="codePointAt(I)I"/> + <method name="codePointBefore(I)I"/> + <method name="codePointCount(II)I"/> + <method name="ensureCapacity(I)V"/> + <method name="getChars(II[CI)V"/> + <method name="indexOf(Ljava/lang/String;)I"/> + <method name="indexOf(Ljava/lang/String;I)I"/> + <method name="lastIndexOf(Ljava/lang/String;)I"/> + <method name="lastIndexOf(Ljava/lang/String;I)I"/> + <method name="length()I"/> + <method name="offsetByCodePoints(II)I"/> + <method name="setCharAt(IC)V"/> + <method name="setLength(I)V"/> + <method name="subSequence(II)Ljava/lang/CharSequence;"/> + <method name="substring(I)Ljava/lang/String;"/> + <method name="substring(II)Ljava/lang/String;"/> + <method name="trimToSize()V"/> + </class> + <class name="java/lang/Appendable" since="1"> + <extends name="java/lang/Object"/> + <method name="append(C)Ljava/lang/Appendable;"/> + <method name="append(Ljava/lang/CharSequence;)Ljava/lang/Appendable;"/> + <method name="append(Ljava/lang/CharSequence;II)Ljava/lang/Appendable;"/> + </class> + <class name="java/lang/ArithmeticException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/ArrayIndexOutOfBoundsException" since="1"> + <extends name="java/lang/IndexOutOfBoundsException"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/ArrayStoreException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/AssertionError" since="1"> + <extends name="java/lang/Error"/> + <method name="<init>()V"/> + <method name="<init>(C)V"/> + <method name="<init>(D)V"/> + <method name="<init>(F)V"/> + <method name="<init>(I)V"/> + <method name="<init>(J)V"/> + <method name="<init>(Ljava/lang/Object;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="19"/> + <method name="<init>(Z)V"/> + </class> + <class name="java/lang/AutoCloseable" since="19"> + <extends name="java/lang/Object"/> + <method name="close()V"/> + </class> + <class name="java/lang/Boolean" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Comparable"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Z)V"/> + <method name="booleanValue()Z"/> + <method name="compare(ZZ)I" since="19"/> + <method name="compareTo(Ljava/lang/Boolean;)I"/> + <method name="getBoolean(Ljava/lang/String;)Z"/> + <method name="hashCode(Z)I" since="24"/> + <method name="logicalAnd(ZZ)Z" since="24"/> + <method name="logicalOr(ZZ)Z" since="24"/> + <method name="logicalXor(ZZ)Z" since="24"/> + <method name="parseBoolean(Ljava/lang/String;)Z"/> + <method name="toString(Z)Ljava/lang/String;"/> + <method name="valueOf(Ljava/lang/String;)Ljava/lang/Boolean;"/> + <method name="valueOf(Z)Ljava/lang/Boolean;"/> + <field name="FALSE"/> + <field name="TRUE"/> + <field name="TYPE"/> + </class> + <class name="java/lang/BootstrapMethodError" since="26"> + <extends name="java/lang/LinkageError"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/lang/Byte" since="1"> + <extends name="java/lang/Number"/> + <implements name="java/lang/Comparable"/> + <method name="<init>(B)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="compare(BB)I" since="19"/> + <method name="compareTo(Ljava/lang/Byte;)I"/> + <method name="decode(Ljava/lang/String;)Ljava/lang/Byte;"/> + <method name="hashCode(B)I" since="24"/> + <method name="parseByte(Ljava/lang/String;)B"/> + <method name="parseByte(Ljava/lang/String;I)B"/> + <method name="toString(B)Ljava/lang/String;"/> + <method name="toUnsignedInt(B)I" since="26"/> + <method name="toUnsignedLong(B)J" since="26"/> + <method name="valueOf(B)Ljava/lang/Byte;"/> + <method name="valueOf(Ljava/lang/String;)Ljava/lang/Byte;"/> + <method name="valueOf(Ljava/lang/String;I)Ljava/lang/Byte;"/> + <field name="BYTES" since="24"/> + <field name="MAX_VALUE"/> + <field name="MIN_VALUE"/> + <field name="SIZE"/> + <field name="TYPE"/> + </class> + <class name="java/lang/CharSequence" since="1"> + <extends name="java/lang/Object"/> + <method name="charAt(I)C"/> + <method name="chars()Ljava/util/stream/IntStream;" since="24"/> + <method name="codePoints()Ljava/util/stream/IntStream;" since="24"/> + <method name="length()I"/> + <method name="subSequence(II)Ljava/lang/CharSequence;"/> + </class> + <class name="java/lang/Character" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Comparable"/> + <method name="<init>(C)V"/> + <method name="charCount(I)I"/> + <method name="charValue()C"/> + <method name="codePointAt(Ljava/lang/CharSequence;I)I"/> + <method name="codePointAt([CI)I"/> + <method name="codePointAt([CII)I"/> + <method name="codePointBefore(Ljava/lang/CharSequence;I)I"/> + <method name="codePointBefore([CI)I"/> + <method name="codePointBefore([CII)I"/> + <method name="codePointCount(Ljava/lang/CharSequence;II)I"/> + <method name="codePointCount([CII)I"/> + <method name="compare(CC)I" since="19"/> + <method name="compareTo(Ljava/lang/Character;)I"/> + <method name="digit(CI)I"/> + <method name="digit(II)I"/> + <method name="forDigit(II)C"/> + <method name="getDirectionality(C)B"/> + <method name="getDirectionality(I)B"/> + <method name="getName(I)Ljava/lang/String;" since="19"/> + <method name="getNumericValue(C)I"/> + <method name="getNumericValue(I)I"/> + <method name="getType(C)I"/> + <method name="getType(I)I"/> + <method name="hashCode(C)I" since="24"/> + <method name="highSurrogate(I)C" since="19"/> + <method name="isAlphabetic(I)Z" since="19"/> + <method name="isBmpCodePoint(I)Z" since="19"/> + <method name="isDefined(C)Z"/> + <method name="isDefined(I)Z"/> + <method name="isDigit(C)Z"/> + <method name="isDigit(I)Z"/> + <method name="isHighSurrogate(C)Z"/> + <method name="isISOControl(C)Z"/> + <method name="isISOControl(I)Z"/> + <method name="isIdentifierIgnorable(C)Z"/> + <method name="isIdentifierIgnorable(I)Z"/> + <method name="isIdeographic(I)Z" since="19"/> + <method name="isJavaIdentifierPart(C)Z"/> + <method name="isJavaIdentifierPart(I)Z"/> + <method name="isJavaIdentifierStart(C)Z"/> + <method name="isJavaIdentifierStart(I)Z"/> + <method name="isJavaLetter(C)Z" deprecated="16"/> + <method name="isJavaLetterOrDigit(C)Z" deprecated="16"/> + <method name="isLetter(C)Z"/> + <method name="isLetter(I)Z"/> + <method name="isLetterOrDigit(C)Z"/> + <method name="isLetterOrDigit(I)Z"/> + <method name="isLowSurrogate(C)Z"/> + <method name="isLowerCase(C)Z"/> + <method name="isLowerCase(I)Z"/> + <method name="isMirrored(C)Z"/> + <method name="isMirrored(I)Z"/> + <method name="isSpace(C)Z" deprecated="16"/> + <method name="isSpaceChar(C)Z"/> + <method name="isSpaceChar(I)Z"/> + <method name="isSupplementaryCodePoint(I)Z"/> + <method name="isSurrogate(C)Z" since="19"/> + <method name="isSurrogatePair(CC)Z"/> + <method name="isTitleCase(C)Z"/> + <method name="isTitleCase(I)Z"/> + <method name="isUnicodeIdentifierPart(C)Z"/> + <method name="isUnicodeIdentifierPart(I)Z"/> + <method name="isUnicodeIdentifierStart(C)Z"/> + <method name="isUnicodeIdentifierStart(I)Z"/> + <method name="isUpperCase(C)Z"/> + <method name="isUpperCase(I)Z"/> + <method name="isValidCodePoint(I)Z"/> + <method name="isWhitespace(C)Z"/> + <method name="isWhitespace(I)Z"/> + <method name="lowSurrogate(I)C" since="19"/> + <method name="offsetByCodePoints(Ljava/lang/CharSequence;II)I"/> + <method name="offsetByCodePoints([CIIII)I"/> + <method name="reverseBytes(C)C"/> + <method name="toChars(I)[C"/> + <method name="toChars(I[CI)I"/> + <method name="toCodePoint(CC)I"/> + <method name="toLowerCase(C)C"/> + <method name="toLowerCase(I)I"/> + <method name="toString(C)Ljava/lang/String;"/> + <method name="toTitleCase(C)C"/> + <method name="toTitleCase(I)I"/> + <method name="toUpperCase(C)C"/> + <method name="toUpperCase(I)I"/> + <method name="valueOf(C)Ljava/lang/Character;"/> + <field name="BYTES" since="24"/> + <field name="COMBINING_SPACING_MARK"/> + <field name="CONNECTOR_PUNCTUATION"/> + <field name="CONTROL"/> + <field name="CURRENCY_SYMBOL"/> + <field name="DASH_PUNCTUATION"/> + <field name="DECIMAL_DIGIT_NUMBER"/> + <field name="DIRECTIONALITY_ARABIC_NUMBER"/> + <field name="DIRECTIONALITY_BOUNDARY_NEUTRAL"/> + <field name="DIRECTIONALITY_COMMON_NUMBER_SEPARATOR"/> + <field name="DIRECTIONALITY_EUROPEAN_NUMBER"/> + <field name="DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR"/> + <field name="DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR"/> + <field name="DIRECTIONALITY_LEFT_TO_RIGHT"/> + <field name="DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING"/> + <field name="DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE"/> + <field name="DIRECTIONALITY_NONSPACING_MARK"/> + <field name="DIRECTIONALITY_OTHER_NEUTRALS"/> + <field name="DIRECTIONALITY_PARAGRAPH_SEPARATOR"/> + <field name="DIRECTIONALITY_POP_DIRECTIONAL_FORMAT"/> + <field name="DIRECTIONALITY_RIGHT_TO_LEFT"/> + <field name="DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC"/> + <field name="DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING"/> + <field name="DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE"/> + <field name="DIRECTIONALITY_SEGMENT_SEPARATOR"/> + <field name="DIRECTIONALITY_UNDEFINED"/> + <field name="DIRECTIONALITY_WHITESPACE"/> + <field name="ENCLOSING_MARK"/> + <field name="END_PUNCTUATION"/> + <field name="FINAL_QUOTE_PUNCTUATION"/> + <field name="FORMAT"/> + <field name="INITIAL_QUOTE_PUNCTUATION"/> + <field name="LETTER_NUMBER"/> + <field name="LINE_SEPARATOR"/> + <field name="LOWERCASE_LETTER"/> + <field name="MATH_SYMBOL"/> + <field name="MAX_CODE_POINT"/> + <field name="MAX_HIGH_SURROGATE"/> + <field name="MAX_LOW_SURROGATE"/> + <field name="MAX_RADIX"/> + <field name="MAX_SURROGATE"/> + <field name="MAX_VALUE"/> + <field name="MIN_CODE_POINT"/> + <field name="MIN_HIGH_SURROGATE"/> + <field name="MIN_LOW_SURROGATE"/> + <field name="MIN_RADIX"/> + <field name="MIN_SUPPLEMENTARY_CODE_POINT"/> + <field name="MIN_SURROGATE"/> + <field name="MIN_VALUE"/> + <field name="MODIFIER_LETTER"/> + <field name="MODIFIER_SYMBOL"/> + <field name="NON_SPACING_MARK"/> + <field name="OTHER_LETTER"/> + <field name="OTHER_NUMBER"/> + <field name="OTHER_PUNCTUATION"/> + <field name="OTHER_SYMBOL"/> + <field name="PARAGRAPH_SEPARATOR"/> + <field name="PRIVATE_USE"/> + <field name="SIZE"/> + <field name="SPACE_SEPARATOR"/> + <field name="START_PUNCTUATION"/> + <field name="SURROGATE"/> + <field name="TITLECASE_LETTER"/> + <field name="TYPE"/> + <field name="UNASSIGNED"/> + <field name="UPPERCASE_LETTER"/> + </class> + <class name="java/lang/Character$Subset" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/Character$UnicodeBlock" since="1"> + <extends name="java/lang/Character$Subset"/> + <method name="<init>()V"/> + <method name="forName(Ljava/lang/String;)Ljava/lang/Character$UnicodeBlock;"/> + <method name="of(C)Ljava/lang/Character$UnicodeBlock;"/> + <method name="of(I)Ljava/lang/Character$UnicodeBlock;"/> + <field name="AEGEAN_NUMBERS"/> + <field name="ALCHEMICAL_SYMBOLS" since="19"/> + <field name="ALPHABETIC_PRESENTATION_FORMS"/> + <field name="ANCIENT_GREEK_MUSICAL_NOTATION" since="19"/> + <field name="ANCIENT_GREEK_NUMBERS" since="19"/> + <field name="ANCIENT_SYMBOLS" since="19"/> + <field name="ARABIC"/> + <field name="ARABIC_EXTENDED_A" since="26"/> + <field name="ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS" since="26"/> + <field name="ARABIC_PRESENTATION_FORMS_A"/> + <field name="ARABIC_PRESENTATION_FORMS_B"/> + <field name="ARABIC_SUPPLEMENT" since="19"/> + <field name="ARMENIAN"/> + <field name="ARROWS"/> + <field name="AVESTAN" since="19"/> + <field name="BALINESE" since="19"/> + <field name="BAMUM" since="19"/> + <field name="BAMUM_SUPPLEMENT" since="19"/> + <field name="BASIC_LATIN"/> + <field name="BATAK" since="19"/> + <field name="BENGALI"/> + <field name="BLOCK_ELEMENTS"/> + <field name="BOPOMOFO"/> + <field name="BOPOMOFO_EXTENDED"/> + <field name="BOX_DRAWING"/> + <field name="BRAHMI" since="19"/> + <field name="BRAILLE_PATTERNS"/> + <field name="BUGINESE" since="19"/> + <field name="BUHID"/> + <field name="BYZANTINE_MUSICAL_SYMBOLS"/> + <field name="CARIAN" since="19"/> + <field name="CHAKMA" since="26"/> + <field name="CHAM" since="19"/> + <field name="CHEROKEE"/> + <field name="CJK_COMPATIBILITY"/> + <field name="CJK_COMPATIBILITY_FORMS"/> + <field name="CJK_COMPATIBILITY_IDEOGRAPHS"/> + <field name="CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT"/> + <field name="CJK_RADICALS_SUPPLEMENT"/> + <field name="CJK_STROKES" since="19"/> + <field name="CJK_SYMBOLS_AND_PUNCTUATION"/> + <field name="CJK_UNIFIED_IDEOGRAPHS"/> + <field name="CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A"/> + <field name="CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B"/> + <field name="CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C" since="19"/> + <field name="CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D" since="19"/> + <field name="COMBINING_DIACRITICAL_MARKS"/> + <field name="COMBINING_DIACRITICAL_MARKS_SUPPLEMENT" since="19"/> + <field name="COMBINING_HALF_MARKS"/> + <field name="COMBINING_MARKS_FOR_SYMBOLS"/> + <field name="COMMON_INDIC_NUMBER_FORMS" since="19"/> + <field name="CONTROL_PICTURES"/> + <field name="COPTIC" since="19"/> + <field name="COUNTING_ROD_NUMERALS" since="19"/> + <field name="CUNEIFORM" since="19"/> + <field name="CUNEIFORM_NUMBERS_AND_PUNCTUATION" since="19"/> + <field name="CURRENCY_SYMBOLS"/> + <field name="CYPRIOT_SYLLABARY"/> + <field name="CYRILLIC"/> + <field name="CYRILLIC_EXTENDED_A" since="19"/> + <field name="CYRILLIC_EXTENDED_B" since="19"/> + <field name="CYRILLIC_SUPPLEMENTARY"/> + <field name="DESERET"/> + <field name="DEVANAGARI"/> + <field name="DEVANAGARI_EXTENDED" since="19"/> + <field name="DINGBATS"/> + <field name="DOMINO_TILES" since="19"/> + <field name="EGYPTIAN_HIEROGLYPHS" since="19"/> + <field name="EMOTICONS" since="19"/> + <field name="ENCLOSED_ALPHANUMERICS"/> + <field name="ENCLOSED_ALPHANUMERIC_SUPPLEMENT" since="19"/> + <field name="ENCLOSED_CJK_LETTERS_AND_MONTHS"/> + <field name="ENCLOSED_IDEOGRAPHIC_SUPPLEMENT" since="19"/> + <field name="ETHIOPIC"/> + <field name="ETHIOPIC_EXTENDED" since="19"/> + <field name="ETHIOPIC_EXTENDED_A" since="19"/> + <field name="ETHIOPIC_SUPPLEMENT" since="19"/> + <field name="GENERAL_PUNCTUATION"/> + <field name="GEOMETRIC_SHAPES"/> + <field name="GEORGIAN"/> + <field name="GEORGIAN_SUPPLEMENT" since="19"/> + <field name="GLAGOLITIC" since="19"/> + <field name="GOTHIC"/> + <field name="GREEK"/> + <field name="GREEK_EXTENDED"/> + <field name="GUJARATI"/> + <field name="GURMUKHI"/> + <field name="HALFWIDTH_AND_FULLWIDTH_FORMS"/> + <field name="HANGUL_COMPATIBILITY_JAMO"/> + <field name="HANGUL_JAMO"/> + <field name="HANGUL_JAMO_EXTENDED_A" since="19"/> + <field name="HANGUL_JAMO_EXTENDED_B" since="19"/> + <field name="HANGUL_SYLLABLES"/> + <field name="HANUNOO"/> + <field name="HEBREW"/> + <field name="HIGH_PRIVATE_USE_SURROGATES"/> + <field name="HIGH_SURROGATES"/> + <field name="HIRAGANA"/> + <field name="IDEOGRAPHIC_DESCRIPTION_CHARACTERS"/> + <field name="IMPERIAL_ARAMAIC" since="19"/> + <field name="INSCRIPTIONAL_PAHLAVI" since="19"/> + <field name="INSCRIPTIONAL_PARTHIAN" since="19"/> + <field name="IPA_EXTENSIONS"/> + <field name="JAVANESE" since="19"/> + <field name="KAITHI" since="19"/> + <field name="KANA_SUPPLEMENT" since="19"/> + <field name="KANBUN"/> + <field name="KANGXI_RADICALS"/> + <field name="KANNADA"/> + <field name="KATAKANA"/> + <field name="KATAKANA_PHONETIC_EXTENSIONS"/> + <field name="KAYAH_LI" since="19"/> + <field name="KHAROSHTHI" since="19"/> + <field name="KHMER"/> + <field name="KHMER_SYMBOLS"/> + <field name="LAO"/> + <field name="LATIN_1_SUPPLEMENT"/> + <field name="LATIN_EXTENDED_A"/> + <field name="LATIN_EXTENDED_ADDITIONAL"/> + <field name="LATIN_EXTENDED_B"/> + <field name="LATIN_EXTENDED_C" since="19"/> + <field name="LATIN_EXTENDED_D" since="19"/> + <field name="LEPCHA" since="19"/> + <field name="LETTERLIKE_SYMBOLS"/> + <field name="LIMBU"/> + <field name="LINEAR_B_IDEOGRAMS"/> + <field name="LINEAR_B_SYLLABARY"/> + <field name="LISU" since="19"/> + <field name="LOW_SURROGATES"/> + <field name="LYCIAN" since="19"/> + <field name="LYDIAN" since="19"/> + <field name="MAHJONG_TILES" since="19"/> + <field name="MALAYALAM"/> + <field name="MANDAIC" since="19"/> + <field name="MATHEMATICAL_ALPHANUMERIC_SYMBOLS"/> + <field name="MATHEMATICAL_OPERATORS"/> + <field name="MEETEI_MAYEK" since="19"/> + <field name="MEETEI_MAYEK_EXTENSIONS" since="26"/> + <field name="MEROITIC_CURSIVE" since="26"/> + <field name="MEROITIC_HIEROGLYPHS" since="26"/> + <field name="MIAO" since="26"/> + <field name="MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A"/> + <field name="MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B"/> + <field name="MISCELLANEOUS_SYMBOLS"/> + <field name="MISCELLANEOUS_SYMBOLS_AND_ARROWS"/> + <field name="MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS" since="19"/> + <field name="MISCELLANEOUS_TECHNICAL"/> + <field name="MODIFIER_TONE_LETTERS" since="19"/> + <field name="MONGOLIAN"/> + <field name="MUSICAL_SYMBOLS"/> + <field name="MYANMAR"/> + <field name="MYANMAR_EXTENDED_A" since="19"/> + <field name="NEW_TAI_LUE" since="19"/> + <field name="NKO" since="19"/> + <field name="NUMBER_FORMS"/> + <field name="OGHAM"/> + <field name="OLD_ITALIC"/> + <field name="OLD_PERSIAN" since="19"/> + <field name="OLD_SOUTH_ARABIAN" since="19"/> + <field name="OLD_TURKIC" since="19"/> + <field name="OL_CHIKI" since="19"/> + <field name="OPTICAL_CHARACTER_RECOGNITION"/> + <field name="ORIYA"/> + <field name="OSMANYA"/> + <field name="PHAGS_PA" since="19"/> + <field name="PHAISTOS_DISC" since="19"/> + <field name="PHOENICIAN" since="19"/> + <field name="PHONETIC_EXTENSIONS"/> + <field name="PHONETIC_EXTENSIONS_SUPPLEMENT" since="19"/> + <field name="PLAYING_CARDS" since="19"/> + <field name="PRIVATE_USE_AREA"/> + <field name="REJANG" since="19"/> + <field name="RUMI_NUMERAL_SYMBOLS" since="19"/> + <field name="RUNIC"/> + <field name="SAMARITAN" since="19"/> + <field name="SAURASHTRA" since="19"/> + <field name="SHARADA" since="26"/> + <field name="SHAVIAN"/> + <field name="SINHALA"/> + <field name="SMALL_FORM_VARIANTS"/> + <field name="SORA_SOMPENG" since="26"/> + <field name="SPACING_MODIFIER_LETTERS"/> + <field name="SPECIALS"/> + <field name="SUNDANESE" since="19"/> + <field name="SUNDANESE_SUPPLEMENT" since="26"/> + <field name="SUPERSCRIPTS_AND_SUBSCRIPTS"/> + <field name="SUPPLEMENTAL_ARROWS_A"/> + <field name="SUPPLEMENTAL_ARROWS_B"/> + <field name="SUPPLEMENTAL_MATHEMATICAL_OPERATORS"/> + <field name="SUPPLEMENTAL_PUNCTUATION" since="19"/> + <field name="SUPPLEMENTARY_PRIVATE_USE_AREA_A"/> + <field name="SUPPLEMENTARY_PRIVATE_USE_AREA_B"/> + <field name="SURROGATES_AREA" deprecated="16"/> + <field name="SYLOTI_NAGRI" since="19"/> + <field name="SYRIAC"/> + <field name="TAGALOG"/> + <field name="TAGBANWA"/> + <field name="TAGS"/> + <field name="TAI_LE"/> + <field name="TAI_THAM" since="19"/> + <field name="TAI_VIET" since="19"/> + <field name="TAI_XUAN_JING_SYMBOLS"/> + <field name="TAKRI" since="26"/> + <field name="TAMIL"/> + <field name="TELUGU"/> + <field name="THAANA"/> + <field name="THAI"/> + <field name="TIBETAN"/> + <field name="TIFINAGH" since="19"/> + <field name="TRANSPORT_AND_MAP_SYMBOLS" since="19"/> + <field name="UGARITIC"/> + <field name="UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS"/> + <field name="UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED" since="19"/> + <field name="VAI" since="19"/> + <field name="VARIATION_SELECTORS"/> + <field name="VARIATION_SELECTORS_SUPPLEMENT"/> + <field name="VEDIC_EXTENSIONS" since="19"/> + <field name="VERTICAL_FORMS" since="19"/> + <field name="YIJING_HEXAGRAM_SYMBOLS"/> + <field name="YI_RADICALS"/> + <field name="YI_SYLLABLES"/> + </class> + <class name="java/lang/Character$UnicodeScript" since="24"> + <extends name="java/lang/Enum"/> + <method name="forName(Ljava/lang/String;)Ljava/lang/Character$UnicodeScript;"/> + <method name="of(I)Ljava/lang/Character$UnicodeScript;"/> + <method name="valueOf(Ljava/lang/String;)Ljava/lang/Character$UnicodeScript;"/> + <method name="values()[Ljava/lang/Character$UnicodeScript;"/> + <field name="ARABIC"/> + <field name="ARMENIAN"/> + <field name="AVESTAN"/> + <field name="BALINESE"/> + <field name="BAMUM"/> + <field name="BATAK"/> + <field name="BENGALI"/> + <field name="BOPOMOFO"/> + <field name="BRAHMI"/> + <field name="BRAILLE"/> + <field name="BUGINESE"/> + <field name="BUHID"/> + <field name="CANADIAN_ABORIGINAL"/> + <field name="CARIAN"/> + <field name="CHAKMA" since="26"/> + <field name="CHAM"/> + <field name="CHEROKEE"/> + <field name="COMMON"/> + <field name="COPTIC"/> + <field name="CUNEIFORM"/> + <field name="CYPRIOT"/> + <field name="CYRILLIC"/> + <field name="DESERET"/> + <field name="DEVANAGARI"/> + <field name="EGYPTIAN_HIEROGLYPHS"/> + <field name="ETHIOPIC"/> + <field name="GEORGIAN"/> + <field name="GLAGOLITIC"/> + <field name="GOTHIC"/> + <field name="GREEK"/> + <field name="GUJARATI"/> + <field name="GURMUKHI"/> + <field name="HAN"/> + <field name="HANGUL"/> + <field name="HANUNOO"/> + <field name="HEBREW"/> + <field name="HIRAGANA"/> + <field name="IMPERIAL_ARAMAIC"/> + <field name="INHERITED"/> + <field name="INSCRIPTIONAL_PAHLAVI"/> + <field name="INSCRIPTIONAL_PARTHIAN"/> + <field name="JAVANESE"/> + <field name="KAITHI"/> + <field name="KANNADA"/> + <field name="KATAKANA"/> + <field name="KAYAH_LI"/> + <field name="KHAROSHTHI"/> + <field name="KHMER"/> + <field name="LAO"/> + <field name="LATIN"/> + <field name="LEPCHA"/> + <field name="LIMBU"/> + <field name="LINEAR_B"/> + <field name="LISU"/> + <field name="LYCIAN"/> + <field name="LYDIAN"/> + <field name="MALAYALAM"/> + <field name="MANDAIC"/> + <field name="MEETEI_MAYEK"/> + <field name="MEROITIC_CURSIVE" since="26"/> + <field name="MEROITIC_HIEROGLYPHS" since="26"/> + <field name="MIAO" since="26"/> + <field name="MONGOLIAN"/> + <field name="MYANMAR"/> + <field name="NEW_TAI_LUE"/> + <field name="NKO"/> + <field name="OGHAM"/> + <field name="OLD_ITALIC"/> + <field name="OLD_PERSIAN"/> + <field name="OLD_SOUTH_ARABIAN"/> + <field name="OLD_TURKIC"/> + <field name="OL_CHIKI"/> + <field name="ORIYA"/> + <field name="OSMANYA"/> + <field name="PHAGS_PA"/> + <field name="PHOENICIAN"/> + <field name="REJANG"/> + <field name="RUNIC"/> + <field name="SAMARITAN"/> + <field name="SAURASHTRA"/> + <field name="SHARADA" since="26"/> + <field name="SHAVIAN"/> + <field name="SINHALA"/> + <field name="SORA_SOMPENG" since="26"/> + <field name="SUNDANESE"/> + <field name="SYLOTI_NAGRI"/> + <field name="SYRIAC"/> + <field name="TAGALOG"/> + <field name="TAGBANWA"/> + <field name="TAI_LE"/> + <field name="TAI_THAM"/> + <field name="TAI_VIET"/> + <field name="TAKRI" since="26"/> + <field name="TAMIL"/> + <field name="TELUGU"/> + <field name="THAANA"/> + <field name="THAI"/> + <field name="TIBETAN"/> + <field name="TIFINAGH"/> + <field name="UGARITIC"/> + <field name="UNKNOWN"/> + <field name="VAI"/> + <field name="YI"/> + </class> + <class name="java/lang/Class" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/reflect/AnnotatedElement"/> + <implements name="java/lang/reflect/GenericDeclaration"/> + <implements name="java/lang/reflect/Type"/> + <method name="<init>()V"/> + <method name="asSubclass(Ljava/lang/Class;)Ljava/lang/Class;"/> + <method name="cast(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="desiredAssertionStatus()Z"/> + <method name="forName(Ljava/lang/String;)Ljava/lang/Class;"/> + <method name="forName(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;"/> + <method name="getCanonicalName()Ljava/lang/String;"/> + <method name="getClassLoader()Ljava/lang/ClassLoader;"/> + <method name="getClasses()[Ljava/lang/Class;"/> + <method name="getComponentType()Ljava/lang/Class;"/> + <method name="getConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;"/> + <method name="getConstructors()[Ljava/lang/reflect/Constructor;"/> + <method name="getDeclaredClasses()[Ljava/lang/Class;"/> + <method name="getDeclaredConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;"/> + <method name="getDeclaredConstructors()[Ljava/lang/reflect/Constructor;"/> + <method name="getDeclaredField(Ljava/lang/String;)Ljava/lang/reflect/Field;"/> + <method name="getDeclaredFields()[Ljava/lang/reflect/Field;"/> + <method name="getDeclaredMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;"/> + <method name="getDeclaredMethods()[Ljava/lang/reflect/Method;"/> + <method name="getDeclaringClass()Ljava/lang/Class;"/> + <method name="getEnclosingClass()Ljava/lang/Class;"/> + <method name="getEnclosingConstructor()Ljava/lang/reflect/Constructor;"/> + <method name="getEnclosingMethod()Ljava/lang/reflect/Method;"/> + <method name="getEnumConstants()[Ljava/lang/Object;"/> + <method name="getField(Ljava/lang/String;)Ljava/lang/reflect/Field;"/> + <method name="getFields()[Ljava/lang/reflect/Field;"/> + <method name="getGenericInterfaces()[Ljava/lang/reflect/Type;"/> + <method name="getGenericSuperclass()Ljava/lang/reflect/Type;"/> + <method name="getInterfaces()[Ljava/lang/Class;"/> + <method name="getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;"/> + <method name="getMethods()[Ljava/lang/reflect/Method;"/> + <method name="getModifiers()I"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getPackage()Ljava/lang/Package;"/> + <method name="getProtectionDomain()Ljava/security/ProtectionDomain;"/> + <method name="getResource(Ljava/lang/String;)Ljava/net/URL;"/> + <method name="getResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream;"/> + <method name="getSigners()[Ljava/lang/Object;"/> + <method name="getSimpleName()Ljava/lang/String;"/> + <method name="getSuperclass()Ljava/lang/Class;"/> + <method name="getTypeName()Ljava/lang/String;" since="26"/> + <method name="isAnnotation()Z"/> + <method name="isAnonymousClass()Z"/> + <method name="isArray()Z"/> + <method name="isAssignableFrom(Ljava/lang/Class;)Z"/> + <method name="isEnum()Z"/> + <method name="isInstance(Ljava/lang/Object;)Z"/> + <method name="isInterface()Z"/> + <method name="isLocalClass()Z"/> + <method name="isMemberClass()Z"/> + <method name="isPrimitive()Z"/> + <method name="isSynthetic()Z"/> + <method name="newInstance()Ljava/lang/Object;"/> + <method name="toGenericString()Ljava/lang/String;" since="26"/> + </class> + <class name="java/lang/ClassCastException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/ClassCircularityError" since="1"> + <extends name="java/lang/LinkageError"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/ClassFormatError" since="1"> + <extends name="java/lang/LinkageError"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/ClassLoader" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/ClassLoader;)V"/> + <method name="clearAssertionStatus()V"/> + <method name="defineClass(Ljava/lang/String;Ljava/nio/ByteBuffer;Ljava/security/ProtectionDomain;)Ljava/lang/Class;"/> + <method name="defineClass(Ljava/lang/String;[BII)Ljava/lang/Class;"/> + <method name="defineClass(Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class;"/> + <method name="defineClass([BII)Ljava/lang/Class;" deprecated="16"/> + <method name="definePackage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/net/URL;)Ljava/lang/Package;"/> + <method name="findClass(Ljava/lang/String;)Ljava/lang/Class;"/> + <method name="findLibrary(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="findLoadedClass(Ljava/lang/String;)Ljava/lang/Class;"/> + <method name="findResource(Ljava/lang/String;)Ljava/net/URL;"/> + <method name="findResources(Ljava/lang/String;)Ljava/util/Enumeration;"/> + <method name="findSystemClass(Ljava/lang/String;)Ljava/lang/Class;"/> + <method name="getPackage(Ljava/lang/String;)Ljava/lang/Package;"/> + <method name="getPackages()[Ljava/lang/Package;"/> + <method name="getParent()Ljava/lang/ClassLoader;"/> + <method name="getResource(Ljava/lang/String;)Ljava/net/URL;"/> + <method name="getResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream;"/> + <method name="getResources(Ljava/lang/String;)Ljava/util/Enumeration;"/> + <method name="getSystemClassLoader()Ljava/lang/ClassLoader;"/> + <method name="getSystemResource(Ljava/lang/String;)Ljava/net/URL;"/> + <method name="getSystemResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream;"/> + <method name="getSystemResources(Ljava/lang/String;)Ljava/util/Enumeration;"/> + <method name="loadClass(Ljava/lang/String;)Ljava/lang/Class;"/> + <method name="loadClass(Ljava/lang/String;Z)Ljava/lang/Class;"/> + <method name="registerAsParallelCapable()Z" since="24"/> + <method name="resolveClass(Ljava/lang/Class;)V"/> + <method name="setClassAssertionStatus(Ljava/lang/String;Z)V"/> + <method name="setDefaultAssertionStatus(Z)V"/> + <method name="setPackageAssertionStatus(Ljava/lang/String;Z)V"/> + <method name="setSigners(Ljava/lang/Class;[Ljava/lang/Object;)V"/> + </class> + <class name="java/lang/ClassNotFoundException" since="1"> + <extends name="java/lang/Exception" removed="19"/> + <extends name="java/lang/ReflectiveOperationException" since="19"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="getException()Ljava/lang/Throwable;"/> + </class> + <class name="java/lang/CloneNotSupportedException" since="1"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/Cloneable" since="1"> + <extends name="java/lang/Object"/> + </class> + <class name="java/lang/Comparable" since="1"> + <extends name="java/lang/Object"/> + <method name="compareTo(Ljava/lang/Object;)I"/> + </class> + <class name="java/lang/Compiler" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="command(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="compileClass(Ljava/lang/Class;)Z"/> + <method name="compileClasses(Ljava/lang/String;)Z"/> + <method name="disable()V"/> + <method name="enable()V"/> + </class> + <class name="java/lang/Deprecated" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + </class> + <class name="java/lang/Double" since="1"> + <extends name="java/lang/Number"/> + <implements name="java/lang/Comparable"/> + <method name="<init>(D)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="compare(DD)I"/> + <method name="compareTo(Ljava/lang/Double;)I"/> + <method name="doubleToLongBits(D)J"/> + <method name="doubleToRawLongBits(D)J"/> + <method name="hashCode(D)I" since="24"/> + <method name="isFinite(D)Z" since="24"/> + <method name="isInfinite()Z"/> + <method name="isInfinite(D)Z"/> + <method name="isNaN()Z"/> + <method name="isNaN(D)Z"/> + <method name="longBitsToDouble(J)D"/> + <method name="max(DD)D" since="24"/> + <method name="min(DD)D" since="24"/> + <method name="parseDouble(Ljava/lang/String;)D"/> + <method name="sum(DD)D" since="24"/> + <method name="toHexString(D)Ljava/lang/String;"/> + <method name="toString(D)Ljava/lang/String;"/> + <method name="valueOf(D)Ljava/lang/Double;"/> + <method name="valueOf(Ljava/lang/String;)Ljava/lang/Double;"/> + <field name="BYTES" since="24"/> + <field name="MAX_EXPONENT" since="9"/> + <field name="MAX_VALUE"/> + <field name="MIN_EXPONENT" since="9"/> + <field name="MIN_NORMAL" since="9"/> + <field name="MIN_VALUE"/> + <field name="NEGATIVE_INFINITY"/> + <field name="NaN"/> + <field name="POSITIVE_INFINITY"/> + <field name="SIZE"/> + <field name="TYPE"/> + </class> + <class name="java/lang/Enum" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Comparable"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="compareTo(Ljava/lang/Enum;)I"/> + <method name="getDeclaringClass()Ljava/lang/Class;"/> + <method name="name()Ljava/lang/String;"/> + <method name="ordinal()I"/> + <method name="valueOf(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;"/> + </class> + <class name="java/lang/EnumConstantNotPresentException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>(Ljava/lang/Class;Ljava/lang/String;)V"/> + <method name="constantName()Ljava/lang/String;"/> + <method name="enumType()Ljava/lang/Class;"/> + </class> + <class name="java/lang/Error" since="1"> + <extends name="java/lang/Throwable"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;ZZ)V" since="24"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/lang/Exception" since="1"> + <extends name="java/lang/Throwable"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;ZZ)V" since="24"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/lang/ExceptionInInitializerError" since="1"> + <extends name="java/lang/LinkageError"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + <method name="getException()Ljava/lang/Throwable;"/> + </class> + <class name="java/lang/Float" since="1"> + <extends name="java/lang/Number"/> + <implements name="java/lang/Comparable"/> + <method name="<init>(D)V"/> + <method name="<init>(F)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="compare(FF)I"/> + <method name="compareTo(Ljava/lang/Float;)I"/> + <method name="floatToIntBits(F)I"/> + <method name="floatToRawIntBits(F)I"/> + <method name="hashCode(F)I" since="24"/> + <method name="intBitsToFloat(I)F"/> + <method name="isFinite(F)Z" since="24"/> + <method name="isInfinite()Z"/> + <method name="isInfinite(F)Z"/> + <method name="isNaN()Z"/> + <method name="isNaN(F)Z"/> + <method name="max(FF)F" since="24"/> + <method name="min(FF)F" since="24"/> + <method name="parseFloat(Ljava/lang/String;)F"/> + <method name="sum(FF)F" since="24"/> + <method name="toHexString(F)Ljava/lang/String;"/> + <method name="toString(F)Ljava/lang/String;"/> + <method name="valueOf(F)Ljava/lang/Float;"/> + <method name="valueOf(Ljava/lang/String;)Ljava/lang/Float;"/> + <field name="BYTES" since="24"/> + <field name="MAX_EXPONENT" since="9"/> + <field name="MAX_VALUE"/> + <field name="MIN_EXPONENT" since="9"/> + <field name="MIN_NORMAL" since="9"/> + <field name="MIN_VALUE"/> + <field name="NEGATIVE_INFINITY"/> + <field name="NaN"/> + <field name="POSITIVE_INFINITY"/> + <field name="SIZE"/> + <field name="TYPE"/> + </class> + <class name="java/lang/FunctionalInterface" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + </class> + <class name="java/lang/IllegalAccessError" since="1"> + <extends name="java/lang/IncompatibleClassChangeError"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/IllegalAccessException" since="1"> + <extends name="java/lang/Exception" removed="19"/> + <extends name="java/lang/ReflectiveOperationException" since="19"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/IllegalArgumentException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/lang/IllegalMonitorStateException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/IllegalStateException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/lang/IllegalThreadStateException" since="1"> + <extends name="java/lang/IllegalArgumentException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/IncompatibleClassChangeError" since="1"> + <extends name="java/lang/LinkageError"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/IndexOutOfBoundsException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/InheritableThreadLocal" since="1"> + <extends name="java/lang/ThreadLocal"/> + <method name="<init>()V"/> + <method name="childValue(Ljava/lang/Object;)Ljava/lang/Object;"/> + </class> + <class name="java/lang/InstantiationError" since="1"> + <extends name="java/lang/IncompatibleClassChangeError"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/InstantiationException" since="1"> + <extends name="java/lang/Exception" removed="19"/> + <extends name="java/lang/ReflectiveOperationException" since="19"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/Integer" since="1"> + <extends name="java/lang/Number"/> + <implements name="java/lang/Comparable"/> + <method name="<init>(I)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="bitCount(I)I"/> + <method name="compare(II)I" since="19"/> + <method name="compareTo(Ljava/lang/Integer;)I"/> + <method name="compareUnsigned(II)I" since="26"/> + <method name="decode(Ljava/lang/String;)Ljava/lang/Integer;"/> + <method name="divideUnsigned(II)I" since="26"/> + <method name="getInteger(Ljava/lang/String;)Ljava/lang/Integer;"/> + <method name="getInteger(Ljava/lang/String;I)Ljava/lang/Integer;"/> + <method name="getInteger(Ljava/lang/String;Ljava/lang/Integer;)Ljava/lang/Integer;"/> + <method name="hashCode(I)I" since="24"/> + <method name="highestOneBit(I)I"/> + <method name="lowestOneBit(I)I"/> + <method name="max(II)I" since="24"/> + <method name="min(II)I" since="24"/> + <method name="numberOfLeadingZeros(I)I"/> + <method name="numberOfTrailingZeros(I)I"/> + <method name="parseInt(Ljava/lang/String;)I"/> + <method name="parseInt(Ljava/lang/String;I)I"/> + <method name="parseUnsignedInt(Ljava/lang/String;)I" since="26"/> + <method name="parseUnsignedInt(Ljava/lang/String;I)I" since="26"/> + <method name="remainderUnsigned(II)I" since="26"/> + <method name="reverse(I)I"/> + <method name="reverseBytes(I)I"/> + <method name="rotateLeft(II)I"/> + <method name="rotateRight(II)I"/> + <method name="signum(I)I"/> + <method name="sum(II)I" since="24"/> + <method name="toBinaryString(I)Ljava/lang/String;"/> + <method name="toHexString(I)Ljava/lang/String;"/> + <method name="toOctalString(I)Ljava/lang/String;"/> + <method name="toString(I)Ljava/lang/String;"/> + <method name="toString(II)Ljava/lang/String;"/> + <method name="toUnsignedLong(I)J" since="26"/> + <method name="toUnsignedString(I)Ljava/lang/String;" since="26"/> + <method name="toUnsignedString(II)Ljava/lang/String;" since="26"/> + <method name="valueOf(I)Ljava/lang/Integer;"/> + <method name="valueOf(Ljava/lang/String;)Ljava/lang/Integer;"/> + <method name="valueOf(Ljava/lang/String;I)Ljava/lang/Integer;"/> + <field name="BYTES" since="24"/> + <field name="MAX_VALUE"/> + <field name="MIN_VALUE"/> + <field name="SIZE"/> + <field name="TYPE"/> + </class> + <class name="java/lang/InternalError" since="1"> + <extends name="java/lang/VirtualMachineError"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="24"/> + <method name="<init>(Ljava/lang/Throwable;)V" since="24"/> + </class> + <class name="java/lang/InterruptedException" since="1"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/Iterable" since="1"> + <extends name="java/lang/Object"/> + <method name="forEach(Ljava/util/function/Consumer;)V" since="24"/> + <method name="iterator()Ljava/util/Iterator;"/> + <method name="spliterator()Ljava/util/Spliterator;" since="24"/> + </class> + <class name="java/lang/LinkageError" since="1"> + <extends name="java/lang/Error"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="19"/> + </class> + <class name="java/lang/Long" since="1"> + <extends name="java/lang/Number"/> + <implements name="java/lang/Comparable"/> + <method name="<init>(J)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="bitCount(J)I"/> + <method name="compare(JJ)I" since="19"/> + <method name="compareTo(Ljava/lang/Long;)I"/> + <method name="compareUnsigned(JJ)I" since="26"/> + <method name="decode(Ljava/lang/String;)Ljava/lang/Long;"/> + <method name="divideUnsigned(JJ)J" since="26"/> + <method name="getLong(Ljava/lang/String;)Ljava/lang/Long;"/> + <method name="getLong(Ljava/lang/String;J)Ljava/lang/Long;"/> + <method name="getLong(Ljava/lang/String;Ljava/lang/Long;)Ljava/lang/Long;"/> + <method name="hashCode(J)I" since="24"/> + <method name="highestOneBit(J)J"/> + <method name="lowestOneBit(J)J"/> + <method name="max(JJ)J" since="24"/> + <method name="min(JJ)J" since="24"/> + <method name="numberOfLeadingZeros(J)I"/> + <method name="numberOfTrailingZeros(J)I"/> + <method name="parseLong(Ljava/lang/String;)J"/> + <method name="parseLong(Ljava/lang/String;I)J"/> + <method name="parseUnsignedLong(Ljava/lang/String;)J" since="26"/> + <method name="parseUnsignedLong(Ljava/lang/String;I)J" since="26"/> + <method name="remainderUnsigned(JJ)J" since="26"/> + <method name="reverse(J)J"/> + <method name="reverseBytes(J)J"/> + <method name="rotateLeft(JI)J"/> + <method name="rotateRight(JI)J"/> + <method name="signum(J)I"/> + <method name="sum(JJ)J" since="24"/> + <method name="toBinaryString(J)Ljava/lang/String;"/> + <method name="toHexString(J)Ljava/lang/String;"/> + <method name="toOctalString(J)Ljava/lang/String;"/> + <method name="toString(J)Ljava/lang/String;"/> + <method name="toString(JI)Ljava/lang/String;"/> + <method name="toUnsignedString(J)Ljava/lang/String;" since="26"/> + <method name="toUnsignedString(JI)Ljava/lang/String;" since="26"/> + <method name="valueOf(J)Ljava/lang/Long;"/> + <method name="valueOf(Ljava/lang/String;)Ljava/lang/Long;"/> + <method name="valueOf(Ljava/lang/String;I)Ljava/lang/Long;"/> + <field name="BYTES" since="24"/> + <field name="MAX_VALUE"/> + <field name="MIN_VALUE"/> + <field name="SIZE"/> + <field name="TYPE"/> + </class> + <class name="java/lang/Math" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="IEEEremainder(DD)D"/> + <method name="abs(D)D"/> + <method name="abs(F)F"/> + <method name="abs(I)I"/> + <method name="abs(J)J"/> + <method name="acos(D)D"/> + <method name="addExact(II)I" since="24"/> + <method name="addExact(JJ)J" since="24"/> + <method name="asin(D)D"/> + <method name="atan(D)D"/> + <method name="atan2(DD)D"/> + <method name="cbrt(D)D"/> + <method name="ceil(D)D"/> + <method name="copySign(DD)D" since="9"/> + <method name="copySign(FF)F" since="9"/> + <method name="cos(D)D"/> + <method name="cosh(D)D"/> + <method name="decrementExact(I)I" since="24"/> + <method name="decrementExact(J)J" since="24"/> + <method name="exp(D)D"/> + <method name="expm1(D)D"/> + <method name="floor(D)D"/> + <method name="floorDiv(II)I" since="24"/> + <method name="floorDiv(JJ)J" since="24"/> + <method name="floorMod(II)I" since="24"/> + <method name="floorMod(JJ)J" since="24"/> + <method name="getExponent(D)I" since="9"/> + <method name="getExponent(F)I" since="9"/> + <method name="hypot(DD)D"/> + <method name="incrementExact(I)I" since="24"/> + <method name="incrementExact(J)J" since="24"/> + <method name="log(D)D"/> + <method name="log10(D)D"/> + <method name="log1p(D)D"/> + <method name="max(DD)D"/> + <method name="max(FF)F"/> + <method name="max(II)I"/> + <method name="max(JJ)J"/> + <method name="min(DD)D"/> + <method name="min(FF)F"/> + <method name="min(II)I"/> + <method name="min(JJ)J"/> + <method name="multiplyExact(II)I" since="24"/> + <method name="multiplyExact(JJ)J" since="24"/> + <method name="negateExact(I)I" since="24"/> + <method name="negateExact(J)J" since="24"/> + <method name="nextAfter(DD)D" since="9"/> + <method name="nextAfter(FD)F" since="9"/> + <method name="nextDown(D)D" since="24"/> + <method name="nextDown(F)F" since="24"/> + <method name="nextUp(D)D" since="9"/> + <method name="nextUp(F)F" since="9"/> + <method name="pow(DD)D"/> + <method name="random()D"/> + <method name="rint(D)D"/> + <method name="round(D)J"/> + <method name="round(F)I"/> + <method name="scalb(DI)D" since="9"/> + <method name="scalb(FI)F" since="9"/> + <method name="signum(D)D"/> + <method name="signum(F)F"/> + <method name="sin(D)D"/> + <method name="sinh(D)D"/> + <method name="sqrt(D)D"/> + <method name="subtractExact(II)I" since="24"/> + <method name="subtractExact(JJ)J" since="24"/> + <method name="tan(D)D"/> + <method name="tanh(D)D"/> + <method name="toDegrees(D)D"/> + <method name="toIntExact(J)I" since="24"/> + <method name="toRadians(D)D"/> + <method name="ulp(D)D"/> + <method name="ulp(F)F"/> + <field name="E"/> + <field name="PI"/> + </class> + <class name="java/lang/NegativeArraySizeException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/NoClassDefFoundError" since="1"> + <extends name="java/lang/LinkageError"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/NoSuchFieldError" since="1"> + <extends name="java/lang/IncompatibleClassChangeError"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/NoSuchFieldException" since="1"> + <extends name="java/lang/Exception" removed="19"/> + <extends name="java/lang/ReflectiveOperationException" since="19"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/NoSuchMethodError" since="1"> + <extends name="java/lang/IncompatibleClassChangeError"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/NoSuchMethodException" since="1"> + <extends name="java/lang/Exception" removed="19"/> + <extends name="java/lang/ReflectiveOperationException" since="19"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/NullPointerException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/Number" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="byteValue()B"/> + <method name="doubleValue()D"/> + <method name="floatValue()F"/> + <method name="intValue()I"/> + <method name="longValue()J"/> + <method name="shortValue()S"/> + </class> + <class name="java/lang/NumberFormatException" since="1"> + <extends name="java/lang/IllegalArgumentException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/Object" since="1"> + <method name="<init>()V"/> + <method name="clone()Ljava/lang/Object;"/> + <method name="equals(Ljava/lang/Object;)Z"/> + <method name="finalize()V"/> + <method name="getClass()Ljava/lang/Class;"/> + <method name="hashCode()I"/> + <method name="notify()V"/> + <method name="notifyAll()V"/> + <method name="toString()Ljava/lang/String;"/> + <method name="wait()V"/> + <method name="wait(J)V"/> + <method name="wait(JI)V"/> + </class> + <class name="java/lang/OutOfMemoryError" since="1"> + <extends name="java/lang/VirtualMachineError"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/Override" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + </class> + <class name="java/lang/Package" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/reflect/AnnotatedElement"/> + <method name="<init>()V"/> + <method name="getImplementationTitle()Ljava/lang/String;"/> + <method name="getImplementationVendor()Ljava/lang/String;"/> + <method name="getImplementationVersion()Ljava/lang/String;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getPackage(Ljava/lang/String;)Ljava/lang/Package;"/> + <method name="getPackages()[Ljava/lang/Package;"/> + <method name="getSpecificationTitle()Ljava/lang/String;"/> + <method name="getSpecificationVendor()Ljava/lang/String;"/> + <method name="getSpecificationVersion()Ljava/lang/String;"/> + <method name="isCompatibleWith(Ljava/lang/String;)Z"/> + <method name="isSealed()Z"/> + <method name="isSealed(Ljava/net/URL;)Z"/> + </class> + <class name="java/lang/Process" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="destroy()V"/> + <method name="destroyForcibly()Ljava/lang/Process;" since="26"/> + <method name="exitValue()I"/> + <method name="getErrorStream()Ljava/io/InputStream;"/> + <method name="getInputStream()Ljava/io/InputStream;"/> + <method name="getOutputStream()Ljava/io/OutputStream;"/> + <method name="isAlive()Z" since="26"/> + <method name="waitFor()I"/> + <method name="waitFor(JLjava/util/concurrent/TimeUnit;)Z" since="26"/> + </class> + <class name="java/lang/ProcessBuilder" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/util/List;)V"/> + <method name="<init>([Ljava/lang/String;)V"/> + <method name="command()Ljava/util/List;"/> + <method name="command(Ljava/util/List;)Ljava/lang/ProcessBuilder;"/> + <method name="command([Ljava/lang/String;)Ljava/lang/ProcessBuilder;"/> + <method name="directory()Ljava/io/File;"/> + <method name="directory(Ljava/io/File;)Ljava/lang/ProcessBuilder;"/> + <method name="environment()Ljava/util/Map;"/> + <method name="inheritIO()Ljava/lang/ProcessBuilder;" since="26"/> + <method name="redirectError()Ljava/lang/ProcessBuilder$Redirect;" since="26"/> + <method name="redirectError(Ljava/io/File;)Ljava/lang/ProcessBuilder;" since="26"/> + <method name="redirectError(Ljava/lang/ProcessBuilder$Redirect;)Ljava/lang/ProcessBuilder;" since="26"/> + <method name="redirectErrorStream()Z"/> + <method name="redirectErrorStream(Z)Ljava/lang/ProcessBuilder;"/> + <method name="redirectInput()Ljava/lang/ProcessBuilder$Redirect;" since="26"/> + <method name="redirectInput(Ljava/io/File;)Ljava/lang/ProcessBuilder;" since="26"/> + <method name="redirectInput(Ljava/lang/ProcessBuilder$Redirect;)Ljava/lang/ProcessBuilder;" since="26"/> + <method name="redirectOutput()Ljava/lang/ProcessBuilder$Redirect;" since="26"/> + <method name="redirectOutput(Ljava/io/File;)Ljava/lang/ProcessBuilder;" since="26"/> + <method name="redirectOutput(Ljava/lang/ProcessBuilder$Redirect;)Ljava/lang/ProcessBuilder;" since="26"/> + <method name="start()Ljava/lang/Process;"/> + </class> + <class name="java/lang/ProcessBuilder$Redirect" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="appendTo(Ljava/io/File;)Ljava/lang/ProcessBuilder$Redirect;"/> + <method name="file()Ljava/io/File;"/> + <method name="from(Ljava/io/File;)Ljava/lang/ProcessBuilder$Redirect;"/> + <method name="to(Ljava/io/File;)Ljava/lang/ProcessBuilder$Redirect;"/> + <method name="type()Ljava/lang/ProcessBuilder$Redirect$Type;"/> + <field name="INHERIT"/> + <field name="PIPE"/> + </class> + <class name="java/lang/ProcessBuilder$Redirect$Type" since="26"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/lang/ProcessBuilder$Redirect$Type;"/> + <method name="values()[Ljava/lang/ProcessBuilder$Redirect$Type;"/> + <field name="APPEND"/> + <field name="INHERIT"/> + <field name="PIPE"/> + <field name="READ"/> + <field name="WRITE"/> + </class> + <class name="java/lang/Readable" since="1"> + <extends name="java/lang/Object"/> + <method name="read(Ljava/nio/CharBuffer;)I"/> + </class> + <class name="java/lang/ReflectiveOperationException" since="19"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/lang/Runnable" since="1"> + <extends name="java/lang/Object"/> + <method name="run()V"/> + </class> + <class name="java/lang/Runtime" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addShutdownHook(Ljava/lang/Thread;)V"/> + <method name="availableProcessors()I"/> + <method name="exec(Ljava/lang/String;)Ljava/lang/Process;"/> + <method name="exec(Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/Process;"/> + <method name="exec(Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)Ljava/lang/Process;"/> + <method name="exec([Ljava/lang/String;)Ljava/lang/Process;"/> + <method name="exec([Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/Process;"/> + <method name="exec([Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)Ljava/lang/Process;"/> + <method name="exit(I)V"/> + <method name="freeMemory()J"/> + <method name="gc()V"/> + <method name="getLocalizedInputStream(Ljava/io/InputStream;)Ljava/io/InputStream;" deprecated="16"/> + <method name="getLocalizedOutputStream(Ljava/io/OutputStream;)Ljava/io/OutputStream;" deprecated="16"/> + <method name="getRuntime()Ljava/lang/Runtime;"/> + <method name="halt(I)V"/> + <method name="load(Ljava/lang/String;)V"/> + <method name="loadLibrary(Ljava/lang/String;)V"/> + <method name="maxMemory()J"/> + <method name="removeShutdownHook(Ljava/lang/Thread;)Z"/> + <method name="runFinalization()V"/> + <method name="runFinalizersOnExit(Z)V" deprecated="16"/> + <method name="totalMemory()J"/> + <method name="traceInstructions(Z)V"/> + <method name="traceMethodCalls(Z)V"/> + </class> + <class name="java/lang/RuntimeException" since="1"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;ZZ)V" since="24"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/lang/RuntimePermission" since="1"> + <extends name="java/security/BasicPermission"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="java/lang/SafeVarargs" since="19"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + </class> + <class name="java/lang/SecurityException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/lang/SecurityManager" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="checkAccept(Ljava/lang/String;I)V"/> + <method name="checkAccess(Ljava/lang/Thread;)V"/> + <method name="checkAccess(Ljava/lang/ThreadGroup;)V"/> + <method name="checkAwtEventQueueAccess()V"/> + <method name="checkConnect(Ljava/lang/String;I)V"/> + <method name="checkConnect(Ljava/lang/String;ILjava/lang/Object;)V"/> + <method name="checkCreateClassLoader()V"/> + <method name="checkDelete(Ljava/lang/String;)V"/> + <method name="checkExec(Ljava/lang/String;)V"/> + <method name="checkExit(I)V"/> + <method name="checkLink(Ljava/lang/String;)V"/> + <method name="checkListen(I)V"/> + <method name="checkMemberAccess(Ljava/lang/Class;I)V"/> + <method name="checkMulticast(Ljava/net/InetAddress;)V"/> + <method name="checkMulticast(Ljava/net/InetAddress;B)V" deprecated="16"/> + <method name="checkPackageAccess(Ljava/lang/String;)V"/> + <method name="checkPackageDefinition(Ljava/lang/String;)V"/> + <method name="checkPermission(Ljava/security/Permission;)V"/> + <method name="checkPermission(Ljava/security/Permission;Ljava/lang/Object;)V"/> + <method name="checkPrintJobAccess()V"/> + <method name="checkPropertiesAccess()V"/> + <method name="checkPropertyAccess(Ljava/lang/String;)V"/> + <method name="checkRead(Ljava/io/FileDescriptor;)V"/> + <method name="checkRead(Ljava/lang/String;)V"/> + <method name="checkRead(Ljava/lang/String;Ljava/lang/Object;)V"/> + <method name="checkSecurityAccess(Ljava/lang/String;)V"/> + <method name="checkSetFactory()V"/> + <method name="checkSystemClipboardAccess()V"/> + <method name="checkTopLevelWindow(Ljava/lang/Object;)Z"/> + <method name="checkWrite(Ljava/io/FileDescriptor;)V"/> + <method name="checkWrite(Ljava/lang/String;)V"/> + <method name="classDepth(Ljava/lang/String;)I" deprecated="16"/> + <method name="classLoaderDepth()I" deprecated="16"/> + <method name="currentClassLoader()Ljava/lang/ClassLoader;" deprecated="16"/> + <method name="currentLoadedClass()Ljava/lang/Class;" deprecated="16"/> + <method name="getClassContext()[Ljava/lang/Class;"/> + <method name="getInCheck()Z" deprecated="16"/> + <method name="getSecurityContext()Ljava/lang/Object;"/> + <method name="getThreadGroup()Ljava/lang/ThreadGroup;"/> + <method name="inClass(Ljava/lang/String;)Z" deprecated="16"/> + <method name="inClassLoader()Z" deprecated="16"/> + <field name="inCheck" deprecated="16"/> + </class> + <class name="java/lang/Short" since="1"> + <extends name="java/lang/Number"/> + <implements name="java/lang/Comparable"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(S)V"/> + <method name="compare(SS)I" since="19"/> + <method name="compareTo(Ljava/lang/Short;)I"/> + <method name="decode(Ljava/lang/String;)Ljava/lang/Short;"/> + <method name="hashCode(S)I" since="24"/> + <method name="parseShort(Ljava/lang/String;)S"/> + <method name="parseShort(Ljava/lang/String;I)S"/> + <method name="reverseBytes(S)S"/> + <method name="toString(S)Ljava/lang/String;"/> + <method name="toUnsignedInt(S)I" since="26"/> + <method name="toUnsignedLong(S)J" since="26"/> + <method name="valueOf(Ljava/lang/String;)Ljava/lang/Short;"/> + <method name="valueOf(Ljava/lang/String;I)Ljava/lang/Short;"/> + <method name="valueOf(S)Ljava/lang/Short;"/> + <field name="BYTES" since="24"/> + <field name="MAX_VALUE"/> + <field name="MIN_VALUE"/> + <field name="SIZE"/> + <field name="TYPE"/> + </class> + <class name="java/lang/StackOverflowError" since="1"> + <extends name="java/lang/VirtualMachineError"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/StackTraceElement" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V"/> + <method name="getClassName()Ljava/lang/String;"/> + <method name="getFileName()Ljava/lang/String;"/> + <method name="getLineNumber()I"/> + <method name="getMethodName()Ljava/lang/String;"/> + <method name="isNativeMethod()Z"/> + </class> + <class name="java/lang/StrictMath" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="IEEEremainder(DD)D"/> + <method name="abs(D)D"/> + <method name="abs(F)F"/> + <method name="abs(I)I"/> + <method name="abs(J)J"/> + <method name="acos(D)D"/> + <method name="addExact(II)I" since="24"/> + <method name="addExact(JJ)J" since="24"/> + <method name="asin(D)D"/> + <method name="atan(D)D"/> + <method name="atan2(DD)D"/> + <method name="cbrt(D)D"/> + <method name="ceil(D)D"/> + <method name="copySign(DD)D" since="9"/> + <method name="copySign(FF)F" since="9"/> + <method name="cos(D)D"/> + <method name="cosh(D)D"/> + <method name="exp(D)D"/> + <method name="expm1(D)D"/> + <method name="floor(D)D"/> + <method name="floorDiv(II)I" since="24"/> + <method name="floorDiv(JJ)J" since="24"/> + <method name="floorMod(II)I" since="24"/> + <method name="floorMod(JJ)J" since="24"/> + <method name="getExponent(D)I" since="9"/> + <method name="getExponent(F)I" since="9"/> + <method name="hypot(DD)D"/> + <method name="log(D)D"/> + <method name="log10(D)D"/> + <method name="log1p(D)D"/> + <method name="max(DD)D"/> + <method name="max(FF)F"/> + <method name="max(II)I"/> + <method name="max(JJ)J"/> + <method name="min(DD)D"/> + <method name="min(FF)F"/> + <method name="min(II)I"/> + <method name="min(JJ)J"/> + <method name="multiplyExact(II)I" since="24"/> + <method name="multiplyExact(JJ)J" since="24"/> + <method name="nextAfter(DD)D" since="9"/> + <method name="nextAfter(FD)F" since="9"/> + <method name="nextDown(D)D" since="24"/> + <method name="nextDown(F)F" since="24"/> + <method name="nextUp(D)D" since="9"/> + <method name="nextUp(F)F" since="9"/> + <method name="pow(DD)D"/> + <method name="random()D"/> + <method name="rint(D)D"/> + <method name="round(D)J"/> + <method name="round(F)I"/> + <method name="scalb(DI)D" since="9"/> + <method name="scalb(FI)F" since="9"/> + <method name="signum(D)D"/> + <method name="signum(F)F"/> + <method name="sin(D)D"/> + <method name="sinh(D)D"/> + <method name="sqrt(D)D"/> + <method name="subtractExact(II)I" since="24"/> + <method name="subtractExact(JJ)J" since="24"/> + <method name="tan(D)D"/> + <method name="tanh(D)D"/> + <method name="toDegrees(D)D"/> + <method name="toIntExact(J)I" since="24"/> + <method name="toRadians(D)D"/> + <method name="ulp(D)D"/> + <method name="ulp(F)F"/> + <field name="E"/> + <field name="PI"/> + </class> + <class name="java/lang/String" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/CharSequence"/> + <implements name="java/lang/Comparable"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/StringBuffer;)V"/> + <method name="<init>(Ljava/lang/StringBuilder;)V"/> + <method name="<init>([B)V"/> + <method name="<init>([BI)V" deprecated="16"/> + <method name="<init>([BII)V"/> + <method name="<init>([BIII)V" deprecated="16"/> + <method name="<init>([BIILjava/lang/String;)V"/> + <method name="<init>([BIILjava/nio/charset/Charset;)V" since="9"/> + <method name="<init>([BLjava/lang/String;)V"/> + <method name="<init>([BLjava/nio/charset/Charset;)V" since="9"/> + <method name="<init>([C)V"/> + <method name="<init>([CII)V"/> + <method name="<init>([III)V"/> + <method name="codePointAt(I)I"/> + <method name="codePointBefore(I)I"/> + <method name="codePointCount(II)I"/> + <method name="compareTo(Ljava/lang/String;)I"/> + <method name="compareToIgnoreCase(Ljava/lang/String;)I"/> + <method name="concat(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="contains(Ljava/lang/CharSequence;)Z"/> + <method name="contentEquals(Ljava/lang/CharSequence;)Z"/> + <method name="contentEquals(Ljava/lang/StringBuffer;)Z"/> + <method name="copyValueOf([C)Ljava/lang/String;"/> + <method name="copyValueOf([CII)Ljava/lang/String;"/> + <method name="endsWith(Ljava/lang/String;)Z"/> + <method name="equalsIgnoreCase(Ljava/lang/String;)Z"/> + <method name="format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;"/> + <method name="format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;"/> + <method name="getBytes()[B"/> + <method name="getBytes(II[BI)V" deprecated="16"/> + <method name="getBytes(Ljava/lang/String;)[B"/> + <method name="getBytes(Ljava/nio/charset/Charset;)[B" since="9"/> + <method name="getChars(II[CI)V"/> + <method name="indexOf(I)I"/> + <method name="indexOf(II)I"/> + <method name="indexOf(Ljava/lang/String;)I"/> + <method name="indexOf(Ljava/lang/String;I)I"/> + <method name="intern()Ljava/lang/String;"/> + <method name="isEmpty()Z" since="9"/> + <method name="join(Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String;" since="26"/> + <method name="join(Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/String;" since="26"/> + <method name="lastIndexOf(I)I"/> + <method name="lastIndexOf(II)I"/> + <method name="lastIndexOf(Ljava/lang/String;)I"/> + <method name="lastIndexOf(Ljava/lang/String;I)I"/> + <method name="matches(Ljava/lang/String;)Z"/> + <method name="offsetByCodePoints(II)I"/> + <method name="regionMatches(ILjava/lang/String;II)Z"/> + <method name="regionMatches(ZILjava/lang/String;II)Z"/> + <method name="replace(CC)Ljava/lang/String;"/> + <method name="replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;"/> + <method name="replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="replaceFirst(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="split(Ljava/lang/String;)[Ljava/lang/String;"/> + <method name="split(Ljava/lang/String;I)[Ljava/lang/String;"/> + <method name="startsWith(Ljava/lang/String;)Z"/> + <method name="startsWith(Ljava/lang/String;I)Z"/> + <method name="substring(I)Ljava/lang/String;"/> + <method name="substring(II)Ljava/lang/String;"/> + <method name="toCharArray()[C"/> + <method name="toLowerCase()Ljava/lang/String;"/> + <method name="toLowerCase(Ljava/util/Locale;)Ljava/lang/String;"/> + <method name="toUpperCase()Ljava/lang/String;"/> + <method name="toUpperCase(Ljava/util/Locale;)Ljava/lang/String;"/> + <method name="trim()Ljava/lang/String;"/> + <method name="valueOf(C)Ljava/lang/String;"/> + <method name="valueOf(D)Ljava/lang/String;"/> + <method name="valueOf(F)Ljava/lang/String;"/> + <method name="valueOf(I)Ljava/lang/String;"/> + <method name="valueOf(J)Ljava/lang/String;"/> + <method name="valueOf(Ljava/lang/Object;)Ljava/lang/String;"/> + <method name="valueOf(Z)Ljava/lang/String;"/> + <method name="valueOf([C)Ljava/lang/String;"/> + <method name="valueOf([CII)Ljava/lang/String;"/> + <field name="CASE_INSENSITIVE_ORDER"/> + </class> + <class name="java/lang/StringBuffer" since="1"> + <extends name="java/lang/AbstractStringBuilder"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Appendable" removed="26"/> + <implements name="java/lang/CharSequence"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(Ljava/lang/CharSequence;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="append(C)Ljava/lang/StringBuffer;"/> + <method name="append(D)Ljava/lang/StringBuffer;"/> + <method name="append(F)Ljava/lang/StringBuffer;"/> + <method name="append(I)Ljava/lang/StringBuffer;"/> + <method name="append(J)Ljava/lang/StringBuffer;"/> + <method name="append(Ljava/lang/CharSequence;)Ljava/lang/StringBuffer;"/> + <method name="append(Ljava/lang/CharSequence;II)Ljava/lang/StringBuffer;"/> + <method name="append(Ljava/lang/Object;)Ljava/lang/StringBuffer;"/> + <method name="append(Ljava/lang/String;)Ljava/lang/StringBuffer;"/> + <method name="append(Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer;"/> + <method name="append(Z)Ljava/lang/StringBuffer;"/> + <method name="append([C)Ljava/lang/StringBuffer;"/> + <method name="append([CII)Ljava/lang/StringBuffer;"/> + <method name="appendCodePoint(I)Ljava/lang/StringBuffer;"/> + <method name="delete(II)Ljava/lang/StringBuffer;"/> + <method name="deleteCharAt(I)Ljava/lang/StringBuffer;"/> + <method name="insert(IC)Ljava/lang/StringBuffer;"/> + <method name="insert(ID)Ljava/lang/StringBuffer;"/> + <method name="insert(IF)Ljava/lang/StringBuffer;"/> + <method name="insert(II)Ljava/lang/StringBuffer;"/> + <method name="insert(IJ)Ljava/lang/StringBuffer;"/> + <method name="insert(ILjava/lang/CharSequence;)Ljava/lang/StringBuffer;"/> + <method name="insert(ILjava/lang/CharSequence;II)Ljava/lang/StringBuffer;"/> + <method name="insert(ILjava/lang/Object;)Ljava/lang/StringBuffer;"/> + <method name="insert(ILjava/lang/String;)Ljava/lang/StringBuffer;"/> + <method name="insert(IZ)Ljava/lang/StringBuffer;"/> + <method name="insert(I[C)Ljava/lang/StringBuffer;"/> + <method name="insert(I[CII)Ljava/lang/StringBuffer;"/> + <method name="replace(IILjava/lang/String;)Ljava/lang/StringBuffer;"/> + <method name="reverse()Ljava/lang/StringBuffer;"/> + </class> + <class name="java/lang/StringBuilder" since="1"> + <extends name="java/lang/AbstractStringBuilder"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Appendable" removed="26"/> + <implements name="java/lang/CharSequence"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(Ljava/lang/CharSequence;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="append(C)Ljava/lang/StringBuilder;"/> + <method name="append(D)Ljava/lang/StringBuilder;"/> + <method name="append(F)Ljava/lang/StringBuilder;"/> + <method name="append(I)Ljava/lang/StringBuilder;"/> + <method name="append(J)Ljava/lang/StringBuilder;"/> + <method name="append(Ljava/lang/CharSequence;)Ljava/lang/StringBuilder;"/> + <method name="append(Ljava/lang/CharSequence;II)Ljava/lang/StringBuilder;"/> + <method name="append(Ljava/lang/Object;)Ljava/lang/StringBuilder;"/> + <method name="append(Ljava/lang/String;)Ljava/lang/StringBuilder;"/> + <method name="append(Ljava/lang/StringBuffer;)Ljava/lang/StringBuilder;"/> + <method name="append(Z)Ljava/lang/StringBuilder;"/> + <method name="append([C)Ljava/lang/StringBuilder;"/> + <method name="append([CII)Ljava/lang/StringBuilder;"/> + <method name="appendCodePoint(I)Ljava/lang/StringBuilder;"/> + <method name="delete(II)Ljava/lang/StringBuilder;"/> + <method name="deleteCharAt(I)Ljava/lang/StringBuilder;"/> + <method name="insert(IC)Ljava/lang/StringBuilder;"/> + <method name="insert(ID)Ljava/lang/StringBuilder;"/> + <method name="insert(IF)Ljava/lang/StringBuilder;"/> + <method name="insert(II)Ljava/lang/StringBuilder;"/> + <method name="insert(IJ)Ljava/lang/StringBuilder;"/> + <method name="insert(ILjava/lang/CharSequence;)Ljava/lang/StringBuilder;"/> + <method name="insert(ILjava/lang/CharSequence;II)Ljava/lang/StringBuilder;"/> + <method name="insert(ILjava/lang/Object;)Ljava/lang/StringBuilder;"/> + <method name="insert(ILjava/lang/String;)Ljava/lang/StringBuilder;"/> + <method name="insert(IZ)Ljava/lang/StringBuilder;"/> + <method name="insert(I[C)Ljava/lang/StringBuilder;"/> + <method name="insert(I[CII)Ljava/lang/StringBuilder;"/> + <method name="replace(IILjava/lang/String;)Ljava/lang/StringBuilder;"/> + <method name="reverse()Ljava/lang/StringBuilder;"/> + </class> + <class name="java/lang/StringIndexOutOfBoundsException" since="1"> + <extends name="java/lang/IndexOutOfBoundsException"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/SuppressWarnings" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + <method name="value()[Ljava/lang/String;"/> + </class> + <class name="java/lang/System" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V"/> + <method name="clearProperty(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="console()Ljava/io/Console;" since="9"/> + <method name="currentTimeMillis()J"/> + <method name="exit(I)V"/> + <method name="gc()V"/> + <method name="getProperties()Ljava/util/Properties;"/> + <method name="getProperty(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getSecurityManager()Ljava/lang/SecurityManager;"/> + <method name="getenv()Ljava/util/Map;"/> + <method name="getenv(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="identityHashCode(Ljava/lang/Object;)I"/> + <method name="inheritedChannel()Ljava/nio/channels/Channel;"/> + <method name="lineSeparator()Ljava/lang/String;" since="19"/> + <method name="load(Ljava/lang/String;)V"/> + <method name="loadLibrary(Ljava/lang/String;)V"/> + <method name="mapLibraryName(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="nanoTime()J"/> + <method name="runFinalization()V"/> + <method name="runFinalizersOnExit(Z)V" deprecated="16"/> + <method name="setErr(Ljava/io/PrintStream;)V"/> + <method name="setIn(Ljava/io/InputStream;)V"/> + <method name="setOut(Ljava/io/PrintStream;)V"/> + <method name="setProperties(Ljava/util/Properties;)V"/> + <method name="setProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="setSecurityManager(Ljava/lang/SecurityManager;)V"/> + <field name="err"/> + <field name="in"/> + <field name="out"/> + </class> + <class name="java/lang/Thread" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Runnable"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/Runnable;)V"/> + <method name="<init>(Ljava/lang/Runnable;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/ThreadGroup;Ljava/lang/Runnable;)V"/> + <method name="<init>(Ljava/lang/ThreadGroup;Ljava/lang/Runnable;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/ThreadGroup;Ljava/lang/Runnable;Ljava/lang/String;J)V"/> + <method name="<init>(Ljava/lang/ThreadGroup;Ljava/lang/String;)V"/> + <method name="activeCount()I"/> + <method name="checkAccess()V"/> + <method name="countStackFrames()I" deprecated="16"/> + <method name="currentThread()Ljava/lang/Thread;"/> + <method name="destroy()V" deprecated="16"/> + <method name="dumpStack()V"/> + <method name="enumerate([Ljava/lang/Thread;)I"/> + <method name="getAllStackTraces()Ljava/util/Map;"/> + <method name="getContextClassLoader()Ljava/lang/ClassLoader;"/> + <method name="getDefaultUncaughtExceptionHandler()Ljava/lang/Thread$UncaughtExceptionHandler;"/> + <method name="getId()J"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getPriority()I"/> + <method name="getStackTrace()[Ljava/lang/StackTraceElement;"/> + <method name="getState()Ljava/lang/Thread$State;"/> + <method name="getThreadGroup()Ljava/lang/ThreadGroup;"/> + <method name="getUncaughtExceptionHandler()Ljava/lang/Thread$UncaughtExceptionHandler;"/> + <method name="holdsLock(Ljava/lang/Object;)Z"/> + <method name="interrupt()V"/> + <method name="interrupted()Z"/> + <method name="isAlive()Z"/> + <method name="isDaemon()Z"/> + <method name="isInterrupted()Z"/> + <method name="join()V"/> + <method name="join(J)V"/> + <method name="join(JI)V"/> + <method name="resume()V" deprecated="16"/> + <method name="setContextClassLoader(Ljava/lang/ClassLoader;)V"/> + <method name="setDaemon(Z)V"/> + <method name="setDefaultUncaughtExceptionHandler(Ljava/lang/Thread$UncaughtExceptionHandler;)V"/> + <method name="setName(Ljava/lang/String;)V"/> + <method name="setPriority(I)V"/> + <method name="setUncaughtExceptionHandler(Ljava/lang/Thread$UncaughtExceptionHandler;)V"/> + <method name="sleep(J)V"/> + <method name="sleep(JI)V"/> + <method name="start()V"/> + <method name="stop()V" deprecated="16"/> + <method name="stop(Ljava/lang/Throwable;)V" deprecated="16"/> + <method name="suspend()V" deprecated="16"/> + <method name="yield()V"/> + <field name="MAX_PRIORITY"/> + <field name="MIN_PRIORITY"/> + <field name="NORM_PRIORITY"/> + </class> + <class name="java/lang/Thread$State" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/lang/Thread$State;"/> + <method name="values()[Ljava/lang/Thread$State;"/> + <field name="BLOCKED"/> + <field name="NEW"/> + <field name="RUNNABLE"/> + <field name="TERMINATED"/> + <field name="TIMED_WAITING"/> + <field name="WAITING"/> + </class> + <class name="java/lang/Thread$UncaughtExceptionHandler" since="1"> + <extends name="java/lang/Object"/> + <method name="uncaughtException(Ljava/lang/Thread;Ljava/lang/Throwable;)V"/> + </class> + <class name="java/lang/ThreadDeath" since="1"> + <extends name="java/lang/Error"/> + <method name="<init>()V"/> + </class> + <class name="java/lang/ThreadGroup" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Thread$UncaughtExceptionHandler"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/ThreadGroup;Ljava/lang/String;)V"/> + <method name="activeCount()I"/> + <method name="activeGroupCount()I"/> + <method name="allowThreadSuspension(Z)Z" deprecated="16"/> + <method name="checkAccess()V"/> + <method name="destroy()V"/> + <method name="enumerate([Ljava/lang/Thread;)I"/> + <method name="enumerate([Ljava/lang/Thread;Z)I"/> + <method name="enumerate([Ljava/lang/ThreadGroup;)I"/> + <method name="enumerate([Ljava/lang/ThreadGroup;Z)I"/> + <method name="getMaxPriority()I"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getParent()Ljava/lang/ThreadGroup;"/> + <method name="interrupt()V"/> + <method name="isDaemon()Z"/> + <method name="isDestroyed()Z"/> + <method name="list()V"/> + <method name="parentOf(Ljava/lang/ThreadGroup;)Z"/> + <method name="resume()V" deprecated="16"/> + <method name="setDaemon(Z)V"/> + <method name="setMaxPriority(I)V"/> + <method name="stop()V" deprecated="16"/> + <method name="suspend()V" deprecated="16"/> + </class> + <class name="java/lang/ThreadLocal" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="get()Ljava/lang/Object;"/> + <method name="initialValue()Ljava/lang/Object;"/> + <method name="remove()V"/> + <method name="set(Ljava/lang/Object;)V"/> + <method name="withInitial(Ljava/util/function/Supplier;)Ljava/lang/ThreadLocal;" since="26"/> + </class> + <class name="java/lang/Throwable" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;ZZ)V" since="19"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + <method name="addSuppressed(Ljava/lang/Throwable;)V" since="19"/> + <method name="fillInStackTrace()Ljava/lang/Throwable;"/> + <method name="getCause()Ljava/lang/Throwable;"/> + <method name="getLocalizedMessage()Ljava/lang/String;"/> + <method name="getMessage()Ljava/lang/String;"/> + <method name="getStackTrace()[Ljava/lang/StackTraceElement;"/> + <method name="getSuppressed()[Ljava/lang/Throwable;" since="19"/> + <method name="initCause(Ljava/lang/Throwable;)Ljava/lang/Throwable;"/> + <method name="printStackTrace()V"/> + <method name="printStackTrace(Ljava/io/PrintStream;)V"/> + <method name="printStackTrace(Ljava/io/PrintWriter;)V"/> + <method name="setStackTrace([Ljava/lang/StackTraceElement;)V"/> + </class> + <class name="java/lang/TypeNotPresentException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="typeName()Ljava/lang/String;"/> + </class> + <class name="java/lang/UnknownError" since="1"> + <extends name="java/lang/VirtualMachineError"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/UnsatisfiedLinkError" since="1"> + <extends name="java/lang/LinkageError"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/UnsupportedClassVersionError" since="1"> + <extends name="java/lang/ClassFormatError"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/UnsupportedOperationException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/lang/VerifyError" since="1"> + <extends name="java/lang/LinkageError"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/VirtualMachineError" since="1"> + <extends name="java/lang/Error"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="24"/> + <method name="<init>(Ljava/lang/Throwable;)V" since="24"/> + </class> + <class name="java/lang/Void" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="TYPE"/> + </class> + <class name="java/lang/annotation/Annotation" since="1"> + <extends name="java/lang/Object"/> + <method name="annotationType()Ljava/lang/Class;"/> + </class> + <class name="java/lang/annotation/AnnotationFormatError" since="1"> + <extends name="java/lang/Error"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/lang/annotation/AnnotationTypeMismatchException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>(Ljava/lang/reflect/Method;Ljava/lang/String;)V"/> + <method name="element()Ljava/lang/reflect/Method;"/> + <method name="foundType()Ljava/lang/String;"/> + </class> + <class name="java/lang/annotation/Documented" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + </class> + <class name="java/lang/annotation/ElementType" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/lang/annotation/ElementType;"/> + <method name="values()[Ljava/lang/annotation/ElementType;"/> + <field name="ANNOTATION_TYPE"/> + <field name="CONSTRUCTOR"/> + <field name="FIELD"/> + <field name="LOCAL_VARIABLE"/> + <field name="METHOD"/> + <field name="PACKAGE"/> + <field name="PARAMETER"/> + <field name="TYPE"/> + <field name="TYPE_PARAMETER" since="26"/> + <field name="TYPE_USE" since="26"/> + </class> + <class name="java/lang/annotation/IncompleteAnnotationException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>(Ljava/lang/Class;Ljava/lang/String;)V"/> + <method name="annotationType()Ljava/lang/Class;"/> + <method name="elementName()Ljava/lang/String;"/> + </class> + <class name="java/lang/annotation/Inherited" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + </class> + <class name="java/lang/annotation/Native" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + </class> + <class name="java/lang/annotation/Repeatable" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + <method name="value()Ljava/lang/Class;"/> + </class> + <class name="java/lang/annotation/Retention" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + <method name="value()Ljava/lang/annotation/RetentionPolicy;"/> + </class> + <class name="java/lang/annotation/RetentionPolicy" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/lang/annotation/RetentionPolicy;"/> + <method name="values()[Ljava/lang/annotation/RetentionPolicy;"/> + <field name="CLASS"/> + <field name="RUNTIME"/> + <field name="SOURCE"/> + </class> + <class name="java/lang/annotation/Target" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/annotation/Annotation"/> + <method name="value()[Ljava/lang/annotation/ElementType;"/> + </class> + <class name="java/lang/invoke/CallSite" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="dynamicInvoker()Ljava/lang/invoke/MethodHandle;"/> + <method name="getTarget()Ljava/lang/invoke/MethodHandle;"/> + <method name="setTarget(Ljava/lang/invoke/MethodHandle;)V"/> + <method name="type()Ljava/lang/invoke/MethodType;"/> + </class> + <class name="java/lang/invoke/ConstantCallSite" since="26"> + <extends name="java/lang/invoke/CallSite"/> + <method name="<init>(Ljava/lang/invoke/MethodHandle;)V"/> + <method name="<init>(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;)V"/> + </class> + <class name="java/lang/invoke/LambdaConversionException" since="26"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;ZZ)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/lang/invoke/MethodHandle" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="asCollector(Ljava/lang/Class;I)Ljava/lang/invoke/MethodHandle;"/> + <method name="asFixedArity()Ljava/lang/invoke/MethodHandle;"/> + <method name="asSpreader(Ljava/lang/Class;I)Ljava/lang/invoke/MethodHandle;"/> + <method name="asType(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;"/> + <method name="asVarargsCollector(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;"/> + <method name="bindTo(Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;"/> + <method name="invoke([Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="invokeExact([Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="invokeWithArguments(Ljava/util/List;)Ljava/lang/Object;"/> + <method name="invokeWithArguments([Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="isVarargsCollector()Z"/> + <method name="type()Ljava/lang/invoke/MethodType;"/> + </class> + <class name="java/lang/invoke/MethodHandleInfo" since="26"> + <extends name="java/lang/Object"/> + <method name="getDeclaringClass()Ljava/lang/Class;"/> + <method name="getMethodType()Ljava/lang/invoke/MethodType;"/> + <method name="getModifiers()I"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getReferenceKind()I"/> + <method name="isVarArgs()Z"/> + <method name="refKindIsField(I)Z"/> + <method name="refKindIsValid(I)Z"/> + <method name="refKindName(I)Ljava/lang/String;"/> + <method name="referenceKindToString(I)Ljava/lang/String;"/> + <method name="reflectAs(Ljava/lang/Class;Ljava/lang/invoke/MethodHandles$Lookup;)Ljava/lang/reflect/Member;"/> + <method name="toString(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/String;"/> + <field name="REF_getField"/> + <field name="REF_getStatic"/> + <field name="REF_invokeInterface"/> + <field name="REF_invokeSpecial"/> + <field name="REF_invokeStatic"/> + <field name="REF_invokeVirtual"/> + <field name="REF_newInvokeSpecial"/> + <field name="REF_putField"/> + <field name="REF_putStatic"/> + </class> + <class name="java/lang/invoke/MethodHandles" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="arrayElementGetter(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;"/> + <method name="arrayElementSetter(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;"/> + <method name="catchException(Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;"/> + <method name="collectArguments(Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;"/> + <method name="constant(Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;"/> + <method name="dropArguments(Ljava/lang/invoke/MethodHandle;ILjava/util/List;)Ljava/lang/invoke/MethodHandle;"/> + <method name="dropArguments(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;"/> + <method name="exactInvoker(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;"/> + <method name="explicitCastArguments(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;"/> + <method name="filterArguments(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;"/> + <method name="filterReturnValue(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;"/> + <method name="foldArguments(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;"/> + <method name="guardWithTest(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;"/> + <method name="identity(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;"/> + <method name="insertArguments(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;"/> + <method name="invoker(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;"/> + <method name="lookup()Ljava/lang/invoke/MethodHandles$Lookup;"/> + <method name="permuteArguments(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;[I)Ljava/lang/invoke/MethodHandle;"/> + <method name="publicLookup()Ljava/lang/invoke/MethodHandles$Lookup;"/> + <method name="reflectAs(Ljava/lang/Class;Ljava/lang/invoke/MethodHandle;)Ljava/lang/reflect/Member;"/> + <method name="spreadInvoker(Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/MethodHandle;"/> + <method name="throwException(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;"/> + </class> + <class name="java/lang/invoke/MethodHandles$Lookup" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="bind(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;"/> + <method name="findConstructor(Ljava/lang/Class;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;"/> + <method name="findGetter(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;"/> + <method name="findSetter(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;"/> + <method name="findSpecial(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;"/> + <method name="findStatic(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;"/> + <method name="findStaticGetter(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;"/> + <method name="findStaticSetter(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;"/> + <method name="findVirtual(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;"/> + <method name="in(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandles$Lookup;"/> + <method name="lookupClass()Ljava/lang/Class;"/> + <method name="lookupModes()I"/> + <method name="revealDirect(Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandleInfo;"/> + <method name="unreflect(Ljava/lang/reflect/Method;)Ljava/lang/invoke/MethodHandle;"/> + <method name="unreflectConstructor(Ljava/lang/reflect/Constructor;)Ljava/lang/invoke/MethodHandle;"/> + <method name="unreflectGetter(Ljava/lang/reflect/Field;)Ljava/lang/invoke/MethodHandle;"/> + <method name="unreflectSetter(Ljava/lang/reflect/Field;)Ljava/lang/invoke/MethodHandle;"/> + <method name="unreflectSpecial(Ljava/lang/reflect/Method;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;"/> + <field name="PACKAGE"/> + <field name="PRIVATE"/> + <field name="PROTECTED"/> + <field name="PUBLIC"/> + </class> + <class name="java/lang/invoke/MethodType" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="appendParameterTypes(Ljava/util/List;)Ljava/lang/invoke/MethodType;"/> + <method name="appendParameterTypes([Ljava/lang/Class;)Ljava/lang/invoke/MethodType;"/> + <method name="changeParameterType(ILjava/lang/Class;)Ljava/lang/invoke/MethodType;"/> + <method name="changeReturnType(Ljava/lang/Class;)Ljava/lang/invoke/MethodType;"/> + <method name="dropParameterTypes(II)Ljava/lang/invoke/MethodType;"/> + <method name="erase()Ljava/lang/invoke/MethodType;"/> + <method name="fromMethodDescriptorString(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/invoke/MethodType;"/> + <method name="generic()Ljava/lang/invoke/MethodType;"/> + <method name="genericMethodType(I)Ljava/lang/invoke/MethodType;"/> + <method name="genericMethodType(IZ)Ljava/lang/invoke/MethodType;"/> + <method name="hasPrimitives()Z"/> + <method name="hasWrappers()Z"/> + <method name="insertParameterTypes(ILjava/util/List;)Ljava/lang/invoke/MethodType;"/> + <method name="insertParameterTypes(I[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;"/> + <method name="methodType(Ljava/lang/Class;)Ljava/lang/invoke/MethodType;"/> + <method name="methodType(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/invoke/MethodType;"/> + <method name="methodType(Ljava/lang/Class;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;"/> + <method name="methodType(Ljava/lang/Class;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodType;"/> + <method name="methodType(Ljava/lang/Class;Ljava/util/List;)Ljava/lang/invoke/MethodType;"/> + <method name="methodType(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;"/> + <method name="parameterArray()[Ljava/lang/Class;"/> + <method name="parameterCount()I"/> + <method name="parameterList()Ljava/util/List;"/> + <method name="parameterType(I)Ljava/lang/Class;"/> + <method name="returnType()Ljava/lang/Class;"/> + <method name="toMethodDescriptorString()Ljava/lang/String;"/> + <method name="unwrap()Ljava/lang/invoke/MethodType;"/> + <method name="wrap()Ljava/lang/invoke/MethodType;"/> + </class> + <class name="java/lang/invoke/MutableCallSite" since="26"> + <extends name="java/lang/invoke/CallSite"/> + <method name="<init>(Ljava/lang/invoke/MethodHandle;)V"/> + <method name="<init>(Ljava/lang/invoke/MethodType;)V"/> + </class> + <class name="java/lang/invoke/VolatileCallSite" since="26"> + <extends name="java/lang/invoke/CallSite"/> + <method name="<init>(Ljava/lang/invoke/MethodHandle;)V"/> + <method name="<init>(Ljava/lang/invoke/MethodType;)V"/> + </class> + <class name="java/lang/invoke/WrongMethodTypeException" since="26"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/lang/ref/PhantomReference" since="1"> + <extends name="java/lang/ref/Reference"/> + <method name="<init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V"/> + </class> + <class name="java/lang/ref/Reference" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="clear()V"/> + <method name="enqueue()Z"/> + <method name="get()Ljava/lang/Object;"/> + <method name="isEnqueued()Z"/> + </class> + <class name="java/lang/ref/ReferenceQueue" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="poll()Ljava/lang/ref/Reference;"/> + <method name="remove()Ljava/lang/ref/Reference;"/> + <method name="remove(J)Ljava/lang/ref/Reference;"/> + </class> + <class name="java/lang/ref/SoftReference" since="1"> + <extends name="java/lang/ref/Reference"/> + <method name="<init>(Ljava/lang/Object;)V"/> + <method name="<init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V"/> + </class> + <class name="java/lang/ref/WeakReference" since="1"> + <extends name="java/lang/ref/Reference"/> + <method name="<init>(Ljava/lang/Object;)V"/> + <method name="<init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V"/> + </class> + <class name="java/lang/reflect/AccessibleObject" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/reflect/AnnotatedElement"/> + <method name="<init>()V"/> + <method name="isAccessible()Z"/> + <method name="setAccessible(Z)V"/> + <method name="setAccessible([Ljava/lang/reflect/AccessibleObject;Z)V"/> + </class> + <class name="java/lang/reflect/AnnotatedElement" since="1"> + <extends name="java/lang/Object"/> + <method name="getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;"/> + <method name="getAnnotations()[Ljava/lang/annotation/Annotation;"/> + <method name="getAnnotationsByType(Ljava/lang/Class;)[Ljava/lang/annotation/Annotation;" since="24"/> + <method name="getDeclaredAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;" since="24"/> + <method name="getDeclaredAnnotations()[Ljava/lang/annotation/Annotation;"/> + <method name="getDeclaredAnnotationsByType(Ljava/lang/Class;)[Ljava/lang/annotation/Annotation;" since="24"/> + <method name="isAnnotationPresent(Ljava/lang/Class;)Z"/> + </class> + <class name="java/lang/reflect/Array" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="get(Ljava/lang/Object;I)Ljava/lang/Object;"/> + <method name="getBoolean(Ljava/lang/Object;I)Z"/> + <method name="getByte(Ljava/lang/Object;I)B"/> + <method name="getChar(Ljava/lang/Object;I)C"/> + <method name="getDouble(Ljava/lang/Object;I)D"/> + <method name="getFloat(Ljava/lang/Object;I)F"/> + <method name="getInt(Ljava/lang/Object;I)I"/> + <method name="getLength(Ljava/lang/Object;)I"/> + <method name="getLong(Ljava/lang/Object;I)J"/> + <method name="getShort(Ljava/lang/Object;I)S"/> + <method name="newInstance(Ljava/lang/Class;I)Ljava/lang/Object;"/> + <method name="newInstance(Ljava/lang/Class;[I)Ljava/lang/Object;"/> + <method name="set(Ljava/lang/Object;ILjava/lang/Object;)V"/> + <method name="setBoolean(Ljava/lang/Object;IZ)V"/> + <method name="setByte(Ljava/lang/Object;IB)V"/> + <method name="setChar(Ljava/lang/Object;IC)V"/> + <method name="setDouble(Ljava/lang/Object;ID)V"/> + <method name="setFloat(Ljava/lang/Object;IF)V"/> + <method name="setInt(Ljava/lang/Object;II)V"/> + <method name="setLong(Ljava/lang/Object;IJ)V"/> + <method name="setShort(Ljava/lang/Object;IS)V"/> + </class> + <class name="java/lang/reflect/Constructor" since="1"> + <extends name="java/lang/reflect/AccessibleObject" removed="26"/> + <extends name="java/lang/reflect/Executable" since="26"/> + <implements name="java/lang/reflect/GenericDeclaration" removed="26"/> + <implements name="java/lang/reflect/Member" removed="26"/> + <method name="<init>()V"/> + <method name="getExceptionTypes()[Ljava/lang/Class;"/> + <method name="getGenericExceptionTypes()[Ljava/lang/reflect/Type;"/> + <method name="getGenericParameterTypes()[Ljava/lang/reflect/Type;"/> + <method name="getParameterAnnotations()[[Ljava/lang/annotation/Annotation;"/> + <method name="getParameterTypes()[Ljava/lang/Class;"/> + <method name="isVarArgs()Z"/> + <method name="newInstance([Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="toGenericString()Ljava/lang/String;"/> + </class> + <class name="java/lang/reflect/Executable" since="26"> + <extends name="java/lang/reflect/AccessibleObject"/> + <implements name="java/lang/reflect/GenericDeclaration"/> + <implements name="java/lang/reflect/Member"/> + <method name="<init>()V"/> + <method name="getExceptionTypes()[Ljava/lang/Class;"/> + <method name="getGenericExceptionTypes()[Ljava/lang/reflect/Type;"/> + <method name="getGenericParameterTypes()[Ljava/lang/reflect/Type;"/> + <method name="getParameterAnnotations()[[Ljava/lang/annotation/Annotation;"/> + <method name="getParameterCount()I"/> + <method name="getParameterTypes()[Ljava/lang/Class;"/> + <method name="getParameters()[Ljava/lang/reflect/Parameter;"/> + <method name="isVarArgs()Z"/> + <method name="toGenericString()Ljava/lang/String;"/> + </class> + <class name="java/lang/reflect/Field" since="1"> + <extends name="java/lang/reflect/AccessibleObject"/> + <implements name="java/lang/reflect/Member"/> + <method name="<init>()V"/> + <method name="get(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="getBoolean(Ljava/lang/Object;)Z"/> + <method name="getByte(Ljava/lang/Object;)B"/> + <method name="getChar(Ljava/lang/Object;)C"/> + <method name="getDouble(Ljava/lang/Object;)D"/> + <method name="getFloat(Ljava/lang/Object;)F"/> + <method name="getGenericType()Ljava/lang/reflect/Type;"/> + <method name="getInt(Ljava/lang/Object;)I"/> + <method name="getLong(Ljava/lang/Object;)J"/> + <method name="getShort(Ljava/lang/Object;)S"/> + <method name="getType()Ljava/lang/Class;"/> + <method name="isEnumConstant()Z"/> + <method name="set(Ljava/lang/Object;Ljava/lang/Object;)V"/> + <method name="setBoolean(Ljava/lang/Object;Z)V"/> + <method name="setByte(Ljava/lang/Object;B)V"/> + <method name="setChar(Ljava/lang/Object;C)V"/> + <method name="setDouble(Ljava/lang/Object;D)V"/> + <method name="setFloat(Ljava/lang/Object;F)V"/> + <method name="setInt(Ljava/lang/Object;I)V"/> + <method name="setLong(Ljava/lang/Object;J)V"/> + <method name="setShort(Ljava/lang/Object;S)V"/> + <method name="toGenericString()Ljava/lang/String;"/> + </class> + <class name="java/lang/reflect/GenericArrayType" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/reflect/Type"/> + <method name="getGenericComponentType()Ljava/lang/reflect/Type;"/> + </class> + <class name="java/lang/reflect/GenericDeclaration" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/reflect/AnnotatedElement" since="26"/> + <method name="getTypeParameters()[Ljava/lang/reflect/TypeVariable;"/> + </class> + <class name="java/lang/reflect/GenericSignatureFormatError" since="1"> + <extends name="java/lang/ClassFormatError"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V" since="26"/> + </class> + <class name="java/lang/reflect/InvocationHandler" since="1"> + <extends name="java/lang/Object"/> + <method name="invoke(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;"/> + </class> + <class name="java/lang/reflect/InvocationTargetException" since="1"> + <extends name="java/lang/Exception" removed="19"/> + <extends name="java/lang/ReflectiveOperationException" since="19"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;Ljava/lang/String;)V"/> + <method name="getTargetException()Ljava/lang/Throwable;"/> + </class> + <class name="java/lang/reflect/MalformedParameterizedTypeException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + </class> + <class name="java/lang/reflect/Member" since="1"> + <extends name="java/lang/Object"/> + <method name="getDeclaringClass()Ljava/lang/Class;"/> + <method name="getModifiers()I"/> + <method name="getName()Ljava/lang/String;"/> + <method name="isSynthetic()Z"/> + <field name="DECLARED"/> + <field name="PUBLIC"/> + </class> + <class name="java/lang/reflect/Method" since="1"> + <extends name="java/lang/reflect/AccessibleObject" removed="26"/> + <extends name="java/lang/reflect/Executable" since="26"/> + <implements name="java/lang/reflect/GenericDeclaration" removed="26"/> + <implements name="java/lang/reflect/Member" removed="26"/> + <method name="<init>()V"/> + <method name="getDefaultValue()Ljava/lang/Object;"/> + <method name="getExceptionTypes()[Ljava/lang/Class;"/> + <method name="getGenericExceptionTypes()[Ljava/lang/reflect/Type;"/> + <method name="getGenericParameterTypes()[Ljava/lang/reflect/Type;"/> + <method name="getGenericReturnType()Ljava/lang/reflect/Type;"/> + <method name="getParameterAnnotations()[[Ljava/lang/annotation/Annotation;"/> + <method name="getParameterTypes()[Ljava/lang/Class;"/> + <method name="getReturnType()Ljava/lang/Class;"/> + <method name="invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="isBridge()Z"/> + <method name="isDefault()Z" since="24"/> + <method name="isVarArgs()Z"/> + <method name="toGenericString()Ljava/lang/String;"/> + </class> + <class name="java/lang/reflect/Modifier" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="classModifiers()I" since="19"/> + <method name="constructorModifiers()I" since="19"/> + <method name="fieldModifiers()I" since="19"/> + <method name="interfaceModifiers()I" since="19"/> + <method name="isAbstract(I)Z"/> + <method name="isFinal(I)Z"/> + <method name="isInterface(I)Z"/> + <method name="isNative(I)Z"/> + <method name="isPrivate(I)Z"/> + <method name="isProtected(I)Z"/> + <method name="isPublic(I)Z"/> + <method name="isStatic(I)Z"/> + <method name="isStrict(I)Z"/> + <method name="isSynchronized(I)Z"/> + <method name="isTransient(I)Z"/> + <method name="isVolatile(I)Z"/> + <method name="methodModifiers()I" since="19"/> + <method name="parameterModifiers()I" since="26"/> + <method name="toString(I)Ljava/lang/String;"/> + <field name="ABSTRACT"/> + <field name="FINAL"/> + <field name="INTERFACE"/> + <field name="NATIVE"/> + <field name="PRIVATE"/> + <field name="PROTECTED"/> + <field name="PUBLIC"/> + <field name="STATIC"/> + <field name="STRICT"/> + <field name="SYNCHRONIZED"/> + <field name="TRANSIENT"/> + <field name="VOLATILE"/> + </class> + <class name="java/lang/reflect/Parameter" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/lang/reflect/AnnotatedElement"/> + <method name="<init>()V"/> + <method name="getDeclaringExecutable()Ljava/lang/reflect/Executable;"/> + <method name="getModifiers()I"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getParameterizedType()Ljava/lang/reflect/Type;"/> + <method name="getType()Ljava/lang/Class;"/> + <method name="isImplicit()Z"/> + <method name="isNamePresent()Z"/> + <method name="isSynthetic()Z"/> + <method name="isVarArgs()Z"/> + </class> + <class name="java/lang/reflect/ParameterizedType" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/reflect/Type"/> + <method name="getActualTypeArguments()[Ljava/lang/reflect/Type;"/> + <method name="getOwnerType()Ljava/lang/reflect/Type;"/> + <method name="getRawType()Ljava/lang/reflect/Type;"/> + </class> + <class name="java/lang/reflect/Proxy" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(Ljava/lang/reflect/InvocationHandler;)V"/> + <method name="getInvocationHandler(Ljava/lang/Object;)Ljava/lang/reflect/InvocationHandler;"/> + <method name="getProxyClass(Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Class;"/> + <method name="isProxyClass(Ljava/lang/Class;)Z"/> + <method name="newProxyInstance(Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;"/> + <field name="h"/> + </class> + <class name="java/lang/reflect/ReflectPermission" since="1"> + <extends name="java/security/BasicPermission"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="java/lang/reflect/Type" since="1"> + <extends name="java/lang/Object"/> + </class> + <class name="java/lang/reflect/TypeVariable" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/reflect/Type"/> + <method name="getBounds()[Ljava/lang/reflect/Type;"/> + <method name="getGenericDeclaration()Ljava/lang/reflect/GenericDeclaration;"/> + <method name="getName()Ljava/lang/String;"/> + </class> + <class name="java/lang/reflect/UndeclaredThrowableException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;Ljava/lang/String;)V"/> + <method name="getUndeclaredThrowable()Ljava/lang/Throwable;"/> + </class> + <class name="java/lang/reflect/WildcardType" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/reflect/Type"/> + <method name="getLowerBounds()[Ljava/lang/reflect/Type;"/> + <method name="getUpperBounds()[Ljava/lang/reflect/Type;"/> + </class> + <class name="java/math/BigDecimal" since="1"> + <extends name="java/lang/Number"/> + <implements name="java/lang/Comparable"/> + <method name="<init>(D)V"/> + <method name="<init>(DLjava/math/MathContext;)V"/> + <method name="<init>(I)V"/> + <method name="<init>(ILjava/math/MathContext;)V"/> + <method name="<init>(J)V"/> + <method name="<init>(JLjava/math/MathContext;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/math/MathContext;)V"/> + <method name="<init>(Ljava/math/BigInteger;)V"/> + <method name="<init>(Ljava/math/BigInteger;I)V"/> + <method name="<init>(Ljava/math/BigInteger;ILjava/math/MathContext;)V"/> + <method name="<init>(Ljava/math/BigInteger;Ljava/math/MathContext;)V"/> + <method name="<init>([C)V"/> + <method name="<init>([CII)V"/> + <method name="<init>([CIILjava/math/MathContext;)V"/> + <method name="<init>([CLjava/math/MathContext;)V"/> + <method name="abs()Ljava/math/BigDecimal;"/> + <method name="abs(Ljava/math/MathContext;)Ljava/math/BigDecimal;"/> + <method name="add(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;"/> + <method name="add(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;"/> + <method name="byteValueExact()B"/> + <method name="compareTo(Ljava/math/BigDecimal;)I"/> + <method name="divide(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;"/> + <method name="divide(Ljava/math/BigDecimal;I)Ljava/math/BigDecimal;"/> + <method name="divide(Ljava/math/BigDecimal;II)Ljava/math/BigDecimal;"/> + <method name="divide(Ljava/math/BigDecimal;ILjava/math/RoundingMode;)Ljava/math/BigDecimal;"/> + <method name="divide(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;"/> + <method name="divide(Ljava/math/BigDecimal;Ljava/math/RoundingMode;)Ljava/math/BigDecimal;"/> + <method name="divideAndRemainder(Ljava/math/BigDecimal;)[Ljava/math/BigDecimal;"/> + <method name="divideAndRemainder(Ljava/math/BigDecimal;Ljava/math/MathContext;)[Ljava/math/BigDecimal;"/> + <method name="divideToIntegralValue(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;"/> + <method name="divideToIntegralValue(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;"/> + <method name="intValueExact()I"/> + <method name="longValueExact()J"/> + <method name="max(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;"/> + <method name="min(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;"/> + <method name="movePointLeft(I)Ljava/math/BigDecimal;"/> + <method name="movePointRight(I)Ljava/math/BigDecimal;"/> + <method name="multiply(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;"/> + <method name="multiply(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;"/> + <method name="negate()Ljava/math/BigDecimal;"/> + <method name="negate(Ljava/math/MathContext;)Ljava/math/BigDecimal;"/> + <method name="plus()Ljava/math/BigDecimal;"/> + <method name="plus(Ljava/math/MathContext;)Ljava/math/BigDecimal;"/> + <method name="pow(I)Ljava/math/BigDecimal;"/> + <method name="pow(ILjava/math/MathContext;)Ljava/math/BigDecimal;"/> + <method name="precision()I"/> + <method name="remainder(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;"/> + <method name="remainder(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;"/> + <method name="round(Ljava/math/MathContext;)Ljava/math/BigDecimal;"/> + <method name="scale()I"/> + <method name="scaleByPowerOfTen(I)Ljava/math/BigDecimal;"/> + <method name="setScale(I)Ljava/math/BigDecimal;"/> + <method name="setScale(II)Ljava/math/BigDecimal;"/> + <method name="setScale(ILjava/math/RoundingMode;)Ljava/math/BigDecimal;"/> + <method name="shortValueExact()S"/> + <method name="signum()I"/> + <method name="stripTrailingZeros()Ljava/math/BigDecimal;"/> + <method name="subtract(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;"/> + <method name="subtract(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;"/> + <method name="toBigInteger()Ljava/math/BigInteger;"/> + <method name="toBigIntegerExact()Ljava/math/BigInteger;"/> + <method name="toEngineeringString()Ljava/lang/String;"/> + <method name="toPlainString()Ljava/lang/String;"/> + <method name="ulp()Ljava/math/BigDecimal;"/> + <method name="unscaledValue()Ljava/math/BigInteger;"/> + <method name="valueOf(D)Ljava/math/BigDecimal;"/> + <method name="valueOf(J)Ljava/math/BigDecimal;"/> + <method name="valueOf(JI)Ljava/math/BigDecimal;"/> + <field name="ONE"/> + <field name="ROUND_CEILING"/> + <field name="ROUND_DOWN"/> + <field name="ROUND_FLOOR"/> + <field name="ROUND_HALF_DOWN"/> + <field name="ROUND_HALF_EVEN"/> + <field name="ROUND_HALF_UP"/> + <field name="ROUND_UNNECESSARY"/> + <field name="ROUND_UP"/> + <field name="TEN"/> + <field name="ZERO"/> + </class> + <class name="java/math/BigInteger" since="1"> + <extends name="java/lang/Number"/> + <implements name="java/lang/Comparable"/> + <method name="<init>(IILjava/util/Random;)V"/> + <method name="<init>(ILjava/util/Random;)V"/> + <method name="<init>(I[B)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="<init>([B)V"/> + <method name="abs()Ljava/math/BigInteger;"/> + <method name="add(Ljava/math/BigInteger;)Ljava/math/BigInteger;"/> + <method name="and(Ljava/math/BigInteger;)Ljava/math/BigInteger;"/> + <method name="andNot(Ljava/math/BigInteger;)Ljava/math/BigInteger;"/> + <method name="bitCount()I"/> + <method name="bitLength()I"/> + <method name="clearBit(I)Ljava/math/BigInteger;"/> + <method name="compareTo(Ljava/math/BigInteger;)I"/> + <method name="divide(Ljava/math/BigInteger;)Ljava/math/BigInteger;"/> + <method name="divideAndRemainder(Ljava/math/BigInteger;)[Ljava/math/BigInteger;"/> + <method name="flipBit(I)Ljava/math/BigInteger;"/> + <method name="gcd(Ljava/math/BigInteger;)Ljava/math/BigInteger;"/> + <method name="getLowestSetBit()I"/> + <method name="isProbablePrime(I)Z"/> + <method name="max(Ljava/math/BigInteger;)Ljava/math/BigInteger;"/> + <method name="min(Ljava/math/BigInteger;)Ljava/math/BigInteger;"/> + <method name="mod(Ljava/math/BigInteger;)Ljava/math/BigInteger;"/> + <method name="modInverse(Ljava/math/BigInteger;)Ljava/math/BigInteger;"/> + <method name="modPow(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;"/> + <method name="multiply(Ljava/math/BigInteger;)Ljava/math/BigInteger;"/> + <method name="negate()Ljava/math/BigInteger;"/> + <method name="nextProbablePrime()Ljava/math/BigInteger;"/> + <method name="not()Ljava/math/BigInteger;"/> + <method name="or(Ljava/math/BigInteger;)Ljava/math/BigInteger;"/> + <method name="pow(I)Ljava/math/BigInteger;"/> + <method name="probablePrime(ILjava/util/Random;)Ljava/math/BigInteger;"/> + <method name="remainder(Ljava/math/BigInteger;)Ljava/math/BigInteger;"/> + <method name="setBit(I)Ljava/math/BigInteger;"/> + <method name="shiftLeft(I)Ljava/math/BigInteger;"/> + <method name="shiftRight(I)Ljava/math/BigInteger;"/> + <method name="signum()I"/> + <method name="subtract(Ljava/math/BigInteger;)Ljava/math/BigInteger;"/> + <method name="testBit(I)Z"/> + <method name="toByteArray()[B"/> + <method name="toString(I)Ljava/lang/String;"/> + <method name="valueOf(J)Ljava/math/BigInteger;"/> + <method name="xor(Ljava/math/BigInteger;)Ljava/math/BigInteger;"/> + <field name="ONE"/> + <field name="TEN"/> + <field name="ZERO"/> + </class> + <class name="java/math/MathContext" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(I)V"/> + <method name="<init>(ILjava/math/RoundingMode;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getPrecision()I"/> + <method name="getRoundingMode()Ljava/math/RoundingMode;"/> + <field name="DECIMAL128"/> + <field name="DECIMAL32"/> + <field name="DECIMAL64"/> + <field name="UNLIMITED"/> + </class> + <class name="java/math/RoundingMode" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(I)Ljava/math/RoundingMode;"/> + <method name="valueOf(Ljava/lang/String;)Ljava/math/RoundingMode;"/> + <method name="values()[Ljava/math/RoundingMode;"/> + <field name="CEILING"/> + <field name="DOWN"/> + <field name="FLOOR"/> + <field name="HALF_DOWN"/> + <field name="HALF_EVEN"/> + <field name="HALF_UP"/> + <field name="UNNECESSARY"/> + <field name="UP"/> + </class> + <class name="java/net/Authenticator" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getPasswordAuthentication()Ljava/net/PasswordAuthentication;"/> + <method name="getRequestingHost()Ljava/lang/String;"/> + <method name="getRequestingPort()I"/> + <method name="getRequestingPrompt()Ljava/lang/String;"/> + <method name="getRequestingProtocol()Ljava/lang/String;"/> + <method name="getRequestingScheme()Ljava/lang/String;"/> + <method name="getRequestingSite()Ljava/net/InetAddress;"/> + <method name="getRequestingURL()Ljava/net/URL;"/> + <method name="getRequestorType()Ljava/net/Authenticator$RequestorType;"/> + <method name="requestPasswordAuthentication(Ljava/lang/String;Ljava/net/InetAddress;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/net/PasswordAuthentication;"/> + <method name="requestPasswordAuthentication(Ljava/lang/String;Ljava/net/InetAddress;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/net/URL;Ljava/net/Authenticator$RequestorType;)Ljava/net/PasswordAuthentication;"/> + <method name="requestPasswordAuthentication(Ljava/net/InetAddress;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/net/PasswordAuthentication;"/> + <method name="setDefault(Ljava/net/Authenticator;)V"/> + </class> + <class name="java/net/Authenticator$RequestorType" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/net/Authenticator$RequestorType;"/> + <method name="values()[Ljava/net/Authenticator$RequestorType;"/> + <field name="PROXY"/> + <field name="SERVER"/> + </class> + <class name="java/net/BindException" since="1"> + <extends name="java/net/SocketException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/net/CacheRequest" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="abort()V"/> + <method name="getBody()Ljava/io/OutputStream;"/> + </class> + <class name="java/net/CacheResponse" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getBody()Ljava/io/InputStream;"/> + <method name="getHeaders()Ljava/util/Map;"/> + </class> + <class name="java/net/ConnectException" since="1"> + <extends name="java/net/SocketException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/net/ContentHandler" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getContent(Ljava/net/URLConnection;)Ljava/lang/Object;"/> + <method name="getContent(Ljava/net/URLConnection;[Ljava/lang/Class;)Ljava/lang/Object;"/> + </class> + <class name="java/net/ContentHandlerFactory" since="1"> + <extends name="java/lang/Object"/> + <method name="createContentHandler(Ljava/lang/String;)Ljava/net/ContentHandler;"/> + </class> + <class name="java/net/CookieHandler" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="get(Ljava/net/URI;Ljava/util/Map;)Ljava/util/Map;"/> + <method name="getDefault()Ljava/net/CookieHandler;"/> + <method name="put(Ljava/net/URI;Ljava/util/Map;)V"/> + <method name="setDefault(Ljava/net/CookieHandler;)V"/> + </class> + <class name="java/net/CookieManager" since="9"> + <extends name="java/net/CookieHandler"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/net/CookieStore;Ljava/net/CookiePolicy;)V"/> + <method name="getCookieStore()Ljava/net/CookieStore;"/> + <method name="setCookiePolicy(Ljava/net/CookiePolicy;)V"/> + </class> + <class name="java/net/CookiePolicy" since="9"> + <extends name="java/lang/Object"/> + <method name="shouldAccept(Ljava/net/URI;Ljava/net/HttpCookie;)Z"/> + <field name="ACCEPT_ALL"/> + <field name="ACCEPT_NONE"/> + <field name="ACCEPT_ORIGINAL_SERVER"/> + </class> + <class name="java/net/CookieStore" since="9"> + <extends name="java/lang/Object"/> + <method name="add(Ljava/net/URI;Ljava/net/HttpCookie;)V"/> + <method name="get(Ljava/net/URI;)Ljava/util/List;"/> + <method name="getCookies()Ljava/util/List;"/> + <method name="getURIs()Ljava/util/List;"/> + <method name="remove(Ljava/net/URI;Ljava/net/HttpCookie;)Z"/> + <method name="removeAll()Z"/> + </class> + <class name="java/net/DatagramPacket" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>([BI)V"/> + <method name="<init>([BII)V"/> + <method name="<init>([BIILjava/net/InetAddress;I)V"/> + <method name="<init>([BIILjava/net/SocketAddress;)V"/> + <method name="<init>([BILjava/net/InetAddress;I)V"/> + <method name="<init>([BILjava/net/SocketAddress;)V"/> + <method name="getAddress()Ljava/net/InetAddress;"/> + <method name="getData()[B"/> + <method name="getLength()I"/> + <method name="getOffset()I"/> + <method name="getPort()I"/> + <method name="getSocketAddress()Ljava/net/SocketAddress;"/> + <method name="setAddress(Ljava/net/InetAddress;)V"/> + <method name="setData([B)V"/> + <method name="setData([BII)V"/> + <method name="setLength(I)V"/> + <method name="setPort(I)V"/> + <method name="setSocketAddress(Ljava/net/SocketAddress;)V"/> + </class> + <class name="java/net/DatagramSocket" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable" since="19"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(ILjava/net/InetAddress;)V"/> + <method name="<init>(Ljava/net/DatagramSocketImpl;)V"/> + <method name="<init>(Ljava/net/SocketAddress;)V"/> + <method name="bind(Ljava/net/SocketAddress;)V"/> + <method name="close()V"/> + <method name="connect(Ljava/net/InetAddress;I)V"/> + <method name="connect(Ljava/net/SocketAddress;)V"/> + <method name="disconnect()V"/> + <method name="getBroadcast()Z"/> + <method name="getChannel()Ljava/nio/channels/DatagramChannel;"/> + <method name="getInetAddress()Ljava/net/InetAddress;"/> + <method name="getLocalAddress()Ljava/net/InetAddress;"/> + <method name="getLocalPort()I"/> + <method name="getLocalSocketAddress()Ljava/net/SocketAddress;"/> + <method name="getPort()I"/> + <method name="getReceiveBufferSize()I"/> + <method name="getRemoteSocketAddress()Ljava/net/SocketAddress;"/> + <method name="getReuseAddress()Z"/> + <method name="getSendBufferSize()I"/> + <method name="getSoTimeout()I"/> + <method name="getTrafficClass()I"/> + <method name="isBound()Z"/> + <method name="isClosed()Z"/> + <method name="isConnected()Z"/> + <method name="receive(Ljava/net/DatagramPacket;)V"/> + <method name="send(Ljava/net/DatagramPacket;)V"/> + <method name="setBroadcast(Z)V"/> + <method name="setDatagramSocketImplFactory(Ljava/net/DatagramSocketImplFactory;)V"/> + <method name="setReceiveBufferSize(I)V"/> + <method name="setReuseAddress(Z)V"/> + <method name="setSendBufferSize(I)V"/> + <method name="setSoTimeout(I)V"/> + <method name="setTrafficClass(I)V"/> + </class> + <class name="java/net/DatagramSocketImpl" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/net/SocketOptions"/> + <method name="<init>()V"/> + <method name="bind(ILjava/net/InetAddress;)V"/> + <method name="close()V"/> + <method name="connect(Ljava/net/InetAddress;I)V"/> + <method name="create()V"/> + <method name="disconnect()V"/> + <method name="getFileDescriptor()Ljava/io/FileDescriptor;"/> + <method name="getLocalPort()I"/> + <method name="getTTL()B" deprecated="16"/> + <method name="getTimeToLive()I"/> + <method name="join(Ljava/net/InetAddress;)V"/> + <method name="joinGroup(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V"/> + <method name="leave(Ljava/net/InetAddress;)V"/> + <method name="leaveGroup(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V"/> + <method name="peek(Ljava/net/InetAddress;)I"/> + <method name="peekData(Ljava/net/DatagramPacket;)I"/> + <method name="receive(Ljava/net/DatagramPacket;)V"/> + <method name="send(Ljava/net/DatagramPacket;)V"/> + <method name="setTTL(B)V" deprecated="16"/> + <method name="setTimeToLive(I)V"/> + <field name="fd"/> + <field name="localPort"/> + </class> + <class name="java/net/DatagramSocketImplFactory" since="1"> + <extends name="java/lang/Object"/> + <method name="createDatagramSocketImpl()Ljava/net/DatagramSocketImpl;"/> + </class> + <class name="java/net/FileNameMap" since="1"> + <extends name="java/lang/Object"/> + <method name="getContentTypeFor(Ljava/lang/String;)Ljava/lang/String;"/> + </class> + <class name="java/net/HttpCookie" since="9"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="domainMatches(Ljava/lang/String;Ljava/lang/String;)Z"/> + <method name="getComment()Ljava/lang/String;"/> + <method name="getCommentURL()Ljava/lang/String;"/> + <method name="getDiscard()Z"/> + <method name="getDomain()Ljava/lang/String;"/> + <method name="getMaxAge()J"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getPath()Ljava/lang/String;"/> + <method name="getPortlist()Ljava/lang/String;"/> + <method name="getSecure()Z"/> + <method name="getValue()Ljava/lang/String;"/> + <method name="getVersion()I"/> + <method name="hasExpired()Z"/> + <method name="isHttpOnly()Z" since="24"/> + <method name="parse(Ljava/lang/String;)Ljava/util/List;"/> + <method name="setComment(Ljava/lang/String;)V"/> + <method name="setCommentURL(Ljava/lang/String;)V"/> + <method name="setDiscard(Z)V"/> + <method name="setDomain(Ljava/lang/String;)V"/> + <method name="setHttpOnly(Z)V" since="24"/> + <method name="setMaxAge(J)V"/> + <method name="setPath(Ljava/lang/String;)V"/> + <method name="setPortlist(Ljava/lang/String;)V"/> + <method name="setSecure(Z)V"/> + <method name="setValue(Ljava/lang/String;)V"/> + <method name="setVersion(I)V"/> + </class> + <class name="java/net/HttpRetryException" since="1"> + <extends name="java/io/IOException"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="<init>(Ljava/lang/String;ILjava/lang/String;)V"/> + <method name="getLocation()Ljava/lang/String;"/> + <method name="getReason()Ljava/lang/String;"/> + <method name="responseCode()I"/> + </class> + <class name="java/net/HttpURLConnection" since="1"> + <extends name="java/net/URLConnection"/> + <method name="<init>(Ljava/net/URL;)V"/> + <method name="disconnect()V"/> + <method name="getErrorStream()Ljava/io/InputStream;"/> + <method name="getFollowRedirects()Z"/> + <method name="getInstanceFollowRedirects()Z"/> + <method name="getRequestMethod()Ljava/lang/String;"/> + <method name="getResponseCode()I"/> + <method name="getResponseMessage()Ljava/lang/String;"/> + <method name="setChunkedStreamingMode(I)V"/> + <method name="setFixedLengthStreamingMode(I)V"/> + <method name="setFixedLengthStreamingMode(J)V" since="19"/> + <method name="setFollowRedirects(Z)V"/> + <method name="setInstanceFollowRedirects(Z)V"/> + <method name="setRequestMethod(Ljava/lang/String;)V"/> + <method name="usingProxy()Z"/> + <field name="HTTP_ACCEPTED"/> + <field name="HTTP_BAD_GATEWAY"/> + <field name="HTTP_BAD_METHOD"/> + <field name="HTTP_BAD_REQUEST"/> + <field name="HTTP_CLIENT_TIMEOUT"/> + <field name="HTTP_CONFLICT"/> + <field name="HTTP_CREATED"/> + <field name="HTTP_ENTITY_TOO_LARGE"/> + <field name="HTTP_FORBIDDEN"/> + <field name="HTTP_GATEWAY_TIMEOUT"/> + <field name="HTTP_GONE"/> + <field name="HTTP_INTERNAL_ERROR"/> + <field name="HTTP_LENGTH_REQUIRED"/> + <field name="HTTP_MOVED_PERM"/> + <field name="HTTP_MOVED_TEMP"/> + <field name="HTTP_MULT_CHOICE"/> + <field name="HTTP_NOT_ACCEPTABLE"/> + <field name="HTTP_NOT_AUTHORITATIVE"/> + <field name="HTTP_NOT_FOUND"/> + <field name="HTTP_NOT_IMPLEMENTED"/> + <field name="HTTP_NOT_MODIFIED"/> + <field name="HTTP_NO_CONTENT"/> + <field name="HTTP_OK"/> + <field name="HTTP_PARTIAL"/> + <field name="HTTP_PAYMENT_REQUIRED"/> + <field name="HTTP_PRECON_FAILED"/> + <field name="HTTP_PROXY_AUTH"/> + <field name="HTTP_REQ_TOO_LONG"/> + <field name="HTTP_RESET"/> + <field name="HTTP_SEE_OTHER"/> + <field name="HTTP_SERVER_ERROR" deprecated="16"/> + <field name="HTTP_UNAUTHORIZED"/> + <field name="HTTP_UNAVAILABLE"/> + <field name="HTTP_UNSUPPORTED_TYPE"/> + <field name="HTTP_USE_PROXY"/> + <field name="HTTP_VERSION"/> + <field name="chunkLength"/> + <field name="fixedContentLength"/> + <field name="fixedContentLengthLong" since="19"/> + <field name="instanceFollowRedirects"/> + <field name="method"/> + <field name="responseCode"/> + <field name="responseMessage"/> + </class> + <class name="java/net/IDN" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="toASCII(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="toASCII(Ljava/lang/String;I)Ljava/lang/String;"/> + <method name="toUnicode(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="toUnicode(Ljava/lang/String;I)Ljava/lang/String;"/> + <field name="ALLOW_UNASSIGNED"/> + <field name="USE_STD3_ASCII_RULES"/> + </class> + <class name="java/net/Inet4Address" since="1"> + <extends name="java/net/InetAddress"/> + <method name="<init>()V"/> + </class> + <class name="java/net/Inet6Address" since="1"> + <extends name="java/net/InetAddress"/> + <method name="<init>()V"/> + <method name="getByAddress(Ljava/lang/String;[BI)Ljava/net/Inet6Address;"/> + <method name="getByAddress(Ljava/lang/String;[BLjava/net/NetworkInterface;)Ljava/net/Inet6Address;"/> + <method name="getScopeId()I"/> + <method name="getScopedInterface()Ljava/net/NetworkInterface;"/> + <method name="isIPv4CompatibleAddress()Z"/> + </class> + <class name="java/net/InetAddress" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="getAddress()[B"/> + <method name="getAllByName(Ljava/lang/String;)[Ljava/net/InetAddress;"/> + <method name="getByAddress(Ljava/lang/String;[B)Ljava/net/InetAddress;"/> + <method name="getByAddress([B)Ljava/net/InetAddress;"/> + <method name="getByName(Ljava/lang/String;)Ljava/net/InetAddress;"/> + <method name="getCanonicalHostName()Ljava/lang/String;"/> + <method name="getHostAddress()Ljava/lang/String;"/> + <method name="getHostName()Ljava/lang/String;"/> + <method name="getLocalHost()Ljava/net/InetAddress;"/> + <method name="getLoopbackAddress()Ljava/net/InetAddress;" since="19"/> + <method name="isAnyLocalAddress()Z"/> + <method name="isLinkLocalAddress()Z"/> + <method name="isLoopbackAddress()Z"/> + <method name="isMCGlobal()Z"/> + <method name="isMCLinkLocal()Z"/> + <method name="isMCNodeLocal()Z"/> + <method name="isMCOrgLocal()Z"/> + <method name="isMCSiteLocal()Z"/> + <method name="isMulticastAddress()Z"/> + <method name="isReachable(I)Z"/> + <method name="isReachable(Ljava/net/NetworkInterface;II)Z"/> + <method name="isSiteLocalAddress()Z"/> + </class> + <class name="java/net/InetSocketAddress" since="1"> + <extends name="java/net/SocketAddress"/> + <method name="<init>(I)V"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="<init>(Ljava/net/InetAddress;I)V"/> + <method name="createUnresolved(Ljava/lang/String;I)Ljava/net/InetSocketAddress;"/> + <method name="getAddress()Ljava/net/InetAddress;"/> + <method name="getHostName()Ljava/lang/String;"/> + <method name="getHostString()Ljava/lang/String;" since="19"/> + <method name="getPort()I"/> + <method name="isUnresolved()Z"/> + </class> + <class name="java/net/InterfaceAddress" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAddress()Ljava/net/InetAddress;"/> + <method name="getBroadcast()Ljava/net/InetAddress;"/> + <method name="getNetworkPrefixLength()S"/> + </class> + <class name="java/net/JarURLConnection" since="1"> + <extends name="java/net/URLConnection"/> + <method name="<init>(Ljava/net/URL;)V"/> + <method name="getAttributes()Ljava/util/jar/Attributes;"/> + <method name="getCertificates()[Ljava/security/cert/Certificate;"/> + <method name="getEntryName()Ljava/lang/String;"/> + <method name="getJarEntry()Ljava/util/jar/JarEntry;"/> + <method name="getJarFile()Ljava/util/jar/JarFile;"/> + <method name="getJarFileURL()Ljava/net/URL;"/> + <method name="getMainAttributes()Ljava/util/jar/Attributes;"/> + <method name="getManifest()Ljava/util/jar/Manifest;"/> + <field name="jarFileURLConnection"/> + </class> + <class name="java/net/MalformedURLException" since="1"> + <extends name="java/io/IOException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/net/MulticastSocket" since="1"> + <extends name="java/net/DatagramSocket"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(Ljava/net/SocketAddress;)V"/> + <method name="getInterface()Ljava/net/InetAddress;"/> + <method name="getLoopbackMode()Z"/> + <method name="getNetworkInterface()Ljava/net/NetworkInterface;"/> + <method name="getTTL()B" deprecated="16"/> + <method name="getTimeToLive()I"/> + <method name="joinGroup(Ljava/net/InetAddress;)V"/> + <method name="joinGroup(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V"/> + <method name="leaveGroup(Ljava/net/InetAddress;)V"/> + <method name="leaveGroup(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V"/> + <method name="send(Ljava/net/DatagramPacket;B)V" deprecated="16"/> + <method name="setInterface(Ljava/net/InetAddress;)V"/> + <method name="setLoopbackMode(Z)V"/> + <method name="setNetworkInterface(Ljava/net/NetworkInterface;)V"/> + <method name="setTTL(B)V" deprecated="16"/> + <method name="setTimeToLive(I)V"/> + </class> + <class name="java/net/NetPermission" since="1"> + <extends name="java/security/BasicPermission"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="java/net/NetworkInterface" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getByIndex(I)Ljava/net/NetworkInterface;" since="19"/> + <method name="getByInetAddress(Ljava/net/InetAddress;)Ljava/net/NetworkInterface;"/> + <method name="getByName(Ljava/lang/String;)Ljava/net/NetworkInterface;"/> + <method name="getDisplayName()Ljava/lang/String;"/> + <method name="getHardwareAddress()[B" since="9"/> + <method name="getIndex()I" since="19"/> + <method name="getInetAddresses()Ljava/util/Enumeration;"/> + <method name="getInterfaceAddresses()Ljava/util/List;" since="9"/> + <method name="getMTU()I" since="9"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getNetworkInterfaces()Ljava/util/Enumeration;"/> + <method name="getParent()Ljava/net/NetworkInterface;" since="9"/> + <method name="getSubInterfaces()Ljava/util/Enumeration;" since="9"/> + <method name="isLoopback()Z" since="9"/> + <method name="isPointToPoint()Z" since="9"/> + <method name="isUp()Z" since="9"/> + <method name="isVirtual()Z" since="9"/> + <method name="supportsMulticast()Z" since="9"/> + </class> + <class name="java/net/NoRouteToHostException" since="1"> + <extends name="java/net/SocketException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/net/PasswordAuthentication" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;[C)V"/> + <method name="getPassword()[C"/> + <method name="getUserName()Ljava/lang/String;"/> + </class> + <class name="java/net/PortUnreachableException" since="1"> + <extends name="java/net/SocketException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/net/ProtocolException" since="1"> + <extends name="java/io/IOException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/net/ProtocolFamily" since="24"> + <extends name="java/lang/Object"/> + <method name="name()Ljava/lang/String;"/> + </class> + <class name="java/net/Proxy" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/net/Proxy$Type;Ljava/net/SocketAddress;)V"/> + <method name="address()Ljava/net/SocketAddress;"/> + <method name="type()Ljava/net/Proxy$Type;"/> + <field name="NO_PROXY"/> + </class> + <class name="java/net/Proxy$Type" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/net/Proxy$Type;"/> + <method name="values()[Ljava/net/Proxy$Type;"/> + <field name="DIRECT"/> + <field name="HTTP"/> + <field name="SOCKS"/> + </class> + <class name="java/net/ProxySelector" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="connectFailed(Ljava/net/URI;Ljava/net/SocketAddress;Ljava/io/IOException;)V"/> + <method name="getDefault()Ljava/net/ProxySelector;"/> + <method name="select(Ljava/net/URI;)Ljava/util/List;"/> + <method name="setDefault(Ljava/net/ProxySelector;)V"/> + </class> + <class name="java/net/ResponseCache" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="get(Ljava/net/URI;Ljava/lang/String;Ljava/util/Map;)Ljava/net/CacheResponse;"/> + <method name="getDefault()Ljava/net/ResponseCache;"/> + <method name="put(Ljava/net/URI;Ljava/net/URLConnection;)Ljava/net/CacheRequest;"/> + <method name="setDefault(Ljava/net/ResponseCache;)V"/> + </class> + <class name="java/net/SecureCacheResponse" since="1"> + <extends name="java/net/CacheResponse"/> + <method name="<init>()V"/> + <method name="getCipherSuite()Ljava/lang/String;"/> + <method name="getLocalCertificateChain()Ljava/util/List;"/> + <method name="getLocalPrincipal()Ljava/security/Principal;"/> + <method name="getPeerPrincipal()Ljava/security/Principal;"/> + <method name="getServerCertificateChain()Ljava/util/List;"/> + </class> + <class name="java/net/ServerSocket" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable" since="19"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(II)V"/> + <method name="<init>(IILjava/net/InetAddress;)V"/> + <method name="<init>(Ljava/net/SocketImpl;)V" removed="2"/> + <method name="accept()Ljava/net/Socket;"/> + <method name="bind(Ljava/net/SocketAddress;)V"/> + <method name="bind(Ljava/net/SocketAddress;I)V"/> + <method name="close()V"/> + <method name="getChannel()Ljava/nio/channels/ServerSocketChannel;"/> + <method name="getInetAddress()Ljava/net/InetAddress;"/> + <method name="getLocalPort()I"/> + <method name="getLocalSocketAddress()Ljava/net/SocketAddress;"/> + <method name="getReceiveBufferSize()I"/> + <method name="getReuseAddress()Z"/> + <method name="getSoTimeout()I"/> + <method name="implAccept(Ljava/net/Socket;)V"/> + <method name="isBound()Z"/> + <method name="isClosed()Z"/> + <method name="setPerformancePreferences(III)V"/> + <method name="setReceiveBufferSize(I)V"/> + <method name="setReuseAddress(Z)V"/> + <method name="setSoTimeout(I)V"/> + <method name="setSocketFactory(Ljava/net/SocketImplFactory;)V"/> + </class> + <class name="java/net/Socket" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable" since="19"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="<init>(Ljava/lang/String;ILjava/net/InetAddress;I)V"/> + <method name="<init>(Ljava/lang/String;IZ)V" deprecated="16"/> + <method name="<init>(Ljava/net/InetAddress;I)V"/> + <method name="<init>(Ljava/net/InetAddress;ILjava/net/InetAddress;I)V"/> + <method name="<init>(Ljava/net/InetAddress;IZ)V" deprecated="16"/> + <method name="<init>(Ljava/net/Proxy;)V"/> + <method name="<init>(Ljava/net/SocketImpl;)V"/> + <method name="bind(Ljava/net/SocketAddress;)V"/> + <method name="close()V"/> + <method name="connect(Ljava/net/SocketAddress;)V"/> + <method name="connect(Ljava/net/SocketAddress;I)V"/> + <method name="getChannel()Ljava/nio/channels/SocketChannel;"/> + <method name="getInetAddress()Ljava/net/InetAddress;"/> + <method name="getInputStream()Ljava/io/InputStream;"/> + <method name="getKeepAlive()Z"/> + <method name="getLocalAddress()Ljava/net/InetAddress;"/> + <method name="getLocalPort()I"/> + <method name="getLocalSocketAddress()Ljava/net/SocketAddress;"/> + <method name="getOOBInline()Z"/> + <method name="getOutputStream()Ljava/io/OutputStream;"/> + <method name="getPort()I"/> + <method name="getReceiveBufferSize()I"/> + <method name="getRemoteSocketAddress()Ljava/net/SocketAddress;"/> + <method name="getReuseAddress()Z"/> + <method name="getSendBufferSize()I"/> + <method name="getSoLinger()I"/> + <method name="getSoTimeout()I"/> + <method name="getTcpNoDelay()Z"/> + <method name="getTrafficClass()I"/> + <method name="isBound()Z"/> + <method name="isClosed()Z"/> + <method name="isConnected()Z"/> + <method name="isInputShutdown()Z"/> + <method name="isOutputShutdown()Z"/> + <method name="sendUrgentData(I)V"/> + <method name="setKeepAlive(Z)V"/> + <method name="setOOBInline(Z)V"/> + <method name="setPerformancePreferences(III)V"/> + <method name="setReceiveBufferSize(I)V"/> + <method name="setReuseAddress(Z)V"/> + <method name="setSendBufferSize(I)V"/> + <method name="setSoLinger(ZI)V"/> + <method name="setSoTimeout(I)V"/> + <method name="setSocketImplFactory(Ljava/net/SocketImplFactory;)V"/> + <method name="setTcpNoDelay(Z)V"/> + <method name="setTrafficClass(I)V"/> + <method name="shutdownInput()V"/> + <method name="shutdownOutput()V"/> + </class> + <class name="java/net/SocketAddress" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + </class> + <class name="java/net/SocketException" since="1"> + <extends name="java/io/IOException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/net/SocketImpl" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/net/SocketOptions"/> + <method name="<init>()V"/> + <method name="accept(Ljava/net/SocketImpl;)V"/> + <method name="available()I"/> + <method name="bind(Ljava/net/InetAddress;I)V"/> + <method name="close()V"/> + <method name="connect(Ljava/lang/String;I)V"/> + <method name="connect(Ljava/net/InetAddress;I)V"/> + <method name="connect(Ljava/net/SocketAddress;I)V"/> + <method name="create(Z)V"/> + <method name="getFileDescriptor()Ljava/io/FileDescriptor;"/> + <method name="getInetAddress()Ljava/net/InetAddress;"/> + <method name="getInputStream()Ljava/io/InputStream;"/> + <method name="getLocalPort()I"/> + <method name="getOutputStream()Ljava/io/OutputStream;"/> + <method name="getPort()I"/> + <method name="listen(I)V"/> + <method name="sendUrgentData(I)V"/> + <method name="setPerformancePreferences(III)V"/> + <method name="shutdownInput()V"/> + <method name="shutdownOutput()V"/> + <method name="supportsUrgentData()Z"/> + <field name="address"/> + <field name="fd"/> + <field name="localport"/> + <field name="port"/> + </class> + <class name="java/net/SocketImplFactory" since="1"> + <extends name="java/lang/Object"/> + <method name="createSocketImpl()Ljava/net/SocketImpl;"/> + </class> + <class name="java/net/SocketOption" since="24"> + <extends name="java/lang/Object"/> + <method name="name()Ljava/lang/String;"/> + <method name="type()Ljava/lang/Class;"/> + </class> + <class name="java/net/SocketOptions" since="1"> + <extends name="java/lang/Object"/> + <method name="getOption(I)Ljava/lang/Object;"/> + <method name="setOption(ILjava/lang/Object;)V"/> + <field name="IP_MULTICAST_IF"/> + <field name="IP_MULTICAST_IF2"/> + <field name="IP_MULTICAST_LOOP"/> + <field name="IP_TOS"/> + <field name="SO_BINDADDR"/> + <field name="SO_BROADCAST"/> + <field name="SO_KEEPALIVE"/> + <field name="SO_LINGER"/> + <field name="SO_OOBINLINE"/> + <field name="SO_RCVBUF"/> + <field name="SO_REUSEADDR"/> + <field name="SO_SNDBUF"/> + <field name="SO_TIMEOUT"/> + <field name="TCP_NODELAY"/> + </class> + <class name="java/net/SocketPermission" since="1"> + <extends name="java/security/Permission"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="java/net/SocketTimeoutException" since="1"> + <extends name="java/io/InterruptedIOException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/net/StandardProtocolFamily" since="24"> + <extends name="java/lang/Enum"/> + <implements name="java/net/ProtocolFamily"/> + <method name="valueOf(Ljava/lang/String;)Ljava/net/StandardProtocolFamily;"/> + <method name="values()[Ljava/net/StandardProtocolFamily;"/> + <field name="INET"/> + <field name="INET6"/> + </class> + <class name="java/net/StandardSocketOptions" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="IP_MULTICAST_IF"/> + <field name="IP_MULTICAST_LOOP"/> + <field name="IP_MULTICAST_TTL"/> + <field name="IP_TOS"/> + <field name="SO_BROADCAST"/> + <field name="SO_KEEPALIVE"/> + <field name="SO_LINGER"/> + <field name="SO_RCVBUF"/> + <field name="SO_REUSEADDR"/> + <field name="SO_SNDBUF"/> + <field name="TCP_NODELAY"/> + </class> + <class name="java/net/URI" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Comparable"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="compareTo(Ljava/net/URI;)I"/> + <method name="create(Ljava/lang/String;)Ljava/net/URI;"/> + <method name="getAuthority()Ljava/lang/String;"/> + <method name="getFragment()Ljava/lang/String;"/> + <method name="getHost()Ljava/lang/String;"/> + <method name="getPath()Ljava/lang/String;"/> + <method name="getPort()I"/> + <method name="getQuery()Ljava/lang/String;"/> + <method name="getRawAuthority()Ljava/lang/String;"/> + <method name="getRawFragment()Ljava/lang/String;"/> + <method name="getRawPath()Ljava/lang/String;"/> + <method name="getRawQuery()Ljava/lang/String;"/> + <method name="getRawSchemeSpecificPart()Ljava/lang/String;"/> + <method name="getRawUserInfo()Ljava/lang/String;"/> + <method name="getScheme()Ljava/lang/String;"/> + <method name="getSchemeSpecificPart()Ljava/lang/String;"/> + <method name="getUserInfo()Ljava/lang/String;"/> + <method name="isAbsolute()Z"/> + <method name="isOpaque()Z"/> + <method name="normalize()Ljava/net/URI;"/> + <method name="parseServerAuthority()Ljava/net/URI;"/> + <method name="relativize(Ljava/net/URI;)Ljava/net/URI;"/> + <method name="resolve(Ljava/lang/String;)Ljava/net/URI;"/> + <method name="resolve(Ljava/net/URI;)Ljava/net/URI;"/> + <method name="toASCIIString()Ljava/lang/String;"/> + <method name="toURL()Ljava/net/URL;"/> + </class> + <class name="java/net/URISyntaxException" since="1"> + <extends name="java/lang/Exception"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;I)V"/> + <method name="getIndex()I"/> + <method name="getInput()Ljava/lang/String;"/> + <method name="getReason()Ljava/lang/String;"/> + </class> + <class name="java/net/URL" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/net/URLStreamHandler;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/net/URL;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/net/URL;Ljava/lang/String;Ljava/net/URLStreamHandler;)V"/> + <method name="getAuthority()Ljava/lang/String;"/> + <method name="getContent()Ljava/lang/Object;"/> + <method name="getContent([Ljava/lang/Class;)Ljava/lang/Object;"/> + <method name="getDefaultPort()I"/> + <method name="getFile()Ljava/lang/String;"/> + <method name="getHost()Ljava/lang/String;"/> + <method name="getPath()Ljava/lang/String;"/> + <method name="getPort()I"/> + <method name="getProtocol()Ljava/lang/String;"/> + <method name="getQuery()Ljava/lang/String;"/> + <method name="getRef()Ljava/lang/String;"/> + <method name="getUserInfo()Ljava/lang/String;"/> + <method name="openConnection()Ljava/net/URLConnection;"/> + <method name="openConnection(Ljava/net/Proxy;)Ljava/net/URLConnection;"/> + <method name="openStream()Ljava/io/InputStream;"/> + <method name="sameFile(Ljava/net/URL;)Z"/> + <method name="set(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V" removed="26"/> + <method name="set(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" removed="26"/> + <method name="setURLStreamHandlerFactory(Ljava/net/URLStreamHandlerFactory;)V"/> + <method name="toExternalForm()Ljava/lang/String;"/> + <method name="toURI()Ljava/net/URI;"/> + </class> + <class name="java/net/URLClassLoader" since="1"> + <extends name="java/security/SecureClassLoader"/> + <implements name="java/io/Closeable" since="24"/> + <method name="<init>([Ljava/net/URL;)V"/> + <method name="<init>([Ljava/net/URL;Ljava/lang/ClassLoader;)V"/> + <method name="<init>([Ljava/net/URL;Ljava/lang/ClassLoader;Ljava/net/URLStreamHandlerFactory;)V"/> + <method name="addURL(Ljava/net/URL;)V"/> + <method name="definePackage(Ljava/lang/String;Ljava/util/jar/Manifest;Ljava/net/URL;)Ljava/lang/Package;"/> + <method name="getURLs()[Ljava/net/URL;"/> + <method name="newInstance([Ljava/net/URL;)Ljava/net/URLClassLoader;"/> + <method name="newInstance([Ljava/net/URL;Ljava/lang/ClassLoader;)Ljava/net/URLClassLoader;"/> + </class> + <class name="java/net/URLConnection" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/net/URL;)V"/> + <method name="addRequestProperty(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="connect()V"/> + <method name="getAllowUserInteraction()Z"/> + <method name="getConnectTimeout()I"/> + <method name="getContent()Ljava/lang/Object;"/> + <method name="getContent([Ljava/lang/Class;)Ljava/lang/Object;"/> + <method name="getContentEncoding()Ljava/lang/String;"/> + <method name="getContentLength()I"/> + <method name="getContentLengthLong()J" since="24"/> + <method name="getContentType()Ljava/lang/String;"/> + <method name="getDate()J"/> + <method name="getDefaultAllowUserInteraction()Z"/> + <method name="getDefaultRequestProperty(Ljava/lang/String;)Ljava/lang/String;" deprecated="16"/> + <method name="getDefaultUseCaches()Z"/> + <method name="getDoInput()Z"/> + <method name="getDoOutput()Z"/> + <method name="getExpiration()J"/> + <method name="getFileNameMap()Ljava/net/FileNameMap;"/> + <method name="getHeaderField(I)Ljava/lang/String;"/> + <method name="getHeaderField(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getHeaderFieldDate(Ljava/lang/String;J)J"/> + <method name="getHeaderFieldInt(Ljava/lang/String;I)I"/> + <method name="getHeaderFieldKey(I)Ljava/lang/String;"/> + <method name="getHeaderFieldLong(Ljava/lang/String;J)J" since="24"/> + <method name="getHeaderFields()Ljava/util/Map;"/> + <method name="getIfModifiedSince()J"/> + <method name="getInputStream()Ljava/io/InputStream;"/> + <method name="getLastModified()J"/> + <method name="getOutputStream()Ljava/io/OutputStream;"/> + <method name="getPermission()Ljava/security/Permission;"/> + <method name="getReadTimeout()I"/> + <method name="getRequestProperties()Ljava/util/Map;"/> + <method name="getRequestProperty(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getURL()Ljava/net/URL;"/> + <method name="getUseCaches()Z"/> + <method name="guessContentTypeFromName(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="guessContentTypeFromStream(Ljava/io/InputStream;)Ljava/lang/String;"/> + <method name="setAllowUserInteraction(Z)V"/> + <method name="setConnectTimeout(I)V"/> + <method name="setContentHandlerFactory(Ljava/net/ContentHandlerFactory;)V"/> + <method name="setDefaultAllowUserInteraction(Z)V"/> + <method name="setDefaultRequestProperty(Ljava/lang/String;Ljava/lang/String;)V" deprecated="16"/> + <method name="setDefaultUseCaches(Z)V"/> + <method name="setDoInput(Z)V"/> + <method name="setDoOutput(Z)V"/> + <method name="setFileNameMap(Ljava/net/FileNameMap;)V"/> + <method name="setIfModifiedSince(J)V"/> + <method name="setReadTimeout(I)V"/> + <method name="setRequestProperty(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="setUseCaches(Z)V"/> + <field name="allowUserInteraction"/> + <field name="connected"/> + <field name="doInput"/> + <field name="doOutput"/> + <field name="ifModifiedSince"/> + <field name="url"/> + <field name="useCaches"/> + </class> + <class name="java/net/URLDecoder" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="decode(Ljava/lang/String;)Ljava/lang/String;" deprecated="16"/> + <method name="decode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + </class> + <class name="java/net/URLEncoder" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="encode(Ljava/lang/String;)Ljava/lang/String;" deprecated="16"/> + <method name="encode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + </class> + <class name="java/net/URLStreamHandler" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="equals(Ljava/net/URL;Ljava/net/URL;)Z"/> + <method name="getDefaultPort()I"/> + <method name="getHostAddress(Ljava/net/URL;)Ljava/net/InetAddress;"/> + <method name="hashCode(Ljava/net/URL;)I"/> + <method name="hostsEqual(Ljava/net/URL;Ljava/net/URL;)Z"/> + <method name="openConnection(Ljava/net/URL;)Ljava/net/URLConnection;"/> + <method name="openConnection(Ljava/net/URL;Ljava/net/Proxy;)Ljava/net/URLConnection;"/> + <method name="parseURL(Ljava/net/URL;Ljava/lang/String;II)V"/> + <method name="sameFile(Ljava/net/URL;Ljava/net/URL;)Z"/> + <method name="setURL(Ljava/net/URL;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V" deprecated="16"/> + <method name="setURL(Ljava/net/URL;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="toExternalForm(Ljava/net/URL;)Ljava/lang/String;"/> + </class> + <class name="java/net/URLStreamHandlerFactory" since="1"> + <extends name="java/lang/Object"/> + <method name="createURLStreamHandler(Ljava/lang/String;)Ljava/net/URLStreamHandler;"/> + </class> + <class name="java/net/UnknownHostException" since="1"> + <extends name="java/io/IOException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/net/UnknownServiceException" since="1"> + <extends name="java/io/IOException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/nio/Buffer" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="array()Ljava/lang/Object;" since="9"/> + <method name="arrayOffset()I" since="9"/> + <method name="capacity()I"/> + <method name="clear()Ljava/nio/Buffer;"/> + <method name="flip()Ljava/nio/Buffer;"/> + <method name="hasArray()Z" since="9"/> + <method name="hasRemaining()Z"/> + <method name="isDirect()Z" since="9"/> + <method name="isReadOnly()Z"/> + <method name="limit()I"/> + <method name="limit(I)Ljava/nio/Buffer;"/> + <method name="mark()Ljava/nio/Buffer;"/> + <method name="position()I"/> + <method name="position(I)Ljava/nio/Buffer;"/> + <method name="remaining()I"/> + <method name="reset()Ljava/nio/Buffer;"/> + <method name="rewind()Ljava/nio/Buffer;"/> + </class> + <class name="java/nio/BufferOverflowException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/BufferUnderflowException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/ByteBuffer" since="1"> + <extends name="java/nio/Buffer"/> + <implements name="java/lang/Comparable"/> + <method name="<init>()V"/> + <method name="allocate(I)Ljava/nio/ByteBuffer;"/> + <method name="allocateDirect(I)Ljava/nio/ByteBuffer;"/> + <method name="array()[B"/> + <method name="arrayOffset()I"/> + <method name="asCharBuffer()Ljava/nio/CharBuffer;"/> + <method name="asDoubleBuffer()Ljava/nio/DoubleBuffer;"/> + <method name="asFloatBuffer()Ljava/nio/FloatBuffer;"/> + <method name="asIntBuffer()Ljava/nio/IntBuffer;"/> + <method name="asLongBuffer()Ljava/nio/LongBuffer;"/> + <method name="asReadOnlyBuffer()Ljava/nio/ByteBuffer;"/> + <method name="asShortBuffer()Ljava/nio/ShortBuffer;"/> + <method name="compact()Ljava/nio/ByteBuffer;"/> + <method name="compareTo(Ljava/nio/ByteBuffer;)I"/> + <method name="duplicate()Ljava/nio/ByteBuffer;"/> + <method name="get()B"/> + <method name="get(I)B"/> + <method name="get([B)Ljava/nio/ByteBuffer;"/> + <method name="get([BII)Ljava/nio/ByteBuffer;"/> + <method name="getChar()C"/> + <method name="getChar(I)C"/> + <method name="getDouble()D"/> + <method name="getDouble(I)D"/> + <method name="getFloat()F"/> + <method name="getFloat(I)F"/> + <method name="getInt()I"/> + <method name="getInt(I)I"/> + <method name="getLong()J"/> + <method name="getLong(I)J"/> + <method name="getShort()S"/> + <method name="getShort(I)S"/> + <method name="hasArray()Z"/> + <method name="isDirect()Z"/> + <method name="order()Ljava/nio/ByteOrder;"/> + <method name="order(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;"/> + <method name="put(B)Ljava/nio/ByteBuffer;"/> + <method name="put(IB)Ljava/nio/ByteBuffer;"/> + <method name="put(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;"/> + <method name="put([B)Ljava/nio/ByteBuffer;"/> + <method name="put([BII)Ljava/nio/ByteBuffer;"/> + <method name="putChar(C)Ljava/nio/ByteBuffer;"/> + <method name="putChar(IC)Ljava/nio/ByteBuffer;"/> + <method name="putDouble(D)Ljava/nio/ByteBuffer;"/> + <method name="putDouble(ID)Ljava/nio/ByteBuffer;"/> + <method name="putFloat(F)Ljava/nio/ByteBuffer;"/> + <method name="putFloat(IF)Ljava/nio/ByteBuffer;"/> + <method name="putInt(I)Ljava/nio/ByteBuffer;"/> + <method name="putInt(II)Ljava/nio/ByteBuffer;"/> + <method name="putLong(IJ)Ljava/nio/ByteBuffer;"/> + <method name="putLong(J)Ljava/nio/ByteBuffer;"/> + <method name="putShort(IS)Ljava/nio/ByteBuffer;"/> + <method name="putShort(S)Ljava/nio/ByteBuffer;"/> + <method name="slice()Ljava/nio/ByteBuffer;"/> + <method name="wrap([B)Ljava/nio/ByteBuffer;"/> + <method name="wrap([BII)Ljava/nio/ByteBuffer;"/> + </class> + <class name="java/nio/ByteOrder" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="nativeOrder()Ljava/nio/ByteOrder;"/> + <field name="BIG_ENDIAN"/> + <field name="LITTLE_ENDIAN"/> + </class> + <class name="java/nio/CharBuffer" since="1"> + <extends name="java/nio/Buffer"/> + <implements name="java/lang/Appendable"/> + <implements name="java/lang/CharSequence"/> + <implements name="java/lang/Comparable"/> + <implements name="java/lang/Readable"/> + <method name="<init>()V"/> + <method name="allocate(I)Ljava/nio/CharBuffer;"/> + <method name="append(C)Ljava/nio/CharBuffer;"/> + <method name="append(Ljava/lang/CharSequence;)Ljava/nio/CharBuffer;"/> + <method name="append(Ljava/lang/CharSequence;II)Ljava/nio/CharBuffer;"/> + <method name="array()[C"/> + <method name="arrayOffset()I"/> + <method name="asReadOnlyBuffer()Ljava/nio/CharBuffer;"/> + <method name="compact()Ljava/nio/CharBuffer;"/> + <method name="compareTo(Ljava/nio/CharBuffer;)I"/> + <method name="duplicate()Ljava/nio/CharBuffer;"/> + <method name="get()C"/> + <method name="get(I)C"/> + <method name="get([C)Ljava/nio/CharBuffer;"/> + <method name="get([CII)Ljava/nio/CharBuffer;"/> + <method name="hasArray()Z"/> + <method name="isDirect()Z"/> + <method name="order()Ljava/nio/ByteOrder;"/> + <method name="put(C)Ljava/nio/CharBuffer;"/> + <method name="put(IC)Ljava/nio/CharBuffer;"/> + <method name="put(Ljava/lang/String;)Ljava/nio/CharBuffer;"/> + <method name="put(Ljava/lang/String;II)Ljava/nio/CharBuffer;"/> + <method name="put(Ljava/nio/CharBuffer;)Ljava/nio/CharBuffer;"/> + <method name="put([C)Ljava/nio/CharBuffer;"/> + <method name="put([CII)Ljava/nio/CharBuffer;"/> + <method name="slice()Ljava/nio/CharBuffer;"/> + <method name="subSequence(II)Ljava/nio/CharBuffer;" since="19"/> + <method name="wrap(Ljava/lang/CharSequence;)Ljava/nio/CharBuffer;"/> + <method name="wrap(Ljava/lang/CharSequence;II)Ljava/nio/CharBuffer;"/> + <method name="wrap([C)Ljava/nio/CharBuffer;"/> + <method name="wrap([CII)Ljava/nio/CharBuffer;"/> + </class> + <class name="java/nio/DoubleBuffer" since="1"> + <extends name="java/nio/Buffer"/> + <implements name="java/lang/Comparable"/> + <method name="<init>()V"/> + <method name="allocate(I)Ljava/nio/DoubleBuffer;"/> + <method name="array()[D"/> + <method name="arrayOffset()I"/> + <method name="asReadOnlyBuffer()Ljava/nio/DoubleBuffer;"/> + <method name="compact()Ljava/nio/DoubleBuffer;"/> + <method name="compareTo(Ljava/nio/DoubleBuffer;)I"/> + <method name="duplicate()Ljava/nio/DoubleBuffer;"/> + <method name="get()D"/> + <method name="get(I)D"/> + <method name="get([D)Ljava/nio/DoubleBuffer;"/> + <method name="get([DII)Ljava/nio/DoubleBuffer;"/> + <method name="hasArray()Z"/> + <method name="isDirect()Z"/> + <method name="order()Ljava/nio/ByteOrder;"/> + <method name="put(D)Ljava/nio/DoubleBuffer;"/> + <method name="put(ID)Ljava/nio/DoubleBuffer;"/> + <method name="put(Ljava/nio/DoubleBuffer;)Ljava/nio/DoubleBuffer;"/> + <method name="put([D)Ljava/nio/DoubleBuffer;"/> + <method name="put([DII)Ljava/nio/DoubleBuffer;"/> + <method name="slice()Ljava/nio/DoubleBuffer;"/> + <method name="wrap([D)Ljava/nio/DoubleBuffer;"/> + <method name="wrap([DII)Ljava/nio/DoubleBuffer;"/> + </class> + <class name="java/nio/FloatBuffer" since="1"> + <extends name="java/nio/Buffer"/> + <implements name="java/lang/Comparable"/> + <method name="<init>()V"/> + <method name="allocate(I)Ljava/nio/FloatBuffer;"/> + <method name="array()[F"/> + <method name="arrayOffset()I"/> + <method name="asReadOnlyBuffer()Ljava/nio/FloatBuffer;"/> + <method name="compact()Ljava/nio/FloatBuffer;"/> + <method name="compareTo(Ljava/nio/FloatBuffer;)I"/> + <method name="duplicate()Ljava/nio/FloatBuffer;"/> + <method name="get()F"/> + <method name="get(I)F"/> + <method name="get([F)Ljava/nio/FloatBuffer;"/> + <method name="get([FII)Ljava/nio/FloatBuffer;"/> + <method name="hasArray()Z"/> + <method name="isDirect()Z"/> + <method name="order()Ljava/nio/ByteOrder;"/> + <method name="put(F)Ljava/nio/FloatBuffer;"/> + <method name="put(IF)Ljava/nio/FloatBuffer;"/> + <method name="put(Ljava/nio/FloatBuffer;)Ljava/nio/FloatBuffer;"/> + <method name="put([F)Ljava/nio/FloatBuffer;"/> + <method name="put([FII)Ljava/nio/FloatBuffer;"/> + <method name="slice()Ljava/nio/FloatBuffer;"/> + <method name="wrap([F)Ljava/nio/FloatBuffer;"/> + <method name="wrap([FII)Ljava/nio/FloatBuffer;"/> + </class> + <class name="java/nio/IntBuffer" since="1"> + <extends name="java/nio/Buffer"/> + <implements name="java/lang/Comparable"/> + <method name="<init>()V"/> + <method name="allocate(I)Ljava/nio/IntBuffer;"/> + <method name="array()[I"/> + <method name="arrayOffset()I"/> + <method name="asReadOnlyBuffer()Ljava/nio/IntBuffer;"/> + <method name="compact()Ljava/nio/IntBuffer;"/> + <method name="compareTo(Ljava/nio/IntBuffer;)I"/> + <method name="duplicate()Ljava/nio/IntBuffer;"/> + <method name="get()I"/> + <method name="get(I)I"/> + <method name="get([I)Ljava/nio/IntBuffer;"/> + <method name="get([III)Ljava/nio/IntBuffer;"/> + <method name="hasArray()Z"/> + <method name="isDirect()Z"/> + <method name="order()Ljava/nio/ByteOrder;"/> + <method name="put(I)Ljava/nio/IntBuffer;"/> + <method name="put(II)Ljava/nio/IntBuffer;"/> + <method name="put(Ljava/nio/IntBuffer;)Ljava/nio/IntBuffer;"/> + <method name="put([I)Ljava/nio/IntBuffer;"/> + <method name="put([III)Ljava/nio/IntBuffer;"/> + <method name="slice()Ljava/nio/IntBuffer;"/> + <method name="wrap([I)Ljava/nio/IntBuffer;"/> + <method name="wrap([III)Ljava/nio/IntBuffer;"/> + </class> + <class name="java/nio/InvalidMarkException" since="1"> + <extends name="java/lang/IllegalStateException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/LongBuffer" since="1"> + <extends name="java/nio/Buffer"/> + <implements name="java/lang/Comparable"/> + <method name="<init>()V"/> + <method name="allocate(I)Ljava/nio/LongBuffer;"/> + <method name="array()[J"/> + <method name="arrayOffset()I"/> + <method name="asReadOnlyBuffer()Ljava/nio/LongBuffer;"/> + <method name="compact()Ljava/nio/LongBuffer;"/> + <method name="compareTo(Ljava/nio/LongBuffer;)I"/> + <method name="duplicate()Ljava/nio/LongBuffer;"/> + <method name="get()J"/> + <method name="get(I)J"/> + <method name="get([J)Ljava/nio/LongBuffer;"/> + <method name="get([JII)Ljava/nio/LongBuffer;"/> + <method name="hasArray()Z"/> + <method name="isDirect()Z"/> + <method name="order()Ljava/nio/ByteOrder;"/> + <method name="put(IJ)Ljava/nio/LongBuffer;"/> + <method name="put(J)Ljava/nio/LongBuffer;"/> + <method name="put(Ljava/nio/LongBuffer;)Ljava/nio/LongBuffer;"/> + <method name="put([J)Ljava/nio/LongBuffer;"/> + <method name="put([JII)Ljava/nio/LongBuffer;"/> + <method name="slice()Ljava/nio/LongBuffer;"/> + <method name="wrap([J)Ljava/nio/LongBuffer;"/> + <method name="wrap([JII)Ljava/nio/LongBuffer;"/> + </class> + <class name="java/nio/MappedByteBuffer" since="1"> + <extends name="java/nio/ByteBuffer"/> + <method name="<init>()V"/> + <method name="force()Ljava/nio/MappedByteBuffer;"/> + <method name="isLoaded()Z"/> + <method name="load()Ljava/nio/MappedByteBuffer;"/> + </class> + <class name="java/nio/ReadOnlyBufferException" since="1"> + <extends name="java/lang/UnsupportedOperationException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/ShortBuffer" since="1"> + <extends name="java/nio/Buffer"/> + <implements name="java/lang/Comparable"/> + <method name="<init>()V"/> + <method name="allocate(I)Ljava/nio/ShortBuffer;"/> + <method name="array()[S"/> + <method name="arrayOffset()I"/> + <method name="asReadOnlyBuffer()Ljava/nio/ShortBuffer;"/> + <method name="compact()Ljava/nio/ShortBuffer;"/> + <method name="compareTo(Ljava/nio/ShortBuffer;)I"/> + <method name="duplicate()Ljava/nio/ShortBuffer;"/> + <method name="get()S"/> + <method name="get(I)S"/> + <method name="get([S)Ljava/nio/ShortBuffer;"/> + <method name="get([SII)Ljava/nio/ShortBuffer;"/> + <method name="hasArray()Z"/> + <method name="isDirect()Z"/> + <method name="order()Ljava/nio/ByteOrder;"/> + <method name="put(IS)Ljava/nio/ShortBuffer;"/> + <method name="put(Ljava/nio/ShortBuffer;)Ljava/nio/ShortBuffer;"/> + <method name="put(S)Ljava/nio/ShortBuffer;"/> + <method name="put([S)Ljava/nio/ShortBuffer;"/> + <method name="put([SII)Ljava/nio/ShortBuffer;"/> + <method name="slice()Ljava/nio/ShortBuffer;"/> + <method name="wrap([S)Ljava/nio/ShortBuffer;"/> + <method name="wrap([SII)Ljava/nio/ShortBuffer;"/> + </class> + <class name="java/nio/channels/AcceptPendingException" since="26"> + <extends name="java/lang/IllegalStateException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/channels/AlreadyBoundException" since="24"> + <extends name="java/lang/IllegalStateException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/channels/AlreadyConnectedException" since="1"> + <extends name="java/lang/IllegalStateException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/channels/AsynchronousByteChannel" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/nio/channels/AsynchronousChannel"/> + <method name="read(Ljava/nio/ByteBuffer;)Ljava/util/concurrent/Future;"/> + <method name="read(Ljava/nio/ByteBuffer;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V"/> + <method name="write(Ljava/nio/ByteBuffer;)Ljava/util/concurrent/Future;"/> + <method name="write(Ljava/nio/ByteBuffer;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V"/> + </class> + <class name="java/nio/channels/AsynchronousChannel" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/nio/channels/Channel"/> + </class> + <class name="java/nio/channels/AsynchronousChannelGroup" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/nio/channels/spi/AsynchronousChannelProvider;)V"/> + <method name="awaitTermination(JLjava/util/concurrent/TimeUnit;)Z"/> + <method name="isShutdown()Z"/> + <method name="isTerminated()Z"/> + <method name="provider()Ljava/nio/channels/spi/AsynchronousChannelProvider;"/> + <method name="shutdown()V"/> + <method name="shutdownNow()V"/> + <method name="withCachedThreadPool(Ljava/util/concurrent/ExecutorService;I)Ljava/nio/channels/AsynchronousChannelGroup;"/> + <method name="withFixedThreadPool(ILjava/util/concurrent/ThreadFactory;)Ljava/nio/channels/AsynchronousChannelGroup;"/> + <method name="withThreadPool(Ljava/util/concurrent/ExecutorService;)Ljava/nio/channels/AsynchronousChannelGroup;"/> + </class> + <class name="java/nio/channels/AsynchronousCloseException" since="1"> + <extends name="java/nio/channels/ClosedChannelException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/channels/AsynchronousFileChannel" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/nio/channels/AsynchronousChannel"/> + <method name="<init>()V"/> + <method name="force(Z)V"/> + <method name="lock()Ljava/util/concurrent/Future;"/> + <method name="lock(JJZ)Ljava/util/concurrent/Future;"/> + <method name="lock(JJZLjava/lang/Object;Ljava/nio/channels/CompletionHandler;)V"/> + <method name="lock(Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V"/> + <method name="open(Ljava/nio/file/Path;Ljava/util/Set;Ljava/util/concurrent/ExecutorService;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/channels/AsynchronousFileChannel;"/> + <method name="open(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/nio/channels/AsynchronousFileChannel;"/> + <method name="read(Ljava/nio/ByteBuffer;J)Ljava/util/concurrent/Future;"/> + <method name="read(Ljava/nio/ByteBuffer;JLjava/lang/Object;Ljava/nio/channels/CompletionHandler;)V"/> + <method name="size()J"/> + <method name="truncate(J)Ljava/nio/channels/AsynchronousFileChannel;"/> + <method name="tryLock()Ljava/nio/channels/FileLock;"/> + <method name="tryLock(JJZ)Ljava/nio/channels/FileLock;"/> + <method name="write(Ljava/nio/ByteBuffer;J)Ljava/util/concurrent/Future;"/> + <method name="write(Ljava/nio/ByteBuffer;JLjava/lang/Object;Ljava/nio/channels/CompletionHandler;)V"/> + </class> + <class name="java/nio/channels/AsynchronousServerSocketChannel" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/nio/channels/AsynchronousChannel"/> + <implements name="java/nio/channels/NetworkChannel"/> + <method name="<init>(Ljava/nio/channels/spi/AsynchronousChannelProvider;)V"/> + <method name="accept()Ljava/util/concurrent/Future;"/> + <method name="accept(Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V"/> + <method name="bind(Ljava/net/SocketAddress;)Ljava/nio/channels/AsynchronousServerSocketChannel;"/> + <method name="bind(Ljava/net/SocketAddress;I)Ljava/nio/channels/AsynchronousServerSocketChannel;"/> + <method name="open()Ljava/nio/channels/AsynchronousServerSocketChannel;"/> + <method name="open(Ljava/nio/channels/AsynchronousChannelGroup;)Ljava/nio/channels/AsynchronousServerSocketChannel;"/> + <method name="provider()Ljava/nio/channels/spi/AsynchronousChannelProvider;"/> + <method name="setOption(Ljava/net/SocketOption;Ljava/lang/Object;)Ljava/nio/channels/AsynchronousServerSocketChannel;"/> + </class> + <class name="java/nio/channels/AsynchronousSocketChannel" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/nio/channels/AsynchronousByteChannel"/> + <implements name="java/nio/channels/NetworkChannel"/> + <method name="<init>(Ljava/nio/channels/spi/AsynchronousChannelProvider;)V"/> + <method name="bind(Ljava/net/SocketAddress;)Ljava/nio/channels/AsynchronousSocketChannel;"/> + <method name="connect(Ljava/net/SocketAddress;)Ljava/util/concurrent/Future;"/> + <method name="connect(Ljava/net/SocketAddress;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V"/> + <method name="getRemoteAddress()Ljava/net/SocketAddress;"/> + <method name="open()Ljava/nio/channels/AsynchronousSocketChannel;"/> + <method name="open(Ljava/nio/channels/AsynchronousChannelGroup;)Ljava/nio/channels/AsynchronousSocketChannel;"/> + <method name="provider()Ljava/nio/channels/spi/AsynchronousChannelProvider;"/> + <method name="read(Ljava/nio/ByteBuffer;JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V"/> + <method name="read([Ljava/nio/ByteBuffer;IIJLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V"/> + <method name="setOption(Ljava/net/SocketOption;Ljava/lang/Object;)Ljava/nio/channels/AsynchronousSocketChannel;"/> + <method name="shutdownInput()Ljava/nio/channels/AsynchronousSocketChannel;"/> + <method name="shutdownOutput()Ljava/nio/channels/AsynchronousSocketChannel;"/> + <method name="write(Ljava/nio/ByteBuffer;JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V"/> + <method name="write([Ljava/nio/ByteBuffer;IIJLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V"/> + </class> + <class name="java/nio/channels/ByteChannel" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/nio/channels/ReadableByteChannel"/> + <implements name="java/nio/channels/WritableByteChannel"/> + </class> + <class name="java/nio/channels/CancelledKeyException" since="1"> + <extends name="java/lang/IllegalStateException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/channels/Channel" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable"/> + <method name="isOpen()Z"/> + </class> + <class name="java/nio/channels/Channels" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="newChannel(Ljava/io/InputStream;)Ljava/nio/channels/ReadableByteChannel;"/> + <method name="newChannel(Ljava/io/OutputStream;)Ljava/nio/channels/WritableByteChannel;"/> + <method name="newInputStream(Ljava/nio/channels/AsynchronousByteChannel;)Ljava/io/InputStream;" since="26"/> + <method name="newInputStream(Ljava/nio/channels/ReadableByteChannel;)Ljava/io/InputStream;"/> + <method name="newOutputStream(Ljava/nio/channels/AsynchronousByteChannel;)Ljava/io/OutputStream;" since="26"/> + <method name="newOutputStream(Ljava/nio/channels/WritableByteChannel;)Ljava/io/OutputStream;"/> + <method name="newReader(Ljava/nio/channels/ReadableByteChannel;Ljava/lang/String;)Ljava/io/Reader;"/> + <method name="newReader(Ljava/nio/channels/ReadableByteChannel;Ljava/nio/charset/CharsetDecoder;I)Ljava/io/Reader;"/> + <method name="newWriter(Ljava/nio/channels/WritableByteChannel;Ljava/lang/String;)Ljava/io/Writer;"/> + <method name="newWriter(Ljava/nio/channels/WritableByteChannel;Ljava/nio/charset/CharsetEncoder;I)Ljava/io/Writer;"/> + </class> + <class name="java/nio/channels/ClosedByInterruptException" since="1"> + <extends name="java/nio/channels/AsynchronousCloseException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/channels/ClosedChannelException" since="1"> + <extends name="java/io/IOException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/channels/ClosedSelectorException" since="1"> + <extends name="java/lang/IllegalStateException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/channels/CompletionHandler" since="26"> + <extends name="java/lang/Object"/> + <method name="completed(Ljava/lang/Object;Ljava/lang/Object;)V"/> + <method name="failed(Ljava/lang/Throwable;Ljava/lang/Object;)V"/> + </class> + <class name="java/nio/channels/ConnectionPendingException" since="1"> + <extends name="java/lang/IllegalStateException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/channels/DatagramChannel" since="1"> + <extends name="java/nio/channels/spi/AbstractSelectableChannel"/> + <implements name="java/nio/channels/ByteChannel"/> + <implements name="java/nio/channels/GatheringByteChannel"/> + <implements name="java/nio/channels/MulticastChannel" since="26"/> + <implements name="java/nio/channels/NetworkChannel" since="24" removed="26"/> + <implements name="java/nio/channels/ScatteringByteChannel"/> + <method name="<init>(Ljava/nio/channels/spi/SelectorProvider;)V"/> + <method name="bind(Ljava/net/SocketAddress;)Ljava/nio/channels/DatagramChannel;" since="24"/> + <method name="connect(Ljava/net/SocketAddress;)Ljava/nio/channels/DatagramChannel;"/> + <method name="disconnect()Ljava/nio/channels/DatagramChannel;"/> + <method name="getRemoteAddress()Ljava/net/SocketAddress;" since="24"/> + <method name="isConnected()Z"/> + <method name="open()Ljava/nio/channels/DatagramChannel;"/> + <method name="open(Ljava/net/ProtocolFamily;)Ljava/nio/channels/DatagramChannel;" since="24"/> + <method name="receive(Ljava/nio/ByteBuffer;)Ljava/net/SocketAddress;"/> + <method name="send(Ljava/nio/ByteBuffer;Ljava/net/SocketAddress;)I"/> + <method name="setOption(Ljava/net/SocketOption;Ljava/lang/Object;)Ljava/nio/channels/DatagramChannel;" since="24"/> + <method name="socket()Ljava/net/DatagramSocket;"/> + </class> + <class name="java/nio/channels/FileChannel" since="1"> + <extends name="java/nio/channels/spi/AbstractInterruptibleChannel"/> + <implements name="java/nio/channels/ByteChannel" removed="24"/> + <implements name="java/nio/channels/GatheringByteChannel"/> + <implements name="java/nio/channels/ScatteringByteChannel"/> + <implements name="java/nio/channels/SeekableByteChannel" since="24"/> + <method name="<init>()V"/> + <method name="force(Z)V"/> + <method name="lock()Ljava/nio/channels/FileLock;"/> + <method name="lock(JJZ)Ljava/nio/channels/FileLock;"/> + <method name="map(Ljava/nio/channels/FileChannel$MapMode;JJ)Ljava/nio/MappedByteBuffer;"/> + <method name="open(Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/channels/FileChannel;" since="26"/> + <method name="open(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/nio/channels/FileChannel;" since="26"/> + <method name="position()J"/> + <method name="position(J)Ljava/nio/channels/FileChannel;"/> + <method name="read(Ljava/nio/ByteBuffer;J)I"/> + <method name="size()J"/> + <method name="transferFrom(Ljava/nio/channels/ReadableByteChannel;JJ)J"/> + <method name="transferTo(JJLjava/nio/channels/WritableByteChannel;)J"/> + <method name="truncate(J)Ljava/nio/channels/FileChannel;"/> + <method name="tryLock()Ljava/nio/channels/FileLock;"/> + <method name="tryLock(JJZ)Ljava/nio/channels/FileLock;"/> + <method name="write(Ljava/nio/ByteBuffer;J)I"/> + </class> + <class name="java/nio/channels/FileChannel$MapMode" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="PRIVATE"/> + <field name="READ_ONLY"/> + <field name="READ_WRITE"/> + </class> + <class name="java/nio/channels/FileLock" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable" since="19"/> + <method name="<init>(Ljava/nio/channels/AsynchronousFileChannel;JJZ)V" since="26"/> + <method name="<init>(Ljava/nio/channels/FileChannel;JJZ)V"/> + <method name="acquiredBy()Ljava/nio/channels/Channel;" since="24"/> + <method name="channel()Ljava/nio/channels/FileChannel;"/> + <method name="isShared()Z"/> + <method name="isValid()Z"/> + <method name="overlaps(JJ)Z"/> + <method name="position()J"/> + <method name="release()V"/> + <method name="size()J"/> + </class> + <class name="java/nio/channels/FileLockInterruptionException" since="1"> + <extends name="java/io/IOException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/channels/GatheringByteChannel" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/nio/channels/WritableByteChannel"/> + <method name="write([Ljava/nio/ByteBuffer;)J"/> + <method name="write([Ljava/nio/ByteBuffer;II)J"/> + </class> + <class name="java/nio/channels/IllegalBlockingModeException" since="1"> + <extends name="java/lang/IllegalStateException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/channels/IllegalChannelGroupException" since="26"> + <extends name="java/lang/IllegalArgumentException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/channels/IllegalSelectorException" since="1"> + <extends name="java/lang/IllegalArgumentException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/channels/InterruptedByTimeoutException" since="26"> + <extends name="java/io/IOException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/channels/InterruptibleChannel" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/nio/channels/Channel"/> + </class> + <class name="java/nio/channels/MembershipKey" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="block(Ljava/net/InetAddress;)Ljava/nio/channels/MembershipKey;"/> + <method name="channel()Ljava/nio/channels/MulticastChannel;"/> + <method name="drop()V"/> + <method name="group()Ljava/net/InetAddress;"/> + <method name="isValid()Z"/> + <method name="networkInterface()Ljava/net/NetworkInterface;"/> + <method name="sourceAddress()Ljava/net/InetAddress;"/> + <method name="unblock(Ljava/net/InetAddress;)Ljava/nio/channels/MembershipKey;"/> + </class> + <class name="java/nio/channels/MulticastChannel" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/nio/channels/NetworkChannel"/> + <method name="join(Ljava/net/InetAddress;Ljava/net/NetworkInterface;)Ljava/nio/channels/MembershipKey;"/> + <method name="join(Ljava/net/InetAddress;Ljava/net/NetworkInterface;Ljava/net/InetAddress;)Ljava/nio/channels/MembershipKey;"/> + </class> + <class name="java/nio/channels/NetworkChannel" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/nio/channels/Channel"/> + <method name="bind(Ljava/net/SocketAddress;)Ljava/nio/channels/NetworkChannel;"/> + <method name="getLocalAddress()Ljava/net/SocketAddress;"/> + <method name="getOption(Ljava/net/SocketOption;)Ljava/lang/Object;"/> + <method name="setOption(Ljava/net/SocketOption;Ljava/lang/Object;)Ljava/nio/channels/NetworkChannel;"/> + <method name="supportedOptions()Ljava/util/Set;"/> + </class> + <class name="java/nio/channels/NoConnectionPendingException" since="1"> + <extends name="java/lang/IllegalStateException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/channels/NonReadableChannelException" since="1"> + <extends name="java/lang/IllegalStateException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/channels/NonWritableChannelException" since="1"> + <extends name="java/lang/IllegalStateException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/channels/NotYetBoundException" since="1"> + <extends name="java/lang/IllegalStateException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/channels/NotYetConnectedException" since="1"> + <extends name="java/lang/IllegalStateException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/channels/OverlappingFileLockException" since="1"> + <extends name="java/lang/IllegalStateException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/channels/Pipe" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="open()Ljava/nio/channels/Pipe;"/> + <method name="sink()Ljava/nio/channels/Pipe$SinkChannel;"/> + <method name="source()Ljava/nio/channels/Pipe$SourceChannel;"/> + </class> + <class name="java/nio/channels/Pipe$SinkChannel" since="1"> + <extends name="java/nio/channels/spi/AbstractSelectableChannel"/> + <implements name="java/nio/channels/GatheringByteChannel"/> + <implements name="java/nio/channels/WritableByteChannel"/> + <method name="<init>(Ljava/nio/channels/spi/SelectorProvider;)V"/> + </class> + <class name="java/nio/channels/Pipe$SourceChannel" since="1"> + <extends name="java/nio/channels/spi/AbstractSelectableChannel"/> + <implements name="java/nio/channels/ReadableByteChannel"/> + <implements name="java/nio/channels/ScatteringByteChannel"/> + <method name="<init>(Ljava/nio/channels/spi/SelectorProvider;)V"/> + </class> + <class name="java/nio/channels/ReadPendingException" since="26"> + <extends name="java/lang/IllegalStateException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/channels/ReadableByteChannel" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/nio/channels/Channel"/> + <method name="read(Ljava/nio/ByteBuffer;)I"/> + </class> + <class name="java/nio/channels/ScatteringByteChannel" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/nio/channels/ReadableByteChannel"/> + <method name="read([Ljava/nio/ByteBuffer;)J"/> + <method name="read([Ljava/nio/ByteBuffer;II)J"/> + </class> + <class name="java/nio/channels/SeekableByteChannel" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/nio/channels/ByteChannel"/> + <method name="position()J"/> + <method name="position(J)Ljava/nio/channels/SeekableByteChannel;"/> + <method name="size()J"/> + <method name="truncate(J)Ljava/nio/channels/SeekableByteChannel;"/> + </class> + <class name="java/nio/channels/SelectableChannel" since="1"> + <extends name="java/nio/channels/spi/AbstractInterruptibleChannel"/> + <method name="<init>()V"/> + <method name="blockingLock()Ljava/lang/Object;"/> + <method name="configureBlocking(Z)Ljava/nio/channels/SelectableChannel;"/> + <method name="isBlocking()Z"/> + <method name="isRegistered()Z"/> + <method name="keyFor(Ljava/nio/channels/Selector;)Ljava/nio/channels/SelectionKey;"/> + <method name="provider()Ljava/nio/channels/spi/SelectorProvider;"/> + <method name="register(Ljava/nio/channels/Selector;I)Ljava/nio/channels/SelectionKey;"/> + <method name="register(Ljava/nio/channels/Selector;ILjava/lang/Object;)Ljava/nio/channels/SelectionKey;"/> + <method name="validOps()I"/> + </class> + <class name="java/nio/channels/SelectionKey" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="attach(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="attachment()Ljava/lang/Object;"/> + <method name="cancel()V"/> + <method name="channel()Ljava/nio/channels/SelectableChannel;"/> + <method name="interestOps()I"/> + <method name="interestOps(I)Ljava/nio/channels/SelectionKey;"/> + <method name="isAcceptable()Z"/> + <method name="isConnectable()Z"/> + <method name="isReadable()Z"/> + <method name="isValid()Z"/> + <method name="isWritable()Z"/> + <method name="readyOps()I"/> + <method name="selector()Ljava/nio/channels/Selector;"/> + <field name="OP_ACCEPT"/> + <field name="OP_CONNECT"/> + <field name="OP_READ"/> + <field name="OP_WRITE"/> + </class> + <class name="java/nio/channels/Selector" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable" since="19"/> + <method name="<init>()V"/> + <method name="close()V"/> + <method name="isOpen()Z"/> + <method name="keys()Ljava/util/Set;"/> + <method name="open()Ljava/nio/channels/Selector;"/> + <method name="provider()Ljava/nio/channels/spi/SelectorProvider;"/> + <method name="select()I"/> + <method name="select(J)I"/> + <method name="selectNow()I"/> + <method name="selectedKeys()Ljava/util/Set;"/> + <method name="wakeup()Ljava/nio/channels/Selector;"/> + </class> + <class name="java/nio/channels/ServerSocketChannel" since="1"> + <extends name="java/nio/channels/spi/AbstractSelectableChannel"/> + <implements name="java/nio/channels/NetworkChannel" since="24"/> + <method name="<init>(Ljava/nio/channels/spi/SelectorProvider;)V"/> + <method name="accept()Ljava/nio/channels/SocketChannel;"/> + <method name="bind(Ljava/net/SocketAddress;)Ljava/nio/channels/ServerSocketChannel;" since="24"/> + <method name="bind(Ljava/net/SocketAddress;I)Ljava/nio/channels/ServerSocketChannel;" since="24"/> + <method name="open()Ljava/nio/channels/ServerSocketChannel;"/> + <method name="setOption(Ljava/net/SocketOption;Ljava/lang/Object;)Ljava/nio/channels/ServerSocketChannel;" since="24"/> + <method name="socket()Ljava/net/ServerSocket;"/> + </class> + <class name="java/nio/channels/ShutdownChannelGroupException" since="26"> + <extends name="java/lang/IllegalStateException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/channels/SocketChannel" since="1"> + <extends name="java/nio/channels/spi/AbstractSelectableChannel"/> + <implements name="java/nio/channels/ByteChannel"/> + <implements name="java/nio/channels/GatheringByteChannel"/> + <implements name="java/nio/channels/NetworkChannel" since="24"/> + <implements name="java/nio/channels/ScatteringByteChannel"/> + <method name="<init>(Ljava/nio/channels/spi/SelectorProvider;)V"/> + <method name="bind(Ljava/net/SocketAddress;)Ljava/nio/channels/SocketChannel;" since="24"/> + <method name="connect(Ljava/net/SocketAddress;)Z"/> + <method name="finishConnect()Z"/> + <method name="getRemoteAddress()Ljava/net/SocketAddress;" since="24"/> + <method name="isConnected()Z"/> + <method name="isConnectionPending()Z"/> + <method name="open()Ljava/nio/channels/SocketChannel;"/> + <method name="open(Ljava/net/SocketAddress;)Ljava/nio/channels/SocketChannel;"/> + <method name="setOption(Ljava/net/SocketOption;Ljava/lang/Object;)Ljava/nio/channels/SocketChannel;" since="24"/> + <method name="shutdownInput()Ljava/nio/channels/SocketChannel;" since="24"/> + <method name="shutdownOutput()Ljava/nio/channels/SocketChannel;" since="24"/> + <method name="socket()Ljava/net/Socket;"/> + </class> + <class name="java/nio/channels/UnresolvedAddressException" since="1"> + <extends name="java/lang/IllegalArgumentException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/channels/UnsupportedAddressTypeException" since="1"> + <extends name="java/lang/IllegalArgumentException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/channels/WritableByteChannel" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/nio/channels/Channel"/> + <method name="write(Ljava/nio/ByteBuffer;)I"/> + </class> + <class name="java/nio/channels/WritePendingException" since="26"> + <extends name="java/lang/IllegalStateException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/channels/spi/AbstractInterruptibleChannel" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/nio/channels/Channel"/> + <implements name="java/nio/channels/InterruptibleChannel"/> + <method name="<init>()V"/> + <method name="begin()V"/> + <method name="end(Z)V"/> + <method name="implCloseChannel()V"/> + </class> + <class name="java/nio/channels/spi/AbstractSelectableChannel" since="1"> + <extends name="java/nio/channels/SelectableChannel"/> + <method name="<init>(Ljava/nio/channels/spi/SelectorProvider;)V"/> + <method name="implCloseSelectableChannel()V"/> + <method name="implConfigureBlocking(Z)V"/> + </class> + <class name="java/nio/channels/spi/AbstractSelectionKey" since="1"> + <extends name="java/nio/channels/SelectionKey"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/channels/spi/AbstractSelector" since="1"> + <extends name="java/nio/channels/Selector"/> + <method name="<init>(Ljava/nio/channels/spi/SelectorProvider;)V"/> + <method name="begin()V"/> + <method name="cancelledKeys()Ljava/util/Set;"/> + <method name="deregister(Ljava/nio/channels/spi/AbstractSelectionKey;)V"/> + <method name="end()V"/> + <method name="implCloseSelector()V"/> + <method name="register(Ljava/nio/channels/spi/AbstractSelectableChannel;ILjava/lang/Object;)Ljava/nio/channels/SelectionKey;"/> + </class> + <class name="java/nio/channels/spi/AsynchronousChannelProvider" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="openAsynchronousChannelGroup(ILjava/util/concurrent/ThreadFactory;)Ljava/nio/channels/AsynchronousChannelGroup;"/> + <method name="openAsynchronousChannelGroup(Ljava/util/concurrent/ExecutorService;I)Ljava/nio/channels/AsynchronousChannelGroup;"/> + <method name="openAsynchronousServerSocketChannel(Ljava/nio/channels/AsynchronousChannelGroup;)Ljava/nio/channels/AsynchronousServerSocketChannel;"/> + <method name="openAsynchronousSocketChannel(Ljava/nio/channels/AsynchronousChannelGroup;)Ljava/nio/channels/AsynchronousSocketChannel;"/> + <method name="provider()Ljava/nio/channels/spi/AsynchronousChannelProvider;"/> + </class> + <class name="java/nio/channels/spi/SelectorProvider" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="inheritedChannel()Ljava/nio/channels/Channel;"/> + <method name="openDatagramChannel()Ljava/nio/channels/DatagramChannel;"/> + <method name="openDatagramChannel(Ljava/net/ProtocolFamily;)Ljava/nio/channels/DatagramChannel;" since="24"/> + <method name="openPipe()Ljava/nio/channels/Pipe;"/> + <method name="openSelector()Ljava/nio/channels/spi/AbstractSelector;"/> + <method name="openServerSocketChannel()Ljava/nio/channels/ServerSocketChannel;"/> + <method name="openSocketChannel()Ljava/nio/channels/SocketChannel;"/> + <method name="provider()Ljava/nio/channels/spi/SelectorProvider;"/> + </class> + <class name="java/nio/charset/CharacterCodingException" since="1"> + <extends name="java/io/IOException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/charset/Charset" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Comparable"/> + <method name="<init>(Ljava/lang/String;[Ljava/lang/String;)V"/> + <method name="aliases()Ljava/util/Set;"/> + <method name="availableCharsets()Ljava/util/SortedMap;"/> + <method name="canEncode()Z"/> + <method name="compareTo(Ljava/nio/charset/Charset;)I"/> + <method name="contains(Ljava/nio/charset/Charset;)Z"/> + <method name="decode(Ljava/nio/ByteBuffer;)Ljava/nio/CharBuffer;"/> + <method name="defaultCharset()Ljava/nio/charset/Charset;"/> + <method name="displayName()Ljava/lang/String;"/> + <method name="displayName(Ljava/util/Locale;)Ljava/lang/String;"/> + <method name="encode(Ljava/lang/String;)Ljava/nio/ByteBuffer;"/> + <method name="encode(Ljava/nio/CharBuffer;)Ljava/nio/ByteBuffer;"/> + <method name="forName(Ljava/lang/String;)Ljava/nio/charset/Charset;"/> + <method name="isRegistered()Z"/> + <method name="isSupported(Ljava/lang/String;)Z"/> + <method name="name()Ljava/lang/String;"/> + <method name="newDecoder()Ljava/nio/charset/CharsetDecoder;"/> + <method name="newEncoder()Ljava/nio/charset/CharsetEncoder;"/> + </class> + <class name="java/nio/charset/CharsetDecoder" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/nio/charset/Charset;FF)V"/> + <method name="averageCharsPerByte()F"/> + <method name="charset()Ljava/nio/charset/Charset;"/> + <method name="decode(Ljava/nio/ByteBuffer;)Ljava/nio/CharBuffer;"/> + <method name="decode(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;Z)Ljava/nio/charset/CoderResult;"/> + <method name="decodeLoop(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;"/> + <method name="detectedCharset()Ljava/nio/charset/Charset;"/> + <method name="flush(Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;"/> + <method name="implFlush(Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;"/> + <method name="implOnMalformedInput(Ljava/nio/charset/CodingErrorAction;)V"/> + <method name="implOnUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)V"/> + <method name="implReplaceWith(Ljava/lang/String;)V"/> + <method name="implReset()V"/> + <method name="isAutoDetecting()Z"/> + <method name="isCharsetDetected()Z"/> + <method name="malformedInputAction()Ljava/nio/charset/CodingErrorAction;"/> + <method name="maxCharsPerByte()F"/> + <method name="onMalformedInput(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetDecoder;"/> + <method name="onUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetDecoder;"/> + <method name="replaceWith(Ljava/lang/String;)Ljava/nio/charset/CharsetDecoder;"/> + <method name="replacement()Ljava/lang/String;"/> + <method name="reset()Ljava/nio/charset/CharsetDecoder;"/> + <method name="unmappableCharacterAction()Ljava/nio/charset/CodingErrorAction;"/> + </class> + <class name="java/nio/charset/CharsetEncoder" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/nio/charset/Charset;FF)V"/> + <method name="<init>(Ljava/nio/charset/Charset;FF[B)V"/> + <method name="averageBytesPerChar()F"/> + <method name="canEncode(C)Z"/> + <method name="canEncode(Ljava/lang/CharSequence;)Z"/> + <method name="charset()Ljava/nio/charset/Charset;"/> + <method name="encode(Ljava/nio/CharBuffer;)Ljava/nio/ByteBuffer;"/> + <method name="encode(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;Z)Ljava/nio/charset/CoderResult;"/> + <method name="encodeLoop(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;"/> + <method name="flush(Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;"/> + <method name="implFlush(Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;"/> + <method name="implOnMalformedInput(Ljava/nio/charset/CodingErrorAction;)V"/> + <method name="implOnUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)V"/> + <method name="implReplaceWith([B)V"/> + <method name="implReset()V"/> + <method name="isLegalReplacement([B)Z"/> + <method name="malformedInputAction()Ljava/nio/charset/CodingErrorAction;"/> + <method name="maxBytesPerChar()F"/> + <method name="onMalformedInput(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetEncoder;"/> + <method name="onUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetEncoder;"/> + <method name="replaceWith([B)Ljava/nio/charset/CharsetEncoder;"/> + <method name="replacement()[B"/> + <method name="reset()Ljava/nio/charset/CharsetEncoder;"/> + <method name="unmappableCharacterAction()Ljava/nio/charset/CodingErrorAction;"/> + </class> + <class name="java/nio/charset/CoderMalfunctionError" since="1"> + <extends name="java/lang/Error"/> + <method name="<init>(Ljava/lang/Exception;)V"/> + </class> + <class name="java/nio/charset/CoderResult" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="isError()Z"/> + <method name="isMalformed()Z"/> + <method name="isOverflow()Z"/> + <method name="isUnderflow()Z"/> + <method name="isUnmappable()Z"/> + <method name="length()I"/> + <method name="malformedForLength(I)Ljava/nio/charset/CoderResult;"/> + <method name="throwException()V"/> + <method name="unmappableForLength(I)Ljava/nio/charset/CoderResult;"/> + <field name="OVERFLOW"/> + <field name="UNDERFLOW"/> + </class> + <class name="java/nio/charset/CodingErrorAction" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="IGNORE"/> + <field name="REPLACE"/> + <field name="REPORT"/> + </class> + <class name="java/nio/charset/IllegalCharsetNameException" since="1"> + <extends name="java/lang/IllegalArgumentException"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getCharsetName()Ljava/lang/String;"/> + </class> + <class name="java/nio/charset/MalformedInputException" since="1"> + <extends name="java/nio/charset/CharacterCodingException"/> + <method name="<init>(I)V"/> + <method name="getInputLength()I"/> + </class> + <class name="java/nio/charset/StandardCharsets" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="ISO_8859_1"/> + <field name="US_ASCII"/> + <field name="UTF_16"/> + <field name="UTF_16BE"/> + <field name="UTF_16LE"/> + <field name="UTF_8"/> + </class> + <class name="java/nio/charset/UnmappableCharacterException" since="1"> + <extends name="java/nio/charset/CharacterCodingException"/> + <method name="<init>(I)V"/> + <method name="getInputLength()I"/> + </class> + <class name="java/nio/charset/UnsupportedCharsetException" since="1"> + <extends name="java/lang/IllegalArgumentException"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getCharsetName()Ljava/lang/String;"/> + </class> + <class name="java/nio/charset/spi/CharsetProvider" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="charsetForName(Ljava/lang/String;)Ljava/nio/charset/Charset;"/> + <method name="charsets()Ljava/util/Iterator;"/> + </class> + <class name="java/nio/file/AccessDeniedException" since="26"> + <extends name="java/nio/file/FileSystemException"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="java/nio/file/AccessMode" since="26"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/nio/file/AccessMode;"/> + <method name="values()[Ljava/nio/file/AccessMode;"/> + <field name="EXECUTE"/> + <field name="READ"/> + <field name="WRITE"/> + </class> + <class name="java/nio/file/AtomicMoveNotSupportedException" since="26"> + <extends name="java/nio/file/FileSystemException"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="java/nio/file/ClosedDirectoryStreamException" since="26"> + <extends name="java/lang/IllegalStateException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/file/ClosedFileSystemException" since="26"> + <extends name="java/lang/IllegalStateException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/file/ClosedWatchServiceException" since="26"> + <extends name="java/lang/IllegalStateException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/file/CopyOption" since="26"> + <extends name="java/lang/Object"/> + </class> + <class name="java/nio/file/DirectoryIteratorException" since="26"> + <extends name="java/util/ConcurrentModificationException"/> + <method name="<init>(Ljava/io/IOException;)V"/> + <method name="getCause()Ljava/io/IOException;"/> + </class> + <class name="java/nio/file/DirectoryNotEmptyException" since="26"> + <extends name="java/nio/file/FileSystemException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/nio/file/DirectoryStream" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable"/> + <implements name="java/lang/Iterable"/> + </class> + <class name="java/nio/file/DirectoryStream$Filter" since="26"> + <extends name="java/lang/Object"/> + <method name="accept(Ljava/lang/Object;)Z"/> + </class> + <class name="java/nio/file/FileAlreadyExistsException" since="26"> + <extends name="java/nio/file/FileSystemException"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="java/nio/file/FileStore" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAttribute(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="getFileStoreAttributeView(Ljava/lang/Class;)Ljava/nio/file/attribute/FileStoreAttributeView;"/> + <method name="getTotalSpace()J"/> + <method name="getUnallocatedSpace()J"/> + <method name="getUsableSpace()J"/> + <method name="isReadOnly()Z"/> + <method name="name()Ljava/lang/String;"/> + <method name="supportsFileAttributeView(Ljava/lang/Class;)Z"/> + <method name="supportsFileAttributeView(Ljava/lang/String;)Z"/> + <method name="type()Ljava/lang/String;"/> + </class> + <class name="java/nio/file/FileSystem" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable"/> + <method name="<init>()V"/> + <method name="getFileStores()Ljava/lang/Iterable;"/> + <method name="getPath(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;"/> + <method name="getPathMatcher(Ljava/lang/String;)Ljava/nio/file/PathMatcher;"/> + <method name="getRootDirectories()Ljava/lang/Iterable;"/> + <method name="getSeparator()Ljava/lang/String;"/> + <method name="getUserPrincipalLookupService()Ljava/nio/file/attribute/UserPrincipalLookupService;"/> + <method name="isOpen()Z"/> + <method name="isReadOnly()Z"/> + <method name="newWatchService()Ljava/nio/file/WatchService;"/> + <method name="provider()Ljava/nio/file/spi/FileSystemProvider;"/> + <method name="supportedFileAttributeViews()Ljava/util/Set;"/> + </class> + <class name="java/nio/file/FileSystemAlreadyExistsException" since="26"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/nio/file/FileSystemException" since="26"> + <extends name="java/io/IOException"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="getFile()Ljava/lang/String;"/> + <method name="getOtherFile()Ljava/lang/String;"/> + <method name="getReason()Ljava/lang/String;"/> + </class> + <class name="java/nio/file/FileSystemLoopException" since="26"> + <extends name="java/nio/file/FileSystemException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/nio/file/FileSystemNotFoundException" since="26"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/nio/file/FileSystems" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getDefault()Ljava/nio/file/FileSystem;"/> + <method name="getFileSystem(Ljava/net/URI;)Ljava/nio/file/FileSystem;"/> + <method name="newFileSystem(Ljava/net/URI;Ljava/util/Map;)Ljava/nio/file/FileSystem;"/> + <method name="newFileSystem(Ljava/net/URI;Ljava/util/Map;Ljava/lang/ClassLoader;)Ljava/nio/file/FileSystem;"/> + <method name="newFileSystem(Ljava/nio/file/Path;Ljava/lang/ClassLoader;)Ljava/nio/file/FileSystem;"/> + </class> + <class name="java/nio/file/FileVisitOption" since="26"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/nio/file/FileVisitOption;"/> + <method name="values()[Ljava/nio/file/FileVisitOption;"/> + <field name="FOLLOW_LINKS"/> + </class> + <class name="java/nio/file/FileVisitResult" since="26"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/nio/file/FileVisitResult;"/> + <method name="values()[Ljava/nio/file/FileVisitResult;"/> + <field name="CONTINUE"/> + <field name="SKIP_SIBLINGS"/> + <field name="SKIP_SUBTREE"/> + <field name="TERMINATE"/> + </class> + <class name="java/nio/file/FileVisitor" since="26"> + <extends name="java/lang/Object"/> + <method name="postVisitDirectory(Ljava/lang/Object;Ljava/io/IOException;)Ljava/nio/file/FileVisitResult;"/> + <method name="preVisitDirectory(Ljava/lang/Object;Ljava/nio/file/attribute/BasicFileAttributes;)Ljava/nio/file/FileVisitResult;"/> + <method name="visitFile(Ljava/lang/Object;Ljava/nio/file/attribute/BasicFileAttributes;)Ljava/nio/file/FileVisitResult;"/> + <method name="visitFileFailed(Ljava/lang/Object;Ljava/io/IOException;)Ljava/nio/file/FileVisitResult;"/> + </class> + <class name="java/nio/file/Files" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="copy(Ljava/io/InputStream;Ljava/nio/file/Path;[Ljava/nio/file/CopyOption;)J"/> + <method name="copy(Ljava/nio/file/Path;Ljava/io/OutputStream;)J"/> + <method name="copy(Ljava/nio/file/Path;Ljava/nio/file/Path;[Ljava/nio/file/CopyOption;)Ljava/nio/file/Path;"/> + <method name="createDirectories(Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path;"/> + <method name="createDirectory(Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path;"/> + <method name="createFile(Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path;"/> + <method name="createLink(Ljava/nio/file/Path;Ljava/nio/file/Path;)Ljava/nio/file/Path;"/> + <method name="createSymbolicLink(Ljava/nio/file/Path;Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path;"/> + <method name="createTempDirectory(Ljava/lang/String;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path;"/> + <method name="createTempDirectory(Ljava/nio/file/Path;Ljava/lang/String;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path;"/> + <method name="createTempFile(Ljava/lang/String;Ljava/lang/String;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path;"/> + <method name="createTempFile(Ljava/nio/file/Path;Ljava/lang/String;Ljava/lang/String;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path;"/> + <method name="delete(Ljava/nio/file/Path;)V"/> + <method name="deleteIfExists(Ljava/nio/file/Path;)Z"/> + <method name="exists(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z"/> + <method name="find(Ljava/nio/file/Path;ILjava/util/function/BiPredicate;[Ljava/nio/file/FileVisitOption;)Ljava/util/stream/Stream;"/> + <method name="getAttribute(Ljava/nio/file/Path;Ljava/lang/String;[Ljava/nio/file/LinkOption;)Ljava/lang/Object;"/> + <method name="getFileAttributeView(Ljava/nio/file/Path;Ljava/lang/Class;[Ljava/nio/file/LinkOption;)Ljava/nio/file/attribute/FileAttributeView;"/> + <method name="getFileStore(Ljava/nio/file/Path;)Ljava/nio/file/FileStore;"/> + <method name="getLastModifiedTime(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Ljava/nio/file/attribute/FileTime;"/> + <method name="getOwner(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Ljava/nio/file/attribute/UserPrincipal;"/> + <method name="getPosixFilePermissions(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Ljava/util/Set;"/> + <method name="isDirectory(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z"/> + <method name="isExecutable(Ljava/nio/file/Path;)Z"/> + <method name="isHidden(Ljava/nio/file/Path;)Z"/> + <method name="isReadable(Ljava/nio/file/Path;)Z"/> + <method name="isRegularFile(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z"/> + <method name="isSameFile(Ljava/nio/file/Path;Ljava/nio/file/Path;)Z"/> + <method name="isSymbolicLink(Ljava/nio/file/Path;)Z"/> + <method name="isWritable(Ljava/nio/file/Path;)Z"/> + <method name="lines(Ljava/nio/file/Path;)Ljava/util/stream/Stream;"/> + <method name="lines(Ljava/nio/file/Path;Ljava/nio/charset/Charset;)Ljava/util/stream/Stream;"/> + <method name="list(Ljava/nio/file/Path;)Ljava/util/stream/Stream;"/> + <method name="move(Ljava/nio/file/Path;Ljava/nio/file/Path;[Ljava/nio/file/CopyOption;)Ljava/nio/file/Path;"/> + <method name="newBufferedReader(Ljava/nio/file/Path;)Ljava/io/BufferedReader;"/> + <method name="newBufferedReader(Ljava/nio/file/Path;Ljava/nio/charset/Charset;)Ljava/io/BufferedReader;"/> + <method name="newBufferedWriter(Ljava/nio/file/Path;Ljava/nio/charset/Charset;[Ljava/nio/file/OpenOption;)Ljava/io/BufferedWriter;"/> + <method name="newBufferedWriter(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/io/BufferedWriter;"/> + <method name="newByteChannel(Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/channels/SeekableByteChannel;"/> + <method name="newByteChannel(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/nio/channels/SeekableByteChannel;"/> + <method name="newDirectoryStream(Ljava/nio/file/Path;)Ljava/nio/file/DirectoryStream;"/> + <method name="newDirectoryStream(Ljava/nio/file/Path;Ljava/lang/String;)Ljava/nio/file/DirectoryStream;"/> + <method name="newDirectoryStream(Ljava/nio/file/Path;Ljava/nio/file/DirectoryStream$Filter;)Ljava/nio/file/DirectoryStream;"/> + <method name="newInputStream(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/io/InputStream;"/> + <method name="newOutputStream(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/io/OutputStream;"/> + <method name="notExists(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z"/> + <method name="probeContentType(Ljava/nio/file/Path;)Ljava/lang/String;"/> + <method name="readAllBytes(Ljava/nio/file/Path;)[B"/> + <method name="readAllLines(Ljava/nio/file/Path;)Ljava/util/List;"/> + <method name="readAllLines(Ljava/nio/file/Path;Ljava/nio/charset/Charset;)Ljava/util/List;"/> + <method name="readAttributes(Ljava/nio/file/Path;Ljava/lang/Class;[Ljava/nio/file/LinkOption;)Ljava/nio/file/attribute/BasicFileAttributes;"/> + <method name="readAttributes(Ljava/nio/file/Path;Ljava/lang/String;[Ljava/nio/file/LinkOption;)Ljava/util/Map;"/> + <method name="readSymbolicLink(Ljava/nio/file/Path;)Ljava/nio/file/Path;"/> + <method name="setAttribute(Ljava/nio/file/Path;Ljava/lang/String;Ljava/lang/Object;[Ljava/nio/file/LinkOption;)Ljava/nio/file/Path;"/> + <method name="setLastModifiedTime(Ljava/nio/file/Path;Ljava/nio/file/attribute/FileTime;)Ljava/nio/file/Path;"/> + <method name="setOwner(Ljava/nio/file/Path;Ljava/nio/file/attribute/UserPrincipal;)Ljava/nio/file/Path;"/> + <method name="setPosixFilePermissions(Ljava/nio/file/Path;Ljava/util/Set;)Ljava/nio/file/Path;"/> + <method name="size(Ljava/nio/file/Path;)J"/> + <method name="walk(Ljava/nio/file/Path;I[Ljava/nio/file/FileVisitOption;)Ljava/util/stream/Stream;"/> + <method name="walk(Ljava/nio/file/Path;[Ljava/nio/file/FileVisitOption;)Ljava/util/stream/Stream;"/> + <method name="walkFileTree(Ljava/nio/file/Path;Ljava/nio/file/FileVisitor;)Ljava/nio/file/Path;"/> + <method name="walkFileTree(Ljava/nio/file/Path;Ljava/util/Set;ILjava/nio/file/FileVisitor;)Ljava/nio/file/Path;"/> + <method name="write(Ljava/nio/file/Path;Ljava/lang/Iterable;Ljava/nio/charset/Charset;[Ljava/nio/file/OpenOption;)Ljava/nio/file/Path;"/> + <method name="write(Ljava/nio/file/Path;Ljava/lang/Iterable;[Ljava/nio/file/OpenOption;)Ljava/nio/file/Path;"/> + <method name="write(Ljava/nio/file/Path;[B[Ljava/nio/file/OpenOption;)Ljava/nio/file/Path;"/> + </class> + <class name="java/nio/file/InvalidPathException" since="26"> + <extends name="java/lang/IllegalArgumentException"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;I)V"/> + <method name="getIndex()I"/> + <method name="getInput()Ljava/lang/String;"/> + <method name="getReason()Ljava/lang/String;"/> + </class> + <class name="java/nio/file/LinkOption" since="26"> + <extends name="java/lang/Enum"/> + <implements name="java/nio/file/CopyOption"/> + <implements name="java/nio/file/OpenOption"/> + <method name="valueOf(Ljava/lang/String;)Ljava/nio/file/LinkOption;"/> + <method name="values()[Ljava/nio/file/LinkOption;"/> + <field name="NOFOLLOW_LINKS"/> + </class> + <class name="java/nio/file/LinkPermission" since="26"> + <extends name="java/security/BasicPermission"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="java/nio/file/NoSuchFileException" since="26"> + <extends name="java/nio/file/FileSystemException"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="java/nio/file/NotDirectoryException" since="26"> + <extends name="java/nio/file/FileSystemException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/nio/file/NotLinkException" since="26"> + <extends name="java/nio/file/FileSystemException"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="java/nio/file/OpenOption" since="26"> + <extends name="java/lang/Object"/> + </class> + <class name="java/nio/file/Path" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Comparable"/> + <implements name="java/lang/Iterable"/> + <implements name="java/nio/file/Watchable"/> + <method name="compareTo(Ljava/nio/file/Path;)I"/> + <method name="endsWith(Ljava/lang/String;)Z"/> + <method name="endsWith(Ljava/nio/file/Path;)Z"/> + <method name="getFileName()Ljava/nio/file/Path;"/> + <method name="getFileSystem()Ljava/nio/file/FileSystem;"/> + <method name="getName(I)Ljava/nio/file/Path;"/> + <method name="getNameCount()I"/> + <method name="getParent()Ljava/nio/file/Path;"/> + <method name="getRoot()Ljava/nio/file/Path;"/> + <method name="isAbsolute()Z"/> + <method name="normalize()Ljava/nio/file/Path;"/> + <method name="relativize(Ljava/nio/file/Path;)Ljava/nio/file/Path;"/> + <method name="resolve(Ljava/lang/String;)Ljava/nio/file/Path;"/> + <method name="resolve(Ljava/nio/file/Path;)Ljava/nio/file/Path;"/> + <method name="resolveSibling(Ljava/lang/String;)Ljava/nio/file/Path;"/> + <method name="resolveSibling(Ljava/nio/file/Path;)Ljava/nio/file/Path;"/> + <method name="startsWith(Ljava/lang/String;)Z"/> + <method name="startsWith(Ljava/nio/file/Path;)Z"/> + <method name="subpath(II)Ljava/nio/file/Path;"/> + <method name="toAbsolutePath()Ljava/nio/file/Path;"/> + <method name="toFile()Ljava/io/File;"/> + <method name="toRealPath([Ljava/nio/file/LinkOption;)Ljava/nio/file/Path;"/> + <method name="toUri()Ljava/net/URI;"/> + </class> + <class name="java/nio/file/PathMatcher" since="26"> + <extends name="java/lang/Object"/> + <method name="matches(Ljava/nio/file/Path;)Z"/> + </class> + <class name="java/nio/file/Paths" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="get(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;"/> + <method name="get(Ljava/net/URI;)Ljava/nio/file/Path;"/> + </class> + <class name="java/nio/file/ProviderMismatchException" since="26"> + <extends name="java/lang/IllegalArgumentException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/nio/file/ProviderNotFoundException" since="26"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/nio/file/ReadOnlyFileSystemException" since="26"> + <extends name="java/lang/UnsupportedOperationException"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/file/SecureDirectoryStream" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/nio/file/DirectoryStream"/> + <method name="deleteDirectory(Ljava/lang/Object;)V"/> + <method name="deleteFile(Ljava/lang/Object;)V"/> + <method name="getFileAttributeView(Ljava/lang/Class;)Ljava/nio/file/attribute/FileAttributeView;"/> + <method name="getFileAttributeView(Ljava/lang/Object;Ljava/lang/Class;[Ljava/nio/file/LinkOption;)Ljava/nio/file/attribute/FileAttributeView;"/> + <method name="move(Ljava/lang/Object;Ljava/nio/file/SecureDirectoryStream;Ljava/lang/Object;)V"/> + <method name="newByteChannel(Ljava/lang/Object;Ljava/util/Set;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/channels/SeekableByteChannel;"/> + <method name="newDirectoryStream(Ljava/lang/Object;[Ljava/nio/file/LinkOption;)Ljava/nio/file/SecureDirectoryStream;"/> + </class> + <class name="java/nio/file/SimpleFileVisitor" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/nio/file/FileVisitor"/> + <method name="<init>()V"/> + </class> + <class name="java/nio/file/StandardCopyOption" since="26"> + <extends name="java/lang/Enum"/> + <implements name="java/nio/file/CopyOption"/> + <method name="valueOf(Ljava/lang/String;)Ljava/nio/file/StandardCopyOption;"/> + <method name="values()[Ljava/nio/file/StandardCopyOption;"/> + <field name="ATOMIC_MOVE"/> + <field name="COPY_ATTRIBUTES"/> + <field name="REPLACE_EXISTING"/> + </class> + <class name="java/nio/file/StandardOpenOption" since="26"> + <extends name="java/lang/Enum"/> + <implements name="java/nio/file/OpenOption"/> + <method name="valueOf(Ljava/lang/String;)Ljava/nio/file/StandardOpenOption;"/> + <method name="values()[Ljava/nio/file/StandardOpenOption;"/> + <field name="APPEND"/> + <field name="CREATE"/> + <field name="CREATE_NEW"/> + <field name="DELETE_ON_CLOSE"/> + <field name="DSYNC"/> + <field name="READ"/> + <field name="SPARSE"/> + <field name="SYNC"/> + <field name="TRUNCATE_EXISTING"/> + <field name="WRITE"/> + </class> + <class name="java/nio/file/StandardWatchEventKinds" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="ENTRY_CREATE"/> + <field name="ENTRY_DELETE"/> + <field name="ENTRY_MODIFY"/> + <field name="OVERFLOW"/> + </class> + <class name="java/nio/file/WatchEvent" since="26"> + <extends name="java/lang/Object"/> + <method name="context()Ljava/lang/Object;"/> + <method name="count()I"/> + <method name="kind()Ljava/nio/file/WatchEvent$Kind;"/> + </class> + <class name="java/nio/file/WatchEvent$Kind" since="26"> + <extends name="java/lang/Object"/> + <method name="name()Ljava/lang/String;"/> + <method name="type()Ljava/lang/Class;"/> + </class> + <class name="java/nio/file/WatchEvent$Modifier" since="26"> + <extends name="java/lang/Object"/> + <method name="name()Ljava/lang/String;"/> + </class> + <class name="java/nio/file/WatchKey" since="26"> + <extends name="java/lang/Object"/> + <method name="cancel()V"/> + <method name="isValid()Z"/> + <method name="pollEvents()Ljava/util/List;"/> + <method name="reset()Z"/> + <method name="watchable()Ljava/nio/file/Watchable;"/> + </class> + <class name="java/nio/file/WatchService" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable"/> + <method name="poll()Ljava/nio/file/WatchKey;"/> + <method name="poll(JLjava/util/concurrent/TimeUnit;)Ljava/nio/file/WatchKey;"/> + <method name="take()Ljava/nio/file/WatchKey;"/> + </class> + <class name="java/nio/file/Watchable" since="26"> + <extends name="java/lang/Object"/> + <method name="register(Ljava/nio/file/WatchService;[Ljava/nio/file/WatchEvent$Kind;)Ljava/nio/file/WatchKey;"/> + <method name="register(Ljava/nio/file/WatchService;[Ljava/nio/file/WatchEvent$Kind;[Ljava/nio/file/WatchEvent$Modifier;)Ljava/nio/file/WatchKey;"/> + </class> + <class name="java/nio/file/attribute/AclEntry" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="flags()Ljava/util/Set;"/> + <method name="newBuilder()Ljava/nio/file/attribute/AclEntry$Builder;"/> + <method name="newBuilder(Ljava/nio/file/attribute/AclEntry;)Ljava/nio/file/attribute/AclEntry$Builder;"/> + <method name="permissions()Ljava/util/Set;"/> + <method name="principal()Ljava/nio/file/attribute/UserPrincipal;"/> + <method name="type()Ljava/nio/file/attribute/AclEntryType;"/> + </class> + <class name="java/nio/file/attribute/AclEntry$Builder" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="build()Ljava/nio/file/attribute/AclEntry;"/> + <method name="setFlags(Ljava/util/Set;)Ljava/nio/file/attribute/AclEntry$Builder;"/> + <method name="setFlags([Ljava/nio/file/attribute/AclEntryFlag;)Ljava/nio/file/attribute/AclEntry$Builder;"/> + <method name="setPermissions(Ljava/util/Set;)Ljava/nio/file/attribute/AclEntry$Builder;"/> + <method name="setPermissions([Ljava/nio/file/attribute/AclEntryPermission;)Ljava/nio/file/attribute/AclEntry$Builder;"/> + <method name="setPrincipal(Ljava/nio/file/attribute/UserPrincipal;)Ljava/nio/file/attribute/AclEntry$Builder;"/> + <method name="setType(Ljava/nio/file/attribute/AclEntryType;)Ljava/nio/file/attribute/AclEntry$Builder;"/> + </class> + <class name="java/nio/file/attribute/AclEntryFlag" since="26"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/nio/file/attribute/AclEntryFlag;"/> + <method name="values()[Ljava/nio/file/attribute/AclEntryFlag;"/> + <field name="DIRECTORY_INHERIT"/> + <field name="FILE_INHERIT"/> + <field name="INHERIT_ONLY"/> + <field name="NO_PROPAGATE_INHERIT"/> + </class> + <class name="java/nio/file/attribute/AclEntryPermission" since="26"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/nio/file/attribute/AclEntryPermission;"/> + <method name="values()[Ljava/nio/file/attribute/AclEntryPermission;"/> + <field name="ADD_FILE"/> + <field name="ADD_SUBDIRECTORY"/> + <field name="APPEND_DATA"/> + <field name="DELETE"/> + <field name="DELETE_CHILD"/> + <field name="EXECUTE"/> + <field name="LIST_DIRECTORY"/> + <field name="READ_ACL"/> + <field name="READ_ATTRIBUTES"/> + <field name="READ_DATA"/> + <field name="READ_NAMED_ATTRS"/> + <field name="SYNCHRONIZE"/> + <field name="WRITE_ACL"/> + <field name="WRITE_ATTRIBUTES"/> + <field name="WRITE_DATA"/> + <field name="WRITE_NAMED_ATTRS"/> + <field name="WRITE_OWNER"/> + </class> + <class name="java/nio/file/attribute/AclEntryType" since="26"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/nio/file/attribute/AclEntryType;"/> + <method name="values()[Ljava/nio/file/attribute/AclEntryType;"/> + <field name="ALARM"/> + <field name="ALLOW"/> + <field name="AUDIT"/> + <field name="DENY"/> + </class> + <class name="java/nio/file/attribute/AclFileAttributeView" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/nio/file/attribute/FileOwnerAttributeView"/> + <method name="getAcl()Ljava/util/List;"/> + <method name="setAcl(Ljava/util/List;)V"/> + </class> + <class name="java/nio/file/attribute/AttributeView" since="26"> + <extends name="java/lang/Object"/> + <method name="name()Ljava/lang/String;"/> + </class> + <class name="java/nio/file/attribute/BasicFileAttributeView" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/nio/file/attribute/FileAttributeView"/> + <method name="readAttributes()Ljava/nio/file/attribute/BasicFileAttributes;"/> + <method name="setTimes(Ljava/nio/file/attribute/FileTime;Ljava/nio/file/attribute/FileTime;Ljava/nio/file/attribute/FileTime;)V"/> + </class> + <class name="java/nio/file/attribute/BasicFileAttributes" since="26"> + <extends name="java/lang/Object"/> + <method name="creationTime()Ljava/nio/file/attribute/FileTime;"/> + <method name="fileKey()Ljava/lang/Object;"/> + <method name="isDirectory()Z"/> + <method name="isOther()Z"/> + <method name="isRegularFile()Z"/> + <method name="isSymbolicLink()Z"/> + <method name="lastAccessTime()Ljava/nio/file/attribute/FileTime;"/> + <method name="lastModifiedTime()Ljava/nio/file/attribute/FileTime;"/> + <method name="size()J"/> + </class> + <class name="java/nio/file/attribute/DosFileAttributeView" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/nio/file/attribute/BasicFileAttributeView"/> + <method name="readAttributes()Ljava/nio/file/attribute/DosFileAttributes;"/> + <method name="setArchive(Z)V"/> + <method name="setHidden(Z)V"/> + <method name="setReadOnly(Z)V"/> + <method name="setSystem(Z)V"/> + </class> + <class name="java/nio/file/attribute/DosFileAttributes" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/nio/file/attribute/BasicFileAttributes"/> + <method name="isArchive()Z"/> + <method name="isHidden()Z"/> + <method name="isReadOnly()Z"/> + <method name="isSystem()Z"/> + </class> + <class name="java/nio/file/attribute/FileAttribute" since="26"> + <extends name="java/lang/Object"/> + <method name="name()Ljava/lang/String;"/> + <method name="value()Ljava/lang/Object;"/> + </class> + <class name="java/nio/file/attribute/FileAttributeView" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/nio/file/attribute/AttributeView"/> + </class> + <class name="java/nio/file/attribute/FileOwnerAttributeView" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/nio/file/attribute/FileAttributeView"/> + <method name="getOwner()Ljava/nio/file/attribute/UserPrincipal;"/> + <method name="setOwner(Ljava/nio/file/attribute/UserPrincipal;)V"/> + </class> + <class name="java/nio/file/attribute/FileStoreAttributeView" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/nio/file/attribute/AttributeView"/> + </class> + <class name="java/nio/file/attribute/FileTime" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Comparable"/> + <method name="<init>()V"/> + <method name="compareTo(Ljava/nio/file/attribute/FileTime;)I"/> + <method name="from(JLjava/util/concurrent/TimeUnit;)Ljava/nio/file/attribute/FileTime;"/> + <method name="from(Ljava/time/Instant;)Ljava/nio/file/attribute/FileTime;"/> + <method name="fromMillis(J)Ljava/nio/file/attribute/FileTime;"/> + <method name="to(Ljava/util/concurrent/TimeUnit;)J"/> + <method name="toInstant()Ljava/time/Instant;"/> + <method name="toMillis()J"/> + </class> + <class name="java/nio/file/attribute/GroupPrincipal" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/nio/file/attribute/UserPrincipal"/> + </class> + <class name="java/nio/file/attribute/PosixFileAttributeView" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/nio/file/attribute/BasicFileAttributeView"/> + <implements name="java/nio/file/attribute/FileOwnerAttributeView"/> + <method name="readAttributes()Ljava/nio/file/attribute/PosixFileAttributes;"/> + <method name="setGroup(Ljava/nio/file/attribute/GroupPrincipal;)V"/> + <method name="setPermissions(Ljava/util/Set;)V"/> + </class> + <class name="java/nio/file/attribute/PosixFileAttributes" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/nio/file/attribute/BasicFileAttributes"/> + <method name="group()Ljava/nio/file/attribute/GroupPrincipal;"/> + <method name="owner()Ljava/nio/file/attribute/UserPrincipal;"/> + <method name="permissions()Ljava/util/Set;"/> + </class> + <class name="java/nio/file/attribute/PosixFilePermission" since="26"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/nio/file/attribute/PosixFilePermission;"/> + <method name="values()[Ljava/nio/file/attribute/PosixFilePermission;"/> + <field name="GROUP_EXECUTE"/> + <field name="GROUP_READ"/> + <field name="GROUP_WRITE"/> + <field name="OTHERS_EXECUTE"/> + <field name="OTHERS_READ"/> + <field name="OTHERS_WRITE"/> + <field name="OWNER_EXECUTE"/> + <field name="OWNER_READ"/> + <field name="OWNER_WRITE"/> + </class> + <class name="java/nio/file/attribute/PosixFilePermissions" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="asFileAttribute(Ljava/util/Set;)Ljava/nio/file/attribute/FileAttribute;"/> + <method name="fromString(Ljava/lang/String;)Ljava/util/Set;"/> + <method name="toString(Ljava/util/Set;)Ljava/lang/String;"/> + </class> + <class name="java/nio/file/attribute/UserDefinedFileAttributeView" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/nio/file/attribute/FileAttributeView"/> + <method name="delete(Ljava/lang/String;)V"/> + <method name="list()Ljava/util/List;"/> + <method name="read(Ljava/lang/String;Ljava/nio/ByteBuffer;)I"/> + <method name="size(Ljava/lang/String;)I"/> + <method name="write(Ljava/lang/String;Ljava/nio/ByteBuffer;)I"/> + </class> + <class name="java/nio/file/attribute/UserPrincipal" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/security/Principal"/> + </class> + <class name="java/nio/file/attribute/UserPrincipalLookupService" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="lookupPrincipalByGroupName(Ljava/lang/String;)Ljava/nio/file/attribute/GroupPrincipal;"/> + <method name="lookupPrincipalByName(Ljava/lang/String;)Ljava/nio/file/attribute/UserPrincipal;"/> + </class> + <class name="java/nio/file/attribute/UserPrincipalNotFoundException" since="26"> + <extends name="java/io/IOException"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getName()Ljava/lang/String;"/> + </class> + <class name="java/nio/file/spi/FileSystemProvider" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="checkAccess(Ljava/nio/file/Path;[Ljava/nio/file/AccessMode;)V"/> + <method name="copy(Ljava/nio/file/Path;Ljava/nio/file/Path;[Ljava/nio/file/CopyOption;)V"/> + <method name="createDirectory(Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)V"/> + <method name="createLink(Ljava/nio/file/Path;Ljava/nio/file/Path;)V"/> + <method name="createSymbolicLink(Ljava/nio/file/Path;Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)V"/> + <method name="delete(Ljava/nio/file/Path;)V"/> + <method name="deleteIfExists(Ljava/nio/file/Path;)Z"/> + <method name="getFileAttributeView(Ljava/nio/file/Path;Ljava/lang/Class;[Ljava/nio/file/LinkOption;)Ljava/nio/file/attribute/FileAttributeView;"/> + <method name="getFileStore(Ljava/nio/file/Path;)Ljava/nio/file/FileStore;"/> + <method name="getFileSystem(Ljava/net/URI;)Ljava/nio/file/FileSystem;"/> + <method name="getPath(Ljava/net/URI;)Ljava/nio/file/Path;"/> + <method name="getScheme()Ljava/lang/String;"/> + <method name="installedProviders()Ljava/util/List;"/> + <method name="isHidden(Ljava/nio/file/Path;)Z"/> + <method name="isSameFile(Ljava/nio/file/Path;Ljava/nio/file/Path;)Z"/> + <method name="move(Ljava/nio/file/Path;Ljava/nio/file/Path;[Ljava/nio/file/CopyOption;)V"/> + <method name="newAsynchronousFileChannel(Ljava/nio/file/Path;Ljava/util/Set;Ljava/util/concurrent/ExecutorService;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/channels/AsynchronousFileChannel;"/> + <method name="newByteChannel(Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/channels/SeekableByteChannel;"/> + <method name="newDirectoryStream(Ljava/nio/file/Path;Ljava/nio/file/DirectoryStream$Filter;)Ljava/nio/file/DirectoryStream;"/> + <method name="newFileChannel(Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/channels/FileChannel;"/> + <method name="newFileSystem(Ljava/net/URI;Ljava/util/Map;)Ljava/nio/file/FileSystem;"/> + <method name="newFileSystem(Ljava/nio/file/Path;Ljava/util/Map;)Ljava/nio/file/FileSystem;"/> + <method name="newInputStream(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/io/InputStream;"/> + <method name="newOutputStream(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/io/OutputStream;"/> + <method name="readAttributes(Ljava/nio/file/Path;Ljava/lang/Class;[Ljava/nio/file/LinkOption;)Ljava/nio/file/attribute/BasicFileAttributes;"/> + <method name="readAttributes(Ljava/nio/file/Path;Ljava/lang/String;[Ljava/nio/file/LinkOption;)Ljava/util/Map;"/> + <method name="readSymbolicLink(Ljava/nio/file/Path;)Ljava/nio/file/Path;"/> + <method name="setAttribute(Ljava/nio/file/Path;Ljava/lang/String;Ljava/lang/Object;[Ljava/nio/file/LinkOption;)V"/> + </class> + <class name="java/nio/file/spi/FileTypeDetector" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="probeContentType(Ljava/nio/file/Path;)Ljava/lang/String;"/> + </class> + <class name="java/security/AccessControlContext" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/security/AccessControlContext;Ljava/security/DomainCombiner;)V"/> + <method name="<init>([Ljava/security/ProtectionDomain;)V"/> + <method name="checkPermission(Ljava/security/Permission;)V"/> + <method name="getDomainCombiner()Ljava/security/DomainCombiner;"/> + </class> + <class name="java/security/AccessControlException" since="1"> + <extends name="java/lang/SecurityException"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/security/Permission;)V"/> + <method name="getPermission()Ljava/security/Permission;"/> + </class> + <class name="java/security/AccessController" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="checkPermission(Ljava/security/Permission;)V"/> + <method name="doPrivileged(Ljava/security/PrivilegedAction;)Ljava/lang/Object;"/> + <method name="doPrivileged(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;"/> + <method name="doPrivileged(Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;"/> + <method name="doPrivileged(Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;"/> + <method name="doPrivilegedWithCombiner(Ljava/security/PrivilegedAction;)Ljava/lang/Object;" since="9"/> + <method name="doPrivilegedWithCombiner(Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;" since="9"/> + <method name="getContext()Ljava/security/AccessControlContext;"/> + </class> + <class name="java/security/AlgorithmConstraints" since="24"> + <extends name="java/lang/Object"/> + <method name="permits(Ljava/util/Set;Ljava/lang/String;Ljava/security/AlgorithmParameters;)Z"/> + <method name="permits(Ljava/util/Set;Ljava/lang/String;Ljava/security/Key;Ljava/security/AlgorithmParameters;)Z"/> + <method name="permits(Ljava/util/Set;Ljava/security/Key;)Z"/> + </class> + <class name="java/security/AlgorithmParameterGenerator" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/security/AlgorithmParameterGeneratorSpi;Ljava/security/Provider;Ljava/lang/String;)V"/> + <method name="generateParameters()Ljava/security/AlgorithmParameters;"/> + <method name="getAlgorithm()Ljava/lang/String;"/> + <method name="getInstance(Ljava/lang/String;)Ljava/security/AlgorithmParameterGenerator;"/> + <method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/AlgorithmParameterGenerator;"/> + <method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/AlgorithmParameterGenerator;"/> + <method name="getProvider()Ljava/security/Provider;"/> + <method name="init(I)V"/> + <method name="init(ILjava/security/SecureRandom;)V"/> + <method name="init(Ljava/security/spec/AlgorithmParameterSpec;)V"/> + <method name="init(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V"/> + </class> + <class name="java/security/AlgorithmParameterGeneratorSpi" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="engineGenerateParameters()Ljava/security/AlgorithmParameters;"/> + <method name="engineInit(ILjava/security/SecureRandom;)V"/> + <method name="engineInit(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V"/> + </class> + <class name="java/security/AlgorithmParameters" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/security/AlgorithmParametersSpi;Ljava/security/Provider;Ljava/lang/String;)V"/> + <method name="getAlgorithm()Ljava/lang/String;"/> + <method name="getEncoded()[B"/> + <method name="getEncoded(Ljava/lang/String;)[B"/> + <method name="getInstance(Ljava/lang/String;)Ljava/security/AlgorithmParameters;"/> + <method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/AlgorithmParameters;"/> + <method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/AlgorithmParameters;"/> + <method name="getParameterSpec(Ljava/lang/Class;)Ljava/security/spec/AlgorithmParameterSpec;"/> + <method name="getProvider()Ljava/security/Provider;"/> + <method name="init(Ljava/security/spec/AlgorithmParameterSpec;)V"/> + <method name="init([B)V"/> + <method name="init([BLjava/lang/String;)V"/> + </class> + <class name="java/security/AlgorithmParametersSpi" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="engineGetEncoded()[B"/> + <method name="engineGetEncoded(Ljava/lang/String;)[B"/> + <method name="engineGetParameterSpec(Ljava/lang/Class;)Ljava/security/spec/AlgorithmParameterSpec;"/> + <method name="engineInit(Ljava/security/spec/AlgorithmParameterSpec;)V"/> + <method name="engineInit([B)V"/> + <method name="engineInit([BLjava/lang/String;)V"/> + <method name="engineToString()Ljava/lang/String;"/> + </class> + <class name="java/security/AllPermission" since="1"> + <extends name="java/security/Permission"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="java/security/AuthProvider" since="1"> + <extends name="java/security/Provider"/> + <method name="<init>(Ljava/lang/String;DLjava/lang/String;)V"/> + <method name="login(Ljavax/security/auth/Subject;Ljavax/security/auth/callback/CallbackHandler;)V"/> + <method name="logout()V"/> + <method name="setCallbackHandler(Ljavax/security/auth/callback/CallbackHandler;)V"/> + </class> + <class name="java/security/BasicPermission" since="1"> + <extends name="java/security/Permission"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="java/security/Certificate" since="1" deprecated="3"> + <extends name="java/lang/Object"/> + <method name="decode(Ljava/io/InputStream;)V"/> + <method name="encode(Ljava/io/OutputStream;)V"/> + <method name="getFormat()Ljava/lang/String;"/> + <method name="getGuarantor()Ljava/security/Principal;"/> + <method name="getPrincipal()Ljava/security/Principal;"/> + <method name="getPublicKey()Ljava/security/PublicKey;"/> + <method name="toString(Z)Ljava/lang/String;"/> + </class> + <class name="java/security/CodeSigner" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(Ljava/security/cert/CertPath;Ljava/security/Timestamp;)V"/> + <method name="getSignerCertPath()Ljava/security/cert/CertPath;"/> + <method name="getTimestamp()Ljava/security/Timestamp;"/> + </class> + <class name="java/security/CodeSource" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(Ljava/net/URL;[Ljava/security/CodeSigner;)V"/> + <method name="<init>(Ljava/net/URL;[Ljava/security/cert/Certificate;)V"/> + <method name="getCertificates()[Ljava/security/cert/Certificate;"/> + <method name="getCodeSigners()[Ljava/security/CodeSigner;"/> + <method name="getLocation()Ljava/net/URL;"/> + <method name="implies(Ljava/security/CodeSource;)Z"/> + </class> + <class name="java/security/CryptoPrimitive" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/security/CryptoPrimitive;"/> + <method name="values()[Ljava/security/CryptoPrimitive;"/> + <field name="BLOCK_CIPHER"/> + <field name="KEY_AGREEMENT"/> + <field name="KEY_ENCAPSULATION"/> + <field name="KEY_WRAP"/> + <field name="MAC"/> + <field name="MESSAGE_DIGEST"/> + <field name="PUBLIC_KEY_ENCRYPTION"/> + <field name="SECURE_RANDOM"/> + <field name="SIGNATURE"/> + <field name="STREAM_CIPHER"/> + </class> + <class name="java/security/DigestException" since="1"> + <extends name="java/security/GeneralSecurityException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/security/DigestInputStream" since="1"> + <extends name="java/io/FilterInputStream"/> + <method name="<init>(Ljava/io/InputStream;Ljava/security/MessageDigest;)V"/> + <method name="getMessageDigest()Ljava/security/MessageDigest;"/> + <method name="on(Z)V"/> + <method name="setMessageDigest(Ljava/security/MessageDigest;)V"/> + <field name="digest"/> + </class> + <class name="java/security/DigestOutputStream" since="1"> + <extends name="java/io/FilterOutputStream"/> + <method name="<init>(Ljava/io/OutputStream;Ljava/security/MessageDigest;)V"/> + <method name="getMessageDigest()Ljava/security/MessageDigest;"/> + <method name="on(Z)V"/> + <method name="setMessageDigest(Ljava/security/MessageDigest;)V"/> + <field name="digest"/> + </class> + <class name="java/security/DomainCombiner" since="1"> + <extends name="java/lang/Object"/> + <method name="combine([Ljava/security/ProtectionDomain;[Ljava/security/ProtectionDomain;)[Ljava/security/ProtectionDomain;"/> + </class> + <class name="java/security/DomainLoadStoreParameter" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/security/KeyStore$LoadStoreParameter"/> + <method name="<init>(Ljava/net/URI;Ljava/util/Map;)V"/> + <method name="getConfiguration()Ljava/net/URI;"/> + <method name="getProtectionParams()Ljava/util/Map;"/> + </class> + <class name="java/security/GeneralSecurityException" since="1"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/security/Guard" since="1"> + <extends name="java/lang/Object"/> + <method name="checkGuard(Ljava/lang/Object;)V"/> + </class> + <class name="java/security/GuardedObject" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(Ljava/lang/Object;Ljava/security/Guard;)V"/> + <method name="getObject()Ljava/lang/Object;"/> + </class> + <class name="java/security/Identity" since="1" deprecated="3"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/security/Principal"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/security/IdentityScope;)V"/> + <method name="addCertificate(Ljava/security/Certificate;)V"/> + <method name="certificates()[Ljava/security/Certificate;"/> + <method name="getInfo()Ljava/lang/String;"/> + <method name="getPublicKey()Ljava/security/PublicKey;"/> + <method name="getScope()Ljava/security/IdentityScope;"/> + <method name="identityEquals(Ljava/security/Identity;)Z"/> + <method name="removeCertificate(Ljava/security/Certificate;)V"/> + <method name="setInfo(Ljava/lang/String;)V"/> + <method name="setPublicKey(Ljava/security/PublicKey;)V"/> + <method name="toString(Z)Ljava/lang/String;"/> + </class> + <class name="java/security/IdentityScope" since="1" deprecated="3"> + <extends name="java/security/Identity"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/security/IdentityScope;)V"/> + <method name="addIdentity(Ljava/security/Identity;)V"/> + <method name="getIdentity(Ljava/lang/String;)Ljava/security/Identity;"/> + <method name="getIdentity(Ljava/security/Principal;)Ljava/security/Identity;"/> + <method name="getIdentity(Ljava/security/PublicKey;)Ljava/security/Identity;"/> + <method name="getSystemScope()Ljava/security/IdentityScope;"/> + <method name="identities()Ljava/util/Enumeration;"/> + <method name="removeIdentity(Ljava/security/Identity;)V"/> + <method name="setSystemScope(Ljava/security/IdentityScope;)V"/> + <method name="size()I"/> + </class> + <class name="java/security/InvalidAlgorithmParameterException" since="1"> + <extends name="java/security/GeneralSecurityException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/security/InvalidKeyException" since="1"> + <extends name="java/security/KeyException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/security/InvalidParameterException" since="1"> + <extends name="java/lang/IllegalArgumentException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/security/Key" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="getAlgorithm()Ljava/lang/String;"/> + <method name="getEncoded()[B"/> + <method name="getFormat()Ljava/lang/String;"/> + <field name="serialVersionUID"/> + </class> + <class name="java/security/KeyException" since="1"> + <extends name="java/security/GeneralSecurityException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/security/KeyFactory" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/security/KeyFactorySpi;Ljava/security/Provider;Ljava/lang/String;)V"/> + <method name="generatePrivate(Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey;"/> + <method name="generatePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;"/> + <method name="getAlgorithm()Ljava/lang/String;"/> + <method name="getInstance(Ljava/lang/String;)Ljava/security/KeyFactory;"/> + <method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/KeyFactory;"/> + <method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/KeyFactory;"/> + <method name="getKeySpec(Ljava/security/Key;Ljava/lang/Class;)Ljava/security/spec/KeySpec;"/> + <method name="getProvider()Ljava/security/Provider;"/> + <method name="translateKey(Ljava/security/Key;)Ljava/security/Key;"/> + </class> + <class name="java/security/KeyFactorySpi" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="engineGeneratePrivate(Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey;"/> + <method name="engineGeneratePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;"/> + <method name="engineGetKeySpec(Ljava/security/Key;Ljava/lang/Class;)Ljava/security/spec/KeySpec;"/> + <method name="engineTranslateKey(Ljava/security/Key;)Ljava/security/Key;"/> + </class> + <class name="java/security/KeyManagementException" since="1"> + <extends name="java/security/KeyException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/security/KeyPair" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(Ljava/security/PublicKey;Ljava/security/PrivateKey;)V"/> + <method name="getPrivate()Ljava/security/PrivateKey;"/> + <method name="getPublic()Ljava/security/PublicKey;"/> + </class> + <class name="java/security/KeyPairGenerator" since="1"> + <extends name="java/security/KeyPairGeneratorSpi"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="genKeyPair()Ljava/security/KeyPair;"/> + <method name="getAlgorithm()Ljava/lang/String;"/> + <method name="getInstance(Ljava/lang/String;)Ljava/security/KeyPairGenerator;"/> + <method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/KeyPairGenerator;"/> + <method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/KeyPairGenerator;"/> + <method name="getProvider()Ljava/security/Provider;"/> + <method name="initialize(I)V"/> + <method name="initialize(Ljava/security/spec/AlgorithmParameterSpec;)V"/> + </class> + <class name="java/security/KeyPairGeneratorSpi" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="generateKeyPair()Ljava/security/KeyPair;"/> + <method name="initialize(ILjava/security/SecureRandom;)V"/> + <method name="initialize(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V"/> + </class> + <class name="java/security/KeyRep" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(Ljava/security/KeyRep$Type;Ljava/lang/String;Ljava/lang/String;[B)V"/> + <method name="readResolve()Ljava/lang/Object;"/> + </class> + <class name="java/security/KeyRep$Type" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/security/KeyRep$Type;"/> + <method name="values()[Ljava/security/KeyRep$Type;"/> + <field name="PRIVATE"/> + <field name="PUBLIC"/> + <field name="SECRET"/> + </class> + <class name="java/security/KeyStore" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/security/KeyStoreSpi;Ljava/security/Provider;Ljava/lang/String;)V"/> + <method name="aliases()Ljava/util/Enumeration;"/> + <method name="containsAlias(Ljava/lang/String;)Z"/> + <method name="deleteEntry(Ljava/lang/String;)V"/> + <method name="entryInstanceOf(Ljava/lang/String;Ljava/lang/Class;)Z"/> + <method name="getCertificate(Ljava/lang/String;)Ljava/security/cert/Certificate;"/> + <method name="getCertificateAlias(Ljava/security/cert/Certificate;)Ljava/lang/String;"/> + <method name="getCertificateChain(Ljava/lang/String;)[Ljava/security/cert/Certificate;"/> + <method name="getCreationDate(Ljava/lang/String;)Ljava/util/Date;"/> + <method name="getDefaultType()Ljava/lang/String;"/> + <method name="getEntry(Ljava/lang/String;Ljava/security/KeyStore$ProtectionParameter;)Ljava/security/KeyStore$Entry;"/> + <method name="getInstance(Ljava/lang/String;)Ljava/security/KeyStore;"/> + <method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/KeyStore;"/> + <method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/KeyStore;"/> + <method name="getKey(Ljava/lang/String;[C)Ljava/security/Key;"/> + <method name="getProvider()Ljava/security/Provider;"/> + <method name="getType()Ljava/lang/String;"/> + <method name="isCertificateEntry(Ljava/lang/String;)Z"/> + <method name="isKeyEntry(Ljava/lang/String;)Z"/> + <method name="load(Ljava/io/InputStream;[C)V"/> + <method name="load(Ljava/security/KeyStore$LoadStoreParameter;)V"/> + <method name="setCertificateEntry(Ljava/lang/String;Ljava/security/cert/Certificate;)V"/> + <method name="setEntry(Ljava/lang/String;Ljava/security/KeyStore$Entry;Ljava/security/KeyStore$ProtectionParameter;)V"/> + <method name="setKeyEntry(Ljava/lang/String;Ljava/security/Key;[C[Ljava/security/cert/Certificate;)V"/> + <method name="setKeyEntry(Ljava/lang/String;[B[Ljava/security/cert/Certificate;)V"/> + <method name="size()I"/> + <method name="store(Ljava/io/OutputStream;[C)V"/> + <method name="store(Ljava/security/KeyStore$LoadStoreParameter;)V"/> + </class> + <class name="java/security/KeyStore$Builder" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getKeyStore()Ljava/security/KeyStore;"/> + <method name="getProtectionParameter(Ljava/lang/String;)Ljava/security/KeyStore$ProtectionParameter;"/> + <method name="newInstance(Ljava/lang/String;Ljava/security/Provider;Ljava/io/File;Ljava/security/KeyStore$ProtectionParameter;)Ljava/security/KeyStore$Builder;"/> + <method name="newInstance(Ljava/lang/String;Ljava/security/Provider;Ljava/security/KeyStore$ProtectionParameter;)Ljava/security/KeyStore$Builder;"/> + <method name="newInstance(Ljava/security/KeyStore;Ljava/security/KeyStore$ProtectionParameter;)Ljava/security/KeyStore$Builder;"/> + </class> + <class name="java/security/KeyStore$CallbackHandlerProtection" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/KeyStore$ProtectionParameter"/> + <method name="<init>(Ljavax/security/auth/callback/CallbackHandler;)V"/> + <method name="getCallbackHandler()Ljavax/security/auth/callback/CallbackHandler;"/> + </class> + <class name="java/security/KeyStore$Entry" since="1"> + <extends name="java/lang/Object"/> + <method name="getAttributes()Ljava/util/Set;" since="26"/> + </class> + <class name="java/security/KeyStore$Entry$Attribute" since="26"> + <extends name="java/lang/Object"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getValue()Ljava/lang/String;"/> + </class> + <class name="java/security/KeyStore$LoadStoreParameter" since="1"> + <extends name="java/lang/Object"/> + <method name="getProtectionParameter()Ljava/security/KeyStore$ProtectionParameter;"/> + </class> + <class name="java/security/KeyStore$PasswordProtection" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/KeyStore$ProtectionParameter"/> + <implements name="javax/security/auth/Destroyable"/> + <method name="<init>([C)V"/> + <method name="<init>([CLjava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)V" since="26"/> + <method name="getPassword()[C"/> + <method name="getProtectionAlgorithm()Ljava/lang/String;" since="26"/> + <method name="getProtectionParameters()Ljava/security/spec/AlgorithmParameterSpec;" since="26"/> + </class> + <class name="java/security/KeyStore$PrivateKeyEntry" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/KeyStore$Entry"/> + <method name="<init>(Ljava/security/PrivateKey;[Ljava/security/cert/Certificate;)V"/> + <method name="<init>(Ljava/security/PrivateKey;[Ljava/security/cert/Certificate;Ljava/util/Set;)V" since="26"/> + <method name="getCertificate()Ljava/security/cert/Certificate;"/> + <method name="getCertificateChain()[Ljava/security/cert/Certificate;"/> + <method name="getPrivateKey()Ljava/security/PrivateKey;"/> + </class> + <class name="java/security/KeyStore$ProtectionParameter" since="1"> + <extends name="java/lang/Object"/> + </class> + <class name="java/security/KeyStore$SecretKeyEntry" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/KeyStore$Entry"/> + <method name="<init>(Ljavax/crypto/SecretKey;)V"/> + <method name="<init>(Ljavax/crypto/SecretKey;Ljava/util/Set;)V" since="26"/> + <method name="getSecretKey()Ljavax/crypto/SecretKey;"/> + </class> + <class name="java/security/KeyStore$TrustedCertificateEntry" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/KeyStore$Entry"/> + <method name="<init>(Ljava/security/cert/Certificate;)V"/> + <method name="<init>(Ljava/security/cert/Certificate;Ljava/util/Set;)V" since="26"/> + <method name="getTrustedCertificate()Ljava/security/cert/Certificate;"/> + </class> + <class name="java/security/KeyStoreException" since="1"> + <extends name="java/security/GeneralSecurityException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/security/KeyStoreSpi" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="engineAliases()Ljava/util/Enumeration;"/> + <method name="engineContainsAlias(Ljava/lang/String;)Z"/> + <method name="engineDeleteEntry(Ljava/lang/String;)V"/> + <method name="engineEntryInstanceOf(Ljava/lang/String;Ljava/lang/Class;)Z"/> + <method name="engineGetCertificate(Ljava/lang/String;)Ljava/security/cert/Certificate;"/> + <method name="engineGetCertificateAlias(Ljava/security/cert/Certificate;)Ljava/lang/String;"/> + <method name="engineGetCertificateChain(Ljava/lang/String;)[Ljava/security/cert/Certificate;"/> + <method name="engineGetCreationDate(Ljava/lang/String;)Ljava/util/Date;"/> + <method name="engineGetEntry(Ljava/lang/String;Ljava/security/KeyStore$ProtectionParameter;)Ljava/security/KeyStore$Entry;"/> + <method name="engineGetKey(Ljava/lang/String;[C)Ljava/security/Key;"/> + <method name="engineIsCertificateEntry(Ljava/lang/String;)Z"/> + <method name="engineIsKeyEntry(Ljava/lang/String;)Z"/> + <method name="engineLoad(Ljava/io/InputStream;[C)V"/> + <method name="engineLoad(Ljava/security/KeyStore$LoadStoreParameter;)V"/> + <method name="engineSetCertificateEntry(Ljava/lang/String;Ljava/security/cert/Certificate;)V"/> + <method name="engineSetEntry(Ljava/lang/String;Ljava/security/KeyStore$Entry;Ljava/security/KeyStore$ProtectionParameter;)V"/> + <method name="engineSetKeyEntry(Ljava/lang/String;Ljava/security/Key;[C[Ljava/security/cert/Certificate;)V"/> + <method name="engineSetKeyEntry(Ljava/lang/String;[B[Ljava/security/cert/Certificate;)V"/> + <method name="engineSize()I"/> + <method name="engineStore(Ljava/io/OutputStream;[C)V"/> + <method name="engineStore(Ljava/security/KeyStore$LoadStoreParameter;)V"/> + </class> + <class name="java/security/MessageDigest" since="1"> + <extends name="java/security/MessageDigestSpi"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="digest()[B"/> + <method name="digest([B)[B"/> + <method name="digest([BII)I"/> + <method name="getAlgorithm()Ljava/lang/String;"/> + <method name="getDigestLength()I"/> + <method name="getInstance(Ljava/lang/String;)Ljava/security/MessageDigest;"/> + <method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/MessageDigest;"/> + <method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/MessageDigest;"/> + <method name="getProvider()Ljava/security/Provider;"/> + <method name="isEqual([B[B)Z"/> + <method name="reset()V"/> + <method name="update(B)V"/> + <method name="update(Ljava/nio/ByteBuffer;)V"/> + <method name="update([B)V"/> + <method name="update([BII)V"/> + </class> + <class name="java/security/MessageDigestSpi" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="engineDigest()[B"/> + <method name="engineDigest([BII)I"/> + <method name="engineGetDigestLength()I"/> + <method name="engineReset()V"/> + <method name="engineUpdate(B)V"/> + <method name="engineUpdate(Ljava/nio/ByteBuffer;)V"/> + <method name="engineUpdate([BII)V"/> + </class> + <class name="java/security/NoSuchAlgorithmException" since="1"> + <extends name="java/security/GeneralSecurityException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/security/NoSuchProviderException" since="1"> + <extends name="java/security/GeneralSecurityException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/security/PKCS12Attribute" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/security/KeyStore$Entry$Attribute"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>([B)V"/> + <method name="getEncoded()[B"/> + </class> + <class name="java/security/Permission" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/security/Guard"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getActions()Ljava/lang/String;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="implies(Ljava/security/Permission;)Z"/> + <method name="newPermissionCollection()Ljava/security/PermissionCollection;"/> + </class> + <class name="java/security/PermissionCollection" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="add(Ljava/security/Permission;)V"/> + <method name="elements()Ljava/util/Enumeration;"/> + <method name="implies(Ljava/security/Permission;)Z"/> + <method name="isReadOnly()Z"/> + <method name="setReadOnly()V"/> + </class> + <class name="java/security/Permissions" since="1"> + <extends name="java/security/PermissionCollection"/> + <method name="<init>()V"/> + </class> + <class name="java/security/Policy" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getInstance(Ljava/lang/String;Ljava/security/Policy$Parameters;)Ljava/security/Policy;" since="9"/> + <method name="getInstance(Ljava/lang/String;Ljava/security/Policy$Parameters;Ljava/lang/String;)Ljava/security/Policy;" since="9"/> + <method name="getInstance(Ljava/lang/String;Ljava/security/Policy$Parameters;Ljava/security/Provider;)Ljava/security/Policy;" since="9"/> + <method name="getParameters()Ljava/security/Policy$Parameters;" since="9"/> + <method name="getPermissions(Ljava/security/CodeSource;)Ljava/security/PermissionCollection;"/> + <method name="getPermissions(Ljava/security/ProtectionDomain;)Ljava/security/PermissionCollection;"/> + <method name="getPolicy()Ljava/security/Policy;"/> + <method name="getProvider()Ljava/security/Provider;" since="9"/> + <method name="getType()Ljava/lang/String;" since="9"/> + <method name="implies(Ljava/security/ProtectionDomain;Ljava/security/Permission;)Z"/> + <method name="refresh()V"/> + <method name="setPolicy(Ljava/security/Policy;)V"/> + <field name="UNSUPPORTED_EMPTY_COLLECTION" since="9"/> + </class> + <class name="java/security/Policy$Parameters" since="9"> + <extends name="java/lang/Object"/> + </class> + <class name="java/security/PolicySpi" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="engineGetPermissions(Ljava/security/CodeSource;)Ljava/security/PermissionCollection;"/> + <method name="engineGetPermissions(Ljava/security/ProtectionDomain;)Ljava/security/PermissionCollection;"/> + <method name="engineImplies(Ljava/security/ProtectionDomain;Ljava/security/Permission;)Z"/> + <method name="engineRefresh()V"/> + </class> + <class name="java/security/Principal" since="1"> + <extends name="java/lang/Object"/> + <method name="getName()Ljava/lang/String;"/> + <method name="implies(Ljavax/security/auth/Subject;)Z" since="26"/> + </class> + <class name="java/security/PrivateKey" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/Key"/> + <implements name="javax/security/auth/Destroyable" since="26"/> + <field name="serialVersionUID"/> + </class> + <class name="java/security/PrivilegedAction" since="1"> + <extends name="java/lang/Object"/> + <method name="run()Ljava/lang/Object;"/> + </class> + <class name="java/security/PrivilegedActionException" since="1"> + <extends name="java/lang/Exception"/> + <method name="<init>(Ljava/lang/Exception;)V"/> + <method name="getException()Ljava/lang/Exception;"/> + </class> + <class name="java/security/PrivilegedExceptionAction" since="1"> + <extends name="java/lang/Object"/> + <method name="run()Ljava/lang/Object;"/> + </class> + <class name="java/security/ProtectionDomain" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/security/CodeSource;Ljava/security/PermissionCollection;)V"/> + <method name="<init>(Ljava/security/CodeSource;Ljava/security/PermissionCollection;Ljava/lang/ClassLoader;[Ljava/security/Principal;)V"/> + <method name="getClassLoader()Ljava/lang/ClassLoader;"/> + <method name="getCodeSource()Ljava/security/CodeSource;"/> + <method name="getPermissions()Ljava/security/PermissionCollection;"/> + <method name="getPrincipals()[Ljava/security/Principal;"/> + <method name="implies(Ljava/security/Permission;)Z"/> + </class> + <class name="java/security/Provider" since="1"> + <extends name="java/util/Properties"/> + <method name="<init>(Ljava/lang/String;DLjava/lang/String;)V"/> + <method name="getInfo()Ljava/lang/String;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getService(Ljava/lang/String;Ljava/lang/String;)Ljava/security/Provider$Service;"/> + <method name="getServices()Ljava/util/Set;"/> + <method name="getVersion()D"/> + <method name="putService(Ljava/security/Provider$Service;)V"/> + <method name="removeService(Ljava/security/Provider$Service;)V"/> + </class> + <class name="java/security/Provider$Service" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/security/Provider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/Map;)V"/> + <method name="getAlgorithm()Ljava/lang/String;"/> + <method name="getAttribute(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getClassName()Ljava/lang/String;"/> + <method name="getProvider()Ljava/security/Provider;"/> + <method name="getType()Ljava/lang/String;"/> + <method name="newInstance(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="supportsParameter(Ljava/lang/Object;)Z"/> + </class> + <class name="java/security/ProviderException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/security/PublicKey" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/Key"/> + <field name="serialVersionUID"/> + </class> + <class name="java/security/SecureClassLoader" since="1"> + <extends name="java/lang/ClassLoader"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/ClassLoader;)V"/> + <method name="defineClass(Ljava/lang/String;Ljava/nio/ByteBuffer;Ljava/security/CodeSource;)Ljava/lang/Class;"/> + <method name="defineClass(Ljava/lang/String;[BIILjava/security/CodeSource;)Ljava/lang/Class;"/> + <method name="getPermissions(Ljava/security/CodeSource;)Ljava/security/PermissionCollection;"/> + </class> + <class name="java/security/SecureRandom" since="1"> + <extends name="java/util/Random"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/security/SecureRandomSpi;Ljava/security/Provider;)V"/> + <method name="<init>([B)V"/> + <method name="generateSeed(I)[B"/> + <method name="getAlgorithm()Ljava/lang/String;"/> + <method name="getInstance(Ljava/lang/String;)Ljava/security/SecureRandom;"/> + <method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/SecureRandom;"/> + <method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/SecureRandom;"/> + <method name="getInstanceStrong()Ljava/security/SecureRandom;" since="26"/> + <method name="getProvider()Ljava/security/Provider;"/> + <method name="getSeed(I)[B"/> + <method name="setSeed([B)V"/> + </class> + <class name="java/security/SecureRandomSpi" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="engineGenerateSeed(I)[B"/> + <method name="engineNextBytes([B)V"/> + <method name="engineSetSeed([B)V"/> + </class> + <class name="java/security/Security" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addProvider(Ljava/security/Provider;)I"/> + <method name="getAlgorithmProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" deprecated="16"/> + <method name="getAlgorithms(Ljava/lang/String;)Ljava/util/Set;"/> + <method name="getProperty(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getProvider(Ljava/lang/String;)Ljava/security/Provider;"/> + <method name="getProviders()[Ljava/security/Provider;"/> + <method name="getProviders(Ljava/lang/String;)[Ljava/security/Provider;"/> + <method name="getProviders(Ljava/util/Map;)[Ljava/security/Provider;"/> + <method name="insertProviderAt(Ljava/security/Provider;I)I"/> + <method name="removeProvider(Ljava/lang/String;)V"/> + <method name="setProperty(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="java/security/SecurityPermission" since="1"> + <extends name="java/security/BasicPermission"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="java/security/Signature" since="1"> + <extends name="java/security/SignatureSpi"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getAlgorithm()Ljava/lang/String;"/> + <method name="getInstance(Ljava/lang/String;)Ljava/security/Signature;"/> + <method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/Signature;"/> + <method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/Signature;"/> + <method name="getParameter(Ljava/lang/String;)Ljava/lang/Object;" deprecated="16"/> + <method name="getParameters()Ljava/security/AlgorithmParameters;"/> + <method name="getProvider()Ljava/security/Provider;"/> + <method name="initSign(Ljava/security/PrivateKey;)V"/> + <method name="initSign(Ljava/security/PrivateKey;Ljava/security/SecureRandom;)V"/> + <method name="initVerify(Ljava/security/PublicKey;)V"/> + <method name="initVerify(Ljava/security/cert/Certificate;)V"/> + <method name="setParameter(Ljava/lang/String;Ljava/lang/Object;)V" deprecated="16"/> + <method name="setParameter(Ljava/security/spec/AlgorithmParameterSpec;)V"/> + <method name="sign()[B"/> + <method name="sign([BII)I"/> + <method name="update(B)V"/> + <method name="update(Ljava/nio/ByteBuffer;)V"/> + <method name="update([B)V"/> + <method name="update([BII)V"/> + <method name="verify([B)Z"/> + <method name="verify([BII)Z"/> + <field name="SIGN"/> + <field name="UNINITIALIZED"/> + <field name="VERIFY"/> + <field name="state"/> + </class> + <class name="java/security/SignatureException" since="1"> + <extends name="java/security/GeneralSecurityException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/security/SignatureSpi" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="engineGetParameter(Ljava/lang/String;)Ljava/lang/Object;" deprecated="16"/> + <method name="engineGetParameters()Ljava/security/AlgorithmParameters;"/> + <method name="engineInitSign(Ljava/security/PrivateKey;)V"/> + <method name="engineInitSign(Ljava/security/PrivateKey;Ljava/security/SecureRandom;)V"/> + <method name="engineInitVerify(Ljava/security/PublicKey;)V"/> + <method name="engineSetParameter(Ljava/lang/String;Ljava/lang/Object;)V" deprecated="16"/> + <method name="engineSetParameter(Ljava/security/spec/AlgorithmParameterSpec;)V"/> + <method name="engineSign()[B"/> + <method name="engineSign([BII)I"/> + <method name="engineUpdate(B)V"/> + <method name="engineUpdate(Ljava/nio/ByteBuffer;)V"/> + <method name="engineUpdate([BII)V"/> + <method name="engineVerify([B)Z"/> + <method name="engineVerify([BII)Z"/> + <field name="appRandom"/> + </class> + <class name="java/security/SignedObject" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(Ljava/io/Serializable;Ljava/security/PrivateKey;Ljava/security/Signature;)V"/> + <method name="getAlgorithm()Ljava/lang/String;"/> + <method name="getObject()Ljava/lang/Object;"/> + <method name="getSignature()[B"/> + <method name="verify(Ljava/security/PublicKey;Ljava/security/Signature;)Z"/> + </class> + <class name="java/security/Signer" since="1" deprecated="3"> + <extends name="java/security/Identity"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/security/IdentityScope;)V"/> + <method name="getPrivateKey()Ljava/security/PrivateKey;"/> + <method name="setKeyPair(Ljava/security/KeyPair;)V"/> + </class> + <class name="java/security/Timestamp" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(Ljava/util/Date;Ljava/security/cert/CertPath;)V"/> + <method name="getSignerCertPath()Ljava/security/cert/CertPath;"/> + <method name="getTimestamp()Ljava/util/Date;"/> + </class> + <class name="java/security/UnrecoverableEntryException" since="1"> + <extends name="java/security/GeneralSecurityException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/security/UnrecoverableKeyException" since="1"> + <extends name="java/security/GeneralSecurityException" removed="9"/> + <extends name="java/security/UnrecoverableEntryException" since="9"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/security/UnresolvedPermission" since="1"> + <extends name="java/security/Permission"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/security/cert/Certificate;)V"/> + <method name="getUnresolvedActions()Ljava/lang/String;"/> + <method name="getUnresolvedCerts()[Ljava/security/cert/Certificate;"/> + <method name="getUnresolvedName()Ljava/lang/String;"/> + <method name="getUnresolvedType()Ljava/lang/String;"/> + </class> + <class name="java/security/acl/Acl" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/acl/Owner"/> + <method name="addEntry(Ljava/security/Principal;Ljava/security/acl/AclEntry;)Z"/> + <method name="checkPermission(Ljava/security/Principal;Ljava/security/acl/Permission;)Z"/> + <method name="entries()Ljava/util/Enumeration;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getPermissions(Ljava/security/Principal;)Ljava/util/Enumeration;"/> + <method name="removeEntry(Ljava/security/Principal;Ljava/security/acl/AclEntry;)Z"/> + <method name="setName(Ljava/security/Principal;Ljava/lang/String;)V"/> + </class> + <class name="java/security/acl/AclEntry" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <method name="addPermission(Ljava/security/acl/Permission;)Z"/> + <method name="checkPermission(Ljava/security/acl/Permission;)Z"/> + <method name="getPrincipal()Ljava/security/Principal;"/> + <method name="isNegative()Z"/> + <method name="permissions()Ljava/util/Enumeration;"/> + <method name="removePermission(Ljava/security/acl/Permission;)Z"/> + <method name="setNegativePermissions()V"/> + <method name="setPrincipal(Ljava/security/Principal;)Z"/> + </class> + <class name="java/security/acl/AclNotFoundException" since="1"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + </class> + <class name="java/security/acl/Group" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/Principal"/> + <method name="addMember(Ljava/security/Principal;)Z"/> + <method name="isMember(Ljava/security/Principal;)Z"/> + <method name="members()Ljava/util/Enumeration;"/> + <method name="removeMember(Ljava/security/Principal;)Z"/> + </class> + <class name="java/security/acl/LastOwnerException" since="1"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + </class> + <class name="java/security/acl/NotOwnerException" since="1"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + </class> + <class name="java/security/acl/Owner" since="1"> + <extends name="java/lang/Object"/> + <method name="addOwner(Ljava/security/Principal;Ljava/security/Principal;)Z"/> + <method name="deleteOwner(Ljava/security/Principal;Ljava/security/Principal;)Z"/> + <method name="isOwner(Ljava/security/Principal;)Z"/> + </class> + <class name="java/security/acl/Permission" since="1"> + <extends name="java/lang/Object"/> + </class> + <class name="java/security/cert/CRL" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getType()Ljava/lang/String;"/> + <method name="isRevoked(Ljava/security/cert/Certificate;)Z"/> + </class> + <class name="java/security/cert/CRLException" since="1"> + <extends name="java/security/GeneralSecurityException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/security/cert/CRLReason" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/security/cert/CRLReason;"/> + <method name="values()[Ljava/security/cert/CRLReason;"/> + <field name="AA_COMPROMISE"/> + <field name="AFFILIATION_CHANGED"/> + <field name="CA_COMPROMISE"/> + <field name="CERTIFICATE_HOLD"/> + <field name="CESSATION_OF_OPERATION"/> + <field name="KEY_COMPROMISE"/> + <field name="PRIVILEGE_WITHDRAWN"/> + <field name="REMOVE_FROM_CRL"/> + <field name="SUPERSEDED"/> + <field name="UNSPECIFIED"/> + <field name="UNUSED"/> + </class> + <class name="java/security/cert/CRLSelector" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <method name="match(Ljava/security/cert/CRL;)Z"/> + </class> + <class name="java/security/cert/CertPath" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getCertificates()Ljava/util/List;"/> + <method name="getEncoded()[B"/> + <method name="getEncoded(Ljava/lang/String;)[B"/> + <method name="getEncodings()Ljava/util/Iterator;"/> + <method name="getType()Ljava/lang/String;"/> + <method name="writeReplace()Ljava/lang/Object;"/> + </class> + <class name="java/security/cert/CertPath$CertPathRep" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(Ljava/lang/String;[B)V"/> + <method name="readResolve()Ljava/lang/Object;"/> + </class> + <class name="java/security/cert/CertPathBuilder" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/security/cert/CertPathBuilderSpi;Ljava/security/Provider;Ljava/lang/String;)V"/> + <method name="build(Ljava/security/cert/CertPathParameters;)Ljava/security/cert/CertPathBuilderResult;"/> + <method name="getAlgorithm()Ljava/lang/String;"/> + <method name="getDefaultType()Ljava/lang/String;"/> + <method name="getInstance(Ljava/lang/String;)Ljava/security/cert/CertPathBuilder;"/> + <method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/cert/CertPathBuilder;"/> + <method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/cert/CertPathBuilder;"/> + <method name="getProvider()Ljava/security/Provider;"/> + <method name="getRevocationChecker()Ljava/security/cert/CertPathChecker;" since="24"/> + </class> + <class name="java/security/cert/CertPathBuilderException" since="1"> + <extends name="java/security/GeneralSecurityException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/security/cert/CertPathBuilderResult" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <method name="getCertPath()Ljava/security/cert/CertPath;"/> + </class> + <class name="java/security/cert/CertPathBuilderSpi" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="engineBuild(Ljava/security/cert/CertPathParameters;)Ljava/security/cert/CertPathBuilderResult;"/> + <method name="engineGetRevocationChecker()Ljava/security/cert/CertPathChecker;" since="24"/> + </class> + <class name="java/security/cert/CertPathChecker" since="24"> + <extends name="java/lang/Object"/> + <method name="check(Ljava/security/cert/Certificate;)V"/> + <method name="init(Z)V"/> + <method name="isForwardCheckingSupported()Z"/> + </class> + <class name="java/security/cert/CertPathParameters" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + </class> + <class name="java/security/cert/CertPathValidator" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/security/cert/CertPathValidatorSpi;Ljava/security/Provider;Ljava/lang/String;)V"/> + <method name="getAlgorithm()Ljava/lang/String;"/> + <method name="getDefaultType()Ljava/lang/String;"/> + <method name="getInstance(Ljava/lang/String;)Ljava/security/cert/CertPathValidator;"/> + <method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/cert/CertPathValidator;"/> + <method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/cert/CertPathValidator;"/> + <method name="getProvider()Ljava/security/Provider;"/> + <method name="getRevocationChecker()Ljava/security/cert/CertPathChecker;" since="24"/> + <method name="validate(Ljava/security/cert/CertPath;Ljava/security/cert/CertPathParameters;)Ljava/security/cert/CertPathValidatorResult;"/> + </class> + <class name="java/security/cert/CertPathValidatorException" since="1"> + <extends name="java/security/GeneralSecurityException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;ILjava/security/cert/CertPathValidatorException$Reason;)V" since="24"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + <method name="getCertPath()Ljava/security/cert/CertPath;"/> + <method name="getIndex()I"/> + <method name="getReason()Ljava/security/cert/CertPathValidatorException$Reason;" since="24"/> + </class> + <class name="java/security/cert/CertPathValidatorException$BasicReason" since="24"> + <extends name="java/lang/Enum"/> + <implements name="java/security/cert/CertPathValidatorException$Reason"/> + <method name="valueOf(Ljava/lang/String;)Ljava/security/cert/CertPathValidatorException$BasicReason;"/> + <method name="values()[Ljava/security/cert/CertPathValidatorException$BasicReason;"/> + <field name="ALGORITHM_CONSTRAINED"/> + <field name="EXPIRED"/> + <field name="INVALID_SIGNATURE"/> + <field name="NOT_YET_VALID"/> + <field name="REVOKED"/> + <field name="UNDETERMINED_REVOCATION_STATUS"/> + <field name="UNSPECIFIED"/> + </class> + <class name="java/security/cert/CertPathValidatorException$Reason" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + </class> + <class name="java/security/cert/CertPathValidatorResult" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + </class> + <class name="java/security/cert/CertPathValidatorSpi" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="engineGetRevocationChecker()Ljava/security/cert/CertPathChecker;" since="24"/> + <method name="engineValidate(Ljava/security/cert/CertPath;Ljava/security/cert/CertPathParameters;)Ljava/security/cert/CertPathValidatorResult;"/> + </class> + <class name="java/security/cert/CertSelector" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <method name="match(Ljava/security/cert/Certificate;)Z"/> + </class> + <class name="java/security/cert/CertStore" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/security/cert/CertStoreSpi;Ljava/security/Provider;Ljava/lang/String;Ljava/security/cert/CertStoreParameters;)V"/> + <method name="getCRLs(Ljava/security/cert/CRLSelector;)Ljava/util/Collection;"/> + <method name="getCertStoreParameters()Ljava/security/cert/CertStoreParameters;"/> + <method name="getCertificates(Ljava/security/cert/CertSelector;)Ljava/util/Collection;"/> + <method name="getDefaultType()Ljava/lang/String;"/> + <method name="getInstance(Ljava/lang/String;Ljava/security/cert/CertStoreParameters;)Ljava/security/cert/CertStore;"/> + <method name="getInstance(Ljava/lang/String;Ljava/security/cert/CertStoreParameters;Ljava/lang/String;)Ljava/security/cert/CertStore;"/> + <method name="getInstance(Ljava/lang/String;Ljava/security/cert/CertStoreParameters;Ljava/security/Provider;)Ljava/security/cert/CertStore;"/> + <method name="getProvider()Ljava/security/Provider;"/> + <method name="getType()Ljava/lang/String;"/> + </class> + <class name="java/security/cert/CertStoreException" since="1"> + <extends name="java/security/GeneralSecurityException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/security/cert/CertStoreParameters" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + </class> + <class name="java/security/cert/CertStoreSpi" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/security/cert/CertStoreParameters;)V"/> + <method name="engineGetCRLs(Ljava/security/cert/CRLSelector;)Ljava/util/Collection;"/> + <method name="engineGetCertificates(Ljava/security/cert/CertSelector;)Ljava/util/Collection;"/> + </class> + <class name="java/security/cert/Certificate" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getEncoded()[B"/> + <method name="getPublicKey()Ljava/security/PublicKey;"/> + <method name="getType()Ljava/lang/String;"/> + <method name="verify(Ljava/security/PublicKey;)V"/> + <method name="verify(Ljava/security/PublicKey;Ljava/lang/String;)V"/> + <method name="verify(Ljava/security/PublicKey;Ljava/security/Provider;)V" since="26"/> + <method name="writeReplace()Ljava/lang/Object;"/> + </class> + <class name="java/security/cert/Certificate$CertificateRep" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(Ljava/lang/String;[B)V"/> + <method name="readResolve()Ljava/lang/Object;"/> + </class> + <class name="java/security/cert/CertificateEncodingException" since="1"> + <extends name="java/security/cert/CertificateException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/security/cert/CertificateException" since="1"> + <extends name="java/security/GeneralSecurityException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/security/cert/CertificateExpiredException" since="1"> + <extends name="java/security/cert/CertificateException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/security/cert/CertificateFactory" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/security/cert/CertificateFactorySpi;Ljava/security/Provider;Ljava/lang/String;)V"/> + <method name="generateCRL(Ljava/io/InputStream;)Ljava/security/cert/CRL;"/> + <method name="generateCRLs(Ljava/io/InputStream;)Ljava/util/Collection;"/> + <method name="generateCertPath(Ljava/io/InputStream;)Ljava/security/cert/CertPath;"/> + <method name="generateCertPath(Ljava/io/InputStream;Ljava/lang/String;)Ljava/security/cert/CertPath;"/> + <method name="generateCertPath(Ljava/util/List;)Ljava/security/cert/CertPath;"/> + <method name="generateCertificate(Ljava/io/InputStream;)Ljava/security/cert/Certificate;"/> + <method name="generateCertificates(Ljava/io/InputStream;)Ljava/util/Collection;"/> + <method name="getCertPathEncodings()Ljava/util/Iterator;"/> + <method name="getInstance(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;"/> + <method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/cert/CertificateFactory;"/> + <method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/cert/CertificateFactory;"/> + <method name="getProvider()Ljava/security/Provider;"/> + <method name="getType()Ljava/lang/String;"/> + </class> + <class name="java/security/cert/CertificateFactorySpi" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="engineGenerateCRL(Ljava/io/InputStream;)Ljava/security/cert/CRL;"/> + <method name="engineGenerateCRLs(Ljava/io/InputStream;)Ljava/util/Collection;"/> + <method name="engineGenerateCertPath(Ljava/io/InputStream;)Ljava/security/cert/CertPath;"/> + <method name="engineGenerateCertPath(Ljava/io/InputStream;Ljava/lang/String;)Ljava/security/cert/CertPath;"/> + <method name="engineGenerateCertPath(Ljava/util/List;)Ljava/security/cert/CertPath;"/> + <method name="engineGenerateCertificate(Ljava/io/InputStream;)Ljava/security/cert/Certificate;"/> + <method name="engineGenerateCertificates(Ljava/io/InputStream;)Ljava/util/Collection;"/> + <method name="engineGetCertPathEncodings()Ljava/util/Iterator;"/> + </class> + <class name="java/security/cert/CertificateNotYetValidException" since="1"> + <extends name="java/security/cert/CertificateException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/security/cert/CertificateParsingException" since="1"> + <extends name="java/security/cert/CertificateException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/security/cert/CertificateRevokedException" since="24"> + <extends name="java/security/cert/CertificateException"/> + <method name="<init>(Ljava/util/Date;Ljava/security/cert/CRLReason;Ljavax/security/auth/x500/X500Principal;Ljava/util/Map;)V"/> + <method name="getAuthorityName()Ljavax/security/auth/x500/X500Principal;"/> + <method name="getExtensions()Ljava/util/Map;"/> + <method name="getInvalidityDate()Ljava/util/Date;"/> + <method name="getRevocationDate()Ljava/util/Date;"/> + <method name="getRevocationReason()Ljava/security/cert/CRLReason;"/> + </class> + <class name="java/security/cert/CollectionCertStoreParameters" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/cert/CertStoreParameters"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/util/Collection;)V"/> + <method name="getCollection()Ljava/util/Collection;"/> + </class> + <class name="java/security/cert/Extension" since="24"> + <extends name="java/lang/Object"/> + <method name="encode(Ljava/io/OutputStream;)V"/> + <method name="getId()Ljava/lang/String;"/> + <method name="getValue()[B"/> + <method name="isCritical()Z"/> + </class> + <class name="java/security/cert/LDAPCertStoreParameters" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/cert/CertStoreParameters"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="getPort()I"/> + <method name="getServerName()Ljava/lang/String;"/> + </class> + <class name="java/security/cert/PKIXBuilderParameters" since="1"> + <extends name="java/security/cert/PKIXParameters"/> + <method name="<init>(Ljava/security/KeyStore;Ljava/security/cert/CertSelector;)V"/> + <method name="<init>(Ljava/util/Set;Ljava/security/cert/CertSelector;)V"/> + <method name="getMaxPathLength()I"/> + <method name="setMaxPathLength(I)V"/> + </class> + <class name="java/security/cert/PKIXCertPathBuilderResult" since="1"> + <extends name="java/security/cert/PKIXCertPathValidatorResult"/> + <implements name="java/security/cert/CertPathBuilderResult"/> + <method name="<init>(Ljava/security/cert/CertPath;Ljava/security/cert/TrustAnchor;Ljava/security/cert/PolicyNode;Ljava/security/PublicKey;)V"/> + </class> + <class name="java/security/cert/PKIXCertPathChecker" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <implements name="java/security/cert/CertPathChecker" since="24"/> + <method name="<init>()V"/> + <method name="check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V"/> + <method name="getSupportedExtensions()Ljava/util/Set;"/> + <method name="init(Z)V"/> + <method name="isForwardCheckingSupported()Z"/> + </class> + <class name="java/security/cert/PKIXCertPathValidatorResult" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/cert/CertPathValidatorResult"/> + <method name="<init>(Ljava/security/cert/TrustAnchor;Ljava/security/cert/PolicyNode;Ljava/security/PublicKey;)V"/> + <method name="getPolicyTree()Ljava/security/cert/PolicyNode;"/> + <method name="getPublicKey()Ljava/security/PublicKey;"/> + <method name="getTrustAnchor()Ljava/security/cert/TrustAnchor;"/> + </class> + <class name="java/security/cert/PKIXParameters" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/cert/CertPathParameters"/> + <method name="<init>(Ljava/security/KeyStore;)V"/> + <method name="<init>(Ljava/util/Set;)V"/> + <method name="addCertPathChecker(Ljava/security/cert/PKIXCertPathChecker;)V"/> + <method name="addCertStore(Ljava/security/cert/CertStore;)V"/> + <method name="getCertPathCheckers()Ljava/util/List;"/> + <method name="getCertStores()Ljava/util/List;"/> + <method name="getDate()Ljava/util/Date;"/> + <method name="getInitialPolicies()Ljava/util/Set;"/> + <method name="getPolicyQualifiersRejected()Z"/> + <method name="getSigProvider()Ljava/lang/String;"/> + <method name="getTargetCertConstraints()Ljava/security/cert/CertSelector;"/> + <method name="getTrustAnchors()Ljava/util/Set;"/> + <method name="isAnyPolicyInhibited()Z"/> + <method name="isExplicitPolicyRequired()Z"/> + <method name="isPolicyMappingInhibited()Z"/> + <method name="isRevocationEnabled()Z"/> + <method name="setAnyPolicyInhibited(Z)V"/> + <method name="setCertPathCheckers(Ljava/util/List;)V"/> + <method name="setCertStores(Ljava/util/List;)V"/> + <method name="setDate(Ljava/util/Date;)V"/> + <method name="setExplicitPolicyRequired(Z)V"/> + <method name="setInitialPolicies(Ljava/util/Set;)V"/> + <method name="setPolicyMappingInhibited(Z)V"/> + <method name="setPolicyQualifiersRejected(Z)V"/> + <method name="setRevocationEnabled(Z)V"/> + <method name="setSigProvider(Ljava/lang/String;)V"/> + <method name="setTargetCertConstraints(Ljava/security/cert/CertSelector;)V"/> + <method name="setTrustAnchors(Ljava/util/Set;)V"/> + </class> + <class name="java/security/cert/PKIXReason" since="24"> + <extends name="java/lang/Enum"/> + <implements name="java/security/cert/CertPathValidatorException$Reason"/> + <method name="valueOf(Ljava/lang/String;)Ljava/security/cert/PKIXReason;"/> + <method name="values()[Ljava/security/cert/PKIXReason;"/> + <field name="INVALID_KEY_USAGE"/> + <field name="INVALID_NAME"/> + <field name="INVALID_POLICY"/> + <field name="NAME_CHAINING"/> + <field name="NOT_CA_CERT"/> + <field name="NO_TRUST_ANCHOR"/> + <field name="PATH_TOO_LONG"/> + <field name="UNRECOGNIZED_CRIT_EXT"/> + </class> + <class name="java/security/cert/PKIXRevocationChecker" since="24"> + <extends name="java/security/cert/PKIXCertPathChecker"/> + <method name="<init>()V"/> + <method name="clone()Ljava/security/cert/PKIXRevocationChecker;"/> + <method name="getOcspExtensions()Ljava/util/List;"/> + <method name="getOcspResponder()Ljava/net/URI;"/> + <method name="getOcspResponderCert()Ljava/security/cert/X509Certificate;"/> + <method name="getOcspResponses()Ljava/util/Map;"/> + <method name="getOptions()Ljava/util/Set;"/> + <method name="getSoftFailExceptions()Ljava/util/List;"/> + <method name="setOcspExtensions(Ljava/util/List;)V"/> + <method name="setOcspResponder(Ljava/net/URI;)V"/> + <method name="setOcspResponderCert(Ljava/security/cert/X509Certificate;)V"/> + <method name="setOcspResponses(Ljava/util/Map;)V"/> + <method name="setOptions(Ljava/util/Set;)V"/> + </class> + <class name="java/security/cert/PKIXRevocationChecker$Option" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/security/cert/PKIXRevocationChecker$Option;"/> + <method name="values()[Ljava/security/cert/PKIXRevocationChecker$Option;"/> + <field name="NO_FALLBACK"/> + <field name="ONLY_END_ENTITY"/> + <field name="PREFER_CRLS"/> + <field name="SOFT_FAIL"/> + </class> + <class name="java/security/cert/PolicyNode" since="1"> + <extends name="java/lang/Object"/> + <method name="getChildren()Ljava/util/Iterator;"/> + <method name="getDepth()I"/> + <method name="getExpectedPolicies()Ljava/util/Set;"/> + <method name="getParent()Ljava/security/cert/PolicyNode;"/> + <method name="getPolicyQualifiers()Ljava/util/Set;"/> + <method name="getValidPolicy()Ljava/lang/String;"/> + <method name="isCritical()Z"/> + </class> + <class name="java/security/cert/PolicyQualifierInfo" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>([B)V"/> + <method name="getEncoded()[B"/> + <method name="getPolicyQualifier()[B"/> + <method name="getPolicyQualifierId()Ljava/lang/String;"/> + </class> + <class name="java/security/cert/TrustAnchor" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;Ljava/security/PublicKey;[B)V"/> + <method name="<init>(Ljava/security/cert/X509Certificate;[B)V"/> + <method name="<init>(Ljavax/security/auth/x500/X500Principal;Ljava/security/PublicKey;[B)V"/> + <method name="getCA()Ljavax/security/auth/x500/X500Principal;"/> + <method name="getCAName()Ljava/lang/String;"/> + <method name="getCAPublicKey()Ljava/security/PublicKey;"/> + <method name="getNameConstraints()[B"/> + <method name="getTrustedCert()Ljava/security/cert/X509Certificate;"/> + </class> + <class name="java/security/cert/X509CRL" since="1"> + <extends name="java/security/cert/CRL"/> + <implements name="java/security/cert/X509Extension"/> + <method name="<init>()V"/> + <method name="getEncoded()[B"/> + <method name="getIssuerDN()Ljava/security/Principal;"/> + <method name="getIssuerX500Principal()Ljavax/security/auth/x500/X500Principal;"/> + <method name="getNextUpdate()Ljava/util/Date;"/> + <method name="getRevokedCertificate(Ljava/math/BigInteger;)Ljava/security/cert/X509CRLEntry;"/> + <method name="getRevokedCertificate(Ljava/security/cert/X509Certificate;)Ljava/security/cert/X509CRLEntry;"/> + <method name="getRevokedCertificates()Ljava/util/Set;"/> + <method name="getSigAlgName()Ljava/lang/String;"/> + <method name="getSigAlgOID()Ljava/lang/String;"/> + <method name="getSigAlgParams()[B"/> + <method name="getSignature()[B"/> + <method name="getTBSCertList()[B"/> + <method name="getThisUpdate()Ljava/util/Date;"/> + <method name="getVersion()I"/> + <method name="verify(Ljava/security/PublicKey;)V"/> + <method name="verify(Ljava/security/PublicKey;Ljava/lang/String;)V"/> + <method name="verify(Ljava/security/PublicKey;Ljava/security/Provider;)V" since="26"/> + </class> + <class name="java/security/cert/X509CRLEntry" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/cert/X509Extension"/> + <method name="<init>()V"/> + <method name="getCertificateIssuer()Ljavax/security/auth/x500/X500Principal;"/> + <method name="getEncoded()[B"/> + <method name="getRevocationDate()Ljava/util/Date;"/> + <method name="getRevocationReason()Ljava/security/cert/CRLReason;" since="24"/> + <method name="getSerialNumber()Ljava/math/BigInteger;"/> + <method name="hasExtensions()Z"/> + </class> + <class name="java/security/cert/X509CRLSelector" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/cert/CRLSelector"/> + <method name="<init>()V"/> + <method name="addIssuer(Ljavax/security/auth/x500/X500Principal;)V"/> + <method name="addIssuerName(Ljava/lang/String;)V"/> + <method name="addIssuerName([B)V"/> + <method name="getCertificateChecking()Ljava/security/cert/X509Certificate;"/> + <method name="getDateAndTime()Ljava/util/Date;"/> + <method name="getIssuerNames()Ljava/util/Collection;"/> + <method name="getIssuers()Ljava/util/Collection;"/> + <method name="getMaxCRL()Ljava/math/BigInteger;"/> + <method name="getMinCRL()Ljava/math/BigInteger;"/> + <method name="setCertificateChecking(Ljava/security/cert/X509Certificate;)V"/> + <method name="setDateAndTime(Ljava/util/Date;)V"/> + <method name="setIssuerNames(Ljava/util/Collection;)V"/> + <method name="setIssuers(Ljava/util/Collection;)V"/> + <method name="setMaxCRLNumber(Ljava/math/BigInteger;)V"/> + <method name="setMinCRLNumber(Ljava/math/BigInteger;)V"/> + </class> + <class name="java/security/cert/X509CertSelector" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/cert/CertSelector"/> + <method name="<init>()V"/> + <method name="addPathToName(ILjava/lang/String;)V"/> + <method name="addPathToName(I[B)V"/> + <method name="addSubjectAlternativeName(ILjava/lang/String;)V"/> + <method name="addSubjectAlternativeName(I[B)V"/> + <method name="getAuthorityKeyIdentifier()[B"/> + <method name="getBasicConstraints()I"/> + <method name="getCertificate()Ljava/security/cert/X509Certificate;"/> + <method name="getCertificateValid()Ljava/util/Date;"/> + <method name="getExtendedKeyUsage()Ljava/util/Set;"/> + <method name="getIssuer()Ljavax/security/auth/x500/X500Principal;"/> + <method name="getIssuerAsBytes()[B"/> + <method name="getIssuerAsString()Ljava/lang/String;"/> + <method name="getKeyUsage()[Z"/> + <method name="getMatchAllSubjectAltNames()Z"/> + <method name="getNameConstraints()[B"/> + <method name="getPathToNames()Ljava/util/Collection;"/> + <method name="getPolicy()Ljava/util/Set;"/> + <method name="getPrivateKeyValid()Ljava/util/Date;"/> + <method name="getSerialNumber()Ljava/math/BigInteger;"/> + <method name="getSubject()Ljavax/security/auth/x500/X500Principal;"/> + <method name="getSubjectAlternativeNames()Ljava/util/Collection;"/> + <method name="getSubjectAsBytes()[B"/> + <method name="getSubjectAsString()Ljava/lang/String;"/> + <method name="getSubjectKeyIdentifier()[B"/> + <method name="getSubjectPublicKey()Ljava/security/PublicKey;"/> + <method name="getSubjectPublicKeyAlgID()Ljava/lang/String;"/> + <method name="setAuthorityKeyIdentifier([B)V"/> + <method name="setBasicConstraints(I)V"/> + <method name="setCertificate(Ljava/security/cert/X509Certificate;)V"/> + <method name="setCertificateValid(Ljava/util/Date;)V"/> + <method name="setExtendedKeyUsage(Ljava/util/Set;)V"/> + <method name="setIssuer(Ljava/lang/String;)V"/> + <method name="setIssuer(Ljavax/security/auth/x500/X500Principal;)V"/> + <method name="setIssuer([B)V"/> + <method name="setKeyUsage([Z)V"/> + <method name="setMatchAllSubjectAltNames(Z)V"/> + <method name="setNameConstraints([B)V"/> + <method name="setPathToNames(Ljava/util/Collection;)V"/> + <method name="setPolicy(Ljava/util/Set;)V"/> + <method name="setPrivateKeyValid(Ljava/util/Date;)V"/> + <method name="setSerialNumber(Ljava/math/BigInteger;)V"/> + <method name="setSubject(Ljava/lang/String;)V"/> + <method name="setSubject(Ljavax/security/auth/x500/X500Principal;)V"/> + <method name="setSubject([B)V"/> + <method name="setSubjectAlternativeNames(Ljava/util/Collection;)V"/> + <method name="setSubjectKeyIdentifier([B)V"/> + <method name="setSubjectPublicKey(Ljava/security/PublicKey;)V"/> + <method name="setSubjectPublicKey([B)V"/> + <method name="setSubjectPublicKeyAlgID(Ljava/lang/String;)V"/> + </class> + <class name="java/security/cert/X509Certificate" since="1"> + <extends name="java/security/cert/Certificate"/> + <implements name="java/security/cert/X509Extension"/> + <method name="<init>()V"/> + <method name="checkValidity()V"/> + <method name="checkValidity(Ljava/util/Date;)V"/> + <method name="getBasicConstraints()I"/> + <method name="getExtendedKeyUsage()Ljava/util/List;"/> + <method name="getIssuerAlternativeNames()Ljava/util/Collection;"/> + <method name="getIssuerDN()Ljava/security/Principal;"/> + <method name="getIssuerUniqueID()[Z"/> + <method name="getIssuerX500Principal()Ljavax/security/auth/x500/X500Principal;"/> + <method name="getKeyUsage()[Z"/> + <method name="getNotAfter()Ljava/util/Date;"/> + <method name="getNotBefore()Ljava/util/Date;"/> + <method name="getSerialNumber()Ljava/math/BigInteger;"/> + <method name="getSigAlgName()Ljava/lang/String;"/> + <method name="getSigAlgOID()Ljava/lang/String;"/> + <method name="getSigAlgParams()[B"/> + <method name="getSignature()[B"/> + <method name="getSubjectAlternativeNames()Ljava/util/Collection;"/> + <method name="getSubjectDN()Ljava/security/Principal;"/> + <method name="getSubjectUniqueID()[Z"/> + <method name="getSubjectX500Principal()Ljavax/security/auth/x500/X500Principal;"/> + <method name="getTBSCertificate()[B"/> + <method name="getVersion()I"/> + <method name="verify(Ljava/security/PublicKey;Ljava/security/Provider;)V" since="24"/> + </class> + <class name="java/security/cert/X509Extension" since="1"> + <extends name="java/lang/Object"/> + <method name="getCriticalExtensionOIDs()Ljava/util/Set;"/> + <method name="getExtensionValue(Ljava/lang/String;)[B"/> + <method name="getNonCriticalExtensionOIDs()Ljava/util/Set;"/> + <method name="hasUnsupportedCriticalExtension()Z"/> + </class> + <class name="java/security/interfaces/DSAKey" since="1"> + <extends name="java/lang/Object"/> + <method name="getParams()Ljava/security/interfaces/DSAParams;"/> + </class> + <class name="java/security/interfaces/DSAKeyPairGenerator" since="1"> + <extends name="java/lang/Object"/> + <method name="initialize(IZLjava/security/SecureRandom;)V"/> + <method name="initialize(Ljava/security/interfaces/DSAParams;Ljava/security/SecureRandom;)V"/> + </class> + <class name="java/security/interfaces/DSAParams" since="1"> + <extends name="java/lang/Object"/> + <method name="getG()Ljava/math/BigInteger;"/> + <method name="getP()Ljava/math/BigInteger;"/> + <method name="getQ()Ljava/math/BigInteger;"/> + </class> + <class name="java/security/interfaces/DSAPrivateKey" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/PrivateKey"/> + <implements name="java/security/interfaces/DSAKey"/> + <method name="getX()Ljava/math/BigInteger;"/> + <field name="serialVersionUID"/> + </class> + <class name="java/security/interfaces/DSAPublicKey" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/PublicKey"/> + <implements name="java/security/interfaces/DSAKey"/> + <method name="getY()Ljava/math/BigInteger;"/> + <field name="serialVersionUID"/> + </class> + <class name="java/security/interfaces/ECKey" since="1"> + <extends name="java/lang/Object"/> + <method name="getParams()Ljava/security/spec/ECParameterSpec;"/> + </class> + <class name="java/security/interfaces/ECPrivateKey" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/PrivateKey"/> + <implements name="java/security/interfaces/ECKey"/> + <method name="getS()Ljava/math/BigInteger;"/> + <field name="serialVersionUID"/> + </class> + <class name="java/security/interfaces/ECPublicKey" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/PublicKey"/> + <implements name="java/security/interfaces/ECKey"/> + <method name="getW()Ljava/security/spec/ECPoint;"/> + <field name="serialVersionUID"/> + </class> + <class name="java/security/interfaces/RSAKey" since="1"> + <extends name="java/lang/Object"/> + <method name="getModulus()Ljava/math/BigInteger;"/> + </class> + <class name="java/security/interfaces/RSAMultiPrimePrivateCrtKey" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/interfaces/RSAPrivateKey"/> + <method name="getCrtCoefficient()Ljava/math/BigInteger;"/> + <method name="getOtherPrimeInfo()[Ljava/security/spec/RSAOtherPrimeInfo;"/> + <method name="getPrimeExponentP()Ljava/math/BigInteger;"/> + <method name="getPrimeExponentQ()Ljava/math/BigInteger;"/> + <method name="getPrimeP()Ljava/math/BigInteger;"/> + <method name="getPrimeQ()Ljava/math/BigInteger;"/> + <method name="getPublicExponent()Ljava/math/BigInteger;"/> + <field name="serialVersionUID"/> + </class> + <class name="java/security/interfaces/RSAPrivateCrtKey" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/interfaces/RSAPrivateKey"/> + <method name="getCrtCoefficient()Ljava/math/BigInteger;"/> + <method name="getPrimeExponentP()Ljava/math/BigInteger;"/> + <method name="getPrimeExponentQ()Ljava/math/BigInteger;"/> + <method name="getPrimeP()Ljava/math/BigInteger;"/> + <method name="getPrimeQ()Ljava/math/BigInteger;"/> + <method name="getPublicExponent()Ljava/math/BigInteger;"/> + <field name="serialVersionUID"/> + </class> + <class name="java/security/interfaces/RSAPrivateKey" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/PrivateKey"/> + <implements name="java/security/interfaces/RSAKey"/> + <method name="getPrivateExponent()Ljava/math/BigInteger;"/> + <field name="serialVersionUID"/> + </class> + <class name="java/security/interfaces/RSAPublicKey" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/PublicKey"/> + <implements name="java/security/interfaces/RSAKey"/> + <method name="getPublicExponent()Ljava/math/BigInteger;"/> + <field name="serialVersionUID"/> + </class> + <class name="java/security/spec/AlgorithmParameterSpec" since="1"> + <extends name="java/lang/Object"/> + </class> + <class name="java/security/spec/DSAParameterSpec" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/interfaces/DSAParams"/> + <implements name="java/security/spec/AlgorithmParameterSpec"/> + <method name="<init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V"/> + </class> + <class name="java/security/spec/DSAPrivateKeySpec" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/KeySpec"/> + <method name="<init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V"/> + <method name="getG()Ljava/math/BigInteger;"/> + <method name="getP()Ljava/math/BigInteger;"/> + <method name="getQ()Ljava/math/BigInteger;"/> + <method name="getX()Ljava/math/BigInteger;"/> + </class> + <class name="java/security/spec/DSAPublicKeySpec" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/KeySpec"/> + <method name="<init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V"/> + <method name="getG()Ljava/math/BigInteger;"/> + <method name="getP()Ljava/math/BigInteger;"/> + <method name="getQ()Ljava/math/BigInteger;"/> + <method name="getY()Ljava/math/BigInteger;"/> + </class> + <class name="java/security/spec/ECField" since="1"> + <extends name="java/lang/Object"/> + <method name="getFieldSize()I"/> + </class> + <class name="java/security/spec/ECFieldF2m" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/ECField"/> + <method name="<init>(I)V"/> + <method name="<init>(ILjava/math/BigInteger;)V"/> + <method name="<init>(I[I)V"/> + <method name="getM()I"/> + <method name="getMidTermsOfReductionPolynomial()[I"/> + <method name="getReductionPolynomial()Ljava/math/BigInteger;"/> + </class> + <class name="java/security/spec/ECFieldFp" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/ECField"/> + <method name="<init>(Ljava/math/BigInteger;)V"/> + <method name="getP()Ljava/math/BigInteger;"/> + </class> + <class name="java/security/spec/ECGenParameterSpec" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/AlgorithmParameterSpec"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getName()Ljava/lang/String;"/> + </class> + <class name="java/security/spec/ECParameterSpec" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/AlgorithmParameterSpec"/> + <method name="<init>(Ljava/security/spec/EllipticCurve;Ljava/security/spec/ECPoint;Ljava/math/BigInteger;I)V"/> + <method name="getCofactor()I"/> + <method name="getCurve()Ljava/security/spec/EllipticCurve;"/> + <method name="getGenerator()Ljava/security/spec/ECPoint;"/> + <method name="getOrder()Ljava/math/BigInteger;"/> + </class> + <class name="java/security/spec/ECPoint" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/math/BigInteger;Ljava/math/BigInteger;)V"/> + <method name="getAffineX()Ljava/math/BigInteger;"/> + <method name="getAffineY()Ljava/math/BigInteger;"/> + <field name="POINT_INFINITY"/> + </class> + <class name="java/security/spec/ECPrivateKeySpec" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/KeySpec"/> + <method name="<init>(Ljava/math/BigInteger;Ljava/security/spec/ECParameterSpec;)V"/> + <method name="getParams()Ljava/security/spec/ECParameterSpec;"/> + <method name="getS()Ljava/math/BigInteger;"/> + </class> + <class name="java/security/spec/ECPublicKeySpec" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/KeySpec"/> + <method name="<init>(Ljava/security/spec/ECPoint;Ljava/security/spec/ECParameterSpec;)V"/> + <method name="getParams()Ljava/security/spec/ECParameterSpec;"/> + <method name="getW()Ljava/security/spec/ECPoint;"/> + </class> + <class name="java/security/spec/EllipticCurve" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/security/spec/ECField;Ljava/math/BigInteger;Ljava/math/BigInteger;)V"/> + <method name="<init>(Ljava/security/spec/ECField;Ljava/math/BigInteger;Ljava/math/BigInteger;[B)V"/> + <method name="getA()Ljava/math/BigInteger;"/> + <method name="getB()Ljava/math/BigInteger;"/> + <method name="getField()Ljava/security/spec/ECField;"/> + <method name="getSeed()[B"/> + </class> + <class name="java/security/spec/EncodedKeySpec" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/KeySpec"/> + <method name="<init>([B)V"/> + <method name="getEncoded()[B"/> + <method name="getFormat()Ljava/lang/String;"/> + </class> + <class name="java/security/spec/InvalidKeySpecException" since="1"> + <extends name="java/security/GeneralSecurityException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/security/spec/InvalidParameterSpecException" since="1"> + <extends name="java/security/GeneralSecurityException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/security/spec/KeySpec" since="1"> + <extends name="java/lang/Object"/> + </class> + <class name="java/security/spec/MGF1ParameterSpec" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/AlgorithmParameterSpec"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getDigestAlgorithm()Ljava/lang/String;"/> + <field name="SHA1"/> + <field name="SHA224" since="26"/> + <field name="SHA256"/> + <field name="SHA384"/> + <field name="SHA512"/> + </class> + <class name="java/security/spec/PKCS8EncodedKeySpec" since="1"> + <extends name="java/security/spec/EncodedKeySpec"/> + <method name="<init>([B)V"/> + </class> + <class name="java/security/spec/PSSParameterSpec" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/AlgorithmParameterSpec"/> + <method name="<init>(I)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;II)V"/> + <method name="getDigestAlgorithm()Ljava/lang/String;"/> + <method name="getMGFAlgorithm()Ljava/lang/String;"/> + <method name="getMGFParameters()Ljava/security/spec/AlgorithmParameterSpec;"/> + <method name="getSaltLength()I"/> + <method name="getTrailerField()I"/> + <field name="DEFAULT"/> + </class> + <class name="java/security/spec/RSAKeyGenParameterSpec" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/AlgorithmParameterSpec"/> + <method name="<init>(ILjava/math/BigInteger;)V"/> + <method name="getKeysize()I"/> + <method name="getPublicExponent()Ljava/math/BigInteger;"/> + <field name="F0"/> + <field name="F4"/> + </class> + <class name="java/security/spec/RSAMultiPrimePrivateCrtKeySpec" since="1"> + <extends name="java/security/spec/RSAPrivateKeySpec"/> + <method name="<init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;[Ljava/security/spec/RSAOtherPrimeInfo;)V"/> + <method name="getCrtCoefficient()Ljava/math/BigInteger;"/> + <method name="getOtherPrimeInfo()[Ljava/security/spec/RSAOtherPrimeInfo;"/> + <method name="getPrimeExponentP()Ljava/math/BigInteger;"/> + <method name="getPrimeExponentQ()Ljava/math/BigInteger;"/> + <method name="getPrimeP()Ljava/math/BigInteger;"/> + <method name="getPrimeQ()Ljava/math/BigInteger;"/> + <method name="getPublicExponent()Ljava/math/BigInteger;"/> + </class> + <class name="java/security/spec/RSAOtherPrimeInfo" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V"/> + <method name="getCrtCoefficient()Ljava/math/BigInteger;"/> + <method name="getExponent()Ljava/math/BigInteger;"/> + <method name="getPrime()Ljava/math/BigInteger;"/> + </class> + <class name="java/security/spec/RSAPrivateCrtKeySpec" since="1"> + <extends name="java/security/spec/RSAPrivateKeySpec"/> + <method name="<init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V"/> + <method name="getCrtCoefficient()Ljava/math/BigInteger;"/> + <method name="getPrimeExponentP()Ljava/math/BigInteger;"/> + <method name="getPrimeExponentQ()Ljava/math/BigInteger;"/> + <method name="getPrimeP()Ljava/math/BigInteger;"/> + <method name="getPrimeQ()Ljava/math/BigInteger;"/> + <method name="getPublicExponent()Ljava/math/BigInteger;"/> + </class> + <class name="java/security/spec/RSAPrivateKeySpec" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/KeySpec"/> + <method name="<init>(Ljava/math/BigInteger;Ljava/math/BigInteger;)V"/> + <method name="getModulus()Ljava/math/BigInteger;"/> + <method name="getPrivateExponent()Ljava/math/BigInteger;"/> + </class> + <class name="java/security/spec/RSAPublicKeySpec" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/KeySpec"/> + <method name="<init>(Ljava/math/BigInteger;Ljava/math/BigInteger;)V"/> + <method name="getModulus()Ljava/math/BigInteger;"/> + <method name="getPublicExponent()Ljava/math/BigInteger;"/> + </class> + <class name="java/security/spec/X509EncodedKeySpec" since="1"> + <extends name="java/security/spec/EncodedKeySpec"/> + <method name="<init>([B)V"/> + </class> + <class name="java/sql/Array" since="1"> + <extends name="java/lang/Object"/> + <method name="free()V" since="9"/> + <method name="getArray()Ljava/lang/Object;"/> + <method name="getArray(JI)Ljava/lang/Object;"/> + <method name="getArray(JILjava/util/Map;)Ljava/lang/Object;"/> + <method name="getArray(Ljava/util/Map;)Ljava/lang/Object;"/> + <method name="getBaseType()I"/> + <method name="getBaseTypeName()Ljava/lang/String;"/> + <method name="getResultSet()Ljava/sql/ResultSet;"/> + <method name="getResultSet(JI)Ljava/sql/ResultSet;"/> + <method name="getResultSet(JILjava/util/Map;)Ljava/sql/ResultSet;"/> + <method name="getResultSet(Ljava/util/Map;)Ljava/sql/ResultSet;"/> + </class> + <class name="java/sql/BatchUpdateException" since="1"> + <extends name="java/sql/SQLException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;I[I)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;I[ILjava/lang/Throwable;)V" since="9"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;[I)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;[ILjava/lang/Throwable;)V" since="9"/> + <method name="<init>(Ljava/lang/String;[I)V"/> + <method name="<init>(Ljava/lang/String;[ILjava/lang/Throwable;)V" since="9"/> + <method name="<init>(Ljava/lang/Throwable;)V" since="9"/> + <method name="<init>([I)V"/> + <method name="<init>([ILjava/lang/Throwable;)V" since="9"/> + <method name="getUpdateCounts()[I"/> + </class> + <class name="java/sql/Blob" since="1"> + <extends name="java/lang/Object"/> + <method name="free()V" since="9"/> + <method name="getBinaryStream()Ljava/io/InputStream;"/> + <method name="getBinaryStream(JJ)Ljava/io/InputStream;" since="9"/> + <method name="getBytes(JI)[B"/> + <method name="length()J"/> + <method name="position(Ljava/sql/Blob;J)J"/> + <method name="position([BJ)J"/> + <method name="setBinaryStream(J)Ljava/io/OutputStream;"/> + <method name="setBytes(J[B)I"/> + <method name="setBytes(J[BII)I"/> + <method name="truncate(J)V"/> + </class> + <class name="java/sql/CallableStatement" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/sql/PreparedStatement"/> + <method name="getArray(I)Ljava/sql/Array;"/> + <method name="getArray(Ljava/lang/String;)Ljava/sql/Array;"/> + <method name="getBigDecimal(I)Ljava/math/BigDecimal;"/> + <method name="getBigDecimal(II)Ljava/math/BigDecimal;" deprecated="16"/> + <method name="getBigDecimal(Ljava/lang/String;)Ljava/math/BigDecimal;"/> + <method name="getBlob(I)Ljava/sql/Blob;"/> + <method name="getBlob(Ljava/lang/String;)Ljava/sql/Blob;"/> + <method name="getBoolean(I)Z"/> + <method name="getBoolean(Ljava/lang/String;)Z"/> + <method name="getByte(I)B"/> + <method name="getByte(Ljava/lang/String;)B"/> + <method name="getBytes(I)[B"/> + <method name="getBytes(Ljava/lang/String;)[B"/> + <method name="getCharacterStream(I)Ljava/io/Reader;" since="9"/> + <method name="getCharacterStream(Ljava/lang/String;)Ljava/io/Reader;" since="9"/> + <method name="getClob(I)Ljava/sql/Clob;"/> + <method name="getClob(Ljava/lang/String;)Ljava/sql/Clob;"/> + <method name="getDate(I)Ljava/sql/Date;"/> + <method name="getDate(ILjava/util/Calendar;)Ljava/sql/Date;"/> + <method name="getDate(Ljava/lang/String;)Ljava/sql/Date;"/> + <method name="getDate(Ljava/lang/String;Ljava/util/Calendar;)Ljava/sql/Date;"/> + <method name="getDouble(I)D"/> + <method name="getDouble(Ljava/lang/String;)D"/> + <method name="getFloat(I)F"/> + <method name="getFloat(Ljava/lang/String;)F"/> + <method name="getInt(I)I"/> + <method name="getInt(Ljava/lang/String;)I"/> + <method name="getLong(I)J"/> + <method name="getLong(Ljava/lang/String;)J"/> + <method name="getNCharacterStream(I)Ljava/io/Reader;" since="9"/> + <method name="getNCharacterStream(Ljava/lang/String;)Ljava/io/Reader;" since="9"/> + <method name="getNClob(I)Ljava/sql/NClob;" since="9"/> + <method name="getNClob(Ljava/lang/String;)Ljava/sql/NClob;" since="9"/> + <method name="getNString(I)Ljava/lang/String;" since="9"/> + <method name="getNString(Ljava/lang/String;)Ljava/lang/String;" since="9"/> + <method name="getObject(I)Ljava/lang/Object;"/> + <method name="getObject(ILjava/util/Map;)Ljava/lang/Object;"/> + <method name="getObject(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="getObject(Ljava/lang/String;Ljava/util/Map;)Ljava/lang/Object;"/> + <method name="getRef(I)Ljava/sql/Ref;"/> + <method name="getRef(Ljava/lang/String;)Ljava/sql/Ref;"/> + <method name="getRowId(I)Ljava/sql/RowId;" since="9"/> + <method name="getRowId(Ljava/lang/String;)Ljava/sql/RowId;" since="9"/> + <method name="getSQLXML(I)Ljava/sql/SQLXML;" since="9"/> + <method name="getSQLXML(Ljava/lang/String;)Ljava/sql/SQLXML;" since="9"/> + <method name="getShort(I)S"/> + <method name="getShort(Ljava/lang/String;)S"/> + <method name="getString(I)Ljava/lang/String;"/> + <method name="getString(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getTime(I)Ljava/sql/Time;"/> + <method name="getTime(ILjava/util/Calendar;)Ljava/sql/Time;"/> + <method name="getTime(Ljava/lang/String;)Ljava/sql/Time;"/> + <method name="getTime(Ljava/lang/String;Ljava/util/Calendar;)Ljava/sql/Time;"/> + <method name="getTimestamp(I)Ljava/sql/Timestamp;"/> + <method name="getTimestamp(ILjava/util/Calendar;)Ljava/sql/Timestamp;"/> + <method name="getTimestamp(Ljava/lang/String;)Ljava/sql/Timestamp;"/> + <method name="getTimestamp(Ljava/lang/String;Ljava/util/Calendar;)Ljava/sql/Timestamp;"/> + <method name="getURL(I)Ljava/net/URL;"/> + <method name="getURL(Ljava/lang/String;)Ljava/net/URL;"/> + <method name="registerOutParameter(II)V"/> + <method name="registerOutParameter(III)V"/> + <method name="registerOutParameter(IILjava/lang/String;)V"/> + <method name="registerOutParameter(Ljava/lang/String;I)V"/> + <method name="registerOutParameter(Ljava/lang/String;II)V"/> + <method name="registerOutParameter(Ljava/lang/String;ILjava/lang/String;)V"/> + <method name="setAsciiStream(Ljava/lang/String;Ljava/io/InputStream;)V" since="9"/> + <method name="setAsciiStream(Ljava/lang/String;Ljava/io/InputStream;I)V"/> + <method name="setAsciiStream(Ljava/lang/String;Ljava/io/InputStream;J)V" since="9"/> + <method name="setBigDecimal(Ljava/lang/String;Ljava/math/BigDecimal;)V"/> + <method name="setBinaryStream(Ljava/lang/String;Ljava/io/InputStream;)V" since="9"/> + <method name="setBinaryStream(Ljava/lang/String;Ljava/io/InputStream;I)V"/> + <method name="setBinaryStream(Ljava/lang/String;Ljava/io/InputStream;J)V" since="9"/> + <method name="setBlob(Ljava/lang/String;Ljava/io/InputStream;)V" since="9"/> + <method name="setBlob(Ljava/lang/String;Ljava/io/InputStream;J)V" since="9"/> + <method name="setBlob(Ljava/lang/String;Ljava/sql/Blob;)V" since="9"/> + <method name="setBoolean(Ljava/lang/String;Z)V"/> + <method name="setByte(Ljava/lang/String;B)V"/> + <method name="setBytes(Ljava/lang/String;[B)V"/> + <method name="setCharacterStream(Ljava/lang/String;Ljava/io/Reader;)V" since="9"/> + <method name="setCharacterStream(Ljava/lang/String;Ljava/io/Reader;I)V"/> + <method name="setCharacterStream(Ljava/lang/String;Ljava/io/Reader;J)V" since="9"/> + <method name="setClob(Ljava/lang/String;Ljava/io/Reader;)V" since="9"/> + <method name="setClob(Ljava/lang/String;Ljava/io/Reader;J)V" since="9"/> + <method name="setClob(Ljava/lang/String;Ljava/sql/Clob;)V" since="9"/> + <method name="setDate(Ljava/lang/String;Ljava/sql/Date;)V"/> + <method name="setDate(Ljava/lang/String;Ljava/sql/Date;Ljava/util/Calendar;)V"/> + <method name="setDouble(Ljava/lang/String;D)V"/> + <method name="setFloat(Ljava/lang/String;F)V"/> + <method name="setInt(Ljava/lang/String;I)V"/> + <method name="setLong(Ljava/lang/String;J)V"/> + <method name="setNCharacterStream(Ljava/lang/String;Ljava/io/Reader;)V" since="9"/> + <method name="setNCharacterStream(Ljava/lang/String;Ljava/io/Reader;J)V" since="9"/> + <method name="setNClob(Ljava/lang/String;Ljava/io/Reader;)V" since="9"/> + <method name="setNClob(Ljava/lang/String;Ljava/io/Reader;J)V" since="9"/> + <method name="setNClob(Ljava/lang/String;Ljava/sql/NClob;)V" since="9"/> + <method name="setNString(Ljava/lang/String;Ljava/lang/String;)V" since="9"/> + <method name="setNull(Ljava/lang/String;I)V"/> + <method name="setNull(Ljava/lang/String;ILjava/lang/String;)V"/> + <method name="setObject(Ljava/lang/String;Ljava/lang/Object;)V"/> + <method name="setObject(Ljava/lang/String;Ljava/lang/Object;I)V"/> + <method name="setObject(Ljava/lang/String;Ljava/lang/Object;II)V"/> + <method name="setRowId(Ljava/lang/String;Ljava/sql/RowId;)V" since="9"/> + <method name="setSQLXML(Ljava/lang/String;Ljava/sql/SQLXML;)V" since="9"/> + <method name="setShort(Ljava/lang/String;S)V"/> + <method name="setString(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="setTime(Ljava/lang/String;Ljava/sql/Time;)V"/> + <method name="setTime(Ljava/lang/String;Ljava/sql/Time;Ljava/util/Calendar;)V"/> + <method name="setTimestamp(Ljava/lang/String;Ljava/sql/Timestamp;)V"/> + <method name="setTimestamp(Ljava/lang/String;Ljava/sql/Timestamp;Ljava/util/Calendar;)V"/> + <method name="setURL(Ljava/lang/String;Ljava/net/URL;)V"/> + <method name="wasNull()Z"/> + </class> + <class name="java/sql/ClientInfoStatus" since="9"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/sql/ClientInfoStatus;"/> + <method name="values()[Ljava/sql/ClientInfoStatus;"/> + <field name="REASON_UNKNOWN"/> + <field name="REASON_UNKNOWN_PROPERTY"/> + <field name="REASON_VALUE_INVALID"/> + <field name="REASON_VALUE_TRUNCATED"/> + </class> + <class name="java/sql/Clob" since="1"> + <extends name="java/lang/Object"/> + <method name="free()V" since="9"/> + <method name="getAsciiStream()Ljava/io/InputStream;"/> + <method name="getCharacterStream()Ljava/io/Reader;"/> + <method name="getCharacterStream(JJ)Ljava/io/Reader;" since="9"/> + <method name="getSubString(JI)Ljava/lang/String;"/> + <method name="length()J"/> + <method name="position(Ljava/lang/String;J)J"/> + <method name="position(Ljava/sql/Clob;J)J"/> + <method name="setAsciiStream(J)Ljava/io/OutputStream;"/> + <method name="setCharacterStream(J)Ljava/io/Writer;"/> + <method name="setString(JLjava/lang/String;)I"/> + <method name="setString(JLjava/lang/String;II)I"/> + <method name="truncate(J)V"/> + </class> + <class name="java/sql/Connection" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable" since="19"/> + <implements name="java/sql/Wrapper" since="9"/> + <method name="clearWarnings()V"/> + <method name="close()V"/> + <method name="commit()V"/> + <method name="createArrayOf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/sql/Array;" since="9"/> + <method name="createBlob()Ljava/sql/Blob;" since="9"/> + <method name="createClob()Ljava/sql/Clob;" since="9"/> + <method name="createNClob()Ljava/sql/NClob;" since="9"/> + <method name="createSQLXML()Ljava/sql/SQLXML;" since="9"/> + <method name="createStatement()Ljava/sql/Statement;"/> + <method name="createStatement(II)Ljava/sql/Statement;"/> + <method name="createStatement(III)Ljava/sql/Statement;"/> + <method name="createStruct(Ljava/lang/String;[Ljava/lang/Object;)Ljava/sql/Struct;" since="9"/> + <method name="getAutoCommit()Z"/> + <method name="getCatalog()Ljava/lang/String;"/> + <method name="getClientInfo()Ljava/util/Properties;" since="9"/> + <method name="getClientInfo(Ljava/lang/String;)Ljava/lang/String;" since="9"/> + <method name="getHoldability()I"/> + <method name="getMetaData()Ljava/sql/DatabaseMetaData;"/> + <method name="getTransactionIsolation()I"/> + <method name="getTypeMap()Ljava/util/Map;"/> + <method name="getWarnings()Ljava/sql/SQLWarning;"/> + <method name="isClosed()Z"/> + <method name="isReadOnly()Z"/> + <method name="isValid(I)Z" since="9"/> + <method name="nativeSQL(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="prepareCall(Ljava/lang/String;)Ljava/sql/CallableStatement;"/> + <method name="prepareCall(Ljava/lang/String;II)Ljava/sql/CallableStatement;"/> + <method name="prepareCall(Ljava/lang/String;III)Ljava/sql/CallableStatement;"/> + <method name="prepareStatement(Ljava/lang/String;)Ljava/sql/PreparedStatement;"/> + <method name="prepareStatement(Ljava/lang/String;I)Ljava/sql/PreparedStatement;"/> + <method name="prepareStatement(Ljava/lang/String;II)Ljava/sql/PreparedStatement;"/> + <method name="prepareStatement(Ljava/lang/String;III)Ljava/sql/PreparedStatement;"/> + <method name="prepareStatement(Ljava/lang/String;[I)Ljava/sql/PreparedStatement;"/> + <method name="prepareStatement(Ljava/lang/String;[Ljava/lang/String;)Ljava/sql/PreparedStatement;"/> + <method name="releaseSavepoint(Ljava/sql/Savepoint;)V"/> + <method name="rollback()V"/> + <method name="rollback(Ljava/sql/Savepoint;)V"/> + <method name="setAutoCommit(Z)V"/> + <method name="setCatalog(Ljava/lang/String;)V"/> + <method name="setClientInfo(Ljava/lang/String;Ljava/lang/String;)V" since="9"/> + <method name="setClientInfo(Ljava/util/Properties;)V" since="9"/> + <method name="setHoldability(I)V"/> + <method name="setReadOnly(Z)V"/> + <method name="setSavepoint()Ljava/sql/Savepoint;"/> + <method name="setSavepoint(Ljava/lang/String;)Ljava/sql/Savepoint;"/> + <method name="setTransactionIsolation(I)V"/> + <method name="setTypeMap(Ljava/util/Map;)V"/> + <field name="TRANSACTION_NONE"/> + <field name="TRANSACTION_READ_COMMITTED"/> + <field name="TRANSACTION_READ_UNCOMMITTED"/> + <field name="TRANSACTION_REPEATABLE_READ"/> + <field name="TRANSACTION_SERIALIZABLE"/> + </class> + <class name="java/sql/DataTruncation" since="1"> + <extends name="java/sql/SQLWarning"/> + <method name="<init>(IZZII)V"/> + <method name="<init>(IZZIILjava/lang/Throwable;)V" since="9"/> + <method name="getDataSize()I"/> + <method name="getIndex()I"/> + <method name="getParameter()Z"/> + <method name="getRead()Z"/> + <method name="getTransferSize()I"/> + </class> + <class name="java/sql/DatabaseMetaData" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/sql/Wrapper" since="9"/> + <method name="allProceduresAreCallable()Z"/> + <method name="allTablesAreSelectable()Z"/> + <method name="autoCommitFailureClosesAllResultSets()Z" since="9"/> + <method name="dataDefinitionCausesTransactionCommit()Z"/> + <method name="dataDefinitionIgnoredInTransactions()Z"/> + <method name="deletesAreDetected(I)Z"/> + <method name="doesMaxRowSizeIncludeBlobs()Z"/> + <method name="getAttributes(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;"/> + <method name="getBestRowIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZ)Ljava/sql/ResultSet;"/> + <method name="getCatalogSeparator()Ljava/lang/String;"/> + <method name="getCatalogTerm()Ljava/lang/String;"/> + <method name="getCatalogs()Ljava/sql/ResultSet;"/> + <method name="getClientInfoProperties()Ljava/sql/ResultSet;" since="9"/> + <method name="getColumnPrivileges(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;"/> + <method name="getColumns(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;"/> + <method name="getConnection()Ljava/sql/Connection;"/> + <method name="getCrossReference(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;"/> + <method name="getDatabaseMajorVersion()I"/> + <method name="getDatabaseMinorVersion()I"/> + <method name="getDatabaseProductName()Ljava/lang/String;"/> + <method name="getDatabaseProductVersion()Ljava/lang/String;"/> + <method name="getDefaultTransactionIsolation()I"/> + <method name="getDriverMajorVersion()I"/> + <method name="getDriverMinorVersion()I"/> + <method name="getDriverName()Ljava/lang/String;"/> + <method name="getDriverVersion()Ljava/lang/String;"/> + <method name="getExportedKeys(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;"/> + <method name="getExtraNameCharacters()Ljava/lang/String;"/> + <method name="getFunctionColumns(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" since="9"/> + <method name="getFunctions(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" since="9"/> + <method name="getIdentifierQuoteString()Ljava/lang/String;"/> + <method name="getImportedKeys(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;"/> + <method name="getIndexInfo(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)Ljava/sql/ResultSet;"/> + <method name="getJDBCMajorVersion()I"/> + <method name="getJDBCMinorVersion()I"/> + <method name="getMaxBinaryLiteralLength()I"/> + <method name="getMaxCatalogNameLength()I"/> + <method name="getMaxCharLiteralLength()I"/> + <method name="getMaxColumnNameLength()I"/> + <method name="getMaxColumnsInGroupBy()I"/> + <method name="getMaxColumnsInIndex()I"/> + <method name="getMaxColumnsInOrderBy()I"/> + <method name="getMaxColumnsInSelect()I"/> + <method name="getMaxColumnsInTable()I"/> + <method name="getMaxConnections()I"/> + <method name="getMaxCursorNameLength()I"/> + <method name="getMaxIndexLength()I"/> + <method name="getMaxProcedureNameLength()I"/> + <method name="getMaxRowSize()I"/> + <method name="getMaxSchemaNameLength()I"/> + <method name="getMaxStatementLength()I"/> + <method name="getMaxStatements()I"/> + <method name="getMaxTableNameLength()I"/> + <method name="getMaxTablesInSelect()I"/> + <method name="getMaxUserNameLength()I"/> + <method name="getNumericFunctions()Ljava/lang/String;"/> + <method name="getPrimaryKeys(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;"/> + <method name="getProcedureColumns(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;"/> + <method name="getProcedureTerm()Ljava/lang/String;"/> + <method name="getProcedures(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;"/> + <method name="getResultSetHoldability()I"/> + <method name="getRowIdLifetime()Ljava/sql/RowIdLifetime;" since="9"/> + <method name="getSQLKeywords()Ljava/lang/String;"/> + <method name="getSQLStateType()I"/> + <method name="getSchemaTerm()Ljava/lang/String;"/> + <method name="getSchemas()Ljava/sql/ResultSet;"/> + <method name="getSchemas(Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" since="9"/> + <method name="getSearchStringEscape()Ljava/lang/String;"/> + <method name="getStringFunctions()Ljava/lang/String;"/> + <method name="getSuperTables(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;"/> + <method name="getSuperTypes(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;"/> + <method name="getSystemFunctions()Ljava/lang/String;"/> + <method name="getTablePrivileges(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;"/> + <method name="getTableTypes()Ljava/sql/ResultSet;"/> + <method name="getTables(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Ljava/sql/ResultSet;"/> + <method name="getTimeDateFunctions()Ljava/lang/String;"/> + <method name="getTypeInfo()Ljava/sql/ResultSet;"/> + <method name="getUDTs(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[I)Ljava/sql/ResultSet;"/> + <method name="getURL()Ljava/lang/String;"/> + <method name="getUserName()Ljava/lang/String;"/> + <method name="getVersionColumns(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;"/> + <method name="insertsAreDetected(I)Z"/> + <method name="isCatalogAtStart()Z"/> + <method name="isReadOnly()Z"/> + <method name="locatorsUpdateCopy()Z"/> + <method name="nullPlusNonNullIsNull()Z"/> + <method name="nullsAreSortedAtEnd()Z"/> + <method name="nullsAreSortedAtStart()Z"/> + <method name="nullsAreSortedHigh()Z"/> + <method name="nullsAreSortedLow()Z"/> + <method name="othersDeletesAreVisible(I)Z"/> + <method name="othersInsertsAreVisible(I)Z"/> + <method name="othersUpdatesAreVisible(I)Z"/> + <method name="ownDeletesAreVisible(I)Z"/> + <method name="ownInsertsAreVisible(I)Z"/> + <method name="ownUpdatesAreVisible(I)Z"/> + <method name="storesLowerCaseIdentifiers()Z"/> + <method name="storesLowerCaseQuotedIdentifiers()Z"/> + <method name="storesMixedCaseIdentifiers()Z"/> + <method name="storesMixedCaseQuotedIdentifiers()Z"/> + <method name="storesUpperCaseIdentifiers()Z"/> + <method name="storesUpperCaseQuotedIdentifiers()Z"/> + <method name="supportsANSI92EntryLevelSQL()Z"/> + <method name="supportsANSI92FullSQL()Z"/> + <method name="supportsANSI92IntermediateSQL()Z"/> + <method name="supportsAlterTableWithAddColumn()Z"/> + <method name="supportsAlterTableWithDropColumn()Z"/> + <method name="supportsBatchUpdates()Z"/> + <method name="supportsCatalogsInDataManipulation()Z"/> + <method name="supportsCatalogsInIndexDefinitions()Z"/> + <method name="supportsCatalogsInPrivilegeDefinitions()Z"/> + <method name="supportsCatalogsInProcedureCalls()Z"/> + <method name="supportsCatalogsInTableDefinitions()Z"/> + <method name="supportsColumnAliasing()Z"/> + <method name="supportsConvert()Z"/> + <method name="supportsConvert(II)Z"/> + <method name="supportsCoreSQLGrammar()Z"/> + <method name="supportsCorrelatedSubqueries()Z"/> + <method name="supportsDataDefinitionAndDataManipulationTransactions()Z"/> + <method name="supportsDataManipulationTransactionsOnly()Z"/> + <method name="supportsDifferentTableCorrelationNames()Z"/> + <method name="supportsExpressionsInOrderBy()Z"/> + <method name="supportsExtendedSQLGrammar()Z"/> + <method name="supportsFullOuterJoins()Z"/> + <method name="supportsGetGeneratedKeys()Z"/> + <method name="supportsGroupBy()Z"/> + <method name="supportsGroupByBeyondSelect()Z"/> + <method name="supportsGroupByUnrelated()Z"/> + <method name="supportsIntegrityEnhancementFacility()Z"/> + <method name="supportsLikeEscapeClause()Z"/> + <method name="supportsLimitedOuterJoins()Z"/> + <method name="supportsMinimumSQLGrammar()Z"/> + <method name="supportsMixedCaseIdentifiers()Z"/> + <method name="supportsMixedCaseQuotedIdentifiers()Z"/> + <method name="supportsMultipleOpenResults()Z"/> + <method name="supportsMultipleResultSets()Z"/> + <method name="supportsMultipleTransactions()Z"/> + <method name="supportsNamedParameters()Z"/> + <method name="supportsNonNullableColumns()Z"/> + <method name="supportsOpenCursorsAcrossCommit()Z"/> + <method name="supportsOpenCursorsAcrossRollback()Z"/> + <method name="supportsOpenStatementsAcrossCommit()Z"/> + <method name="supportsOpenStatementsAcrossRollback()Z"/> + <method name="supportsOrderByUnrelated()Z"/> + <method name="supportsOuterJoins()Z"/> + <method name="supportsPositionedDelete()Z"/> + <method name="supportsPositionedUpdate()Z"/> + <method name="supportsResultSetConcurrency(II)Z"/> + <method name="supportsResultSetHoldability(I)Z"/> + <method name="supportsResultSetType(I)Z"/> + <method name="supportsSavepoints()Z"/> + <method name="supportsSchemasInDataManipulation()Z"/> + <method name="supportsSchemasInIndexDefinitions()Z"/> + <method name="supportsSchemasInPrivilegeDefinitions()Z"/> + <method name="supportsSchemasInProcedureCalls()Z"/> + <method name="supportsSchemasInTableDefinitions()Z"/> + <method name="supportsSelectForUpdate()Z"/> + <method name="supportsStatementPooling()Z"/> + <method name="supportsStoredFunctionsUsingCallSyntax()Z" since="9"/> + <method name="supportsStoredProcedures()Z"/> + <method name="supportsSubqueriesInComparisons()Z"/> + <method name="supportsSubqueriesInExists()Z"/> + <method name="supportsSubqueriesInIns()Z"/> + <method name="supportsSubqueriesInQuantifieds()Z"/> + <method name="supportsTableCorrelationNames()Z"/> + <method name="supportsTransactionIsolationLevel(I)Z"/> + <method name="supportsTransactions()Z"/> + <method name="supportsUnion()Z"/> + <method name="supportsUnionAll()Z"/> + <method name="updatesAreDetected(I)Z"/> + <method name="usesLocalFilePerTable()Z"/> + <method name="usesLocalFiles()Z"/> + <field name="attributeNoNulls"/> + <field name="attributeNullable"/> + <field name="attributeNullableUnknown"/> + <field name="bestRowNotPseudo"/> + <field name="bestRowPseudo"/> + <field name="bestRowSession"/> + <field name="bestRowTemporary"/> + <field name="bestRowTransaction"/> + <field name="bestRowUnknown"/> + <field name="columnNoNulls"/> + <field name="columnNullable"/> + <field name="columnNullableUnknown"/> + <field name="functionColumnIn" since="9"/> + <field name="functionColumnInOut" since="9"/> + <field name="functionColumnOut" since="9"/> + <field name="functionColumnResult" since="9"/> + <field name="functionColumnUnknown" since="9"/> + <field name="functionNoNulls" since="9"/> + <field name="functionNoTable" since="9"/> + <field name="functionNullable" since="9"/> + <field name="functionNullableUnknown" since="9"/> + <field name="functionResultUnknown" since="9"/> + <field name="functionReturn" since="9"/> + <field name="functionReturnsTable" since="9"/> + <field name="importedKeyCascade"/> + <field name="importedKeyInitiallyDeferred"/> + <field name="importedKeyInitiallyImmediate"/> + <field name="importedKeyNoAction"/> + <field name="importedKeyNotDeferrable"/> + <field name="importedKeyRestrict"/> + <field name="importedKeySetDefault"/> + <field name="importedKeySetNull"/> + <field name="procedureColumnIn"/> + <field name="procedureColumnInOut"/> + <field name="procedureColumnOut"/> + <field name="procedureColumnResult"/> + <field name="procedureColumnReturn"/> + <field name="procedureColumnUnknown"/> + <field name="procedureNoNulls"/> + <field name="procedureNoResult"/> + <field name="procedureNullable"/> + <field name="procedureNullableUnknown"/> + <field name="procedureResultUnknown"/> + <field name="procedureReturnsResult"/> + <field name="sqlStateSQL" since="9"/> + <field name="sqlStateSQL99"/> + <field name="sqlStateXOpen"/> + <field name="tableIndexClustered"/> + <field name="tableIndexHashed"/> + <field name="tableIndexOther"/> + <field name="tableIndexStatistic"/> + <field name="typeNoNulls"/> + <field name="typeNullable"/> + <field name="typeNullableUnknown"/> + <field name="typePredBasic"/> + <field name="typePredChar"/> + <field name="typePredNone"/> + <field name="typeSearchable"/> + <field name="versionColumnNotPseudo"/> + <field name="versionColumnPseudo"/> + <field name="versionColumnUnknown"/> + </class> + <class name="java/sql/Date" since="1"> + <extends name="java/util/Date"/> + <method name="<init>(III)V" deprecated="16"/> + <method name="<init>(J)V"/> + <method name="valueOf(Ljava/lang/String;)Ljava/sql/Date;"/> + </class> + <class name="java/sql/Driver" since="1"> + <extends name="java/lang/Object"/> + <method name="acceptsURL(Ljava/lang/String;)Z"/> + <method name="connect(Ljava/lang/String;Ljava/util/Properties;)Ljava/sql/Connection;"/> + <method name="getMajorVersion()I"/> + <method name="getMinorVersion()I"/> + <method name="getPropertyInfo(Ljava/lang/String;Ljava/util/Properties;)[Ljava/sql/DriverPropertyInfo;"/> + <method name="jdbcCompliant()Z"/> + </class> + <class name="java/sql/DriverManager" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="deregisterDriver(Ljava/sql/Driver;)V"/> + <method name="getConnection(Ljava/lang/String;)Ljava/sql/Connection;"/> + <method name="getConnection(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/Connection;"/> + <method name="getConnection(Ljava/lang/String;Ljava/util/Properties;)Ljava/sql/Connection;"/> + <method name="getDriver(Ljava/lang/String;)Ljava/sql/Driver;"/> + <method name="getDrivers()Ljava/util/Enumeration;"/> + <method name="getLogStream()Ljava/io/PrintStream;" deprecated="16"/> + <method name="getLogWriter()Ljava/io/PrintWriter;"/> + <method name="getLoginTimeout()I"/> + <method name="println(Ljava/lang/String;)V"/> + <method name="registerDriver(Ljava/sql/Driver;)V"/> + <method name="setLogStream(Ljava/io/PrintStream;)V" deprecated="16"/> + <method name="setLogWriter(Ljava/io/PrintWriter;)V"/> + <method name="setLoginTimeout(I)V"/> + </class> + <class name="java/sql/DriverPropertyInfo" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <field name="choices"/> + <field name="description"/> + <field name="name"/> + <field name="required"/> + <field name="value"/> + </class> + <class name="java/sql/NClob" since="9"> + <extends name="java/lang/Object"/> + <implements name="java/sql/Clob"/> + </class> + <class name="java/sql/ParameterMetaData" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/sql/Wrapper" since="9"/> + <method name="getParameterClassName(I)Ljava/lang/String;"/> + <method name="getParameterCount()I"/> + <method name="getParameterMode(I)I"/> + <method name="getParameterType(I)I"/> + <method name="getParameterTypeName(I)Ljava/lang/String;"/> + <method name="getPrecision(I)I"/> + <method name="getScale(I)I"/> + <method name="isNullable(I)I"/> + <method name="isSigned(I)Z"/> + <field name="parameterModeIn"/> + <field name="parameterModeInOut"/> + <field name="parameterModeOut"/> + <field name="parameterModeUnknown"/> + <field name="parameterNoNulls"/> + <field name="parameterNullable"/> + <field name="parameterNullableUnknown"/> + </class> + <class name="java/sql/PreparedStatement" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/sql/Statement"/> + <method name="addBatch()V"/> + <method name="clearParameters()V"/> + <method name="execute()Z"/> + <method name="executeQuery()Ljava/sql/ResultSet;"/> + <method name="executeUpdate()I"/> + <method name="getMetaData()Ljava/sql/ResultSetMetaData;"/> + <method name="getParameterMetaData()Ljava/sql/ParameterMetaData;"/> + <method name="setArray(ILjava/sql/Array;)V"/> + <method name="setAsciiStream(ILjava/io/InputStream;)V" since="9"/> + <method name="setAsciiStream(ILjava/io/InputStream;I)V"/> + <method name="setAsciiStream(ILjava/io/InputStream;J)V" since="9"/> + <method name="setBigDecimal(ILjava/math/BigDecimal;)V"/> + <method name="setBinaryStream(ILjava/io/InputStream;)V" since="9"/> + <method name="setBinaryStream(ILjava/io/InputStream;I)V"/> + <method name="setBinaryStream(ILjava/io/InputStream;J)V" since="9"/> + <method name="setBlob(ILjava/io/InputStream;)V" since="9"/> + <method name="setBlob(ILjava/io/InputStream;J)V" since="9"/> + <method name="setBlob(ILjava/sql/Blob;)V"/> + <method name="setBoolean(IZ)V"/> + <method name="setByte(IB)V"/> + <method name="setBytes(I[B)V"/> + <method name="setCharacterStream(ILjava/io/Reader;)V" since="9"/> + <method name="setCharacterStream(ILjava/io/Reader;I)V"/> + <method name="setCharacterStream(ILjava/io/Reader;J)V" since="9"/> + <method name="setClob(ILjava/io/Reader;)V" since="9"/> + <method name="setClob(ILjava/io/Reader;J)V" since="9"/> + <method name="setClob(ILjava/sql/Clob;)V"/> + <method name="setDate(ILjava/sql/Date;)V"/> + <method name="setDate(ILjava/sql/Date;Ljava/util/Calendar;)V"/> + <method name="setDouble(ID)V"/> + <method name="setFloat(IF)V"/> + <method name="setInt(II)V"/> + <method name="setLong(IJ)V"/> + <method name="setNCharacterStream(ILjava/io/Reader;)V" since="9"/> + <method name="setNCharacterStream(ILjava/io/Reader;J)V" since="9"/> + <method name="setNClob(ILjava/io/Reader;)V" since="9"/> + <method name="setNClob(ILjava/io/Reader;J)V" since="9"/> + <method name="setNClob(ILjava/sql/NClob;)V" since="9"/> + <method name="setNString(ILjava/lang/String;)V" since="9"/> + <method name="setNull(II)V"/> + <method name="setNull(IILjava/lang/String;)V"/> + <method name="setObject(ILjava/lang/Object;)V"/> + <method name="setObject(ILjava/lang/Object;I)V"/> + <method name="setObject(ILjava/lang/Object;II)V"/> + <method name="setRef(ILjava/sql/Ref;)V"/> + <method name="setRowId(ILjava/sql/RowId;)V" since="9"/> + <method name="setSQLXML(ILjava/sql/SQLXML;)V" since="9"/> + <method name="setShort(IS)V"/> + <method name="setString(ILjava/lang/String;)V"/> + <method name="setTime(ILjava/sql/Time;)V"/> + <method name="setTime(ILjava/sql/Time;Ljava/util/Calendar;)V"/> + <method name="setTimestamp(ILjava/sql/Timestamp;)V"/> + <method name="setTimestamp(ILjava/sql/Timestamp;Ljava/util/Calendar;)V"/> + <method name="setURL(ILjava/net/URL;)V"/> + <method name="setUnicodeStream(ILjava/io/InputStream;I)V" deprecated="16"/> + </class> + <class name="java/sql/Ref" since="1"> + <extends name="java/lang/Object"/> + <method name="getBaseTypeName()Ljava/lang/String;"/> + <method name="getObject()Ljava/lang/Object;"/> + <method name="getObject(Ljava/util/Map;)Ljava/lang/Object;"/> + <method name="setObject(Ljava/lang/Object;)V"/> + </class> + <class name="java/sql/ResultSet" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable" since="19"/> + <implements name="java/sql/Wrapper" since="9"/> + <method name="absolute(I)Z"/> + <method name="afterLast()V"/> + <method name="beforeFirst()V"/> + <method name="cancelRowUpdates()V"/> + <method name="clearWarnings()V"/> + <method name="close()V"/> + <method name="deleteRow()V"/> + <method name="findColumn(Ljava/lang/String;)I"/> + <method name="first()Z"/> + <method name="getArray(I)Ljava/sql/Array;"/> + <method name="getArray(Ljava/lang/String;)Ljava/sql/Array;"/> + <method name="getAsciiStream(I)Ljava/io/InputStream;"/> + <method name="getAsciiStream(Ljava/lang/String;)Ljava/io/InputStream;"/> + <method name="getBigDecimal(I)Ljava/math/BigDecimal;"/> + <method name="getBigDecimal(II)Ljava/math/BigDecimal;" deprecated="16"/> + <method name="getBigDecimal(Ljava/lang/String;)Ljava/math/BigDecimal;"/> + <method name="getBigDecimal(Ljava/lang/String;I)Ljava/math/BigDecimal;" deprecated="16"/> + <method name="getBinaryStream(I)Ljava/io/InputStream;"/> + <method name="getBinaryStream(Ljava/lang/String;)Ljava/io/InputStream;"/> + <method name="getBlob(I)Ljava/sql/Blob;"/> + <method name="getBlob(Ljava/lang/String;)Ljava/sql/Blob;"/> + <method name="getBoolean(I)Z"/> + <method name="getBoolean(Ljava/lang/String;)Z"/> + <method name="getByte(I)B"/> + <method name="getByte(Ljava/lang/String;)B"/> + <method name="getBytes(I)[B"/> + <method name="getBytes(Ljava/lang/String;)[B"/> + <method name="getCharacterStream(I)Ljava/io/Reader;"/> + <method name="getCharacterStream(Ljava/lang/String;)Ljava/io/Reader;"/> + <method name="getClob(I)Ljava/sql/Clob;"/> + <method name="getClob(Ljava/lang/String;)Ljava/sql/Clob;"/> + <method name="getConcurrency()I"/> + <method name="getCursorName()Ljava/lang/String;"/> + <method name="getDate(I)Ljava/sql/Date;"/> + <method name="getDate(ILjava/util/Calendar;)Ljava/sql/Date;"/> + <method name="getDate(Ljava/lang/String;)Ljava/sql/Date;"/> + <method name="getDate(Ljava/lang/String;Ljava/util/Calendar;)Ljava/sql/Date;"/> + <method name="getDouble(I)D"/> + <method name="getDouble(Ljava/lang/String;)D"/> + <method name="getFetchDirection()I"/> + <method name="getFetchSize()I"/> + <method name="getFloat(I)F"/> + <method name="getFloat(Ljava/lang/String;)F"/> + <method name="getHoldability()I" since="9"/> + <method name="getInt(I)I"/> + <method name="getInt(Ljava/lang/String;)I"/> + <method name="getLong(I)J"/> + <method name="getLong(Ljava/lang/String;)J"/> + <method name="getMetaData()Ljava/sql/ResultSetMetaData;"/> + <method name="getNCharacterStream(I)Ljava/io/Reader;" since="9"/> + <method name="getNCharacterStream(Ljava/lang/String;)Ljava/io/Reader;" since="9"/> + <method name="getNClob(I)Ljava/sql/NClob;" since="9"/> + <method name="getNClob(Ljava/lang/String;)Ljava/sql/NClob;" since="9"/> + <method name="getNString(I)Ljava/lang/String;" since="9"/> + <method name="getNString(Ljava/lang/String;)Ljava/lang/String;" since="9"/> + <method name="getObject(I)Ljava/lang/Object;"/> + <method name="getObject(ILjava/util/Map;)Ljava/lang/Object;"/> + <method name="getObject(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="getObject(Ljava/lang/String;Ljava/util/Map;)Ljava/lang/Object;"/> + <method name="getRef(I)Ljava/sql/Ref;"/> + <method name="getRef(Ljava/lang/String;)Ljava/sql/Ref;"/> + <method name="getRow()I"/> + <method name="getRowId(I)Ljava/sql/RowId;" since="9"/> + <method name="getRowId(Ljava/lang/String;)Ljava/sql/RowId;" since="9"/> + <method name="getSQLXML(I)Ljava/sql/SQLXML;" since="9"/> + <method name="getSQLXML(Ljava/lang/String;)Ljava/sql/SQLXML;" since="9"/> + <method name="getShort(I)S"/> + <method name="getShort(Ljava/lang/String;)S"/> + <method name="getStatement()Ljava/sql/Statement;"/> + <method name="getString(I)Ljava/lang/String;"/> + <method name="getString(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getTime(I)Ljava/sql/Time;"/> + <method name="getTime(ILjava/util/Calendar;)Ljava/sql/Time;"/> + <method name="getTime(Ljava/lang/String;)Ljava/sql/Time;"/> + <method name="getTime(Ljava/lang/String;Ljava/util/Calendar;)Ljava/sql/Time;"/> + <method name="getTimestamp(I)Ljava/sql/Timestamp;"/> + <method name="getTimestamp(ILjava/util/Calendar;)Ljava/sql/Timestamp;"/> + <method name="getTimestamp(Ljava/lang/String;)Ljava/sql/Timestamp;"/> + <method name="getTimestamp(Ljava/lang/String;Ljava/util/Calendar;)Ljava/sql/Timestamp;"/> + <method name="getType()I"/> + <method name="getURL(I)Ljava/net/URL;"/> + <method name="getURL(Ljava/lang/String;)Ljava/net/URL;"/> + <method name="getUnicodeStream(I)Ljava/io/InputStream;" deprecated="16"/> + <method name="getUnicodeStream(Ljava/lang/String;)Ljava/io/InputStream;" deprecated="16"/> + <method name="getWarnings()Ljava/sql/SQLWarning;"/> + <method name="insertRow()V"/> + <method name="isAfterLast()Z"/> + <method name="isBeforeFirst()Z"/> + <method name="isClosed()Z" since="9"/> + <method name="isFirst()Z"/> + <method name="isLast()Z"/> + <method name="last()Z"/> + <method name="moveToCurrentRow()V"/> + <method name="moveToInsertRow()V"/> + <method name="next()Z"/> + <method name="previous()Z"/> + <method name="refreshRow()V"/> + <method name="relative(I)Z"/> + <method name="rowDeleted()Z"/> + <method name="rowInserted()Z"/> + <method name="rowUpdated()Z"/> + <method name="setFetchDirection(I)V"/> + <method name="setFetchSize(I)V"/> + <method name="updateArray(ILjava/sql/Array;)V"/> + <method name="updateArray(Ljava/lang/String;Ljava/sql/Array;)V"/> + <method name="updateAsciiStream(ILjava/io/InputStream;)V" since="9"/> + <method name="updateAsciiStream(ILjava/io/InputStream;I)V"/> + <method name="updateAsciiStream(ILjava/io/InputStream;J)V" since="9"/> + <method name="updateAsciiStream(Ljava/lang/String;Ljava/io/InputStream;)V" since="9"/> + <method name="updateAsciiStream(Ljava/lang/String;Ljava/io/InputStream;I)V"/> + <method name="updateAsciiStream(Ljava/lang/String;Ljava/io/InputStream;J)V" since="9"/> + <method name="updateBigDecimal(ILjava/math/BigDecimal;)V"/> + <method name="updateBigDecimal(Ljava/lang/String;Ljava/math/BigDecimal;)V"/> + <method name="updateBinaryStream(ILjava/io/InputStream;)V" since="9"/> + <method name="updateBinaryStream(ILjava/io/InputStream;I)V"/> + <method name="updateBinaryStream(ILjava/io/InputStream;J)V" since="9"/> + <method name="updateBinaryStream(Ljava/lang/String;Ljava/io/InputStream;)V" since="9"/> + <method name="updateBinaryStream(Ljava/lang/String;Ljava/io/InputStream;I)V"/> + <method name="updateBinaryStream(Ljava/lang/String;Ljava/io/InputStream;J)V" since="9"/> + <method name="updateBlob(ILjava/io/InputStream;)V" since="9"/> + <method name="updateBlob(ILjava/io/InputStream;J)V" since="9"/> + <method name="updateBlob(ILjava/sql/Blob;)V"/> + <method name="updateBlob(Ljava/lang/String;Ljava/io/InputStream;)V" since="9"/> + <method name="updateBlob(Ljava/lang/String;Ljava/io/InputStream;J)V" since="9"/> + <method name="updateBlob(Ljava/lang/String;Ljava/sql/Blob;)V"/> + <method name="updateBoolean(IZ)V"/> + <method name="updateBoolean(Ljava/lang/String;Z)V"/> + <method name="updateByte(IB)V"/> + <method name="updateByte(Ljava/lang/String;B)V"/> + <method name="updateBytes(I[B)V"/> + <method name="updateBytes(Ljava/lang/String;[B)V"/> + <method name="updateCharacterStream(ILjava/io/Reader;)V" since="9"/> + <method name="updateCharacterStream(ILjava/io/Reader;I)V"/> + <method name="updateCharacterStream(ILjava/io/Reader;J)V" since="9"/> + <method name="updateCharacterStream(Ljava/lang/String;Ljava/io/Reader;)V" since="9"/> + <method name="updateCharacterStream(Ljava/lang/String;Ljava/io/Reader;I)V"/> + <method name="updateCharacterStream(Ljava/lang/String;Ljava/io/Reader;J)V" since="9"/> + <method name="updateClob(ILjava/io/Reader;)V" since="9"/> + <method name="updateClob(ILjava/io/Reader;J)V" since="9"/> + <method name="updateClob(ILjava/sql/Clob;)V"/> + <method name="updateClob(Ljava/lang/String;Ljava/io/Reader;)V" since="9"/> + <method name="updateClob(Ljava/lang/String;Ljava/io/Reader;J)V" since="9"/> + <method name="updateClob(Ljava/lang/String;Ljava/sql/Clob;)V"/> + <method name="updateDate(ILjava/sql/Date;)V"/> + <method name="updateDate(Ljava/lang/String;Ljava/sql/Date;)V"/> + <method name="updateDouble(ID)V"/> + <method name="updateDouble(Ljava/lang/String;D)V"/> + <method name="updateFloat(IF)V"/> + <method name="updateFloat(Ljava/lang/String;F)V"/> + <method name="updateInt(II)V"/> + <method name="updateInt(Ljava/lang/String;I)V"/> + <method name="updateLong(IJ)V"/> + <method name="updateLong(Ljava/lang/String;J)V"/> + <method name="updateNCharacterStream(ILjava/io/Reader;)V" since="9"/> + <method name="updateNCharacterStream(ILjava/io/Reader;J)V" since="9"/> + <method name="updateNCharacterStream(Ljava/lang/String;Ljava/io/Reader;)V" since="9"/> + <method name="updateNCharacterStream(Ljava/lang/String;Ljava/io/Reader;J)V" since="9"/> + <method name="updateNClob(ILjava/io/Reader;)V" since="9"/> + <method name="updateNClob(ILjava/io/Reader;J)V" since="9"/> + <method name="updateNClob(ILjava/sql/NClob;)V" since="9"/> + <method name="updateNClob(Ljava/lang/String;Ljava/io/Reader;)V" since="9"/> + <method name="updateNClob(Ljava/lang/String;Ljava/io/Reader;J)V" since="9"/> + <method name="updateNClob(Ljava/lang/String;Ljava/sql/NClob;)V" since="9"/> + <method name="updateNString(ILjava/lang/String;)V" since="9"/> + <method name="updateNString(Ljava/lang/String;Ljava/lang/String;)V" since="9"/> + <method name="updateNull(I)V"/> + <method name="updateNull(Ljava/lang/String;)V"/> + <method name="updateObject(ILjava/lang/Object;)V"/> + <method name="updateObject(ILjava/lang/Object;I)V"/> + <method name="updateObject(Ljava/lang/String;Ljava/lang/Object;)V"/> + <method name="updateObject(Ljava/lang/String;Ljava/lang/Object;I)V"/> + <method name="updateRef(ILjava/sql/Ref;)V"/> + <method name="updateRef(Ljava/lang/String;Ljava/sql/Ref;)V"/> + <method name="updateRow()V"/> + <method name="updateRowId(ILjava/sql/RowId;)V" since="9"/> + <method name="updateRowId(Ljava/lang/String;Ljava/sql/RowId;)V" since="9"/> + <method name="updateSQLXML(ILjava/sql/SQLXML;)V" since="9"/> + <method name="updateSQLXML(Ljava/lang/String;Ljava/sql/SQLXML;)V" since="9"/> + <method name="updateShort(IS)V"/> + <method name="updateShort(Ljava/lang/String;S)V"/> + <method name="updateString(ILjava/lang/String;)V"/> + <method name="updateString(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="updateTime(ILjava/sql/Time;)V"/> + <method name="updateTime(Ljava/lang/String;Ljava/sql/Time;)V"/> + <method name="updateTimestamp(ILjava/sql/Timestamp;)V"/> + <method name="updateTimestamp(Ljava/lang/String;Ljava/sql/Timestamp;)V"/> + <method name="wasNull()Z"/> + <field name="CLOSE_CURSORS_AT_COMMIT"/> + <field name="CONCUR_READ_ONLY"/> + <field name="CONCUR_UPDATABLE"/> + <field name="FETCH_FORWARD"/> + <field name="FETCH_REVERSE"/> + <field name="FETCH_UNKNOWN"/> + <field name="HOLD_CURSORS_OVER_COMMIT"/> + <field name="TYPE_FORWARD_ONLY"/> + <field name="TYPE_SCROLL_INSENSITIVE"/> + <field name="TYPE_SCROLL_SENSITIVE"/> + </class> + <class name="java/sql/ResultSetMetaData" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/sql/Wrapper" since="9"/> + <method name="getCatalogName(I)Ljava/lang/String;"/> + <method name="getColumnClassName(I)Ljava/lang/String;"/> + <method name="getColumnCount()I"/> + <method name="getColumnDisplaySize(I)I"/> + <method name="getColumnLabel(I)Ljava/lang/String;"/> + <method name="getColumnName(I)Ljava/lang/String;"/> + <method name="getColumnType(I)I"/> + <method name="getColumnTypeName(I)Ljava/lang/String;"/> + <method name="getPrecision(I)I"/> + <method name="getScale(I)I"/> + <method name="getSchemaName(I)Ljava/lang/String;"/> + <method name="getTableName(I)Ljava/lang/String;"/> + <method name="isAutoIncrement(I)Z"/> + <method name="isCaseSensitive(I)Z"/> + <method name="isCurrency(I)Z"/> + <method name="isDefinitelyWritable(I)Z"/> + <method name="isNullable(I)I"/> + <method name="isReadOnly(I)Z"/> + <method name="isSearchable(I)Z"/> + <method name="isSigned(I)Z"/> + <method name="isWritable(I)Z"/> + <field name="columnNoNulls"/> + <field name="columnNullable"/> + <field name="columnNullableUnknown"/> + </class> + <class name="java/sql/RowId" since="9"> + <extends name="java/lang/Object"/> + <method name="getBytes()[B"/> + </class> + <class name="java/sql/RowIdLifetime" since="9"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/sql/RowIdLifetime;"/> + <method name="values()[Ljava/sql/RowIdLifetime;"/> + <field name="ROWID_UNSUPPORTED"/> + <field name="ROWID_VALID_FOREVER"/> + <field name="ROWID_VALID_OTHER"/> + <field name="ROWID_VALID_SESSION"/> + <field name="ROWID_VALID_TRANSACTION"/> + </class> + <class name="java/sql/SQLClientInfoException" since="9"> + <extends name="java/sql/SQLException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;ILjava/util/Map;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;ILjava/util/Map;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/util/Map;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/util/Map;)V"/> + <method name="<init>(Ljava/util/Map;Ljava/lang/Throwable;)V"/> + <method name="getFailedProperties()Ljava/util/Map;"/> + </class> + <class name="java/sql/SQLData" since="1"> + <extends name="java/lang/Object"/> + <method name="getSQLTypeName()Ljava/lang/String;"/> + <method name="readSQL(Ljava/sql/SQLInput;Ljava/lang/String;)V"/> + <method name="writeSQL(Ljava/sql/SQLOutput;)V"/> + </class> + <class name="java/sql/SQLDataException" since="9"> + <extends name="java/sql/SQLNonTransientException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;I)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/sql/SQLException" since="1"> + <extends name="java/lang/Exception"/> + <implements name="java/lang/Iterable" since="9"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;I)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" since="9"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" since="9"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="9"/> + <method name="<init>(Ljava/lang/Throwable;)V" since="9"/> + <method name="getErrorCode()I"/> + <method name="getNextException()Ljava/sql/SQLException;"/> + <method name="getSQLState()Ljava/lang/String;"/> + <method name="setNextException(Ljava/sql/SQLException;)V"/> + </class> + <class name="java/sql/SQLFeatureNotSupportedException" since="9"> + <extends name="java/sql/SQLNonTransientException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;I)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/sql/SQLInput" since="1"> + <extends name="java/lang/Object"/> + <method name="readArray()Ljava/sql/Array;"/> + <method name="readAsciiStream()Ljava/io/InputStream;"/> + <method name="readBigDecimal()Ljava/math/BigDecimal;"/> + <method name="readBinaryStream()Ljava/io/InputStream;"/> + <method name="readBlob()Ljava/sql/Blob;"/> + <method name="readBoolean()Z"/> + <method name="readByte()B"/> + <method name="readBytes()[B"/> + <method name="readCharacterStream()Ljava/io/Reader;"/> + <method name="readClob()Ljava/sql/Clob;"/> + <method name="readDate()Ljava/sql/Date;"/> + <method name="readDouble()D"/> + <method name="readFloat()F"/> + <method name="readInt()I"/> + <method name="readLong()J"/> + <method name="readNClob()Ljava/sql/NClob;" since="9"/> + <method name="readNString()Ljava/lang/String;" since="9"/> + <method name="readObject()Ljava/lang/Object;"/> + <method name="readRef()Ljava/sql/Ref;"/> + <method name="readRowId()Ljava/sql/RowId;" since="9"/> + <method name="readSQLXML()Ljava/sql/SQLXML;" since="9"/> + <method name="readShort()S"/> + <method name="readString()Ljava/lang/String;"/> + <method name="readTime()Ljava/sql/Time;"/> + <method name="readTimestamp()Ljava/sql/Timestamp;"/> + <method name="readURL()Ljava/net/URL;"/> + <method name="wasNull()Z"/> + </class> + <class name="java/sql/SQLIntegrityConstraintViolationException" since="9"> + <extends name="java/sql/SQLNonTransientException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;I)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/sql/SQLInvalidAuthorizationSpecException" since="9"> + <extends name="java/sql/SQLNonTransientException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;I)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/sql/SQLNonTransientConnectionException" since="9"> + <extends name="java/sql/SQLNonTransientException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;I)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/sql/SQLNonTransientException" since="9"> + <extends name="java/sql/SQLException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;I)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/sql/SQLOutput" since="1"> + <extends name="java/lang/Object"/> + <method name="writeArray(Ljava/sql/Array;)V"/> + <method name="writeAsciiStream(Ljava/io/InputStream;)V"/> + <method name="writeBigDecimal(Ljava/math/BigDecimal;)V"/> + <method name="writeBinaryStream(Ljava/io/InputStream;)V"/> + <method name="writeBlob(Ljava/sql/Blob;)V"/> + <method name="writeBoolean(Z)V"/> + <method name="writeByte(B)V"/> + <method name="writeBytes([B)V"/> + <method name="writeCharacterStream(Ljava/io/Reader;)V"/> + <method name="writeClob(Ljava/sql/Clob;)V"/> + <method name="writeDate(Ljava/sql/Date;)V"/> + <method name="writeDouble(D)V"/> + <method name="writeFloat(F)V"/> + <method name="writeInt(I)V"/> + <method name="writeLong(J)V"/> + <method name="writeNClob(Ljava/sql/NClob;)V" since="9"/> + <method name="writeNString(Ljava/lang/String;)V" since="9"/> + <method name="writeObject(Ljava/sql/SQLData;)V"/> + <method name="writeRef(Ljava/sql/Ref;)V"/> + <method name="writeRowId(Ljava/sql/RowId;)V" since="9"/> + <method name="writeSQLXML(Ljava/sql/SQLXML;)V" since="9"/> + <method name="writeShort(S)V"/> + <method name="writeString(Ljava/lang/String;)V"/> + <method name="writeStruct(Ljava/sql/Struct;)V"/> + <method name="writeTime(Ljava/sql/Time;)V"/> + <method name="writeTimestamp(Ljava/sql/Timestamp;)V"/> + <method name="writeURL(Ljava/net/URL;)V"/> + </class> + <class name="java/sql/SQLPermission" since="1"> + <extends name="java/security/BasicPermission"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="java/sql/SQLRecoverableException" since="9"> + <extends name="java/sql/SQLException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;I)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/sql/SQLSyntaxErrorException" since="9"> + <extends name="java/sql/SQLNonTransientException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;I)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/sql/SQLTimeoutException" since="9"> + <extends name="java/sql/SQLTransientException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;I)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/sql/SQLTransactionRollbackException" since="9"> + <extends name="java/sql/SQLTransientException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;I)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/sql/SQLTransientConnectionException" since="9"> + <extends name="java/sql/SQLTransientException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;I)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/sql/SQLTransientException" since="9"> + <extends name="java/sql/SQLException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;I)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/sql/SQLWarning" since="1"> + <extends name="java/sql/SQLException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;I)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" since="9"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" since="9"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="9"/> + <method name="<init>(Ljava/lang/Throwable;)V" since="9"/> + <method name="getNextWarning()Ljava/sql/SQLWarning;"/> + <method name="setNextWarning(Ljava/sql/SQLWarning;)V"/> + </class> + <class name="java/sql/SQLXML" since="9"> + <extends name="java/lang/Object"/> + <method name="free()V"/> + <method name="getBinaryStream()Ljava/io/InputStream;"/> + <method name="getCharacterStream()Ljava/io/Reader;"/> + <method name="getSource(Ljava/lang/Class;)Ljavax/xml/transform/Source;"/> + <method name="getString()Ljava/lang/String;"/> + <method name="setBinaryStream()Ljava/io/OutputStream;"/> + <method name="setCharacterStream()Ljava/io/Writer;"/> + <method name="setResult(Ljava/lang/Class;)Ljavax/xml/transform/Result;"/> + <method name="setString(Ljava/lang/String;)V"/> + </class> + <class name="java/sql/Savepoint" since="1"> + <extends name="java/lang/Object"/> + <method name="getSavepointId()I"/> + <method name="getSavepointName()Ljava/lang/String;"/> + </class> + <class name="java/sql/Statement" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable" since="19"/> + <implements name="java/sql/Wrapper" since="9"/> + <method name="addBatch(Ljava/lang/String;)V"/> + <method name="cancel()V"/> + <method name="clearBatch()V"/> + <method name="clearWarnings()V"/> + <method name="close()V"/> + <method name="execute(Ljava/lang/String;)Z"/> + <method name="execute(Ljava/lang/String;I)Z"/> + <method name="execute(Ljava/lang/String;[I)Z"/> + <method name="execute(Ljava/lang/String;[Ljava/lang/String;)Z"/> + <method name="executeBatch()[I"/> + <method name="executeQuery(Ljava/lang/String;)Ljava/sql/ResultSet;"/> + <method name="executeUpdate(Ljava/lang/String;)I"/> + <method name="executeUpdate(Ljava/lang/String;I)I"/> + <method name="executeUpdate(Ljava/lang/String;[I)I"/> + <method name="executeUpdate(Ljava/lang/String;[Ljava/lang/String;)I"/> + <method name="getConnection()Ljava/sql/Connection;"/> + <method name="getFetchDirection()I"/> + <method name="getFetchSize()I"/> + <method name="getGeneratedKeys()Ljava/sql/ResultSet;"/> + <method name="getMaxFieldSize()I"/> + <method name="getMaxRows()I"/> + <method name="getMoreResults()Z"/> + <method name="getMoreResults(I)Z"/> + <method name="getQueryTimeout()I"/> + <method name="getResultSet()Ljava/sql/ResultSet;"/> + <method name="getResultSetConcurrency()I"/> + <method name="getResultSetHoldability()I"/> + <method name="getResultSetType()I"/> + <method name="getUpdateCount()I"/> + <method name="getWarnings()Ljava/sql/SQLWarning;"/> + <method name="isClosed()Z" since="9"/> + <method name="isPoolable()Z" since="9"/> + <method name="setCursorName(Ljava/lang/String;)V"/> + <method name="setEscapeProcessing(Z)V"/> + <method name="setFetchDirection(I)V"/> + <method name="setFetchSize(I)V"/> + <method name="setMaxFieldSize(I)V"/> + <method name="setMaxRows(I)V"/> + <method name="setPoolable(Z)V" since="9"/> + <method name="setQueryTimeout(I)V"/> + <field name="CLOSE_ALL_RESULTS"/> + <field name="CLOSE_CURRENT_RESULT"/> + <field name="EXECUTE_FAILED"/> + <field name="KEEP_CURRENT_RESULT"/> + <field name="NO_GENERATED_KEYS"/> + <field name="RETURN_GENERATED_KEYS"/> + <field name="SUCCESS_NO_INFO"/> + </class> + <class name="java/sql/Struct" since="1"> + <extends name="java/lang/Object"/> + <method name="getAttributes()[Ljava/lang/Object;"/> + <method name="getAttributes(Ljava/util/Map;)[Ljava/lang/Object;"/> + <method name="getSQLTypeName()Ljava/lang/String;"/> + </class> + <class name="java/sql/Time" since="1"> + <extends name="java/util/Date"/> + <method name="<init>(III)V" deprecated="16"/> + <method name="<init>(J)V"/> + <method name="valueOf(Ljava/lang/String;)Ljava/sql/Time;"/> + </class> + <class name="java/sql/Timestamp" since="1"> + <extends name="java/util/Date"/> + <method name="<init>(IIIIIII)V" deprecated="16"/> + <method name="<init>(J)V"/> + <method name="after(Ljava/sql/Timestamp;)Z"/> + <method name="before(Ljava/sql/Timestamp;)Z"/> + <method name="compareTo(Ljava/sql/Timestamp;)I"/> + <method name="equals(Ljava/sql/Timestamp;)Z"/> + <method name="getNanos()I"/> + <method name="setNanos(I)V"/> + <method name="valueOf(Ljava/lang/String;)Ljava/sql/Timestamp;"/> + </class> + <class name="java/sql/Types" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="ARRAY"/> + <field name="BIGINT"/> + <field name="BINARY"/> + <field name="BIT"/> + <field name="BLOB"/> + <field name="BOOLEAN"/> + <field name="CHAR"/> + <field name="CLOB"/> + <field name="DATALINK"/> + <field name="DATE"/> + <field name="DECIMAL"/> + <field name="DISTINCT"/> + <field name="DOUBLE"/> + <field name="FLOAT"/> + <field name="INTEGER"/> + <field name="JAVA_OBJECT"/> + <field name="LONGNVARCHAR" since="9"/> + <field name="LONGVARBINARY"/> + <field name="LONGVARCHAR"/> + <field name="NCHAR" since="9"/> + <field name="NCLOB" since="9"/> + <field name="NULL"/> + <field name="NUMERIC"/> + <field name="NVARCHAR" since="9"/> + <field name="OTHER"/> + <field name="REAL"/> + <field name="REF"/> + <field name="ROWID" since="9"/> + <field name="SMALLINT"/> + <field name="SQLXML" since="9"/> + <field name="STRUCT"/> + <field name="TIME"/> + <field name="TIMESTAMP"/> + <field name="TINYINT"/> + <field name="VARBINARY"/> + <field name="VARCHAR"/> + </class> + <class name="java/sql/Wrapper" since="9"> + <extends name="java/lang/Object"/> + <method name="isWrapperFor(Ljava/lang/Class;)Z"/> + <method name="unwrap(Ljava/lang/Class;)Ljava/lang/Object;"/> + </class> + <class name="java/text/Annotation" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/Object;)V"/> + <method name="getValue()Ljava/lang/Object;"/> + </class> + <class name="java/text/AttributedCharacterIterator" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/text/CharacterIterator"/> + <method name="getAllAttributeKeys()Ljava/util/Set;"/> + <method name="getAttribute(Ljava/text/AttributedCharacterIterator$Attribute;)Ljava/lang/Object;"/> + <method name="getAttributes()Ljava/util/Map;"/> + <method name="getRunLimit()I"/> + <method name="getRunLimit(Ljava/text/AttributedCharacterIterator$Attribute;)I"/> + <method name="getRunLimit(Ljava/util/Set;)I"/> + <method name="getRunStart()I"/> + <method name="getRunStart(Ljava/text/AttributedCharacterIterator$Attribute;)I"/> + <method name="getRunStart(Ljava/util/Set;)I"/> + </class> + <class name="java/text/AttributedCharacterIterator$Attribute" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getName()Ljava/lang/String;"/> + <method name="readResolve()Ljava/lang/Object;"/> + <field name="INPUT_METHOD_SEGMENT"/> + <field name="LANGUAGE"/> + <field name="READING"/> + </class> + <class name="java/text/AttributedString" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/util/Map;)V"/> + <method name="<init>(Ljava/text/AttributedCharacterIterator;)V"/> + <method name="<init>(Ljava/text/AttributedCharacterIterator;II)V"/> + <method name="<init>(Ljava/text/AttributedCharacterIterator;II[Ljava/text/AttributedCharacterIterator$Attribute;)V"/> + <method name="addAttribute(Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;)V"/> + <method name="addAttribute(Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;II)V"/> + <method name="addAttributes(Ljava/util/Map;II)V"/> + <method name="getIterator()Ljava/text/AttributedCharacterIterator;"/> + <method name="getIterator([Ljava/text/AttributedCharacterIterator$Attribute;)Ljava/text/AttributedCharacterIterator;"/> + <method name="getIterator([Ljava/text/AttributedCharacterIterator$Attribute;II)Ljava/text/AttributedCharacterIterator;"/> + </class> + <class name="java/text/Bidi" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="<init>(Ljava/text/AttributedCharacterIterator;)V"/> + <method name="<init>([CI[BIII)V"/> + <method name="baseIsLeftToRight()Z"/> + <method name="createLineBidi(II)Ljava/text/Bidi;"/> + <method name="getBaseLevel()I"/> + <method name="getLength()I"/> + <method name="getLevelAt(I)I"/> + <method name="getRunCount()I"/> + <method name="getRunLevel(I)I"/> + <method name="getRunLimit(I)I"/> + <method name="getRunStart(I)I"/> + <method name="isLeftToRight()Z"/> + <method name="isMixed()Z"/> + <method name="isRightToLeft()Z"/> + <method name="reorderVisually([BI[Ljava/lang/Object;II)V"/> + <method name="requiresBidi([CII)Z"/> + <field name="DIRECTION_DEFAULT_LEFT_TO_RIGHT"/> + <field name="DIRECTION_DEFAULT_RIGHT_TO_LEFT"/> + <field name="DIRECTION_LEFT_TO_RIGHT"/> + <field name="DIRECTION_RIGHT_TO_LEFT"/> + </class> + <class name="java/text/BreakIterator" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="current()I"/> + <method name="first()I"/> + <method name="following(I)I"/> + <method name="getAvailableLocales()[Ljava/util/Locale;"/> + <method name="getCharacterInstance()Ljava/text/BreakIterator;"/> + <method name="getCharacterInstance(Ljava/util/Locale;)Ljava/text/BreakIterator;"/> + <method name="getInt([BI)I" removed="9"/> + <method name="getLineInstance()Ljava/text/BreakIterator;"/> + <method name="getLineInstance(Ljava/util/Locale;)Ljava/text/BreakIterator;"/> + <method name="getLong([BI)J" removed="9"/> + <method name="getSentenceInstance()Ljava/text/BreakIterator;"/> + <method name="getSentenceInstance(Ljava/util/Locale;)Ljava/text/BreakIterator;"/> + <method name="getShort([BI)S" removed="9"/> + <method name="getText()Ljava/text/CharacterIterator;"/> + <method name="getWordInstance()Ljava/text/BreakIterator;"/> + <method name="getWordInstance(Ljava/util/Locale;)Ljava/text/BreakIterator;"/> + <method name="isBoundary(I)Z"/> + <method name="last()I"/> + <method name="next()I"/> + <method name="next(I)I"/> + <method name="preceding(I)I"/> + <method name="previous()I"/> + <method name="setText(Ljava/lang/String;)V"/> + <method name="setText(Ljava/text/CharacterIterator;)V"/> + <field name="DONE"/> + </class> + <class name="java/text/CharacterIterator" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <method name="current()C"/> + <method name="first()C"/> + <method name="getBeginIndex()I"/> + <method name="getEndIndex()I"/> + <method name="getIndex()I"/> + <method name="last()C"/> + <method name="next()C"/> + <method name="previous()C"/> + <method name="setIndex(I)C"/> + <field name="DONE"/> + </class> + <class name="java/text/ChoiceFormat" since="1"> + <extends name="java/text/NumberFormat"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>([D[Ljava/lang/String;)V"/> + <method name="applyPattern(Ljava/lang/String;)V"/> + <method name="getFormats()[Ljava/lang/Object;"/> + <method name="getLimits()[D"/> + <method name="nextDouble(D)D"/> + <method name="nextDouble(DZ)D"/> + <method name="previousDouble(D)D"/> + <method name="setChoices([D[Ljava/lang/String;)V"/> + <method name="toPattern()Ljava/lang/String;"/> + </class> + <class name="java/text/CollationElementIterator" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getMaxExpansion(I)I"/> + <method name="getOffset()I"/> + <method name="next()I"/> + <method name="previous()I"/> + <method name="primaryOrder(I)I"/> + <method name="reset()V"/> + <method name="secondaryOrder(I)S"/> + <method name="setOffset(I)V"/> + <method name="setText(Ljava/lang/String;)V"/> + <method name="setText(Ljava/text/CharacterIterator;)V"/> + <method name="tertiaryOrder(I)S"/> + <field name="NULLORDER"/> + </class> + <class name="java/text/CollationKey" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Comparable"/> + <method name="<init>()V" removed="9"/> + <method name="<init>(Ljava/lang/String;)V" since="9"/> + <method name="compareTo(Ljava/text/CollationKey;)I"/> + <method name="getSourceString()Ljava/lang/String;"/> + <method name="toByteArray()[B"/> + </class> + <class name="java/text/Collator" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <implements name="java/util/Comparator"/> + <method name="<init>()V"/> + <method name="compare(Ljava/lang/String;Ljava/lang/String;)I"/> + <method name="equals(Ljava/lang/String;Ljava/lang/String;)Z"/> + <method name="getAvailableLocales()[Ljava/util/Locale;"/> + <method name="getCollationKey(Ljava/lang/String;)Ljava/text/CollationKey;"/> + <method name="getDecomposition()I"/> + <method name="getInstance()Ljava/text/Collator;"/> + <method name="getInstance(Ljava/util/Locale;)Ljava/text/Collator;"/> + <method name="getStrength()I"/> + <method name="setDecomposition(I)V"/> + <method name="setStrength(I)V"/> + <field name="CANONICAL_DECOMPOSITION"/> + <field name="FULL_DECOMPOSITION"/> + <field name="IDENTICAL"/> + <field name="NO_DECOMPOSITION"/> + <field name="PRIMARY"/> + <field name="SECONDARY"/> + <field name="TERTIARY"/> + </class> + <class name="java/text/DateFormat" since="1"> + <extends name="java/text/Format"/> + <method name="<init>()V"/> + <method name="format(Ljava/util/Date;)Ljava/lang/String;"/> + <method name="format(Ljava/util/Date;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;"/> + <method name="getAvailableLocales()[Ljava/util/Locale;"/> + <method name="getCalendar()Ljava/util/Calendar;"/> + <method name="getDateInstance()Ljava/text/DateFormat;"/> + <method name="getDateInstance(I)Ljava/text/DateFormat;"/> + <method name="getDateInstance(ILjava/util/Locale;)Ljava/text/DateFormat;"/> + <method name="getDateTimeInstance()Ljava/text/DateFormat;"/> + <method name="getDateTimeInstance(II)Ljava/text/DateFormat;"/> + <method name="getDateTimeInstance(IILjava/util/Locale;)Ljava/text/DateFormat;"/> + <method name="getInstance()Ljava/text/DateFormat;"/> + <method name="getNumberFormat()Ljava/text/NumberFormat;"/> + <method name="getTimeInstance()Ljava/text/DateFormat;"/> + <method name="getTimeInstance(I)Ljava/text/DateFormat;"/> + <method name="getTimeInstance(ILjava/util/Locale;)Ljava/text/DateFormat;"/> + <method name="getTimeZone()Ljava/util/TimeZone;"/> + <method name="isLenient()Z"/> + <method name="parse(Ljava/lang/String;)Ljava/util/Date;"/> + <method name="parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/util/Date;"/> + <method name="setCalendar(Ljava/util/Calendar;)V"/> + <method name="setLenient(Z)V"/> + <method name="setNumberFormat(Ljava/text/NumberFormat;)V"/> + <method name="setTimeZone(Ljava/util/TimeZone;)V"/> + <field name="AM_PM_FIELD"/> + <field name="DATE_FIELD"/> + <field name="DAY_OF_WEEK_FIELD"/> + <field name="DAY_OF_WEEK_IN_MONTH_FIELD"/> + <field name="DAY_OF_YEAR_FIELD"/> + <field name="DEFAULT"/> + <field name="ERA_FIELD"/> + <field name="FULL"/> + <field name="HOUR0_FIELD"/> + <field name="HOUR1_FIELD"/> + <field name="HOUR_OF_DAY0_FIELD"/> + <field name="HOUR_OF_DAY1_FIELD"/> + <field name="LONG"/> + <field name="MEDIUM"/> + <field name="MILLISECOND_FIELD"/> + <field name="MINUTE_FIELD"/> + <field name="MONTH_FIELD"/> + <field name="SECOND_FIELD"/> + <field name="SHORT"/> + <field name="TIMEZONE_FIELD"/> + <field name="WEEK_OF_MONTH_FIELD"/> + <field name="WEEK_OF_YEAR_FIELD"/> + <field name="YEAR_FIELD"/> + <field name="calendar"/> + <field name="numberFormat"/> + </class> + <class name="java/text/DateFormat$Field" since="1"> + <extends name="java/text/Format$Field"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="getCalendarField()I"/> + <method name="ofCalendarField(I)Ljava/text/DateFormat$Field;"/> + <field name="AM_PM"/> + <field name="DAY_OF_MONTH"/> + <field name="DAY_OF_WEEK"/> + <field name="DAY_OF_WEEK_IN_MONTH"/> + <field name="DAY_OF_YEAR"/> + <field name="ERA"/> + <field name="HOUR0"/> + <field name="HOUR1"/> + <field name="HOUR_OF_DAY0"/> + <field name="HOUR_OF_DAY1"/> + <field name="MILLISECOND"/> + <field name="MINUTE"/> + <field name="MONTH"/> + <field name="SECOND"/> + <field name="TIME_ZONE"/> + <field name="WEEK_OF_MONTH"/> + <field name="WEEK_OF_YEAR"/> + <field name="YEAR"/> + </class> + <class name="java/text/DateFormatSymbols" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/util/Locale;)V"/> + <method name="getAmPmStrings()[Ljava/lang/String;"/> + <method name="getAvailableLocales()[Ljava/util/Locale;" since="9"/> + <method name="getEras()[Ljava/lang/String;"/> + <method name="getInstance()Ljava/text/DateFormatSymbols;" since="9"/> + <method name="getInstance(Ljava/util/Locale;)Ljava/text/DateFormatSymbols;" since="9"/> + <method name="getLocalPatternChars()Ljava/lang/String;"/> + <method name="getMonths()[Ljava/lang/String;"/> + <method name="getShortMonths()[Ljava/lang/String;"/> + <method name="getShortWeekdays()[Ljava/lang/String;"/> + <method name="getWeekdays()[Ljava/lang/String;"/> + <method name="getZoneStrings()[[Ljava/lang/String;"/> + <method name="setAmPmStrings([Ljava/lang/String;)V"/> + <method name="setEras([Ljava/lang/String;)V"/> + <method name="setLocalPatternChars(Ljava/lang/String;)V"/> + <method name="setMonths([Ljava/lang/String;)V"/> + <method name="setShortMonths([Ljava/lang/String;)V"/> + <method name="setShortWeekdays([Ljava/lang/String;)V"/> + <method name="setWeekdays([Ljava/lang/String;)V"/> + <method name="setZoneStrings([[Ljava/lang/String;)V"/> + </class> + <class name="java/text/DecimalFormat" since="1"> + <extends name="java/text/NumberFormat"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/text/DecimalFormatSymbols;)V"/> + <method name="applyLocalizedPattern(Ljava/lang/String;)V"/> + <method name="applyPattern(Ljava/lang/String;)V"/> + <method name="getDecimalFormatSymbols()Ljava/text/DecimalFormatSymbols;"/> + <method name="getGroupingSize()I"/> + <method name="getMultiplier()I"/> + <method name="getNegativePrefix()Ljava/lang/String;"/> + <method name="getNegativeSuffix()Ljava/lang/String;"/> + <method name="getPositivePrefix()Ljava/lang/String;"/> + <method name="getPositiveSuffix()Ljava/lang/String;"/> + <method name="isDecimalSeparatorAlwaysShown()Z"/> + <method name="isParseBigDecimal()Z"/> + <method name="setDecimalFormatSymbols(Ljava/text/DecimalFormatSymbols;)V"/> + <method name="setDecimalSeparatorAlwaysShown(Z)V"/> + <method name="setGroupingSize(I)V"/> + <method name="setMultiplier(I)V"/> + <method name="setNegativePrefix(Ljava/lang/String;)V"/> + <method name="setNegativeSuffix(Ljava/lang/String;)V"/> + <method name="setParseBigDecimal(Z)V"/> + <method name="setPositivePrefix(Ljava/lang/String;)V"/> + <method name="setPositiveSuffix(Ljava/lang/String;)V"/> + <method name="toLocalizedPattern()Ljava/lang/String;"/> + <method name="toPattern()Ljava/lang/String;"/> + </class> + <class name="java/text/DecimalFormatSymbols" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/util/Locale;)V"/> + <method name="getAvailableLocales()[Ljava/util/Locale;" since="9"/> + <method name="getCurrency()Ljava/util/Currency;"/> + <method name="getCurrencySymbol()Ljava/lang/String;"/> + <method name="getDecimalSeparator()C"/> + <method name="getDigit()C"/> + <method name="getExponentSeparator()Ljava/lang/String;" since="9"/> + <method name="getGroupingSeparator()C"/> + <method name="getInfinity()Ljava/lang/String;"/> + <method name="getInstance()Ljava/text/DecimalFormatSymbols;" since="9"/> + <method name="getInstance(Ljava/util/Locale;)Ljava/text/DecimalFormatSymbols;" since="9"/> + <method name="getInternationalCurrencySymbol()Ljava/lang/String;"/> + <method name="getMinusSign()C"/> + <method name="getMonetaryDecimalSeparator()C"/> + <method name="getNaN()Ljava/lang/String;"/> + <method name="getPatternSeparator()C"/> + <method name="getPerMill()C"/> + <method name="getPercent()C"/> + <method name="getZeroDigit()C"/> + <method name="setCurrency(Ljava/util/Currency;)V"/> + <method name="setCurrencySymbol(Ljava/lang/String;)V"/> + <method name="setDecimalSeparator(C)V"/> + <method name="setDigit(C)V"/> + <method name="setExponentSeparator(Ljava/lang/String;)V" since="9"/> + <method name="setGroupingSeparator(C)V"/> + <method name="setInfinity(Ljava/lang/String;)V"/> + <method name="setInternationalCurrencySymbol(Ljava/lang/String;)V"/> + <method name="setMinusSign(C)V"/> + <method name="setMonetaryDecimalSeparator(C)V"/> + <method name="setNaN(Ljava/lang/String;)V"/> + <method name="setPatternSeparator(C)V"/> + <method name="setPerMill(C)V"/> + <method name="setPercent(C)V"/> + <method name="setZeroDigit(C)V"/> + </class> + <class name="java/text/FieldPosition" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(I)V"/> + <method name="<init>(Ljava/text/Format$Field;)V"/> + <method name="<init>(Ljava/text/Format$Field;I)V"/> + <method name="getBeginIndex()I"/> + <method name="getEndIndex()I"/> + <method name="getField()I"/> + <method name="getFieldAttribute()Ljava/text/Format$Field;"/> + <method name="setBeginIndex(I)V"/> + <method name="setEndIndex(I)V"/> + </class> + <class name="java/text/Format" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="format(Ljava/lang/Object;)Ljava/lang/String;"/> + <method name="format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;"/> + <method name="formatToCharacterIterator(Ljava/lang/Object;)Ljava/text/AttributedCharacterIterator;"/> + <method name="parseObject(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="parseObject(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Object;"/> + </class> + <class name="java/text/Format$Field" since="1"> + <extends name="java/text/AttributedCharacterIterator$Attribute"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/text/MessageFormat" since="1"> + <extends name="java/text/Format"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/util/Locale;)V"/> + <method name="applyPattern(Ljava/lang/String;)V"/> + <method name="format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;"/> + <method name="format([Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;"/> + <method name="getFormats()[Ljava/text/Format;"/> + <method name="getFormatsByArgumentIndex()[Ljava/text/Format;"/> + <method name="getLocale()Ljava/util/Locale;"/> + <method name="parse(Ljava/lang/String;)[Ljava/lang/Object;"/> + <method name="parse(Ljava/lang/String;Ljava/text/ParsePosition;)[Ljava/lang/Object;"/> + <method name="setFormat(ILjava/text/Format;)V"/> + <method name="setFormatByArgumentIndex(ILjava/text/Format;)V"/> + <method name="setFormats([Ljava/text/Format;)V"/> + <method name="setFormatsByArgumentIndex([Ljava/text/Format;)V"/> + <method name="setLocale(Ljava/util/Locale;)V"/> + <method name="toPattern()Ljava/lang/String;"/> + </class> + <class name="java/text/MessageFormat$Field" since="1"> + <extends name="java/text/Format$Field"/> + <method name="<init>(Ljava/lang/String;)V"/> + <field name="ARGUMENT"/> + </class> + <class name="java/text/Normalizer" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="isNormalized(Ljava/lang/CharSequence;Ljava/text/Normalizer$Form;)Z"/> + <method name="normalize(Ljava/lang/CharSequence;Ljava/text/Normalizer$Form;)Ljava/lang/String;"/> + </class> + <class name="java/text/Normalizer$Form" since="9"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/text/Normalizer$Form;"/> + <method name="values()[Ljava/text/Normalizer$Form;"/> + <field name="NFC"/> + <field name="NFD"/> + <field name="NFKC"/> + <field name="NFKD"/> + </class> + <class name="java/text/NumberFormat" since="1"> + <extends name="java/text/Format"/> + <method name="<init>()V"/> + <method name="format(D)Ljava/lang/String;"/> + <method name="format(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;"/> + <method name="format(J)Ljava/lang/String;"/> + <method name="format(JLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;"/> + <method name="getAvailableLocales()[Ljava/util/Locale;"/> + <method name="getCurrency()Ljava/util/Currency;"/> + <method name="getCurrencyInstance()Ljava/text/NumberFormat;"/> + <method name="getCurrencyInstance(Ljava/util/Locale;)Ljava/text/NumberFormat;"/> + <method name="getInstance()Ljava/text/NumberFormat;"/> + <method name="getInstance(Ljava/util/Locale;)Ljava/text/NumberFormat;"/> + <method name="getIntegerInstance()Ljava/text/NumberFormat;"/> + <method name="getIntegerInstance(Ljava/util/Locale;)Ljava/text/NumberFormat;"/> + <method name="getMaximumFractionDigits()I"/> + <method name="getMaximumIntegerDigits()I"/> + <method name="getMinimumFractionDigits()I"/> + <method name="getMinimumIntegerDigits()I"/> + <method name="getNumberInstance()Ljava/text/NumberFormat;"/> + <method name="getNumberInstance(Ljava/util/Locale;)Ljava/text/NumberFormat;"/> + <method name="getPercentInstance()Ljava/text/NumberFormat;"/> + <method name="getPercentInstance(Ljava/util/Locale;)Ljava/text/NumberFormat;"/> + <method name="getRoundingMode()Ljava/math/RoundingMode;" since="9"/> + <method name="isGroupingUsed()Z"/> + <method name="isParseIntegerOnly()Z"/> + <method name="parse(Ljava/lang/String;)Ljava/lang/Number;"/> + <method name="parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Number;"/> + <method name="setCurrency(Ljava/util/Currency;)V"/> + <method name="setGroupingUsed(Z)V"/> + <method name="setMaximumFractionDigits(I)V"/> + <method name="setMaximumIntegerDigits(I)V"/> + <method name="setMinimumFractionDigits(I)V"/> + <method name="setMinimumIntegerDigits(I)V"/> + <method name="setParseIntegerOnly(Z)V"/> + <method name="setRoundingMode(Ljava/math/RoundingMode;)V" since="9"/> + <field name="FRACTION_FIELD"/> + <field name="INTEGER_FIELD"/> + </class> + <class name="java/text/NumberFormat$Field" since="1"> + <extends name="java/text/Format$Field"/> + <method name="<init>(Ljava/lang/String;)V"/> + <field name="CURRENCY"/> + <field name="DECIMAL_SEPARATOR"/> + <field name="EXPONENT"/> + <field name="EXPONENT_SIGN"/> + <field name="EXPONENT_SYMBOL"/> + <field name="FRACTION"/> + <field name="GROUPING_SEPARATOR"/> + <field name="INTEGER"/> + <field name="PERCENT"/> + <field name="PERMILLE"/> + <field name="SIGN"/> + </class> + <class name="java/text/ParseException" since="1"> + <extends name="java/lang/Exception"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="getErrorOffset()I"/> + </class> + <class name="java/text/ParsePosition" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(I)V"/> + <method name="getErrorIndex()I"/> + <method name="getIndex()I"/> + <method name="setErrorIndex(I)V"/> + <method name="setIndex(I)V"/> + </class> + <class name="java/text/RuleBasedCollator" since="1"> + <extends name="java/text/Collator"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getCollationElementIterator(Ljava/lang/String;)Ljava/text/CollationElementIterator;"/> + <method name="getCollationElementIterator(Ljava/text/CharacterIterator;)Ljava/text/CollationElementIterator;"/> + <method name="getRules()Ljava/lang/String;"/> + </class> + <class name="java/text/SimpleDateFormat" since="1"> + <extends name="java/text/DateFormat"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/text/DateFormatSymbols;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/util/Locale;)V"/> + <method name="applyLocalizedPattern(Ljava/lang/String;)V"/> + <method name="applyPattern(Ljava/lang/String;)V"/> + <method name="get2DigitYearStart()Ljava/util/Date;"/> + <method name="getDateFormatSymbols()Ljava/text/DateFormatSymbols;"/> + <method name="set2DigitYearStart(Ljava/util/Date;)V"/> + <method name="setDateFormatSymbols(Ljava/text/DateFormatSymbols;)V"/> + <method name="toLocalizedPattern()Ljava/lang/String;"/> + <method name="toPattern()Ljava/lang/String;"/> + </class> + <class name="java/text/StringCharacterIterator" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/text/CharacterIterator"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="<init>(Ljava/lang/String;III)V"/> + <method name="setText(Ljava/lang/String;)V"/> + </class> + <class name="java/time/Clock" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="fixed(Ljava/time/Instant;Ljava/time/ZoneId;)Ljava/time/Clock;"/> + <method name="getZone()Ljava/time/ZoneId;"/> + <method name="instant()Ljava/time/Instant;"/> + <method name="millis()J"/> + <method name="offset(Ljava/time/Clock;Ljava/time/Duration;)Ljava/time/Clock;"/> + <method name="system(Ljava/time/ZoneId;)Ljava/time/Clock;"/> + <method name="systemDefaultZone()Ljava/time/Clock;"/> + <method name="systemUTC()Ljava/time/Clock;"/> + <method name="tick(Ljava/time/Clock;Ljava/time/Duration;)Ljava/time/Clock;"/> + <method name="tickMinutes(Ljava/time/ZoneId;)Ljava/time/Clock;"/> + <method name="tickSeconds(Ljava/time/ZoneId;)Ljava/time/Clock;"/> + <method name="withZone(Ljava/time/ZoneId;)Ljava/time/Clock;"/> + </class> + <class name="java/time/DateTimeException" since="26"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + </class> + <class name="java/time/DayOfWeek" since="26"> + <extends name="java/lang/Enum"/> + <implements name="java/time/temporal/TemporalAccessor"/> + <implements name="java/time/temporal/TemporalAdjuster"/> + <method name="from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/DayOfWeek;"/> + <method name="getDisplayName(Ljava/time/format/TextStyle;Ljava/util/Locale;)Ljava/lang/String;"/> + <method name="getValue()I"/> + <method name="minus(J)Ljava/time/DayOfWeek;"/> + <method name="of(I)Ljava/time/DayOfWeek;"/> + <method name="plus(J)Ljava/time/DayOfWeek;"/> + <method name="valueOf(Ljava/lang/String;)Ljava/time/DayOfWeek;"/> + <method name="values()[Ljava/time/DayOfWeek;"/> + <field name="FRIDAY"/> + <field name="MONDAY"/> + <field name="SATURDAY"/> + <field name="SUNDAY"/> + <field name="THURSDAY"/> + <field name="TUESDAY"/> + <field name="WEDNESDAY"/> + </class> + <class name="java/time/Duration" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Comparable"/> + <implements name="java/time/temporal/TemporalAmount"/> + <method name="<init>()V"/> + <method name="abs()Ljava/time/Duration;"/> + <method name="between(Ljava/time/temporal/Temporal;Ljava/time/temporal/Temporal;)Ljava/time/Duration;"/> + <method name="compareTo(Ljava/time/Duration;)I"/> + <method name="dividedBy(J)Ljava/time/Duration;"/> + <method name="from(Ljava/time/temporal/TemporalAmount;)Ljava/time/Duration;"/> + <method name="getNano()I"/> + <method name="getSeconds()J"/> + <method name="isNegative()Z"/> + <method name="isZero()Z"/> + <method name="minus(JLjava/time/temporal/TemporalUnit;)Ljava/time/Duration;"/> + <method name="minus(Ljava/time/Duration;)Ljava/time/Duration;"/> + <method name="minusDays(J)Ljava/time/Duration;"/> + <method name="minusHours(J)Ljava/time/Duration;"/> + <method name="minusMillis(J)Ljava/time/Duration;"/> + <method name="minusMinutes(J)Ljava/time/Duration;"/> + <method name="minusNanos(J)Ljava/time/Duration;"/> + <method name="minusSeconds(J)Ljava/time/Duration;"/> + <method name="multipliedBy(J)Ljava/time/Duration;"/> + <method name="negated()Ljava/time/Duration;"/> + <method name="of(JLjava/time/temporal/TemporalUnit;)Ljava/time/Duration;"/> + <method name="ofDays(J)Ljava/time/Duration;"/> + <method name="ofHours(J)Ljava/time/Duration;"/> + <method name="ofMillis(J)Ljava/time/Duration;"/> + <method name="ofMinutes(J)Ljava/time/Duration;"/> + <method name="ofNanos(J)Ljava/time/Duration;"/> + <method name="ofSeconds(J)Ljava/time/Duration;"/> + <method name="ofSeconds(JJ)Ljava/time/Duration;"/> + <method name="parse(Ljava/lang/CharSequence;)Ljava/time/Duration;"/> + <method name="plus(JLjava/time/temporal/TemporalUnit;)Ljava/time/Duration;"/> + <method name="plus(Ljava/time/Duration;)Ljava/time/Duration;"/> + <method name="plusDays(J)Ljava/time/Duration;"/> + <method name="plusHours(J)Ljava/time/Duration;"/> + <method name="plusMillis(J)Ljava/time/Duration;"/> + <method name="plusMinutes(J)Ljava/time/Duration;"/> + <method name="plusNanos(J)Ljava/time/Duration;"/> + <method name="plusSeconds(J)Ljava/time/Duration;"/> + <method name="toDays()J"/> + <method name="toHours()J"/> + <method name="toMillis()J"/> + <method name="toMinutes()J"/> + <method name="toNanos()J"/> + <method name="withNanos(I)Ljava/time/Duration;"/> + <method name="withSeconds(J)Ljava/time/Duration;"/> + <field name="ZERO"/> + </class> + <class name="java/time/Instant" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Comparable"/> + <implements name="java/time/temporal/Temporal"/> + <implements name="java/time/temporal/TemporalAdjuster"/> + <method name="<init>()V"/> + <method name="atOffset(Ljava/time/ZoneOffset;)Ljava/time/OffsetDateTime;"/> + <method name="atZone(Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;"/> + <method name="compareTo(Ljava/time/Instant;)I"/> + <method name="from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/Instant;"/> + <method name="getEpochSecond()J"/> + <method name="getNano()I"/> + <method name="isAfter(Ljava/time/Instant;)Z"/> + <method name="isBefore(Ljava/time/Instant;)Z"/> + <method name="minus(JLjava/time/temporal/TemporalUnit;)Ljava/time/Instant;"/> + <method name="minus(Ljava/time/temporal/TemporalAmount;)Ljava/time/Instant;"/> + <method name="minusMillis(J)Ljava/time/Instant;"/> + <method name="minusNanos(J)Ljava/time/Instant;"/> + <method name="minusSeconds(J)Ljava/time/Instant;"/> + <method name="now()Ljava/time/Instant;"/> + <method name="now(Ljava/time/Clock;)Ljava/time/Instant;"/> + <method name="ofEpochMilli(J)Ljava/time/Instant;"/> + <method name="ofEpochSecond(J)Ljava/time/Instant;"/> + <method name="ofEpochSecond(JJ)Ljava/time/Instant;"/> + <method name="parse(Ljava/lang/CharSequence;)Ljava/time/Instant;"/> + <method name="plus(JLjava/time/temporal/TemporalUnit;)Ljava/time/Instant;"/> + <method name="plus(Ljava/time/temporal/TemporalAmount;)Ljava/time/Instant;"/> + <method name="plusMillis(J)Ljava/time/Instant;"/> + <method name="plusNanos(J)Ljava/time/Instant;"/> + <method name="plusSeconds(J)Ljava/time/Instant;"/> + <method name="toEpochMilli()J"/> + <method name="truncatedTo(Ljava/time/temporal/TemporalUnit;)Ljava/time/Instant;"/> + <method name="with(Ljava/time/temporal/TemporalAdjuster;)Ljava/time/Instant;"/> + <method name="with(Ljava/time/temporal/TemporalField;J)Ljava/time/Instant;"/> + <field name="EPOCH"/> + <field name="MAX"/> + <field name="MIN"/> + </class> + <class name="java/time/LocalDate" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/time/chrono/ChronoLocalDate"/> + <implements name="java/time/temporal/Temporal"/> + <implements name="java/time/temporal/TemporalAdjuster"/> + <method name="<init>()V"/> + <method name="atStartOfDay()Ljava/time/LocalDateTime;"/> + <method name="atStartOfDay(Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;"/> + <method name="atTime(II)Ljava/time/LocalDateTime;"/> + <method name="atTime(III)Ljava/time/LocalDateTime;"/> + <method name="atTime(IIII)Ljava/time/LocalDateTime;"/> + <method name="atTime(Ljava/time/LocalTime;)Ljava/time/LocalDateTime;"/> + <method name="atTime(Ljava/time/OffsetTime;)Ljava/time/OffsetDateTime;"/> + <method name="from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/LocalDate;"/> + <method name="getChronology()Ljava/time/chrono/IsoChronology;"/> + <method name="getDayOfMonth()I"/> + <method name="getDayOfWeek()Ljava/time/DayOfWeek;"/> + <method name="getDayOfYear()I"/> + <method name="getMonth()Ljava/time/Month;"/> + <method name="getMonthValue()I"/> + <method name="getYear()I"/> + <method name="minus(JLjava/time/temporal/TemporalUnit;)Ljava/time/LocalDate;"/> + <method name="minus(Ljava/time/temporal/TemporalAmount;)Ljava/time/LocalDate;"/> + <method name="minusDays(J)Ljava/time/LocalDate;"/> + <method name="minusMonths(J)Ljava/time/LocalDate;"/> + <method name="minusWeeks(J)Ljava/time/LocalDate;"/> + <method name="minusYears(J)Ljava/time/LocalDate;"/> + <method name="now()Ljava/time/LocalDate;"/> + <method name="now(Ljava/time/Clock;)Ljava/time/LocalDate;"/> + <method name="now(Ljava/time/ZoneId;)Ljava/time/LocalDate;"/> + <method name="of(III)Ljava/time/LocalDate;"/> + <method name="of(ILjava/time/Month;I)Ljava/time/LocalDate;"/> + <method name="ofEpochDay(J)Ljava/time/LocalDate;"/> + <method name="ofYearDay(II)Ljava/time/LocalDate;"/> + <method name="parse(Ljava/lang/CharSequence;)Ljava/time/LocalDate;"/> + <method name="parse(Ljava/lang/CharSequence;Ljava/time/format/DateTimeFormatter;)Ljava/time/LocalDate;"/> + <method name="plus(JLjava/time/temporal/TemporalUnit;)Ljava/time/LocalDate;"/> + <method name="plus(Ljava/time/temporal/TemporalAmount;)Ljava/time/LocalDate;"/> + <method name="plusDays(J)Ljava/time/LocalDate;"/> + <method name="plusMonths(J)Ljava/time/LocalDate;"/> + <method name="plusWeeks(J)Ljava/time/LocalDate;"/> + <method name="plusYears(J)Ljava/time/LocalDate;"/> + <method name="until(Ljava/time/chrono/ChronoLocalDate;)Ljava/time/Period;"/> + <method name="with(Ljava/time/temporal/TemporalAdjuster;)Ljava/time/LocalDate;"/> + <method name="with(Ljava/time/temporal/TemporalField;J)Ljava/time/LocalDate;"/> + <method name="withDayOfMonth(I)Ljava/time/LocalDate;"/> + <method name="withDayOfYear(I)Ljava/time/LocalDate;"/> + <method name="withMonth(I)Ljava/time/LocalDate;"/> + <method name="withYear(I)Ljava/time/LocalDate;"/> + <field name="MAX"/> + <field name="MIN"/> + </class> + <class name="java/time/LocalDateTime" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/time/chrono/ChronoLocalDateTime"/> + <implements name="java/time/temporal/Temporal"/> + <implements name="java/time/temporal/TemporalAdjuster"/> + <method name="<init>()V"/> + <method name="atOffset(Ljava/time/ZoneOffset;)Ljava/time/OffsetDateTime;"/> + <method name="atZone(Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;"/> + <method name="from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/LocalDateTime;"/> + <method name="getDayOfMonth()I"/> + <method name="getDayOfWeek()Ljava/time/DayOfWeek;"/> + <method name="getDayOfYear()I"/> + <method name="getHour()I"/> + <method name="getMinute()I"/> + <method name="getMonth()Ljava/time/Month;"/> + <method name="getMonthValue()I"/> + <method name="getNano()I"/> + <method name="getSecond()I"/> + <method name="getYear()I"/> + <method name="minus(JLjava/time/temporal/TemporalUnit;)Ljava/time/LocalDateTime;"/> + <method name="minus(Ljava/time/temporal/TemporalAmount;)Ljava/time/LocalDateTime;"/> + <method name="minusDays(J)Ljava/time/LocalDateTime;"/> + <method name="minusHours(J)Ljava/time/LocalDateTime;"/> + <method name="minusMinutes(J)Ljava/time/LocalDateTime;"/> + <method name="minusMonths(J)Ljava/time/LocalDateTime;"/> + <method name="minusNanos(J)Ljava/time/LocalDateTime;"/> + <method name="minusSeconds(J)Ljava/time/LocalDateTime;"/> + <method name="minusWeeks(J)Ljava/time/LocalDateTime;"/> + <method name="minusYears(J)Ljava/time/LocalDateTime;"/> + <method name="now()Ljava/time/LocalDateTime;"/> + <method name="now(Ljava/time/Clock;)Ljava/time/LocalDateTime;"/> + <method name="now(Ljava/time/ZoneId;)Ljava/time/LocalDateTime;"/> + <method name="of(IIIII)Ljava/time/LocalDateTime;"/> + <method name="of(IIIIII)Ljava/time/LocalDateTime;"/> + <method name="of(IIIIIII)Ljava/time/LocalDateTime;"/> + <method name="of(ILjava/time/Month;III)Ljava/time/LocalDateTime;"/> + <method name="of(ILjava/time/Month;IIII)Ljava/time/LocalDateTime;"/> + <method name="of(ILjava/time/Month;IIIII)Ljava/time/LocalDateTime;"/> + <method name="of(Ljava/time/LocalDate;Ljava/time/LocalTime;)Ljava/time/LocalDateTime;"/> + <method name="ofEpochSecond(JILjava/time/ZoneOffset;)Ljava/time/LocalDateTime;"/> + <method name="ofInstant(Ljava/time/Instant;Ljava/time/ZoneId;)Ljava/time/LocalDateTime;"/> + <method name="parse(Ljava/lang/CharSequence;)Ljava/time/LocalDateTime;"/> + <method name="parse(Ljava/lang/CharSequence;Ljava/time/format/DateTimeFormatter;)Ljava/time/LocalDateTime;"/> + <method name="plus(JLjava/time/temporal/TemporalUnit;)Ljava/time/LocalDateTime;"/> + <method name="plus(Ljava/time/temporal/TemporalAmount;)Ljava/time/LocalDateTime;"/> + <method name="plusDays(J)Ljava/time/LocalDateTime;"/> + <method name="plusHours(J)Ljava/time/LocalDateTime;"/> + <method name="plusMinutes(J)Ljava/time/LocalDateTime;"/> + <method name="plusMonths(J)Ljava/time/LocalDateTime;"/> + <method name="plusNanos(J)Ljava/time/LocalDateTime;"/> + <method name="plusSeconds(J)Ljava/time/LocalDateTime;"/> + <method name="plusWeeks(J)Ljava/time/LocalDateTime;"/> + <method name="plusYears(J)Ljava/time/LocalDateTime;"/> + <method name="toLocalDate()Ljava/time/LocalDate;"/> + <method name="truncatedTo(Ljava/time/temporal/TemporalUnit;)Ljava/time/LocalDateTime;"/> + <method name="with(Ljava/time/temporal/TemporalAdjuster;)Ljava/time/LocalDateTime;"/> + <method name="with(Ljava/time/temporal/TemporalField;J)Ljava/time/LocalDateTime;"/> + <method name="withDayOfMonth(I)Ljava/time/LocalDateTime;"/> + <method name="withDayOfYear(I)Ljava/time/LocalDateTime;"/> + <method name="withHour(I)Ljava/time/LocalDateTime;"/> + <method name="withMinute(I)Ljava/time/LocalDateTime;"/> + <method name="withMonth(I)Ljava/time/LocalDateTime;"/> + <method name="withNano(I)Ljava/time/LocalDateTime;"/> + <method name="withSecond(I)Ljava/time/LocalDateTime;"/> + <method name="withYear(I)Ljava/time/LocalDateTime;"/> + <field name="MAX"/> + <field name="MIN"/> + </class> + <class name="java/time/LocalTime" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Comparable"/> + <implements name="java/time/temporal/Temporal"/> + <implements name="java/time/temporal/TemporalAdjuster"/> + <method name="<init>()V"/> + <method name="atDate(Ljava/time/LocalDate;)Ljava/time/LocalDateTime;"/> + <method name="atOffset(Ljava/time/ZoneOffset;)Ljava/time/OffsetTime;"/> + <method name="compareTo(Ljava/time/LocalTime;)I"/> + <method name="format(Ljava/time/format/DateTimeFormatter;)Ljava/lang/String;"/> + <method name="from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/LocalTime;"/> + <method name="getHour()I"/> + <method name="getMinute()I"/> + <method name="getNano()I"/> + <method name="getSecond()I"/> + <method name="isAfter(Ljava/time/LocalTime;)Z"/> + <method name="isBefore(Ljava/time/LocalTime;)Z"/> + <method name="minus(JLjava/time/temporal/TemporalUnit;)Ljava/time/LocalTime;"/> + <method name="minus(Ljava/time/temporal/TemporalAmount;)Ljava/time/LocalTime;"/> + <method name="minusHours(J)Ljava/time/LocalTime;"/> + <method name="minusMinutes(J)Ljava/time/LocalTime;"/> + <method name="minusNanos(J)Ljava/time/LocalTime;"/> + <method name="minusSeconds(J)Ljava/time/LocalTime;"/> + <method name="now()Ljava/time/LocalTime;"/> + <method name="now(Ljava/time/Clock;)Ljava/time/LocalTime;"/> + <method name="now(Ljava/time/ZoneId;)Ljava/time/LocalTime;"/> + <method name="of(II)Ljava/time/LocalTime;"/> + <method name="of(III)Ljava/time/LocalTime;"/> + <method name="of(IIII)Ljava/time/LocalTime;"/> + <method name="ofNanoOfDay(J)Ljava/time/LocalTime;"/> + <method name="ofSecondOfDay(J)Ljava/time/LocalTime;"/> + <method name="parse(Ljava/lang/CharSequence;)Ljava/time/LocalTime;"/> + <method name="parse(Ljava/lang/CharSequence;Ljava/time/format/DateTimeFormatter;)Ljava/time/LocalTime;"/> + <method name="plus(JLjava/time/temporal/TemporalUnit;)Ljava/time/LocalTime;"/> + <method name="plus(Ljava/time/temporal/TemporalAmount;)Ljava/time/LocalTime;"/> + <method name="plusHours(J)Ljava/time/LocalTime;"/> + <method name="plusMinutes(J)Ljava/time/LocalTime;"/> + <method name="plusNanos(J)Ljava/time/LocalTime;"/> + <method name="plusSeconds(J)Ljava/time/LocalTime;"/> + <method name="toNanoOfDay()J"/> + <method name="toSecondOfDay()I"/> + <method name="truncatedTo(Ljava/time/temporal/TemporalUnit;)Ljava/time/LocalTime;"/> + <method name="with(Ljava/time/temporal/TemporalAdjuster;)Ljava/time/LocalTime;"/> + <method name="with(Ljava/time/temporal/TemporalField;J)Ljava/time/LocalTime;"/> + <method name="withHour(I)Ljava/time/LocalTime;"/> + <method name="withMinute(I)Ljava/time/LocalTime;"/> + <method name="withNano(I)Ljava/time/LocalTime;"/> + <method name="withSecond(I)Ljava/time/LocalTime;"/> + <field name="MAX"/> + <field name="MIDNIGHT"/> + <field name="MIN"/> + <field name="NOON"/> + </class> + <class name="java/time/Month" since="26"> + <extends name="java/lang/Enum"/> + <implements name="java/time/temporal/TemporalAccessor"/> + <implements name="java/time/temporal/TemporalAdjuster"/> + <method name="firstDayOfYear(Z)I"/> + <method name="firstMonthOfQuarter()Ljava/time/Month;"/> + <method name="from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/Month;"/> + <method name="getDisplayName(Ljava/time/format/TextStyle;Ljava/util/Locale;)Ljava/lang/String;"/> + <method name="getValue()I"/> + <method name="length(Z)I"/> + <method name="maxLength()I"/> + <method name="minLength()I"/> + <method name="minus(J)Ljava/time/Month;"/> + <method name="of(I)Ljava/time/Month;"/> + <method name="plus(J)Ljava/time/Month;"/> + <method name="valueOf(Ljava/lang/String;)Ljava/time/Month;"/> + <method name="values()[Ljava/time/Month;"/> + <field name="APRIL"/> + <field name="AUGUST"/> + <field name="DECEMBER"/> + <field name="FEBRUARY"/> + <field name="JANUARY"/> + <field name="JULY"/> + <field name="JUNE"/> + <field name="MARCH"/> + <field name="MAY"/> + <field name="NOVEMBER"/> + <field name="OCTOBER"/> + <field name="SEPTEMBER"/> + </class> + <class name="java/time/MonthDay" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Comparable"/> + <implements name="java/time/temporal/TemporalAccessor"/> + <implements name="java/time/temporal/TemporalAdjuster"/> + <method name="<init>()V"/> + <method name="atYear(I)Ljava/time/LocalDate;"/> + <method name="compareTo(Ljava/time/MonthDay;)I"/> + <method name="format(Ljava/time/format/DateTimeFormatter;)Ljava/lang/String;"/> + <method name="from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/MonthDay;"/> + <method name="getDayOfMonth()I"/> + <method name="getMonth()Ljava/time/Month;"/> + <method name="getMonthValue()I"/> + <method name="isAfter(Ljava/time/MonthDay;)Z"/> + <method name="isBefore(Ljava/time/MonthDay;)Z"/> + <method name="isValidYear(I)Z"/> + <method name="now()Ljava/time/MonthDay;"/> + <method name="now(Ljava/time/Clock;)Ljava/time/MonthDay;"/> + <method name="now(Ljava/time/ZoneId;)Ljava/time/MonthDay;"/> + <method name="of(II)Ljava/time/MonthDay;"/> + <method name="of(Ljava/time/Month;I)Ljava/time/MonthDay;"/> + <method name="parse(Ljava/lang/CharSequence;)Ljava/time/MonthDay;"/> + <method name="parse(Ljava/lang/CharSequence;Ljava/time/format/DateTimeFormatter;)Ljava/time/MonthDay;"/> + <method name="with(Ljava/time/Month;)Ljava/time/MonthDay;"/> + <method name="withDayOfMonth(I)Ljava/time/MonthDay;"/> + <method name="withMonth(I)Ljava/time/MonthDay;"/> + </class> + <class name="java/time/OffsetDateTime" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Comparable"/> + <implements name="java/time/temporal/Temporal"/> + <implements name="java/time/temporal/TemporalAdjuster"/> + <method name="<init>()V"/> + <method name="atZoneSameInstant(Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;"/> + <method name="atZoneSimilarLocal(Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;"/> + <method name="compareTo(Ljava/time/OffsetDateTime;)I"/> + <method name="format(Ljava/time/format/DateTimeFormatter;)Ljava/lang/String;"/> + <method name="from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/OffsetDateTime;"/> + <method name="getDayOfMonth()I"/> + <method name="getDayOfWeek()Ljava/time/DayOfWeek;"/> + <method name="getDayOfYear()I"/> + <method name="getHour()I"/> + <method name="getMinute()I"/> + <method name="getMonth()Ljava/time/Month;"/> + <method name="getMonthValue()I"/> + <method name="getNano()I"/> + <method name="getOffset()Ljava/time/ZoneOffset;"/> + <method name="getSecond()I"/> + <method name="getYear()I"/> + <method name="isAfter(Ljava/time/OffsetDateTime;)Z"/> + <method name="isBefore(Ljava/time/OffsetDateTime;)Z"/> + <method name="isEqual(Ljava/time/OffsetDateTime;)Z"/> + <method name="minus(JLjava/time/temporal/TemporalUnit;)Ljava/time/OffsetDateTime;"/> + <method name="minus(Ljava/time/temporal/TemporalAmount;)Ljava/time/OffsetDateTime;"/> + <method name="minusDays(J)Ljava/time/OffsetDateTime;"/> + <method name="minusHours(J)Ljava/time/OffsetDateTime;"/> + <method name="minusMinutes(J)Ljava/time/OffsetDateTime;"/> + <method name="minusMonths(J)Ljava/time/OffsetDateTime;"/> + <method name="minusNanos(J)Ljava/time/OffsetDateTime;"/> + <method name="minusSeconds(J)Ljava/time/OffsetDateTime;"/> + <method name="minusWeeks(J)Ljava/time/OffsetDateTime;"/> + <method name="minusYears(J)Ljava/time/OffsetDateTime;"/> + <method name="now()Ljava/time/OffsetDateTime;"/> + <method name="now(Ljava/time/Clock;)Ljava/time/OffsetDateTime;"/> + <method name="now(Ljava/time/ZoneId;)Ljava/time/OffsetDateTime;"/> + <method name="of(IIIIIIILjava/time/ZoneOffset;)Ljava/time/OffsetDateTime;"/> + <method name="of(Ljava/time/LocalDate;Ljava/time/LocalTime;Ljava/time/ZoneOffset;)Ljava/time/OffsetDateTime;"/> + <method name="of(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;)Ljava/time/OffsetDateTime;"/> + <method name="ofInstant(Ljava/time/Instant;Ljava/time/ZoneId;)Ljava/time/OffsetDateTime;"/> + <method name="parse(Ljava/lang/CharSequence;)Ljava/time/OffsetDateTime;"/> + <method name="parse(Ljava/lang/CharSequence;Ljava/time/format/DateTimeFormatter;)Ljava/time/OffsetDateTime;"/> + <method name="plus(JLjava/time/temporal/TemporalUnit;)Ljava/time/OffsetDateTime;"/> + <method name="plus(Ljava/time/temporal/TemporalAmount;)Ljava/time/OffsetDateTime;"/> + <method name="plusDays(J)Ljava/time/OffsetDateTime;"/> + <method name="plusHours(J)Ljava/time/OffsetDateTime;"/> + <method name="plusMinutes(J)Ljava/time/OffsetDateTime;"/> + <method name="plusMonths(J)Ljava/time/OffsetDateTime;"/> + <method name="plusNanos(J)Ljava/time/OffsetDateTime;"/> + <method name="plusSeconds(J)Ljava/time/OffsetDateTime;"/> + <method name="plusWeeks(J)Ljava/time/OffsetDateTime;"/> + <method name="plusYears(J)Ljava/time/OffsetDateTime;"/> + <method name="timeLineOrder()Ljava/util/Comparator;"/> + <method name="toEpochSecond()J"/> + <method name="toInstant()Ljava/time/Instant;"/> + <method name="toLocalDate()Ljava/time/LocalDate;"/> + <method name="toLocalDateTime()Ljava/time/LocalDateTime;"/> + <method name="toLocalTime()Ljava/time/LocalTime;"/> + <method name="toOffsetTime()Ljava/time/OffsetTime;"/> + <method name="toZonedDateTime()Ljava/time/ZonedDateTime;"/> + <method name="truncatedTo(Ljava/time/temporal/TemporalUnit;)Ljava/time/OffsetDateTime;"/> + <method name="with(Ljava/time/temporal/TemporalAdjuster;)Ljava/time/OffsetDateTime;"/> + <method name="with(Ljava/time/temporal/TemporalField;J)Ljava/time/OffsetDateTime;"/> + <method name="withDayOfMonth(I)Ljava/time/OffsetDateTime;"/> + <method name="withDayOfYear(I)Ljava/time/OffsetDateTime;"/> + <method name="withHour(I)Ljava/time/OffsetDateTime;"/> + <method name="withMinute(I)Ljava/time/OffsetDateTime;"/> + <method name="withMonth(I)Ljava/time/OffsetDateTime;"/> + <method name="withNano(I)Ljava/time/OffsetDateTime;"/> + <method name="withOffsetSameInstant(Ljava/time/ZoneOffset;)Ljava/time/OffsetDateTime;"/> + <method name="withOffsetSameLocal(Ljava/time/ZoneOffset;)Ljava/time/OffsetDateTime;"/> + <method name="withSecond(I)Ljava/time/OffsetDateTime;"/> + <method name="withYear(I)Ljava/time/OffsetDateTime;"/> + <field name="MAX"/> + <field name="MIN"/> + </class> + <class name="java/time/OffsetTime" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Comparable"/> + <implements name="java/time/temporal/Temporal"/> + <implements name="java/time/temporal/TemporalAdjuster"/> + <method name="<init>()V"/> + <method name="atDate(Ljava/time/LocalDate;)Ljava/time/OffsetDateTime;"/> + <method name="compareTo(Ljava/time/OffsetTime;)I"/> + <method name="format(Ljava/time/format/DateTimeFormatter;)Ljava/lang/String;"/> + <method name="from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/OffsetTime;"/> + <method name="getHour()I"/> + <method name="getMinute()I"/> + <method name="getNano()I"/> + <method name="getOffset()Ljava/time/ZoneOffset;"/> + <method name="getSecond()I"/> + <method name="isAfter(Ljava/time/OffsetTime;)Z"/> + <method name="isBefore(Ljava/time/OffsetTime;)Z"/> + <method name="isEqual(Ljava/time/OffsetTime;)Z"/> + <method name="minus(JLjava/time/temporal/TemporalUnit;)Ljava/time/OffsetTime;"/> + <method name="minus(Ljava/time/temporal/TemporalAmount;)Ljava/time/OffsetTime;"/> + <method name="minusHours(J)Ljava/time/OffsetTime;"/> + <method name="minusMinutes(J)Ljava/time/OffsetTime;"/> + <method name="minusNanos(J)Ljava/time/OffsetTime;"/> + <method name="minusSeconds(J)Ljava/time/OffsetTime;"/> + <method name="now()Ljava/time/OffsetTime;"/> + <method name="now(Ljava/time/Clock;)Ljava/time/OffsetTime;"/> + <method name="now(Ljava/time/ZoneId;)Ljava/time/OffsetTime;"/> + <method name="of(IIIILjava/time/ZoneOffset;)Ljava/time/OffsetTime;"/> + <method name="of(Ljava/time/LocalTime;Ljava/time/ZoneOffset;)Ljava/time/OffsetTime;"/> + <method name="ofInstant(Ljava/time/Instant;Ljava/time/ZoneId;)Ljava/time/OffsetTime;"/> + <method name="parse(Ljava/lang/CharSequence;)Ljava/time/OffsetTime;"/> + <method name="parse(Ljava/lang/CharSequence;Ljava/time/format/DateTimeFormatter;)Ljava/time/OffsetTime;"/> + <method name="plus(JLjava/time/temporal/TemporalUnit;)Ljava/time/OffsetTime;"/> + <method name="plus(Ljava/time/temporal/TemporalAmount;)Ljava/time/OffsetTime;"/> + <method name="plusHours(J)Ljava/time/OffsetTime;"/> + <method name="plusMinutes(J)Ljava/time/OffsetTime;"/> + <method name="plusNanos(J)Ljava/time/OffsetTime;"/> + <method name="plusSeconds(J)Ljava/time/OffsetTime;"/> + <method name="toLocalTime()Ljava/time/LocalTime;"/> + <method name="truncatedTo(Ljava/time/temporal/TemporalUnit;)Ljava/time/OffsetTime;"/> + <method name="with(Ljava/time/temporal/TemporalAdjuster;)Ljava/time/OffsetTime;"/> + <method name="with(Ljava/time/temporal/TemporalField;J)Ljava/time/OffsetTime;"/> + <method name="withHour(I)Ljava/time/OffsetTime;"/> + <method name="withMinute(I)Ljava/time/OffsetTime;"/> + <method name="withNano(I)Ljava/time/OffsetTime;"/> + <method name="withOffsetSameInstant(Ljava/time/ZoneOffset;)Ljava/time/OffsetTime;"/> + <method name="withOffsetSameLocal(Ljava/time/ZoneOffset;)Ljava/time/OffsetTime;"/> + <method name="withSecond(I)Ljava/time/OffsetTime;"/> + <field name="MAX"/> + <field name="MIN"/> + </class> + <class name="java/time/Period" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/time/chrono/ChronoPeriod"/> + <method name="<init>()V"/> + <method name="between(Ljava/time/LocalDate;Ljava/time/LocalDate;)Ljava/time/Period;"/> + <method name="from(Ljava/time/temporal/TemporalAmount;)Ljava/time/Period;"/> + <method name="getChronology()Ljava/time/chrono/IsoChronology;"/> + <method name="getDays()I"/> + <method name="getMonths()I"/> + <method name="getYears()I"/> + <method name="minus(Ljava/time/temporal/TemporalAmount;)Ljava/time/Period;"/> + <method name="minusDays(J)Ljava/time/Period;"/> + <method name="minusMonths(J)Ljava/time/Period;"/> + <method name="minusYears(J)Ljava/time/Period;"/> + <method name="multipliedBy(I)Ljava/time/Period;"/> + <method name="negated()Ljava/time/Period;"/> + <method name="normalized()Ljava/time/Period;"/> + <method name="of(III)Ljava/time/Period;"/> + <method name="ofDays(I)Ljava/time/Period;"/> + <method name="ofMonths(I)Ljava/time/Period;"/> + <method name="ofWeeks(I)Ljava/time/Period;"/> + <method name="ofYears(I)Ljava/time/Period;"/> + <method name="parse(Ljava/lang/CharSequence;)Ljava/time/Period;"/> + <method name="plus(Ljava/time/temporal/TemporalAmount;)Ljava/time/Period;"/> + <method name="plusDays(J)Ljava/time/Period;"/> + <method name="plusMonths(J)Ljava/time/Period;"/> + <method name="plusYears(J)Ljava/time/Period;"/> + <method name="toTotalMonths()J"/> + <method name="withDays(I)Ljava/time/Period;"/> + <method name="withMonths(I)Ljava/time/Period;"/> + <method name="withYears(I)Ljava/time/Period;"/> + <field name="ZERO"/> + </class> + <class name="java/time/Year" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Comparable"/> + <implements name="java/time/temporal/Temporal"/> + <implements name="java/time/temporal/TemporalAdjuster"/> + <method name="<init>()V"/> + <method name="atDay(I)Ljava/time/LocalDate;"/> + <method name="atMonth(I)Ljava/time/YearMonth;"/> + <method name="atMonth(Ljava/time/Month;)Ljava/time/YearMonth;"/> + <method name="atMonthDay(Ljava/time/MonthDay;)Ljava/time/LocalDate;"/> + <method name="compareTo(Ljava/time/Year;)I"/> + <method name="format(Ljava/time/format/DateTimeFormatter;)Ljava/lang/String;"/> + <method name="from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/Year;"/> + <method name="getValue()I"/> + <method name="isAfter(Ljava/time/Year;)Z"/> + <method name="isBefore(Ljava/time/Year;)Z"/> + <method name="isLeap()Z"/> + <method name="isLeap(J)Z"/> + <method name="isValidMonthDay(Ljava/time/MonthDay;)Z"/> + <method name="length()I"/> + <method name="minus(JLjava/time/temporal/TemporalUnit;)Ljava/time/Year;"/> + <method name="minus(Ljava/time/temporal/TemporalAmount;)Ljava/time/Year;"/> + <method name="minusYears(J)Ljava/time/Year;"/> + <method name="now()Ljava/time/Year;"/> + <method name="now(Ljava/time/Clock;)Ljava/time/Year;"/> + <method name="now(Ljava/time/ZoneId;)Ljava/time/Year;"/> + <method name="of(I)Ljava/time/Year;"/> + <method name="parse(Ljava/lang/CharSequence;)Ljava/time/Year;"/> + <method name="parse(Ljava/lang/CharSequence;Ljava/time/format/DateTimeFormatter;)Ljava/time/Year;"/> + <method name="plus(JLjava/time/temporal/TemporalUnit;)Ljava/time/Year;"/> + <method name="plus(Ljava/time/temporal/TemporalAmount;)Ljava/time/Year;"/> + <method name="plusYears(J)Ljava/time/Year;"/> + <method name="with(Ljava/time/temporal/TemporalAdjuster;)Ljava/time/Year;"/> + <method name="with(Ljava/time/temporal/TemporalField;J)Ljava/time/Year;"/> + <field name="MAX_VALUE"/> + <field name="MIN_VALUE"/> + </class> + <class name="java/time/YearMonth" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Comparable"/> + <implements name="java/time/temporal/Temporal"/> + <implements name="java/time/temporal/TemporalAdjuster"/> + <method name="<init>()V"/> + <method name="atDay(I)Ljava/time/LocalDate;"/> + <method name="atEndOfMonth()Ljava/time/LocalDate;"/> + <method name="compareTo(Ljava/time/YearMonth;)I"/> + <method name="format(Ljava/time/format/DateTimeFormatter;)Ljava/lang/String;"/> + <method name="from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/YearMonth;"/> + <method name="getMonth()Ljava/time/Month;"/> + <method name="getMonthValue()I"/> + <method name="getYear()I"/> + <method name="isAfter(Ljava/time/YearMonth;)Z"/> + <method name="isBefore(Ljava/time/YearMonth;)Z"/> + <method name="isLeapYear()Z"/> + <method name="isValidDay(I)Z"/> + <method name="lengthOfMonth()I"/> + <method name="lengthOfYear()I"/> + <method name="minus(JLjava/time/temporal/TemporalUnit;)Ljava/time/YearMonth;"/> + <method name="minus(Ljava/time/temporal/TemporalAmount;)Ljava/time/YearMonth;"/> + <method name="minusMonths(J)Ljava/time/YearMonth;"/> + <method name="minusYears(J)Ljava/time/YearMonth;"/> + <method name="now()Ljava/time/YearMonth;"/> + <method name="now(Ljava/time/Clock;)Ljava/time/YearMonth;"/> + <method name="now(Ljava/time/ZoneId;)Ljava/time/YearMonth;"/> + <method name="of(II)Ljava/time/YearMonth;"/> + <method name="of(ILjava/time/Month;)Ljava/time/YearMonth;"/> + <method name="parse(Ljava/lang/CharSequence;)Ljava/time/YearMonth;"/> + <method name="parse(Ljava/lang/CharSequence;Ljava/time/format/DateTimeFormatter;)Ljava/time/YearMonth;"/> + <method name="plus(JLjava/time/temporal/TemporalUnit;)Ljava/time/YearMonth;"/> + <method name="plus(Ljava/time/temporal/TemporalAmount;)Ljava/time/YearMonth;"/> + <method name="plusMonths(J)Ljava/time/YearMonth;"/> + <method name="plusYears(J)Ljava/time/YearMonth;"/> + <method name="with(Ljava/time/temporal/TemporalAdjuster;)Ljava/time/YearMonth;"/> + <method name="with(Ljava/time/temporal/TemporalField;J)Ljava/time/YearMonth;"/> + <method name="withMonth(I)Ljava/time/YearMonth;"/> + <method name="withYear(I)Ljava/time/YearMonth;"/> + </class> + <class name="java/time/ZoneId" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/ZoneId;"/> + <method name="getAvailableZoneIds()Ljava/util/Set;"/> + <method name="getDisplayName(Ljava/time/format/TextStyle;Ljava/util/Locale;)Ljava/lang/String;"/> + <method name="getId()Ljava/lang/String;"/> + <method name="getRules()Ljava/time/zone/ZoneRules;"/> + <method name="normalized()Ljava/time/ZoneId;"/> + <method name="of(Ljava/lang/String;)Ljava/time/ZoneId;"/> + <method name="of(Ljava/lang/String;Ljava/util/Map;)Ljava/time/ZoneId;"/> + <method name="ofOffset(Ljava/lang/String;Ljava/time/ZoneOffset;)Ljava/time/ZoneId;"/> + <method name="systemDefault()Ljava/time/ZoneId;"/> + <field name="SHORT_IDS"/> + </class> + <class name="java/time/ZoneOffset" since="26"> + <extends name="java/time/ZoneId"/> + <implements name="java/lang/Comparable"/> + <implements name="java/time/temporal/TemporalAccessor"/> + <implements name="java/time/temporal/TemporalAdjuster"/> + <method name="<init>()V"/> + <method name="compareTo(Ljava/time/ZoneOffset;)I"/> + <method name="from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/ZoneOffset;"/> + <method name="getTotalSeconds()I"/> + <method name="of(Ljava/lang/String;)Ljava/time/ZoneOffset;"/> + <method name="ofHours(I)Ljava/time/ZoneOffset;"/> + <method name="ofHoursMinutes(II)Ljava/time/ZoneOffset;"/> + <method name="ofHoursMinutesSeconds(III)Ljava/time/ZoneOffset;"/> + <method name="ofTotalSeconds(I)Ljava/time/ZoneOffset;"/> + <field name="MAX"/> + <field name="MIN"/> + <field name="UTC"/> + </class> + <class name="java/time/ZonedDateTime" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/time/chrono/ChronoZonedDateTime"/> + <implements name="java/time/temporal/Temporal"/> + <method name="<init>()V"/> + <method name="from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/ZonedDateTime;"/> + <method name="getDayOfMonth()I"/> + <method name="getDayOfWeek()Ljava/time/DayOfWeek;"/> + <method name="getDayOfYear()I"/> + <method name="getHour()I"/> + <method name="getMinute()I"/> + <method name="getMonth()Ljava/time/Month;"/> + <method name="getMonthValue()I"/> + <method name="getNano()I"/> + <method name="getSecond()I"/> + <method name="getYear()I"/> + <method name="minus(JLjava/time/temporal/TemporalUnit;)Ljava/time/ZonedDateTime;"/> + <method name="minus(Ljava/time/temporal/TemporalAmount;)Ljava/time/ZonedDateTime;"/> + <method name="minusDays(J)Ljava/time/ZonedDateTime;"/> + <method name="minusHours(J)Ljava/time/ZonedDateTime;"/> + <method name="minusMinutes(J)Ljava/time/ZonedDateTime;"/> + <method name="minusMonths(J)Ljava/time/ZonedDateTime;"/> + <method name="minusNanos(J)Ljava/time/ZonedDateTime;"/> + <method name="minusSeconds(J)Ljava/time/ZonedDateTime;"/> + <method name="minusWeeks(J)Ljava/time/ZonedDateTime;"/> + <method name="minusYears(J)Ljava/time/ZonedDateTime;"/> + <method name="now()Ljava/time/ZonedDateTime;"/> + <method name="now(Ljava/time/Clock;)Ljava/time/ZonedDateTime;"/> + <method name="now(Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;"/> + <method name="of(IIIIIIILjava/time/ZoneId;)Ljava/time/ZonedDateTime;"/> + <method name="of(Ljava/time/LocalDate;Ljava/time/LocalTime;Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;"/> + <method name="of(Ljava/time/LocalDateTime;Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;"/> + <method name="ofInstant(Ljava/time/Instant;Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;"/> + <method name="ofInstant(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;"/> + <method name="ofLocal(Ljava/time/LocalDateTime;Ljava/time/ZoneId;Ljava/time/ZoneOffset;)Ljava/time/ZonedDateTime;"/> + <method name="ofStrict(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;"/> + <method name="parse(Ljava/lang/CharSequence;)Ljava/time/ZonedDateTime;"/> + <method name="parse(Ljava/lang/CharSequence;Ljava/time/format/DateTimeFormatter;)Ljava/time/ZonedDateTime;"/> + <method name="plus(JLjava/time/temporal/TemporalUnit;)Ljava/time/ZonedDateTime;"/> + <method name="plus(Ljava/time/temporal/TemporalAmount;)Ljava/time/ZonedDateTime;"/> + <method name="plusDays(J)Ljava/time/ZonedDateTime;"/> + <method name="plusHours(J)Ljava/time/ZonedDateTime;"/> + <method name="plusMinutes(J)Ljava/time/ZonedDateTime;"/> + <method name="plusMonths(J)Ljava/time/ZonedDateTime;"/> + <method name="plusNanos(J)Ljava/time/ZonedDateTime;"/> + <method name="plusSeconds(J)Ljava/time/ZonedDateTime;"/> + <method name="plusWeeks(J)Ljava/time/ZonedDateTime;"/> + <method name="plusYears(J)Ljava/time/ZonedDateTime;"/> + <method name="toLocalDate()Ljava/time/LocalDate;"/> + <method name="toLocalDateTime()Ljava/time/LocalDateTime;"/> + <method name="toOffsetDateTime()Ljava/time/OffsetDateTime;"/> + <method name="truncatedTo(Ljava/time/temporal/TemporalUnit;)Ljava/time/ZonedDateTime;"/> + <method name="with(Ljava/time/temporal/TemporalAdjuster;)Ljava/time/ZonedDateTime;"/> + <method name="with(Ljava/time/temporal/TemporalField;J)Ljava/time/ZonedDateTime;"/> + <method name="withDayOfMonth(I)Ljava/time/ZonedDateTime;"/> + <method name="withDayOfYear(I)Ljava/time/ZonedDateTime;"/> + <method name="withEarlierOffsetAtOverlap()Ljava/time/ZonedDateTime;"/> + <method name="withFixedOffsetZone()Ljava/time/ZonedDateTime;"/> + <method name="withHour(I)Ljava/time/ZonedDateTime;"/> + <method name="withLaterOffsetAtOverlap()Ljava/time/ZonedDateTime;"/> + <method name="withMinute(I)Ljava/time/ZonedDateTime;"/> + <method name="withMonth(I)Ljava/time/ZonedDateTime;"/> + <method name="withNano(I)Ljava/time/ZonedDateTime;"/> + <method name="withSecond(I)Ljava/time/ZonedDateTime;"/> + <method name="withYear(I)Ljava/time/ZonedDateTime;"/> + <method name="withZoneSameInstant(Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;"/> + <method name="withZoneSameLocal(Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;"/> + </class> + <class name="java/time/chrono/AbstractChronology" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/time/chrono/Chronology"/> + <method name="<init>()V"/> + </class> + <class name="java/time/chrono/ChronoLocalDate" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Comparable"/> + <implements name="java/time/temporal/Temporal"/> + <implements name="java/time/temporal/TemporalAdjuster"/> + <method name="atTime(Ljava/time/LocalTime;)Ljava/time/chrono/ChronoLocalDateTime;"/> + <method name="compareTo(Ljava/time/chrono/ChronoLocalDate;)I"/> + <method name="format(Ljava/time/format/DateTimeFormatter;)Ljava/lang/String;"/> + <method name="from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/chrono/ChronoLocalDate;"/> + <method name="getChronology()Ljava/time/chrono/Chronology;"/> + <method name="getEra()Ljava/time/chrono/Era;"/> + <method name="isAfter(Ljava/time/chrono/ChronoLocalDate;)Z"/> + <method name="isBefore(Ljava/time/chrono/ChronoLocalDate;)Z"/> + <method name="isEqual(Ljava/time/chrono/ChronoLocalDate;)Z"/> + <method name="isLeapYear()Z"/> + <method name="lengthOfMonth()I"/> + <method name="lengthOfYear()I"/> + <method name="minus(JLjava/time/temporal/TemporalUnit;)Ljava/time/chrono/ChronoLocalDate;"/> + <method name="minus(Ljava/time/temporal/TemporalAmount;)Ljava/time/chrono/ChronoLocalDate;"/> + <method name="plus(JLjava/time/temporal/TemporalUnit;)Ljava/time/chrono/ChronoLocalDate;"/> + <method name="plus(Ljava/time/temporal/TemporalAmount;)Ljava/time/chrono/ChronoLocalDate;"/> + <method name="timeLineOrder()Ljava/util/Comparator;"/> + <method name="toEpochDay()J"/> + <method name="until(Ljava/time/chrono/ChronoLocalDate;)Ljava/time/chrono/ChronoPeriod;"/> + <method name="with(Ljava/time/temporal/TemporalAdjuster;)Ljava/time/chrono/ChronoLocalDate;"/> + <method name="with(Ljava/time/temporal/TemporalField;J)Ljava/time/chrono/ChronoLocalDate;"/> + </class> + <class name="java/time/chrono/ChronoLocalDateImpl" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/time/chrono/ChronoLocalDate"/> + <implements name="java/time/temporal/Temporal"/> + <implements name="java/time/temporal/TemporalAdjuster"/> + <method name="<init>()V"/> + </class> + <class name="java/time/chrono/ChronoLocalDateTime" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Comparable"/> + <implements name="java/time/temporal/Temporal"/> + <implements name="java/time/temporal/TemporalAdjuster"/> + <method name="atZone(Ljava/time/ZoneId;)Ljava/time/chrono/ChronoZonedDateTime;"/> + <method name="compareTo(Ljava/time/chrono/ChronoLocalDateTime;)I"/> + <method name="format(Ljava/time/format/DateTimeFormatter;)Ljava/lang/String;"/> + <method name="from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/chrono/ChronoLocalDateTime;"/> + <method name="getChronology()Ljava/time/chrono/Chronology;"/> + <method name="isAfter(Ljava/time/chrono/ChronoLocalDateTime;)Z"/> + <method name="isBefore(Ljava/time/chrono/ChronoLocalDateTime;)Z"/> + <method name="isEqual(Ljava/time/chrono/ChronoLocalDateTime;)Z"/> + <method name="minus(JLjava/time/temporal/TemporalUnit;)Ljava/time/chrono/ChronoLocalDateTime;"/> + <method name="minus(Ljava/time/temporal/TemporalAmount;)Ljava/time/chrono/ChronoLocalDateTime;"/> + <method name="plus(JLjava/time/temporal/TemporalUnit;)Ljava/time/chrono/ChronoLocalDateTime;"/> + <method name="plus(Ljava/time/temporal/TemporalAmount;)Ljava/time/chrono/ChronoLocalDateTime;"/> + <method name="timeLineOrder()Ljava/util/Comparator;"/> + <method name="toEpochSecond(Ljava/time/ZoneOffset;)J"/> + <method name="toInstant(Ljava/time/ZoneOffset;)Ljava/time/Instant;"/> + <method name="toLocalDate()Ljava/time/chrono/ChronoLocalDate;"/> + <method name="toLocalTime()Ljava/time/LocalTime;"/> + <method name="with(Ljava/time/temporal/TemporalAdjuster;)Ljava/time/chrono/ChronoLocalDateTime;"/> + <method name="with(Ljava/time/temporal/TemporalField;J)Ljava/time/chrono/ChronoLocalDateTime;"/> + </class> + <class name="java/time/chrono/ChronoPeriod" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/time/temporal/TemporalAmount"/> + <method name="between(Ljava/time/chrono/ChronoLocalDate;Ljava/time/chrono/ChronoLocalDate;)Ljava/time/chrono/ChronoPeriod;"/> + <method name="getChronology()Ljava/time/chrono/Chronology;"/> + <method name="isNegative()Z"/> + <method name="isZero()Z"/> + <method name="minus(Ljava/time/temporal/TemporalAmount;)Ljava/time/chrono/ChronoPeriod;"/> + <method name="multipliedBy(I)Ljava/time/chrono/ChronoPeriod;"/> + <method name="negated()Ljava/time/chrono/ChronoPeriod;"/> + <method name="normalized()Ljava/time/chrono/ChronoPeriod;"/> + <method name="plus(Ljava/time/temporal/TemporalAmount;)Ljava/time/chrono/ChronoPeriod;"/> + </class> + <class name="java/time/chrono/ChronoZonedDateTime" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Comparable"/> + <implements name="java/time/temporal/Temporal"/> + <method name="compareTo(Ljava/time/chrono/ChronoZonedDateTime;)I"/> + <method name="format(Ljava/time/format/DateTimeFormatter;)Ljava/lang/String;"/> + <method name="from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/chrono/ChronoZonedDateTime;"/> + <method name="getChronology()Ljava/time/chrono/Chronology;"/> + <method name="getOffset()Ljava/time/ZoneOffset;"/> + <method name="getZone()Ljava/time/ZoneId;"/> + <method name="isAfter(Ljava/time/chrono/ChronoZonedDateTime;)Z"/> + <method name="isBefore(Ljava/time/chrono/ChronoZonedDateTime;)Z"/> + <method name="isEqual(Ljava/time/chrono/ChronoZonedDateTime;)Z"/> + <method name="minus(JLjava/time/temporal/TemporalUnit;)Ljava/time/chrono/ChronoZonedDateTime;"/> + <method name="minus(Ljava/time/temporal/TemporalAmount;)Ljava/time/chrono/ChronoZonedDateTime;"/> + <method name="plus(JLjava/time/temporal/TemporalUnit;)Ljava/time/chrono/ChronoZonedDateTime;"/> + <method name="plus(Ljava/time/temporal/TemporalAmount;)Ljava/time/chrono/ChronoZonedDateTime;"/> + <method name="timeLineOrder()Ljava/util/Comparator;"/> + <method name="toEpochSecond()J"/> + <method name="toInstant()Ljava/time/Instant;"/> + <method name="toLocalDate()Ljava/time/chrono/ChronoLocalDate;"/> + <method name="toLocalDateTime()Ljava/time/chrono/ChronoLocalDateTime;"/> + <method name="toLocalTime()Ljava/time/LocalTime;"/> + <method name="with(Ljava/time/temporal/TemporalAdjuster;)Ljava/time/chrono/ChronoZonedDateTime;"/> + <method name="with(Ljava/time/temporal/TemporalField;J)Ljava/time/chrono/ChronoZonedDateTime;"/> + <method name="withEarlierOffsetAtOverlap()Ljava/time/chrono/ChronoZonedDateTime;"/> + <method name="withLaterOffsetAtOverlap()Ljava/time/chrono/ChronoZonedDateTime;"/> + <method name="withZoneSameInstant(Ljava/time/ZoneId;)Ljava/time/chrono/ChronoZonedDateTime;"/> + <method name="withZoneSameLocal(Ljava/time/ZoneId;)Ljava/time/chrono/ChronoZonedDateTime;"/> + </class> + <class name="java/time/chrono/Chronology" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Comparable"/> + <method name="compareTo(Ljava/time/chrono/Chronology;)I"/> + <method name="date(III)Ljava/time/chrono/ChronoLocalDate;"/> + <method name="date(Ljava/time/chrono/Era;III)Ljava/time/chrono/ChronoLocalDate;"/> + <method name="date(Ljava/time/temporal/TemporalAccessor;)Ljava/time/chrono/ChronoLocalDate;"/> + <method name="dateEpochDay(J)Ljava/time/chrono/ChronoLocalDate;"/> + <method name="dateNow()Ljava/time/chrono/ChronoLocalDate;"/> + <method name="dateNow(Ljava/time/Clock;)Ljava/time/chrono/ChronoLocalDate;"/> + <method name="dateNow(Ljava/time/ZoneId;)Ljava/time/chrono/ChronoLocalDate;"/> + <method name="dateYearDay(II)Ljava/time/chrono/ChronoLocalDate;"/> + <method name="dateYearDay(Ljava/time/chrono/Era;II)Ljava/time/chrono/ChronoLocalDate;"/> + <method name="eraOf(I)Ljava/time/chrono/Era;"/> + <method name="eras()Ljava/util/List;"/> + <method name="from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/chrono/Chronology;"/> + <method name="getAvailableChronologies()Ljava/util/Set;"/> + <method name="getCalendarType()Ljava/lang/String;"/> + <method name="getDisplayName(Ljava/time/format/TextStyle;Ljava/util/Locale;)Ljava/lang/String;"/> + <method name="getId()Ljava/lang/String;"/> + <method name="isLeapYear(J)Z"/> + <method name="localDateTime(Ljava/time/temporal/TemporalAccessor;)Ljava/time/chrono/ChronoLocalDateTime;"/> + <method name="of(Ljava/lang/String;)Ljava/time/chrono/Chronology;"/> + <method name="ofLocale(Ljava/util/Locale;)Ljava/time/chrono/Chronology;"/> + <method name="period(III)Ljava/time/chrono/ChronoPeriod;"/> + <method name="prolepticYear(Ljava/time/chrono/Era;I)I"/> + <method name="range(Ljava/time/temporal/ChronoField;)Ljava/time/temporal/ValueRange;"/> + <method name="resolveDate(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;"/> + <method name="zonedDateTime(Ljava/time/Instant;Ljava/time/ZoneId;)Ljava/time/chrono/ChronoZonedDateTime;"/> + <method name="zonedDateTime(Ljava/time/temporal/TemporalAccessor;)Ljava/time/chrono/ChronoZonedDateTime;"/> + </class> + <class name="java/time/chrono/Era" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/time/temporal/TemporalAccessor"/> + <implements name="java/time/temporal/TemporalAdjuster"/> + <method name="getDisplayName(Ljava/time/format/TextStyle;Ljava/util/Locale;)Ljava/lang/String;"/> + <method name="getValue()I"/> + </class> + <class name="java/time/chrono/HijrahChronology" since="26"> + <extends name="java/time/chrono/AbstractChronology"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="date(III)Ljava/time/chrono/HijrahDate;"/> + <method name="date(Ljava/time/chrono/Era;III)Ljava/time/chrono/HijrahDate;"/> + <method name="date(Ljava/time/temporal/TemporalAccessor;)Ljava/time/chrono/HijrahDate;"/> + <method name="dateEpochDay(J)Ljava/time/chrono/HijrahDate;"/> + <method name="dateNow()Ljava/time/chrono/HijrahDate;"/> + <method name="dateNow(Ljava/time/Clock;)Ljava/time/chrono/HijrahDate;"/> + <method name="dateNow(Ljava/time/ZoneId;)Ljava/time/chrono/HijrahDate;"/> + <method name="dateYearDay(II)Ljava/time/chrono/HijrahDate;"/> + <method name="dateYearDay(Ljava/time/chrono/Era;II)Ljava/time/chrono/HijrahDate;"/> + <method name="eraOf(I)Ljava/time/chrono/HijrahEra;"/> + <method name="resolveDate(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/HijrahDate;"/> + <field name="INSTANCE"/> + </class> + <class name="java/time/chrono/HijrahDate" since="26"> + <extends name="java/time/chrono/ChronoLocalDateImpl"/> + <method name="<init>()V"/> + <method name="from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/chrono/HijrahDate;"/> + <method name="getChronology()Ljava/time/chrono/HijrahChronology;"/> + <method name="getEra()Ljava/time/chrono/HijrahEra;"/> + <method name="minus(JLjava/time/temporal/TemporalUnit;)Ljava/time/chrono/HijrahDate;"/> + <method name="minus(Ljava/time/temporal/TemporalAmount;)Ljava/time/chrono/HijrahDate;"/> + <method name="now()Ljava/time/chrono/HijrahDate;"/> + <method name="now(Ljava/time/Clock;)Ljava/time/chrono/HijrahDate;"/> + <method name="now(Ljava/time/ZoneId;)Ljava/time/chrono/HijrahDate;"/> + <method name="of(III)Ljava/time/chrono/HijrahDate;"/> + <method name="plus(JLjava/time/temporal/TemporalUnit;)Ljava/time/chrono/HijrahDate;"/> + <method name="plus(Ljava/time/temporal/TemporalAmount;)Ljava/time/chrono/HijrahDate;"/> + <method name="with(Ljava/time/temporal/TemporalAdjuster;)Ljava/time/chrono/HijrahDate;"/> + <method name="with(Ljava/time/temporal/TemporalField;J)Ljava/time/chrono/HijrahDate;"/> + <method name="withVariant(Ljava/time/chrono/HijrahChronology;)Ljava/time/chrono/HijrahDate;"/> + </class> + <class name="java/time/chrono/HijrahEra" since="26"> + <extends name="java/lang/Enum"/> + <implements name="java/time/chrono/Era"/> + <method name="of(I)Ljava/time/chrono/HijrahEra;"/> + <method name="valueOf(Ljava/lang/String;)Ljava/time/chrono/HijrahEra;"/> + <method name="values()[Ljava/time/chrono/HijrahEra;"/> + <field name="AH"/> + </class> + <class name="java/time/chrono/IsoChronology" since="26"> + <extends name="java/time/chrono/AbstractChronology"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="date(III)Ljava/time/LocalDate;"/> + <method name="date(Ljava/time/chrono/Era;III)Ljava/time/LocalDate;"/> + <method name="date(Ljava/time/temporal/TemporalAccessor;)Ljava/time/LocalDate;"/> + <method name="dateEpochDay(J)Ljava/time/LocalDate;"/> + <method name="dateNow()Ljava/time/LocalDate;"/> + <method name="dateNow(Ljava/time/Clock;)Ljava/time/LocalDate;"/> + <method name="dateNow(Ljava/time/ZoneId;)Ljava/time/LocalDate;"/> + <method name="dateYearDay(II)Ljava/time/LocalDate;"/> + <method name="dateYearDay(Ljava/time/chrono/Era;II)Ljava/time/LocalDate;"/> + <method name="eraOf(I)Ljava/time/chrono/IsoEra;"/> + <method name="localDateTime(Ljava/time/temporal/TemporalAccessor;)Ljava/time/LocalDateTime;"/> + <method name="period(III)Ljava/time/Period;"/> + <method name="resolveDate(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/LocalDate;"/> + <method name="zonedDateTime(Ljava/time/Instant;Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;"/> + <method name="zonedDateTime(Ljava/time/temporal/TemporalAccessor;)Ljava/time/ZonedDateTime;"/> + <field name="INSTANCE"/> + </class> + <class name="java/time/chrono/IsoEra" since="26"> + <extends name="java/lang/Enum"/> + <implements name="java/time/chrono/Era"/> + <method name="of(I)Ljava/time/chrono/IsoEra;"/> + <method name="valueOf(Ljava/lang/String;)Ljava/time/chrono/IsoEra;"/> + <method name="values()[Ljava/time/chrono/IsoEra;"/> + <field name="BCE"/> + <field name="CE"/> + </class> + <class name="java/time/chrono/JapaneseChronology" since="26"> + <extends name="java/time/chrono/AbstractChronology"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="date(III)Ljava/time/chrono/JapaneseDate;"/> + <method name="date(Ljava/time/chrono/Era;III)Ljava/time/chrono/JapaneseDate;"/> + <method name="date(Ljava/time/temporal/TemporalAccessor;)Ljava/time/chrono/JapaneseDate;"/> + <method name="dateEpochDay(J)Ljava/time/chrono/JapaneseDate;"/> + <method name="dateNow()Ljava/time/chrono/JapaneseDate;"/> + <method name="dateNow(Ljava/time/Clock;)Ljava/time/chrono/JapaneseDate;"/> + <method name="dateNow(Ljava/time/ZoneId;)Ljava/time/chrono/JapaneseDate;"/> + <method name="dateYearDay(II)Ljava/time/chrono/JapaneseDate;"/> + <method name="dateYearDay(Ljava/time/chrono/Era;II)Ljava/time/chrono/JapaneseDate;"/> + <method name="eraOf(I)Ljava/time/chrono/JapaneseEra;"/> + <method name="resolveDate(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/JapaneseDate;"/> + <field name="INSTANCE"/> + </class> + <class name="java/time/chrono/JapaneseDate" since="26"> + <extends name="java/time/chrono/ChronoLocalDateImpl"/> + <method name="<init>()V"/> + <method name="from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/chrono/JapaneseDate;"/> + <method name="getChronology()Ljava/time/chrono/JapaneseChronology;"/> + <method name="getEra()Ljava/time/chrono/JapaneseEra;"/> + <method name="minus(JLjava/time/temporal/TemporalUnit;)Ljava/time/chrono/JapaneseDate;"/> + <method name="minus(Ljava/time/temporal/TemporalAmount;)Ljava/time/chrono/JapaneseDate;"/> + <method name="now()Ljava/time/chrono/JapaneseDate;"/> + <method name="now(Ljava/time/Clock;)Ljava/time/chrono/JapaneseDate;"/> + <method name="now(Ljava/time/ZoneId;)Ljava/time/chrono/JapaneseDate;"/> + <method name="of(III)Ljava/time/chrono/JapaneseDate;"/> + <method name="of(Ljava/time/chrono/JapaneseEra;III)Ljava/time/chrono/JapaneseDate;"/> + <method name="plus(JLjava/time/temporal/TemporalUnit;)Ljava/time/chrono/JapaneseDate;"/> + <method name="plus(Ljava/time/temporal/TemporalAmount;)Ljava/time/chrono/JapaneseDate;"/> + <method name="with(Ljava/time/temporal/TemporalAdjuster;)Ljava/time/chrono/JapaneseDate;"/> + <method name="with(Ljava/time/temporal/TemporalField;J)Ljava/time/chrono/JapaneseDate;"/> + </class> + <class name="java/time/chrono/JapaneseEra" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/time/chrono/Era"/> + <method name="<init>()V"/> + <method name="of(I)Ljava/time/chrono/JapaneseEra;"/> + <method name="valueOf(Ljava/lang/String;)Ljava/time/chrono/JapaneseEra;"/> + <method name="values()[Ljava/time/chrono/JapaneseEra;"/> + <field name="HEISEI"/> + <field name="MEIJI"/> + <field name="SHOWA"/> + <field name="TAISHO"/> + </class> + <class name="java/time/chrono/MinguoChronology" since="26"> + <extends name="java/time/chrono/AbstractChronology"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="date(III)Ljava/time/chrono/MinguoDate;"/> + <method name="date(Ljava/time/chrono/Era;III)Ljava/time/chrono/MinguoDate;"/> + <method name="date(Ljava/time/temporal/TemporalAccessor;)Ljava/time/chrono/MinguoDate;"/> + <method name="dateEpochDay(J)Ljava/time/chrono/MinguoDate;"/> + <method name="dateNow()Ljava/time/chrono/MinguoDate;"/> + <method name="dateNow(Ljava/time/Clock;)Ljava/time/chrono/MinguoDate;"/> + <method name="dateNow(Ljava/time/ZoneId;)Ljava/time/chrono/MinguoDate;"/> + <method name="dateYearDay(II)Ljava/time/chrono/MinguoDate;"/> + <method name="dateYearDay(Ljava/time/chrono/Era;II)Ljava/time/chrono/MinguoDate;"/> + <method name="eraOf(I)Ljava/time/chrono/MinguoEra;"/> + <method name="resolveDate(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/MinguoDate;"/> + <field name="INSTANCE"/> + </class> + <class name="java/time/chrono/MinguoDate" since="26"> + <extends name="java/time/chrono/ChronoLocalDateImpl"/> + <method name="<init>()V"/> + <method name="from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/chrono/MinguoDate;"/> + <method name="getChronology()Ljava/time/chrono/MinguoChronology;"/> + <method name="getEra()Ljava/time/chrono/MinguoEra;"/> + <method name="minus(JLjava/time/temporal/TemporalUnit;)Ljava/time/chrono/MinguoDate;"/> + <method name="minus(Ljava/time/temporal/TemporalAmount;)Ljava/time/chrono/MinguoDate;"/> + <method name="now()Ljava/time/chrono/MinguoDate;"/> + <method name="now(Ljava/time/Clock;)Ljava/time/chrono/MinguoDate;"/> + <method name="now(Ljava/time/ZoneId;)Ljava/time/chrono/MinguoDate;"/> + <method name="of(III)Ljava/time/chrono/MinguoDate;"/> + <method name="plus(JLjava/time/temporal/TemporalUnit;)Ljava/time/chrono/MinguoDate;"/> + <method name="plus(Ljava/time/temporal/TemporalAmount;)Ljava/time/chrono/MinguoDate;"/> + <method name="with(Ljava/time/temporal/TemporalAdjuster;)Ljava/time/chrono/MinguoDate;"/> + <method name="with(Ljava/time/temporal/TemporalField;J)Ljava/time/chrono/MinguoDate;"/> + </class> + <class name="java/time/chrono/MinguoEra" since="26"> + <extends name="java/lang/Enum"/> + <implements name="java/time/chrono/Era"/> + <method name="of(I)Ljava/time/chrono/MinguoEra;"/> + <method name="valueOf(Ljava/lang/String;)Ljava/time/chrono/MinguoEra;"/> + <method name="values()[Ljava/time/chrono/MinguoEra;"/> + <field name="BEFORE_ROC"/> + <field name="ROC"/> + </class> + <class name="java/time/chrono/ThaiBuddhistChronology" since="26"> + <extends name="java/time/chrono/AbstractChronology"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="date(III)Ljava/time/chrono/ThaiBuddhistDate;"/> + <method name="date(Ljava/time/chrono/Era;III)Ljava/time/chrono/ThaiBuddhistDate;"/> + <method name="date(Ljava/time/temporal/TemporalAccessor;)Ljava/time/chrono/ThaiBuddhistDate;"/> + <method name="dateEpochDay(J)Ljava/time/chrono/ThaiBuddhistDate;"/> + <method name="dateNow()Ljava/time/chrono/ThaiBuddhistDate;"/> + <method name="dateNow(Ljava/time/Clock;)Ljava/time/chrono/ThaiBuddhistDate;"/> + <method name="dateNow(Ljava/time/ZoneId;)Ljava/time/chrono/ThaiBuddhistDate;"/> + <method name="dateYearDay(II)Ljava/time/chrono/ThaiBuddhistDate;"/> + <method name="dateYearDay(Ljava/time/chrono/Era;II)Ljava/time/chrono/ThaiBuddhistDate;"/> + <method name="eraOf(I)Ljava/time/chrono/ThaiBuddhistEra;"/> + <method name="resolveDate(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ThaiBuddhistDate;"/> + <field name="INSTANCE"/> + </class> + <class name="java/time/chrono/ThaiBuddhistDate" since="26"> + <extends name="java/time/chrono/ChronoLocalDateImpl"/> + <method name="<init>()V"/> + <method name="from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/chrono/ThaiBuddhistDate;"/> + <method name="getChronology()Ljava/time/chrono/ThaiBuddhistChronology;"/> + <method name="getEra()Ljava/time/chrono/ThaiBuddhistEra;"/> + <method name="minus(JLjava/time/temporal/TemporalUnit;)Ljava/time/chrono/ThaiBuddhistDate;"/> + <method name="minus(Ljava/time/temporal/TemporalAmount;)Ljava/time/chrono/ThaiBuddhistDate;"/> + <method name="now()Ljava/time/chrono/ThaiBuddhistDate;"/> + <method name="now(Ljava/time/Clock;)Ljava/time/chrono/ThaiBuddhistDate;"/> + <method name="now(Ljava/time/ZoneId;)Ljava/time/chrono/ThaiBuddhistDate;"/> + <method name="of(III)Ljava/time/chrono/ThaiBuddhistDate;"/> + <method name="plus(JLjava/time/temporal/TemporalUnit;)Ljava/time/chrono/ThaiBuddhistDate;"/> + <method name="plus(Ljava/time/temporal/TemporalAmount;)Ljava/time/chrono/ThaiBuddhistDate;"/> + <method name="with(Ljava/time/temporal/TemporalAdjuster;)Ljava/time/chrono/ThaiBuddhistDate;"/> + <method name="with(Ljava/time/temporal/TemporalField;J)Ljava/time/chrono/ThaiBuddhistDate;"/> + </class> + <class name="java/time/chrono/ThaiBuddhistEra" since="26"> + <extends name="java/lang/Enum"/> + <implements name="java/time/chrono/Era"/> + <method name="of(I)Ljava/time/chrono/ThaiBuddhistEra;"/> + <method name="valueOf(Ljava/lang/String;)Ljava/time/chrono/ThaiBuddhistEra;"/> + <method name="values()[Ljava/time/chrono/ThaiBuddhistEra;"/> + <field name="BE"/> + <field name="BEFORE_BE"/> + </class> + <class name="java/time/format/DateTimeFormatter" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="format(Ljava/time/temporal/TemporalAccessor;)Ljava/lang/String;"/> + <method name="formatTo(Ljava/time/temporal/TemporalAccessor;Ljava/lang/Appendable;)V"/> + <method name="getChronology()Ljava/time/chrono/Chronology;"/> + <method name="getDecimalStyle()Ljava/time/format/DecimalStyle;"/> + <method name="getLocale()Ljava/util/Locale;"/> + <method name="getResolverFields()Ljava/util/Set;"/> + <method name="getResolverStyle()Ljava/time/format/ResolverStyle;"/> + <method name="getZone()Ljava/time/ZoneId;"/> + <method name="ofLocalizedDate(Ljava/time/format/FormatStyle;)Ljava/time/format/DateTimeFormatter;"/> + <method name="ofLocalizedDateTime(Ljava/time/format/FormatStyle;)Ljava/time/format/DateTimeFormatter;"/> + <method name="ofLocalizedDateTime(Ljava/time/format/FormatStyle;Ljava/time/format/FormatStyle;)Ljava/time/format/DateTimeFormatter;"/> + <method name="ofLocalizedTime(Ljava/time/format/FormatStyle;)Ljava/time/format/DateTimeFormatter;"/> + <method name="ofPattern(Ljava/lang/String;)Ljava/time/format/DateTimeFormatter;"/> + <method name="ofPattern(Ljava/lang/String;Ljava/util/Locale;)Ljava/time/format/DateTimeFormatter;"/> + <method name="parse(Ljava/lang/CharSequence;)Ljava/time/temporal/TemporalAccessor;"/> + <method name="parse(Ljava/lang/CharSequence;Ljava/text/ParsePosition;)Ljava/time/temporal/TemporalAccessor;"/> + <method name="parse(Ljava/lang/CharSequence;Ljava/time/temporal/TemporalQuery;)Ljava/lang/Object;"/> + <method name="parseBest(Ljava/lang/CharSequence;[Ljava/time/temporal/TemporalQuery;)Ljava/time/temporal/TemporalAccessor;"/> + <method name="parseUnresolved(Ljava/lang/CharSequence;Ljava/text/ParsePosition;)Ljava/time/temporal/TemporalAccessor;"/> + <method name="parsedExcessDays()Ljava/time/temporal/TemporalQuery;"/> + <method name="parsedLeapSecond()Ljava/time/temporal/TemporalQuery;"/> + <method name="toFormat()Ljava/text/Format;"/> + <method name="toFormat(Ljava/time/temporal/TemporalQuery;)Ljava/text/Format;"/> + <method name="withChronology(Ljava/time/chrono/Chronology;)Ljava/time/format/DateTimeFormatter;"/> + <method name="withDecimalStyle(Ljava/time/format/DecimalStyle;)Ljava/time/format/DateTimeFormatter;"/> + <method name="withLocale(Ljava/util/Locale;)Ljava/time/format/DateTimeFormatter;"/> + <method name="withResolverFields(Ljava/util/Set;)Ljava/time/format/DateTimeFormatter;"/> + <method name="withResolverFields([Ljava/time/temporal/TemporalField;)Ljava/time/format/DateTimeFormatter;"/> + <method name="withResolverStyle(Ljava/time/format/ResolverStyle;)Ljava/time/format/DateTimeFormatter;"/> + <method name="withZone(Ljava/time/ZoneId;)Ljava/time/format/DateTimeFormatter;"/> + <field name="BASIC_ISO_DATE"/> + <field name="ISO_DATE"/> + <field name="ISO_DATE_TIME"/> + <field name="ISO_INSTANT"/> + <field name="ISO_LOCAL_DATE"/> + <field name="ISO_LOCAL_DATE_TIME"/> + <field name="ISO_LOCAL_TIME"/> + <field name="ISO_OFFSET_DATE"/> + <field name="ISO_OFFSET_DATE_TIME"/> + <field name="ISO_OFFSET_TIME"/> + <field name="ISO_ORDINAL_DATE"/> + <field name="ISO_TIME"/> + <field name="ISO_WEEK_DATE"/> + <field name="ISO_ZONED_DATE_TIME"/> + <field name="RFC_1123_DATE_TIME"/> + </class> + <class name="java/time/format/DateTimeFormatterBuilder" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="append(Ljava/time/format/DateTimeFormatter;)Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="appendChronologyId()Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="appendChronologyText(Ljava/time/format/TextStyle;)Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="appendFraction(Ljava/time/temporal/TemporalField;IIZ)Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="appendInstant()Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="appendInstant(I)Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="appendLiteral(C)Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="appendLiteral(Ljava/lang/String;)Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="appendLocalized(Ljava/time/format/FormatStyle;Ljava/time/format/FormatStyle;)Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="appendLocalizedOffset(Ljava/time/format/TextStyle;)Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="appendOffset(Ljava/lang/String;Ljava/lang/String;)Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="appendOffsetId()Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="appendOptional(Ljava/time/format/DateTimeFormatter;)Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="appendPattern(Ljava/lang/String;)Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="appendText(Ljava/time/temporal/TemporalField;)Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="appendText(Ljava/time/temporal/TemporalField;Ljava/time/format/TextStyle;)Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="appendText(Ljava/time/temporal/TemporalField;Ljava/util/Map;)Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="appendValue(Ljava/time/temporal/TemporalField;)Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="appendValue(Ljava/time/temporal/TemporalField;I)Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="appendValue(Ljava/time/temporal/TemporalField;IILjava/time/format/SignStyle;)Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="appendValueReduced(Ljava/time/temporal/TemporalField;III)Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="appendValueReduced(Ljava/time/temporal/TemporalField;IILjava/time/chrono/ChronoLocalDate;)Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="appendZoneId()Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="appendZoneOrOffsetId()Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="appendZoneRegionId()Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="appendZoneText(Ljava/time/format/TextStyle;)Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="appendZoneText(Ljava/time/format/TextStyle;Ljava/util/Set;)Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="getLocalizedDateTimePattern(Ljava/time/format/FormatStyle;Ljava/time/format/FormatStyle;Ljava/time/chrono/Chronology;Ljava/util/Locale;)Ljava/lang/String;"/> + <method name="optionalEnd()Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="optionalStart()Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="padNext(I)Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="padNext(IC)Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="parseCaseInsensitive()Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="parseCaseSensitive()Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="parseDefaulting(Ljava/time/temporal/TemporalField;J)Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="parseLenient()Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="parseStrict()Ljava/time/format/DateTimeFormatterBuilder;"/> + <method name="toFormatter()Ljava/time/format/DateTimeFormatter;"/> + <method name="toFormatter(Ljava/util/Locale;)Ljava/time/format/DateTimeFormatter;"/> + </class> + <class name="java/time/format/DateTimeParseException" since="26"> + <extends name="java/time/DateTimeException"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/CharSequence;I)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/CharSequence;ILjava/lang/Throwable;)V"/> + <method name="getErrorIndex()I"/> + <method name="getParsedString()Ljava/lang/String;"/> + </class> + <class name="java/time/format/DecimalStyle" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAvailableLocales()Ljava/util/Set;"/> + <method name="getDecimalSeparator()C"/> + <method name="getNegativeSign()C"/> + <method name="getPositiveSign()C"/> + <method name="getZeroDigit()C"/> + <method name="of(Ljava/util/Locale;)Ljava/time/format/DecimalStyle;"/> + <method name="ofDefaultLocale()Ljava/time/format/DecimalStyle;"/> + <method name="withDecimalSeparator(C)Ljava/time/format/DecimalStyle;"/> + <method name="withNegativeSign(C)Ljava/time/format/DecimalStyle;"/> + <method name="withPositiveSign(C)Ljava/time/format/DecimalStyle;"/> + <method name="withZeroDigit(C)Ljava/time/format/DecimalStyle;"/> + <field name="STANDARD"/> + </class> + <class name="java/time/format/FormatStyle" since="26"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/time/format/FormatStyle;"/> + <method name="values()[Ljava/time/format/FormatStyle;"/> + <field name="FULL"/> + <field name="LONG"/> + <field name="MEDIUM"/> + <field name="SHORT"/> + </class> + <class name="java/time/format/ResolverStyle" since="26"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/time/format/ResolverStyle;"/> + <method name="values()[Ljava/time/format/ResolverStyle;"/> + <field name="LENIENT"/> + <field name="SMART"/> + <field name="STRICT"/> + </class> + <class name="java/time/format/SignStyle" since="26"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/time/format/SignStyle;"/> + <method name="values()[Ljava/time/format/SignStyle;"/> + <field name="ALWAYS"/> + <field name="EXCEEDS_PAD"/> + <field name="NEVER"/> + <field name="NORMAL"/> + <field name="NOT_NEGATIVE"/> + </class> + <class name="java/time/format/TextStyle" since="26"> + <extends name="java/lang/Enum"/> + <method name="asNormal()Ljava/time/format/TextStyle;"/> + <method name="asStandalone()Ljava/time/format/TextStyle;"/> + <method name="isStandalone()Z"/> + <method name="valueOf(Ljava/lang/String;)Ljava/time/format/TextStyle;"/> + <method name="values()[Ljava/time/format/TextStyle;"/> + <field name="FULL"/> + <field name="FULL_STANDALONE"/> + <field name="NARROW"/> + <field name="NARROW_STANDALONE"/> + <field name="SHORT"/> + <field name="SHORT_STANDALONE"/> + </class> + <class name="java/time/temporal/ChronoField" since="26"> + <extends name="java/lang/Enum"/> + <implements name="java/time/temporal/TemporalField"/> + <method name="checkValidIntValue(J)I"/> + <method name="checkValidValue(J)J"/> + <method name="valueOf(Ljava/lang/String;)Ljava/time/temporal/ChronoField;"/> + <method name="values()[Ljava/time/temporal/ChronoField;"/> + <field name="ALIGNED_DAY_OF_WEEK_IN_MONTH"/> + <field name="ALIGNED_DAY_OF_WEEK_IN_YEAR"/> + <field name="ALIGNED_WEEK_OF_MONTH"/> + <field name="ALIGNED_WEEK_OF_YEAR"/> + <field name="AMPM_OF_DAY"/> + <field name="CLOCK_HOUR_OF_AMPM"/> + <field name="CLOCK_HOUR_OF_DAY"/> + <field name="DAY_OF_MONTH"/> + <field name="DAY_OF_WEEK"/> + <field name="DAY_OF_YEAR"/> + <field name="EPOCH_DAY"/> + <field name="ERA"/> + <field name="HOUR_OF_AMPM"/> + <field name="HOUR_OF_DAY"/> + <field name="INSTANT_SECONDS"/> + <field name="MICRO_OF_DAY"/> + <field name="MICRO_OF_SECOND"/> + <field name="MILLI_OF_DAY"/> + <field name="MILLI_OF_SECOND"/> + <field name="MINUTE_OF_DAY"/> + <field name="MINUTE_OF_HOUR"/> + <field name="MONTH_OF_YEAR"/> + <field name="NANO_OF_DAY"/> + <field name="NANO_OF_SECOND"/> + <field name="OFFSET_SECONDS"/> + <field name="PROLEPTIC_MONTH"/> + <field name="SECOND_OF_DAY"/> + <field name="SECOND_OF_MINUTE"/> + <field name="YEAR"/> + <field name="YEAR_OF_ERA"/> + </class> + <class name="java/time/temporal/ChronoUnit" since="26"> + <extends name="java/lang/Enum"/> + <implements name="java/time/temporal/TemporalUnit"/> + <method name="valueOf(Ljava/lang/String;)Ljava/time/temporal/ChronoUnit;"/> + <method name="values()[Ljava/time/temporal/ChronoUnit;"/> + <field name="CENTURIES"/> + <field name="DAYS"/> + <field name="DECADES"/> + <field name="ERAS"/> + <field name="FOREVER"/> + <field name="HALF_DAYS"/> + <field name="HOURS"/> + <field name="MICROS"/> + <field name="MILLENNIA"/> + <field name="MILLIS"/> + <field name="MINUTES"/> + <field name="MONTHS"/> + <field name="NANOS"/> + <field name="SECONDS"/> + <field name="WEEKS"/> + <field name="YEARS"/> + </class> + <class name="java/time/temporal/IsoFields" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="DAY_OF_QUARTER"/> + <field name="QUARTER_OF_YEAR"/> + <field name="QUARTER_YEARS"/> + <field name="WEEK_BASED_YEAR"/> + <field name="WEEK_BASED_YEARS"/> + <field name="WEEK_OF_WEEK_BASED_YEAR"/> + </class> + <class name="java/time/temporal/JulianFields" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="JULIAN_DAY"/> + <field name="MODIFIED_JULIAN_DAY"/> + <field name="RATA_DIE"/> + </class> + <class name="java/time/temporal/Temporal" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/time/temporal/TemporalAccessor"/> + <method name="isSupported(Ljava/time/temporal/TemporalUnit;)Z"/> + <method name="minus(JLjava/time/temporal/TemporalUnit;)Ljava/time/temporal/Temporal;"/> + <method name="minus(Ljava/time/temporal/TemporalAmount;)Ljava/time/temporal/Temporal;"/> + <method name="plus(JLjava/time/temporal/TemporalUnit;)Ljava/time/temporal/Temporal;"/> + <method name="plus(Ljava/time/temporal/TemporalAmount;)Ljava/time/temporal/Temporal;"/> + <method name="until(Ljava/time/temporal/Temporal;Ljava/time/temporal/TemporalUnit;)J"/> + <method name="with(Ljava/time/temporal/TemporalAdjuster;)Ljava/time/temporal/Temporal;"/> + <method name="with(Ljava/time/temporal/TemporalField;J)Ljava/time/temporal/Temporal;"/> + </class> + <class name="java/time/temporal/TemporalAccessor" since="26"> + <extends name="java/lang/Object"/> + <method name="get(Ljava/time/temporal/TemporalField;)I"/> + <method name="getLong(Ljava/time/temporal/TemporalField;)J"/> + <method name="isSupported(Ljava/time/temporal/TemporalField;)Z"/> + <method name="query(Ljava/time/temporal/TemporalQuery;)Ljava/lang/Object;"/> + <method name="range(Ljava/time/temporal/TemporalField;)Ljava/time/temporal/ValueRange;"/> + </class> + <class name="java/time/temporal/TemporalAdjuster" since="26"> + <extends name="java/lang/Object"/> + <method name="adjustInto(Ljava/time/temporal/Temporal;)Ljava/time/temporal/Temporal;"/> + </class> + <class name="java/time/temporal/TemporalAdjusters" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="dayOfWeekInMonth(ILjava/time/DayOfWeek;)Ljava/time/temporal/TemporalAdjuster;"/> + <method name="firstDayOfMonth()Ljava/time/temporal/TemporalAdjuster;"/> + <method name="firstDayOfNextMonth()Ljava/time/temporal/TemporalAdjuster;"/> + <method name="firstDayOfNextYear()Ljava/time/temporal/TemporalAdjuster;"/> + <method name="firstDayOfYear()Ljava/time/temporal/TemporalAdjuster;"/> + <method name="firstInMonth(Ljava/time/DayOfWeek;)Ljava/time/temporal/TemporalAdjuster;"/> + <method name="lastDayOfMonth()Ljava/time/temporal/TemporalAdjuster;"/> + <method name="lastDayOfYear()Ljava/time/temporal/TemporalAdjuster;"/> + <method name="lastInMonth(Ljava/time/DayOfWeek;)Ljava/time/temporal/TemporalAdjuster;"/> + <method name="next(Ljava/time/DayOfWeek;)Ljava/time/temporal/TemporalAdjuster;"/> + <method name="nextOrSame(Ljava/time/DayOfWeek;)Ljava/time/temporal/TemporalAdjuster;"/> + <method name="ofDateAdjuster(Ljava/util/function/UnaryOperator;)Ljava/time/temporal/TemporalAdjuster;"/> + <method name="previous(Ljava/time/DayOfWeek;)Ljava/time/temporal/TemporalAdjuster;"/> + <method name="previousOrSame(Ljava/time/DayOfWeek;)Ljava/time/temporal/TemporalAdjuster;"/> + </class> + <class name="java/time/temporal/TemporalAmount" since="26"> + <extends name="java/lang/Object"/> + <method name="addTo(Ljava/time/temporal/Temporal;)Ljava/time/temporal/Temporal;"/> + <method name="get(Ljava/time/temporal/TemporalUnit;)J"/> + <method name="getUnits()Ljava/util/List;"/> + <method name="subtractFrom(Ljava/time/temporal/Temporal;)Ljava/time/temporal/Temporal;"/> + </class> + <class name="java/time/temporal/TemporalField" since="26"> + <extends name="java/lang/Object"/> + <method name="adjustInto(Ljava/time/temporal/Temporal;J)Ljava/time/temporal/Temporal;"/> + <method name="getBaseUnit()Ljava/time/temporal/TemporalUnit;"/> + <method name="getDisplayName(Ljava/util/Locale;)Ljava/lang/String;"/> + <method name="getFrom(Ljava/time/temporal/TemporalAccessor;)J"/> + <method name="getRangeUnit()Ljava/time/temporal/TemporalUnit;"/> + <method name="isDateBased()Z"/> + <method name="isSupportedBy(Ljava/time/temporal/TemporalAccessor;)Z"/> + <method name="isTimeBased()Z"/> + <method name="range()Ljava/time/temporal/ValueRange;"/> + <method name="rangeRefinedBy(Ljava/time/temporal/TemporalAccessor;)Ljava/time/temporal/ValueRange;"/> + <method name="resolve(Ljava/util/Map;Ljava/time/temporal/TemporalAccessor;Ljava/time/format/ResolverStyle;)Ljava/time/temporal/TemporalAccessor;"/> + </class> + <class name="java/time/temporal/TemporalQueries" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="chronology()Ljava/time/temporal/TemporalQuery;"/> + <method name="localDate()Ljava/time/temporal/TemporalQuery;"/> + <method name="localTime()Ljava/time/temporal/TemporalQuery;"/> + <method name="offset()Ljava/time/temporal/TemporalQuery;"/> + <method name="precision()Ljava/time/temporal/TemporalQuery;"/> + <method name="zone()Ljava/time/temporal/TemporalQuery;"/> + <method name="zoneId()Ljava/time/temporal/TemporalQuery;"/> + </class> + <class name="java/time/temporal/TemporalQuery" since="26"> + <extends name="java/lang/Object"/> + <method name="queryFrom(Ljava/time/temporal/TemporalAccessor;)Ljava/lang/Object;"/> + </class> + <class name="java/time/temporal/TemporalUnit" since="26"> + <extends name="java/lang/Object"/> + <method name="addTo(Ljava/time/temporal/Temporal;J)Ljava/time/temporal/Temporal;"/> + <method name="between(Ljava/time/temporal/Temporal;Ljava/time/temporal/Temporal;)J"/> + <method name="getDuration()Ljava/time/Duration;"/> + <method name="isDateBased()Z"/> + <method name="isDurationEstimated()Z"/> + <method name="isSupportedBy(Ljava/time/temporal/Temporal;)Z"/> + <method name="isTimeBased()Z"/> + </class> + <class name="java/time/temporal/UnsupportedTemporalTypeException" since="26"> + <extends name="java/time/DateTimeException"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + </class> + <class name="java/time/temporal/ValueRange" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="checkValidIntValue(JLjava/time/temporal/TemporalField;)I"/> + <method name="checkValidValue(JLjava/time/temporal/TemporalField;)J"/> + <method name="getLargestMinimum()J"/> + <method name="getMaximum()J"/> + <method name="getMinimum()J"/> + <method name="getSmallestMaximum()J"/> + <method name="isFixed()Z"/> + <method name="isIntValue()Z"/> + <method name="isValidIntValue(J)Z"/> + <method name="isValidValue(J)Z"/> + <method name="of(JJ)Ljava/time/temporal/ValueRange;"/> + <method name="of(JJJ)Ljava/time/temporal/ValueRange;"/> + <method name="of(JJJJ)Ljava/time/temporal/ValueRange;"/> + </class> + <class name="java/time/temporal/WeekFields" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="dayOfWeek()Ljava/time/temporal/TemporalField;"/> + <method name="getFirstDayOfWeek()Ljava/time/DayOfWeek;"/> + <method name="getMinimalDaysInFirstWeek()I"/> + <method name="of(Ljava/time/DayOfWeek;I)Ljava/time/temporal/WeekFields;"/> + <method name="of(Ljava/util/Locale;)Ljava/time/temporal/WeekFields;"/> + <method name="weekBasedYear()Ljava/time/temporal/TemporalField;"/> + <method name="weekOfMonth()Ljava/time/temporal/TemporalField;"/> + <method name="weekOfWeekBasedYear()Ljava/time/temporal/TemporalField;"/> + <method name="weekOfYear()Ljava/time/temporal/TemporalField;"/> + <field name="ISO"/> + <field name="SUNDAY_START"/> + <field name="WEEK_BASED_YEARS"/> + </class> + <class name="java/time/zone/ZoneOffsetTransition" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Comparable"/> + <method name="<init>()V"/> + <method name="compareTo(Ljava/time/zone/ZoneOffsetTransition;)I"/> + <method name="getDateTimeAfter()Ljava/time/LocalDateTime;"/> + <method name="getDateTimeBefore()Ljava/time/LocalDateTime;"/> + <method name="getDuration()Ljava/time/Duration;"/> + <method name="getInstant()Ljava/time/Instant;"/> + <method name="getOffsetAfter()Ljava/time/ZoneOffset;"/> + <method name="getOffsetBefore()Ljava/time/ZoneOffset;"/> + <method name="isGap()Z"/> + <method name="isOverlap()Z"/> + <method name="isValidOffset(Ljava/time/ZoneOffset;)Z"/> + <method name="of(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;)Ljava/time/zone/ZoneOffsetTransition;"/> + <method name="toEpochSecond()J"/> + </class> + <class name="java/time/zone/ZoneOffsetTransitionRule" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="createTransition(I)Ljava/time/zone/ZoneOffsetTransition;"/> + <method name="getDayOfMonthIndicator()I"/> + <method name="getDayOfWeek()Ljava/time/DayOfWeek;"/> + <method name="getLocalTime()Ljava/time/LocalTime;"/> + <method name="getMonth()Ljava/time/Month;"/> + <method name="getOffsetAfter()Ljava/time/ZoneOffset;"/> + <method name="getOffsetBefore()Ljava/time/ZoneOffset;"/> + <method name="getStandardOffset()Ljava/time/ZoneOffset;"/> + <method name="getTimeDefinition()Ljava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;"/> + <method name="isMidnightEndOfDay()Z"/> + <method name="of(Ljava/time/Month;ILjava/time/DayOfWeek;Ljava/time/LocalTime;ZLjava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;)Ljava/time/zone/ZoneOffsetTransitionRule;"/> + </class> + <class name="java/time/zone/ZoneOffsetTransitionRule$TimeDefinition" since="26"> + <extends name="java/lang/Enum"/> + <method name="createDateTime(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;)Ljava/time/LocalDateTime;"/> + <method name="valueOf(Ljava/lang/String;)Ljava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;"/> + <method name="values()[Ljava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;"/> + <field name="STANDARD"/> + <field name="UTC"/> + <field name="WALL"/> + </class> + <class name="java/time/zone/ZoneRules" since="26"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="getDaylightSavings(Ljava/time/Instant;)Ljava/time/Duration;"/> + <method name="getOffset(Ljava/time/Instant;)Ljava/time/ZoneOffset;"/> + <method name="getOffset(Ljava/time/LocalDateTime;)Ljava/time/ZoneOffset;"/> + <method name="getStandardOffset(Ljava/time/Instant;)Ljava/time/ZoneOffset;"/> + <method name="getTransition(Ljava/time/LocalDateTime;)Ljava/time/zone/ZoneOffsetTransition;"/> + <method name="getTransitionRules()Ljava/util/List;"/> + <method name="getTransitions()Ljava/util/List;"/> + <method name="getValidOffsets(Ljava/time/LocalDateTime;)Ljava/util/List;"/> + <method name="isDaylightSavings(Ljava/time/Instant;)Z"/> + <method name="isFixedOffset()Z"/> + <method name="isValidOffset(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;)Z"/> + <method name="nextTransition(Ljava/time/Instant;)Ljava/time/zone/ZoneOffsetTransition;"/> + <method name="of(Ljava/time/ZoneOffset;)Ljava/time/zone/ZoneRules;"/> + <method name="of(Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;Ljava/util/List;Ljava/util/List;Ljava/util/List;)Ljava/time/zone/ZoneRules;"/> + <method name="previousTransition(Ljava/time/Instant;)Ljava/time/zone/ZoneOffsetTransition;"/> + </class> + <class name="java/time/zone/ZoneRulesException" since="26"> + <extends name="java/time/DateTimeException"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + </class> + <class name="java/util/AbstractCollection" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/Collection"/> + <method name="<init>()V"/> + </class> + <class name="java/util/AbstractList" since="1"> + <extends name="java/util/AbstractCollection"/> + <implements name="java/util/List"/> + <method name="<init>()V"/> + <method name="removeRange(II)V"/> + <field name="modCount"/> + </class> + <class name="java/util/AbstractMap" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/Map"/> + <method name="<init>()V"/> + </class> + <class name="java/util/AbstractMap$SimpleEntry" since="9"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/util/Map$Entry"/> + <method name="<init>(Ljava/lang/Object;Ljava/lang/Object;)V"/> + <method name="<init>(Ljava/util/Map$Entry;)V"/> + </class> + <class name="java/util/AbstractMap$SimpleImmutableEntry" since="9"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/util/Map$Entry"/> + <method name="<init>(Ljava/lang/Object;Ljava/lang/Object;)V"/> + <method name="<init>(Ljava/util/Map$Entry;)V"/> + </class> + <class name="java/util/AbstractQueue" since="1"> + <extends name="java/util/AbstractCollection"/> + <implements name="java/util/Queue"/> + <method name="<init>()V"/> + </class> + <class name="java/util/AbstractSequentialList" since="1"> + <extends name="java/util/AbstractList"/> + <method name="<init>()V"/> + </class> + <class name="java/util/AbstractSet" since="1"> + <extends name="java/util/AbstractCollection"/> + <implements name="java/util/Set"/> + <method name="<init>()V"/> + </class> + <class name="java/util/ArrayDeque" since="9"> + <extends name="java/util/AbstractCollection"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <implements name="java/util/Deque"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(Ljava/util/Collection;)V"/> + <method name="clone()Ljava/util/ArrayDeque;"/> + </class> + <class name="java/util/ArrayList" since="1"> + <extends name="java/util/AbstractList"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <implements name="java/util/RandomAccess"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(Ljava/util/Collection;)V"/> + <method name="ensureCapacity(I)V"/> + <method name="trimToSize()V"/> + </class> + <class name="java/util/Arrays" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="asList([Ljava/lang/Object;)Ljava/util/List;"/> + <method name="binarySearch([BB)I"/> + <method name="binarySearch([BIIB)I" since="9"/> + <method name="binarySearch([CC)I"/> + <method name="binarySearch([CIIC)I" since="9"/> + <method name="binarySearch([DD)I"/> + <method name="binarySearch([DIID)I" since="9"/> + <method name="binarySearch([FF)I"/> + <method name="binarySearch([FIIF)I" since="9"/> + <method name="binarySearch([II)I"/> + <method name="binarySearch([IIII)I" since="9"/> + <method name="binarySearch([JIIJ)I" since="9"/> + <method name="binarySearch([JJ)I"/> + <method name="binarySearch([Ljava/lang/Object;IILjava/lang/Object;)I" since="9"/> + <method name="binarySearch([Ljava/lang/Object;IILjava/lang/Object;Ljava/util/Comparator;)I" since="9"/> + <method name="binarySearch([Ljava/lang/Object;Ljava/lang/Object;)I"/> + <method name="binarySearch([Ljava/lang/Object;Ljava/lang/Object;Ljava/util/Comparator;)I"/> + <method name="binarySearch([SIIS)I" since="9"/> + <method name="binarySearch([SS)I"/> + <method name="copyOf([BI)[B" since="9"/> + <method name="copyOf([CI)[C" since="9"/> + <method name="copyOf([DI)[D" since="9"/> + <method name="copyOf([FI)[F" since="9"/> + <method name="copyOf([II)[I" since="9"/> + <method name="copyOf([JI)[J" since="9"/> + <method name="copyOf([Ljava/lang/Object;I)[Ljava/lang/Object;" since="9"/> + <method name="copyOf([Ljava/lang/Object;ILjava/lang/Class;)[Ljava/lang/Object;" since="9"/> + <method name="copyOf([SI)[S" since="9"/> + <method name="copyOf([ZI)[Z" since="9"/> + <method name="copyOfRange([BII)[B" since="9"/> + <method name="copyOfRange([CII)[C" since="9"/> + <method name="copyOfRange([DII)[D" since="9"/> + <method name="copyOfRange([FII)[F" since="9"/> + <method name="copyOfRange([III)[I" since="9"/> + <method name="copyOfRange([JII)[J" since="9"/> + <method name="copyOfRange([Ljava/lang/Object;II)[Ljava/lang/Object;" since="9"/> + <method name="copyOfRange([Ljava/lang/Object;IILjava/lang/Class;)[Ljava/lang/Object;" since="9"/> + <method name="copyOfRange([SII)[S" since="9"/> + <method name="copyOfRange([ZII)[Z" since="9"/> + <method name="deepEquals([Ljava/lang/Object;[Ljava/lang/Object;)Z"/> + <method name="deepHashCode([Ljava/lang/Object;)I"/> + <method name="deepToString([Ljava/lang/Object;)Ljava/lang/String;"/> + <method name="equals([B[B)Z"/> + <method name="equals([C[C)Z"/> + <method name="equals([D[D)Z"/> + <method name="equals([F[F)Z"/> + <method name="equals([I[I)Z"/> + <method name="equals([J[J)Z"/> + <method name="equals([Ljava/lang/Object;[Ljava/lang/Object;)Z"/> + <method name="equals([S[S)Z"/> + <method name="equals([Z[Z)Z"/> + <method name="fill([BB)V"/> + <method name="fill([BIIB)V"/> + <method name="fill([CC)V"/> + <method name="fill([CIIC)V"/> + <method name="fill([DD)V"/> + <method name="fill([DIID)V"/> + <method name="fill([FF)V"/> + <method name="fill([FIIF)V"/> + <method name="fill([II)V"/> + <method name="fill([IIII)V"/> + <method name="fill([JIIJ)V"/> + <method name="fill([JJ)V"/> + <method name="fill([Ljava/lang/Object;IILjava/lang/Object;)V"/> + <method name="fill([Ljava/lang/Object;Ljava/lang/Object;)V"/> + <method name="fill([SIIS)V"/> + <method name="fill([SS)V"/> + <method name="fill([ZIIZ)V"/> + <method name="fill([ZZ)V"/> + <method name="hashCode([B)I"/> + <method name="hashCode([C)I"/> + <method name="hashCode([D)I"/> + <method name="hashCode([F)I"/> + <method name="hashCode([I)I"/> + <method name="hashCode([J)I"/> + <method name="hashCode([Ljava/lang/Object;)I"/> + <method name="hashCode([S)I"/> + <method name="hashCode([Z)I"/> + <method name="parallelPrefix([DIILjava/util/function/DoubleBinaryOperator;)V" since="24"/> + <method name="parallelPrefix([DLjava/util/function/DoubleBinaryOperator;)V" since="24"/> + <method name="parallelPrefix([IIILjava/util/function/IntBinaryOperator;)V" since="24"/> + <method name="parallelPrefix([ILjava/util/function/IntBinaryOperator;)V" since="24"/> + <method name="parallelPrefix([JIILjava/util/function/LongBinaryOperator;)V" since="24"/> + <method name="parallelPrefix([JLjava/util/function/LongBinaryOperator;)V" since="24"/> + <method name="parallelPrefix([Ljava/lang/Object;IILjava/util/function/BinaryOperator;)V" since="24"/> + <method name="parallelPrefix([Ljava/lang/Object;Ljava/util/function/BinaryOperator;)V" since="24"/> + <method name="parallelSetAll([DLjava/util/function/IntToDoubleFunction;)V" since="24"/> + <method name="parallelSetAll([ILjava/util/function/IntUnaryOperator;)V" since="24"/> + <method name="parallelSetAll([JLjava/util/function/IntToLongFunction;)V" since="24"/> + <method name="parallelSetAll([Ljava/lang/Object;Ljava/util/function/IntFunction;)V" since="24"/> + <method name="parallelSort([B)V" since="24"/> + <method name="parallelSort([BII)V" since="24"/> + <method name="parallelSort([C)V" since="24"/> + <method name="parallelSort([CII)V" since="24"/> + <method name="parallelSort([D)V" since="24"/> + <method name="parallelSort([DII)V" since="24"/> + <method name="parallelSort([F)V" since="24"/> + <method name="parallelSort([FII)V" since="24"/> + <method name="parallelSort([I)V" since="24"/> + <method name="parallelSort([III)V" since="24"/> + <method name="parallelSort([J)V" since="24"/> + <method name="parallelSort([JII)V" since="24"/> + <method name="parallelSort([Ljava/lang/Comparable;)V" since="24"/> + <method name="parallelSort([Ljava/lang/Comparable;II)V" since="24"/> + <method name="parallelSort([Ljava/lang/Object;IILjava/util/Comparator;)V" since="24"/> + <method name="parallelSort([Ljava/lang/Object;Ljava/util/Comparator;)V" since="24"/> + <method name="parallelSort([S)V" since="24"/> + <method name="parallelSort([SII)V" since="24"/> + <method name="setAll([DLjava/util/function/IntToDoubleFunction;)V" since="24"/> + <method name="setAll([ILjava/util/function/IntUnaryOperator;)V" since="24"/> + <method name="setAll([JLjava/util/function/IntToLongFunction;)V" since="24"/> + <method name="setAll([Ljava/lang/Object;Ljava/util/function/IntFunction;)V" since="24"/> + <method name="sort([B)V"/> + <method name="sort([BII)V"/> + <method name="sort([C)V"/> + <method name="sort([CII)V"/> + <method name="sort([D)V"/> + <method name="sort([DII)V"/> + <method name="sort([F)V"/> + <method name="sort([FII)V"/> + <method name="sort([I)V"/> + <method name="sort([III)V"/> + <method name="sort([J)V"/> + <method name="sort([JII)V"/> + <method name="sort([Ljava/lang/Object;)V"/> + <method name="sort([Ljava/lang/Object;II)V"/> + <method name="sort([Ljava/lang/Object;IILjava/util/Comparator;)V"/> + <method name="sort([Ljava/lang/Object;Ljava/util/Comparator;)V"/> + <method name="sort([S)V"/> + <method name="sort([SII)V"/> + <method name="spliterator([D)Ljava/util/Spliterator$OfDouble;" since="24"/> + <method name="spliterator([DII)Ljava/util/Spliterator$OfDouble;" since="24"/> + <method name="spliterator([I)Ljava/util/Spliterator$OfInt;" since="24"/> + <method name="spliterator([III)Ljava/util/Spliterator$OfInt;" since="24"/> + <method name="spliterator([J)Ljava/util/Spliterator$OfLong;" since="24"/> + <method name="spliterator([JII)Ljava/util/Spliterator$OfLong;" since="24"/> + <method name="spliterator([Ljava/lang/Object;)Ljava/util/Spliterator;" since="24"/> + <method name="spliterator([Ljava/lang/Object;II)Ljava/util/Spliterator;" since="24"/> + <method name="stream([D)Ljava/util/stream/DoubleStream;" since="24"/> + <method name="stream([DII)Ljava/util/stream/DoubleStream;" since="24"/> + <method name="stream([I)Ljava/util/stream/IntStream;" since="24"/> + <method name="stream([III)Ljava/util/stream/IntStream;" since="24"/> + <method name="stream([J)Ljava/util/stream/LongStream;" since="24"/> + <method name="stream([JII)Ljava/util/stream/LongStream;" since="24"/> + <method name="stream([Ljava/lang/Object;)Ljava/util/stream/Stream;" since="24"/> + <method name="stream([Ljava/lang/Object;II)Ljava/util/stream/Stream;" since="24"/> + <method name="toString([B)Ljava/lang/String;"/> + <method name="toString([C)Ljava/lang/String;"/> + <method name="toString([D)Ljava/lang/String;"/> + <method name="toString([F)Ljava/lang/String;"/> + <method name="toString([I)Ljava/lang/String;"/> + <method name="toString([J)Ljava/lang/String;"/> + <method name="toString([Ljava/lang/Object;)Ljava/lang/String;"/> + <method name="toString([S)Ljava/lang/String;"/> + <method name="toString([Z)Ljava/lang/String;"/> + </class> + <class name="java/util/Base64" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getDecoder()Ljava/util/Base64$Decoder;"/> + <method name="getEncoder()Ljava/util/Base64$Encoder;"/> + <method name="getMimeDecoder()Ljava/util/Base64$Decoder;"/> + <method name="getMimeEncoder()Ljava/util/Base64$Encoder;"/> + <method name="getMimeEncoder(I[B)Ljava/util/Base64$Encoder;"/> + <method name="getUrlDecoder()Ljava/util/Base64$Decoder;"/> + <method name="getUrlEncoder()Ljava/util/Base64$Encoder;"/> + </class> + <class name="java/util/Base64$Decoder" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="decode(Ljava/lang/String;)[B"/> + <method name="decode(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;"/> + <method name="decode([B)[B"/> + <method name="decode([B[B)I"/> + <method name="wrap(Ljava/io/InputStream;)Ljava/io/InputStream;"/> + </class> + <class name="java/util/Base64$Encoder" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="encode(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;"/> + <method name="encode([B)[B"/> + <method name="encode([B[B)I"/> + <method name="encodeToString([B)Ljava/lang/String;"/> + <method name="withoutPadding()Ljava/util/Base64$Encoder;"/> + <method name="wrap(Ljava/io/OutputStream;)Ljava/io/OutputStream;"/> + </class> + <class name="java/util/BitSet" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="and(Ljava/util/BitSet;)V"/> + <method name="andNot(Ljava/util/BitSet;)V"/> + <method name="cardinality()I"/> + <method name="clear()V"/> + <method name="clear(I)V"/> + <method name="clear(II)V"/> + <method name="flip(I)V"/> + <method name="flip(II)V"/> + <method name="get(I)Z"/> + <method name="get(II)Ljava/util/BitSet;"/> + <method name="intersects(Ljava/util/BitSet;)Z"/> + <method name="isEmpty()Z"/> + <method name="length()I"/> + <method name="nextClearBit(I)I"/> + <method name="nextSetBit(I)I"/> + <method name="or(Ljava/util/BitSet;)V"/> + <method name="previousClearBit(I)I" since="19"/> + <method name="previousSetBit(I)I" since="19"/> + <method name="set(I)V"/> + <method name="set(II)V"/> + <method name="set(IIZ)V"/> + <method name="set(IZ)V"/> + <method name="size()I"/> + <method name="stream()Ljava/util/stream/IntStream;" since="24"/> + <method name="toByteArray()[B" since="19"/> + <method name="toLongArray()[J" since="19"/> + <method name="valueOf(Ljava/nio/ByteBuffer;)Ljava/util/BitSet;" since="19"/> + <method name="valueOf(Ljava/nio/LongBuffer;)Ljava/util/BitSet;" since="19"/> + <method name="valueOf([B)Ljava/util/BitSet;" since="19"/> + <method name="valueOf([J)Ljava/util/BitSet;" since="19"/> + <method name="xor(Ljava/util/BitSet;)V"/> + </class> + <class name="java/util/Calendar" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <implements name="java/lang/Comparable"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/util/TimeZone;Ljava/util/Locale;)V"/> + <method name="add(II)V"/> + <method name="after(Ljava/lang/Object;)Z"/> + <method name="before(Ljava/lang/Object;)Z"/> + <method name="clear()V"/> + <method name="clear(I)V"/> + <method name="compareTo(Ljava/util/Calendar;)I"/> + <method name="complete()V"/> + <method name="computeFields()V"/> + <method name="computeTime()V"/> + <method name="get(I)I"/> + <method name="getActualMaximum(I)I"/> + <method name="getActualMinimum(I)I"/> + <method name="getAvailableCalendarTypes()Ljava/util/Set;" since="26"/> + <method name="getAvailableLocales()[Ljava/util/Locale;"/> + <method name="getCalendarType()Ljava/lang/String;" since="26"/> + <method name="getDisplayName(IILjava/util/Locale;)Ljava/lang/String;" since="9"/> + <method name="getDisplayNames(IILjava/util/Locale;)Ljava/util/Map;" since="9"/> + <method name="getFirstDayOfWeek()I"/> + <method name="getGreatestMinimum(I)I"/> + <method name="getInstance()Ljava/util/Calendar;"/> + <method name="getInstance(Ljava/util/Locale;)Ljava/util/Calendar;"/> + <method name="getInstance(Ljava/util/TimeZone;)Ljava/util/Calendar;"/> + <method name="getInstance(Ljava/util/TimeZone;Ljava/util/Locale;)Ljava/util/Calendar;"/> + <method name="getLeastMaximum(I)I"/> + <method name="getMaximum(I)I"/> + <method name="getMinimalDaysInFirstWeek()I"/> + <method name="getMinimum(I)I"/> + <method name="getTime()Ljava/util/Date;"/> + <method name="getTimeInMillis()J"/> + <method name="getTimeZone()Ljava/util/TimeZone;"/> + <method name="getWeekYear()I" since="24"/> + <method name="getWeeksInWeekYear()I" since="24"/> + <method name="internalGet(I)I"/> + <method name="isLenient()Z"/> + <method name="isSet(I)Z"/> + <method name="isWeekDateSupported()Z" since="24"/> + <method name="roll(II)V"/> + <method name="roll(IZ)V"/> + <method name="set(II)V"/> + <method name="set(III)V"/> + <method name="set(IIIII)V"/> + <method name="set(IIIIII)V"/> + <method name="setFirstDayOfWeek(I)V"/> + <method name="setLenient(Z)V"/> + <method name="setMinimalDaysInFirstWeek(I)V"/> + <method name="setTime(Ljava/util/Date;)V"/> + <method name="setTimeInMillis(J)V"/> + <method name="setTimeZone(Ljava/util/TimeZone;)V"/> + <method name="setWeekDate(III)V" since="24"/> + <method name="toInstant()Ljava/time/Instant;" since="26"/> + <field name="ALL_STYLES" since="9"/> + <field name="AM"/> + <field name="AM_PM"/> + <field name="APRIL"/> + <field name="AUGUST"/> + <field name="DATE"/> + <field name="DAY_OF_MONTH"/> + <field name="DAY_OF_WEEK"/> + <field name="DAY_OF_WEEK_IN_MONTH"/> + <field name="DAY_OF_YEAR"/> + <field name="DECEMBER"/> + <field name="DST_OFFSET"/> + <field name="ERA"/> + <field name="FEBRUARY"/> + <field name="FIELD_COUNT"/> + <field name="FRIDAY"/> + <field name="HOUR"/> + <field name="HOUR_OF_DAY"/> + <field name="JANUARY"/> + <field name="JULY"/> + <field name="JUNE"/> + <field name="LONG" since="9"/> + <field name="LONG_FORMAT" since="26"/> + <field name="LONG_STANDALONE" since="26"/> + <field name="MARCH"/> + <field name="MAY"/> + <field name="MILLISECOND"/> + <field name="MINUTE"/> + <field name="MONDAY"/> + <field name="MONTH"/> + <field name="NARROW_FORMAT" since="26"/> + <field name="NARROW_STANDALONE" since="26"/> + <field name="NOVEMBER"/> + <field name="OCTOBER"/> + <field name="PM"/> + <field name="SATURDAY"/> + <field name="SECOND"/> + <field name="SEPTEMBER"/> + <field name="SHORT" since="9"/> + <field name="SHORT_FORMAT" since="26"/> + <field name="SHORT_STANDALONE" since="26"/> + <field name="SUNDAY"/> + <field name="THURSDAY"/> + <field name="TUESDAY"/> + <field name="UNDECIMBER"/> + <field name="WEDNESDAY"/> + <field name="WEEK_OF_MONTH"/> + <field name="WEEK_OF_YEAR"/> + <field name="YEAR"/> + <field name="ZONE_OFFSET"/> + <field name="areFieldsSet"/> + <field name="fields"/> + <field name="isSet"/> + <field name="isTimeSet"/> + <field name="time"/> + </class> + <class name="java/util/Calendar$Builder" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="build()Ljava/util/Calendar;"/> + <method name="set(II)Ljava/util/Calendar$Builder;"/> + <method name="setCalendarType(Ljava/lang/String;)Ljava/util/Calendar$Builder;"/> + <method name="setDate(III)Ljava/util/Calendar$Builder;"/> + <method name="setFields([I)Ljava/util/Calendar$Builder;"/> + <method name="setInstant(J)Ljava/util/Calendar$Builder;"/> + <method name="setInstant(Ljava/util/Date;)Ljava/util/Calendar$Builder;"/> + <method name="setLenient(Z)Ljava/util/Calendar$Builder;"/> + <method name="setLocale(Ljava/util/Locale;)Ljava/util/Calendar$Builder;"/> + <method name="setTimeOfDay(III)Ljava/util/Calendar$Builder;"/> + <method name="setTimeOfDay(IIII)Ljava/util/Calendar$Builder;"/> + <method name="setTimeZone(Ljava/util/TimeZone;)Ljava/util/Calendar$Builder;"/> + <method name="setWeekDate(III)Ljava/util/Calendar$Builder;"/> + <method name="setWeekDefinition(II)Ljava/util/Calendar$Builder;"/> + </class> + <class name="java/util/Collection" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Iterable"/> + <method name="add(Ljava/lang/Object;)Z"/> + <method name="addAll(Ljava/util/Collection;)Z"/> + <method name="clear()V"/> + <method name="contains(Ljava/lang/Object;)Z"/> + <method name="containsAll(Ljava/util/Collection;)Z"/> + <method name="isEmpty()Z"/> + <method name="parallelStream()Ljava/util/stream/Stream;" since="24"/> + <method name="remove(Ljava/lang/Object;)Z"/> + <method name="removeAll(Ljava/util/Collection;)Z"/> + <method name="removeIf(Ljava/util/function/Predicate;)Z" since="24"/> + <method name="retainAll(Ljava/util/Collection;)Z"/> + <method name="size()I"/> + <method name="stream()Ljava/util/stream/Stream;" since="24"/> + <method name="toArray()[Ljava/lang/Object;"/> + <method name="toArray([Ljava/lang/Object;)[Ljava/lang/Object;"/> + </class> + <class name="java/util/Collections" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addAll(Ljava/util/Collection;[Ljava/lang/Object;)Z"/> + <method name="asLifoQueue(Ljava/util/Deque;)Ljava/util/Queue;" since="9"/> + <method name="binarySearch(Ljava/util/List;Ljava/lang/Object;)I"/> + <method name="binarySearch(Ljava/util/List;Ljava/lang/Object;Ljava/util/Comparator;)I"/> + <method name="checkedCollection(Ljava/util/Collection;Ljava/lang/Class;)Ljava/util/Collection;"/> + <method name="checkedList(Ljava/util/List;Ljava/lang/Class;)Ljava/util/List;"/> + <method name="checkedMap(Ljava/util/Map;Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/Map;"/> + <method name="checkedNavigableMap(Ljava/util/NavigableMap;Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/NavigableMap;" since="26"/> + <method name="checkedNavigableSet(Ljava/util/NavigableSet;Ljava/lang/Class;)Ljava/util/NavigableSet;" since="26"/> + <method name="checkedQueue(Ljava/util/Queue;Ljava/lang/Class;)Ljava/util/Queue;" since="26"/> + <method name="checkedSet(Ljava/util/Set;Ljava/lang/Class;)Ljava/util/Set;"/> + <method name="checkedSortedMap(Ljava/util/SortedMap;Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/SortedMap;"/> + <method name="checkedSortedSet(Ljava/util/SortedSet;Ljava/lang/Class;)Ljava/util/SortedSet;"/> + <method name="copy(Ljava/util/List;Ljava/util/List;)V"/> + <method name="disjoint(Ljava/util/Collection;Ljava/util/Collection;)Z"/> + <method name="emptyEnumeration()Ljava/util/Enumeration;" since="19"/> + <method name="emptyIterator()Ljava/util/Iterator;" since="19"/> + <method name="emptyList()Ljava/util/List;"/> + <method name="emptyListIterator()Ljava/util/ListIterator;" since="19"/> + <method name="emptyMap()Ljava/util/Map;"/> + <method name="emptyNavigableMap()Ljava/util/NavigableMap;" since="26"/> + <method name="emptyNavigableSet()Ljava/util/NavigableSet;" since="26"/> + <method name="emptySet()Ljava/util/Set;"/> + <method name="emptySortedMap()Ljava/util/SortedMap;" since="26"/> + <method name="emptySortedSet()Ljava/util/SortedSet;" since="26"/> + <method name="enumeration(Ljava/util/Collection;)Ljava/util/Enumeration;"/> + <method name="fill(Ljava/util/List;Ljava/lang/Object;)V"/> + <method name="frequency(Ljava/util/Collection;Ljava/lang/Object;)I"/> + <method name="indexOfSubList(Ljava/util/List;Ljava/util/List;)I"/> + <method name="lastIndexOfSubList(Ljava/util/List;Ljava/util/List;)I"/> + <method name="list(Ljava/util/Enumeration;)Ljava/util/ArrayList;"/> + <method name="max(Ljava/util/Collection;)Ljava/lang/Object;"/> + <method name="max(Ljava/util/Collection;Ljava/util/Comparator;)Ljava/lang/Object;"/> + <method name="min(Ljava/util/Collection;)Ljava/lang/Object;"/> + <method name="min(Ljava/util/Collection;Ljava/util/Comparator;)Ljava/lang/Object;"/> + <method name="nCopies(ILjava/lang/Object;)Ljava/util/List;"/> + <method name="newSetFromMap(Ljava/util/Map;)Ljava/util/Set;" since="9"/> + <method name="replaceAll(Ljava/util/List;Ljava/lang/Object;Ljava/lang/Object;)Z"/> + <method name="reverse(Ljava/util/List;)V"/> + <method name="reverseOrder()Ljava/util/Comparator;"/> + <method name="reverseOrder(Ljava/util/Comparator;)Ljava/util/Comparator;"/> + <method name="rotate(Ljava/util/List;I)V"/> + <method name="shuffle(Ljava/util/List;)V"/> + <method name="shuffle(Ljava/util/List;Ljava/util/Random;)V"/> + <method name="singleton(Ljava/lang/Object;)Ljava/util/Set;"/> + <method name="singletonList(Ljava/lang/Object;)Ljava/util/List;"/> + <method name="singletonMap(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map;"/> + <method name="sort(Ljava/util/List;)V"/> + <method name="sort(Ljava/util/List;Ljava/util/Comparator;)V"/> + <method name="swap(Ljava/util/List;II)V"/> + <method name="synchronizedCollection(Ljava/util/Collection;)Ljava/util/Collection;"/> + <method name="synchronizedList(Ljava/util/List;)Ljava/util/List;"/> + <method name="synchronizedMap(Ljava/util/Map;)Ljava/util/Map;"/> + <method name="synchronizedNavigableMap(Ljava/util/NavigableMap;)Ljava/util/NavigableMap;" since="26"/> + <method name="synchronizedNavigableSet(Ljava/util/NavigableSet;)Ljava/util/NavigableSet;" since="26"/> + <method name="synchronizedSet(Ljava/util/Set;)Ljava/util/Set;"/> + <method name="synchronizedSortedMap(Ljava/util/SortedMap;)Ljava/util/SortedMap;"/> + <method name="synchronizedSortedSet(Ljava/util/SortedSet;)Ljava/util/SortedSet;"/> + <method name="unmodifiableCollection(Ljava/util/Collection;)Ljava/util/Collection;"/> + <method name="unmodifiableList(Ljava/util/List;)Ljava/util/List;"/> + <method name="unmodifiableMap(Ljava/util/Map;)Ljava/util/Map;"/> + <method name="unmodifiableNavigableMap(Ljava/util/NavigableMap;)Ljava/util/NavigableMap;" since="26"/> + <method name="unmodifiableNavigableSet(Ljava/util/NavigableSet;)Ljava/util/NavigableSet;" since="26"/> + <method name="unmodifiableSet(Ljava/util/Set;)Ljava/util/Set;"/> + <method name="unmodifiableSortedMap(Ljava/util/SortedMap;)Ljava/util/SortedMap;"/> + <method name="unmodifiableSortedSet(Ljava/util/SortedSet;)Ljava/util/SortedSet;"/> + <field name="EMPTY_LIST"/> + <field name="EMPTY_MAP"/> + <field name="EMPTY_SET"/> + </class> + <class name="java/util/Comparator" since="1"> + <extends name="java/lang/Object"/> + <method name="compare(Ljava/lang/Object;Ljava/lang/Object;)I"/> + <method name="comparing(Ljava/util/function/Function;)Ljava/util/Comparator;" since="24"/> + <method name="comparing(Ljava/util/function/Function;Ljava/util/Comparator;)Ljava/util/Comparator;" since="24"/> + <method name="comparingDouble(Ljava/util/function/ToDoubleFunction;)Ljava/util/Comparator;" since="24"/> + <method name="comparingInt(Ljava/util/function/ToIntFunction;)Ljava/util/Comparator;" since="24"/> + <method name="comparingLong(Ljava/util/function/ToLongFunction;)Ljava/util/Comparator;" since="24"/> + <method name="naturalOrder()Ljava/util/Comparator;" since="24"/> + <method name="nullsFirst(Ljava/util/Comparator;)Ljava/util/Comparator;" since="24"/> + <method name="nullsLast(Ljava/util/Comparator;)Ljava/util/Comparator;" since="24"/> + <method name="reverseOrder()Ljava/util/Comparator;" since="24"/> + <method name="reversed()Ljava/util/Comparator;" since="24"/> + <method name="thenComparing(Ljava/util/Comparator;)Ljava/util/Comparator;" since="24"/> + <method name="thenComparing(Ljava/util/function/Function;)Ljava/util/Comparator;" since="24"/> + <method name="thenComparing(Ljava/util/function/Function;Ljava/util/Comparator;)Ljava/util/Comparator;" since="24"/> + <method name="thenComparingDouble(Ljava/util/function/ToDoubleFunction;)Ljava/util/Comparator;" since="24"/> + <method name="thenComparingInt(Ljava/util/function/ToIntFunction;)Ljava/util/Comparator;" since="24"/> + <method name="thenComparingLong(Ljava/util/function/ToLongFunction;)Ljava/util/Comparator;" since="24"/> + </class> + <class name="java/util/ConcurrentModificationException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="19"/> + <method name="<init>(Ljava/lang/Throwable;)V" since="19"/> + </class> + <class name="java/util/Currency" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="getAvailableCurrencies()Ljava/util/Set;" since="19"/> + <method name="getCurrencyCode()Ljava/lang/String;"/> + <method name="getDefaultFractionDigits()I"/> + <method name="getDisplayName()Ljava/lang/String;" since="19"/> + <method name="getDisplayName(Ljava/util/Locale;)Ljava/lang/String;" since="19"/> + <method name="getInstance(Ljava/lang/String;)Ljava/util/Currency;"/> + <method name="getInstance(Ljava/util/Locale;)Ljava/util/Currency;"/> + <method name="getNumericCode()I" since="24"/> + <method name="getSymbol()Ljava/lang/String;"/> + <method name="getSymbol(Ljava/util/Locale;)Ljava/lang/String;"/> + </class> + <class name="java/util/Date" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <implements name="java/lang/Comparable"/> + <method name="<init>()V"/> + <method name="<init>(III)V" deprecated="16"/> + <method name="<init>(IIIII)V" deprecated="16"/> + <method name="<init>(IIIIII)V" deprecated="16"/> + <method name="<init>(J)V"/> + <method name="<init>(Ljava/lang/String;)V" deprecated="16"/> + <method name="UTC(IIIIII)J" deprecated="16"/> + <method name="after(Ljava/util/Date;)Z"/> + <method name="before(Ljava/util/Date;)Z"/> + <method name="compareTo(Ljava/util/Date;)I"/> + <method name="from(Ljava/time/Instant;)Ljava/util/Date;" since="26"/> + <method name="getDate()I" deprecated="16"/> + <method name="getDay()I" deprecated="16"/> + <method name="getHours()I" deprecated="16"/> + <method name="getMinutes()I" deprecated="16"/> + <method name="getMonth()I" deprecated="16"/> + <method name="getSeconds()I" deprecated="16"/> + <method name="getTime()J"/> + <method name="getTimezoneOffset()I" deprecated="16"/> + <method name="getYear()I" deprecated="16"/> + <method name="parse(Ljava/lang/String;)J" deprecated="16"/> + <method name="setDate(I)V" deprecated="16"/> + <method name="setHours(I)V" deprecated="16"/> + <method name="setMinutes(I)V" deprecated="16"/> + <method name="setMonth(I)V" deprecated="16"/> + <method name="setSeconds(I)V" deprecated="16"/> + <method name="setTime(J)V"/> + <method name="setYear(I)V" deprecated="16"/> + <method name="toGMTString()Ljava/lang/String;" deprecated="16"/> + <method name="toInstant()Ljava/time/Instant;" since="26"/> + <method name="toLocaleString()Ljava/lang/String;" deprecated="16"/> + </class> + <class name="java/util/Deque" since="9"> + <extends name="java/lang/Object"/> + <implements name="java/util/Queue"/> + <method name="addFirst(Ljava/lang/Object;)V"/> + <method name="addLast(Ljava/lang/Object;)V"/> + <method name="descendingIterator()Ljava/util/Iterator;"/> + <method name="getFirst()Ljava/lang/Object;"/> + <method name="getLast()Ljava/lang/Object;"/> + <method name="offerFirst(Ljava/lang/Object;)Z"/> + <method name="offerLast(Ljava/lang/Object;)Z"/> + <method name="peekFirst()Ljava/lang/Object;"/> + <method name="peekLast()Ljava/lang/Object;"/> + <method name="pollFirst()Ljava/lang/Object;"/> + <method name="pollLast()Ljava/lang/Object;"/> + <method name="pop()Ljava/lang/Object;"/> + <method name="push(Ljava/lang/Object;)V"/> + <method name="removeFirst()Ljava/lang/Object;"/> + <method name="removeFirstOccurrence(Ljava/lang/Object;)Z"/> + <method name="removeLast()Ljava/lang/Object;"/> + <method name="removeLastOccurrence(Ljava/lang/Object;)Z"/> + </class> + <class name="java/util/Dictionary" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="elements()Ljava/util/Enumeration;"/> + <method name="get(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="isEmpty()Z"/> + <method name="keys()Ljava/util/Enumeration;"/> + <method name="put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="remove(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="size()I"/> + </class> + <class name="java/util/DoubleSummaryStatistics" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/util/function/DoubleConsumer"/> + <method name="<init>()V"/> + <method name="combine(Ljava/util/DoubleSummaryStatistics;)V"/> + <method name="getAverage()D"/> + <method name="getCount()J"/> + <method name="getMax()D"/> + <method name="getMin()D"/> + <method name="getSum()D"/> + </class> + <class name="java/util/DuplicateFormatFlagsException" since="1"> + <extends name="java/util/IllegalFormatException"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getFlags()Ljava/lang/String;"/> + </class> + <class name="java/util/EmptyStackException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + </class> + <class name="java/util/EnumMap" since="1"> + <extends name="java/util/AbstractMap"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>(Ljava/lang/Class;)V"/> + <method name="<init>(Ljava/util/EnumMap;)V"/> + <method name="<init>(Ljava/util/Map;)V"/> + <method name="clone()Ljava/util/EnumMap;"/> + <method name="put(Ljava/lang/Enum;Ljava/lang/Object;)Ljava/lang/Object;"/> + </class> + <class name="java/util/EnumSet" since="1"> + <extends name="java/util/AbstractSet"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="allOf(Ljava/lang/Class;)Ljava/util/EnumSet;"/> + <method name="clone()Ljava/util/EnumSet;"/> + <method name="complementOf(Ljava/util/EnumSet;)Ljava/util/EnumSet;"/> + <method name="copyOf(Ljava/util/Collection;)Ljava/util/EnumSet;"/> + <method name="copyOf(Ljava/util/EnumSet;)Ljava/util/EnumSet;"/> + <method name="noneOf(Ljava/lang/Class;)Ljava/util/EnumSet;"/> + <method name="of(Ljava/lang/Enum;)Ljava/util/EnumSet;"/> + <method name="of(Ljava/lang/Enum;Ljava/lang/Enum;)Ljava/util/EnumSet;"/> + <method name="of(Ljava/lang/Enum;Ljava/lang/Enum;Ljava/lang/Enum;)Ljava/util/EnumSet;"/> + <method name="of(Ljava/lang/Enum;Ljava/lang/Enum;Ljava/lang/Enum;Ljava/lang/Enum;)Ljava/util/EnumSet;"/> + <method name="of(Ljava/lang/Enum;Ljava/lang/Enum;Ljava/lang/Enum;Ljava/lang/Enum;Ljava/lang/Enum;)Ljava/util/EnumSet;"/> + <method name="of(Ljava/lang/Enum;[Ljava/lang/Enum;)Ljava/util/EnumSet;"/> + <method name="range(Ljava/lang/Enum;Ljava/lang/Enum;)Ljava/util/EnumSet;"/> + </class> + <class name="java/util/Enumeration" since="1"> + <extends name="java/lang/Object"/> + <method name="hasMoreElements()Z"/> + <method name="nextElement()Ljava/lang/Object;"/> + </class> + <class name="java/util/EventListener" since="1"> + <extends name="java/lang/Object"/> + </class> + <class name="java/util/EventListenerProxy" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/EventListener"/> + <method name="<init>(Ljava/util/EventListener;)V"/> + <method name="getListener()Ljava/util/EventListener;"/> + </class> + <class name="java/util/EventObject" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(Ljava/lang/Object;)V"/> + <method name="getSource()Ljava/lang/Object;"/> + <field name="source"/> + </class> + <class name="java/util/FormatFlagsConversionMismatchException" since="1"> + <extends name="java/util/IllegalFormatException"/> + <method name="<init>(Ljava/lang/String;C)V"/> + <method name="getConversion()C"/> + <method name="getFlags()Ljava/lang/String;"/> + </class> + <class name="java/util/Formattable" since="1"> + <extends name="java/lang/Object"/> + <method name="formatTo(Ljava/util/Formatter;III)V"/> + </class> + <class name="java/util/FormattableFlags" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="ALTERNATE"/> + <field name="LEFT_JUSTIFY"/> + <field name="UPPERCASE"/> + </class> + <class name="java/util/Formatter" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable"/> + <implements name="java/io/Flushable"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/io/File;)V"/> + <method name="<init>(Ljava/io/File;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/io/File;Ljava/lang/String;Ljava/util/Locale;)V"/> + <method name="<init>(Ljava/io/OutputStream;)V"/> + <method name="<init>(Ljava/io/OutputStream;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/io/OutputStream;Ljava/lang/String;Ljava/util/Locale;)V"/> + <method name="<init>(Ljava/io/PrintStream;)V"/> + <method name="<init>(Ljava/lang/Appendable;)V"/> + <method name="<init>(Ljava/lang/Appendable;Ljava/util/Locale;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/util/Locale;)V"/> + <method name="<init>(Ljava/util/Locale;)V"/> + <method name="format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/util/Formatter;"/> + <method name="format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/util/Formatter;"/> + <method name="ioException()Ljava/io/IOException;"/> + <method name="locale()Ljava/util/Locale;"/> + <method name="out()Ljava/lang/Appendable;"/> + </class> + <class name="java/util/Formatter$BigDecimalLayoutForm" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/util/Formatter$BigDecimalLayoutForm;"/> + <method name="values()[Ljava/util/Formatter$BigDecimalLayoutForm;"/> + <field name="DECIMAL_FLOAT"/> + <field name="SCIENTIFIC"/> + </class> + <class name="java/util/FormatterClosedException" since="1"> + <extends name="java/lang/IllegalStateException"/> + <method name="<init>()V"/> + </class> + <class name="java/util/GregorianCalendar" since="1"> + <extends name="java/util/Calendar"/> + <method name="<init>()V"/> + <method name="<init>(III)V"/> + <method name="<init>(IIIII)V"/> + <method name="<init>(IIIIII)V"/> + <method name="<init>(Ljava/util/Locale;)V"/> + <method name="<init>(Ljava/util/TimeZone;)V"/> + <method name="<init>(Ljava/util/TimeZone;Ljava/util/Locale;)V"/> + <method name="from(Ljava/time/ZonedDateTime;)Ljava/util/GregorianCalendar;" since="26"/> + <method name="getGregorianChange()Ljava/util/Date;"/> + <method name="isLeapYear(I)Z"/> + <method name="setGregorianChange(Ljava/util/Date;)V"/> + <method name="toZonedDateTime()Ljava/time/ZonedDateTime;" since="26"/> + <field name="AD"/> + <field name="BC"/> + </class> + <class name="java/util/HashMap" since="1"> + <extends name="java/util/AbstractMap"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(IF)V"/> + <method name="<init>(Ljava/util/Map;)V"/> + </class> + <class name="java/util/HashSet" since="1"> + <extends name="java/util/AbstractSet"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(IF)V"/> + <method name="<init>(Ljava/util/Collection;)V"/> + </class> + <class name="java/util/Hashtable" since="1"> + <extends name="java/util/Dictionary"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <implements name="java/util/Map"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(IF)V"/> + <method name="<init>(Ljava/util/Map;)V"/> + <method name="contains(Ljava/lang/Object;)Z"/> + <method name="rehash()V"/> + </class> + <class name="java/util/IdentityHashMap" since="1"> + <extends name="java/util/AbstractMap"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(Ljava/util/Map;)V"/> + </class> + <class name="java/util/IllegalFormatCodePointException" since="1"> + <extends name="java/util/IllegalFormatException"/> + <method name="<init>(I)V"/> + <method name="getCodePoint()I"/> + </class> + <class name="java/util/IllegalFormatConversionException" since="1"> + <extends name="java/util/IllegalFormatException"/> + <method name="<init>(CLjava/lang/Class;)V"/> + <method name="getArgumentClass()Ljava/lang/Class;"/> + <method name="getConversion()C"/> + </class> + <class name="java/util/IllegalFormatException" since="1"> + <extends name="java/lang/IllegalArgumentException"/> + <method name="<init>()V"/> + </class> + <class name="java/util/IllegalFormatFlagsException" since="1"> + <extends name="java/util/IllegalFormatException"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getFlags()Ljava/lang/String;"/> + </class> + <class name="java/util/IllegalFormatPrecisionException" since="1"> + <extends name="java/util/IllegalFormatException"/> + <method name="<init>(I)V"/> + <method name="getPrecision()I"/> + </class> + <class name="java/util/IllegalFormatWidthException" since="1"> + <extends name="java/util/IllegalFormatException"/> + <method name="<init>(I)V"/> + <method name="getWidth()I"/> + </class> + <class name="java/util/IllformedLocaleException" since="21"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="getErrorIndex()I"/> + </class> + <class name="java/util/InputMismatchException" since="1"> + <extends name="java/util/NoSuchElementException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/util/IntSummaryStatistics" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/util/function/IntConsumer"/> + <method name="<init>()V"/> + <method name="combine(Ljava/util/IntSummaryStatistics;)V"/> + <method name="getAverage()D"/> + <method name="getCount()J"/> + <method name="getMax()I"/> + <method name="getMin()I"/> + <method name="getSum()J"/> + </class> + <class name="java/util/InvalidPropertiesFormatException" since="1"> + <extends name="java/io/IOException"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/util/Iterator" since="1"> + <extends name="java/lang/Object"/> + <method name="forEachRemaining(Ljava/util/function/Consumer;)V" since="24"/> + <method name="hasNext()Z"/> + <method name="next()Ljava/lang/Object;"/> + <method name="remove()V"/> + </class> + <class name="java/util/LinkedHashMap" since="1"> + <extends name="java/util/HashMap"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(IF)V"/> + <method name="<init>(IFZ)V"/> + <method name="<init>(Ljava/util/Map;)V"/> + <method name="removeEldestEntry(Ljava/util/Map$Entry;)Z"/> + </class> + <class name="java/util/LinkedHashSet" since="1"> + <extends name="java/util/HashSet"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(IF)V"/> + <method name="<init>(Ljava/util/Collection;)V"/> + </class> + <class name="java/util/LinkedList" since="1"> + <extends name="java/util/AbstractSequentialList"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <implements name="java/util/Deque" since="9"/> + <implements name="java/util/Queue" removed="24"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/util/Collection;)V"/> + <method name="addFirst(Ljava/lang/Object;)V"/> + <method name="addLast(Ljava/lang/Object;)V"/> + <method name="getFirst()Ljava/lang/Object;"/> + <method name="getLast()Ljava/lang/Object;"/> + <method name="removeFirst()Ljava/lang/Object;"/> + <method name="removeLast()Ljava/lang/Object;"/> + </class> + <class name="java/util/List" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/Collection"/> + <method name="add(ILjava/lang/Object;)V"/> + <method name="addAll(ILjava/util/Collection;)Z"/> + <method name="get(I)Ljava/lang/Object;"/> + <method name="indexOf(Ljava/lang/Object;)I"/> + <method name="lastIndexOf(Ljava/lang/Object;)I"/> + <method name="listIterator()Ljava/util/ListIterator;"/> + <method name="listIterator(I)Ljava/util/ListIterator;"/> + <method name="remove(I)Ljava/lang/Object;"/> + <method name="replaceAll(Ljava/util/function/UnaryOperator;)V" since="24"/> + <method name="set(ILjava/lang/Object;)Ljava/lang/Object;"/> + <method name="sort(Ljava/util/Comparator;)V" since="24"/> + <method name="subList(II)Ljava/util/List;"/> + </class> + <class name="java/util/ListIterator" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/Iterator"/> + <method name="add(Ljava/lang/Object;)V"/> + <method name="hasPrevious()Z"/> + <method name="nextIndex()I"/> + <method name="previous()Ljava/lang/Object;"/> + <method name="previousIndex()I"/> + <method name="set(Ljava/lang/Object;)V"/> + </class> + <class name="java/util/ListResourceBundle" since="1"> + <extends name="java/util/ResourceBundle"/> + <method name="<init>()V"/> + <method name="getContents()[[Ljava/lang/Object;"/> + </class> + <class name="java/util/Locale" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="filter(Ljava/util/List;Ljava/util/Collection;)Ljava/util/List;" since="26"/> + <method name="filter(Ljava/util/List;Ljava/util/Collection;Ljava/util/Locale$FilteringMode;)Ljava/util/List;" since="26"/> + <method name="filterTags(Ljava/util/List;Ljava/util/Collection;)Ljava/util/List;" since="26"/> + <method name="filterTags(Ljava/util/List;Ljava/util/Collection;Ljava/util/Locale$FilteringMode;)Ljava/util/List;" since="26"/> + <method name="forLanguageTag(Ljava/lang/String;)Ljava/util/Locale;" since="21"/> + <method name="getAvailableLocales()[Ljava/util/Locale;"/> + <method name="getCountry()Ljava/lang/String;"/> + <method name="getDefault()Ljava/util/Locale;"/> + <method name="getDefault(Ljava/util/Locale$Category;)Ljava/util/Locale;" since="24"/> + <method name="getDisplayCountry()Ljava/lang/String;"/> + <method name="getDisplayCountry(Ljava/util/Locale;)Ljava/lang/String;"/> + <method name="getDisplayLanguage()Ljava/lang/String;"/> + <method name="getDisplayLanguage(Ljava/util/Locale;)Ljava/lang/String;"/> + <method name="getDisplayName()Ljava/lang/String;"/> + <method name="getDisplayName(Ljava/util/Locale;)Ljava/lang/String;"/> + <method name="getDisplayScript()Ljava/lang/String;" since="21"/> + <method name="getDisplayScript(Ljava/util/Locale;)Ljava/lang/String;" since="21"/> + <method name="getDisplayVariant()Ljava/lang/String;"/> + <method name="getDisplayVariant(Ljava/util/Locale;)Ljava/lang/String;"/> + <method name="getExtension(C)Ljava/lang/String;" since="21"/> + <method name="getExtensionKeys()Ljava/util/Set;" since="21"/> + <method name="getISO3Country()Ljava/lang/String;"/> + <method name="getISO3Language()Ljava/lang/String;"/> + <method name="getISOCountries()[Ljava/lang/String;"/> + <method name="getISOLanguages()[Ljava/lang/String;"/> + <method name="getLanguage()Ljava/lang/String;"/> + <method name="getScript()Ljava/lang/String;" since="21"/> + <method name="getUnicodeLocaleAttributes()Ljava/util/Set;" since="21"/> + <method name="getUnicodeLocaleKeys()Ljava/util/Set;" since="21"/> + <method name="getUnicodeLocaleType(Ljava/lang/String;)Ljava/lang/String;" since="21"/> + <method name="getVariant()Ljava/lang/String;"/> + <method name="hasExtensions()Z" since="26"/> + <method name="lookup(Ljava/util/List;Ljava/util/Collection;)Ljava/util/Locale;" since="26"/> + <method name="lookupTag(Ljava/util/List;Ljava/util/Collection;)Ljava/lang/String;" since="26"/> + <method name="setDefault(Ljava/util/Locale$Category;Ljava/util/Locale;)V" since="24"/> + <method name="setDefault(Ljava/util/Locale;)V"/> + <method name="stripExtensions()Ljava/util/Locale;" since="26"/> + <method name="toLanguageTag()Ljava/lang/String;" since="21"/> + <field name="CANADA"/> + <field name="CANADA_FRENCH"/> + <field name="CHINA"/> + <field name="CHINESE"/> + <field name="ENGLISH"/> + <field name="FRANCE"/> + <field name="FRENCH"/> + <field name="GERMAN"/> + <field name="GERMANY"/> + <field name="ITALIAN"/> + <field name="ITALY"/> + <field name="JAPAN"/> + <field name="JAPANESE"/> + <field name="KOREA"/> + <field name="KOREAN"/> + <field name="PRC"/> + <field name="PRIVATE_USE_EXTENSION" since="21"/> + <field name="ROOT" since="9"/> + <field name="SIMPLIFIED_CHINESE"/> + <field name="TAIWAN"/> + <field name="TRADITIONAL_CHINESE"/> + <field name="UK"/> + <field name="UNICODE_LOCALE_EXTENSION" since="21"/> + <field name="US"/> + </class> + <class name="java/util/Locale$Builder" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addUnicodeLocaleAttribute(Ljava/lang/String;)Ljava/util/Locale$Builder;"/> + <method name="build()Ljava/util/Locale;"/> + <method name="clear()Ljava/util/Locale$Builder;"/> + <method name="clearExtensions()Ljava/util/Locale$Builder;"/> + <method name="removeUnicodeLocaleAttribute(Ljava/lang/String;)Ljava/util/Locale$Builder;"/> + <method name="setExtension(CLjava/lang/String;)Ljava/util/Locale$Builder;"/> + <method name="setLanguage(Ljava/lang/String;)Ljava/util/Locale$Builder;"/> + <method name="setLanguageTag(Ljava/lang/String;)Ljava/util/Locale$Builder;"/> + <method name="setLocale(Ljava/util/Locale;)Ljava/util/Locale$Builder;"/> + <method name="setRegion(Ljava/lang/String;)Ljava/util/Locale$Builder;"/> + <method name="setScript(Ljava/lang/String;)Ljava/util/Locale$Builder;"/> + <method name="setUnicodeLocaleKeyword(Ljava/lang/String;Ljava/lang/String;)Ljava/util/Locale$Builder;"/> + <method name="setVariant(Ljava/lang/String;)Ljava/util/Locale$Builder;"/> + </class> + <class name="java/util/Locale$Category" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/util/Locale$Category;"/> + <method name="values()[Ljava/util/Locale$Category;"/> + <field name="DISPLAY"/> + <field name="FORMAT"/> + </class> + <class name="java/util/Locale$FilteringMode" since="26"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/util/Locale$FilteringMode;"/> + <method name="values()[Ljava/util/Locale$FilteringMode;"/> + <field name="AUTOSELECT_FILTERING"/> + <field name="EXTENDED_FILTERING"/> + <field name="IGNORE_EXTENDED_RANGES"/> + <field name="MAP_EXTENDED_RANGES"/> + <field name="REJECT_EXTENDED_RANGES"/> + </class> + <class name="java/util/Locale$LanguageRange" since="26"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;D)V"/> + <method name="getRange()Ljava/lang/String;"/> + <method name="getWeight()D"/> + <method name="mapEquivalents(Ljava/util/List;Ljava/util/Map;)Ljava/util/List;"/> + <method name="parse(Ljava/lang/String;)Ljava/util/List;"/> + <method name="parse(Ljava/lang/String;Ljava/util/Map;)Ljava/util/List;"/> + <field name="MAX_WEIGHT"/> + <field name="MIN_WEIGHT"/> + </class> + <class name="java/util/LongSummaryStatistics" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/util/function/IntConsumer"/> + <implements name="java/util/function/LongConsumer"/> + <method name="<init>()V"/> + <method name="combine(Ljava/util/LongSummaryStatistics;)V"/> + <method name="getAverage()D"/> + <method name="getCount()J"/> + <method name="getMax()J"/> + <method name="getMin()J"/> + <method name="getSum()J"/> + </class> + <class name="java/util/Map" since="1"> + <extends name="java/lang/Object"/> + <method name="clear()V"/> + <method name="compute(Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;" since="24"/> + <method name="computeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;" since="24"/> + <method name="computeIfPresent(Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;" since="24"/> + <method name="containsKey(Ljava/lang/Object;)Z"/> + <method name="containsValue(Ljava/lang/Object;)Z"/> + <method name="entrySet()Ljava/util/Set;"/> + <method name="forEach(Ljava/util/function/BiConsumer;)V" since="24"/> + <method name="get(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" since="24"/> + <method name="isEmpty()Z"/> + <method name="keySet()Ljava/util/Set;"/> + <method name="merge(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;" since="24"/> + <method name="put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="putAll(Ljava/util/Map;)V"/> + <method name="putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" since="24"/> + <method name="remove(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="remove(Ljava/lang/Object;Ljava/lang/Object;)Z" since="24"/> + <method name="replace(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" since="24"/> + <method name="replace(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z" since="24"/> + <method name="replaceAll(Ljava/util/function/BiFunction;)V" since="24"/> + <method name="size()I"/> + <method name="values()Ljava/util/Collection;"/> + </class> + <class name="java/util/Map$Entry" since="1"> + <extends name="java/lang/Object"/> + <method name="comparingByKey()Ljava/util/Comparator;" since="24"/> + <method name="comparingByKey(Ljava/util/Comparator;)Ljava/util/Comparator;" since="24"/> + <method name="comparingByValue()Ljava/util/Comparator;" since="24"/> + <method name="comparingByValue(Ljava/util/Comparator;)Ljava/util/Comparator;" since="24"/> + <method name="getKey()Ljava/lang/Object;"/> + <method name="getValue()Ljava/lang/Object;"/> + <method name="setValue(Ljava/lang/Object;)Ljava/lang/Object;"/> + </class> + <class name="java/util/MissingFormatArgumentException" since="1"> + <extends name="java/util/IllegalFormatException"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getFormatSpecifier()Ljava/lang/String;"/> + </class> + <class name="java/util/MissingFormatWidthException" since="1"> + <extends name="java/util/IllegalFormatException"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getFormatSpecifier()Ljava/lang/String;"/> + </class> + <class name="java/util/MissingResourceException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="getClassName()Ljava/lang/String;"/> + <method name="getKey()Ljava/lang/String;"/> + </class> + <class name="java/util/NavigableMap" since="9"> + <extends name="java/lang/Object"/> + <implements name="java/util/SortedMap"/> + <method name="ceilingEntry(Ljava/lang/Object;)Ljava/util/Map$Entry;"/> + <method name="ceilingKey(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="descendingKeySet()Ljava/util/NavigableSet;"/> + <method name="descendingMap()Ljava/util/NavigableMap;"/> + <method name="firstEntry()Ljava/util/Map$Entry;"/> + <method name="floorEntry(Ljava/lang/Object;)Ljava/util/Map$Entry;"/> + <method name="floorKey(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="headMap(Ljava/lang/Object;Z)Ljava/util/NavigableMap;"/> + <method name="higherEntry(Ljava/lang/Object;)Ljava/util/Map$Entry;"/> + <method name="higherKey(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="lastEntry()Ljava/util/Map$Entry;"/> + <method name="lowerEntry(Ljava/lang/Object;)Ljava/util/Map$Entry;"/> + <method name="lowerKey(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="navigableKeySet()Ljava/util/NavigableSet;"/> + <method name="pollFirstEntry()Ljava/util/Map$Entry;"/> + <method name="pollLastEntry()Ljava/util/Map$Entry;"/> + <method name="subMap(Ljava/lang/Object;ZLjava/lang/Object;Z)Ljava/util/NavigableMap;"/> + <method name="tailMap(Ljava/lang/Object;Z)Ljava/util/NavigableMap;"/> + </class> + <class name="java/util/NavigableSet" since="9"> + <extends name="java/lang/Object"/> + <implements name="java/util/SortedSet"/> + <method name="ceiling(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="descendingIterator()Ljava/util/Iterator;"/> + <method name="descendingSet()Ljava/util/NavigableSet;"/> + <method name="floor(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="headSet(Ljava/lang/Object;Z)Ljava/util/NavigableSet;"/> + <method name="higher(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="lower(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="pollFirst()Ljava/lang/Object;"/> + <method name="pollLast()Ljava/lang/Object;"/> + <method name="subSet(Ljava/lang/Object;ZLjava/lang/Object;Z)Ljava/util/NavigableSet;"/> + <method name="tailSet(Ljava/lang/Object;Z)Ljava/util/NavigableSet;"/> + </class> + <class name="java/util/NoSuchElementException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/util/Objects" since="19"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="compare(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/Comparator;)I"/> + <method name="deepEquals(Ljava/lang/Object;Ljava/lang/Object;)Z"/> + <method name="equals(Ljava/lang/Object;Ljava/lang/Object;)Z"/> + <method name="hash([Ljava/lang/Object;)I"/> + <method name="hashCode(Ljava/lang/Object;)I"/> + <method name="isNull(Ljava/lang/Object;)Z" since="24"/> + <method name="nonNull(Ljava/lang/Object;)Z" since="24"/> + <method name="requireNonNull(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="requireNonNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="requireNonNull(Ljava/lang/Object;Ljava/util/function/Supplier;)Ljava/lang/Object;" since="24"/> + <method name="toString(Ljava/lang/Object;)Ljava/lang/String;"/> + <method name="toString(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/String;"/> + </class> + <class name="java/util/Observable" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addObserver(Ljava/util/Observer;)V"/> + <method name="clearChanged()V"/> + <method name="countObservers()I"/> + <method name="deleteObserver(Ljava/util/Observer;)V"/> + <method name="deleteObservers()V"/> + <method name="hasChanged()Z"/> + <method name="notifyObservers()V"/> + <method name="notifyObservers(Ljava/lang/Object;)V"/> + <method name="setChanged()V"/> + </class> + <class name="java/util/Observer" since="1"> + <extends name="java/lang/Object"/> + <method name="update(Ljava/util/Observable;Ljava/lang/Object;)V"/> + </class> + <class name="java/util/Optional" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="empty()Ljava/util/Optional;"/> + <method name="filter(Ljava/util/function/Predicate;)Ljava/util/Optional;"/> + <method name="flatMap(Ljava/util/function/Function;)Ljava/util/Optional;"/> + <method name="get()Ljava/lang/Object;"/> + <method name="ifPresent(Ljava/util/function/Consumer;)V"/> + <method name="isPresent()Z"/> + <method name="map(Ljava/util/function/Function;)Ljava/util/Optional;"/> + <method name="of(Ljava/lang/Object;)Ljava/util/Optional;"/> + <method name="ofNullable(Ljava/lang/Object;)Ljava/util/Optional;"/> + <method name="orElse(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="orElseGet(Ljava/util/function/Supplier;)Ljava/lang/Object;"/> + <method name="orElseThrow(Ljava/util/function/Supplier;)Ljava/lang/Object;"/> + </class> + <class name="java/util/OptionalDouble" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="empty()Ljava/util/OptionalDouble;"/> + <method name="getAsDouble()D"/> + <method name="ifPresent(Ljava/util/function/DoubleConsumer;)V"/> + <method name="isPresent()Z"/> + <method name="of(D)Ljava/util/OptionalDouble;"/> + <method name="orElse(D)D"/> + <method name="orElseGet(Ljava/util/function/DoubleSupplier;)D"/> + <method name="orElseThrow(Ljava/util/function/Supplier;)D"/> + </class> + <class name="java/util/OptionalInt" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="empty()Ljava/util/OptionalInt;"/> + <method name="getAsInt()I"/> + <method name="ifPresent(Ljava/util/function/IntConsumer;)V"/> + <method name="isPresent()Z"/> + <method name="of(I)Ljava/util/OptionalInt;"/> + <method name="orElse(I)I"/> + <method name="orElseGet(Ljava/util/function/IntSupplier;)I"/> + <method name="orElseThrow(Ljava/util/function/Supplier;)I"/> + </class> + <class name="java/util/OptionalLong" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="empty()Ljava/util/OptionalLong;"/> + <method name="getAsLong()J"/> + <method name="ifPresent(Ljava/util/function/LongConsumer;)V"/> + <method name="isPresent()Z"/> + <method name="of(J)Ljava/util/OptionalLong;"/> + <method name="orElse(J)J"/> + <method name="orElseGet(Ljava/util/function/LongSupplier;)J"/> + <method name="orElseThrow(Ljava/util/function/Supplier;)J"/> + </class> + <class name="java/util/PrimitiveIterator" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/util/Iterator"/> + <method name="forEachRemaining(Ljava/lang/Object;)V"/> + </class> + <class name="java/util/PrimitiveIterator$OfDouble" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/util/PrimitiveIterator"/> + <method name="forEachRemaining(Ljava/util/function/DoubleConsumer;)V"/> + <method name="next()Ljava/lang/Double;"/> + <method name="nextDouble()D"/> + </class> + <class name="java/util/PrimitiveIterator$OfInt" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/util/PrimitiveIterator"/> + <method name="forEachRemaining(Ljava/util/function/IntConsumer;)V"/> + <method name="next()Ljava/lang/Integer;"/> + <method name="nextInt()I"/> + </class> + <class name="java/util/PrimitiveIterator$OfLong" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/util/PrimitiveIterator"/> + <method name="forEachRemaining(Ljava/util/function/LongConsumer;)V"/> + <method name="next()Ljava/lang/Long;"/> + <method name="nextLong()J"/> + </class> + <class name="java/util/PriorityQueue" since="1"> + <extends name="java/util/AbstractQueue"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(ILjava/util/Comparator;)V"/> + <method name="<init>(Ljava/util/Collection;)V"/> + <method name="<init>(Ljava/util/Comparator;)V" since="24"/> + <method name="<init>(Ljava/util/PriorityQueue;)V"/> + <method name="<init>(Ljava/util/SortedSet;)V"/> + <method name="comparator()Ljava/util/Comparator;"/> + </class> + <class name="java/util/Properties" since="1"> + <extends name="java/util/Hashtable"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/util/Properties;)V"/> + <method name="getProperty(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="list(Ljava/io/PrintStream;)V"/> + <method name="list(Ljava/io/PrintWriter;)V"/> + <method name="load(Ljava/io/InputStream;)V"/> + <method name="load(Ljava/io/Reader;)V" since="9"/> + <method name="loadFromXML(Ljava/io/InputStream;)V"/> + <method name="propertyNames()Ljava/util/Enumeration;"/> + <method name="save(Ljava/io/OutputStream;Ljava/lang/String;)V" deprecated="16"/> + <method name="setProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="store(Ljava/io/OutputStream;Ljava/lang/String;)V"/> + <method name="store(Ljava/io/Writer;Ljava/lang/String;)V" since="9"/> + <method name="storeToXML(Ljava/io/OutputStream;Ljava/lang/String;)V"/> + <method name="storeToXML(Ljava/io/OutputStream;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="stringPropertyNames()Ljava/util/Set;" since="9"/> + <field name="defaults"/> + </class> + <class name="java/util/PropertyPermission" since="1"> + <extends name="java/security/BasicPermission"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="java/util/PropertyResourceBundle" since="1"> + <extends name="java/util/ResourceBundle"/> + <method name="<init>(Ljava/io/InputStream;)V"/> + <method name="<init>(Ljava/io/Reader;)V" since="9"/> + </class> + <class name="java/util/Queue" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/Collection"/> + <method name="element()Ljava/lang/Object;"/> + <method name="offer(Ljava/lang/Object;)Z"/> + <method name="peek()Ljava/lang/Object;"/> + <method name="poll()Ljava/lang/Object;"/> + <method name="remove()Ljava/lang/Object;"/> + </class> + <class name="java/util/Random" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="<init>(J)V"/> + <method name="doubles()Ljava/util/stream/DoubleStream;" since="24"/> + <method name="doubles(DD)Ljava/util/stream/DoubleStream;" since="24"/> + <method name="doubles(J)Ljava/util/stream/DoubleStream;" since="24"/> + <method name="doubles(JDD)Ljava/util/stream/DoubleStream;" since="24"/> + <method name="ints()Ljava/util/stream/IntStream;" since="24"/> + <method name="ints(II)Ljava/util/stream/IntStream;" since="24"/> + <method name="ints(J)Ljava/util/stream/IntStream;" since="24"/> + <method name="ints(JII)Ljava/util/stream/IntStream;" since="24"/> + <method name="longs()Ljava/util/stream/LongStream;" since="24"/> + <method name="longs(J)Ljava/util/stream/LongStream;" since="24"/> + <method name="longs(JJ)Ljava/util/stream/LongStream;" since="24"/> + <method name="longs(JJJ)Ljava/util/stream/LongStream;" since="24"/> + <method name="next(I)I"/> + <method name="nextBoolean()Z"/> + <method name="nextBytes([B)V"/> + <method name="nextDouble()D"/> + <method name="nextFloat()F"/> + <method name="nextGaussian()D"/> + <method name="nextInt()I"/> + <method name="nextInt(I)I"/> + <method name="nextLong()J"/> + <method name="setSeed(J)V"/> + </class> + <class name="java/util/RandomAccess" since="1"> + <extends name="java/lang/Object"/> + </class> + <class name="java/util/ResourceBundle" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="clearCache()V" since="9"/> + <method name="clearCache(Ljava/lang/ClassLoader;)V" since="9"/> + <method name="containsKey(Ljava/lang/String;)Z" since="9"/> + <method name="getBaseBundleName()Ljava/lang/String;" since="26"/> + <method name="getBundle(Ljava/lang/String;)Ljava/util/ResourceBundle;"/> + <method name="getBundle(Ljava/lang/String;Ljava/util/Locale;)Ljava/util/ResourceBundle;"/> + <method name="getBundle(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/ClassLoader;)Ljava/util/ResourceBundle;"/> + <method name="getBundle(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/ClassLoader;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;" since="9"/> + <method name="getBundle(Ljava/lang/String;Ljava/util/Locale;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;" since="9"/> + <method name="getBundle(Ljava/lang/String;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;" since="9"/> + <method name="getKeys()Ljava/util/Enumeration;"/> + <method name="getLocale()Ljava/util/Locale;"/> + <method name="getObject(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="getString(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getStringArray(Ljava/lang/String;)[Ljava/lang/String;"/> + <method name="handleGetObject(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="handleKeySet()Ljava/util/Set;" since="9"/> + <method name="keySet()Ljava/util/Set;" since="9"/> + <method name="setParent(Ljava/util/ResourceBundle;)V"/> + <field name="parent"/> + </class> + <class name="java/util/ResourceBundle$Control" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getCandidateLocales(Ljava/lang/String;Ljava/util/Locale;)Ljava/util/List;"/> + <method name="getControl(Ljava/util/List;)Ljava/util/ResourceBundle$Control;"/> + <method name="getFallbackLocale(Ljava/lang/String;Ljava/util/Locale;)Ljava/util/Locale;"/> + <method name="getFormats(Ljava/lang/String;)Ljava/util/List;"/> + <method name="getNoFallbackControl(Ljava/util/List;)Ljava/util/ResourceBundle$Control;"/> + <method name="getTimeToLive(Ljava/lang/String;Ljava/util/Locale;)J"/> + <method name="needsReload(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/util/ResourceBundle;J)Z"/> + <method name="newBundle(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/String;Ljava/lang/ClassLoader;Z)Ljava/util/ResourceBundle;"/> + <method name="toBundleName(Ljava/lang/String;Ljava/util/Locale;)Ljava/lang/String;"/> + <method name="toResourceName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <field name="FORMAT_CLASS"/> + <field name="FORMAT_DEFAULT"/> + <field name="FORMAT_PROPERTIES"/> + <field name="TTL_DONT_CACHE"/> + <field name="TTL_NO_EXPIRATION_CONTROL"/> + </class> + <class name="java/util/Scanner" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable" since="19"/> + <implements name="java/util/Iterator"/> + <method name="<init>(Ljava/io/File;)V"/> + <method name="<init>(Ljava/io/File;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/io/InputStream;)V"/> + <method name="<init>(Ljava/io/InputStream;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/Readable;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/nio/channels/ReadableByteChannel;)V"/> + <method name="<init>(Ljava/nio/channels/ReadableByteChannel;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/nio/file/Path;)V" since="26"/> + <method name="<init>(Ljava/nio/file/Path;Ljava/lang/String;)V" since="26"/> + <method name="close()V"/> + <method name="delimiter()Ljava/util/regex/Pattern;"/> + <method name="findInLine(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="findInLine(Ljava/util/regex/Pattern;)Ljava/lang/String;"/> + <method name="findWithinHorizon(Ljava/lang/String;I)Ljava/lang/String;"/> + <method name="findWithinHorizon(Ljava/util/regex/Pattern;I)Ljava/lang/String;"/> + <method name="hasNext(Ljava/lang/String;)Z"/> + <method name="hasNext(Ljava/util/regex/Pattern;)Z"/> + <method name="hasNextBigDecimal()Z"/> + <method name="hasNextBigInteger()Z"/> + <method name="hasNextBigInteger(I)Z"/> + <method name="hasNextBoolean()Z"/> + <method name="hasNextByte()Z"/> + <method name="hasNextByte(I)Z"/> + <method name="hasNextDouble()Z"/> + <method name="hasNextFloat()Z"/> + <method name="hasNextInt()Z"/> + <method name="hasNextInt(I)Z"/> + <method name="hasNextLine()Z"/> + <method name="hasNextLong()Z"/> + <method name="hasNextLong(I)Z"/> + <method name="hasNextShort()Z"/> + <method name="hasNextShort(I)Z"/> + <method name="ioException()Ljava/io/IOException;"/> + <method name="locale()Ljava/util/Locale;"/> + <method name="match()Ljava/util/regex/MatchResult;"/> + <method name="next()Ljava/lang/String;"/> + <method name="next(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="next(Ljava/util/regex/Pattern;)Ljava/lang/String;"/> + <method name="nextBigDecimal()Ljava/math/BigDecimal;"/> + <method name="nextBigInteger()Ljava/math/BigInteger;"/> + <method name="nextBigInteger(I)Ljava/math/BigInteger;"/> + <method name="nextBoolean()Z"/> + <method name="nextByte()B"/> + <method name="nextByte(I)B"/> + <method name="nextDouble()D"/> + <method name="nextFloat()F"/> + <method name="nextInt()I"/> + <method name="nextInt(I)I"/> + <method name="nextLine()Ljava/lang/String;"/> + <method name="nextLong()J"/> + <method name="nextLong(I)J"/> + <method name="nextShort()S"/> + <method name="nextShort(I)S"/> + <method name="radix()I"/> + <method name="reset()Ljava/util/Scanner;" since="9"/> + <method name="skip(Ljava/lang/String;)Ljava/util/Scanner;"/> + <method name="skip(Ljava/util/regex/Pattern;)Ljava/util/Scanner;"/> + <method name="useDelimiter(Ljava/lang/String;)Ljava/util/Scanner;"/> + <method name="useDelimiter(Ljava/util/regex/Pattern;)Ljava/util/Scanner;"/> + <method name="useLocale(Ljava/util/Locale;)Ljava/util/Scanner;"/> + <method name="useRadix(I)Ljava/util/Scanner;"/> + </class> + <class name="java/util/ServiceConfigurationError" since="9"> + <extends name="java/lang/Error"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + </class> + <class name="java/util/ServiceLoader" since="9"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Iterable"/> + <method name="<init>()V"/> + <method name="load(Ljava/lang/Class;)Ljava/util/ServiceLoader;"/> + <method name="load(Ljava/lang/Class;Ljava/lang/ClassLoader;)Ljava/util/ServiceLoader;"/> + <method name="loadInstalled(Ljava/lang/Class;)Ljava/util/ServiceLoader;"/> + <method name="reload()V"/> + </class> + <class name="java/util/Set" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/Collection"/> + </class> + <class name="java/util/SimpleTimeZone" since="1"> + <extends name="java/util/TimeZone"/> + <method name="<init>(ILjava/lang/String;)V"/> + <method name="<init>(ILjava/lang/String;IIIIIIII)V"/> + <method name="<init>(ILjava/lang/String;IIIIIIIII)V"/> + <method name="<init>(ILjava/lang/String;IIIIIIIIIII)V"/> + <method name="setDSTSavings(I)V"/> + <method name="setEndRule(III)V"/> + <method name="setEndRule(IIII)V"/> + <method name="setEndRule(IIIIZ)V"/> + <method name="setStartRule(III)V"/> + <method name="setStartRule(IIII)V"/> + <method name="setStartRule(IIIIZ)V"/> + <method name="setStartYear(I)V"/> + <field name="STANDARD_TIME"/> + <field name="UTC_TIME"/> + <field name="WALL_TIME"/> + </class> + <class name="java/util/SortedMap" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/Map"/> + <method name="comparator()Ljava/util/Comparator;"/> + <method name="firstKey()Ljava/lang/Object;"/> + <method name="headMap(Ljava/lang/Object;)Ljava/util/SortedMap;"/> + <method name="lastKey()Ljava/lang/Object;"/> + <method name="subMap(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/SortedMap;"/> + <method name="tailMap(Ljava/lang/Object;)Ljava/util/SortedMap;"/> + </class> + <class name="java/util/SortedSet" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/Set"/> + <method name="comparator()Ljava/util/Comparator;"/> + <method name="first()Ljava/lang/Object;"/> + <method name="headSet(Ljava/lang/Object;)Ljava/util/SortedSet;"/> + <method name="last()Ljava/lang/Object;"/> + <method name="subSet(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/SortedSet;"/> + <method name="tailSet(Ljava/lang/Object;)Ljava/util/SortedSet;"/> + </class> + <class name="java/util/Spliterator" since="24"> + <extends name="java/lang/Object"/> + <method name="characteristics()I"/> + <method name="estimateSize()J"/> + <method name="forEachRemaining(Ljava/util/function/Consumer;)V"/> + <method name="getComparator()Ljava/util/Comparator;"/> + <method name="getExactSizeIfKnown()J"/> + <method name="hasCharacteristics(I)Z"/> + <method name="tryAdvance(Ljava/util/function/Consumer;)Z"/> + <method name="trySplit()Ljava/util/Spliterator;"/> + <field name="CONCURRENT"/> + <field name="DISTINCT"/> + <field name="IMMUTABLE"/> + <field name="NONNULL"/> + <field name="ORDERED"/> + <field name="SIZED"/> + <field name="SORTED"/> + <field name="SUBSIZED"/> + </class> + <class name="java/util/Spliterator$OfDouble" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/util/Spliterator$OfPrimitive"/> + <method name="forEachRemaining(Ljava/util/function/DoubleConsumer;)V"/> + <method name="tryAdvance(Ljava/util/function/DoubleConsumer;)Z"/> + <method name="trySplit()Ljava/util/Spliterator$OfDouble;"/> + </class> + <class name="java/util/Spliterator$OfInt" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/util/Spliterator$OfPrimitive"/> + <method name="forEachRemaining(Ljava/util/function/IntConsumer;)V"/> + <method name="tryAdvance(Ljava/util/function/IntConsumer;)Z"/> + <method name="trySplit()Ljava/util/Spliterator$OfInt;"/> + </class> + <class name="java/util/Spliterator$OfLong" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/util/Spliterator$OfPrimitive"/> + <method name="forEachRemaining(Ljava/util/function/LongConsumer;)V"/> + <method name="tryAdvance(Ljava/util/function/LongConsumer;)Z"/> + <method name="trySplit()Ljava/util/Spliterator$OfLong;"/> + </class> + <class name="java/util/Spliterator$OfPrimitive" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/util/Spliterator"/> + <method name="forEachRemaining(Ljava/lang/Object;)V"/> + <method name="tryAdvance(Ljava/lang/Object;)Z"/> + <method name="trySplit()Ljava/util/Spliterator$OfPrimitive;"/> + </class> + <class name="java/util/Spliterators" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="emptyDoubleSpliterator()Ljava/util/Spliterator$OfDouble;"/> + <method name="emptyIntSpliterator()Ljava/util/Spliterator$OfInt;"/> + <method name="emptyLongSpliterator()Ljava/util/Spliterator$OfLong;"/> + <method name="emptySpliterator()Ljava/util/Spliterator;"/> + <method name="iterator(Ljava/util/Spliterator$OfDouble;)Ljava/util/PrimitiveIterator$OfDouble;"/> + <method name="iterator(Ljava/util/Spliterator$OfInt;)Ljava/util/PrimitiveIterator$OfInt;"/> + <method name="iterator(Ljava/util/Spliterator$OfLong;)Ljava/util/PrimitiveIterator$OfLong;"/> + <method name="iterator(Ljava/util/Spliterator;)Ljava/util/Iterator;"/> + <method name="spliterator(Ljava/util/Collection;I)Ljava/util/Spliterator;"/> + <method name="spliterator(Ljava/util/Iterator;JI)Ljava/util/Spliterator;"/> + <method name="spliterator(Ljava/util/PrimitiveIterator$OfDouble;JI)Ljava/util/Spliterator$OfDouble;"/> + <method name="spliterator(Ljava/util/PrimitiveIterator$OfInt;JI)Ljava/util/Spliterator$OfInt;"/> + <method name="spliterator(Ljava/util/PrimitiveIterator$OfLong;JI)Ljava/util/Spliterator$OfLong;"/> + <method name="spliterator([DI)Ljava/util/Spliterator$OfDouble;"/> + <method name="spliterator([DIII)Ljava/util/Spliterator$OfDouble;"/> + <method name="spliterator([II)Ljava/util/Spliterator$OfInt;"/> + <method name="spliterator([IIII)Ljava/util/Spliterator$OfInt;"/> + <method name="spliterator([JI)Ljava/util/Spliterator$OfLong;"/> + <method name="spliterator([JIII)Ljava/util/Spliterator$OfLong;"/> + <method name="spliterator([Ljava/lang/Object;I)Ljava/util/Spliterator;"/> + <method name="spliterator([Ljava/lang/Object;III)Ljava/util/Spliterator;"/> + <method name="spliteratorUnknownSize(Ljava/util/Iterator;I)Ljava/util/Spliterator;"/> + <method name="spliteratorUnknownSize(Ljava/util/PrimitiveIterator$OfDouble;I)Ljava/util/Spliterator$OfDouble;"/> + <method name="spliteratorUnknownSize(Ljava/util/PrimitiveIterator$OfInt;I)Ljava/util/Spliterator$OfInt;"/> + <method name="spliteratorUnknownSize(Ljava/util/PrimitiveIterator$OfLong;I)Ljava/util/Spliterator$OfLong;"/> + </class> + <class name="java/util/Spliterators$AbstractDoubleSpliterator" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/util/Spliterator$OfDouble"/> + <method name="<init>(JI)V"/> + </class> + <class name="java/util/Spliterators$AbstractIntSpliterator" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/util/Spliterator$OfInt"/> + <method name="<init>(JI)V"/> + </class> + <class name="java/util/Spliterators$AbstractLongSpliterator" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/util/Spliterator$OfLong"/> + <method name="<init>(JI)V"/> + </class> + <class name="java/util/Spliterators$AbstractSpliterator" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/util/Spliterator"/> + <method name="<init>(JI)V"/> + </class> + <class name="java/util/SplittableRandom" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(J)V"/> + <method name="doubles()Ljava/util/stream/DoubleStream;"/> + <method name="doubles(DD)Ljava/util/stream/DoubleStream;"/> + <method name="doubles(J)Ljava/util/stream/DoubleStream;"/> + <method name="doubles(JDD)Ljava/util/stream/DoubleStream;"/> + <method name="ints()Ljava/util/stream/IntStream;"/> + <method name="ints(II)Ljava/util/stream/IntStream;"/> + <method name="ints(J)Ljava/util/stream/IntStream;"/> + <method name="ints(JII)Ljava/util/stream/IntStream;"/> + <method name="longs()Ljava/util/stream/LongStream;"/> + <method name="longs(J)Ljava/util/stream/LongStream;"/> + <method name="longs(JJ)Ljava/util/stream/LongStream;"/> + <method name="longs(JJJ)Ljava/util/stream/LongStream;"/> + <method name="nextBoolean()Z"/> + <method name="nextDouble()D"/> + <method name="nextDouble(D)D"/> + <method name="nextDouble(DD)D"/> + <method name="nextInt()I"/> + <method name="nextInt(I)I"/> + <method name="nextInt(II)I"/> + <method name="nextLong()J"/> + <method name="nextLong(J)J"/> + <method name="nextLong(JJ)J"/> + <method name="split()Ljava/util/SplittableRandom;"/> + </class> + <class name="java/util/Stack" since="1"> + <extends name="java/util/Vector"/> + <method name="<init>()V"/> + <method name="empty()Z"/> + <method name="peek()Ljava/lang/Object;"/> + <method name="pop()Ljava/lang/Object;"/> + <method name="push(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="search(Ljava/lang/Object;)I"/> + </class> + <class name="java/util/StringJoiner" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/CharSequence;)V"/> + <method name="<init>(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V"/> + <method name="add(Ljava/lang/CharSequence;)Ljava/util/StringJoiner;"/> + <method name="length()I"/> + <method name="merge(Ljava/util/StringJoiner;)Ljava/util/StringJoiner;"/> + <method name="setEmptyValue(Ljava/lang/CharSequence;)Ljava/util/StringJoiner;"/> + </class> + <class name="java/util/StringTokenizer" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/Enumeration"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Z)V"/> + <method name="countTokens()I"/> + <method name="hasMoreTokens()Z"/> + <method name="nextToken()Ljava/lang/String;"/> + <method name="nextToken(Ljava/lang/String;)Ljava/lang/String;"/> + </class> + <class name="java/util/TimeZone" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="getAvailableIDs()[Ljava/lang/String;"/> + <method name="getAvailableIDs(I)[Ljava/lang/String;"/> + <method name="getDSTSavings()I"/> + <method name="getDefault()Ljava/util/TimeZone;"/> + <method name="getDisplayName()Ljava/lang/String;"/> + <method name="getDisplayName(Ljava/util/Locale;)Ljava/lang/String;"/> + <method name="getDisplayName(ZI)Ljava/lang/String;"/> + <method name="getDisplayName(ZILjava/util/Locale;)Ljava/lang/String;"/> + <method name="getID()Ljava/lang/String;"/> + <method name="getOffset(IIIIII)I"/> + <method name="getOffset(J)I"/> + <method name="getRawOffset()I"/> + <method name="getTimeZone(Ljava/lang/String;)Ljava/util/TimeZone;"/> + <method name="getTimeZone(Ljava/time/ZoneId;)Ljava/util/TimeZone;" since="26"/> + <method name="hasSameRules(Ljava/util/TimeZone;)Z"/> + <method name="inDaylightTime(Ljava/util/Date;)Z"/> + <method name="observesDaylightTime()Z" since="24"/> + <method name="setDefault(Ljava/util/TimeZone;)V"/> + <method name="setID(Ljava/lang/String;)V"/> + <method name="setRawOffset(I)V"/> + <method name="toZoneId()Ljava/time/ZoneId;" since="26"/> + <method name="useDaylightTime()Z"/> + <field name="LONG"/> + <field name="SHORT"/> + </class> + <class name="java/util/Timer" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Z)V"/> + <method name="<init>(Z)V"/> + <method name="cancel()V"/> + <method name="purge()I"/> + <method name="schedule(Ljava/util/TimerTask;J)V"/> + <method name="schedule(Ljava/util/TimerTask;JJ)V"/> + <method name="schedule(Ljava/util/TimerTask;Ljava/util/Date;)V"/> + <method name="schedule(Ljava/util/TimerTask;Ljava/util/Date;J)V"/> + <method name="scheduleAtFixedRate(Ljava/util/TimerTask;JJ)V"/> + <method name="scheduleAtFixedRate(Ljava/util/TimerTask;Ljava/util/Date;J)V"/> + </class> + <class name="java/util/TimerTask" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Runnable"/> + <method name="<init>()V"/> + <method name="cancel()Z"/> + <method name="scheduledExecutionTime()J"/> + </class> + <class name="java/util/TooManyListenersException" since="1"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/util/TreeMap" since="1"> + <extends name="java/util/AbstractMap"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <implements name="java/util/NavigableMap" since="9"/> + <implements name="java/util/SortedMap" removed="24"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/util/Comparator;)V"/> + <method name="<init>(Ljava/util/Map;)V"/> + <method name="<init>(Ljava/util/SortedMap;)V"/> + </class> + <class name="java/util/TreeSet" since="1"> + <extends name="java/util/AbstractSet"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <implements name="java/util/NavigableSet" since="9"/> + <implements name="java/util/SortedSet" removed="9"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/util/Collection;)V"/> + <method name="<init>(Ljava/util/Comparator;)V"/> + <method name="<init>(Ljava/util/SortedSet;)V"/> + </class> + <class name="java/util/UUID" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Comparable"/> + <method name="<init>(JJ)V"/> + <method name="clockSequence()I"/> + <method name="compareTo(Ljava/util/UUID;)I"/> + <method name="fromString(Ljava/lang/String;)Ljava/util/UUID;"/> + <method name="getLeastSignificantBits()J"/> + <method name="getMostSignificantBits()J"/> + <method name="nameUUIDFromBytes([B)Ljava/util/UUID;"/> + <method name="node()J"/> + <method name="randomUUID()Ljava/util/UUID;"/> + <method name="timestamp()J"/> + <method name="variant()I"/> + <method name="version()I"/> + </class> + <class name="java/util/UnknownFormatConversionException" since="1"> + <extends name="java/util/IllegalFormatException"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getConversion()Ljava/lang/String;"/> + </class> + <class name="java/util/UnknownFormatFlagsException" since="1"> + <extends name="java/util/IllegalFormatException"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getFlags()Ljava/lang/String;"/> + </class> + <class name="java/util/Vector" since="1"> + <extends name="java/util/AbstractList"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <implements name="java/util/RandomAccess"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(II)V"/> + <method name="<init>(Ljava/util/Collection;)V"/> + <method name="addElement(Ljava/lang/Object;)V"/> + <method name="capacity()I"/> + <method name="copyInto([Ljava/lang/Object;)V"/> + <method name="elementAt(I)Ljava/lang/Object;"/> + <method name="elements()Ljava/util/Enumeration;"/> + <method name="ensureCapacity(I)V"/> + <method name="firstElement()Ljava/lang/Object;"/> + <method name="indexOf(Ljava/lang/Object;I)I"/> + <method name="insertElementAt(Ljava/lang/Object;I)V"/> + <method name="lastElement()Ljava/lang/Object;"/> + <method name="lastIndexOf(Ljava/lang/Object;I)I"/> + <method name="removeAllElements()V"/> + <method name="removeElement(Ljava/lang/Object;)Z"/> + <method name="removeElementAt(I)V"/> + <method name="setElementAt(Ljava/lang/Object;I)V"/> + <method name="setSize(I)V"/> + <method name="trimToSize()V"/> + <field name="capacityIncrement"/> + <field name="elementCount"/> + <field name="elementData"/> + </class> + <class name="java/util/WeakHashMap" since="1"> + <extends name="java/util/AbstractMap"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(IF)V"/> + <method name="<init>(Ljava/util/Map;)V"/> + </class> + <class name="java/util/concurrent/AbstractExecutorService" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/concurrent/ExecutorService"/> + <method name="<init>()V"/> + <method name="newTaskFor(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/RunnableFuture;" since="9"/> + <method name="newTaskFor(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/RunnableFuture;" since="9"/> + </class> + <class name="java/util/concurrent/ArrayBlockingQueue" since="1"> + <extends name="java/util/AbstractQueue"/> + <implements name="java/io/Serializable"/> + <implements name="java/util/concurrent/BlockingQueue"/> + <method name="<init>(I)V"/> + <method name="<init>(IZ)V"/> + <method name="<init>(IZLjava/util/Collection;)V"/> + </class> + <class name="java/util/concurrent/BlockingDeque" since="9"> + <extends name="java/lang/Object"/> + <implements name="java/util/Deque"/> + <implements name="java/util/concurrent/BlockingQueue"/> + <method name="offerFirst(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Z"/> + <method name="offerLast(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Z"/> + <method name="pollFirst(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;"/> + <method name="pollLast(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;"/> + <method name="putFirst(Ljava/lang/Object;)V"/> + <method name="putLast(Ljava/lang/Object;)V"/> + <method name="takeFirst()Ljava/lang/Object;"/> + <method name="takeLast()Ljava/lang/Object;"/> + </class> + <class name="java/util/concurrent/BlockingQueue" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/Queue"/> + <method name="drainTo(Ljava/util/Collection;)I"/> + <method name="drainTo(Ljava/util/Collection;I)I"/> + <method name="offer(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Z"/> + <method name="poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;"/> + <method name="put(Ljava/lang/Object;)V"/> + <method name="remainingCapacity()I"/> + <method name="take()Ljava/lang/Object;"/> + </class> + <class name="java/util/concurrent/BrokenBarrierException" since="1"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/util/concurrent/Callable" since="1"> + <extends name="java/lang/Object"/> + <method name="call()Ljava/lang/Object;"/> + </class> + <class name="java/util/concurrent/CancellationException" since="1"> + <extends name="java/lang/IllegalStateException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/util/concurrent/CompletableFuture" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/util/concurrent/CompletionStage"/> + <implements name="java/util/concurrent/Future"/> + <method name="<init>()V"/> + <method name="acceptEither(Ljava/util/concurrent/CompletionStage;Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="acceptEitherAsync(Ljava/util/concurrent/CompletionStage;Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="acceptEitherAsync(Ljava/util/concurrent/CompletionStage;Ljava/util/function/Consumer;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="allOf([Ljava/util/concurrent/CompletableFuture;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="anyOf([Ljava/util/concurrent/CompletableFuture;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="applyToEither(Ljava/util/concurrent/CompletionStage;Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="applyToEitherAsync(Ljava/util/concurrent/CompletionStage;Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="applyToEitherAsync(Ljava/util/concurrent/CompletionStage;Ljava/util/function/Function;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="complete(Ljava/lang/Object;)Z"/> + <method name="completeExceptionally(Ljava/lang/Throwable;)Z"/> + <method name="completedFuture(Ljava/lang/Object;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="exceptionally(Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="getNow(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="getNumberOfDependents()I"/> + <method name="handle(Ljava/util/function/BiFunction;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="handleAsync(Ljava/util/function/BiFunction;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="handleAsync(Ljava/util/function/BiFunction;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="isCompletedExceptionally()Z"/> + <method name="join()Ljava/lang/Object;"/> + <method name="obtrudeException(Ljava/lang/Throwable;)V"/> + <method name="obtrudeValue(Ljava/lang/Object;)V"/> + <method name="runAfterBoth(Ljava/util/concurrent/CompletionStage;Ljava/lang/Runnable;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="runAfterBothAsync(Ljava/util/concurrent/CompletionStage;Ljava/lang/Runnable;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="runAfterBothAsync(Ljava/util/concurrent/CompletionStage;Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="runAfterEither(Ljava/util/concurrent/CompletionStage;Ljava/lang/Runnable;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="runAfterEitherAsync(Ljava/util/concurrent/CompletionStage;Ljava/lang/Runnable;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="runAfterEitherAsync(Ljava/util/concurrent/CompletionStage;Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="runAsync(Ljava/lang/Runnable;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="runAsync(Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="supplyAsync(Ljava/util/function/Supplier;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="supplyAsync(Ljava/util/function/Supplier;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="thenAccept(Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="thenAcceptAsync(Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="thenAcceptAsync(Ljava/util/function/Consumer;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="thenAcceptBoth(Ljava/util/concurrent/CompletionStage;Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="thenAcceptBothAsync(Ljava/util/concurrent/CompletionStage;Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="thenAcceptBothAsync(Ljava/util/concurrent/CompletionStage;Ljava/util/function/BiConsumer;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="thenApply(Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="thenApplyAsync(Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="thenApplyAsync(Ljava/util/function/Function;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="thenCombine(Ljava/util/concurrent/CompletionStage;Ljava/util/function/BiFunction;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="thenCombineAsync(Ljava/util/concurrent/CompletionStage;Ljava/util/function/BiFunction;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="thenCombineAsync(Ljava/util/concurrent/CompletionStage;Ljava/util/function/BiFunction;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="thenCompose(Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="thenComposeAsync(Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="thenComposeAsync(Ljava/util/function/Function;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="thenRun(Ljava/lang/Runnable;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="thenRunAsync(Ljava/lang/Runnable;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="thenRunAsync(Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="whenComplete(Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="whenCompleteAsync(Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletableFuture;"/> + <method name="whenCompleteAsync(Ljava/util/function/BiConsumer;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;"/> + </class> + <class name="java/util/concurrent/CompletableFuture$AsynchronousCompletionTask" since="24"> + <extends name="java/lang/Object"/> + </class> + <class name="java/util/concurrent/CompletionException" since="24"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/util/concurrent/CompletionService" since="1"> + <extends name="java/lang/Object"/> + <method name="poll()Ljava/util/concurrent/Future;"/> + <method name="poll(JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/Future;"/> + <method name="submit(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/Future;"/> + <method name="submit(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future;"/> + <method name="take()Ljava/util/concurrent/Future;"/> + </class> + <class name="java/util/concurrent/CompletionStage" since="24"> + <extends name="java/lang/Object"/> + <method name="acceptEither(Ljava/util/concurrent/CompletionStage;Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletionStage;"/> + <method name="acceptEitherAsync(Ljava/util/concurrent/CompletionStage;Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletionStage;"/> + <method name="acceptEitherAsync(Ljava/util/concurrent/CompletionStage;Ljava/util/function/Consumer;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletionStage;"/> + <method name="applyToEither(Ljava/util/concurrent/CompletionStage;Ljava/util/function/Function;)Ljava/util/concurrent/CompletionStage;"/> + <method name="applyToEitherAsync(Ljava/util/concurrent/CompletionStage;Ljava/util/function/Function;)Ljava/util/concurrent/CompletionStage;"/> + <method name="applyToEitherAsync(Ljava/util/concurrent/CompletionStage;Ljava/util/function/Function;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletionStage;"/> + <method name="exceptionally(Ljava/util/function/Function;)Ljava/util/concurrent/CompletionStage;"/> + <method name="handle(Ljava/util/function/BiFunction;)Ljava/util/concurrent/CompletionStage;"/> + <method name="handleAsync(Ljava/util/function/BiFunction;)Ljava/util/concurrent/CompletionStage;"/> + <method name="handleAsync(Ljava/util/function/BiFunction;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletionStage;"/> + <method name="runAfterBoth(Ljava/util/concurrent/CompletionStage;Ljava/lang/Runnable;)Ljava/util/concurrent/CompletionStage;"/> + <method name="runAfterBothAsync(Ljava/util/concurrent/CompletionStage;Ljava/lang/Runnable;)Ljava/util/concurrent/CompletionStage;"/> + <method name="runAfterBothAsync(Ljava/util/concurrent/CompletionStage;Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletionStage;"/> + <method name="runAfterEither(Ljava/util/concurrent/CompletionStage;Ljava/lang/Runnable;)Ljava/util/concurrent/CompletionStage;"/> + <method name="runAfterEitherAsync(Ljava/util/concurrent/CompletionStage;Ljava/lang/Runnable;)Ljava/util/concurrent/CompletionStage;"/> + <method name="runAfterEitherAsync(Ljava/util/concurrent/CompletionStage;Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletionStage;"/> + <method name="thenAccept(Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletionStage;"/> + <method name="thenAcceptAsync(Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletionStage;"/> + <method name="thenAcceptAsync(Ljava/util/function/Consumer;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletionStage;"/> + <method name="thenAcceptBoth(Ljava/util/concurrent/CompletionStage;Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletionStage;"/> + <method name="thenAcceptBothAsync(Ljava/util/concurrent/CompletionStage;Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletionStage;"/> + <method name="thenAcceptBothAsync(Ljava/util/concurrent/CompletionStage;Ljava/util/function/BiConsumer;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletionStage;"/> + <method name="thenApply(Ljava/util/function/Function;)Ljava/util/concurrent/CompletionStage;"/> + <method name="thenApplyAsync(Ljava/util/function/Function;)Ljava/util/concurrent/CompletionStage;"/> + <method name="thenApplyAsync(Ljava/util/function/Function;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletionStage;"/> + <method name="thenCombine(Ljava/util/concurrent/CompletionStage;Ljava/util/function/BiFunction;)Ljava/util/concurrent/CompletionStage;"/> + <method name="thenCombineAsync(Ljava/util/concurrent/CompletionStage;Ljava/util/function/BiFunction;)Ljava/util/concurrent/CompletionStage;"/> + <method name="thenCombineAsync(Ljava/util/concurrent/CompletionStage;Ljava/util/function/BiFunction;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletionStage;"/> + <method name="thenCompose(Ljava/util/function/Function;)Ljava/util/concurrent/CompletionStage;"/> + <method name="thenComposeAsync(Ljava/util/function/Function;)Ljava/util/concurrent/CompletionStage;"/> + <method name="thenComposeAsync(Ljava/util/function/Function;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletionStage;"/> + <method name="thenRun(Ljava/lang/Runnable;)Ljava/util/concurrent/CompletionStage;"/> + <method name="thenRunAsync(Ljava/lang/Runnable;)Ljava/util/concurrent/CompletionStage;"/> + <method name="thenRunAsync(Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletionStage;"/> + <method name="toCompletableFuture()Ljava/util/concurrent/CompletableFuture;"/> + <method name="whenComplete(Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletionStage;"/> + <method name="whenCompleteAsync(Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletionStage;"/> + <method name="whenCompleteAsync(Ljava/util/function/BiConsumer;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletionStage;"/> + </class> + <class name="java/util/concurrent/ConcurrentHashMap" since="1"> + <extends name="java/util/AbstractMap"/> + <implements name="java/io/Serializable"/> + <implements name="java/util/concurrent/ConcurrentMap"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(IF)V" since="9"/> + <method name="<init>(IFI)V"/> + <method name="<init>(Ljava/util/Map;)V"/> + <method name="contains(Ljava/lang/Object;)Z"/> + <method name="elements()Ljava/util/Enumeration;"/> + <method name="forEach(JLjava/util/function/BiConsumer;)V" since="24"/> + <method name="forEach(JLjava/util/function/BiFunction;Ljava/util/function/Consumer;)V" since="24"/> + <method name="forEachEntry(JLjava/util/function/Consumer;)V" since="24"/> + <method name="forEachEntry(JLjava/util/function/Function;Ljava/util/function/Consumer;)V" since="24"/> + <method name="forEachKey(JLjava/util/function/Consumer;)V" since="24"/> + <method name="forEachKey(JLjava/util/function/Function;Ljava/util/function/Consumer;)V" since="24"/> + <method name="forEachValue(JLjava/util/function/Consumer;)V" since="24"/> + <method name="forEachValue(JLjava/util/function/Function;Ljava/util/function/Consumer;)V" since="24"/> + <method name="keySet(Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$KeySetView;" since="24"/> + <method name="keys()Ljava/util/Enumeration;"/> + <method name="mappingCount()J" since="24"/> + <method name="newKeySet()Ljava/util/concurrent/ConcurrentHashMap$KeySetView;" since="24"/> + <method name="newKeySet(I)Ljava/util/concurrent/ConcurrentHashMap$KeySetView;" since="24"/> + <method name="reduce(JLjava/util/function/BiFunction;Ljava/util/function/BiFunction;)Ljava/lang/Object;" since="24"/> + <method name="reduceEntries(JLjava/util/function/BiFunction;)Ljava/util/Map$Entry;" since="24"/> + <method name="reduceEntries(JLjava/util/function/Function;Ljava/util/function/BiFunction;)Ljava/lang/Object;" since="24"/> + <method name="reduceEntriesToDouble(JLjava/util/function/ToDoubleFunction;DLjava/util/function/DoubleBinaryOperator;)D" since="24"/> + <method name="reduceEntriesToInt(JLjava/util/function/ToIntFunction;ILjava/util/function/IntBinaryOperator;)I" since="24"/> + <method name="reduceEntriesToLong(JLjava/util/function/ToLongFunction;JLjava/util/function/LongBinaryOperator;)J" since="24"/> + <method name="reduceKeys(JLjava/util/function/BiFunction;)Ljava/lang/Object;" since="24"/> + <method name="reduceKeys(JLjava/util/function/Function;Ljava/util/function/BiFunction;)Ljava/lang/Object;" since="24"/> + <method name="reduceKeysToDouble(JLjava/util/function/ToDoubleFunction;DLjava/util/function/DoubleBinaryOperator;)D" since="24"/> + <method name="reduceKeysToInt(JLjava/util/function/ToIntFunction;ILjava/util/function/IntBinaryOperator;)I" since="24"/> + <method name="reduceKeysToLong(JLjava/util/function/ToLongFunction;JLjava/util/function/LongBinaryOperator;)J" since="24"/> + <method name="reduceToDouble(JLjava/util/function/ToDoubleBiFunction;DLjava/util/function/DoubleBinaryOperator;)D" since="24"/> + <method name="reduceToInt(JLjava/util/function/ToIntBiFunction;ILjava/util/function/IntBinaryOperator;)I" since="24"/> + <method name="reduceToLong(JLjava/util/function/ToLongBiFunction;JLjava/util/function/LongBinaryOperator;)J" since="24"/> + <method name="reduceValues(JLjava/util/function/BiFunction;)Ljava/lang/Object;" since="24"/> + <method name="reduceValues(JLjava/util/function/Function;Ljava/util/function/BiFunction;)Ljava/lang/Object;" since="24"/> + <method name="reduceValuesToDouble(JLjava/util/function/ToDoubleFunction;DLjava/util/function/DoubleBinaryOperator;)D" since="24"/> + <method name="reduceValuesToInt(JLjava/util/function/ToIntFunction;ILjava/util/function/IntBinaryOperator;)I" since="24"/> + <method name="reduceValuesToLong(JLjava/util/function/ToLongFunction;JLjava/util/function/LongBinaryOperator;)J" since="24"/> + <method name="search(JLjava/util/function/BiFunction;)Ljava/lang/Object;" since="24"/> + <method name="searchEntries(JLjava/util/function/Function;)Ljava/lang/Object;" since="24"/> + <method name="searchKeys(JLjava/util/function/Function;)Ljava/lang/Object;" since="24"/> + <method name="searchValues(JLjava/util/function/Function;)Ljava/lang/Object;" since="24"/> + </class> + <class name="java/util/concurrent/ConcurrentHashMap$CollectionView" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/util/Collection"/> + <method name="<init>()V"/> + <method name="getMap()Ljava/util/concurrent/ConcurrentHashMap;"/> + </class> + <class name="java/util/concurrent/ConcurrentHashMap$KeySetView" since="24"> + <extends name="java/util/concurrent/ConcurrentHashMap$CollectionView"/> + <implements name="java/util/Set"/> + <method name="<init>()V"/> + <method name="getMappedValue()Ljava/lang/Object;"/> + </class> + <class name="java/util/concurrent/ConcurrentLinkedDeque" since="21"> + <extends name="java/util/AbstractCollection"/> + <implements name="java/io/Serializable"/> + <implements name="java/util/Deque"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/util/Collection;)V"/> + </class> + <class name="java/util/concurrent/ConcurrentLinkedQueue" since="1"> + <extends name="java/util/AbstractQueue"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/util/Collection;)V"/> + </class> + <class name="java/util/concurrent/ConcurrentMap" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/Map"/> + <method name="putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="remove(Ljava/lang/Object;Ljava/lang/Object;)Z"/> + <method name="replace(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="replace(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z"/> + </class> + <class name="java/util/concurrent/ConcurrentNavigableMap" since="9"> + <extends name="java/lang/Object"/> + <implements name="java/util/NavigableMap"/> + <implements name="java/util/concurrent/ConcurrentMap"/> + <method name="descendingMap()Ljava/util/concurrent/ConcurrentNavigableMap;"/> + <method name="headMap(Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentNavigableMap;"/> + <method name="headMap(Ljava/lang/Object;Z)Ljava/util/concurrent/ConcurrentNavigableMap;"/> + <method name="keySet()Ljava/util/NavigableSet;"/> + <method name="subMap(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentNavigableMap;"/> + <method name="subMap(Ljava/lang/Object;ZLjava/lang/Object;Z)Ljava/util/concurrent/ConcurrentNavigableMap;"/> + <method name="tailMap(Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentNavigableMap;"/> + <method name="tailMap(Ljava/lang/Object;Z)Ljava/util/concurrent/ConcurrentNavigableMap;"/> + </class> + <class name="java/util/concurrent/ConcurrentSkipListMap" since="9"> + <extends name="java/util/AbstractMap"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <implements name="java/util/concurrent/ConcurrentNavigableMap"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/util/Comparator;)V"/> + <method name="<init>(Ljava/util/Map;)V"/> + <method name="<init>(Ljava/util/SortedMap;)V"/> + <method name="clone()Ljava/util/concurrent/ConcurrentSkipListMap;"/> + </class> + <class name="java/util/concurrent/ConcurrentSkipListSet" since="9"> + <extends name="java/util/AbstractSet"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <implements name="java/util/NavigableSet"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/util/Collection;)V"/> + <method name="<init>(Ljava/util/Comparator;)V"/> + <method name="<init>(Ljava/util/SortedSet;)V"/> + <method name="clone()Ljava/util/concurrent/ConcurrentSkipListSet;"/> + <method name="headSet(Ljava/lang/Object;)Ljava/util/NavigableSet;"/> + <method name="subSet(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/NavigableSet;"/> + <method name="tailSet(Ljava/lang/Object;)Ljava/util/NavigableSet;"/> + </class> + <class name="java/util/concurrent/CopyOnWriteArrayList" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <implements name="java/util/List"/> + <implements name="java/util/RandomAccess"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/util/Collection;)V"/> + <method name="<init>([Ljava/lang/Object;)V"/> + <method name="addAllAbsent(Ljava/util/Collection;)I"/> + <method name="addIfAbsent(Ljava/lang/Object;)Z"/> + <method name="indexOf(Ljava/lang/Object;I)I"/> + <method name="lastIndexOf(Ljava/lang/Object;I)I"/> + </class> + <class name="java/util/concurrent/CopyOnWriteArraySet" since="1"> + <extends name="java/util/AbstractSet"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/util/Collection;)V"/> + </class> + <class name="java/util/concurrent/CountDownLatch" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(I)V"/> + <method name="await()V"/> + <method name="await(JLjava/util/concurrent/TimeUnit;)Z"/> + <method name="countDown()V"/> + <method name="getCount()J"/> + </class> + <class name="java/util/concurrent/CountedCompleter" since="24"> + <extends name="java/util/concurrent/ForkJoinTask"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/util/concurrent/CountedCompleter;)V"/> + <method name="<init>(Ljava/util/concurrent/CountedCompleter;I)V"/> + <method name="addToPendingCount(I)V"/> + <method name="compareAndSetPendingCount(II)Z"/> + <method name="compute()V"/> + <method name="decrementPendingCountUnlessZero()I"/> + <method name="firstComplete()Ljava/util/concurrent/CountedCompleter;"/> + <method name="getCompleter()Ljava/util/concurrent/CountedCompleter;"/> + <method name="getPendingCount()I"/> + <method name="getRoot()Ljava/util/concurrent/CountedCompleter;"/> + <method name="helpComplete(I)V"/> + <method name="nextComplete()Ljava/util/concurrent/CountedCompleter;"/> + <method name="onCompletion(Ljava/util/concurrent/CountedCompleter;)V"/> + <method name="onExceptionalCompletion(Ljava/lang/Throwable;Ljava/util/concurrent/CountedCompleter;)Z"/> + <method name="propagateCompletion()V"/> + <method name="quietlyCompleteRoot()V"/> + <method name="setPendingCount(I)V"/> + <method name="tryComplete()V"/> + </class> + <class name="java/util/concurrent/CyclicBarrier" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(I)V"/> + <method name="<init>(ILjava/lang/Runnable;)V"/> + <method name="await()I"/> + <method name="await(JLjava/util/concurrent/TimeUnit;)I"/> + <method name="getNumberWaiting()I"/> + <method name="getParties()I"/> + <method name="isBroken()Z"/> + <method name="reset()V"/> + </class> + <class name="java/util/concurrent/DelayQueue" since="1"> + <extends name="java/util/AbstractQueue"/> + <implements name="java/util/concurrent/BlockingQueue"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/util/Collection;)V"/> + <method name="add(Ljava/util/concurrent/Delayed;)Z"/> + <method name="offer(Ljava/util/concurrent/Delayed;)Z"/> + <method name="offer(Ljava/util/concurrent/Delayed;JLjava/util/concurrent/TimeUnit;)Z"/> + <method name="peek()Ljava/util/concurrent/Delayed;"/> + <method name="poll()Ljava/util/concurrent/Delayed;"/> + <method name="poll(JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/Delayed;"/> + <method name="put(Ljava/util/concurrent/Delayed;)V"/> + <method name="take()Ljava/util/concurrent/Delayed;"/> + </class> + <class name="java/util/concurrent/Delayed" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Comparable"/> + <method name="getDelay(Ljava/util/concurrent/TimeUnit;)J"/> + </class> + <class name="java/util/concurrent/Exchanger" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="exchange(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="exchange(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;"/> + </class> + <class name="java/util/concurrent/ExecutionException" since="1"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/util/concurrent/Executor" since="1"> + <extends name="java/lang/Object"/> + <method name="execute(Ljava/lang/Runnable;)V"/> + </class> + <class name="java/util/concurrent/ExecutorCompletionService" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/concurrent/CompletionService"/> + <method name="<init>(Ljava/util/concurrent/Executor;)V"/> + <method name="<init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/BlockingQueue;)V"/> + </class> + <class name="java/util/concurrent/ExecutorService" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/concurrent/Executor"/> + <method name="awaitTermination(JLjava/util/concurrent/TimeUnit;)Z"/> + <method name="invokeAll(Ljava/util/Collection;)Ljava/util/List;"/> + <method name="invokeAll(Ljava/util/Collection;JLjava/util/concurrent/TimeUnit;)Ljava/util/List;"/> + <method name="invokeAny(Ljava/util/Collection;)Ljava/lang/Object;"/> + <method name="invokeAny(Ljava/util/Collection;JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;"/> + <method name="isShutdown()Z"/> + <method name="isTerminated()Z"/> + <method name="shutdown()V"/> + <method name="shutdownNow()Ljava/util/List;"/> + <method name="submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future;"/> + <method name="submit(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/Future;"/> + <method name="submit(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future;"/> + </class> + <class name="java/util/concurrent/Executors" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="callable(Ljava/lang/Runnable;)Ljava/util/concurrent/Callable;"/> + <method name="callable(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/Callable;"/> + <method name="callable(Ljava/security/PrivilegedAction;)Ljava/util/concurrent/Callable;"/> + <method name="callable(Ljava/security/PrivilegedExceptionAction;)Ljava/util/concurrent/Callable;"/> + <method name="defaultThreadFactory()Ljava/util/concurrent/ThreadFactory;"/> + <method name="newCachedThreadPool()Ljava/util/concurrent/ExecutorService;"/> + <method name="newCachedThreadPool(Ljava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ExecutorService;"/> + <method name="newFixedThreadPool(I)Ljava/util/concurrent/ExecutorService;"/> + <method name="newFixedThreadPool(ILjava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ExecutorService;"/> + <method name="newScheduledThreadPool(I)Ljava/util/concurrent/ScheduledExecutorService;"/> + <method name="newScheduledThreadPool(ILjava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ScheduledExecutorService;"/> + <method name="newSingleThreadExecutor()Ljava/util/concurrent/ExecutorService;"/> + <method name="newSingleThreadExecutor(Ljava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ExecutorService;"/> + <method name="newSingleThreadScheduledExecutor()Ljava/util/concurrent/ScheduledExecutorService;"/> + <method name="newSingleThreadScheduledExecutor(Ljava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ScheduledExecutorService;"/> + <method name="newWorkStealingPool()Ljava/util/concurrent/ExecutorService;" since="24"/> + <method name="newWorkStealingPool(I)Ljava/util/concurrent/ExecutorService;" since="24"/> + <method name="privilegedCallable(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Callable;"/> + <method name="privilegedCallableUsingCurrentClassLoader(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Callable;"/> + <method name="privilegedThreadFactory()Ljava/util/concurrent/ThreadFactory;"/> + <method name="unconfigurableExecutorService(Ljava/util/concurrent/ExecutorService;)Ljava/util/concurrent/ExecutorService;"/> + <method name="unconfigurableScheduledExecutorService(Ljava/util/concurrent/ScheduledExecutorService;)Ljava/util/concurrent/ScheduledExecutorService;"/> + </class> + <class name="java/util/concurrent/ForkJoinPool" since="21"> + <extends name="java/util/concurrent/AbstractExecutorService"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(ILjava/util/concurrent/ForkJoinPool$ForkJoinWorkerThreadFactory;Ljava/lang/Thread$UncaughtExceptionHandler;Z)V"/> + <method name="awaitQuiescence(JLjava/util/concurrent/TimeUnit;)Z"/> + <method name="commonPool()Ljava/util/concurrent/ForkJoinPool;" since="24"/> + <method name="drainTasksTo(Ljava/util/Collection;)I"/> + <method name="execute(Ljava/util/concurrent/ForkJoinTask;)V"/> + <method name="getActiveThreadCount()I"/> + <method name="getAsyncMode()Z"/> + <method name="getCommonPoolParallelism()I" since="24"/> + <method name="getFactory()Ljava/util/concurrent/ForkJoinPool$ForkJoinWorkerThreadFactory;"/> + <method name="getParallelism()I"/> + <method name="getPoolSize()I"/> + <method name="getQueuedSubmissionCount()I"/> + <method name="getQueuedTaskCount()J"/> + <method name="getRunningThreadCount()I"/> + <method name="getStealCount()J"/> + <method name="getUncaughtExceptionHandler()Ljava/lang/Thread$UncaughtExceptionHandler;"/> + <method name="hasQueuedSubmissions()Z"/> + <method name="invoke(Ljava/util/concurrent/ForkJoinTask;)Ljava/lang/Object;"/> + <method name="isQuiescent()Z"/> + <method name="isTerminating()Z"/> + <method name="managedBlock(Ljava/util/concurrent/ForkJoinPool$ManagedBlocker;)V"/> + <method name="pollSubmission()Ljava/util/concurrent/ForkJoinTask;"/> + <method name="submit(Ljava/lang/Runnable;)Ljava/util/concurrent/ForkJoinTask;"/> + <method name="submit(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/ForkJoinTask;"/> + <method name="submit(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/ForkJoinTask;"/> + <method name="submit(Ljava/util/concurrent/ForkJoinTask;)Ljava/util/concurrent/ForkJoinTask;"/> + <field name="defaultForkJoinWorkerThreadFactory"/> + </class> + <class name="java/util/concurrent/ForkJoinPool$ForkJoinWorkerThreadFactory" since="21"> + <extends name="java/lang/Object"/> + <method name="newThread(Ljava/util/concurrent/ForkJoinPool;)Ljava/util/concurrent/ForkJoinWorkerThread;"/> + </class> + <class name="java/util/concurrent/ForkJoinPool$ManagedBlocker" since="21"> + <extends name="java/lang/Object"/> + <method name="block()Z"/> + <method name="isReleasable()Z"/> + </class> + <class name="java/util/concurrent/ForkJoinTask" since="21"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/util/concurrent/Future"/> + <method name="<init>()V"/> + <method name="adapt(Ljava/lang/Runnable;)Ljava/util/concurrent/ForkJoinTask;"/> + <method name="adapt(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/ForkJoinTask;"/> + <method name="adapt(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/ForkJoinTask;"/> + <method name="compareAndSetForkJoinTaskTag(SS)Z" since="24"/> + <method name="complete(Ljava/lang/Object;)V"/> + <method name="completeExceptionally(Ljava/lang/Throwable;)V"/> + <method name="exec()Z"/> + <method name="fork()Ljava/util/concurrent/ForkJoinTask;"/> + <method name="getException()Ljava/lang/Throwable;"/> + <method name="getForkJoinTaskTag()S" since="24"/> + <method name="getPool()Ljava/util/concurrent/ForkJoinPool;"/> + <method name="getQueuedTaskCount()I"/> + <method name="getRawResult()Ljava/lang/Object;"/> + <method name="getSurplusQueuedTaskCount()I"/> + <method name="helpQuiesce()V"/> + <method name="inForkJoinPool()Z"/> + <method name="invoke()Ljava/lang/Object;"/> + <method name="invokeAll(Ljava/util/Collection;)Ljava/util/Collection;"/> + <method name="invokeAll(Ljava/util/concurrent/ForkJoinTask;Ljava/util/concurrent/ForkJoinTask;)V"/> + <method name="invokeAll([Ljava/util/concurrent/ForkJoinTask;)V"/> + <method name="isCompletedAbnormally()Z"/> + <method name="isCompletedNormally()Z"/> + <method name="join()Ljava/lang/Object;"/> + <method name="peekNextLocalTask()Ljava/util/concurrent/ForkJoinTask;"/> + <method name="pollNextLocalTask()Ljava/util/concurrent/ForkJoinTask;"/> + <method name="pollTask()Ljava/util/concurrent/ForkJoinTask;"/> + <method name="quietlyComplete()V" since="24"/> + <method name="quietlyInvoke()V"/> + <method name="quietlyJoin()V"/> + <method name="reinitialize()V"/> + <method name="setForkJoinTaskTag(S)S" since="24"/> + <method name="setRawResult(Ljava/lang/Object;)V"/> + <method name="tryUnfork()Z"/> + </class> + <class name="java/util/concurrent/ForkJoinWorkerThread" since="21"> + <extends name="java/lang/Thread"/> + <method name="<init>(Ljava/util/concurrent/ForkJoinPool;)V"/> + <method name="getPool()Ljava/util/concurrent/ForkJoinPool;"/> + <method name="getPoolIndex()I"/> + <method name="onStart()V"/> + <method name="onTermination(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/util/concurrent/Future" since="1"> + <extends name="java/lang/Object"/> + <method name="cancel(Z)Z"/> + <method name="get()Ljava/lang/Object;"/> + <method name="get(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;"/> + <method name="isCancelled()Z"/> + <method name="isDone()Z"/> + </class> + <class name="java/util/concurrent/FutureTask" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Runnable" removed="9"/> + <implements name="java/util/concurrent/Future" removed="9"/> + <implements name="java/util/concurrent/RunnableFuture" since="9"/> + <method name="<init>(Ljava/lang/Runnable;Ljava/lang/Object;)V"/> + <method name="<init>(Ljava/util/concurrent/Callable;)V"/> + <method name="done()V"/> + <method name="runAndReset()Z"/> + <method name="set(Ljava/lang/Object;)V"/> + <method name="setException(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/util/concurrent/LinkedBlockingDeque" since="9"> + <extends name="java/util/AbstractQueue"/> + <implements name="java/io/Serializable"/> + <implements name="java/util/concurrent/BlockingDeque"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(Ljava/util/Collection;)V"/> + </class> + <class name="java/util/concurrent/LinkedBlockingQueue" since="1"> + <extends name="java/util/AbstractQueue"/> + <implements name="java/io/Serializable"/> + <implements name="java/util/concurrent/BlockingQueue"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(Ljava/util/Collection;)V"/> + </class> + <class name="java/util/concurrent/LinkedTransferQueue" since="21"> + <extends name="java/util/AbstractQueue"/> + <implements name="java/io/Serializable"/> + <implements name="java/util/concurrent/TransferQueue"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/util/Collection;)V"/> + </class> + <class name="java/util/concurrent/Phaser" since="21"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(Ljava/util/concurrent/Phaser;)V"/> + <method name="<init>(Ljava/util/concurrent/Phaser;I)V"/> + <method name="arrive()I"/> + <method name="arriveAndAwaitAdvance()I"/> + <method name="arriveAndDeregister()I"/> + <method name="awaitAdvance(I)I"/> + <method name="awaitAdvanceInterruptibly(I)I"/> + <method name="awaitAdvanceInterruptibly(IJLjava/util/concurrent/TimeUnit;)I"/> + <method name="bulkRegister(I)I"/> + <method name="forceTermination()V"/> + <method name="getArrivedParties()I"/> + <method name="getParent()Ljava/util/concurrent/Phaser;"/> + <method name="getPhase()I"/> + <method name="getRegisteredParties()I"/> + <method name="getRoot()Ljava/util/concurrent/Phaser;"/> + <method name="getUnarrivedParties()I"/> + <method name="isTerminated()Z"/> + <method name="onAdvance(II)Z"/> + <method name="register()I"/> + </class> + <class name="java/util/concurrent/PriorityBlockingQueue" since="1"> + <extends name="java/util/AbstractQueue"/> + <implements name="java/io/Serializable"/> + <implements name="java/util/concurrent/BlockingQueue"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(ILjava/util/Comparator;)V"/> + <method name="<init>(Ljava/util/Collection;)V"/> + <method name="comparator()Ljava/util/Comparator;"/> + </class> + <class name="java/util/concurrent/RecursiveAction" since="21"> + <extends name="java/util/concurrent/ForkJoinTask"/> + <method name="<init>()V"/> + <method name="compute()V"/> + <method name="getRawResult()Ljava/lang/Void;"/> + <method name="setRawResult(Ljava/lang/Void;)V"/> + </class> + <class name="java/util/concurrent/RecursiveTask" since="21"> + <extends name="java/util/concurrent/ForkJoinTask"/> + <method name="<init>()V"/> + <method name="compute()Ljava/lang/Object;"/> + </class> + <class name="java/util/concurrent/RejectedExecutionException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/util/concurrent/RejectedExecutionHandler" since="1"> + <extends name="java/lang/Object"/> + <method name="rejectedExecution(Ljava/lang/Runnable;Ljava/util/concurrent/ThreadPoolExecutor;)V"/> + </class> + <class name="java/util/concurrent/RunnableFuture" since="9"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Runnable"/> + <implements name="java/util/concurrent/Future"/> + </class> + <class name="java/util/concurrent/RunnableScheduledFuture" since="9"> + <extends name="java/lang/Object"/> + <implements name="java/util/concurrent/RunnableFuture"/> + <implements name="java/util/concurrent/ScheduledFuture"/> + <method name="isPeriodic()Z"/> + </class> + <class name="java/util/concurrent/ScheduledExecutorService" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/concurrent/ExecutorService"/> + <method name="schedule(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;"/> + <method name="schedule(Ljava/util/concurrent/Callable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;"/> + <method name="scheduleAtFixedRate(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;"/> + <method name="scheduleWithFixedDelay(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;"/> + </class> + <class name="java/util/concurrent/ScheduledFuture" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/concurrent/Delayed"/> + <implements name="java/util/concurrent/Future"/> + </class> + <class name="java/util/concurrent/ScheduledThreadPoolExecutor" since="1"> + <extends name="java/util/concurrent/ThreadPoolExecutor"/> + <implements name="java/util/concurrent/ScheduledExecutorService"/> + <method name="<init>(I)V"/> + <method name="<init>(ILjava/util/concurrent/RejectedExecutionHandler;)V"/> + <method name="<init>(ILjava/util/concurrent/ThreadFactory;)V"/> + <method name="<init>(ILjava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)V"/> + <method name="decorateTask(Ljava/lang/Runnable;Ljava/util/concurrent/RunnableScheduledFuture;)Ljava/util/concurrent/RunnableScheduledFuture;" since="9"/> + <method name="decorateTask(Ljava/util/concurrent/Callable;Ljava/util/concurrent/RunnableScheduledFuture;)Ljava/util/concurrent/RunnableScheduledFuture;" since="9"/> + <method name="getContinueExistingPeriodicTasksAfterShutdownPolicy()Z"/> + <method name="getExecuteExistingDelayedTasksAfterShutdownPolicy()Z"/> + <method name="getRemoveOnCancelPolicy()Z" since="21"/> + <method name="setContinueExistingPeriodicTasksAfterShutdownPolicy(Z)V"/> + <method name="setExecuteExistingDelayedTasksAfterShutdownPolicy(Z)V"/> + <method name="setRemoveOnCancelPolicy(Z)V" since="21"/> + </class> + <class name="java/util/concurrent/Semaphore" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(I)V"/> + <method name="<init>(IZ)V"/> + <method name="acquire()V"/> + <method name="acquire(I)V"/> + <method name="acquireUninterruptibly()V"/> + <method name="acquireUninterruptibly(I)V"/> + <method name="availablePermits()I"/> + <method name="drainPermits()I"/> + <method name="getQueueLength()I"/> + <method name="getQueuedThreads()Ljava/util/Collection;"/> + <method name="hasQueuedThreads()Z"/> + <method name="isFair()Z"/> + <method name="reducePermits(I)V"/> + <method name="release()V"/> + <method name="release(I)V"/> + <method name="tryAcquire()Z"/> + <method name="tryAcquire(I)Z"/> + <method name="tryAcquire(IJLjava/util/concurrent/TimeUnit;)Z"/> + <method name="tryAcquire(JLjava/util/concurrent/TimeUnit;)Z"/> + </class> + <class name="java/util/concurrent/SynchronousQueue" since="1"> + <extends name="java/util/AbstractQueue"/> + <implements name="java/io/Serializable"/> + <implements name="java/util/concurrent/BlockingQueue"/> + <method name="<init>()V"/> + <method name="<init>(Z)V"/> + </class> + <class name="java/util/concurrent/ThreadFactory" since="1"> + <extends name="java/lang/Object"/> + <method name="newThread(Ljava/lang/Runnable;)Ljava/lang/Thread;"/> + </class> + <class name="java/util/concurrent/ThreadLocalRandom" since="21"> + <extends name="java/util/Random"/> + <method name="<init>()V"/> + <method name="current()Ljava/util/concurrent/ThreadLocalRandom;"/> + <method name="nextDouble(D)D"/> + <method name="nextDouble(DD)D"/> + <method name="nextInt(II)I"/> + <method name="nextLong(J)J"/> + <method name="nextLong(JJ)J"/> + </class> + <class name="java/util/concurrent/ThreadPoolExecutor" since="1"> + <extends name="java/util/concurrent/AbstractExecutorService"/> + <method name="<init>(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;)V"/> + <method name="<init>(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/RejectedExecutionHandler;)V"/> + <method name="<init>(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;)V"/> + <method name="<init>(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)V"/> + <method name="afterExecute(Ljava/lang/Runnable;Ljava/lang/Throwable;)V"/> + <method name="allowCoreThreadTimeOut(Z)V" since="9"/> + <method name="allowsCoreThreadTimeOut()Z" since="9"/> + <method name="beforeExecute(Ljava/lang/Thread;Ljava/lang/Runnable;)V"/> + <method name="getActiveCount()I"/> + <method name="getCompletedTaskCount()J"/> + <method name="getCorePoolSize()I"/> + <method name="getKeepAliveTime(Ljava/util/concurrent/TimeUnit;)J"/> + <method name="getLargestPoolSize()I"/> + <method name="getMaximumPoolSize()I"/> + <method name="getPoolSize()I"/> + <method name="getQueue()Ljava/util/concurrent/BlockingQueue;"/> + <method name="getRejectedExecutionHandler()Ljava/util/concurrent/RejectedExecutionHandler;"/> + <method name="getTaskCount()J"/> + <method name="getThreadFactory()Ljava/util/concurrent/ThreadFactory;"/> + <method name="isTerminating()Z"/> + <method name="prestartAllCoreThreads()I"/> + <method name="prestartCoreThread()Z"/> + <method name="purge()V"/> + <method name="remove(Ljava/lang/Runnable;)Z"/> + <method name="setCorePoolSize(I)V"/> + <method name="setKeepAliveTime(JLjava/util/concurrent/TimeUnit;)V"/> + <method name="setMaximumPoolSize(I)V"/> + <method name="setRejectedExecutionHandler(Ljava/util/concurrent/RejectedExecutionHandler;)V"/> + <method name="setThreadFactory(Ljava/util/concurrent/ThreadFactory;)V"/> + <method name="terminated()V"/> + </class> + <class name="java/util/concurrent/ThreadPoolExecutor$AbortPolicy" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/concurrent/RejectedExecutionHandler"/> + <method name="<init>()V"/> + </class> + <class name="java/util/concurrent/ThreadPoolExecutor$CallerRunsPolicy" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/concurrent/RejectedExecutionHandler"/> + <method name="<init>()V"/> + </class> + <class name="java/util/concurrent/ThreadPoolExecutor$DiscardOldestPolicy" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/concurrent/RejectedExecutionHandler"/> + <method name="<init>()V"/> + </class> + <class name="java/util/concurrent/ThreadPoolExecutor$DiscardPolicy" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/concurrent/RejectedExecutionHandler"/> + <method name="<init>()V"/> + </class> + <class name="java/util/concurrent/TimeUnit" since="1"> + <extends name="java/lang/Enum"/> + <method name="convert(JLjava/util/concurrent/TimeUnit;)J"/> + <method name="sleep(J)V"/> + <method name="timedJoin(Ljava/lang/Thread;J)V"/> + <method name="timedWait(Ljava/lang/Object;J)V"/> + <method name="toDays(J)J" since="9"/> + <method name="toHours(J)J" since="9"/> + <method name="toMicros(J)J"/> + <method name="toMillis(J)J"/> + <method name="toMinutes(J)J" since="9"/> + <method name="toNanos(J)J"/> + <method name="toSeconds(J)J"/> + <method name="valueOf(Ljava/lang/String;)Ljava/util/concurrent/TimeUnit;"/> + <method name="values()[Ljava/util/concurrent/TimeUnit;"/> + <field name="DAYS" since="9"/> + <field name="HOURS" since="9"/> + <field name="MICROSECONDS"/> + <field name="MILLISECONDS"/> + <field name="MINUTES" since="9"/> + <field name="NANOSECONDS"/> + <field name="SECONDS"/> + </class> + <class name="java/util/concurrent/TimeoutException" since="1"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/util/concurrent/TransferQueue" since="21"> + <extends name="java/lang/Object"/> + <implements name="java/util/concurrent/BlockingQueue"/> + <method name="getWaitingConsumerCount()I"/> + <method name="hasWaitingConsumer()Z"/> + <method name="transfer(Ljava/lang/Object;)V"/> + <method name="tryTransfer(Ljava/lang/Object;)Z"/> + <method name="tryTransfer(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Z"/> + </class> + <class name="java/util/concurrent/atomic/AtomicBoolean" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="<init>(Z)V"/> + <method name="compareAndSet(ZZ)Z"/> + <method name="get()Z"/> + <method name="getAndSet(Z)Z"/> + <method name="lazySet(Z)V" since="9"/> + <method name="set(Z)V"/> + <method name="weakCompareAndSet(ZZ)Z"/> + </class> + <class name="java/util/concurrent/atomic/AtomicInteger" since="1"> + <extends name="java/lang/Number"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="accumulateAndGet(ILjava/util/function/IntBinaryOperator;)I" since="24"/> + <method name="addAndGet(I)I"/> + <method name="compareAndSet(II)Z"/> + <method name="decrementAndGet()I"/> + <method name="get()I"/> + <method name="getAndAccumulate(ILjava/util/function/IntBinaryOperator;)I" since="24"/> + <method name="getAndAdd(I)I"/> + <method name="getAndDecrement()I"/> + <method name="getAndIncrement()I"/> + <method name="getAndSet(I)I"/> + <method name="getAndUpdate(Ljava/util/function/IntUnaryOperator;)I" since="24"/> + <method name="incrementAndGet()I"/> + <method name="lazySet(I)V" since="9"/> + <method name="set(I)V"/> + <method name="updateAndGet(Ljava/util/function/IntUnaryOperator;)I" since="24"/> + <method name="weakCompareAndSet(II)Z"/> + </class> + <class name="java/util/concurrent/atomic/AtomicIntegerArray" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(I)V"/> + <method name="<init>([I)V"/> + <method name="accumulateAndGet(IILjava/util/function/IntBinaryOperator;)I" since="24"/> + <method name="addAndGet(II)I"/> + <method name="compareAndSet(III)Z"/> + <method name="decrementAndGet(I)I"/> + <method name="get(I)I"/> + <method name="getAndAccumulate(IILjava/util/function/IntBinaryOperator;)I" since="24"/> + <method name="getAndAdd(II)I"/> + <method name="getAndDecrement(I)I"/> + <method name="getAndIncrement(I)I"/> + <method name="getAndSet(II)I"/> + <method name="getAndUpdate(ILjava/util/function/IntUnaryOperator;)I" since="24"/> + <method name="incrementAndGet(I)I"/> + <method name="lazySet(II)V" since="9"/> + <method name="length()I"/> + <method name="set(II)V"/> + <method name="updateAndGet(ILjava/util/function/IntUnaryOperator;)I" since="24"/> + <method name="weakCompareAndSet(III)Z"/> + </class> + <class name="java/util/concurrent/atomic/AtomicIntegerFieldUpdater" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="accumulateAndGet(Ljava/lang/Object;ILjava/util/function/IntBinaryOperator;)I" since="24"/> + <method name="addAndGet(Ljava/lang/Object;I)I"/> + <method name="compareAndSet(Ljava/lang/Object;II)Z"/> + <method name="decrementAndGet(Ljava/lang/Object;)I"/> + <method name="get(Ljava/lang/Object;)I"/> + <method name="getAndAccumulate(Ljava/lang/Object;ILjava/util/function/IntBinaryOperator;)I" since="24"/> + <method name="getAndAdd(Ljava/lang/Object;I)I"/> + <method name="getAndDecrement(Ljava/lang/Object;)I"/> + <method name="getAndIncrement(Ljava/lang/Object;)I"/> + <method name="getAndSet(Ljava/lang/Object;I)I"/> + <method name="getAndUpdate(Ljava/lang/Object;Ljava/util/function/IntUnaryOperator;)I" since="24"/> + <method name="incrementAndGet(Ljava/lang/Object;)I"/> + <method name="lazySet(Ljava/lang/Object;I)V" since="9"/> + <method name="newUpdater(Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;"/> + <method name="set(Ljava/lang/Object;I)V"/> + <method name="updateAndGet(Ljava/lang/Object;Ljava/util/function/IntUnaryOperator;)I" since="24"/> + <method name="weakCompareAndSet(Ljava/lang/Object;II)Z"/> + </class> + <class name="java/util/concurrent/atomic/AtomicLong" since="1"> + <extends name="java/lang/Number"/> + <method name="<init>()V"/> + <method name="<init>(J)V"/> + <method name="accumulateAndGet(JLjava/util/function/LongBinaryOperator;)J" since="24"/> + <method name="addAndGet(J)J"/> + <method name="compareAndSet(JJ)Z"/> + <method name="decrementAndGet()J"/> + <method name="get()J"/> + <method name="getAndAccumulate(JLjava/util/function/LongBinaryOperator;)J" since="24"/> + <method name="getAndAdd(J)J"/> + <method name="getAndDecrement()J"/> + <method name="getAndIncrement()J"/> + <method name="getAndSet(J)J"/> + <method name="getAndUpdate(Ljava/util/function/LongUnaryOperator;)J" since="24"/> + <method name="incrementAndGet()J"/> + <method name="lazySet(J)V" since="9"/> + <method name="set(J)V"/> + <method name="updateAndGet(Ljava/util/function/LongUnaryOperator;)J" since="24"/> + <method name="weakCompareAndSet(JJ)Z"/> + </class> + <class name="java/util/concurrent/atomic/AtomicLongArray" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(I)V"/> + <method name="<init>([J)V"/> + <method name="accumulateAndGet(IJLjava/util/function/LongBinaryOperator;)J" since="24"/> + <method name="addAndGet(IJ)J"/> + <method name="compareAndSet(IJJ)Z"/> + <method name="decrementAndGet(I)J"/> + <method name="get(I)J"/> + <method name="getAndAccumulate(IJLjava/util/function/LongBinaryOperator;)J" since="24"/> + <method name="getAndAdd(IJ)J"/> + <method name="getAndDecrement(I)J"/> + <method name="getAndIncrement(I)J"/> + <method name="getAndSet(IJ)J"/> + <method name="getAndUpdate(ILjava/util/function/LongUnaryOperator;)J" since="24"/> + <method name="incrementAndGet(I)J"/> + <method name="lazySet(IJ)V" since="9"/> + <method name="length()I"/> + <method name="set(IJ)V"/> + <method name="updateAndGet(ILjava/util/function/LongUnaryOperator;)J" since="24"/> + <method name="weakCompareAndSet(IJJ)Z"/> + </class> + <class name="java/util/concurrent/atomic/AtomicLongFieldUpdater" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="accumulateAndGet(Ljava/lang/Object;JLjava/util/function/LongBinaryOperator;)J" since="24"/> + <method name="addAndGet(Ljava/lang/Object;J)J"/> + <method name="compareAndSet(Ljava/lang/Object;JJ)Z"/> + <method name="decrementAndGet(Ljava/lang/Object;)J"/> + <method name="get(Ljava/lang/Object;)J"/> + <method name="getAndAccumulate(Ljava/lang/Object;JLjava/util/function/LongBinaryOperator;)J" since="24"/> + <method name="getAndAdd(Ljava/lang/Object;J)J"/> + <method name="getAndDecrement(Ljava/lang/Object;)J"/> + <method name="getAndIncrement(Ljava/lang/Object;)J"/> + <method name="getAndSet(Ljava/lang/Object;J)J"/> + <method name="getAndUpdate(Ljava/lang/Object;Ljava/util/function/LongUnaryOperator;)J" since="24"/> + <method name="incrementAndGet(Ljava/lang/Object;)J"/> + <method name="lazySet(Ljava/lang/Object;J)V" since="9"/> + <method name="newUpdater(Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicLongFieldUpdater;"/> + <method name="set(Ljava/lang/Object;J)V"/> + <method name="updateAndGet(Ljava/lang/Object;Ljava/util/function/LongUnaryOperator;)J" since="24"/> + <method name="weakCompareAndSet(Ljava/lang/Object;JJ)Z"/> + </class> + <class name="java/util/concurrent/atomic/AtomicMarkableReference" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/Object;Z)V"/> + <method name="attemptMark(Ljava/lang/Object;Z)Z"/> + <method name="compareAndSet(Ljava/lang/Object;Ljava/lang/Object;ZZ)Z"/> + <method name="get([Z)Ljava/lang/Object;"/> + <method name="getReference()Ljava/lang/Object;"/> + <method name="isMarked()Z"/> + <method name="set(Ljava/lang/Object;Z)V"/> + <method name="weakCompareAndSet(Ljava/lang/Object;Ljava/lang/Object;ZZ)Z"/> + </class> + <class name="java/util/concurrent/atomic/AtomicReference" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/Object;)V"/> + <method name="accumulateAndGet(Ljava/lang/Object;Ljava/util/function/BinaryOperator;)Ljava/lang/Object;" since="24"/> + <method name="compareAndSet(Ljava/lang/Object;Ljava/lang/Object;)Z"/> + <method name="get()Ljava/lang/Object;"/> + <method name="getAndAccumulate(Ljava/lang/Object;Ljava/util/function/BinaryOperator;)Ljava/lang/Object;" since="24"/> + <method name="getAndSet(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="getAndUpdate(Ljava/util/function/UnaryOperator;)Ljava/lang/Object;" since="24"/> + <method name="lazySet(Ljava/lang/Object;)V" since="9"/> + <method name="set(Ljava/lang/Object;)V"/> + <method name="updateAndGet(Ljava/util/function/UnaryOperator;)Ljava/lang/Object;" since="24"/> + <method name="weakCompareAndSet(Ljava/lang/Object;Ljava/lang/Object;)Z"/> + </class> + <class name="java/util/concurrent/atomic/AtomicReferenceArray" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(I)V"/> + <method name="<init>([Ljava/lang/Object;)V"/> + <method name="accumulateAndGet(ILjava/lang/Object;Ljava/util/function/BinaryOperator;)Ljava/lang/Object;" since="24"/> + <method name="compareAndSet(ILjava/lang/Object;Ljava/lang/Object;)Z"/> + <method name="get(I)Ljava/lang/Object;"/> + <method name="getAndAccumulate(ILjava/lang/Object;Ljava/util/function/BinaryOperator;)Ljava/lang/Object;" since="24"/> + <method name="getAndSet(ILjava/lang/Object;)Ljava/lang/Object;"/> + <method name="getAndUpdate(ILjava/util/function/UnaryOperator;)Ljava/lang/Object;" since="24"/> + <method name="lazySet(ILjava/lang/Object;)V" since="9"/> + <method name="length()I"/> + <method name="set(ILjava/lang/Object;)V"/> + <method name="updateAndGet(ILjava/util/function/UnaryOperator;)Ljava/lang/Object;" since="24"/> + <method name="weakCompareAndSet(ILjava/lang/Object;Ljava/lang/Object;)Z"/> + </class> + <class name="java/util/concurrent/atomic/AtomicReferenceFieldUpdater" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="accumulateAndGet(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/function/BinaryOperator;)Ljava/lang/Object;" since="24"/> + <method name="compareAndSet(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z"/> + <method name="get(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="getAndAccumulate(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/function/BinaryOperator;)Ljava/lang/Object;" since="24"/> + <method name="getAndSet(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="getAndUpdate(Ljava/lang/Object;Ljava/util/function/UnaryOperator;)Ljava/lang/Object;" since="24"/> + <method name="lazySet(Ljava/lang/Object;Ljava/lang/Object;)V" since="9"/> + <method name="newUpdater(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;"/> + <method name="set(Ljava/lang/Object;Ljava/lang/Object;)V"/> + <method name="updateAndGet(Ljava/lang/Object;Ljava/util/function/UnaryOperator;)Ljava/lang/Object;" since="24"/> + <method name="weakCompareAndSet(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z"/> + </class> + <class name="java/util/concurrent/atomic/AtomicStampedReference" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/Object;I)V"/> + <method name="attemptStamp(Ljava/lang/Object;I)Z"/> + <method name="compareAndSet(Ljava/lang/Object;Ljava/lang/Object;II)Z"/> + <method name="get([I)Ljava/lang/Object;"/> + <method name="getReference()Ljava/lang/Object;"/> + <method name="getStamp()I"/> + <method name="set(Ljava/lang/Object;I)V"/> + <method name="weakCompareAndSet(Ljava/lang/Object;Ljava/lang/Object;II)Z"/> + </class> + <class name="java/util/concurrent/atomic/DoubleAccumulator" since="24"> + <extends name="java/util/concurrent/atomic/Striped64"/> + <method name="<init>(Ljava/util/function/DoubleBinaryOperator;D)V"/> + <method name="accumulate(D)V"/> + <method name="get()D"/> + <method name="getThenReset()D"/> + <method name="reset()V"/> + </class> + <class name="java/util/concurrent/atomic/DoubleAdder" since="24"> + <extends name="java/util/concurrent/atomic/Striped64"/> + <method name="<init>()V"/> + <method name="add(D)V"/> + <method name="reset()V"/> + <method name="sum()D"/> + <method name="sumThenReset()D"/> + </class> + <class name="java/util/concurrent/atomic/LongAccumulator" since="24"> + <extends name="java/util/concurrent/atomic/Striped64"/> + <method name="<init>(Ljava/util/function/LongBinaryOperator;J)V"/> + <method name="accumulate(J)V"/> + <method name="get()J"/> + <method name="getThenReset()J"/> + <method name="reset()V"/> + </class> + <class name="java/util/concurrent/atomic/LongAdder" since="24"> + <extends name="java/util/concurrent/atomic/Striped64"/> + <method name="<init>()V"/> + <method name="add(J)V"/> + <method name="decrement()V"/> + <method name="increment()V"/> + <method name="reset()V"/> + <method name="sum()J"/> + <method name="sumThenReset()J"/> + </class> + <class name="java/util/concurrent/atomic/Striped64" since="24"> + <extends name="java/lang/Number"/> + <method name="<init>()V"/> + </class> + <class name="java/util/concurrent/locks/AbstractOwnableSynchronizer" since="5"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="getExclusiveOwnerThread()Ljava/lang/Thread;"/> + <method name="setExclusiveOwnerThread(Ljava/lang/Thread;)V"/> + </class> + <class name="java/util/concurrent/locks/AbstractQueuedLongSynchronizer" since="9"> + <extends name="java/util/concurrent/locks/AbstractOwnableSynchronizer"/> + <method name="<init>()V"/> + <method name="acquire(J)V"/> + <method name="acquireInterruptibly(J)V"/> + <method name="acquireShared(J)V"/> + <method name="acquireSharedInterruptibly(J)V"/> + <method name="compareAndSetState(JJ)Z"/> + <method name="getExclusiveQueuedThreads()Ljava/util/Collection;"/> + <method name="getFirstQueuedThread()Ljava/lang/Thread;"/> + <method name="getQueueLength()I"/> + <method name="getQueuedThreads()Ljava/util/Collection;"/> + <method name="getSharedQueuedThreads()Ljava/util/Collection;"/> + <method name="getState()J"/> + <method name="getWaitQueueLength(Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;)I"/> + <method name="getWaitingThreads(Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;)Ljava/util/Collection;"/> + <method name="hasContended()Z"/> + <method name="hasQueuedPredecessors()Z" since="21"/> + <method name="hasQueuedThreads()Z"/> + <method name="hasWaiters(Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;)Z"/> + <method name="isHeldExclusively()Z"/> + <method name="isQueued(Ljava/lang/Thread;)Z"/> + <method name="owns(Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;)Z"/> + <method name="release(J)Z"/> + <method name="releaseShared(J)Z"/> + <method name="setState(J)V"/> + <method name="tryAcquire(J)Z"/> + <method name="tryAcquireNanos(JJ)Z"/> + <method name="tryAcquireShared(J)J"/> + <method name="tryAcquireSharedNanos(JJ)Z"/> + <method name="tryRelease(J)Z"/> + <method name="tryReleaseShared(J)Z"/> + </class> + <class name="java/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject" since="9"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/util/concurrent/locks/Condition"/> + <method name="<init>(Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;)V"/> + <method name="getWaitQueueLength()I"/> + <method name="getWaitingThreads()Ljava/util/Collection;"/> + <method name="hasWaiters()Z"/> + </class> + <class name="java/util/concurrent/locks/AbstractQueuedSynchronizer" since="1"> + <extends name="java/lang/Object" removed="5"/> + <extends name="java/util/concurrent/locks/AbstractOwnableSynchronizer" since="5"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="acquire(I)V"/> + <method name="acquireInterruptibly(I)V"/> + <method name="acquireShared(I)V"/> + <method name="acquireSharedInterruptibly(I)V"/> + <method name="compareAndSetState(II)Z"/> + <method name="getExclusiveQueuedThreads()Ljava/util/Collection;"/> + <method name="getFirstQueuedThread()Ljava/lang/Thread;"/> + <method name="getQueueLength()I"/> + <method name="getQueuedThreads()Ljava/util/Collection;"/> + <method name="getSharedQueuedThreads()Ljava/util/Collection;"/> + <method name="getState()I"/> + <method name="getWaitQueueLength(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)I"/> + <method name="getWaitingThreads(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)Ljava/util/Collection;"/> + <method name="hasContended()Z"/> + <method name="hasQueuedPredecessors()Z" since="21"/> + <method name="hasQueuedThreads()Z"/> + <method name="hasWaiters(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)Z"/> + <method name="isHeldExclusively()Z"/> + <method name="isQueued(Ljava/lang/Thread;)Z"/> + <method name="owns(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)Z"/> + <method name="release(I)Z"/> + <method name="releaseShared(I)Z"/> + <method name="setState(I)V"/> + <method name="tryAcquire(I)Z"/> + <method name="tryAcquireNanos(IJ)Z"/> + <method name="tryAcquireShared(I)I"/> + <method name="tryAcquireSharedNanos(IJ)Z"/> + <method name="tryRelease(I)Z"/> + <method name="tryReleaseShared(I)Z"/> + </class> + <class name="java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/util/concurrent/locks/Condition"/> + <method name="<init>(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;)V"/> + <method name="getWaitQueueLength()I"/> + <method name="getWaitingThreads()Ljava/util/Collection;"/> + <method name="hasWaiters()Z"/> + </class> + <class name="java/util/concurrent/locks/Condition" since="1"> + <extends name="java/lang/Object"/> + <method name="await()V"/> + <method name="await(JLjava/util/concurrent/TimeUnit;)Z"/> + <method name="awaitNanos(J)J"/> + <method name="awaitUninterruptibly()V"/> + <method name="awaitUntil(Ljava/util/Date;)Z"/> + <method name="signal()V"/> + <method name="signalAll()V"/> + </class> + <class name="java/util/concurrent/locks/Lock" since="1"> + <extends name="java/lang/Object"/> + <method name="lock()V"/> + <method name="lockInterruptibly()V"/> + <method name="newCondition()Ljava/util/concurrent/locks/Condition;"/> + <method name="tryLock()Z"/> + <method name="tryLock(JLjava/util/concurrent/TimeUnit;)Z"/> + <method name="unlock()V"/> + </class> + <class name="java/util/concurrent/locks/LockSupport" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getBlocker(Ljava/lang/Thread;)Ljava/lang/Object;" since="9"/> + <method name="park()V"/> + <method name="park(Ljava/lang/Object;)V" since="9"/> + <method name="parkNanos(J)V"/> + <method name="parkNanos(Ljava/lang/Object;J)V" since="9"/> + <method name="parkUntil(J)V"/> + <method name="parkUntil(Ljava/lang/Object;J)V" since="9"/> + <method name="unpark(Ljava/lang/Thread;)V"/> + </class> + <class name="java/util/concurrent/locks/ReadWriteLock" since="1"> + <extends name="java/lang/Object"/> + <method name="readLock()Ljava/util/concurrent/locks/Lock;"/> + <method name="writeLock()Ljava/util/concurrent/locks/Lock;"/> + </class> + <class name="java/util/concurrent/locks/ReentrantLock" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/util/concurrent/locks/Lock"/> + <method name="<init>()V"/> + <method name="<init>(Z)V"/> + <method name="getHoldCount()I"/> + <method name="getOwner()Ljava/lang/Thread;"/> + <method name="getQueueLength()I"/> + <method name="getQueuedThreads()Ljava/util/Collection;"/> + <method name="getWaitQueueLength(Ljava/util/concurrent/locks/Condition;)I"/> + <method name="getWaitingThreads(Ljava/util/concurrent/locks/Condition;)Ljava/util/Collection;"/> + <method name="hasQueuedThread(Ljava/lang/Thread;)Z"/> + <method name="hasQueuedThreads()Z"/> + <method name="hasWaiters(Ljava/util/concurrent/locks/Condition;)Z"/> + <method name="isFair()Z"/> + <method name="isHeldByCurrentThread()Z"/> + <method name="isLocked()Z"/> + </class> + <class name="java/util/concurrent/locks/ReentrantReadWriteLock" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/util/concurrent/locks/ReadWriteLock"/> + <method name="<init>()V"/> + <method name="<init>(Z)V"/> + <method name="getOwner()Ljava/lang/Thread;"/> + <method name="getQueueLength()I"/> + <method name="getQueuedReaderThreads()Ljava/util/Collection;"/> + <method name="getQueuedThreads()Ljava/util/Collection;"/> + <method name="getQueuedWriterThreads()Ljava/util/Collection;"/> + <method name="getReadHoldCount()I" since="9"/> + <method name="getReadLockCount()I"/> + <method name="getWaitQueueLength(Ljava/util/concurrent/locks/Condition;)I"/> + <method name="getWaitingThreads(Ljava/util/concurrent/locks/Condition;)Ljava/util/Collection;"/> + <method name="getWriteHoldCount()I"/> + <method name="hasQueuedThread(Ljava/lang/Thread;)Z"/> + <method name="hasQueuedThreads()Z"/> + <method name="hasWaiters(Ljava/util/concurrent/locks/Condition;)Z"/> + <method name="isFair()Z"/> + <method name="isWriteLocked()Z"/> + <method name="isWriteLockedByCurrentThread()Z"/> + <method name="readLock()Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;"/> + <method name="writeLock()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;"/> + </class> + <class name="java/util/concurrent/locks/ReentrantReadWriteLock$ReadLock" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/util/concurrent/locks/Lock"/> + <method name="<init>(Ljava/util/concurrent/locks/ReentrantReadWriteLock;)V"/> + </class> + <class name="java/util/concurrent/locks/ReentrantReadWriteLock$WriteLock" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/util/concurrent/locks/Lock"/> + <method name="<init>(Ljava/util/concurrent/locks/ReentrantReadWriteLock;)V"/> + <method name="getHoldCount()I" since="9"/> + <method name="isHeldByCurrentThread()Z" since="9"/> + </class> + <class name="java/util/concurrent/locks/StampedLock" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="asReadLock()Ljava/util/concurrent/locks/Lock;"/> + <method name="asReadWriteLock()Ljava/util/concurrent/locks/ReadWriteLock;"/> + <method name="asWriteLock()Ljava/util/concurrent/locks/Lock;"/> + <method name="getReadLockCount()I"/> + <method name="isReadLocked()Z"/> + <method name="isWriteLocked()Z"/> + <method name="readLock()J"/> + <method name="readLockInterruptibly()J"/> + <method name="tryConvertToOptimisticRead(J)J"/> + <method name="tryConvertToReadLock(J)J"/> + <method name="tryConvertToWriteLock(J)J"/> + <method name="tryOptimisticRead()J"/> + <method name="tryReadLock()J"/> + <method name="tryReadLock(JLjava/util/concurrent/TimeUnit;)J"/> + <method name="tryUnlockRead()Z"/> + <method name="tryUnlockWrite()Z"/> + <method name="tryWriteLock()J"/> + <method name="tryWriteLock(JLjava/util/concurrent/TimeUnit;)J"/> + <method name="unlock(J)V"/> + <method name="unlockRead(J)V"/> + <method name="unlockWrite(J)V"/> + <method name="validate(J)Z"/> + <method name="writeLock()J"/> + <method name="writeLockInterruptibly()J"/> + </class> + <class name="java/util/function/BiConsumer" since="24"> + <extends name="java/lang/Object"/> + <method name="accept(Ljava/lang/Object;Ljava/lang/Object;)V"/> + <method name="andThen(Ljava/util/function/BiConsumer;)Ljava/util/function/BiConsumer;"/> + </class> + <class name="java/util/function/BiFunction" since="24"> + <extends name="java/lang/Object"/> + <method name="andThen(Ljava/util/function/Function;)Ljava/util/function/BiFunction;"/> + <method name="apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"/> + </class> + <class name="java/util/function/BiPredicate" since="24"> + <extends name="java/lang/Object"/> + <method name="and(Ljava/util/function/BiPredicate;)Ljava/util/function/BiPredicate;"/> + <method name="negate()Ljava/util/function/BiPredicate;"/> + <method name="or(Ljava/util/function/BiPredicate;)Ljava/util/function/BiPredicate;"/> + <method name="test(Ljava/lang/Object;Ljava/lang/Object;)Z"/> + </class> + <class name="java/util/function/BinaryOperator" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/util/function/BiFunction"/> + <method name="maxBy(Ljava/util/Comparator;)Ljava/util/function/BinaryOperator;"/> + <method name="minBy(Ljava/util/Comparator;)Ljava/util/function/BinaryOperator;"/> + </class> + <class name="java/util/function/BooleanSupplier" since="24"> + <extends name="java/lang/Object"/> + <method name="getAsBoolean()Z"/> + </class> + <class name="java/util/function/Consumer" since="24"> + <extends name="java/lang/Object"/> + <method name="accept(Ljava/lang/Object;)V"/> + <method name="andThen(Ljava/util/function/Consumer;)Ljava/util/function/Consumer;"/> + </class> + <class name="java/util/function/DoubleBinaryOperator" since="24"> + <extends name="java/lang/Object"/> + <method name="applyAsDouble(DD)D"/> + </class> + <class name="java/util/function/DoubleConsumer" since="24"> + <extends name="java/lang/Object"/> + <method name="accept(D)V"/> + <method name="andThen(Ljava/util/function/DoubleConsumer;)Ljava/util/function/DoubleConsumer;"/> + </class> + <class name="java/util/function/DoubleFunction" since="24"> + <extends name="java/lang/Object"/> + <method name="apply(D)Ljava/lang/Object;"/> + </class> + <class name="java/util/function/DoublePredicate" since="24"> + <extends name="java/lang/Object"/> + <method name="and(Ljava/util/function/DoublePredicate;)Ljava/util/function/DoublePredicate;"/> + <method name="negate()Ljava/util/function/DoublePredicate;"/> + <method name="or(Ljava/util/function/DoublePredicate;)Ljava/util/function/DoublePredicate;"/> + <method name="test(D)Z"/> + </class> + <class name="java/util/function/DoubleSupplier" since="24"> + <extends name="java/lang/Object"/> + <method name="getAsDouble()D"/> + </class> + <class name="java/util/function/DoubleToIntFunction" since="24"> + <extends name="java/lang/Object"/> + <method name="applyAsInt(D)I"/> + </class> + <class name="java/util/function/DoubleToLongFunction" since="24"> + <extends name="java/lang/Object"/> + <method name="applyAsLong(D)J"/> + </class> + <class name="java/util/function/DoubleUnaryOperator" since="24"> + <extends name="java/lang/Object"/> + <method name="andThen(Ljava/util/function/DoubleUnaryOperator;)Ljava/util/function/DoubleUnaryOperator;"/> + <method name="applyAsDouble(D)D"/> + <method name="compose(Ljava/util/function/DoubleUnaryOperator;)Ljava/util/function/DoubleUnaryOperator;"/> + <method name="identity()Ljava/util/function/DoubleUnaryOperator;"/> + </class> + <class name="java/util/function/Function" since="24"> + <extends name="java/lang/Object"/> + <method name="andThen(Ljava/util/function/Function;)Ljava/util/function/Function;"/> + <method name="apply(Ljava/lang/Object;)Ljava/lang/Object;"/> + <method name="compose(Ljava/util/function/Function;)Ljava/util/function/Function;"/> + <method name="identity()Ljava/util/function/Function;"/> + </class> + <class name="java/util/function/IntBinaryOperator" since="24"> + <extends name="java/lang/Object"/> + <method name="applyAsInt(II)I"/> + </class> + <class name="java/util/function/IntConsumer" since="24"> + <extends name="java/lang/Object"/> + <method name="accept(I)V"/> + <method name="andThen(Ljava/util/function/IntConsumer;)Ljava/util/function/IntConsumer;"/> + </class> + <class name="java/util/function/IntFunction" since="24"> + <extends name="java/lang/Object"/> + <method name="apply(I)Ljava/lang/Object;"/> + </class> + <class name="java/util/function/IntPredicate" since="24"> + <extends name="java/lang/Object"/> + <method name="and(Ljava/util/function/IntPredicate;)Ljava/util/function/IntPredicate;"/> + <method name="negate()Ljava/util/function/IntPredicate;"/> + <method name="or(Ljava/util/function/IntPredicate;)Ljava/util/function/IntPredicate;"/> + <method name="test(I)Z"/> + </class> + <class name="java/util/function/IntSupplier" since="24"> + <extends name="java/lang/Object"/> + <method name="getAsInt()I"/> + </class> + <class name="java/util/function/IntToDoubleFunction" since="24"> + <extends name="java/lang/Object"/> + <method name="applyAsDouble(I)D"/> + </class> + <class name="java/util/function/IntToLongFunction" since="24"> + <extends name="java/lang/Object"/> + <method name="applyAsLong(I)J"/> + </class> + <class name="java/util/function/IntUnaryOperator" since="24"> + <extends name="java/lang/Object"/> + <method name="andThen(Ljava/util/function/IntUnaryOperator;)Ljava/util/function/IntUnaryOperator;"/> + <method name="applyAsInt(I)I"/> + <method name="compose(Ljava/util/function/IntUnaryOperator;)Ljava/util/function/IntUnaryOperator;"/> + <method name="identity()Ljava/util/function/IntUnaryOperator;"/> + </class> + <class name="java/util/function/LongBinaryOperator" since="24"> + <extends name="java/lang/Object"/> + <method name="applyAsLong(JJ)J"/> + </class> + <class name="java/util/function/LongConsumer" since="24"> + <extends name="java/lang/Object"/> + <method name="accept(J)V"/> + <method name="andThen(Ljava/util/function/LongConsumer;)Ljava/util/function/LongConsumer;"/> + </class> + <class name="java/util/function/LongFunction" since="24"> + <extends name="java/lang/Object"/> + <method name="apply(J)Ljava/lang/Object;"/> + </class> + <class name="java/util/function/LongPredicate" since="24"> + <extends name="java/lang/Object"/> + <method name="and(Ljava/util/function/LongPredicate;)Ljava/util/function/LongPredicate;"/> + <method name="negate()Ljava/util/function/LongPredicate;"/> + <method name="or(Ljava/util/function/LongPredicate;)Ljava/util/function/LongPredicate;"/> + <method name="test(J)Z"/> + </class> + <class name="java/util/function/LongSupplier" since="24"> + <extends name="java/lang/Object"/> + <method name="getAsLong()J"/> + </class> + <class name="java/util/function/LongToDoubleFunction" since="24"> + <extends name="java/lang/Object"/> + <method name="applyAsDouble(J)D"/> + </class> + <class name="java/util/function/LongToIntFunction" since="24"> + <extends name="java/lang/Object"/> + <method name="applyAsInt(J)I"/> + </class> + <class name="java/util/function/LongUnaryOperator" since="24"> + <extends name="java/lang/Object"/> + <method name="andThen(Ljava/util/function/LongUnaryOperator;)Ljava/util/function/LongUnaryOperator;"/> + <method name="applyAsLong(J)J"/> + <method name="compose(Ljava/util/function/LongUnaryOperator;)Ljava/util/function/LongUnaryOperator;"/> + <method name="identity()Ljava/util/function/LongUnaryOperator;"/> + </class> + <class name="java/util/function/ObjDoubleConsumer" since="24"> + <extends name="java/lang/Object"/> + <method name="accept(Ljava/lang/Object;D)V"/> + </class> + <class name="java/util/function/ObjIntConsumer" since="24"> + <extends name="java/lang/Object"/> + <method name="accept(Ljava/lang/Object;I)V"/> + </class> + <class name="java/util/function/ObjLongConsumer" since="24"> + <extends name="java/lang/Object"/> + <method name="accept(Ljava/lang/Object;J)V"/> + </class> + <class name="java/util/function/Predicate" since="24"> + <extends name="java/lang/Object"/> + <method name="and(Ljava/util/function/Predicate;)Ljava/util/function/Predicate;"/> + <method name="isEqual(Ljava/lang/Object;)Ljava/util/function/Predicate;"/> + <method name="negate()Ljava/util/function/Predicate;"/> + <method name="or(Ljava/util/function/Predicate;)Ljava/util/function/Predicate;"/> + <method name="test(Ljava/lang/Object;)Z"/> + </class> + <class name="java/util/function/Supplier" since="24"> + <extends name="java/lang/Object"/> + <method name="get()Ljava/lang/Object;"/> + </class> + <class name="java/util/function/ToDoubleBiFunction" since="24"> + <extends name="java/lang/Object"/> + <method name="applyAsDouble(Ljava/lang/Object;Ljava/lang/Object;)D"/> + </class> + <class name="java/util/function/ToDoubleFunction" since="24"> + <extends name="java/lang/Object"/> + <method name="applyAsDouble(Ljava/lang/Object;)D"/> + </class> + <class name="java/util/function/ToIntBiFunction" since="24"> + <extends name="java/lang/Object"/> + <method name="applyAsInt(Ljava/lang/Object;Ljava/lang/Object;)I"/> + </class> + <class name="java/util/function/ToIntFunction" since="24"> + <extends name="java/lang/Object"/> + <method name="applyAsInt(Ljava/lang/Object;)I"/> + </class> + <class name="java/util/function/ToLongBiFunction" since="24"> + <extends name="java/lang/Object"/> + <method name="applyAsLong(Ljava/lang/Object;Ljava/lang/Object;)J"/> + </class> + <class name="java/util/function/ToLongFunction" since="24"> + <extends name="java/lang/Object"/> + <method name="applyAsLong(Ljava/lang/Object;)J"/> + </class> + <class name="java/util/function/UnaryOperator" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/util/function/Function"/> + <method name="identity()Ljava/util/function/UnaryOperator;"/> + </class> + <class name="java/util/jar/Attributes" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <implements name="java/util/Map"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(Ljava/util/jar/Attributes;)V"/> + <method name="getValue(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getValue(Ljava/util/jar/Attributes$Name;)Ljava/lang/String;"/> + <method name="putValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <field name="map"/> + </class> + <class name="java/util/jar/Attributes$Name" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;)V"/> + <field name="CLASS_PATH"/> + <field name="CONTENT_TYPE"/> + <field name="EXTENSION_INSTALLATION" deprecated="26"/> + <field name="EXTENSION_LIST"/> + <field name="EXTENSION_NAME"/> + <field name="IMPLEMENTATION_TITLE"/> + <field name="IMPLEMENTATION_URL" deprecated="26"/> + <field name="IMPLEMENTATION_VENDOR"/> + <field name="IMPLEMENTATION_VENDOR_ID" deprecated="26"/> + <field name="IMPLEMENTATION_VERSION"/> + <field name="MAIN_CLASS"/> + <field name="MANIFEST_VERSION"/> + <field name="SEALED"/> + <field name="SIGNATURE_VERSION"/> + <field name="SPECIFICATION_TITLE"/> + <field name="SPECIFICATION_VENDOR"/> + <field name="SPECIFICATION_VERSION"/> + </class> + <class name="java/util/jar/JarEntry" since="1"> + <extends name="java/util/zip/ZipEntry"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/util/jar/JarEntry;)V"/> + <method name="<init>(Ljava/util/zip/ZipEntry;)V"/> + <method name="getAttributes()Ljava/util/jar/Attributes;"/> + <method name="getCertificates()[Ljava/security/cert/Certificate;"/> + <method name="getCodeSigners()[Ljava/security/CodeSigner;"/> + </class> + <class name="java/util/jar/JarException" since="1"> + <extends name="java/util/zip/ZipException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/util/jar/JarFile" since="1"> + <extends name="java/util/zip/ZipFile"/> + <method name="<init>(Ljava/io/File;)V"/> + <method name="<init>(Ljava/io/File;Z)V"/> + <method name="<init>(Ljava/io/File;ZI)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Z)V"/> + <method name="getJarEntry(Ljava/lang/String;)Ljava/util/jar/JarEntry;"/> + <method name="getManifest()Ljava/util/jar/Manifest;"/> + <field name="MANIFEST_NAME"/> + </class> + <class name="java/util/jar/JarInputStream" since="1"> + <extends name="java/util/zip/ZipInputStream"/> + <method name="<init>(Ljava/io/InputStream;)V"/> + <method name="<init>(Ljava/io/InputStream;Z)V"/> + <method name="getManifest()Ljava/util/jar/Manifest;"/> + <method name="getNextJarEntry()Ljava/util/jar/JarEntry;"/> + </class> + <class name="java/util/jar/JarOutputStream" since="1"> + <extends name="java/util/zip/ZipOutputStream"/> + <method name="<init>(Ljava/io/OutputStream;)V"/> + <method name="<init>(Ljava/io/OutputStream;Ljava/util/jar/Manifest;)V"/> + </class> + <class name="java/util/jar/Manifest" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/io/InputStream;)V"/> + <method name="<init>(Ljava/util/jar/Manifest;)V"/> + <method name="clear()V"/> + <method name="getAttributes(Ljava/lang/String;)Ljava/util/jar/Attributes;"/> + <method name="getEntries()Ljava/util/Map;"/> + <method name="getMainAttributes()Ljava/util/jar/Attributes;"/> + <method name="read(Ljava/io/InputStream;)V"/> + <method name="write(Ljava/io/OutputStream;)V"/> + </class> + <class name="java/util/jar/Pack200" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="newPacker()Ljava/util/jar/Pack200$Packer;"/> + <method name="newUnpacker()Ljava/util/jar/Pack200$Unpacker;"/> + </class> + <class name="java/util/jar/Pack200$Packer" since="1"> + <extends name="java/lang/Object"/> + <method name="addPropertyChangeListener(Ljava/beans/PropertyChangeListener;)V" since="3" deprecated="26"/> + <method name="pack(Ljava/util/jar/JarFile;Ljava/io/OutputStream;)V"/> + <method name="pack(Ljava/util/jar/JarInputStream;Ljava/io/OutputStream;)V"/> + <method name="properties()Ljava/util/SortedMap;"/> + <method name="removePropertyChangeListener(Ljava/beans/PropertyChangeListener;)V" since="3" deprecated="26"/> + <field name="CLASS_ATTRIBUTE_PFX"/> + <field name="CODE_ATTRIBUTE_PFX"/> + <field name="DEFLATE_HINT"/> + <field name="EFFORT"/> + <field name="ERROR"/> + <field name="FALSE"/> + <field name="FIELD_ATTRIBUTE_PFX"/> + <field name="KEEP"/> + <field name="KEEP_FILE_ORDER"/> + <field name="LATEST"/> + <field name="METHOD_ATTRIBUTE_PFX"/> + <field name="MODIFICATION_TIME"/> + <field name="PASS"/> + <field name="PASS_FILE_PFX"/> + <field name="PROGRESS"/> + <field name="SEGMENT_LIMIT"/> + <field name="STRIP"/> + <field name="TRUE"/> + <field name="UNKNOWN_ATTRIBUTE"/> + </class> + <class name="java/util/jar/Pack200$Unpacker" since="1"> + <extends name="java/lang/Object"/> + <method name="addPropertyChangeListener(Ljava/beans/PropertyChangeListener;)V" since="3" deprecated="26"/> + <method name="properties()Ljava/util/SortedMap;"/> + <method name="removePropertyChangeListener(Ljava/beans/PropertyChangeListener;)V" since="3" deprecated="26"/> + <method name="unpack(Ljava/io/File;Ljava/util/jar/JarOutputStream;)V"/> + <method name="unpack(Ljava/io/InputStream;Ljava/util/jar/JarOutputStream;)V"/> + <field name="DEFLATE_HINT"/> + <field name="FALSE"/> + <field name="KEEP"/> + <field name="PROGRESS"/> + <field name="TRUE"/> + </class> + <class name="java/util/logging/ConsoleHandler" since="1"> + <extends name="java/util/logging/StreamHandler"/> + <method name="<init>()V"/> + </class> + <class name="java/util/logging/ErrorManager" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="error(Ljava/lang/String;Ljava/lang/Exception;I)V"/> + <field name="CLOSE_FAILURE"/> + <field name="FLUSH_FAILURE"/> + <field name="FORMAT_FAILURE"/> + <field name="GENERIC_FAILURE"/> + <field name="OPEN_FAILURE"/> + <field name="WRITE_FAILURE"/> + </class> + <class name="java/util/logging/FileHandler" since="1"> + <extends name="java/util/logging/StreamHandler"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;II)V"/> + <method name="<init>(Ljava/lang/String;IIZ)V"/> + <method name="<init>(Ljava/lang/String;Z)V"/> + </class> + <class name="java/util/logging/Filter" since="1"> + <extends name="java/lang/Object"/> + <method name="isLoggable(Ljava/util/logging/LogRecord;)Z"/> + </class> + <class name="java/util/logging/Formatter" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="format(Ljava/util/logging/LogRecord;)Ljava/lang/String;"/> + <method name="formatMessage(Ljava/util/logging/LogRecord;)Ljava/lang/String;"/> + <method name="getHead(Ljava/util/logging/Handler;)Ljava/lang/String;"/> + <method name="getTail(Ljava/util/logging/Handler;)Ljava/lang/String;"/> + </class> + <class name="java/util/logging/Handler" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="close()V"/> + <method name="flush()V"/> + <method name="getEncoding()Ljava/lang/String;"/> + <method name="getErrorManager()Ljava/util/logging/ErrorManager;"/> + <method name="getFilter()Ljava/util/logging/Filter;"/> + <method name="getFormatter()Ljava/util/logging/Formatter;"/> + <method name="getLevel()Ljava/util/logging/Level;"/> + <method name="isLoggable(Ljava/util/logging/LogRecord;)Z"/> + <method name="publish(Ljava/util/logging/LogRecord;)V"/> + <method name="reportError(Ljava/lang/String;Ljava/lang/Exception;I)V"/> + <method name="setEncoding(Ljava/lang/String;)V"/> + <method name="setErrorManager(Ljava/util/logging/ErrorManager;)V"/> + <method name="setFilter(Ljava/util/logging/Filter;)V"/> + <method name="setFormatter(Ljava/util/logging/Formatter;)V"/> + <method name="setLevel(Ljava/util/logging/Level;)V"/> + </class> + <class name="java/util/logging/Level" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="<init>(Ljava/lang/String;ILjava/lang/String;)V"/> + <method name="getLocalizedName()Ljava/lang/String;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getResourceBundleName()Ljava/lang/String;"/> + <method name="intValue()I"/> + <method name="parse(Ljava/lang/String;)Ljava/util/logging/Level;"/> + <field name="ALL"/> + <field name="CONFIG"/> + <field name="FINE"/> + <field name="FINER"/> + <field name="FINEST"/> + <field name="INFO"/> + <field name="OFF"/> + <field name="SEVERE"/> + <field name="WARNING"/> + </class> + <class name="java/util/logging/LogManager" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addLogger(Ljava/util/logging/Logger;)Z"/> + <method name="addPropertyChangeListener(Ljava/beans/PropertyChangeListener;)V" since="3" deprecated="26"/> + <method name="checkAccess()V"/> + <method name="getLogManager()Ljava/util/logging/LogManager;"/> + <method name="getLogger(Ljava/lang/String;)Ljava/util/logging/Logger;"/> + <method name="getLoggerNames()Ljava/util/Enumeration;"/> + <method name="getLoggingMXBean()Ljava/util/logging/LoggingMXBean;" since="3"/> + <method name="getProperty(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="readConfiguration()V"/> + <method name="readConfiguration(Ljava/io/InputStream;)V"/> + <method name="removePropertyChangeListener(Ljava/beans/PropertyChangeListener;)V" since="3" deprecated="26"/> + <method name="reset()V"/> + <field name="LOGGING_MXBEAN_NAME"/> + </class> + <class name="java/util/logging/LogRecord" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(Ljava/util/logging/Level;Ljava/lang/String;)V"/> + <method name="getLevel()Ljava/util/logging/Level;"/> + <method name="getLoggerName()Ljava/lang/String;"/> + <method name="getMessage()Ljava/lang/String;"/> + <method name="getMillis()J"/> + <method name="getParameters()[Ljava/lang/Object;"/> + <method name="getResourceBundle()Ljava/util/ResourceBundle;"/> + <method name="getResourceBundleName()Ljava/lang/String;"/> + <method name="getSequenceNumber()J"/> + <method name="getSourceClassName()Ljava/lang/String;"/> + <method name="getSourceMethodName()Ljava/lang/String;"/> + <method name="getThreadID()I"/> + <method name="getThrown()Ljava/lang/Throwable;"/> + <method name="setLevel(Ljava/util/logging/Level;)V"/> + <method name="setLoggerName(Ljava/lang/String;)V"/> + <method name="setMessage(Ljava/lang/String;)V"/> + <method name="setMillis(J)V"/> + <method name="setParameters([Ljava/lang/Object;)V"/> + <method name="setResourceBundle(Ljava/util/ResourceBundle;)V"/> + <method name="setResourceBundleName(Ljava/lang/String;)V"/> + <method name="setSequenceNumber(J)V"/> + <method name="setSourceClassName(Ljava/lang/String;)V"/> + <method name="setSourceMethodName(Ljava/lang/String;)V"/> + <method name="setThreadID(I)V"/> + <method name="setThrown(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/util/logging/Logger" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="addHandler(Ljava/util/logging/Handler;)V"/> + <method name="config(Ljava/lang/String;)V"/> + <method name="config(Ljava/util/function/Supplier;)V" since="26"/> + <method name="entering(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="entering(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V"/> + <method name="entering(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V"/> + <method name="exiting(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="exiting(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V"/> + <method name="fine(Ljava/lang/String;)V"/> + <method name="fine(Ljava/util/function/Supplier;)V" since="26"/> + <method name="finer(Ljava/lang/String;)V"/> + <method name="finer(Ljava/util/function/Supplier;)V" since="26"/> + <method name="finest(Ljava/lang/String;)V"/> + <method name="finest(Ljava/util/function/Supplier;)V" since="26"/> + <method name="getAnonymousLogger()Ljava/util/logging/Logger;"/> + <method name="getAnonymousLogger(Ljava/lang/String;)Ljava/util/logging/Logger;"/> + <method name="getFilter()Ljava/util/logging/Filter;"/> + <method name="getGlobal()Ljava/util/logging/Logger;" since="19"/> + <method name="getHandlers()[Ljava/util/logging/Handler;"/> + <method name="getLevel()Ljava/util/logging/Level;"/> + <method name="getLogger(Ljava/lang/String;)Ljava/util/logging/Logger;"/> + <method name="getLogger(Ljava/lang/String;Ljava/lang/String;)Ljava/util/logging/Logger;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getParent()Ljava/util/logging/Logger;"/> + <method name="getResourceBundle()Ljava/util/ResourceBundle;"/> + <method name="getResourceBundleName()Ljava/lang/String;"/> + <method name="getUseParentHandlers()Z"/> + <method name="info(Ljava/lang/String;)V"/> + <method name="info(Ljava/util/function/Supplier;)V" since="26"/> + <method name="isLoggable(Ljava/util/logging/Level;)Z"/> + <method name="log(Ljava/util/logging/Level;Ljava/lang/String;)V"/> + <method name="log(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V"/> + <method name="log(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="log(Ljava/util/logging/Level;Ljava/lang/String;[Ljava/lang/Object;)V"/> + <method name="log(Ljava/util/logging/Level;Ljava/lang/Throwable;Ljava/util/function/Supplier;)V" since="26"/> + <method name="log(Ljava/util/logging/Level;Ljava/util/function/Supplier;)V" since="26"/> + <method name="log(Ljava/util/logging/LogRecord;)V"/> + <method name="logp(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="logp(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V"/> + <method name="logp(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="logp(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V"/> + <method name="logp(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;Ljava/util/function/Supplier;)V" since="26"/> + <method name="logp(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/util/function/Supplier;)V" since="26"/> + <method name="logrb(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" deprecated="26"/> + <method name="logrb(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V" deprecated="26"/> + <method name="logrb(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" deprecated="26"/> + <method name="logrb(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V" deprecated="26"/> + <method name="logrb(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/util/ResourceBundle;Ljava/lang/String;Ljava/lang/Throwable;)V" since="26"/> + <method name="logrb(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/util/ResourceBundle;Ljava/lang/String;[Ljava/lang/Object;)V" since="26"/> + <method name="removeHandler(Ljava/util/logging/Handler;)V"/> + <method name="setFilter(Ljava/util/logging/Filter;)V"/> + <method name="setLevel(Ljava/util/logging/Level;)V"/> + <method name="setParent(Ljava/util/logging/Logger;)V"/> + <method name="setResourceBundle(Ljava/util/ResourceBundle;)V" since="26"/> + <method name="setUseParentHandlers(Z)V"/> + <method name="severe(Ljava/lang/String;)V"/> + <method name="severe(Ljava/util/function/Supplier;)V" since="26"/> + <method name="throwing(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="warning(Ljava/lang/String;)V"/> + <method name="warning(Ljava/util/function/Supplier;)V" since="26"/> + <field name="GLOBAL_LOGGER_NAME" since="9"/> + <field name="global" deprecated="16"/> + </class> + <class name="java/util/logging/LoggingMXBean" since="1"> + <extends name="java/lang/Object"/> + <method name="getLoggerLevel(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getLoggerNames()Ljava/util/List;"/> + <method name="getParentLoggerName(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="setLoggerLevel(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="java/util/logging/LoggingPermission" since="1"> + <extends name="java/security/BasicPermission"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="java/util/logging/MemoryHandler" since="1"> + <extends name="java/util/logging/Handler"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/util/logging/Handler;ILjava/util/logging/Level;)V"/> + <method name="getPushLevel()Ljava/util/logging/Level;"/> + <method name="push()V"/> + <method name="setPushLevel(Ljava/util/logging/Level;)V"/> + </class> + <class name="java/util/logging/SimpleFormatter" since="1"> + <extends name="java/util/logging/Formatter"/> + <method name="<init>()V"/> + </class> + <class name="java/util/logging/SocketHandler" since="1"> + <extends name="java/util/logging/StreamHandler"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;I)V"/> + </class> + <class name="java/util/logging/StreamHandler" since="1"> + <extends name="java/util/logging/Handler"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/io/OutputStream;Ljava/util/logging/Formatter;)V"/> + <method name="setOutputStream(Ljava/io/OutputStream;)V"/> + </class> + <class name="java/util/logging/XMLFormatter" since="1"> + <extends name="java/util/logging/Formatter"/> + <method name="<init>()V"/> + </class> + <class name="java/util/prefs/AbstractPreferences" since="1"> + <extends name="java/util/prefs/Preferences"/> + <method name="<init>(Ljava/util/prefs/AbstractPreferences;Ljava/lang/String;)V"/> + <method name="cachedChildren()[Ljava/util/prefs/AbstractPreferences;"/> + <method name="childSpi(Ljava/lang/String;)Ljava/util/prefs/AbstractPreferences;"/> + <method name="childrenNamesSpi()[Ljava/lang/String;"/> + <method name="flushSpi()V"/> + <method name="getChild(Ljava/lang/String;)Ljava/util/prefs/AbstractPreferences;"/> + <method name="getSpi(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="isRemoved()Z"/> + <method name="keysSpi()[Ljava/lang/String;"/> + <method name="putSpi(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="removeNodeSpi()V"/> + <method name="removeSpi(Ljava/lang/String;)V"/> + <method name="syncSpi()V"/> + <field name="lock"/> + <field name="newNode"/> + </class> + <class name="java/util/prefs/BackingStoreException" since="1"> + <extends name="java/lang/Exception"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/util/prefs/InvalidPreferencesFormatException" since="1"> + <extends name="java/lang/Exception"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="java/util/prefs/NodeChangeEvent" since="1"> + <extends name="java/util/EventObject"/> + <method name="<init>(Ljava/util/prefs/Preferences;Ljava/util/prefs/Preferences;)V"/> + <method name="getChild()Ljava/util/prefs/Preferences;"/> + <method name="getParent()Ljava/util/prefs/Preferences;"/> + </class> + <class name="java/util/prefs/NodeChangeListener" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/EventListener"/> + <method name="childAdded(Ljava/util/prefs/NodeChangeEvent;)V"/> + <method name="childRemoved(Ljava/util/prefs/NodeChangeEvent;)V"/> + </class> + <class name="java/util/prefs/PreferenceChangeEvent" since="1"> + <extends name="java/util/EventObject"/> + <method name="<init>(Ljava/util/prefs/Preferences;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="getKey()Ljava/lang/String;"/> + <method name="getNewValue()Ljava/lang/String;"/> + <method name="getNode()Ljava/util/prefs/Preferences;"/> + </class> + <class name="java/util/prefs/PreferenceChangeListener" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/EventListener"/> + <method name="preferenceChange(Ljava/util/prefs/PreferenceChangeEvent;)V"/> + </class> + <class name="java/util/prefs/Preferences" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="absolutePath()Ljava/lang/String;"/> + <method name="addNodeChangeListener(Ljava/util/prefs/NodeChangeListener;)V"/> + <method name="addPreferenceChangeListener(Ljava/util/prefs/PreferenceChangeListener;)V"/> + <method name="childrenNames()[Ljava/lang/String;"/> + <method name="clear()V"/> + <method name="exportNode(Ljava/io/OutputStream;)V"/> + <method name="exportSubtree(Ljava/io/OutputStream;)V"/> + <method name="flush()V"/> + <method name="get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getBoolean(Ljava/lang/String;Z)Z"/> + <method name="getByteArray(Ljava/lang/String;[B)[B"/> + <method name="getDouble(Ljava/lang/String;D)D"/> + <method name="getFloat(Ljava/lang/String;F)F"/> + <method name="getInt(Ljava/lang/String;I)I"/> + <method name="getLong(Ljava/lang/String;J)J"/> + <method name="importPreferences(Ljava/io/InputStream;)V"/> + <method name="isUserNode()Z"/> + <method name="keys()[Ljava/lang/String;"/> + <method name="name()Ljava/lang/String;"/> + <method name="node(Ljava/lang/String;)Ljava/util/prefs/Preferences;"/> + <method name="nodeExists(Ljava/lang/String;)Z"/> + <method name="parent()Ljava/util/prefs/Preferences;"/> + <method name="put(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="putBoolean(Ljava/lang/String;Z)V"/> + <method name="putByteArray(Ljava/lang/String;[B)V"/> + <method name="putDouble(Ljava/lang/String;D)V"/> + <method name="putFloat(Ljava/lang/String;F)V"/> + <method name="putInt(Ljava/lang/String;I)V"/> + <method name="putLong(Ljava/lang/String;J)V"/> + <method name="remove(Ljava/lang/String;)V"/> + <method name="removeNode()V"/> + <method name="removeNodeChangeListener(Ljava/util/prefs/NodeChangeListener;)V"/> + <method name="removePreferenceChangeListener(Ljava/util/prefs/PreferenceChangeListener;)V"/> + <method name="sync()V"/> + <method name="systemNodeForPackage(Ljava/lang/Class;)Ljava/util/prefs/Preferences;"/> + <method name="systemRoot()Ljava/util/prefs/Preferences;"/> + <method name="userNodeForPackage(Ljava/lang/Class;)Ljava/util/prefs/Preferences;"/> + <method name="userRoot()Ljava/util/prefs/Preferences;"/> + <field name="MAX_KEY_LENGTH"/> + <field name="MAX_NAME_LENGTH"/> + <field name="MAX_VALUE_LENGTH"/> + </class> + <class name="java/util/prefs/PreferencesFactory" since="1"> + <extends name="java/lang/Object"/> + <method name="systemRoot()Ljava/util/prefs/Preferences;"/> + <method name="userRoot()Ljava/util/prefs/Preferences;"/> + </class> + <class name="java/util/regex/MatchResult" since="1"> + <extends name="java/lang/Object"/> + <method name="end()I"/> + <method name="end(I)I"/> + <method name="group()Ljava/lang/String;"/> + <method name="group(I)Ljava/lang/String;"/> + <method name="groupCount()I"/> + <method name="start()I"/> + <method name="start(I)I"/> + </class> + <class name="java/util/regex/Matcher" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/regex/MatchResult"/> + <method name="<init>()V"/> + <method name="appendReplacement(Ljava/lang/StringBuffer;Ljava/lang/String;)Ljava/util/regex/Matcher;"/> + <method name="appendTail(Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer;"/> + <method name="end(Ljava/lang/String;)I" since="26"/> + <method name="find()Z"/> + <method name="find(I)Z"/> + <method name="group(Ljava/lang/String;)Ljava/lang/String;" since="26"/> + <method name="hasAnchoringBounds()Z"/> + <method name="hasTransparentBounds()Z"/> + <method name="hitEnd()Z"/> + <method name="lookingAt()Z"/> + <method name="matches()Z"/> + <method name="pattern()Ljava/util/regex/Pattern;"/> + <method name="quoteReplacement(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="region(II)Ljava/util/regex/Matcher;"/> + <method name="regionEnd()I"/> + <method name="regionStart()I"/> + <method name="replaceAll(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="replaceFirst(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="requireEnd()Z"/> + <method name="reset()Ljava/util/regex/Matcher;"/> + <method name="reset(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;"/> + <method name="start(Ljava/lang/String;)I" since="26"/> + <method name="toMatchResult()Ljava/util/regex/MatchResult;"/> + <method name="useAnchoringBounds(Z)Ljava/util/regex/Matcher;"/> + <method name="usePattern(Ljava/util/regex/Pattern;)Ljava/util/regex/Matcher;"/> + <method name="useTransparentBounds(Z)Ljava/util/regex/Matcher;"/> + </class> + <class name="java/util/regex/Pattern" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="asPredicate()Ljava/util/function/Predicate;" since="24"/> + <method name="compile(Ljava/lang/String;)Ljava/util/regex/Pattern;"/> + <method name="compile(Ljava/lang/String;I)Ljava/util/regex/Pattern;"/> + <method name="flags()I"/> + <method name="matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;"/> + <method name="matches(Ljava/lang/String;Ljava/lang/CharSequence;)Z"/> + <method name="pattern()Ljava/lang/String;"/> + <method name="quote(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="split(Ljava/lang/CharSequence;)[Ljava/lang/String;"/> + <method name="split(Ljava/lang/CharSequence;I)[Ljava/lang/String;"/> + <method name="splitAsStream(Ljava/lang/CharSequence;)Ljava/util/stream/Stream;" since="24"/> + <field name="CANON_EQ"/> + <field name="CASE_INSENSITIVE"/> + <field name="COMMENTS"/> + <field name="DOTALL"/> + <field name="LITERAL"/> + <field name="MULTILINE"/> + <field name="UNICODE_CASE"/> + <field name="UNICODE_CHARACTER_CLASS" since="24"/> + <field name="UNIX_LINES"/> + </class> + <class name="java/util/regex/PatternSyntaxException" since="1"> + <extends name="java/lang/IllegalArgumentException"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;I)V"/> + <method name="getDescription()Ljava/lang/String;"/> + <method name="getIndex()I"/> + <method name="getPattern()Ljava/lang/String;"/> + </class> + <class name="java/util/stream/BaseStream" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/lang/AutoCloseable"/> + <method name="isParallel()Z"/> + <method name="iterator()Ljava/util/Iterator;"/> + <method name="onClose(Ljava/lang/Runnable;)Ljava/util/stream/BaseStream;"/> + <method name="parallel()Ljava/util/stream/BaseStream;"/> + <method name="sequential()Ljava/util/stream/BaseStream;"/> + <method name="spliterator()Ljava/util/Spliterator;"/> + <method name="unordered()Ljava/util/stream/BaseStream;"/> + </class> + <class name="java/util/stream/Collector" since="24"> + <extends name="java/lang/Object"/> + <method name="accumulator()Ljava/util/function/BiConsumer;"/> + <method name="characteristics()Ljava/util/Set;"/> + <method name="combiner()Ljava/util/function/BinaryOperator;"/> + <method name="finisher()Ljava/util/function/Function;"/> + <method name="of(Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BinaryOperator;Ljava/util/function/Function;[Ljava/util/stream/Collector$Characteristics;)Ljava/util/stream/Collector;"/> + <method name="of(Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BinaryOperator;[Ljava/util/stream/Collector$Characteristics;)Ljava/util/stream/Collector;"/> + <method name="supplier()Ljava/util/function/Supplier;"/> + </class> + <class name="java/util/stream/Collector$Characteristics" since="24"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljava/util/stream/Collector$Characteristics;"/> + <method name="values()[Ljava/util/stream/Collector$Characteristics;"/> + <field name="CONCURRENT"/> + <field name="IDENTITY_FINISH"/> + <field name="UNORDERED"/> + </class> + <class name="java/util/stream/Collectors" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="averagingDouble(Ljava/util/function/ToDoubleFunction;)Ljava/util/stream/Collector;"/> + <method name="averagingInt(Ljava/util/function/ToIntFunction;)Ljava/util/stream/Collector;"/> + <method name="averagingLong(Ljava/util/function/ToLongFunction;)Ljava/util/stream/Collector;"/> + <method name="collectingAndThen(Ljava/util/stream/Collector;Ljava/util/function/Function;)Ljava/util/stream/Collector;"/> + <method name="counting()Ljava/util/stream/Collector;"/> + <method name="groupingBy(Ljava/util/function/Function;)Ljava/util/stream/Collector;"/> + <method name="groupingBy(Ljava/util/function/Function;Ljava/util/function/Supplier;Ljava/util/stream/Collector;)Ljava/util/stream/Collector;"/> + <method name="groupingBy(Ljava/util/function/Function;Ljava/util/stream/Collector;)Ljava/util/stream/Collector;"/> + <method name="groupingByConcurrent(Ljava/util/function/Function;)Ljava/util/stream/Collector;"/> + <method name="groupingByConcurrent(Ljava/util/function/Function;Ljava/util/function/Supplier;Ljava/util/stream/Collector;)Ljava/util/stream/Collector;"/> + <method name="groupingByConcurrent(Ljava/util/function/Function;Ljava/util/stream/Collector;)Ljava/util/stream/Collector;"/> + <method name="joining()Ljava/util/stream/Collector;"/> + <method name="joining(Ljava/lang/CharSequence;)Ljava/util/stream/Collector;"/> + <method name="joining(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/util/stream/Collector;"/> + <method name="mapping(Ljava/util/function/Function;Ljava/util/stream/Collector;)Ljava/util/stream/Collector;"/> + <method name="maxBy(Ljava/util/Comparator;)Ljava/util/stream/Collector;"/> + <method name="minBy(Ljava/util/Comparator;)Ljava/util/stream/Collector;"/> + <method name="partitioningBy(Ljava/util/function/Predicate;)Ljava/util/stream/Collector;"/> + <method name="partitioningBy(Ljava/util/function/Predicate;Ljava/util/stream/Collector;)Ljava/util/stream/Collector;"/> + <method name="reducing(Ljava/lang/Object;Ljava/util/function/BinaryOperator;)Ljava/util/stream/Collector;"/> + <method name="reducing(Ljava/lang/Object;Ljava/util/function/Function;Ljava/util/function/BinaryOperator;)Ljava/util/stream/Collector;"/> + <method name="reducing(Ljava/util/function/BinaryOperator;)Ljava/util/stream/Collector;"/> + <method name="summarizingDouble(Ljava/util/function/ToDoubleFunction;)Ljava/util/stream/Collector;"/> + <method name="summarizingInt(Ljava/util/function/ToIntFunction;)Ljava/util/stream/Collector;"/> + <method name="summarizingLong(Ljava/util/function/ToLongFunction;)Ljava/util/stream/Collector;"/> + <method name="summingDouble(Ljava/util/function/ToDoubleFunction;)Ljava/util/stream/Collector;"/> + <method name="summingInt(Ljava/util/function/ToIntFunction;)Ljava/util/stream/Collector;"/> + <method name="summingLong(Ljava/util/function/ToLongFunction;)Ljava/util/stream/Collector;"/> + <method name="toCollection(Ljava/util/function/Supplier;)Ljava/util/stream/Collector;"/> + <method name="toConcurrentMap(Ljava/util/function/Function;Ljava/util/function/Function;)Ljava/util/stream/Collector;"/> + <method name="toConcurrentMap(Ljava/util/function/Function;Ljava/util/function/Function;Ljava/util/function/BinaryOperator;)Ljava/util/stream/Collector;"/> + <method name="toConcurrentMap(Ljava/util/function/Function;Ljava/util/function/Function;Ljava/util/function/BinaryOperator;Ljava/util/function/Supplier;)Ljava/util/stream/Collector;"/> + <method name="toList()Ljava/util/stream/Collector;"/> + <method name="toMap(Ljava/util/function/Function;Ljava/util/function/Function;)Ljava/util/stream/Collector;"/> + <method name="toMap(Ljava/util/function/Function;Ljava/util/function/Function;Ljava/util/function/BinaryOperator;)Ljava/util/stream/Collector;"/> + <method name="toMap(Ljava/util/function/Function;Ljava/util/function/Function;Ljava/util/function/BinaryOperator;Ljava/util/function/Supplier;)Ljava/util/stream/Collector;"/> + <method name="toSet()Ljava/util/stream/Collector;"/> + </class> + <class name="java/util/stream/DoubleStream" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/util/stream/BaseStream"/> + <method name="allMatch(Ljava/util/function/DoublePredicate;)Z"/> + <method name="anyMatch(Ljava/util/function/DoublePredicate;)Z"/> + <method name="average()Ljava/util/OptionalDouble;"/> + <method name="boxed()Ljava/util/stream/Stream;"/> + <method name="builder()Ljava/util/stream/DoubleStream$Builder;"/> + <method name="collect(Ljava/util/function/Supplier;Ljava/util/function/ObjDoubleConsumer;Ljava/util/function/BiConsumer;)Ljava/lang/Object;"/> + <method name="concat(Ljava/util/stream/DoubleStream;Ljava/util/stream/DoubleStream;)Ljava/util/stream/DoubleStream;"/> + <method name="count()J"/> + <method name="distinct()Ljava/util/stream/DoubleStream;"/> + <method name="empty()Ljava/util/stream/DoubleStream;"/> + <method name="filter(Ljava/util/function/DoublePredicate;)Ljava/util/stream/DoubleStream;"/> + <method name="findAny()Ljava/util/OptionalDouble;"/> + <method name="findFirst()Ljava/util/OptionalDouble;"/> + <method name="flatMap(Ljava/util/function/DoubleFunction;)Ljava/util/stream/DoubleStream;"/> + <method name="forEach(Ljava/util/function/DoubleConsumer;)V"/> + <method name="forEachOrdered(Ljava/util/function/DoubleConsumer;)V"/> + <method name="generate(Ljava/util/function/DoubleSupplier;)Ljava/util/stream/DoubleStream;"/> + <method name="iterate(DLjava/util/function/DoubleUnaryOperator;)Ljava/util/stream/DoubleStream;"/> + <method name="iterator()Ljava/util/PrimitiveIterator$OfDouble;"/> + <method name="limit(J)Ljava/util/stream/DoubleStream;"/> + <method name="map(Ljava/util/function/DoubleUnaryOperator;)Ljava/util/stream/DoubleStream;"/> + <method name="mapToInt(Ljava/util/function/DoubleToIntFunction;)Ljava/util/stream/IntStream;"/> + <method name="mapToLong(Ljava/util/function/DoubleToLongFunction;)Ljava/util/stream/LongStream;"/> + <method name="mapToObj(Ljava/util/function/DoubleFunction;)Ljava/util/stream/Stream;"/> + <method name="max()Ljava/util/OptionalDouble;"/> + <method name="min()Ljava/util/OptionalDouble;"/> + <method name="noneMatch(Ljava/util/function/DoublePredicate;)Z"/> + <method name="of(D)Ljava/util/stream/DoubleStream;"/> + <method name="of([D)Ljava/util/stream/DoubleStream;"/> + <method name="parallel()Ljava/util/stream/DoubleStream;"/> + <method name="peek(Ljava/util/function/DoubleConsumer;)Ljava/util/stream/DoubleStream;"/> + <method name="reduce(DLjava/util/function/DoubleBinaryOperator;)D"/> + <method name="reduce(Ljava/util/function/DoubleBinaryOperator;)Ljava/util/OptionalDouble;"/> + <method name="sequential()Ljava/util/stream/DoubleStream;"/> + <method name="skip(J)Ljava/util/stream/DoubleStream;"/> + <method name="sorted()Ljava/util/stream/DoubleStream;"/> + <method name="spliterator()Ljava/util/Spliterator$OfDouble;"/> + <method name="sum()D"/> + <method name="summaryStatistics()Ljava/util/DoubleSummaryStatistics;"/> + <method name="toArray()[D"/> + </class> + <class name="java/util/stream/DoubleStream$Builder" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/util/function/DoubleConsumer"/> + <method name="add(D)Ljava/util/stream/DoubleStream$Builder;"/> + <method name="build()Ljava/util/stream/DoubleStream;"/> + </class> + <class name="java/util/stream/IntStream" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/util/stream/BaseStream"/> + <method name="allMatch(Ljava/util/function/IntPredicate;)Z"/> + <method name="anyMatch(Ljava/util/function/IntPredicate;)Z"/> + <method name="asDoubleStream()Ljava/util/stream/DoubleStream;"/> + <method name="asLongStream()Ljava/util/stream/LongStream;"/> + <method name="average()Ljava/util/OptionalDouble;"/> + <method name="boxed()Ljava/util/stream/Stream;"/> + <method name="builder()Ljava/util/stream/IntStream$Builder;"/> + <method name="collect(Ljava/util/function/Supplier;Ljava/util/function/ObjIntConsumer;Ljava/util/function/BiConsumer;)Ljava/lang/Object;"/> + <method name="concat(Ljava/util/stream/IntStream;Ljava/util/stream/IntStream;)Ljava/util/stream/IntStream;"/> + <method name="count()J"/> + <method name="distinct()Ljava/util/stream/IntStream;"/> + <method name="empty()Ljava/util/stream/IntStream;"/> + <method name="filter(Ljava/util/function/IntPredicate;)Ljava/util/stream/IntStream;"/> + <method name="findAny()Ljava/util/OptionalInt;"/> + <method name="findFirst()Ljava/util/OptionalInt;"/> + <method name="flatMap(Ljava/util/function/IntFunction;)Ljava/util/stream/IntStream;"/> + <method name="forEach(Ljava/util/function/IntConsumer;)V"/> + <method name="forEachOrdered(Ljava/util/function/IntConsumer;)V"/> + <method name="generate(Ljava/util/function/IntSupplier;)Ljava/util/stream/IntStream;"/> + <method name="iterate(ILjava/util/function/IntUnaryOperator;)Ljava/util/stream/IntStream;"/> + <method name="iterator()Ljava/util/PrimitiveIterator$OfInt;"/> + <method name="limit(J)Ljava/util/stream/IntStream;"/> + <method name="map(Ljava/util/function/IntUnaryOperator;)Ljava/util/stream/IntStream;"/> + <method name="mapToDouble(Ljava/util/function/IntToDoubleFunction;)Ljava/util/stream/DoubleStream;"/> + <method name="mapToLong(Ljava/util/function/IntToLongFunction;)Ljava/util/stream/LongStream;"/> + <method name="mapToObj(Ljava/util/function/IntFunction;)Ljava/util/stream/Stream;"/> + <method name="max()Ljava/util/OptionalInt;"/> + <method name="min()Ljava/util/OptionalInt;"/> + <method name="noneMatch(Ljava/util/function/IntPredicate;)Z"/> + <method name="of(I)Ljava/util/stream/IntStream;"/> + <method name="of([I)Ljava/util/stream/IntStream;"/> + <method name="parallel()Ljava/util/stream/IntStream;"/> + <method name="peek(Ljava/util/function/IntConsumer;)Ljava/util/stream/IntStream;"/> + <method name="range(II)Ljava/util/stream/IntStream;"/> + <method name="rangeClosed(II)Ljava/util/stream/IntStream;"/> + <method name="reduce(ILjava/util/function/IntBinaryOperator;)I"/> + <method name="reduce(Ljava/util/function/IntBinaryOperator;)Ljava/util/OptionalInt;"/> + <method name="sequential()Ljava/util/stream/IntStream;"/> + <method name="skip(J)Ljava/util/stream/IntStream;"/> + <method name="sorted()Ljava/util/stream/IntStream;"/> + <method name="spliterator()Ljava/util/Spliterator$OfInt;"/> + <method name="sum()I"/> + <method name="summaryStatistics()Ljava/util/IntSummaryStatistics;"/> + <method name="toArray()[I"/> + </class> + <class name="java/util/stream/IntStream$Builder" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/util/function/IntConsumer"/> + <method name="add(I)Ljava/util/stream/IntStream$Builder;"/> + <method name="build()Ljava/util/stream/IntStream;"/> + </class> + <class name="java/util/stream/LongStream" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/util/stream/BaseStream"/> + <method name="allMatch(Ljava/util/function/LongPredicate;)Z"/> + <method name="anyMatch(Ljava/util/function/LongPredicate;)Z"/> + <method name="asDoubleStream()Ljava/util/stream/DoubleStream;"/> + <method name="average()Ljava/util/OptionalDouble;"/> + <method name="boxed()Ljava/util/stream/Stream;"/> + <method name="builder()Ljava/util/stream/LongStream$Builder;"/> + <method name="collect(Ljava/util/function/Supplier;Ljava/util/function/ObjLongConsumer;Ljava/util/function/BiConsumer;)Ljava/lang/Object;"/> + <method name="concat(Ljava/util/stream/LongStream;Ljava/util/stream/LongStream;)Ljava/util/stream/LongStream;"/> + <method name="count()J"/> + <method name="distinct()Ljava/util/stream/LongStream;"/> + <method name="empty()Ljava/util/stream/LongStream;"/> + <method name="filter(Ljava/util/function/LongPredicate;)Ljava/util/stream/LongStream;"/> + <method name="findAny()Ljava/util/OptionalLong;"/> + <method name="findFirst()Ljava/util/OptionalLong;"/> + <method name="flatMap(Ljava/util/function/LongFunction;)Ljava/util/stream/LongStream;"/> + <method name="forEach(Ljava/util/function/LongConsumer;)V"/> + <method name="forEachOrdered(Ljava/util/function/LongConsumer;)V"/> + <method name="generate(Ljava/util/function/LongSupplier;)Ljava/util/stream/LongStream;"/> + <method name="iterate(JLjava/util/function/LongUnaryOperator;)Ljava/util/stream/LongStream;"/> + <method name="iterator()Ljava/util/PrimitiveIterator$OfLong;"/> + <method name="limit(J)Ljava/util/stream/LongStream;"/> + <method name="map(Ljava/util/function/LongUnaryOperator;)Ljava/util/stream/LongStream;"/> + <method name="mapToDouble(Ljava/util/function/LongToDoubleFunction;)Ljava/util/stream/DoubleStream;"/> + <method name="mapToInt(Ljava/util/function/LongToIntFunction;)Ljava/util/stream/IntStream;"/> + <method name="mapToObj(Ljava/util/function/LongFunction;)Ljava/util/stream/Stream;"/> + <method name="max()Ljava/util/OptionalLong;"/> + <method name="min()Ljava/util/OptionalLong;"/> + <method name="noneMatch(Ljava/util/function/LongPredicate;)Z"/> + <method name="of(J)Ljava/util/stream/LongStream;"/> + <method name="of([J)Ljava/util/stream/LongStream;"/> + <method name="parallel()Ljava/util/stream/LongStream;"/> + <method name="peek(Ljava/util/function/LongConsumer;)Ljava/util/stream/LongStream;"/> + <method name="range(JJ)Ljava/util/stream/LongStream;"/> + <method name="rangeClosed(JJ)Ljava/util/stream/LongStream;"/> + <method name="reduce(JLjava/util/function/LongBinaryOperator;)J"/> + <method name="reduce(Ljava/util/function/LongBinaryOperator;)Ljava/util/OptionalLong;"/> + <method name="sequential()Ljava/util/stream/LongStream;"/> + <method name="skip(J)Ljava/util/stream/LongStream;"/> + <method name="sorted()Ljava/util/stream/LongStream;"/> + <method name="spliterator()Ljava/util/Spliterator$OfLong;"/> + <method name="sum()J"/> + <method name="summaryStatistics()Ljava/util/LongSummaryStatistics;"/> + <method name="toArray()[J"/> + </class> + <class name="java/util/stream/LongStream$Builder" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/util/function/LongConsumer"/> + <method name="add(J)Ljava/util/stream/LongStream$Builder;"/> + <method name="build()Ljava/util/stream/LongStream;"/> + </class> + <class name="java/util/stream/Stream" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/util/stream/BaseStream"/> + <method name="allMatch(Ljava/util/function/Predicate;)Z"/> + <method name="anyMatch(Ljava/util/function/Predicate;)Z"/> + <method name="builder()Ljava/util/stream/Stream$Builder;"/> + <method name="collect(Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BiConsumer;)Ljava/lang/Object;"/> + <method name="collect(Ljava/util/stream/Collector;)Ljava/lang/Object;"/> + <method name="concat(Ljava/util/stream/Stream;Ljava/util/stream/Stream;)Ljava/util/stream/Stream;"/> + <method name="count()J"/> + <method name="distinct()Ljava/util/stream/Stream;"/> + <method name="empty()Ljava/util/stream/Stream;"/> + <method name="filter(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;"/> + <method name="findAny()Ljava/util/Optional;"/> + <method name="findFirst()Ljava/util/Optional;"/> + <method name="flatMap(Ljava/util/function/Function;)Ljava/util/stream/Stream;"/> + <method name="flatMapToDouble(Ljava/util/function/Function;)Ljava/util/stream/DoubleStream;"/> + <method name="flatMapToInt(Ljava/util/function/Function;)Ljava/util/stream/IntStream;"/> + <method name="flatMapToLong(Ljava/util/function/Function;)Ljava/util/stream/LongStream;"/> + <method name="forEach(Ljava/util/function/Consumer;)V"/> + <method name="forEachOrdered(Ljava/util/function/Consumer;)V"/> + <method name="generate(Ljava/util/function/Supplier;)Ljava/util/stream/Stream;"/> + <method name="iterate(Ljava/lang/Object;Ljava/util/function/UnaryOperator;)Ljava/util/stream/Stream;"/> + <method name="limit(J)Ljava/util/stream/Stream;"/> + <method name="map(Ljava/util/function/Function;)Ljava/util/stream/Stream;"/> + <method name="mapToDouble(Ljava/util/function/ToDoubleFunction;)Ljava/util/stream/DoubleStream;"/> + <method name="mapToInt(Ljava/util/function/ToIntFunction;)Ljava/util/stream/IntStream;"/> + <method name="mapToLong(Ljava/util/function/ToLongFunction;)Ljava/util/stream/LongStream;"/> + <method name="max(Ljava/util/Comparator;)Ljava/util/Optional;"/> + <method name="min(Ljava/util/Comparator;)Ljava/util/Optional;"/> + <method name="noneMatch(Ljava/util/function/Predicate;)Z"/> + <method name="of(Ljava/lang/Object;)Ljava/util/stream/Stream;"/> + <method name="of([Ljava/lang/Object;)Ljava/util/stream/Stream;"/> + <method name="peek(Ljava/util/function/Consumer;)Ljava/util/stream/Stream;"/> + <method name="reduce(Ljava/lang/Object;Ljava/util/function/BiFunction;Ljava/util/function/BinaryOperator;)Ljava/lang/Object;"/> + <method name="reduce(Ljava/lang/Object;Ljava/util/function/BinaryOperator;)Ljava/lang/Object;"/> + <method name="reduce(Ljava/util/function/BinaryOperator;)Ljava/util/Optional;"/> + <method name="skip(J)Ljava/util/stream/Stream;"/> + <method name="sorted()Ljava/util/stream/Stream;"/> + <method name="sorted(Ljava/util/Comparator;)Ljava/util/stream/Stream;"/> + <method name="toArray()[Ljava/lang/Object;"/> + <method name="toArray(Ljava/util/function/IntFunction;)[Ljava/lang/Object;"/> + </class> + <class name="java/util/stream/Stream$Builder" since="24"> + <extends name="java/lang/Object"/> + <implements name="java/util/function/Consumer"/> + <method name="add(Ljava/lang/Object;)Ljava/util/stream/Stream$Builder;"/> + <method name="build()Ljava/util/stream/Stream;"/> + </class> + <class name="java/util/stream/StreamSupport" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="doubleStream(Ljava/util/Spliterator$OfDouble;Z)Ljava/util/stream/DoubleStream;"/> + <method name="doubleStream(Ljava/util/function/Supplier;IZ)Ljava/util/stream/DoubleStream;"/> + <method name="intStream(Ljava/util/Spliterator$OfInt;Z)Ljava/util/stream/IntStream;"/> + <method name="intStream(Ljava/util/function/Supplier;IZ)Ljava/util/stream/IntStream;"/> + <method name="longStream(Ljava/util/Spliterator$OfLong;Z)Ljava/util/stream/LongStream;"/> + <method name="longStream(Ljava/util/function/Supplier;IZ)Ljava/util/stream/LongStream;"/> + <method name="stream(Ljava/util/Spliterator;Z)Ljava/util/stream/Stream;"/> + <method name="stream(Ljava/util/function/Supplier;IZ)Ljava/util/stream/Stream;"/> + </class> + <class name="java/util/zip/Adler32" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/zip/Checksum"/> + <method name="<init>()V"/> + <method name="update(Ljava/nio/ByteBuffer;)V" since="26"/> + <method name="update([B)V"/> + </class> + <class name="java/util/zip/CRC32" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/zip/Checksum"/> + <method name="<init>()V"/> + <method name="update(Ljava/nio/ByteBuffer;)V" since="26"/> + <method name="update([B)V"/> + </class> + <class name="java/util/zip/CheckedInputStream" since="1"> + <extends name="java/io/FilterInputStream"/> + <method name="<init>(Ljava/io/InputStream;Ljava/util/zip/Checksum;)V"/> + <method name="getChecksum()Ljava/util/zip/Checksum;"/> + </class> + <class name="java/util/zip/CheckedOutputStream" since="1"> + <extends name="java/io/FilterOutputStream"/> + <method name="<init>(Ljava/io/OutputStream;Ljava/util/zip/Checksum;)V"/> + <method name="getChecksum()Ljava/util/zip/Checksum;"/> + </class> + <class name="java/util/zip/Checksum" since="1"> + <extends name="java/lang/Object"/> + <method name="getValue()J"/> + <method name="reset()V"/> + <method name="update(I)V"/> + <method name="update([BII)V"/> + </class> + <class name="java/util/zip/DataFormatException" since="1"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/util/zip/Deflater" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(IZ)V"/> + <method name="deflate([B)I"/> + <method name="deflate([BII)I"/> + <method name="deflate([BIII)I" since="19"/> + <method name="end()V"/> + <method name="finish()V"/> + <method name="finished()Z"/> + <method name="getAdler()I"/> + <method name="getBytesRead()J"/> + <method name="getBytesWritten()J"/> + <method name="getTotalIn()I"/> + <method name="getTotalOut()I"/> + <method name="needsInput()Z"/> + <method name="reset()V"/> + <method name="setDictionary([B)V"/> + <method name="setDictionary([BII)V"/> + <method name="setInput([B)V"/> + <method name="setInput([BII)V"/> + <method name="setLevel(I)V"/> + <method name="setStrategy(I)V"/> + <field name="BEST_COMPRESSION"/> + <field name="BEST_SPEED"/> + <field name="DEFAULT_COMPRESSION"/> + <field name="DEFAULT_STRATEGY"/> + <field name="DEFLATED"/> + <field name="FILTERED"/> + <field name="FULL_FLUSH" since="19"/> + <field name="HUFFMAN_ONLY"/> + <field name="NO_COMPRESSION"/> + <field name="NO_FLUSH" since="19"/> + <field name="SYNC_FLUSH" since="19"/> + </class> + <class name="java/util/zip/DeflaterInputStream" since="9"> + <extends name="java/io/FilterInputStream"/> + <method name="<init>(Ljava/io/InputStream;)V"/> + <method name="<init>(Ljava/io/InputStream;Ljava/util/zip/Deflater;)V"/> + <method name="<init>(Ljava/io/InputStream;Ljava/util/zip/Deflater;I)V"/> + <field name="buf"/> + <field name="def"/> + </class> + <class name="java/util/zip/DeflaterOutputStream" since="1"> + <extends name="java/io/FilterOutputStream"/> + <method name="<init>(Ljava/io/OutputStream;)V"/> + <method name="<init>(Ljava/io/OutputStream;Ljava/util/zip/Deflater;)V"/> + <method name="<init>(Ljava/io/OutputStream;Ljava/util/zip/Deflater;I)V"/> + <method name="<init>(Ljava/io/OutputStream;Ljava/util/zip/Deflater;IZ)V" since="19"/> + <method name="<init>(Ljava/io/OutputStream;Ljava/util/zip/Deflater;Z)V" since="19"/> + <method name="<init>(Ljava/io/OutputStream;Z)V" since="19"/> + <method name="deflate()V"/> + <method name="finish()V"/> + <field name="buf"/> + <field name="def"/> + </class> + <class name="java/util/zip/GZIPInputStream" since="1"> + <extends name="java/util/zip/InflaterInputStream"/> + <method name="<init>(Ljava/io/InputStream;)V"/> + <method name="<init>(Ljava/io/InputStream;I)V"/> + <field name="GZIP_MAGIC"/> + <field name="crc"/> + <field name="eos"/> + </class> + <class name="java/util/zip/GZIPOutputStream" since="1"> + <extends name="java/util/zip/DeflaterOutputStream"/> + <method name="<init>(Ljava/io/OutputStream;)V"/> + <method name="<init>(Ljava/io/OutputStream;I)V"/> + <method name="<init>(Ljava/io/OutputStream;IZ)V" since="19"/> + <method name="<init>(Ljava/io/OutputStream;Z)V" since="19"/> + <field name="crc"/> + </class> + <class name="java/util/zip/Inflater" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Z)V"/> + <method name="end()V"/> + <method name="finished()Z"/> + <method name="getAdler()I"/> + <method name="getBytesRead()J"/> + <method name="getBytesWritten()J"/> + <method name="getRemaining()I"/> + <method name="getTotalIn()I"/> + <method name="getTotalOut()I"/> + <method name="inflate([B)I"/> + <method name="inflate([BII)I"/> + <method name="needsDictionary()Z"/> + <method name="needsInput()Z"/> + <method name="reset()V"/> + <method name="setDictionary([B)V"/> + <method name="setDictionary([BII)V"/> + <method name="setInput([B)V"/> + <method name="setInput([BII)V"/> + </class> + <class name="java/util/zip/InflaterInputStream" since="1"> + <extends name="java/io/FilterInputStream"/> + <method name="<init>(Ljava/io/InputStream;)V"/> + <method name="<init>(Ljava/io/InputStream;Ljava/util/zip/Inflater;)V"/> + <method name="<init>(Ljava/io/InputStream;Ljava/util/zip/Inflater;I)V"/> + <method name="fill()V"/> + <field name="buf"/> + <field name="closed" since="24"/> + <field name="inf"/> + <field name="len"/> + </class> + <class name="java/util/zip/InflaterOutputStream" since="9"> + <extends name="java/io/FilterOutputStream"/> + <method name="<init>(Ljava/io/OutputStream;)V"/> + <method name="<init>(Ljava/io/OutputStream;Ljava/util/zip/Inflater;)V"/> + <method name="<init>(Ljava/io/OutputStream;Ljava/util/zip/Inflater;I)V"/> + <method name="finish()V"/> + <field name="buf"/> + <field name="inf"/> + </class> + <class name="java/util/zip/ZipEntry" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/util/zip/ZipEntry;)V"/> + <method name="getComment()Ljava/lang/String;"/> + <method name="getCompressedSize()J"/> + <method name="getCrc()J"/> + <method name="getCreationTime()Ljava/nio/file/attribute/FileTime;" since="26"/> + <method name="getExtra()[B"/> + <method name="getLastAccessTime()Ljava/nio/file/attribute/FileTime;" since="26"/> + <method name="getLastModifiedTime()Ljava/nio/file/attribute/FileTime;" since="26"/> + <method name="getMethod()I"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getSize()J"/> + <method name="getTime()J"/> + <method name="isDirectory()Z"/> + <method name="setComment(Ljava/lang/String;)V"/> + <method name="setCompressedSize(J)V"/> + <method name="setCrc(J)V"/> + <method name="setCreationTime(Ljava/nio/file/attribute/FileTime;)Ljava/util/zip/ZipEntry;" since="26"/> + <method name="setExtra([B)V"/> + <method name="setLastAccessTime(Ljava/nio/file/attribute/FileTime;)Ljava/util/zip/ZipEntry;" since="26"/> + <method name="setLastModifiedTime(Ljava/nio/file/attribute/FileTime;)Ljava/util/zip/ZipEntry;" since="26"/> + <method name="setMethod(I)V"/> + <method name="setSize(J)V"/> + <method name="setTime(J)V"/> + <field name="CENATT" since="21"/> + <field name="CENATX" since="21"/> + <field name="CENCOM" since="21"/> + <field name="CENCRC" since="21"/> + <field name="CENDSK" since="21"/> + <field name="CENEXT" since="21"/> + <field name="CENFLG" since="21"/> + <field name="CENHDR" since="21"/> + <field name="CENHOW" since="21"/> + <field name="CENLEN" since="21"/> + <field name="CENNAM" since="21"/> + <field name="CENOFF" since="21"/> + <field name="CENSIG" since="21"/> + <field name="CENSIZ" since="21"/> + <field name="CENTIM" since="21"/> + <field name="CENVEM" since="21"/> + <field name="CENVER" since="21"/> + <field name="DEFLATED"/> + <field name="ENDCOM" since="21"/> + <field name="ENDHDR" since="21"/> + <field name="ENDOFF" since="21"/> + <field name="ENDSIG" since="21"/> + <field name="ENDSIZ" since="21"/> + <field name="ENDSUB" since="21"/> + <field name="ENDTOT" since="21"/> + <field name="EXTCRC" since="21"/> + <field name="EXTHDR" since="21"/> + <field name="EXTLEN" since="21"/> + <field name="EXTSIG" since="21"/> + <field name="EXTSIZ" since="21"/> + <field name="LOCCRC" since="21"/> + <field name="LOCEXT" since="21"/> + <field name="LOCFLG" since="21"/> + <field name="LOCHDR" since="21"/> + <field name="LOCHOW" since="21"/> + <field name="LOCLEN" since="21"/> + <field name="LOCNAM" since="21"/> + <field name="LOCSIG" since="21"/> + <field name="LOCSIZ" since="21"/> + <field name="LOCTIM" since="21"/> + <field name="LOCVER" since="21"/> + <field name="STORED"/> + </class> + <class name="java/util/zip/ZipError" since="9"> + <extends name="java/lang/InternalError"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/util/zip/ZipException" since="1"> + <extends name="java/io/IOException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="java/util/zip/ZipFile" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Closeable" since="19"/> + <method name="<init>(Ljava/io/File;)V"/> + <method name="<init>(Ljava/io/File;I)V"/> + <method name="<init>(Ljava/io/File;ILjava/nio/charset/Charset;)V" since="24"/> + <method name="<init>(Ljava/io/File;Ljava/nio/charset/Charset;)V" since="24"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/nio/charset/Charset;)V" since="24"/> + <method name="close()V"/> + <method name="entries()Ljava/util/Enumeration;"/> + <method name="getComment()Ljava/lang/String;" since="19"/> + <method name="getEntry(Ljava/lang/String;)Ljava/util/zip/ZipEntry;"/> + <method name="getInputStream(Ljava/util/zip/ZipEntry;)Ljava/io/InputStream;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="size()I"/> + <method name="stream()Ljava/util/stream/Stream;" since="26"/> + <field name="CENATT" since="21"/> + <field name="CENATX" since="21"/> + <field name="CENCOM" since="21"/> + <field name="CENCRC" since="21"/> + <field name="CENDSK" since="21"/> + <field name="CENEXT" since="21"/> + <field name="CENFLG" since="21"/> + <field name="CENHDR" since="21"/> + <field name="CENHOW" since="21"/> + <field name="CENLEN" since="21"/> + <field name="CENNAM" since="21"/> + <field name="CENOFF" since="21"/> + <field name="CENSIG" since="21"/> + <field name="CENSIZ" since="21"/> + <field name="CENTIM" since="21"/> + <field name="CENVEM" since="21"/> + <field name="CENVER" since="21"/> + <field name="ENDCOM" since="21"/> + <field name="ENDHDR" since="21"/> + <field name="ENDOFF" since="21"/> + <field name="ENDSIG" since="21"/> + <field name="ENDSIZ" since="21"/> + <field name="ENDSUB" since="21"/> + <field name="ENDTOT" since="21"/> + <field name="EXTCRC" since="21"/> + <field name="EXTHDR" since="21"/> + <field name="EXTLEN" since="21"/> + <field name="EXTSIG" since="21"/> + <field name="EXTSIZ" since="21"/> + <field name="LOCCRC" since="21"/> + <field name="LOCEXT" since="21"/> + <field name="LOCFLG" since="21"/> + <field name="LOCHDR" since="21"/> + <field name="LOCHOW" since="21"/> + <field name="LOCLEN" since="21"/> + <field name="LOCNAM" since="21"/> + <field name="LOCSIG" since="21"/> + <field name="LOCSIZ" since="21"/> + <field name="LOCTIM" since="21"/> + <field name="LOCVER" since="21"/> + <field name="OPEN_DELETE"/> + <field name="OPEN_READ"/> + </class> + <class name="java/util/zip/ZipInputStream" since="1"> + <extends name="java/util/zip/InflaterInputStream"/> + <method name="<init>(Ljava/io/InputStream;)V"/> + <method name="<init>(Ljava/io/InputStream;Ljava/nio/charset/Charset;)V" since="24"/> + <method name="closeEntry()V"/> + <method name="createZipEntry(Ljava/lang/String;)Ljava/util/zip/ZipEntry;"/> + <method name="getNextEntry()Ljava/util/zip/ZipEntry;"/> + <field name="CENATT" since="21"/> + <field name="CENATX" since="21"/> + <field name="CENCOM" since="21"/> + <field name="CENCRC" since="21"/> + <field name="CENDSK" since="21"/> + <field name="CENEXT" since="21"/> + <field name="CENFLG" since="21"/> + <field name="CENHDR" since="21"/> + <field name="CENHOW" since="21"/> + <field name="CENLEN" since="21"/> + <field name="CENNAM" since="21"/> + <field name="CENOFF" since="21"/> + <field name="CENSIG" since="21"/> + <field name="CENSIZ" since="21"/> + <field name="CENTIM" since="21"/> + <field name="CENVEM" since="21"/> + <field name="CENVER" since="21"/> + <field name="ENDCOM" since="21"/> + <field name="ENDHDR" since="21"/> + <field name="ENDOFF" since="21"/> + <field name="ENDSIG" since="21"/> + <field name="ENDSIZ" since="21"/> + <field name="ENDSUB" since="21"/> + <field name="ENDTOT" since="21"/> + <field name="EXTCRC" since="21"/> + <field name="EXTHDR" since="21"/> + <field name="EXTLEN" since="21"/> + <field name="EXTSIG" since="21"/> + <field name="EXTSIZ" since="21"/> + <field name="LOCCRC" since="21"/> + <field name="LOCEXT" since="21"/> + <field name="LOCFLG" since="21"/> + <field name="LOCHDR" since="21"/> + <field name="LOCHOW" since="21"/> + <field name="LOCLEN" since="21"/> + <field name="LOCNAM" since="21"/> + <field name="LOCSIG" since="21"/> + <field name="LOCSIZ" since="21"/> + <field name="LOCTIM" since="21"/> + <field name="LOCVER" since="21"/> + </class> + <class name="java/util/zip/ZipOutputStream" since="1"> + <extends name="java/util/zip/DeflaterOutputStream"/> + <method name="<init>(Ljava/io/OutputStream;)V"/> + <method name="<init>(Ljava/io/OutputStream;Ljava/nio/charset/Charset;)V" since="24"/> + <method name="closeEntry()V"/> + <method name="putNextEntry(Ljava/util/zip/ZipEntry;)V"/> + <method name="setComment(Ljava/lang/String;)V"/> + <method name="setLevel(I)V"/> + <method name="setMethod(I)V"/> + <field name="CENATT" since="21"/> + <field name="CENATX" since="21"/> + <field name="CENCOM" since="21"/> + <field name="CENCRC" since="21"/> + <field name="CENDSK" since="21"/> + <field name="CENEXT" since="21"/> + <field name="CENFLG" since="21"/> + <field name="CENHDR" since="21"/> + <field name="CENHOW" since="21"/> + <field name="CENLEN" since="21"/> + <field name="CENNAM" since="21"/> + <field name="CENOFF" since="21"/> + <field name="CENSIG" since="21"/> + <field name="CENSIZ" since="21"/> + <field name="CENTIM" since="21"/> + <field name="CENVEM" since="21"/> + <field name="CENVER" since="21"/> + <field name="DEFLATED"/> + <field name="ENDCOM" since="21"/> + <field name="ENDHDR" since="21"/> + <field name="ENDOFF" since="21"/> + <field name="ENDSIG" since="21"/> + <field name="ENDSIZ" since="21"/> + <field name="ENDSUB" since="21"/> + <field name="ENDTOT" since="21"/> + <field name="EXTCRC" since="21"/> + <field name="EXTHDR" since="21"/> + <field name="EXTLEN" since="21"/> + <field name="EXTSIG" since="21"/> + <field name="EXTSIZ" since="21"/> + <field name="LOCCRC" since="21"/> + <field name="LOCEXT" since="21"/> + <field name="LOCFLG" since="21"/> + <field name="LOCHDR" since="21"/> + <field name="LOCHOW" since="21"/> + <field name="LOCLEN" since="21"/> + <field name="LOCNAM" since="21"/> + <field name="LOCSIG" since="21"/> + <field name="LOCSIZ" since="21"/> + <field name="LOCTIM" since="21"/> + <field name="LOCVER" since="21"/> + <field name="STORED"/> + </class> + <class name="javax/crypto/AEADBadTagException" since="19"> + <extends name="javax/crypto/BadPaddingException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="javax/crypto/BadPaddingException" since="1"> + <extends name="java/security/GeneralSecurityException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="javax/crypto/Cipher" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljavax/crypto/CipherSpi;Ljava/security/Provider;Ljava/lang/String;)V"/> + <method name="doFinal()[B"/> + <method name="doFinal(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I"/> + <method name="doFinal([B)[B"/> + <method name="doFinal([BI)I"/> + <method name="doFinal([BII)[B"/> + <method name="doFinal([BII[B)I"/> + <method name="doFinal([BII[BI)I"/> + <method name="getAlgorithm()Ljava/lang/String;"/> + <method name="getBlockSize()I"/> + <method name="getExemptionMechanism()Ljavax/crypto/ExemptionMechanism;"/> + <method name="getIV()[B"/> + <method name="getInstance(Ljava/lang/String;)Ljavax/crypto/Cipher;"/> + <method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/crypto/Cipher;"/> + <method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/Cipher;"/> + <method name="getMaxAllowedKeyLength(Ljava/lang/String;)I"/> + <method name="getMaxAllowedParameterSpec(Ljava/lang/String;)Ljava/security/spec/AlgorithmParameterSpec;"/> + <method name="getOutputSize(I)I"/> + <method name="getParameters()Ljava/security/AlgorithmParameters;"/> + <method name="getProvider()Ljava/security/Provider;"/> + <method name="init(ILjava/security/Key;)V"/> + <method name="init(ILjava/security/Key;Ljava/security/AlgorithmParameters;)V"/> + <method name="init(ILjava/security/Key;Ljava/security/AlgorithmParameters;Ljava/security/SecureRandom;)V"/> + <method name="init(ILjava/security/Key;Ljava/security/SecureRandom;)V"/> + <method name="init(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V"/> + <method name="init(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V"/> + <method name="init(ILjava/security/cert/Certificate;)V"/> + <method name="init(ILjava/security/cert/Certificate;Ljava/security/SecureRandom;)V"/> + <method name="unwrap([BLjava/lang/String;I)Ljava/security/Key;"/> + <method name="update(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I"/> + <method name="update([B)[B"/> + <method name="update([BII)[B"/> + <method name="update([BII[B)I"/> + <method name="update([BII[BI)I"/> + <method name="updateAAD(Ljava/nio/ByteBuffer;)V" since="19"/> + <method name="updateAAD([B)V" since="19"/> + <method name="updateAAD([BII)V" since="19"/> + <method name="wrap(Ljava/security/Key;)[B"/> + <field name="DECRYPT_MODE"/> + <field name="ENCRYPT_MODE"/> + <field name="PRIVATE_KEY"/> + <field name="PUBLIC_KEY"/> + <field name="SECRET_KEY"/> + <field name="UNWRAP_MODE"/> + <field name="WRAP_MODE"/> + </class> + <class name="javax/crypto/CipherInputStream" since="1"> + <extends name="java/io/FilterInputStream"/> + <method name="<init>(Ljava/io/InputStream;)V"/> + <method name="<init>(Ljava/io/InputStream;Ljavax/crypto/Cipher;)V"/> + </class> + <class name="javax/crypto/CipherOutputStream" since="1"> + <extends name="java/io/FilterOutputStream"/> + <method name="<init>(Ljava/io/OutputStream;)V"/> + <method name="<init>(Ljava/io/OutputStream;Ljavax/crypto/Cipher;)V"/> + </class> + <class name="javax/crypto/CipherSpi" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="engineDoFinal(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I"/> + <method name="engineDoFinal([BII)[B"/> + <method name="engineDoFinal([BII[BI)I"/> + <method name="engineGetBlockSize()I"/> + <method name="engineGetIV()[B"/> + <method name="engineGetKeySize(Ljava/security/Key;)I"/> + <method name="engineGetOutputSize(I)I"/> + <method name="engineGetParameters()Ljava/security/AlgorithmParameters;"/> + <method name="engineInit(ILjava/security/Key;Ljava/security/AlgorithmParameters;Ljava/security/SecureRandom;)V"/> + <method name="engineInit(ILjava/security/Key;Ljava/security/SecureRandom;)V"/> + <method name="engineInit(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V"/> + <method name="engineSetMode(Ljava/lang/String;)V"/> + <method name="engineSetPadding(Ljava/lang/String;)V"/> + <method name="engineUnwrap([BLjava/lang/String;I)Ljava/security/Key;"/> + <method name="engineUpdate(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I"/> + <method name="engineUpdate([BII)[B"/> + <method name="engineUpdate([BII[BI)I"/> + <method name="engineUpdateAAD(Ljava/nio/ByteBuffer;)V" since="19"/> + <method name="engineUpdateAAD([BII)V" since="19"/> + <method name="engineWrap(Ljava/security/Key;)[B"/> + </class> + <class name="javax/crypto/EncryptedPrivateKeyInfo" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;[B)V"/> + <method name="<init>(Ljava/security/AlgorithmParameters;[B)V"/> + <method name="<init>([B)V"/> + <method name="getAlgName()Ljava/lang/String;"/> + <method name="getAlgParameters()Ljava/security/AlgorithmParameters;"/> + <method name="getEncoded()[B"/> + <method name="getEncryptedData()[B"/> + <method name="getKeySpec(Ljava/security/Key;)Ljava/security/spec/PKCS8EncodedKeySpec;"/> + <method name="getKeySpec(Ljava/security/Key;Ljava/lang/String;)Ljava/security/spec/PKCS8EncodedKeySpec;"/> + <method name="getKeySpec(Ljava/security/Key;Ljava/security/Provider;)Ljava/security/spec/PKCS8EncodedKeySpec;"/> + <method name="getKeySpec(Ljavax/crypto/Cipher;)Ljava/security/spec/PKCS8EncodedKeySpec;"/> + </class> + <class name="javax/crypto/ExemptionMechanism" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljavax/crypto/ExemptionMechanismSpi;Ljava/security/Provider;Ljava/lang/String;)V"/> + <method name="genExemptionBlob()[B"/> + <method name="genExemptionBlob([B)I"/> + <method name="genExemptionBlob([BI)I"/> + <method name="getInstance(Ljava/lang/String;)Ljavax/crypto/ExemptionMechanism;"/> + <method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/crypto/ExemptionMechanism;"/> + <method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/ExemptionMechanism;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getOutputSize(I)I"/> + <method name="getProvider()Ljava/security/Provider;"/> + <method name="init(Ljava/security/Key;)V"/> + <method name="init(Ljava/security/Key;Ljava/security/AlgorithmParameters;)V"/> + <method name="init(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V"/> + <method name="isCryptoAllowed(Ljava/security/Key;)Z"/> + </class> + <class name="javax/crypto/ExemptionMechanismException" since="1"> + <extends name="java/security/GeneralSecurityException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="javax/crypto/ExemptionMechanismSpi" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="engineGenExemptionBlob()[B"/> + <method name="engineGenExemptionBlob([BI)I"/> + <method name="engineGetOutputSize(I)I"/> + <method name="engineInit(Ljava/security/Key;)V"/> + <method name="engineInit(Ljava/security/Key;Ljava/security/AlgorithmParameters;)V"/> + <method name="engineInit(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V"/> + </class> + <class name="javax/crypto/IllegalBlockSizeException" since="1"> + <extends name="java/security/GeneralSecurityException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="javax/crypto/KeyAgreement" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljavax/crypto/KeyAgreementSpi;Ljava/security/Provider;Ljava/lang/String;)V"/> + <method name="doPhase(Ljava/security/Key;Z)Ljava/security/Key;"/> + <method name="generateSecret()[B"/> + <method name="generateSecret(Ljava/lang/String;)Ljavax/crypto/SecretKey;"/> + <method name="generateSecret([BI)I"/> + <method name="getAlgorithm()Ljava/lang/String;"/> + <method name="getInstance(Ljava/lang/String;)Ljavax/crypto/KeyAgreement;"/> + <method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/crypto/KeyAgreement;"/> + <method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/KeyAgreement;"/> + <method name="getProvider()Ljava/security/Provider;"/> + <method name="init(Ljava/security/Key;)V"/> + <method name="init(Ljava/security/Key;Ljava/security/SecureRandom;)V"/> + <method name="init(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V"/> + <method name="init(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V"/> + </class> + <class name="javax/crypto/KeyAgreementSpi" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="engineDoPhase(Ljava/security/Key;Z)Ljava/security/Key;"/> + <method name="engineGenerateSecret()[B"/> + <method name="engineGenerateSecret(Ljava/lang/String;)Ljavax/crypto/SecretKey;"/> + <method name="engineGenerateSecret([BI)I"/> + <method name="engineInit(Ljava/security/Key;Ljava/security/SecureRandom;)V"/> + <method name="engineInit(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V"/> + </class> + <class name="javax/crypto/KeyGenerator" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljavax/crypto/KeyGeneratorSpi;Ljava/security/Provider;Ljava/lang/String;)V"/> + <method name="generateKey()Ljavax/crypto/SecretKey;"/> + <method name="getAlgorithm()Ljava/lang/String;"/> + <method name="getInstance(Ljava/lang/String;)Ljavax/crypto/KeyGenerator;"/> + <method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/crypto/KeyGenerator;"/> + <method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/KeyGenerator;"/> + <method name="getProvider()Ljava/security/Provider;"/> + <method name="init(I)V"/> + <method name="init(ILjava/security/SecureRandom;)V"/> + <method name="init(Ljava/security/SecureRandom;)V"/> + <method name="init(Ljava/security/spec/AlgorithmParameterSpec;)V"/> + <method name="init(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V"/> + </class> + <class name="javax/crypto/KeyGeneratorSpi" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="engineGenerateKey()Ljavax/crypto/SecretKey;"/> + <method name="engineInit(ILjava/security/SecureRandom;)V"/> + <method name="engineInit(Ljava/security/SecureRandom;)V"/> + <method name="engineInit(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V"/> + </class> + <class name="javax/crypto/Mac" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>(Ljavax/crypto/MacSpi;Ljava/security/Provider;Ljava/lang/String;)V"/> + <method name="doFinal()[B"/> + <method name="doFinal([B)[B"/> + <method name="doFinal([BI)V"/> + <method name="getAlgorithm()Ljava/lang/String;"/> + <method name="getInstance(Ljava/lang/String;)Ljavax/crypto/Mac;"/> + <method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/crypto/Mac;"/> + <method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/Mac;"/> + <method name="getMacLength()I"/> + <method name="getProvider()Ljava/security/Provider;"/> + <method name="init(Ljava/security/Key;)V"/> + <method name="init(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V"/> + <method name="reset()V"/> + <method name="update(B)V"/> + <method name="update(Ljava/nio/ByteBuffer;)V"/> + <method name="update([B)V"/> + <method name="update([BII)V"/> + </class> + <class name="javax/crypto/MacSpi" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="engineDoFinal()[B"/> + <method name="engineGetMacLength()I"/> + <method name="engineInit(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V"/> + <method name="engineReset()V"/> + <method name="engineUpdate(B)V"/> + <method name="engineUpdate(Ljava/nio/ByteBuffer;)V"/> + <method name="engineUpdate([BII)V"/> + </class> + <class name="javax/crypto/NoSuchPaddingException" since="1"> + <extends name="java/security/GeneralSecurityException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="javax/crypto/NullCipher" since="1"> + <extends name="javax/crypto/Cipher"/> + <method name="<init>()V"/> + </class> + <class name="javax/crypto/SealedObject" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(Ljava/io/Serializable;Ljavax/crypto/Cipher;)V"/> + <method name="<init>(Ljavax/crypto/SealedObject;)V"/> + <method name="getAlgorithm()Ljava/lang/String;"/> + <method name="getObject(Ljava/security/Key;)Ljava/lang/Object;"/> + <method name="getObject(Ljava/security/Key;Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="getObject(Ljavax/crypto/Cipher;)Ljava/lang/Object;"/> + <field name="encodedParams"/> + </class> + <class name="javax/crypto/SecretKey" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/Key"/> + <implements name="javax/security/auth/Destroyable" since="26"/> + <field name="serialVersionUID"/> + </class> + <class name="javax/crypto/SecretKeyFactory" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljavax/crypto/SecretKeyFactorySpi;Ljava/security/Provider;Ljava/lang/String;)V"/> + <method name="generateSecret(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;"/> + <method name="getAlgorithm()Ljava/lang/String;"/> + <method name="getInstance(Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;"/> + <method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;"/> + <method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/SecretKeyFactory;"/> + <method name="getKeySpec(Ljavax/crypto/SecretKey;Ljava/lang/Class;)Ljava/security/spec/KeySpec;"/> + <method name="getProvider()Ljava/security/Provider;"/> + <method name="translateKey(Ljavax/crypto/SecretKey;)Ljavax/crypto/SecretKey;"/> + </class> + <class name="javax/crypto/SecretKeyFactorySpi" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="engineGenerateSecret(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;"/> + <method name="engineGetKeySpec(Ljavax/crypto/SecretKey;Ljava/lang/Class;)Ljava/security/spec/KeySpec;"/> + <method name="engineTranslateKey(Ljavax/crypto/SecretKey;)Ljavax/crypto/SecretKey;"/> + </class> + <class name="javax/crypto/ShortBufferException" since="1"> + <extends name="java/security/GeneralSecurityException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="javax/crypto/interfaces/DHKey" since="1"> + <extends name="java/lang/Object"/> + <method name="getParams()Ljavax/crypto/spec/DHParameterSpec;"/> + </class> + <class name="javax/crypto/interfaces/DHPrivateKey" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/PrivateKey"/> + <implements name="javax/crypto/interfaces/DHKey"/> + <method name="getX()Ljava/math/BigInteger;"/> + <field name="serialVersionUID"/> + </class> + <class name="javax/crypto/interfaces/DHPublicKey" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/PublicKey"/> + <implements name="javax/crypto/interfaces/DHKey"/> + <method name="getY()Ljava/math/BigInteger;"/> + <field name="serialVersionUID"/> + </class> + <class name="javax/crypto/interfaces/PBEKey" since="1"> + <extends name="java/lang/Object"/> + <implements name="javax/crypto/SecretKey"/> + <method name="getIterationCount()I"/> + <method name="getPassword()[C"/> + <method name="getSalt()[B"/> + <field name="serialVersionUID"/> + </class> + <class name="javax/crypto/spec/DESKeySpec" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/KeySpec"/> + <method name="<init>([B)V"/> + <method name="<init>([BI)V"/> + <method name="getKey()[B"/> + <method name="isParityAdjusted([BI)Z"/> + <method name="isWeak([BI)Z"/> + <field name="DES_KEY_LEN"/> + </class> + <class name="javax/crypto/spec/DESedeKeySpec" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/KeySpec"/> + <method name="<init>([B)V"/> + <method name="<init>([BI)V"/> + <method name="getKey()[B"/> + <method name="isParityAdjusted([BI)Z"/> + <field name="DES_EDE_KEY_LEN"/> + </class> + <class name="javax/crypto/spec/DHGenParameterSpec" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/AlgorithmParameterSpec"/> + <method name="<init>(II)V"/> + <method name="getExponentSize()I"/> + <method name="getPrimeSize()I"/> + </class> + <class name="javax/crypto/spec/DHParameterSpec" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/AlgorithmParameterSpec"/> + <method name="<init>(Ljava/math/BigInteger;Ljava/math/BigInteger;)V"/> + <method name="<init>(Ljava/math/BigInteger;Ljava/math/BigInteger;I)V"/> + <method name="getG()Ljava/math/BigInteger;"/> + <method name="getL()I"/> + <method name="getP()Ljava/math/BigInteger;"/> + </class> + <class name="javax/crypto/spec/DHPrivateKeySpec" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/KeySpec"/> + <method name="<init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V"/> + <method name="getG()Ljava/math/BigInteger;"/> + <method name="getP()Ljava/math/BigInteger;"/> + <method name="getX()Ljava/math/BigInteger;"/> + </class> + <class name="javax/crypto/spec/DHPublicKeySpec" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/KeySpec"/> + <method name="<init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V"/> + <method name="getG()Ljava/math/BigInteger;"/> + <method name="getP()Ljava/math/BigInteger;"/> + <method name="getY()Ljava/math/BigInteger;"/> + </class> + <class name="javax/crypto/spec/GCMParameterSpec" since="19"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/AlgorithmParameterSpec"/> + <method name="<init>(I[B)V"/> + <method name="<init>(I[BII)V"/> + <method name="getIV()[B"/> + <method name="getTLen()I"/> + </class> + <class name="javax/crypto/spec/IvParameterSpec" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/AlgorithmParameterSpec"/> + <method name="<init>([B)V"/> + <method name="<init>([BII)V"/> + <method name="getIV()[B"/> + </class> + <class name="javax/crypto/spec/OAEPParameterSpec" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/AlgorithmParameterSpec"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;Ljavax/crypto/spec/PSource;)V"/> + <method name="getDigestAlgorithm()Ljava/lang/String;"/> + <method name="getMGFAlgorithm()Ljava/lang/String;"/> + <method name="getMGFParameters()Ljava/security/spec/AlgorithmParameterSpec;"/> + <method name="getPSource()Ljavax/crypto/spec/PSource;"/> + <field name="DEFAULT"/> + </class> + <class name="javax/crypto/spec/PBEKeySpec" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/KeySpec"/> + <method name="<init>([C)V"/> + <method name="<init>([C[BI)V"/> + <method name="<init>([C[BII)V"/> + <method name="clearPassword()V"/> + <method name="getIterationCount()I"/> + <method name="getKeyLength()I"/> + <method name="getPassword()[C"/> + <method name="getSalt()[B"/> + </class> + <class name="javax/crypto/spec/PBEParameterSpec" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/AlgorithmParameterSpec"/> + <method name="<init>([BI)V"/> + <method name="<init>([BILjava/security/spec/AlgorithmParameterSpec;)V" since="26"/> + <method name="getIterationCount()I"/> + <method name="getParameterSpec()Ljava/security/spec/AlgorithmParameterSpec;" since="26"/> + <method name="getSalt()[B"/> + </class> + <class name="javax/crypto/spec/PSource" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getAlgorithm()Ljava/lang/String;"/> + </class> + <class name="javax/crypto/spec/PSource$PSpecified" since="1"> + <extends name="javax/crypto/spec/PSource"/> + <method name="<init>([B)V"/> + <method name="getValue()[B"/> + <field name="DEFAULT"/> + </class> + <class name="javax/crypto/spec/RC2ParameterSpec" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/AlgorithmParameterSpec"/> + <method name="<init>(I)V"/> + <method name="<init>(I[B)V"/> + <method name="<init>(I[BI)V"/> + <method name="getEffectiveKeyBits()I"/> + <method name="getIV()[B"/> + </class> + <class name="javax/crypto/spec/RC5ParameterSpec" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/spec/AlgorithmParameterSpec"/> + <method name="<init>(III)V"/> + <method name="<init>(III[B)V"/> + <method name="<init>(III[BI)V"/> + <method name="getIV()[B"/> + <method name="getRounds()I"/> + <method name="getVersion()I"/> + <method name="getWordSize()I"/> + </class> + <class name="javax/crypto/spec/SecretKeySpec" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable" removed="24"/> + <implements name="java/security/spec/KeySpec"/> + <implements name="javax/crypto/SecretKey"/> + <method name="<init>([BIILjava/lang/String;)V"/> + <method name="<init>([BLjava/lang/String;)V"/> + </class> + <class name="javax/microedition/khronos/egl/EGL" since="1"> + <extends name="java/lang/Object"/> + </class> + <class name="javax/microedition/khronos/egl/EGL10" since="1"> + <extends name="java/lang/Object"/> + <implements name="javax/microedition/khronos/egl/EGL"/> + <method name="eglChooseConfig(Ljavax/microedition/khronos/egl/EGLDisplay;[I[Ljavax/microedition/khronos/egl/EGLConfig;I[I)Z"/> + <method name="eglCopyBuffers(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLSurface;Ljava/lang/Object;)Z"/> + <method name="eglCreateContext(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;Ljavax/microedition/khronos/egl/EGLContext;[I)Ljavax/microedition/khronos/egl/EGLContext;"/> + <method name="eglCreatePbufferSurface(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;[I)Ljavax/microedition/khronos/egl/EGLSurface;"/> + <method name="eglCreatePixmapSurface(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;Ljava/lang/Object;[I)Ljavax/microedition/khronos/egl/EGLSurface;" deprecated="26"/> + <method name="eglCreateWindowSurface(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;Ljava/lang/Object;[I)Ljavax/microedition/khronos/egl/EGLSurface;"/> + <method name="eglDestroyContext(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLContext;)Z"/> + <method name="eglDestroySurface(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLSurface;)Z"/> + <method name="eglGetConfigAttrib(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;I[I)Z"/> + <method name="eglGetConfigs(Ljavax/microedition/khronos/egl/EGLDisplay;[Ljavax/microedition/khronos/egl/EGLConfig;I[I)Z"/> + <method name="eglGetCurrentContext()Ljavax/microedition/khronos/egl/EGLContext;"/> + <method name="eglGetCurrentDisplay()Ljavax/microedition/khronos/egl/EGLDisplay;"/> + <method name="eglGetCurrentSurface(I)Ljavax/microedition/khronos/egl/EGLSurface;"/> + <method name="eglGetDisplay(Ljava/lang/Object;)Ljavax/microedition/khronos/egl/EGLDisplay;"/> + <method name="eglGetError()I"/> + <method name="eglInitialize(Ljavax/microedition/khronos/egl/EGLDisplay;[I)Z"/> + <method name="eglMakeCurrent(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLSurface;Ljavax/microedition/khronos/egl/EGLSurface;Ljavax/microedition/khronos/egl/EGLContext;)Z"/> + <method name="eglQueryContext(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLContext;I[I)Z"/> + <method name="eglQueryString(Ljavax/microedition/khronos/egl/EGLDisplay;I)Ljava/lang/String;"/> + <method name="eglQuerySurface(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLSurface;I[I)Z"/> + <method name="eglSwapBuffers(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLSurface;)Z"/> + <method name="eglTerminate(Ljavax/microedition/khronos/egl/EGLDisplay;)Z"/> + <method name="eglWaitGL()Z"/> + <method name="eglWaitNative(ILjava/lang/Object;)Z"/> + <field name="EGL_ALPHA_FORMAT"/> + <field name="EGL_ALPHA_MASK_SIZE"/> + <field name="EGL_ALPHA_SIZE"/> + <field name="EGL_BAD_ACCESS"/> + <field name="EGL_BAD_ALLOC"/> + <field name="EGL_BAD_ATTRIBUTE"/> + <field name="EGL_BAD_CONFIG"/> + <field name="EGL_BAD_CONTEXT"/> + <field name="EGL_BAD_CURRENT_SURFACE"/> + <field name="EGL_BAD_DISPLAY"/> + <field name="EGL_BAD_MATCH"/> + <field name="EGL_BAD_NATIVE_PIXMAP"/> + <field name="EGL_BAD_NATIVE_WINDOW"/> + <field name="EGL_BAD_PARAMETER"/> + <field name="EGL_BAD_SURFACE"/> + <field name="EGL_BLUE_SIZE"/> + <field name="EGL_BUFFER_SIZE"/> + <field name="EGL_COLORSPACE"/> + <field name="EGL_COLOR_BUFFER_TYPE"/> + <field name="EGL_CONFIG_CAVEAT"/> + <field name="EGL_CONFIG_ID"/> + <field name="EGL_CORE_NATIVE_ENGINE"/> + <field name="EGL_DEFAULT_DISPLAY"/> + <field name="EGL_DEPTH_SIZE"/> + <field name="EGL_DONT_CARE"/> + <field name="EGL_DRAW"/> + <field name="EGL_EXTENSIONS"/> + <field name="EGL_GREEN_SIZE"/> + <field name="EGL_HEIGHT"/> + <field name="EGL_HORIZONTAL_RESOLUTION"/> + <field name="EGL_LARGEST_PBUFFER"/> + <field name="EGL_LEVEL"/> + <field name="EGL_LUMINANCE_BUFFER"/> + <field name="EGL_LUMINANCE_SIZE"/> + <field name="EGL_MAX_PBUFFER_HEIGHT"/> + <field name="EGL_MAX_PBUFFER_PIXELS"/> + <field name="EGL_MAX_PBUFFER_WIDTH"/> + <field name="EGL_NATIVE_RENDERABLE"/> + <field name="EGL_NATIVE_VISUAL_ID"/> + <field name="EGL_NATIVE_VISUAL_TYPE"/> + <field name="EGL_NONE"/> + <field name="EGL_NON_CONFORMANT_CONFIG"/> + <field name="EGL_NOT_INITIALIZED"/> + <field name="EGL_NO_CONTEXT"/> + <field name="EGL_NO_DISPLAY"/> + <field name="EGL_NO_SURFACE"/> + <field name="EGL_PBUFFER_BIT"/> + <field name="EGL_PIXEL_ASPECT_RATIO"/> + <field name="EGL_PIXMAP_BIT"/> + <field name="EGL_READ"/> + <field name="EGL_RED_SIZE"/> + <field name="EGL_RENDERABLE_TYPE"/> + <field name="EGL_RENDER_BUFFER"/> + <field name="EGL_RGB_BUFFER"/> + <field name="EGL_SAMPLES"/> + <field name="EGL_SAMPLE_BUFFERS"/> + <field name="EGL_SINGLE_BUFFER"/> + <field name="EGL_SLOW_CONFIG"/> + <field name="EGL_STENCIL_SIZE"/> + <field name="EGL_SUCCESS"/> + <field name="EGL_SURFACE_TYPE"/> + <field name="EGL_TRANSPARENT_BLUE_VALUE"/> + <field name="EGL_TRANSPARENT_GREEN_VALUE"/> + <field name="EGL_TRANSPARENT_RED_VALUE"/> + <field name="EGL_TRANSPARENT_RGB"/> + <field name="EGL_TRANSPARENT_TYPE"/> + <field name="EGL_VENDOR"/> + <field name="EGL_VERSION"/> + <field name="EGL_VERTICAL_RESOLUTION"/> + <field name="EGL_WIDTH"/> + <field name="EGL_WINDOW_BIT"/> + </class> + <class name="javax/microedition/khronos/egl/EGL11" since="1"> + <extends name="java/lang/Object"/> + <implements name="javax/microedition/khronos/egl/EGL10"/> + <field name="EGL_CONTEXT_LOST"/> + </class> + <class name="javax/microedition/khronos/egl/EGLConfig" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="javax/microedition/khronos/egl/EGLContext" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getEGL()Ljavax/microedition/khronos/egl/EGL;"/> + <method name="getGL()Ljavax/microedition/khronos/opengles/GL;"/> + </class> + <class name="javax/microedition/khronos/egl/EGLDisplay" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="javax/microedition/khronos/egl/EGLSurface" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + </class> + <class name="javax/microedition/khronos/opengles/GL" since="1"> + <extends name="java/lang/Object"/> + </class> + <class name="javax/microedition/khronos/opengles/GL10" since="1"> + <extends name="java/lang/Object"/> + <implements name="javax/microedition/khronos/opengles/GL"/> + <method name="glActiveTexture(I)V"/> + <method name="glAlphaFunc(IF)V"/> + <method name="glAlphaFuncx(II)V"/> + <method name="glBindTexture(II)V"/> + <method name="glBlendFunc(II)V"/> + <method name="glClear(I)V"/> + <method name="glClearColor(FFFF)V"/> + <method name="glClearColorx(IIII)V"/> + <method name="glClearDepthf(F)V"/> + <method name="glClearDepthx(I)V"/> + <method name="glClearStencil(I)V"/> + <method name="glClientActiveTexture(I)V"/> + <method name="glColor4f(FFFF)V"/> + <method name="glColor4x(IIII)V"/> + <method name="glColorMask(ZZZZ)V"/> + <method name="glColorPointer(IIILjava/nio/Buffer;)V"/> + <method name="glCompressedTexImage2D(IIIIIIILjava/nio/Buffer;)V"/> + <method name="glCompressedTexSubImage2D(IIIIIIIILjava/nio/Buffer;)V"/> + <method name="glCopyTexImage2D(IIIIIIII)V"/> + <method name="glCopyTexSubImage2D(IIIIIIII)V"/> + <method name="glCullFace(I)V"/> + <method name="glDeleteTextures(ILjava/nio/IntBuffer;)V"/> + <method name="glDeleteTextures(I[II)V"/> + <method name="glDepthFunc(I)V"/> + <method name="glDepthMask(Z)V"/> + <method name="glDepthRangef(FF)V"/> + <method name="glDepthRangex(II)V"/> + <method name="glDisable(I)V"/> + <method name="glDisableClientState(I)V"/> + <method name="glDrawArrays(III)V"/> + <method name="glDrawElements(IIILjava/nio/Buffer;)V"/> + <method name="glEnable(I)V"/> + <method name="glEnableClientState(I)V"/> + <method name="glFinish()V"/> + <method name="glFlush()V"/> + <method name="glFogf(IF)V"/> + <method name="glFogfv(ILjava/nio/FloatBuffer;)V"/> + <method name="glFogfv(I[FI)V"/> + <method name="glFogx(II)V"/> + <method name="glFogxv(ILjava/nio/IntBuffer;)V"/> + <method name="glFogxv(I[II)V"/> + <method name="glFrontFace(I)V"/> + <method name="glFrustumf(FFFFFF)V"/> + <method name="glFrustumx(IIIIII)V"/> + <method name="glGenTextures(ILjava/nio/IntBuffer;)V"/> + <method name="glGenTextures(I[II)V"/> + <method name="glGetError()I"/> + <method name="glGetIntegerv(ILjava/nio/IntBuffer;)V"/> + <method name="glGetIntegerv(I[II)V"/> + <method name="glGetString(I)Ljava/lang/String;"/> + <method name="glHint(II)V"/> + <method name="glLightModelf(IF)V"/> + <method name="glLightModelfv(ILjava/nio/FloatBuffer;)V"/> + <method name="glLightModelfv(I[FI)V"/> + <method name="glLightModelx(II)V"/> + <method name="glLightModelxv(ILjava/nio/IntBuffer;)V"/> + <method name="glLightModelxv(I[II)V"/> + <method name="glLightf(IIF)V"/> + <method name="glLightfv(IILjava/nio/FloatBuffer;)V"/> + <method name="glLightfv(II[FI)V"/> + <method name="glLightx(III)V"/> + <method name="glLightxv(IILjava/nio/IntBuffer;)V"/> + <method name="glLightxv(II[II)V"/> + <method name="glLineWidth(F)V"/> + <method name="glLineWidthx(I)V"/> + <method name="glLoadIdentity()V"/> + <method name="glLoadMatrixf(Ljava/nio/FloatBuffer;)V"/> + <method name="glLoadMatrixf([FI)V"/> + <method name="glLoadMatrixx(Ljava/nio/IntBuffer;)V"/> + <method name="glLoadMatrixx([II)V"/> + <method name="glLogicOp(I)V"/> + <method name="glMaterialf(IIF)V"/> + <method name="glMaterialfv(IILjava/nio/FloatBuffer;)V"/> + <method name="glMaterialfv(II[FI)V"/> + <method name="glMaterialx(III)V"/> + <method name="glMaterialxv(IILjava/nio/IntBuffer;)V"/> + <method name="glMaterialxv(II[II)V"/> + <method name="glMatrixMode(I)V"/> + <method name="glMultMatrixf(Ljava/nio/FloatBuffer;)V"/> + <method name="glMultMatrixf([FI)V"/> + <method name="glMultMatrixx(Ljava/nio/IntBuffer;)V"/> + <method name="glMultMatrixx([II)V"/> + <method name="glMultiTexCoord4f(IFFFF)V"/> + <method name="glMultiTexCoord4x(IIIII)V"/> + <method name="glNormal3f(FFF)V"/> + <method name="glNormal3x(III)V"/> + <method name="glNormalPointer(IILjava/nio/Buffer;)V"/> + <method name="glOrthof(FFFFFF)V"/> + <method name="glOrthox(IIIIII)V"/> + <method name="glPixelStorei(II)V"/> + <method name="glPointSize(F)V"/> + <method name="glPointSizex(I)V"/> + <method name="glPolygonOffset(FF)V"/> + <method name="glPolygonOffsetx(II)V"/> + <method name="glPopMatrix()V"/> + <method name="glPushMatrix()V"/> + <method name="glReadPixels(IIIIIILjava/nio/Buffer;)V"/> + <method name="glRotatef(FFFF)V"/> + <method name="glRotatex(IIII)V"/> + <method name="glSampleCoverage(FZ)V"/> + <method name="glSampleCoveragex(IZ)V"/> + <method name="glScalef(FFF)V"/> + <method name="glScalex(III)V"/> + <method name="glScissor(IIII)V"/> + <method name="glShadeModel(I)V"/> + <method name="glStencilFunc(III)V"/> + <method name="glStencilMask(I)V"/> + <method name="glStencilOp(III)V"/> + <method name="glTexCoordPointer(IIILjava/nio/Buffer;)V"/> + <method name="glTexEnvf(IIF)V"/> + <method name="glTexEnvfv(IILjava/nio/FloatBuffer;)V"/> + <method name="glTexEnvfv(II[FI)V"/> + <method name="glTexEnvx(III)V"/> + <method name="glTexEnvxv(IILjava/nio/IntBuffer;)V"/> + <method name="glTexEnvxv(II[II)V"/> + <method name="glTexImage2D(IIIIIIIILjava/nio/Buffer;)V"/> + <method name="glTexParameterf(IIF)V"/> + <method name="glTexParameterx(III)V"/> + <method name="glTexSubImage2D(IIIIIIIILjava/nio/Buffer;)V"/> + <method name="glTranslatef(FFF)V"/> + <method name="glTranslatex(III)V"/> + <method name="glVertexPointer(IIILjava/nio/Buffer;)V"/> + <method name="glViewport(IIII)V"/> + <field name="GL_ADD"/> + <field name="GL_ALIASED_LINE_WIDTH_RANGE"/> + <field name="GL_ALIASED_POINT_SIZE_RANGE"/> + <field name="GL_ALPHA"/> + <field name="GL_ALPHA_BITS"/> + <field name="GL_ALPHA_TEST"/> + <field name="GL_ALWAYS"/> + <field name="GL_AMBIENT"/> + <field name="GL_AMBIENT_AND_DIFFUSE"/> + <field name="GL_AND"/> + <field name="GL_AND_INVERTED"/> + <field name="GL_AND_REVERSE"/> + <field name="GL_BACK"/> + <field name="GL_BLEND"/> + <field name="GL_BLUE_BITS"/> + <field name="GL_BYTE"/> + <field name="GL_CCW"/> + <field name="GL_CLAMP_TO_EDGE"/> + <field name="GL_CLEAR"/> + <field name="GL_COLOR_ARRAY"/> + <field name="GL_COLOR_BUFFER_BIT"/> + <field name="GL_COLOR_LOGIC_OP"/> + <field name="GL_COLOR_MATERIAL"/> + <field name="GL_COMPRESSED_TEXTURE_FORMATS"/> + <field name="GL_CONSTANT_ATTENUATION"/> + <field name="GL_COPY"/> + <field name="GL_COPY_INVERTED"/> + <field name="GL_CULL_FACE"/> + <field name="GL_CW"/> + <field name="GL_DECAL"/> + <field name="GL_DECR"/> + <field name="GL_DEPTH_BITS"/> + <field name="GL_DEPTH_BUFFER_BIT"/> + <field name="GL_DEPTH_TEST"/> + <field name="GL_DIFFUSE"/> + <field name="GL_DITHER"/> + <field name="GL_DONT_CARE"/> + <field name="GL_DST_ALPHA"/> + <field name="GL_DST_COLOR"/> + <field name="GL_EMISSION"/> + <field name="GL_EQUAL"/> + <field name="GL_EQUIV"/> + <field name="GL_EXP"/> + <field name="GL_EXP2"/> + <field name="GL_EXTENSIONS"/> + <field name="GL_FALSE"/> + <field name="GL_FASTEST"/> + <field name="GL_FIXED"/> + <field name="GL_FLAT"/> + <field name="GL_FLOAT"/> + <field name="GL_FOG"/> + <field name="GL_FOG_COLOR"/> + <field name="GL_FOG_DENSITY"/> + <field name="GL_FOG_END"/> + <field name="GL_FOG_HINT"/> + <field name="GL_FOG_MODE"/> + <field name="GL_FOG_START"/> + <field name="GL_FRONT"/> + <field name="GL_FRONT_AND_BACK"/> + <field name="GL_GEQUAL"/> + <field name="GL_GREATER"/> + <field name="GL_GREEN_BITS"/> + <field name="GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES"/> + <field name="GL_IMPLEMENTATION_COLOR_READ_TYPE_OES"/> + <field name="GL_INCR"/> + <field name="GL_INVALID_ENUM"/> + <field name="GL_INVALID_OPERATION"/> + <field name="GL_INVALID_VALUE"/> + <field name="GL_INVERT"/> + <field name="GL_KEEP"/> + <field name="GL_LEQUAL"/> + <field name="GL_LESS"/> + <field name="GL_LIGHT0"/> + <field name="GL_LIGHT1"/> + <field name="GL_LIGHT2"/> + <field name="GL_LIGHT3"/> + <field name="GL_LIGHT4"/> + <field name="GL_LIGHT5"/> + <field name="GL_LIGHT6"/> + <field name="GL_LIGHT7"/> + <field name="GL_LIGHTING"/> + <field name="GL_LIGHT_MODEL_AMBIENT"/> + <field name="GL_LIGHT_MODEL_TWO_SIDE"/> + <field name="GL_LINEAR"/> + <field name="GL_LINEAR_ATTENUATION"/> + <field name="GL_LINEAR_MIPMAP_LINEAR"/> + <field name="GL_LINEAR_MIPMAP_NEAREST"/> + <field name="GL_LINES"/> + <field name="GL_LINE_LOOP"/> + <field name="GL_LINE_SMOOTH"/> + <field name="GL_LINE_SMOOTH_HINT"/> + <field name="GL_LINE_STRIP"/> + <field name="GL_LUMINANCE"/> + <field name="GL_LUMINANCE_ALPHA"/> + <field name="GL_MAX_ELEMENTS_INDICES"/> + <field name="GL_MAX_ELEMENTS_VERTICES"/> + <field name="GL_MAX_LIGHTS"/> + <field name="GL_MAX_MODELVIEW_STACK_DEPTH"/> + <field name="GL_MAX_PROJECTION_STACK_DEPTH"/> + <field name="GL_MAX_TEXTURE_SIZE"/> + <field name="GL_MAX_TEXTURE_STACK_DEPTH"/> + <field name="GL_MAX_TEXTURE_UNITS"/> + <field name="GL_MAX_VIEWPORT_DIMS"/> + <field name="GL_MODELVIEW"/> + <field name="GL_MODULATE"/> + <field name="GL_MULTISAMPLE"/> + <field name="GL_NAND"/> + <field name="GL_NEAREST"/> + <field name="GL_NEAREST_MIPMAP_LINEAR"/> + <field name="GL_NEAREST_MIPMAP_NEAREST"/> + <field name="GL_NEVER"/> + <field name="GL_NICEST"/> + <field name="GL_NOOP"/> + <field name="GL_NOR"/> + <field name="GL_NORMALIZE"/> + <field name="GL_NORMAL_ARRAY"/> + <field name="GL_NOTEQUAL"/> + <field name="GL_NO_ERROR"/> + <field name="GL_NUM_COMPRESSED_TEXTURE_FORMATS"/> + <field name="GL_ONE"/> + <field name="GL_ONE_MINUS_DST_ALPHA"/> + <field name="GL_ONE_MINUS_DST_COLOR"/> + <field name="GL_ONE_MINUS_SRC_ALPHA"/> + <field name="GL_ONE_MINUS_SRC_COLOR"/> + <field name="GL_OR"/> + <field name="GL_OR_INVERTED"/> + <field name="GL_OR_REVERSE"/> + <field name="GL_OUT_OF_MEMORY"/> + <field name="GL_PACK_ALIGNMENT"/> + <field name="GL_PALETTE4_R5_G6_B5_OES"/> + <field name="GL_PALETTE4_RGB5_A1_OES"/> + <field name="GL_PALETTE4_RGB8_OES"/> + <field name="GL_PALETTE4_RGBA4_OES"/> + <field name="GL_PALETTE4_RGBA8_OES"/> + <field name="GL_PALETTE8_R5_G6_B5_OES"/> + <field name="GL_PALETTE8_RGB5_A1_OES"/> + <field name="GL_PALETTE8_RGB8_OES"/> + <field name="GL_PALETTE8_RGBA4_OES"/> + <field name="GL_PALETTE8_RGBA8_OES"/> + <field name="GL_PERSPECTIVE_CORRECTION_HINT"/> + <field name="GL_POINTS"/> + <field name="GL_POINT_FADE_THRESHOLD_SIZE"/> + <field name="GL_POINT_SIZE"/> + <field name="GL_POINT_SMOOTH"/> + <field name="GL_POINT_SMOOTH_HINT"/> + <field name="GL_POLYGON_OFFSET_FILL"/> + <field name="GL_POLYGON_SMOOTH_HINT"/> + <field name="GL_POSITION"/> + <field name="GL_PROJECTION"/> + <field name="GL_QUADRATIC_ATTENUATION"/> + <field name="GL_RED_BITS"/> + <field name="GL_RENDERER"/> + <field name="GL_REPEAT"/> + <field name="GL_REPLACE"/> + <field name="GL_RESCALE_NORMAL"/> + <field name="GL_RGB"/> + <field name="GL_RGBA"/> + <field name="GL_SAMPLE_ALPHA_TO_COVERAGE"/> + <field name="GL_SAMPLE_ALPHA_TO_ONE"/> + <field name="GL_SAMPLE_COVERAGE"/> + <field name="GL_SCISSOR_TEST"/> + <field name="GL_SET"/> + <field name="GL_SHININESS"/> + <field name="GL_SHORT"/> + <field name="GL_SMOOTH"/> + <field name="GL_SMOOTH_LINE_WIDTH_RANGE"/> + <field name="GL_SMOOTH_POINT_SIZE_RANGE"/> + <field name="GL_SPECULAR"/> + <field name="GL_SPOT_CUTOFF"/> + <field name="GL_SPOT_DIRECTION"/> + <field name="GL_SPOT_EXPONENT"/> + <field name="GL_SRC_ALPHA"/> + <field name="GL_SRC_ALPHA_SATURATE"/> + <field name="GL_SRC_COLOR"/> + <field name="GL_STACK_OVERFLOW"/> + <field name="GL_STACK_UNDERFLOW"/> + <field name="GL_STENCIL_BITS"/> + <field name="GL_STENCIL_BUFFER_BIT"/> + <field name="GL_STENCIL_TEST"/> + <field name="GL_SUBPIXEL_BITS"/> + <field name="GL_TEXTURE"/> + <field name="GL_TEXTURE0"/> + <field name="GL_TEXTURE1"/> + <field name="GL_TEXTURE10"/> + <field name="GL_TEXTURE11"/> + <field name="GL_TEXTURE12"/> + <field name="GL_TEXTURE13"/> + <field name="GL_TEXTURE14"/> + <field name="GL_TEXTURE15"/> + <field name="GL_TEXTURE16"/> + <field name="GL_TEXTURE17"/> + <field name="GL_TEXTURE18"/> + <field name="GL_TEXTURE19"/> + <field name="GL_TEXTURE2"/> + <field name="GL_TEXTURE20"/> + <field name="GL_TEXTURE21"/> + <field name="GL_TEXTURE22"/> + <field name="GL_TEXTURE23"/> + <field name="GL_TEXTURE24"/> + <field name="GL_TEXTURE25"/> + <field name="GL_TEXTURE26"/> + <field name="GL_TEXTURE27"/> + <field name="GL_TEXTURE28"/> + <field name="GL_TEXTURE29"/> + <field name="GL_TEXTURE3"/> + <field name="GL_TEXTURE30"/> + <field name="GL_TEXTURE31"/> + <field name="GL_TEXTURE4"/> + <field name="GL_TEXTURE5"/> + <field name="GL_TEXTURE6"/> + <field name="GL_TEXTURE7"/> + <field name="GL_TEXTURE8"/> + <field name="GL_TEXTURE9"/> + <field name="GL_TEXTURE_2D"/> + <field name="GL_TEXTURE_COORD_ARRAY"/> + <field name="GL_TEXTURE_ENV"/> + <field name="GL_TEXTURE_ENV_COLOR"/> + <field name="GL_TEXTURE_ENV_MODE"/> + <field name="GL_TEXTURE_MAG_FILTER"/> + <field name="GL_TEXTURE_MIN_FILTER"/> + <field name="GL_TEXTURE_WRAP_S"/> + <field name="GL_TEXTURE_WRAP_T"/> + <field name="GL_TRIANGLES"/> + <field name="GL_TRIANGLE_FAN"/> + <field name="GL_TRIANGLE_STRIP"/> + <field name="GL_TRUE"/> + <field name="GL_UNPACK_ALIGNMENT"/> + <field name="GL_UNSIGNED_BYTE"/> + <field name="GL_UNSIGNED_SHORT"/> + <field name="GL_UNSIGNED_SHORT_4_4_4_4"/> + <field name="GL_UNSIGNED_SHORT_5_5_5_1"/> + <field name="GL_UNSIGNED_SHORT_5_6_5"/> + <field name="GL_VENDOR"/> + <field name="GL_VERSION"/> + <field name="GL_VERTEX_ARRAY"/> + <field name="GL_XOR"/> + <field name="GL_ZERO"/> + </class> + <class name="javax/microedition/khronos/opengles/GL10Ext" since="1"> + <extends name="java/lang/Object"/> + <implements name="javax/microedition/khronos/opengles/GL"/> + <method name="glQueryMatrixxOES(Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;)I"/> + <method name="glQueryMatrixxOES([II[II)I"/> + </class> + <class name="javax/microedition/khronos/opengles/GL11" since="1"> + <extends name="java/lang/Object"/> + <implements name="javax/microedition/khronos/opengles/GL10"/> + <method name="glBindBuffer(II)V"/> + <method name="glBufferData(IILjava/nio/Buffer;I)V"/> + <method name="glBufferSubData(IIILjava/nio/Buffer;)V"/> + <method name="glClipPlanef(ILjava/nio/FloatBuffer;)V"/> + <method name="glClipPlanef(I[FI)V"/> + <method name="glClipPlanex(ILjava/nio/IntBuffer;)V"/> + <method name="glClipPlanex(I[II)V"/> + <method name="glColor4ub(BBBB)V"/> + <method name="glColorPointer(IIII)V"/> + <method name="glDeleteBuffers(ILjava/nio/IntBuffer;)V"/> + <method name="glDeleteBuffers(I[II)V"/> + <method name="glDrawElements(IIII)V"/> + <method name="glGenBuffers(ILjava/nio/IntBuffer;)V"/> + <method name="glGenBuffers(I[II)V"/> + <method name="glGetBooleanv(ILjava/nio/IntBuffer;)V"/> + <method name="glGetBooleanv(I[ZI)V"/> + <method name="glGetBufferParameteriv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetBufferParameteriv(II[II)V"/> + <method name="glGetClipPlanef(ILjava/nio/FloatBuffer;)V"/> + <method name="glGetClipPlanef(I[FI)V"/> + <method name="glGetClipPlanex(ILjava/nio/IntBuffer;)V"/> + <method name="glGetClipPlanex(I[II)V"/> + <method name="glGetFixedv(ILjava/nio/IntBuffer;)V"/> + <method name="glGetFixedv(I[II)V"/> + <method name="glGetFloatv(ILjava/nio/FloatBuffer;)V"/> + <method name="glGetFloatv(I[FI)V"/> + <method name="glGetLightfv(IILjava/nio/FloatBuffer;)V"/> + <method name="glGetLightfv(II[FI)V"/> + <method name="glGetLightxv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetLightxv(II[II)V"/> + <method name="glGetMaterialfv(IILjava/nio/FloatBuffer;)V"/> + <method name="glGetMaterialfv(II[FI)V"/> + <method name="glGetMaterialxv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetMaterialxv(II[II)V"/> + <method name="glGetPointerv(I[Ljava/nio/Buffer;)V"/> + <method name="glGetTexEnviv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetTexEnviv(II[II)V"/> + <method name="glGetTexEnvxv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetTexEnvxv(II[II)V"/> + <method name="glGetTexParameterfv(IILjava/nio/FloatBuffer;)V"/> + <method name="glGetTexParameterfv(II[FI)V"/> + <method name="glGetTexParameteriv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetTexParameteriv(II[II)V"/> + <method name="glGetTexParameterxv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetTexParameterxv(II[II)V"/> + <method name="glIsBuffer(I)Z"/> + <method name="glIsEnabled(I)Z"/> + <method name="glIsTexture(I)Z"/> + <method name="glNormalPointer(III)V"/> + <method name="glPointParameterf(IF)V"/> + <method name="glPointParameterfv(ILjava/nio/FloatBuffer;)V"/> + <method name="glPointParameterfv(I[FI)V"/> + <method name="glPointParameterx(II)V"/> + <method name="glPointParameterxv(ILjava/nio/IntBuffer;)V"/> + <method name="glPointParameterxv(I[II)V"/> + <method name="glPointSizePointerOES(IILjava/nio/Buffer;)V"/> + <method name="glTexCoordPointer(IIII)V"/> + <method name="glTexEnvi(III)V"/> + <method name="glTexEnviv(IILjava/nio/IntBuffer;)V"/> + <method name="glTexEnviv(II[II)V"/> + <method name="glTexParameterfv(IILjava/nio/FloatBuffer;)V"/> + <method name="glTexParameterfv(II[FI)V"/> + <method name="glTexParameteri(III)V"/> + <method name="glTexParameteriv(IILjava/nio/IntBuffer;)V"/> + <method name="glTexParameteriv(II[II)V"/> + <method name="glTexParameterxv(IILjava/nio/IntBuffer;)V"/> + <method name="glTexParameterxv(II[II)V"/> + <method name="glVertexPointer(IIII)V"/> + <field name="GL_ACTIVE_TEXTURE"/> + <field name="GL_ADD_SIGNED"/> + <field name="GL_ALPHA_SCALE"/> + <field name="GL_ALPHA_TEST_FUNC"/> + <field name="GL_ALPHA_TEST_REF"/> + <field name="GL_ARRAY_BUFFER"/> + <field name="GL_ARRAY_BUFFER_BINDING"/> + <field name="GL_BLEND_DST"/> + <field name="GL_BLEND_SRC"/> + <field name="GL_BUFFER_ACCESS"/> + <field name="GL_BUFFER_SIZE"/> + <field name="GL_BUFFER_USAGE"/> + <field name="GL_CLIENT_ACTIVE_TEXTURE"/> + <field name="GL_CLIP_PLANE0"/> + <field name="GL_CLIP_PLANE1"/> + <field name="GL_CLIP_PLANE2"/> + <field name="GL_CLIP_PLANE3"/> + <field name="GL_CLIP_PLANE4"/> + <field name="GL_CLIP_PLANE5"/> + <field name="GL_COLOR_ARRAY_BUFFER_BINDING"/> + <field name="GL_COLOR_ARRAY_POINTER"/> + <field name="GL_COLOR_ARRAY_SIZE"/> + <field name="GL_COLOR_ARRAY_STRIDE"/> + <field name="GL_COLOR_ARRAY_TYPE"/> + <field name="GL_COLOR_CLEAR_VALUE"/> + <field name="GL_COLOR_WRITEMASK"/> + <field name="GL_COMBINE"/> + <field name="GL_COMBINE_ALPHA"/> + <field name="GL_COMBINE_RGB"/> + <field name="GL_CONSTANT"/> + <field name="GL_COORD_REPLACE_OES"/> + <field name="GL_CULL_FACE_MODE"/> + <field name="GL_CURRENT_COLOR"/> + <field name="GL_CURRENT_NORMAL"/> + <field name="GL_CURRENT_TEXTURE_COORDS"/> + <field name="GL_DEPTH_CLEAR_VALUE"/> + <field name="GL_DEPTH_FUNC"/> + <field name="GL_DEPTH_RANGE"/> + <field name="GL_DEPTH_WRITEMASK"/> + <field name="GL_DOT3_RGB"/> + <field name="GL_DOT3_RGBA"/> + <field name="GL_DYNAMIC_DRAW"/> + <field name="GL_ELEMENT_ARRAY_BUFFER"/> + <field name="GL_ELEMENT_ARRAY_BUFFER_BINDING"/> + <field name="GL_FRONT_FACE"/> + <field name="GL_GENERATE_MIPMAP"/> + <field name="GL_GENERATE_MIPMAP_HINT"/> + <field name="GL_INTERPOLATE"/> + <field name="GL_LINE_WIDTH"/> + <field name="GL_LOGIC_OP_MODE"/> + <field name="GL_MATRIX_MODE"/> + <field name="GL_MAX_CLIP_PLANES"/> + <field name="GL_MODELVIEW_MATRIX"/> + <field name="GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES"/> + <field name="GL_MODELVIEW_STACK_DEPTH"/> + <field name="GL_NORMAL_ARRAY_BUFFER_BINDING"/> + <field name="GL_NORMAL_ARRAY_POINTER"/> + <field name="GL_NORMAL_ARRAY_STRIDE"/> + <field name="GL_NORMAL_ARRAY_TYPE"/> + <field name="GL_OPERAND0_ALPHA"/> + <field name="GL_OPERAND0_RGB"/> + <field name="GL_OPERAND1_ALPHA"/> + <field name="GL_OPERAND1_RGB"/> + <field name="GL_OPERAND2_ALPHA"/> + <field name="GL_OPERAND2_RGB"/> + <field name="GL_POINT_DISTANCE_ATTENUATION"/> + <field name="GL_POINT_FADE_THRESHOLD_SIZE"/> + <field name="GL_POINT_SIZE"/> + <field name="GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES"/> + <field name="GL_POINT_SIZE_ARRAY_OES"/> + <field name="GL_POINT_SIZE_ARRAY_POINTER_OES"/> + <field name="GL_POINT_SIZE_ARRAY_STRIDE_OES"/> + <field name="GL_POINT_SIZE_ARRAY_TYPE_OES"/> + <field name="GL_POINT_SIZE_MAX"/> + <field name="GL_POINT_SIZE_MIN"/> + <field name="GL_POINT_SPRITE_OES"/> + <field name="GL_POLYGON_OFFSET_FACTOR"/> + <field name="GL_POLYGON_OFFSET_UNITS"/> + <field name="GL_PREVIOUS"/> + <field name="GL_PRIMARY_COLOR"/> + <field name="GL_PROJECTION_MATRIX"/> + <field name="GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES"/> + <field name="GL_PROJECTION_STACK_DEPTH"/> + <field name="GL_RGB_SCALE"/> + <field name="GL_SAMPLES"/> + <field name="GL_SAMPLE_BUFFERS"/> + <field name="GL_SAMPLE_COVERAGE_INVERT"/> + <field name="GL_SAMPLE_COVERAGE_VALUE"/> + <field name="GL_SCISSOR_BOX"/> + <field name="GL_SHADE_MODEL"/> + <field name="GL_SRC0_ALPHA"/> + <field name="GL_SRC0_RGB"/> + <field name="GL_SRC1_ALPHA"/> + <field name="GL_SRC1_RGB"/> + <field name="GL_SRC2_ALPHA"/> + <field name="GL_SRC2_RGB"/> + <field name="GL_STATIC_DRAW"/> + <field name="GL_STENCIL_CLEAR_VALUE"/> + <field name="GL_STENCIL_FAIL"/> + <field name="GL_STENCIL_FUNC"/> + <field name="GL_STENCIL_PASS_DEPTH_FAIL"/> + <field name="GL_STENCIL_PASS_DEPTH_PASS"/> + <field name="GL_STENCIL_REF"/> + <field name="GL_STENCIL_VALUE_MASK"/> + <field name="GL_STENCIL_WRITEMASK"/> + <field name="GL_SUBTRACT"/> + <field name="GL_TEXTURE_BINDING_2D"/> + <field name="GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING"/> + <field name="GL_TEXTURE_COORD_ARRAY_POINTER"/> + <field name="GL_TEXTURE_COORD_ARRAY_SIZE"/> + <field name="GL_TEXTURE_COORD_ARRAY_STRIDE"/> + <field name="GL_TEXTURE_COORD_ARRAY_TYPE"/> + <field name="GL_TEXTURE_MATRIX"/> + <field name="GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES"/> + <field name="GL_TEXTURE_STACK_DEPTH"/> + <field name="GL_VERTEX_ARRAY_BUFFER_BINDING"/> + <field name="GL_VERTEX_ARRAY_POINTER"/> + <field name="GL_VERTEX_ARRAY_SIZE"/> + <field name="GL_VERTEX_ARRAY_STRIDE"/> + <field name="GL_VERTEX_ARRAY_TYPE"/> + <field name="GL_VIEWPORT"/> + <field name="GL_WRITE_ONLY"/> + </class> + <class name="javax/microedition/khronos/opengles/GL11Ext" since="1"> + <extends name="java/lang/Object"/> + <implements name="javax/microedition/khronos/opengles/GL"/> + <method name="glCurrentPaletteMatrixOES(I)V"/> + <method name="glDrawTexfOES(FFFFF)V"/> + <method name="glDrawTexfvOES(Ljava/nio/FloatBuffer;)V"/> + <method name="glDrawTexfvOES([FI)V"/> + <method name="glDrawTexiOES(IIIII)V"/> + <method name="glDrawTexivOES(Ljava/nio/IntBuffer;)V"/> + <method name="glDrawTexivOES([II)V"/> + <method name="glDrawTexsOES(SSSSS)V"/> + <method name="glDrawTexsvOES(Ljava/nio/ShortBuffer;)V"/> + <method name="glDrawTexsvOES([SI)V"/> + <method name="glDrawTexxOES(IIIII)V"/> + <method name="glDrawTexxvOES(Ljava/nio/IntBuffer;)V"/> + <method name="glDrawTexxvOES([II)V"/> + <method name="glEnable(I)V"/> + <method name="glEnableClientState(I)V"/> + <method name="glLoadPaletteFromModelViewMatrixOES()V"/> + <method name="glMatrixIndexPointerOES(IIII)V"/> + <method name="glMatrixIndexPointerOES(IIILjava/nio/Buffer;)V"/> + <method name="glTexParameterfv(II[FI)V"/> + <method name="glWeightPointerOES(IIII)V"/> + <method name="glWeightPointerOES(IIILjava/nio/Buffer;)V"/> + <field name="GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES"/> + <field name="GL_MATRIX_INDEX_ARRAY_OES"/> + <field name="GL_MATRIX_INDEX_ARRAY_POINTER_OES"/> + <field name="GL_MATRIX_INDEX_ARRAY_SIZE_OES"/> + <field name="GL_MATRIX_INDEX_ARRAY_STRIDE_OES"/> + <field name="GL_MATRIX_INDEX_ARRAY_TYPE_OES"/> + <field name="GL_MATRIX_PALETTE_OES"/> + <field name="GL_MAX_PALETTE_MATRICES_OES"/> + <field name="GL_MAX_VERTEX_UNITS_OES"/> + <field name="GL_TEXTURE_CROP_RECT_OES"/> + <field name="GL_WEIGHT_ARRAY_BUFFER_BINDING_OES"/> + <field name="GL_WEIGHT_ARRAY_OES"/> + <field name="GL_WEIGHT_ARRAY_POINTER_OES"/> + <field name="GL_WEIGHT_ARRAY_SIZE_OES"/> + <field name="GL_WEIGHT_ARRAY_STRIDE_OES"/> + <field name="GL_WEIGHT_ARRAY_TYPE_OES"/> + </class> + <class name="javax/microedition/khronos/opengles/GL11ExtensionPack" since="1"> + <extends name="java/lang/Object"/> + <implements name="javax/microedition/khronos/opengles/GL"/> + <method name="glBindFramebufferOES(II)V"/> + <method name="glBindRenderbufferOES(II)V"/> + <method name="glBindTexture(II)V"/> + <method name="glBlendEquation(I)V"/> + <method name="glBlendEquationSeparate(II)V"/> + <method name="glBlendFuncSeparate(IIII)V"/> + <method name="glCheckFramebufferStatusOES(I)I"/> + <method name="glCompressedTexImage2D(IIIIIIILjava/nio/Buffer;)V"/> + <method name="glCopyTexImage2D(IIIIIIII)V"/> + <method name="glDeleteFramebuffersOES(ILjava/nio/IntBuffer;)V"/> + <method name="glDeleteFramebuffersOES(I[II)V"/> + <method name="glDeleteRenderbuffersOES(ILjava/nio/IntBuffer;)V"/> + <method name="glDeleteRenderbuffersOES(I[II)V"/> + <method name="glEnable(I)V"/> + <method name="glFramebufferRenderbufferOES(IIII)V"/> + <method name="glFramebufferTexture2DOES(IIIII)V"/> + <method name="glGenFramebuffersOES(ILjava/nio/IntBuffer;)V"/> + <method name="glGenFramebuffersOES(I[II)V"/> + <method name="glGenRenderbuffersOES(ILjava/nio/IntBuffer;)V"/> + <method name="glGenRenderbuffersOES(I[II)V"/> + <method name="glGenerateMipmapOES(I)V"/> + <method name="glGetFramebufferAttachmentParameterivOES(IIILjava/nio/IntBuffer;)V"/> + <method name="glGetFramebufferAttachmentParameterivOES(III[II)V"/> + <method name="glGetIntegerv(ILjava/nio/IntBuffer;)V"/> + <method name="glGetIntegerv(I[II)V"/> + <method name="glGetRenderbufferParameterivOES(IILjava/nio/IntBuffer;)V"/> + <method name="glGetRenderbufferParameterivOES(II[II)V"/> + <method name="glGetTexGenfv(IILjava/nio/FloatBuffer;)V"/> + <method name="glGetTexGenfv(II[FI)V"/> + <method name="glGetTexGeniv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetTexGeniv(II[II)V"/> + <method name="glGetTexGenxv(IILjava/nio/IntBuffer;)V"/> + <method name="glGetTexGenxv(II[II)V"/> + <method name="glIsFramebufferOES(I)Z"/> + <method name="glIsRenderbufferOES(I)Z"/> + <method name="glRenderbufferStorageOES(IIII)V"/> + <method name="glStencilOp(III)V"/> + <method name="glTexEnvf(IIF)V"/> + <method name="glTexEnvfv(IILjava/nio/FloatBuffer;)V"/> + <method name="glTexEnvfv(II[FI)V"/> + <method name="glTexEnvx(III)V"/> + <method name="glTexEnvxv(IILjava/nio/IntBuffer;)V"/> + <method name="glTexEnvxv(II[II)V"/> + <method name="glTexGenf(IIF)V"/> + <method name="glTexGenfv(IILjava/nio/FloatBuffer;)V"/> + <method name="glTexGenfv(II[FI)V"/> + <method name="glTexGeni(III)V"/> + <method name="glTexGeniv(IILjava/nio/IntBuffer;)V"/> + <method name="glTexGeniv(II[II)V"/> + <method name="glTexGenx(III)V"/> + <method name="glTexGenxv(IILjava/nio/IntBuffer;)V"/> + <method name="glTexGenxv(II[II)V"/> + <method name="glTexParameterf(IIF)V"/> + <field name="GL_BLEND_DST_ALPHA"/> + <field name="GL_BLEND_DST_RGB"/> + <field name="GL_BLEND_EQUATION"/> + <field name="GL_BLEND_EQUATION_ALPHA"/> + <field name="GL_BLEND_EQUATION_RGB"/> + <field name="GL_BLEND_SRC_ALPHA"/> + <field name="GL_BLEND_SRC_RGB"/> + <field name="GL_COLOR_ATTACHMENT0_OES"/> + <field name="GL_COLOR_ATTACHMENT10_OES"/> + <field name="GL_COLOR_ATTACHMENT11_OES"/> + <field name="GL_COLOR_ATTACHMENT12_OES"/> + <field name="GL_COLOR_ATTACHMENT13_OES"/> + <field name="GL_COLOR_ATTACHMENT14_OES"/> + <field name="GL_COLOR_ATTACHMENT15_OES"/> + <field name="GL_COLOR_ATTACHMENT1_OES"/> + <field name="GL_COLOR_ATTACHMENT2_OES"/> + <field name="GL_COLOR_ATTACHMENT3_OES"/> + <field name="GL_COLOR_ATTACHMENT4_OES"/> + <field name="GL_COLOR_ATTACHMENT5_OES"/> + <field name="GL_COLOR_ATTACHMENT6_OES"/> + <field name="GL_COLOR_ATTACHMENT7_OES"/> + <field name="GL_COLOR_ATTACHMENT8_OES"/> + <field name="GL_COLOR_ATTACHMENT9_OES"/> + <field name="GL_DECR_WRAP"/> + <field name="GL_DEPTH_ATTACHMENT_OES"/> + <field name="GL_DEPTH_COMPONENT"/> + <field name="GL_DEPTH_COMPONENT16"/> + <field name="GL_DEPTH_COMPONENT24"/> + <field name="GL_DEPTH_COMPONENT32"/> + <field name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES"/> + <field name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES"/> + <field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES"/> + <field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES"/> + <field name="GL_FRAMEBUFFER_BINDING_OES"/> + <field name="GL_FRAMEBUFFER_COMPLETE_OES"/> + <field name="GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES"/> + <field name="GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES"/> + <field name="GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES"/> + <field name="GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES"/> + <field name="GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES"/> + <field name="GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES"/> + <field name="GL_FRAMEBUFFER_OES"/> + <field name="GL_FRAMEBUFFER_UNSUPPORTED_OES"/> + <field name="GL_FUNC_ADD"/> + <field name="GL_FUNC_REVERSE_SUBTRACT"/> + <field name="GL_FUNC_SUBTRACT"/> + <field name="GL_INCR_WRAP"/> + <field name="GL_INVALID_FRAMEBUFFER_OPERATION_OES"/> + <field name="GL_MAX_COLOR_ATTACHMENTS_OES"/> + <field name="GL_MAX_CUBE_MAP_TEXTURE_SIZE"/> + <field name="GL_MAX_RENDERBUFFER_SIZE_OES"/> + <field name="GL_MIRRORED_REPEAT"/> + <field name="GL_NORMAL_MAP"/> + <field name="GL_REFLECTION_MAP"/> + <field name="GL_RENDERBUFFER_ALPHA_SIZE_OES"/> + <field name="GL_RENDERBUFFER_BINDING_OES"/> + <field name="GL_RENDERBUFFER_BLUE_SIZE_OES"/> + <field name="GL_RENDERBUFFER_DEPTH_SIZE_OES"/> + <field name="GL_RENDERBUFFER_GREEN_SIZE_OES"/> + <field name="GL_RENDERBUFFER_HEIGHT_OES"/> + <field name="GL_RENDERBUFFER_INTERNAL_FORMAT_OES"/> + <field name="GL_RENDERBUFFER_OES"/> + <field name="GL_RENDERBUFFER_RED_SIZE_OES"/> + <field name="GL_RENDERBUFFER_STENCIL_SIZE_OES"/> + <field name="GL_RENDERBUFFER_WIDTH_OES"/> + <field name="GL_RGB565_OES"/> + <field name="GL_RGB5_A1"/> + <field name="GL_RGB8"/> + <field name="GL_RGBA4"/> + <field name="GL_RGBA8"/> + <field name="GL_STENCIL_ATTACHMENT_OES"/> + <field name="GL_STENCIL_INDEX"/> + <field name="GL_STENCIL_INDEX1_OES"/> + <field name="GL_STENCIL_INDEX4_OES"/> + <field name="GL_STENCIL_INDEX8_OES"/> + <field name="GL_STR"/> + <field name="GL_TEXTURE_BINDING_CUBE_MAP"/> + <field name="GL_TEXTURE_CUBE_MAP"/> + <field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X"/> + <field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y"/> + <field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z"/> + <field name="GL_TEXTURE_CUBE_MAP_POSITIVE_X"/> + <field name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y"/> + <field name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z"/> + <field name="GL_TEXTURE_GEN_MODE"/> + <field name="GL_TEXTURE_GEN_STR"/> + </class> + <class name="javax/net/ServerSocketFactory" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="createServerSocket()Ljava/net/ServerSocket;"/> + <method name="createServerSocket(I)Ljava/net/ServerSocket;"/> + <method name="createServerSocket(II)Ljava/net/ServerSocket;"/> + <method name="createServerSocket(IILjava/net/InetAddress;)Ljava/net/ServerSocket;"/> + <method name="getDefault()Ljavax/net/ServerSocketFactory;"/> + </class> + <class name="javax/net/SocketFactory" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="createSocket()Ljava/net/Socket;"/> + <method name="createSocket(Ljava/lang/String;I)Ljava/net/Socket;"/> + <method name="createSocket(Ljava/lang/String;ILjava/net/InetAddress;I)Ljava/net/Socket;"/> + <method name="createSocket(Ljava/net/InetAddress;I)Ljava/net/Socket;"/> + <method name="createSocket(Ljava/net/InetAddress;ILjava/net/InetAddress;I)Ljava/net/Socket;"/> + <method name="getDefault()Ljavax/net/SocketFactory;"/> + </class> + <class name="javax/net/ssl/CertPathTrustManagerParameters" since="1"> + <extends name="java/lang/Object"/> + <implements name="javax/net/ssl/ManagerFactoryParameters"/> + <method name="<init>(Ljava/security/cert/CertPathParameters;)V"/> + <method name="getParameters()Ljava/security/cert/CertPathParameters;"/> + </class> + <class name="javax/net/ssl/ExtendedSSLSession" since="24"> + <extends name="java/lang/Object"/> + <implements name="javax/net/ssl/SSLSession"/> + <method name="<init>()V"/> + <method name="getLocalSupportedSignatureAlgorithms()[Ljava/lang/String;"/> + <method name="getPeerSupportedSignatureAlgorithms()[Ljava/lang/String;"/> + <method name="getRequestedServerNames()Ljava/util/List;"/> + </class> + <class name="javax/net/ssl/HandshakeCompletedEvent" since="1"> + <extends name="java/util/EventObject"/> + <method name="<init>(Ljavax/net/ssl/SSLSocket;Ljavax/net/ssl/SSLSession;)V"/> + <method name="getCipherSuite()Ljava/lang/String;"/> + <method name="getLocalCertificates()[Ljava/security/cert/Certificate;"/> + <method name="getLocalPrincipal()Ljava/security/Principal;"/> + <method name="getPeerCertificateChain()[Ljavax/security/cert/X509Certificate;"/> + <method name="getPeerCertificates()[Ljava/security/cert/Certificate;"/> + <method name="getPeerPrincipal()Ljava/security/Principal;"/> + <method name="getSession()Ljavax/net/ssl/SSLSession;"/> + <method name="getSocket()Ljavax/net/ssl/SSLSocket;"/> + </class> + <class name="javax/net/ssl/HandshakeCompletedListener" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/EventListener"/> + <method name="handshakeCompleted(Ljavax/net/ssl/HandshakeCompletedEvent;)V"/> + </class> + <class name="javax/net/ssl/HostnameVerifier" since="1"> + <extends name="java/lang/Object"/> + <method name="verify(Ljava/lang/String;Ljavax/net/ssl/SSLSession;)Z"/> + </class> + <class name="javax/net/ssl/HttpsURLConnection" since="1"> + <extends name="java/net/HttpURLConnection"/> + <method name="<init>(Ljava/net/URL;)V"/> + <method name="getCipherSuite()Ljava/lang/String;"/> + <method name="getDefaultHostnameVerifier()Ljavax/net/ssl/HostnameVerifier;"/> + <method name="getDefaultSSLSocketFactory()Ljavax/net/ssl/SSLSocketFactory;"/> + <method name="getHostnameVerifier()Ljavax/net/ssl/HostnameVerifier;"/> + <method name="getLocalCertificates()[Ljava/security/cert/Certificate;"/> + <method name="getLocalPrincipal()Ljava/security/Principal;"/> + <method name="getPeerPrincipal()Ljava/security/Principal;"/> + <method name="getSSLSocketFactory()Ljavax/net/ssl/SSLSocketFactory;"/> + <method name="getServerCertificates()[Ljava/security/cert/Certificate;"/> + <method name="setDefaultHostnameVerifier(Ljavax/net/ssl/HostnameVerifier;)V"/> + <method name="setDefaultSSLSocketFactory(Ljavax/net/ssl/SSLSocketFactory;)V"/> + <method name="setHostnameVerifier(Ljavax/net/ssl/HostnameVerifier;)V"/> + <method name="setSSLSocketFactory(Ljavax/net/ssl/SSLSocketFactory;)V"/> + <field name="hostnameVerifier"/> + </class> + <class name="javax/net/ssl/KeyManager" since="1"> + <extends name="java/lang/Object"/> + </class> + <class name="javax/net/ssl/KeyManagerFactory" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljavax/net/ssl/KeyManagerFactorySpi;Ljava/security/Provider;Ljava/lang/String;)V"/> + <method name="getAlgorithm()Ljava/lang/String;"/> + <method name="getDefaultAlgorithm()Ljava/lang/String;"/> + <method name="getInstance(Ljava/lang/String;)Ljavax/net/ssl/KeyManagerFactory;"/> + <method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/net/ssl/KeyManagerFactory;"/> + <method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/net/ssl/KeyManagerFactory;"/> + <method name="getKeyManagers()[Ljavax/net/ssl/KeyManager;"/> + <method name="getProvider()Ljava/security/Provider;"/> + <method name="init(Ljava/security/KeyStore;[C)V"/> + <method name="init(Ljavax/net/ssl/ManagerFactoryParameters;)V"/> + </class> + <class name="javax/net/ssl/KeyManagerFactorySpi" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="engineGetKeyManagers()[Ljavax/net/ssl/KeyManager;"/> + <method name="engineInit(Ljava/security/KeyStore;[C)V"/> + <method name="engineInit(Ljavax/net/ssl/ManagerFactoryParameters;)V"/> + </class> + <class name="javax/net/ssl/KeyStoreBuilderParameters" since="1"> + <extends name="java/lang/Object"/> + <implements name="javax/net/ssl/ManagerFactoryParameters"/> + <method name="<init>(Ljava/security/KeyStore$Builder;)V"/> + <method name="<init>(Ljava/util/List;)V"/> + <method name="getParameters()Ljava/util/List;"/> + </class> + <class name="javax/net/ssl/ManagerFactoryParameters" since="1"> + <extends name="java/lang/Object"/> + </class> + <class name="javax/net/ssl/SNIHostName" since="24"> + <extends name="javax/net/ssl/SNIServerName"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>([B)V"/> + <method name="createSNIMatcher(Ljava/lang/String;)Ljavax/net/ssl/SNIMatcher;"/> + <method name="getAsciiName()Ljava/lang/String;"/> + </class> + <class name="javax/net/ssl/SNIMatcher" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>(I)V"/> + <method name="getType()I"/> + <method name="matches(Ljavax/net/ssl/SNIServerName;)Z"/> + </class> + <class name="javax/net/ssl/SNIServerName" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>(I[B)V"/> + <method name="getEncoded()[B"/> + <method name="getType()I"/> + </class> + <class name="javax/net/ssl/SSLContext" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljavax/net/ssl/SSLContextSpi;Ljava/security/Provider;Ljava/lang/String;)V"/> + <method name="createSSLEngine()Ljavax/net/ssl/SSLEngine;"/> + <method name="createSSLEngine(Ljava/lang/String;I)Ljavax/net/ssl/SSLEngine;"/> + <method name="getClientSessionContext()Ljavax/net/ssl/SSLSessionContext;"/> + <method name="getDefault()Ljavax/net/ssl/SSLContext;" since="9"/> + <method name="getDefaultSSLParameters()Ljavax/net/ssl/SSLParameters;" since="9"/> + <method name="getInstance(Ljava/lang/String;)Ljavax/net/ssl/SSLContext;"/> + <method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/net/ssl/SSLContext;"/> + <method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/net/ssl/SSLContext;"/> + <method name="getProtocol()Ljava/lang/String;"/> + <method name="getProvider()Ljava/security/Provider;"/> + <method name="getServerSessionContext()Ljavax/net/ssl/SSLSessionContext;"/> + <method name="getServerSocketFactory()Ljavax/net/ssl/SSLServerSocketFactory;"/> + <method name="getSocketFactory()Ljavax/net/ssl/SSLSocketFactory;"/> + <method name="getSupportedSSLParameters()Ljavax/net/ssl/SSLParameters;" since="9"/> + <method name="init([Ljavax/net/ssl/KeyManager;[Ljavax/net/ssl/TrustManager;Ljava/security/SecureRandom;)V"/> + <method name="setDefault(Ljavax/net/ssl/SSLContext;)V" since="9"/> + </class> + <class name="javax/net/ssl/SSLContextSpi" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="engineCreateSSLEngine()Ljavax/net/ssl/SSLEngine;"/> + <method name="engineCreateSSLEngine(Ljava/lang/String;I)Ljavax/net/ssl/SSLEngine;"/> + <method name="engineGetClientSessionContext()Ljavax/net/ssl/SSLSessionContext;"/> + <method name="engineGetDefaultSSLParameters()Ljavax/net/ssl/SSLParameters;" since="9"/> + <method name="engineGetServerSessionContext()Ljavax/net/ssl/SSLSessionContext;"/> + <method name="engineGetServerSocketFactory()Ljavax/net/ssl/SSLServerSocketFactory;"/> + <method name="engineGetSocketFactory()Ljavax/net/ssl/SSLSocketFactory;"/> + <method name="engineGetSupportedSSLParameters()Ljavax/net/ssl/SSLParameters;" since="9"/> + <method name="engineInit([Ljavax/net/ssl/KeyManager;[Ljavax/net/ssl/TrustManager;Ljava/security/SecureRandom;)V"/> + </class> + <class name="javax/net/ssl/SSLEngine" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="beginHandshake()V"/> + <method name="closeInbound()V"/> + <method name="closeOutbound()V"/> + <method name="getDelegatedTask()Ljava/lang/Runnable;"/> + <method name="getEnableSessionCreation()Z"/> + <method name="getEnabledCipherSuites()[Ljava/lang/String;"/> + <method name="getEnabledProtocols()[Ljava/lang/String;"/> + <method name="getHandshakeSession()Ljavax/net/ssl/SSLSession;" since="24"/> + <method name="getHandshakeStatus()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;"/> + <method name="getNeedClientAuth()Z"/> + <method name="getPeerHost()Ljava/lang/String;"/> + <method name="getPeerPort()I"/> + <method name="getSSLParameters()Ljavax/net/ssl/SSLParameters;" since="9"/> + <method name="getSession()Ljavax/net/ssl/SSLSession;"/> + <method name="getSupportedCipherSuites()[Ljava/lang/String;"/> + <method name="getSupportedProtocols()[Ljava/lang/String;"/> + <method name="getUseClientMode()Z"/> + <method name="getWantClientAuth()Z"/> + <method name="isInboundDone()Z"/> + <method name="isOutboundDone()Z"/> + <method name="setEnableSessionCreation(Z)V"/> + <method name="setEnabledCipherSuites([Ljava/lang/String;)V"/> + <method name="setEnabledProtocols([Ljava/lang/String;)V"/> + <method name="setNeedClientAuth(Z)V"/> + <method name="setSSLParameters(Ljavax/net/ssl/SSLParameters;)V" since="9"/> + <method name="setUseClientMode(Z)V"/> + <method name="setWantClientAuth(Z)V"/> + <method name="unwrap(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;"/> + <method name="unwrap(Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;"/> + <method name="unwrap(Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;II)Ljavax/net/ssl/SSLEngineResult;"/> + <method name="wrap(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;"/> + <method name="wrap([Ljava/nio/ByteBuffer;IILjava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;"/> + <method name="wrap([Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;"/> + </class> + <class name="javax/net/ssl/SSLEngineResult" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljavax/net/ssl/SSLEngineResult$Status;Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;II)V"/> + <method name="bytesConsumed()I"/> + <method name="bytesProduced()I"/> + <method name="getHandshakeStatus()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;"/> + <method name="getStatus()Ljavax/net/ssl/SSLEngineResult$Status;"/> + </class> + <class name="javax/net/ssl/SSLEngineResult$HandshakeStatus" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;"/> + <method name="values()[Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;"/> + <field name="FINISHED"/> + <field name="NEED_TASK"/> + <field name="NEED_UNWRAP"/> + <field name="NEED_WRAP"/> + <field name="NOT_HANDSHAKING"/> + </class> + <class name="javax/net/ssl/SSLEngineResult$Status" since="1"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Ljavax/net/ssl/SSLEngineResult$Status;"/> + <method name="values()[Ljavax/net/ssl/SSLEngineResult$Status;"/> + <field name="BUFFER_OVERFLOW"/> + <field name="BUFFER_UNDERFLOW"/> + <field name="CLOSED"/> + <field name="OK"/> + </class> + <class name="javax/net/ssl/SSLException" since="1"> + <extends name="java/io/IOException"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="javax/net/ssl/SSLHandshakeException" since="1"> + <extends name="javax/net/ssl/SSLException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="javax/net/ssl/SSLKeyException" since="1"> + <extends name="javax/net/ssl/SSLException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="javax/net/ssl/SSLParameters" since="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>([Ljava/lang/String;)V"/> + <method name="<init>([Ljava/lang/String;[Ljava/lang/String;)V"/> + <method name="getAlgorithmConstraints()Ljava/security/AlgorithmConstraints;" since="24"/> + <method name="getCipherSuites()[Ljava/lang/String;"/> + <method name="getEndpointIdentificationAlgorithm()Ljava/lang/String;" since="24"/> + <method name="getNeedClientAuth()Z"/> + <method name="getProtocols()[Ljava/lang/String;"/> + <method name="getSNIMatchers()Ljava/util/Collection;" since="24"/> + <method name="getServerNames()Ljava/util/List;" since="24"/> + <method name="getUseCipherSuitesOrder()Z" since="24"/> + <method name="getWantClientAuth()Z"/> + <method name="setAlgorithmConstraints(Ljava/security/AlgorithmConstraints;)V" since="24"/> + <method name="setCipherSuites([Ljava/lang/String;)V"/> + <method name="setEndpointIdentificationAlgorithm(Ljava/lang/String;)V" since="24"/> + <method name="setNeedClientAuth(Z)V"/> + <method name="setProtocols([Ljava/lang/String;)V"/> + <method name="setSNIMatchers(Ljava/util/Collection;)V" since="24"/> + <method name="setServerNames(Ljava/util/List;)V" since="24"/> + <method name="setUseCipherSuitesOrder(Z)V" since="24"/> + <method name="setWantClientAuth(Z)V"/> + </class> + <class name="javax/net/ssl/SSLPeerUnverifiedException" since="1"> + <extends name="javax/net/ssl/SSLException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="javax/net/ssl/SSLPermission" since="1"> + <extends name="java/security/BasicPermission"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="javax/net/ssl/SSLProtocolException" since="1"> + <extends name="javax/net/ssl/SSLException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="javax/net/ssl/SSLServerSocket" since="1"> + <extends name="java/net/ServerSocket"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="<init>(II)V"/> + <method name="<init>(IILjava/net/InetAddress;)V"/> + <method name="getEnableSessionCreation()Z"/> + <method name="getEnabledCipherSuites()[Ljava/lang/String;"/> + <method name="getEnabledProtocols()[Ljava/lang/String;"/> + <method name="getNeedClientAuth()Z"/> + <method name="getSSLParameters()Ljavax/net/ssl/SSLParameters;" since="24"/> + <method name="getSupportedCipherSuites()[Ljava/lang/String;"/> + <method name="getSupportedProtocols()[Ljava/lang/String;"/> + <method name="getUseClientMode()Z"/> + <method name="getWantClientAuth()Z"/> + <method name="setEnableSessionCreation(Z)V"/> + <method name="setEnabledCipherSuites([Ljava/lang/String;)V"/> + <method name="setEnabledProtocols([Ljava/lang/String;)V"/> + <method name="setNeedClientAuth(Z)V"/> + <method name="setSSLParameters(Ljavax/net/ssl/SSLParameters;)V" since="24"/> + <method name="setUseClientMode(Z)V"/> + <method name="setWantClientAuth(Z)V"/> + </class> + <class name="javax/net/ssl/SSLServerSocketFactory" since="1"> + <extends name="javax/net/ServerSocketFactory"/> + <method name="<init>()V"/> + <method name="getDefaultCipherSuites()[Ljava/lang/String;"/> + <method name="getSupportedCipherSuites()[Ljava/lang/String;"/> + </class> + <class name="javax/net/ssl/SSLSession" since="1"> + <extends name="java/lang/Object"/> + <method name="getApplicationBufferSize()I"/> + <method name="getCipherSuite()Ljava/lang/String;"/> + <method name="getCreationTime()J"/> + <method name="getId()[B"/> + <method name="getLastAccessedTime()J"/> + <method name="getLocalCertificates()[Ljava/security/cert/Certificate;"/> + <method name="getLocalPrincipal()Ljava/security/Principal;"/> + <method name="getPacketBufferSize()I"/> + <method name="getPeerCertificateChain()[Ljavax/security/cert/X509Certificate;"/> + <method name="getPeerCertificates()[Ljava/security/cert/Certificate;"/> + <method name="getPeerHost()Ljava/lang/String;"/> + <method name="getPeerPort()I"/> + <method name="getPeerPrincipal()Ljava/security/Principal;"/> + <method name="getProtocol()Ljava/lang/String;"/> + <method name="getSessionContext()Ljavax/net/ssl/SSLSessionContext;"/> + <method name="getValue(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="getValueNames()[Ljava/lang/String;"/> + <method name="invalidate()V"/> + <method name="isValid()Z"/> + <method name="putValue(Ljava/lang/String;Ljava/lang/Object;)V"/> + <method name="removeValue(Ljava/lang/String;)V"/> + </class> + <class name="javax/net/ssl/SSLSessionBindingEvent" since="1"> + <extends name="java/util/EventObject"/> + <method name="<init>(Ljavax/net/ssl/SSLSession;Ljava/lang/String;)V"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getSession()Ljavax/net/ssl/SSLSession;"/> + </class> + <class name="javax/net/ssl/SSLSessionBindingListener" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/EventListener"/> + <method name="valueBound(Ljavax/net/ssl/SSLSessionBindingEvent;)V"/> + <method name="valueUnbound(Ljavax/net/ssl/SSLSessionBindingEvent;)V"/> + </class> + <class name="javax/net/ssl/SSLSessionContext" since="1"> + <extends name="java/lang/Object"/> + <method name="getIds()Ljava/util/Enumeration;"/> + <method name="getSession([B)Ljavax/net/ssl/SSLSession;"/> + <method name="getSessionCacheSize()I"/> + <method name="getSessionTimeout()I"/> + <method name="setSessionCacheSize(I)V"/> + <method name="setSessionTimeout(I)V"/> + </class> + <class name="javax/net/ssl/SSLSocket" since="1"> + <extends name="java/net/Socket"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="<init>(Ljava/lang/String;ILjava/net/InetAddress;I)V"/> + <method name="<init>(Ljava/net/InetAddress;I)V"/> + <method name="<init>(Ljava/net/InetAddress;ILjava/net/InetAddress;I)V"/> + <method name="addHandshakeCompletedListener(Ljavax/net/ssl/HandshakeCompletedListener;)V"/> + <method name="getEnableSessionCreation()Z"/> + <method name="getEnabledCipherSuites()[Ljava/lang/String;"/> + <method name="getEnabledProtocols()[Ljava/lang/String;"/> + <method name="getHandshakeSession()Ljavax/net/ssl/SSLSession;" since="24"/> + <method name="getNeedClientAuth()Z"/> + <method name="getSSLParameters()Ljavax/net/ssl/SSLParameters;" since="9"/> + <method name="getSession()Ljavax/net/ssl/SSLSession;"/> + <method name="getSupportedCipherSuites()[Ljava/lang/String;"/> + <method name="getSupportedProtocols()[Ljava/lang/String;"/> + <method name="getUseClientMode()Z"/> + <method name="getWantClientAuth()Z"/> + <method name="removeHandshakeCompletedListener(Ljavax/net/ssl/HandshakeCompletedListener;)V"/> + <method name="setEnableSessionCreation(Z)V"/> + <method name="setEnabledCipherSuites([Ljava/lang/String;)V"/> + <method name="setEnabledProtocols([Ljava/lang/String;)V"/> + <method name="setNeedClientAuth(Z)V"/> + <method name="setSSLParameters(Ljavax/net/ssl/SSLParameters;)V" since="9"/> + <method name="setUseClientMode(Z)V"/> + <method name="setWantClientAuth(Z)V"/> + <method name="startHandshake()V"/> + </class> + <class name="javax/net/ssl/SSLSocketFactory" since="1"> + <extends name="javax/net/SocketFactory"/> + <method name="<init>()V"/> + <method name="createSocket(Ljava/net/Socket;Ljava/lang/String;IZ)Ljava/net/Socket;"/> + <method name="getDefaultCipherSuites()[Ljava/lang/String;"/> + <method name="getSupportedCipherSuites()[Ljava/lang/String;"/> + </class> + <class name="javax/net/ssl/StandardConstants" since="24"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="SNI_HOST_NAME"/> + </class> + <class name="javax/net/ssl/TrustManager" since="1"> + <extends name="java/lang/Object"/> + </class> + <class name="javax/net/ssl/TrustManagerFactory" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljavax/net/ssl/TrustManagerFactorySpi;Ljava/security/Provider;Ljava/lang/String;)V"/> + <method name="getAlgorithm()Ljava/lang/String;"/> + <method name="getDefaultAlgorithm()Ljava/lang/String;"/> + <method name="getInstance(Ljava/lang/String;)Ljavax/net/ssl/TrustManagerFactory;"/> + <method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/net/ssl/TrustManagerFactory;"/> + <method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/net/ssl/TrustManagerFactory;"/> + <method name="getProvider()Ljava/security/Provider;"/> + <method name="getTrustManagers()[Ljavax/net/ssl/TrustManager;"/> + <method name="init(Ljava/security/KeyStore;)V"/> + <method name="init(Ljavax/net/ssl/ManagerFactoryParameters;)V"/> + </class> + <class name="javax/net/ssl/TrustManagerFactorySpi" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="engineGetTrustManagers()[Ljavax/net/ssl/TrustManager;"/> + <method name="engineInit(Ljava/security/KeyStore;)V"/> + <method name="engineInit(Ljavax/net/ssl/ManagerFactoryParameters;)V"/> + </class> + <class name="javax/net/ssl/X509ExtendedKeyManager" since="1"> + <extends name="java/lang/Object"/> + <implements name="javax/net/ssl/X509KeyManager"/> + <method name="<init>()V"/> + <method name="chooseEngineClientAlias([Ljava/lang/String;[Ljava/security/Principal;Ljavax/net/ssl/SSLEngine;)Ljava/lang/String;"/> + <method name="chooseEngineServerAlias(Ljava/lang/String;[Ljava/security/Principal;Ljavax/net/ssl/SSLEngine;)Ljava/lang/String;"/> + </class> + <class name="javax/net/ssl/X509ExtendedTrustManager" since="24"> + <extends name="java/lang/Object"/> + <implements name="javax/net/ssl/X509TrustManager"/> + <method name="<init>()V"/> + <method name="checkClientTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/net/Socket;)V"/> + <method name="checkClientTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljavax/net/ssl/SSLEngine;)V"/> + <method name="checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/net/Socket;)V"/> + <method name="checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljavax/net/ssl/SSLEngine;)V"/> + </class> + <class name="javax/net/ssl/X509KeyManager" since="1"> + <extends name="java/lang/Object"/> + <implements name="javax/net/ssl/KeyManager"/> + <method name="chooseClientAlias([Ljava/lang/String;[Ljava/security/Principal;Ljava/net/Socket;)Ljava/lang/String;"/> + <method name="chooseServerAlias(Ljava/lang/String;[Ljava/security/Principal;Ljava/net/Socket;)Ljava/lang/String;"/> + <method name="getCertificateChain(Ljava/lang/String;)[Ljava/security/cert/X509Certificate;"/> + <method name="getClientAliases(Ljava/lang/String;[Ljava/security/Principal;)[Ljava/lang/String;"/> + <method name="getPrivateKey(Ljava/lang/String;)Ljava/security/PrivateKey;"/> + <method name="getServerAliases(Ljava/lang/String;[Ljava/security/Principal;)[Ljava/lang/String;"/> + </class> + <class name="javax/net/ssl/X509TrustManager" since="1"> + <extends name="java/lang/Object"/> + <implements name="javax/net/ssl/TrustManager"/> + <method name="checkClientTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)V"/> + <method name="checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)V"/> + <method name="getAcceptedIssuers()[Ljava/security/cert/X509Certificate;"/> + </class> + <class name="javax/security/auth/AuthPermission" since="1"> + <extends name="java/security/BasicPermission"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="javax/security/auth/DestroyFailedException" since="1"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="javax/security/auth/Destroyable" since="1"> + <extends name="java/lang/Object"/> + <method name="destroy()V"/> + <method name="isDestroyed()Z"/> + </class> + <class name="javax/security/auth/PrivateCredentialPermission" since="1"> + <extends name="java/security/Permission"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="getCredentialClass()Ljava/lang/String;"/> + <method name="getPrincipals()[[Ljava/lang/String;"/> + </class> + <class name="javax/security/auth/Subject" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>()V"/> + <method name="<init>(ZLjava/util/Set;Ljava/util/Set;Ljava/util/Set;)V"/> + <method name="doAs(Ljavax/security/auth/Subject;Ljava/security/PrivilegedAction;)Ljava/lang/Object;"/> + <method name="doAs(Ljavax/security/auth/Subject;Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;"/> + <method name="doAsPrivileged(Ljavax/security/auth/Subject;Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;"/> + <method name="doAsPrivileged(Ljavax/security/auth/Subject;Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;"/> + <method name="getPrincipals()Ljava/util/Set;"/> + <method name="getPrincipals(Ljava/lang/Class;)Ljava/util/Set;"/> + <method name="getPrivateCredentials()Ljava/util/Set;"/> + <method name="getPrivateCredentials(Ljava/lang/Class;)Ljava/util/Set;"/> + <method name="getPublicCredentials()Ljava/util/Set;"/> + <method name="getPublicCredentials(Ljava/lang/Class;)Ljava/util/Set;"/> + <method name="getSubject(Ljava/security/AccessControlContext;)Ljavax/security/auth/Subject;"/> + <method name="isReadOnly()Z"/> + <method name="setReadOnly()V"/> + </class> + <class name="javax/security/auth/SubjectDomainCombiner" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/security/DomainCombiner"/> + <method name="<init>(Ljavax/security/auth/Subject;)V"/> + <method name="getSubject()Ljavax/security/auth/Subject;"/> + </class> + <class name="javax/security/auth/callback/Callback" since="1"> + <extends name="java/lang/Object"/> + </class> + <class name="javax/security/auth/callback/CallbackHandler" since="1"> + <extends name="java/lang/Object"/> + <method name="handle([Ljavax/security/auth/callback/Callback;)V"/> + </class> + <class name="javax/security/auth/callback/PasswordCallback" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="javax/security/auth/callback/Callback"/> + <method name="<init>(Ljava/lang/String;Z)V"/> + <method name="clearPassword()V"/> + <method name="getPassword()[C"/> + <method name="getPrompt()Ljava/lang/String;"/> + <method name="isEchoOn()Z"/> + <method name="setPassword([C)V"/> + </class> + <class name="javax/security/auth/callback/UnsupportedCallbackException" since="1"> + <extends name="java/lang/Exception"/> + <method name="<init>(Ljavax/security/auth/callback/Callback;)V"/> + <method name="<init>(Ljavax/security/auth/callback/Callback;Ljava/lang/String;)V"/> + <method name="getCallback()Ljavax/security/auth/callback/Callback;"/> + </class> + <class name="javax/security/auth/login/LoginException" since="1"> + <extends name="java/security/GeneralSecurityException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="javax/security/auth/x500/X500Principal" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/security/Principal"/> + <method name="<init>(Ljava/io/InputStream;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/util/Map;)V" since="9"/> + <method name="<init>([B)V"/> + <method name="getEncoded()[B"/> + <method name="getName(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getName(Ljava/lang/String;Ljava/util/Map;)Ljava/lang/String;" since="9"/> + <field name="CANONICAL"/> + <field name="RFC1779"/> + <field name="RFC2253"/> + </class> + <class name="javax/security/cert/Certificate" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getEncoded()[B"/> + <method name="getPublicKey()Ljava/security/PublicKey;"/> + <method name="verify(Ljava/security/PublicKey;)V"/> + <method name="verify(Ljava/security/PublicKey;Ljava/lang/String;)V"/> + </class> + <class name="javax/security/cert/CertificateEncodingException" since="1"> + <extends name="javax/security/cert/CertificateException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="javax/security/cert/CertificateException" since="1"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="javax/security/cert/CertificateExpiredException" since="1"> + <extends name="javax/security/cert/CertificateException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="javax/security/cert/CertificateNotYetValidException" since="1"> + <extends name="javax/security/cert/CertificateException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="javax/security/cert/CertificateParsingException" since="1"> + <extends name="javax/security/cert/CertificateException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="javax/security/cert/X509Certificate" since="1"> + <extends name="javax/security/cert/Certificate"/> + <method name="<init>()V"/> + <method name="checkValidity()V"/> + <method name="checkValidity(Ljava/util/Date;)V"/> + <method name="getInstance(Ljava/io/InputStream;)Ljavax/security/cert/X509Certificate;"/> + <method name="getInstance([B)Ljavax/security/cert/X509Certificate;"/> + <method name="getIssuerDN()Ljava/security/Principal;"/> + <method name="getNotAfter()Ljava/util/Date;"/> + <method name="getNotBefore()Ljava/util/Date;"/> + <method name="getSerialNumber()Ljava/math/BigInteger;"/> + <method name="getSigAlgName()Ljava/lang/String;"/> + <method name="getSigAlgOID()Ljava/lang/String;"/> + <method name="getSigAlgParams()[B"/> + <method name="getSubjectDN()Ljava/security/Principal;"/> + <method name="getVersion()I"/> + </class> + <class name="javax/sql/CommonDataSource" since="9"> + <extends name="java/lang/Object"/> + <method name="getLogWriter()Ljava/io/PrintWriter;"/> + <method name="getLoginTimeout()I"/> + <method name="getParentLogger()Ljava/util/logging/Logger;" since="24"/> + <method name="setLogWriter(Ljava/io/PrintWriter;)V"/> + <method name="setLoginTimeout(I)V"/> + </class> + <class name="javax/sql/ConnectionEvent" since="1"> + <extends name="java/util/EventObject"/> + <method name="<init>(Ljavax/sql/PooledConnection;)V"/> + <method name="<init>(Ljavax/sql/PooledConnection;Ljava/sql/SQLException;)V"/> + <method name="getSQLException()Ljava/sql/SQLException;"/> + </class> + <class name="javax/sql/ConnectionEventListener" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/EventListener"/> + <method name="connectionClosed(Ljavax/sql/ConnectionEvent;)V"/> + <method name="connectionErrorOccurred(Ljavax/sql/ConnectionEvent;)V"/> + </class> + <class name="javax/sql/ConnectionPoolDataSource" since="1"> + <extends name="java/lang/Object"/> + <implements name="javax/sql/CommonDataSource" since="9"/> + <method name="getLogWriter()Ljava/io/PrintWriter;" removed="9"/> + <method name="getLoginTimeout()I" removed="9"/> + <method name="getPooledConnection()Ljavax/sql/PooledConnection;"/> + <method name="getPooledConnection(Ljava/lang/String;Ljava/lang/String;)Ljavax/sql/PooledConnection;"/> + <method name="setLogWriter(Ljava/io/PrintWriter;)V" removed="9"/> + <method name="setLoginTimeout(I)V" removed="9"/> + </class> + <class name="javax/sql/DataSource" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/sql/Wrapper" since="9"/> + <implements name="javax/sql/CommonDataSource" since="9"/> + <method name="getConnection()Ljava/sql/Connection;"/> + <method name="getConnection(Ljava/lang/String;Ljava/lang/String;)Ljava/sql/Connection;"/> + <method name="getLogWriter()Ljava/io/PrintWriter;" removed="9"/> + <method name="getLoginTimeout()I" removed="9"/> + <method name="setLogWriter(Ljava/io/PrintWriter;)V" removed="9"/> + <method name="setLoginTimeout(I)V" removed="9"/> + </class> + <class name="javax/sql/PooledConnection" since="1"> + <extends name="java/lang/Object"/> + <method name="addConnectionEventListener(Ljavax/sql/ConnectionEventListener;)V"/> + <method name="addStatementEventListener(Ljavax/sql/StatementEventListener;)V" since="9"/> + <method name="close()V"/> + <method name="getConnection()Ljava/sql/Connection;"/> + <method name="removeConnectionEventListener(Ljavax/sql/ConnectionEventListener;)V"/> + <method name="removeStatementEventListener(Ljavax/sql/StatementEventListener;)V" since="9"/> + </class> + <class name="javax/sql/RowSet" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/sql/ResultSet"/> + <method name="addRowSetListener(Ljavax/sql/RowSetListener;)V"/> + <method name="clearParameters()V"/> + <method name="execute()V"/> + <method name="getCommand()Ljava/lang/String;"/> + <method name="getDataSourceName()Ljava/lang/String;"/> + <method name="getEscapeProcessing()Z"/> + <method name="getMaxFieldSize()I"/> + <method name="getMaxRows()I"/> + <method name="getPassword()Ljava/lang/String;"/> + <method name="getQueryTimeout()I"/> + <method name="getTransactionIsolation()I"/> + <method name="getTypeMap()Ljava/util/Map;"/> + <method name="getUrl()Ljava/lang/String;"/> + <method name="getUsername()Ljava/lang/String;"/> + <method name="isReadOnly()Z"/> + <method name="removeRowSetListener(Ljavax/sql/RowSetListener;)V"/> + <method name="setArray(ILjava/sql/Array;)V"/> + <method name="setAsciiStream(ILjava/io/InputStream;)V" since="9"/> + <method name="setAsciiStream(ILjava/io/InputStream;I)V"/> + <method name="setAsciiStream(Ljava/lang/String;Ljava/io/InputStream;)V" since="9"/> + <method name="setAsciiStream(Ljava/lang/String;Ljava/io/InputStream;I)V" since="9"/> + <method name="setBigDecimal(ILjava/math/BigDecimal;)V"/> + <method name="setBigDecimal(Ljava/lang/String;Ljava/math/BigDecimal;)V" since="9"/> + <method name="setBinaryStream(ILjava/io/InputStream;)V" since="9"/> + <method name="setBinaryStream(ILjava/io/InputStream;I)V"/> + <method name="setBinaryStream(Ljava/lang/String;Ljava/io/InputStream;)V" since="9"/> + <method name="setBinaryStream(Ljava/lang/String;Ljava/io/InputStream;I)V" since="9"/> + <method name="setBlob(ILjava/io/InputStream;)V" since="9"/> + <method name="setBlob(ILjava/io/InputStream;J)V" since="9"/> + <method name="setBlob(ILjava/sql/Blob;)V"/> + <method name="setBlob(Ljava/lang/String;Ljava/io/InputStream;)V" since="9"/> + <method name="setBlob(Ljava/lang/String;Ljava/io/InputStream;J)V" since="9"/> + <method name="setBlob(Ljava/lang/String;Ljava/sql/Blob;)V" since="9"/> + <method name="setBoolean(IZ)V"/> + <method name="setBoolean(Ljava/lang/String;Z)V" since="9"/> + <method name="setByte(IB)V"/> + <method name="setByte(Ljava/lang/String;B)V" since="9"/> + <method name="setBytes(I[B)V"/> + <method name="setBytes(Ljava/lang/String;[B)V" since="9"/> + <method name="setCharacterStream(ILjava/io/Reader;)V" since="9"/> + <method name="setCharacterStream(ILjava/io/Reader;I)V"/> + <method name="setCharacterStream(Ljava/lang/String;Ljava/io/Reader;)V" since="9"/> + <method name="setCharacterStream(Ljava/lang/String;Ljava/io/Reader;I)V" since="9"/> + <method name="setClob(ILjava/io/Reader;)V" since="9"/> + <method name="setClob(ILjava/io/Reader;J)V" since="9"/> + <method name="setClob(ILjava/sql/Clob;)V"/> + <method name="setClob(Ljava/lang/String;Ljava/io/Reader;)V" since="9"/> + <method name="setClob(Ljava/lang/String;Ljava/io/Reader;J)V" since="9"/> + <method name="setClob(Ljava/lang/String;Ljava/sql/Clob;)V" since="9"/> + <method name="setCommand(Ljava/lang/String;)V"/> + <method name="setConcurrency(I)V"/> + <method name="setDataSourceName(Ljava/lang/String;)V"/> + <method name="setDate(ILjava/sql/Date;)V"/> + <method name="setDate(ILjava/sql/Date;Ljava/util/Calendar;)V"/> + <method name="setDate(Ljava/lang/String;Ljava/sql/Date;)V" since="9"/> + <method name="setDate(Ljava/lang/String;Ljava/sql/Date;Ljava/util/Calendar;)V" since="9"/> + <method name="setDouble(ID)V"/> + <method name="setDouble(Ljava/lang/String;D)V" since="9"/> + <method name="setEscapeProcessing(Z)V"/> + <method name="setFloat(IF)V"/> + <method name="setFloat(Ljava/lang/String;F)V" since="9"/> + <method name="setInt(II)V"/> + <method name="setInt(Ljava/lang/String;I)V" since="9"/> + <method name="setLong(IJ)V"/> + <method name="setLong(Ljava/lang/String;J)V" since="9"/> + <method name="setMaxFieldSize(I)V"/> + <method name="setMaxRows(I)V"/> + <method name="setNCharacterStream(ILjava/io/Reader;)V" since="9"/> + <method name="setNCharacterStream(ILjava/io/Reader;J)V" since="9"/> + <method name="setNCharacterStream(Ljava/lang/String;Ljava/io/Reader;)V" since="9"/> + <method name="setNCharacterStream(Ljava/lang/String;Ljava/io/Reader;J)V" since="9"/> + <method name="setNClob(ILjava/io/Reader;)V" since="9"/> + <method name="setNClob(ILjava/io/Reader;J)V" since="9"/> + <method name="setNClob(ILjava/sql/NClob;)V" since="9"/> + <method name="setNClob(Ljava/lang/String;Ljava/io/Reader;)V" since="9"/> + <method name="setNClob(Ljava/lang/String;Ljava/io/Reader;J)V" since="9"/> + <method name="setNClob(Ljava/lang/String;Ljava/sql/NClob;)V" since="9"/> + <method name="setNString(ILjava/lang/String;)V" since="9"/> + <method name="setNString(Ljava/lang/String;Ljava/lang/String;)V" since="9"/> + <method name="setNull(II)V"/> + <method name="setNull(IILjava/lang/String;)V"/> + <method name="setNull(Ljava/lang/String;I)V" since="9"/> + <method name="setNull(Ljava/lang/String;ILjava/lang/String;)V" since="9"/> + <method name="setObject(ILjava/lang/Object;)V"/> + <method name="setObject(ILjava/lang/Object;I)V"/> + <method name="setObject(ILjava/lang/Object;II)V"/> + <method name="setObject(Ljava/lang/String;Ljava/lang/Object;)V" since="9"/> + <method name="setObject(Ljava/lang/String;Ljava/lang/Object;I)V" since="9"/> + <method name="setObject(Ljava/lang/String;Ljava/lang/Object;II)V" since="9"/> + <method name="setPassword(Ljava/lang/String;)V"/> + <method name="setQueryTimeout(I)V"/> + <method name="setReadOnly(Z)V"/> + <method name="setRef(ILjava/sql/Ref;)V"/> + <method name="setRowId(ILjava/sql/RowId;)V" since="9"/> + <method name="setRowId(Ljava/lang/String;Ljava/sql/RowId;)V" since="9"/> + <method name="setSQLXML(ILjava/sql/SQLXML;)V" since="9"/> + <method name="setSQLXML(Ljava/lang/String;Ljava/sql/SQLXML;)V" since="9"/> + <method name="setShort(IS)V"/> + <method name="setShort(Ljava/lang/String;S)V" since="9"/> + <method name="setString(ILjava/lang/String;)V"/> + <method name="setString(Ljava/lang/String;Ljava/lang/String;)V" since="9"/> + <method name="setTime(ILjava/sql/Time;)V"/> + <method name="setTime(ILjava/sql/Time;Ljava/util/Calendar;)V"/> + <method name="setTime(Ljava/lang/String;Ljava/sql/Time;)V" since="9"/> + <method name="setTime(Ljava/lang/String;Ljava/sql/Time;Ljava/util/Calendar;)V" since="9"/> + <method name="setTimestamp(ILjava/sql/Timestamp;)V"/> + <method name="setTimestamp(ILjava/sql/Timestamp;Ljava/util/Calendar;)V"/> + <method name="setTimestamp(Ljava/lang/String;Ljava/sql/Timestamp;)V" since="9"/> + <method name="setTimestamp(Ljava/lang/String;Ljava/sql/Timestamp;Ljava/util/Calendar;)V" since="9"/> + <method name="setTransactionIsolation(I)V"/> + <method name="setType(I)V"/> + <method name="setTypeMap(Ljava/util/Map;)V"/> + <method name="setURL(ILjava/net/URL;)V" since="9"/> + <method name="setUrl(Ljava/lang/String;)V"/> + <method name="setUsername(Ljava/lang/String;)V"/> + </class> + <class name="javax/sql/RowSetEvent" since="1"> + <extends name="java/util/EventObject"/> + <method name="<init>(Ljavax/sql/RowSet;)V"/> + </class> + <class name="javax/sql/RowSetInternal" since="1"> + <extends name="java/lang/Object"/> + <method name="getConnection()Ljava/sql/Connection;"/> + <method name="getOriginal()Ljava/sql/ResultSet;"/> + <method name="getOriginalRow()Ljava/sql/ResultSet;"/> + <method name="getParams()[Ljava/lang/Object;"/> + <method name="setMetaData(Ljavax/sql/RowSetMetaData;)V"/> + </class> + <class name="javax/sql/RowSetListener" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/util/EventListener"/> + <method name="cursorMoved(Ljavax/sql/RowSetEvent;)V"/> + <method name="rowChanged(Ljavax/sql/RowSetEvent;)V"/> + <method name="rowSetChanged(Ljavax/sql/RowSetEvent;)V"/> + </class> + <class name="javax/sql/RowSetMetaData" since="1"> + <extends name="java/lang/Object"/> + <implements name="java/sql/ResultSetMetaData"/> + <method name="setAutoIncrement(IZ)V"/> + <method name="setCaseSensitive(IZ)V"/> + <method name="setCatalogName(ILjava/lang/String;)V"/> + <method name="setColumnCount(I)V"/> + <method name="setColumnDisplaySize(II)V"/> + <method name="setColumnLabel(ILjava/lang/String;)V"/> + <method name="setColumnName(ILjava/lang/String;)V"/> + <method name="setColumnType(II)V"/> + <method name="setColumnTypeName(ILjava/lang/String;)V"/> + <method name="setCurrency(IZ)V"/> + <method name="setNullable(II)V"/> + <method name="setPrecision(II)V"/> + <method name="setScale(II)V"/> + <method name="setSchemaName(ILjava/lang/String;)V"/> + <method name="setSearchable(IZ)V"/> + <method name="setSigned(IZ)V"/> + <method name="setTableName(ILjava/lang/String;)V"/> + </class> + <class name="javax/sql/RowSetReader" since="1"> + <extends name="java/lang/Object"/> + <method name="readData(Ljavax/sql/RowSetInternal;)V"/> + </class> + <class name="javax/sql/RowSetWriter" since="1"> + <extends name="java/lang/Object"/> + <method name="writeData(Ljavax/sql/RowSetInternal;)Z"/> + </class> + <class name="javax/sql/StatementEvent" since="9"> + <extends name="java/util/EventObject"/> + <method name="<init>(Ljavax/sql/PooledConnection;Ljava/sql/PreparedStatement;)V"/> + <method name="<init>(Ljavax/sql/PooledConnection;Ljava/sql/PreparedStatement;Ljava/sql/SQLException;)V"/> + <method name="getSQLException()Ljava/sql/SQLException;"/> + <method name="getStatement()Ljava/sql/PreparedStatement;"/> + </class> + <class name="javax/sql/StatementEventListener" since="9"> + <extends name="java/lang/Object"/> + <implements name="java/util/EventListener"/> + <method name="statementClosed(Ljavax/sql/StatementEvent;)V"/> + <method name="statementErrorOccurred(Ljavax/sql/StatementEvent;)V"/> + </class> + <class name="javax/xml/XMLConstants" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="DEFAULT_NS_PREFIX"/> + <field name="FEATURE_SECURE_PROCESSING"/> + <field name="NULL_NS_URI"/> + <field name="RELAXNG_NS_URI"/> + <field name="W3C_XML_SCHEMA_INSTANCE_NS_URI"/> + <field name="W3C_XML_SCHEMA_NS_URI"/> + <field name="W3C_XPATH_DATATYPE_NS_URI"/> + <field name="XMLNS_ATTRIBUTE"/> + <field name="XMLNS_ATTRIBUTE_NS_URI"/> + <field name="XML_DTD_NS_URI"/> + <field name="XML_NS_PREFIX"/> + <field name="XML_NS_URI"/> + </class> + <class name="javax/xml/datatype/DatatypeConfigurationException" since="8"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="javax/xml/datatype/DatatypeConstants" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="APRIL"/> + <field name="AUGUST"/> + <field name="DATE"/> + <field name="DATETIME"/> + <field name="DAYS"/> + <field name="DECEMBER"/> + <field name="DURATION"/> + <field name="DURATION_DAYTIME"/> + <field name="DURATION_YEARMONTH"/> + <field name="EQUAL"/> + <field name="FEBRUARY"/> + <field name="FIELD_UNDEFINED"/> + <field name="GDAY"/> + <field name="GMONTH"/> + <field name="GMONTHDAY"/> + <field name="GREATER"/> + <field name="GYEAR"/> + <field name="GYEARMONTH"/> + <field name="HOURS"/> + <field name="INDETERMINATE"/> + <field name="JANUARY"/> + <field name="JULY"/> + <field name="JUNE"/> + <field name="LESSER"/> + <field name="MARCH"/> + <field name="MAX_TIMEZONE_OFFSET"/> + <field name="MAY"/> + <field name="MINUTES"/> + <field name="MIN_TIMEZONE_OFFSET"/> + <field name="MONTHS"/> + <field name="NOVEMBER"/> + <field name="OCTOBER"/> + <field name="SECONDS"/> + <field name="SEPTEMBER"/> + <field name="TIME"/> + <field name="YEARS"/> + </class> + <class name="javax/xml/datatype/DatatypeConstants$Field" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getId()I"/> + </class> + <class name="javax/xml/datatype/DatatypeFactory" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="newDuration(J)Ljavax/xml/datatype/Duration;"/> + <method name="newDuration(Ljava/lang/String;)Ljavax/xml/datatype/Duration;"/> + <method name="newDuration(ZIIIIII)Ljavax/xml/datatype/Duration;"/> + <method name="newDuration(ZLjava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigDecimal;)Ljavax/xml/datatype/Duration;"/> + <method name="newDurationDayTime(J)Ljavax/xml/datatype/Duration;"/> + <method name="newDurationDayTime(Ljava/lang/String;)Ljavax/xml/datatype/Duration;"/> + <method name="newDurationDayTime(ZIIII)Ljavax/xml/datatype/Duration;"/> + <method name="newDurationDayTime(ZLjava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljavax/xml/datatype/Duration;"/> + <method name="newDurationYearMonth(J)Ljavax/xml/datatype/Duration;"/> + <method name="newDurationYearMonth(Ljava/lang/String;)Ljavax/xml/datatype/Duration;"/> + <method name="newDurationYearMonth(ZII)Ljavax/xml/datatype/Duration;"/> + <method name="newDurationYearMonth(ZLjava/math/BigInteger;Ljava/math/BigInteger;)Ljavax/xml/datatype/Duration;"/> + <method name="newInstance()Ljavax/xml/datatype/DatatypeFactory;"/> + <method name="newInstance(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/datatype/DatatypeFactory;" since="9"/> + <method name="newXMLGregorianCalendar()Ljavax/xml/datatype/XMLGregorianCalendar;"/> + <method name="newXMLGregorianCalendar(IIIIIIII)Ljavax/xml/datatype/XMLGregorianCalendar;"/> + <method name="newXMLGregorianCalendar(Ljava/lang/String;)Ljavax/xml/datatype/XMLGregorianCalendar;"/> + <method name="newXMLGregorianCalendar(Ljava/math/BigInteger;IIIIILjava/math/BigDecimal;I)Ljavax/xml/datatype/XMLGregorianCalendar;"/> + <method name="newXMLGregorianCalendar(Ljava/util/GregorianCalendar;)Ljavax/xml/datatype/XMLGregorianCalendar;"/> + <method name="newXMLGregorianCalendarDate(IIII)Ljavax/xml/datatype/XMLGregorianCalendar;"/> + <method name="newXMLGregorianCalendarTime(IIII)Ljavax/xml/datatype/XMLGregorianCalendar;"/> + <method name="newXMLGregorianCalendarTime(IIIII)Ljavax/xml/datatype/XMLGregorianCalendar;"/> + <method name="newXMLGregorianCalendarTime(IIILjava/math/BigDecimal;I)Ljavax/xml/datatype/XMLGregorianCalendar;"/> + <field name="DATATYPEFACTORY_IMPLEMENTATION_CLASS"/> + <field name="DATATYPEFACTORY_PROPERTY"/> + </class> + <class name="javax/xml/datatype/Duration" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="add(Ljavax/xml/datatype/Duration;)Ljavax/xml/datatype/Duration;"/> + <method name="addTo(Ljava/util/Calendar;)V"/> + <method name="addTo(Ljava/util/Date;)V"/> + <method name="compare(Ljavax/xml/datatype/Duration;)I"/> + <method name="getDays()I"/> + <method name="getField(Ljavax/xml/datatype/DatatypeConstants$Field;)Ljava/lang/Number;"/> + <method name="getHours()I"/> + <method name="getMinutes()I"/> + <method name="getMonths()I"/> + <method name="getSeconds()I"/> + <method name="getSign()I"/> + <method name="getTimeInMillis(Ljava/util/Calendar;)J"/> + <method name="getTimeInMillis(Ljava/util/Date;)J"/> + <method name="getXMLSchemaType()Ljavax/xml/namespace/QName;"/> + <method name="getYears()I"/> + <method name="isLongerThan(Ljavax/xml/datatype/Duration;)Z"/> + <method name="isSet(Ljavax/xml/datatype/DatatypeConstants$Field;)Z"/> + <method name="isShorterThan(Ljavax/xml/datatype/Duration;)Z"/> + <method name="multiply(I)Ljavax/xml/datatype/Duration;"/> + <method name="multiply(Ljava/math/BigDecimal;)Ljavax/xml/datatype/Duration;"/> + <method name="negate()Ljavax/xml/datatype/Duration;"/> + <method name="normalizeWith(Ljava/util/Calendar;)Ljavax/xml/datatype/Duration;"/> + <method name="subtract(Ljavax/xml/datatype/Duration;)Ljavax/xml/datatype/Duration;"/> + </class> + <class name="javax/xml/datatype/XMLGregorianCalendar" since="8"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="add(Ljavax/xml/datatype/Duration;)V"/> + <method name="clear()V"/> + <method name="compare(Ljavax/xml/datatype/XMLGregorianCalendar;)I"/> + <method name="getDay()I"/> + <method name="getEon()Ljava/math/BigInteger;"/> + <method name="getEonAndYear()Ljava/math/BigInteger;"/> + <method name="getFractionalSecond()Ljava/math/BigDecimal;"/> + <method name="getHour()I"/> + <method name="getMillisecond()I"/> + <method name="getMinute()I"/> + <method name="getMonth()I"/> + <method name="getSecond()I"/> + <method name="getTimeZone(I)Ljava/util/TimeZone;"/> + <method name="getTimezone()I"/> + <method name="getXMLSchemaType()Ljavax/xml/namespace/QName;"/> + <method name="getYear()I"/> + <method name="isValid()Z"/> + <method name="normalize()Ljavax/xml/datatype/XMLGregorianCalendar;"/> + <method name="reset()V"/> + <method name="setDay(I)V"/> + <method name="setFractionalSecond(Ljava/math/BigDecimal;)V"/> + <method name="setHour(I)V"/> + <method name="setMillisecond(I)V"/> + <method name="setMinute(I)V"/> + <method name="setMonth(I)V"/> + <method name="setSecond(I)V"/> + <method name="setTime(III)V"/> + <method name="setTime(IIII)V"/> + <method name="setTime(IIILjava/math/BigDecimal;)V"/> + <method name="setTimezone(I)V"/> + <method name="setYear(I)V"/> + <method name="setYear(Ljava/math/BigInteger;)V"/> + <method name="toGregorianCalendar()Ljava/util/GregorianCalendar;"/> + <method name="toGregorianCalendar(Ljava/util/TimeZone;Ljava/util/Locale;Ljavax/xml/datatype/XMLGregorianCalendar;)Ljava/util/GregorianCalendar;"/> + <method name="toXMLFormat()Ljava/lang/String;"/> + </class> + <class name="javax/xml/namespace/NamespaceContext" since="8"> + <extends name="java/lang/Object"/> + <method name="getNamespaceURI(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getPrefix(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getPrefixes(Ljava/lang/String;)Ljava/util/Iterator;"/> + </class> + <class name="javax/xml/namespace/QName" since="8"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="getLocalPart()Ljava/lang/String;"/> + <method name="getNamespaceURI()Ljava/lang/String;"/> + <method name="getPrefix()Ljava/lang/String;"/> + <method name="valueOf(Ljava/lang/String;)Ljavax/xml/namespace/QName;"/> + </class> + <class name="javax/xml/parsers/DocumentBuilder" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getDOMImplementation()Lorg/w3c/dom/DOMImplementation;"/> + <method name="getSchema()Ljavax/xml/validation/Schema;" since="8"/> + <method name="isNamespaceAware()Z"/> + <method name="isValidating()Z"/> + <method name="isXIncludeAware()Z"/> + <method name="newDocument()Lorg/w3c/dom/Document;"/> + <method name="parse(Ljava/io/File;)Lorg/w3c/dom/Document;"/> + <method name="parse(Ljava/io/InputStream;)Lorg/w3c/dom/Document;"/> + <method name="parse(Ljava/io/InputStream;Ljava/lang/String;)Lorg/w3c/dom/Document;"/> + <method name="parse(Ljava/lang/String;)Lorg/w3c/dom/Document;"/> + <method name="parse(Lorg/xml/sax/InputSource;)Lorg/w3c/dom/Document;"/> + <method name="reset()V"/> + <method name="setEntityResolver(Lorg/xml/sax/EntityResolver;)V"/> + <method name="setErrorHandler(Lorg/xml/sax/ErrorHandler;)V"/> + </class> + <class name="javax/xml/parsers/DocumentBuilderFactory" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAttribute(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="getFeature(Ljava/lang/String;)Z"/> + <method name="getSchema()Ljavax/xml/validation/Schema;" since="8"/> + <method name="isCoalescing()Z"/> + <method name="isExpandEntityReferences()Z"/> + <method name="isIgnoringComments()Z"/> + <method name="isIgnoringElementContentWhitespace()Z"/> + <method name="isNamespaceAware()Z"/> + <method name="isValidating()Z"/> + <method name="isXIncludeAware()Z"/> + <method name="newDocumentBuilder()Ljavax/xml/parsers/DocumentBuilder;"/> + <method name="newInstance()Ljavax/xml/parsers/DocumentBuilderFactory;"/> + <method name="newInstance(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/parsers/DocumentBuilderFactory;" since="9"/> + <method name="setAttribute(Ljava/lang/String;Ljava/lang/Object;)V"/> + <method name="setCoalescing(Z)V"/> + <method name="setExpandEntityReferences(Z)V"/> + <method name="setFeature(Ljava/lang/String;Z)V"/> + <method name="setIgnoringComments(Z)V"/> + <method name="setIgnoringElementContentWhitespace(Z)V"/> + <method name="setNamespaceAware(Z)V"/> + <method name="setSchema(Ljavax/xml/validation/Schema;)V" since="8"/> + <method name="setValidating(Z)V"/> + <method name="setXIncludeAware(Z)V"/> + </class> + <class name="javax/xml/parsers/FactoryConfigurationError" since="1"> + <extends name="java/lang/Error"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/Exception;)V"/> + <method name="<init>(Ljava/lang/Exception;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getException()Ljava/lang/Exception;"/> + </class> + <class name="javax/xml/parsers/ParserConfigurationException" since="1"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="javax/xml/parsers/SAXParser" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getParser()Lorg/xml/sax/Parser;"/> + <method name="getProperty(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="getSchema()Ljavax/xml/validation/Schema;" since="8"/> + <method name="getXMLReader()Lorg/xml/sax/XMLReader;"/> + <method name="isNamespaceAware()Z"/> + <method name="isValidating()Z"/> + <method name="isXIncludeAware()Z"/> + <method name="parse(Ljava/io/File;Lorg/xml/sax/HandlerBase;)V"/> + <method name="parse(Ljava/io/File;Lorg/xml/sax/helpers/DefaultHandler;)V"/> + <method name="parse(Ljava/io/InputStream;Lorg/xml/sax/HandlerBase;)V"/> + <method name="parse(Ljava/io/InputStream;Lorg/xml/sax/HandlerBase;Ljava/lang/String;)V"/> + <method name="parse(Ljava/io/InputStream;Lorg/xml/sax/helpers/DefaultHandler;)V"/> + <method name="parse(Ljava/io/InputStream;Lorg/xml/sax/helpers/DefaultHandler;Ljava/lang/String;)V"/> + <method name="parse(Ljava/lang/String;Lorg/xml/sax/HandlerBase;)V"/> + <method name="parse(Ljava/lang/String;Lorg/xml/sax/helpers/DefaultHandler;)V"/> + <method name="parse(Lorg/xml/sax/InputSource;Lorg/xml/sax/HandlerBase;)V"/> + <method name="parse(Lorg/xml/sax/InputSource;Lorg/xml/sax/helpers/DefaultHandler;)V"/> + <method name="reset()V"/> + <method name="setProperty(Ljava/lang/String;Ljava/lang/Object;)V"/> + </class> + <class name="javax/xml/parsers/SAXParserFactory" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getFeature(Ljava/lang/String;)Z"/> + <method name="getSchema()Ljavax/xml/validation/Schema;" since="8"/> + <method name="isNamespaceAware()Z"/> + <method name="isValidating()Z"/> + <method name="isXIncludeAware()Z"/> + <method name="newInstance()Ljavax/xml/parsers/SAXParserFactory;"/> + <method name="newInstance(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/parsers/SAXParserFactory;" since="9"/> + <method name="newSAXParser()Ljavax/xml/parsers/SAXParser;"/> + <method name="setFeature(Ljava/lang/String;Z)V"/> + <method name="setNamespaceAware(Z)V"/> + <method name="setSchema(Ljavax/xml/validation/Schema;)V" since="8"/> + <method name="setValidating(Z)V"/> + <method name="setXIncludeAware(Z)V"/> + </class> + <class name="javax/xml/transform/ErrorListener" since="8"> + <extends name="java/lang/Object"/> + <method name="error(Ljavax/xml/transform/TransformerException;)V"/> + <method name="fatalError(Ljavax/xml/transform/TransformerException;)V"/> + <method name="warning(Ljavax/xml/transform/TransformerException;)V"/> + </class> + <class name="javax/xml/transform/OutputKeys" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="CDATA_SECTION_ELEMENTS"/> + <field name="DOCTYPE_PUBLIC"/> + <field name="DOCTYPE_SYSTEM"/> + <field name="ENCODING"/> + <field name="INDENT"/> + <field name="MEDIA_TYPE"/> + <field name="METHOD"/> + <field name="OMIT_XML_DECLARATION"/> + <field name="STANDALONE"/> + <field name="VERSION"/> + </class> + <class name="javax/xml/transform/Result" since="8"> + <extends name="java/lang/Object"/> + <method name="getSystemId()Ljava/lang/String;"/> + <method name="setSystemId(Ljava/lang/String;)V"/> + <field name="PI_DISABLE_OUTPUT_ESCAPING"/> + <field name="PI_ENABLE_OUTPUT_ESCAPING"/> + </class> + <class name="javax/xml/transform/Source" since="8"> + <extends name="java/lang/Object"/> + <method name="getSystemId()Ljava/lang/String;"/> + <method name="setSystemId(Ljava/lang/String;)V"/> + </class> + <class name="javax/xml/transform/SourceLocator" since="8"> + <extends name="java/lang/Object"/> + <method name="getColumnNumber()I"/> + <method name="getLineNumber()I"/> + <method name="getPublicId()Ljava/lang/String;"/> + <method name="getSystemId()Ljava/lang/String;"/> + </class> + <class name="javax/xml/transform/Templates" since="8"> + <extends name="java/lang/Object"/> + <method name="getOutputProperties()Ljava/util/Properties;"/> + <method name="newTransformer()Ljavax/xml/transform/Transformer;"/> + </class> + <class name="javax/xml/transform/Transformer" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="clearParameters()V"/> + <method name="getErrorListener()Ljavax/xml/transform/ErrorListener;"/> + <method name="getOutputProperties()Ljava/util/Properties;"/> + <method name="getOutputProperty(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getParameter(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="getURIResolver()Ljavax/xml/transform/URIResolver;"/> + <method name="reset()V"/> + <method name="setErrorListener(Ljavax/xml/transform/ErrorListener;)V"/> + <method name="setOutputProperties(Ljava/util/Properties;)V"/> + <method name="setOutputProperty(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="setParameter(Ljava/lang/String;Ljava/lang/Object;)V"/> + <method name="setURIResolver(Ljavax/xml/transform/URIResolver;)V"/> + <method name="transform(Ljavax/xml/transform/Source;Ljavax/xml/transform/Result;)V"/> + </class> + <class name="javax/xml/transform/TransformerConfigurationException" since="8"> + <extends name="javax/xml/transform/TransformerException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljavax/xml/transform/SourceLocator;)V"/> + <method name="<init>(Ljava/lang/String;Ljavax/xml/transform/SourceLocator;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="javax/xml/transform/TransformerException" since="8"> + <extends name="java/lang/Exception"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/String;Ljavax/xml/transform/SourceLocator;)V"/> + <method name="<init>(Ljava/lang/String;Ljavax/xml/transform/SourceLocator;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + <method name="getException()Ljava/lang/Throwable;"/> + <method name="getLocationAsString()Ljava/lang/String;"/> + <method name="getLocator()Ljavax/xml/transform/SourceLocator;"/> + <method name="getMessageAndLocation()Ljava/lang/String;"/> + <method name="setLocator(Ljavax/xml/transform/SourceLocator;)V"/> + </class> + <class name="javax/xml/transform/TransformerFactory" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAssociatedStylesheet(Ljavax/xml/transform/Source;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljavax/xml/transform/Source;"/> + <method name="getAttribute(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="getErrorListener()Ljavax/xml/transform/ErrorListener;"/> + <method name="getFeature(Ljava/lang/String;)Z"/> + <method name="getURIResolver()Ljavax/xml/transform/URIResolver;"/> + <method name="newInstance()Ljavax/xml/transform/TransformerFactory;"/> + <method name="newInstance(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/transform/TransformerFactory;" since="9"/> + <method name="newTemplates(Ljavax/xml/transform/Source;)Ljavax/xml/transform/Templates;"/> + <method name="newTransformer()Ljavax/xml/transform/Transformer;"/> + <method name="newTransformer(Ljavax/xml/transform/Source;)Ljavax/xml/transform/Transformer;"/> + <method name="setAttribute(Ljava/lang/String;Ljava/lang/Object;)V"/> + <method name="setErrorListener(Ljavax/xml/transform/ErrorListener;)V"/> + <method name="setFeature(Ljava/lang/String;Z)V"/> + <method name="setURIResolver(Ljavax/xml/transform/URIResolver;)V"/> + </class> + <class name="javax/xml/transform/TransformerFactoryConfigurationError" since="8"> + <extends name="java/lang/Error"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/Exception;)V"/> + <method name="<init>(Ljava/lang/Exception;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getException()Ljava/lang/Exception;"/> + </class> + <class name="javax/xml/transform/URIResolver" since="8"> + <extends name="java/lang/Object"/> + <method name="resolve(Ljava/lang/String;Ljava/lang/String;)Ljavax/xml/transform/Source;"/> + </class> + <class name="javax/xml/transform/dom/DOMLocator" since="8"> + <extends name="java/lang/Object"/> + <implements name="javax/xml/transform/SourceLocator"/> + <method name="getOriginatingNode()Lorg/w3c/dom/Node;"/> + </class> + <class name="javax/xml/transform/dom/DOMResult" since="8"> + <extends name="java/lang/Object"/> + <implements name="javax/xml/transform/Result"/> + <method name="<init>()V"/> + <method name="<init>(Lorg/w3c/dom/Node;)V"/> + <method name="<init>(Lorg/w3c/dom/Node;Ljava/lang/String;)V"/> + <method name="<init>(Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;)V"/> + <method name="<init>(Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;Ljava/lang/String;)V"/> + <method name="getNextSibling()Lorg/w3c/dom/Node;"/> + <method name="getNode()Lorg/w3c/dom/Node;"/> + <method name="setNextSibling(Lorg/w3c/dom/Node;)V"/> + <method name="setNode(Lorg/w3c/dom/Node;)V"/> + <field name="FEATURE"/> + </class> + <class name="javax/xml/transform/dom/DOMSource" since="8"> + <extends name="java/lang/Object"/> + <implements name="javax/xml/transform/Source"/> + <method name="<init>()V"/> + <method name="<init>(Lorg/w3c/dom/Node;)V"/> + <method name="<init>(Lorg/w3c/dom/Node;Ljava/lang/String;)V"/> + <method name="getNode()Lorg/w3c/dom/Node;"/> + <method name="setNode(Lorg/w3c/dom/Node;)V"/> + <field name="FEATURE"/> + </class> + <class name="javax/xml/transform/sax/SAXResult" since="8"> + <extends name="java/lang/Object"/> + <implements name="javax/xml/transform/Result"/> + <method name="<init>()V"/> + <method name="<init>(Lorg/xml/sax/ContentHandler;)V"/> + <method name="getHandler()Lorg/xml/sax/ContentHandler;"/> + <method name="getLexicalHandler()Lorg/xml/sax/ext/LexicalHandler;"/> + <method name="setHandler(Lorg/xml/sax/ContentHandler;)V"/> + <method name="setLexicalHandler(Lorg/xml/sax/ext/LexicalHandler;)V"/> + <field name="FEATURE"/> + </class> + <class name="javax/xml/transform/sax/SAXSource" since="8"> + <extends name="java/lang/Object"/> + <implements name="javax/xml/transform/Source"/> + <method name="<init>()V"/> + <method name="<init>(Lorg/xml/sax/InputSource;)V"/> + <method name="<init>(Lorg/xml/sax/XMLReader;Lorg/xml/sax/InputSource;)V"/> + <method name="getInputSource()Lorg/xml/sax/InputSource;"/> + <method name="getXMLReader()Lorg/xml/sax/XMLReader;"/> + <method name="setInputSource(Lorg/xml/sax/InputSource;)V"/> + <method name="setXMLReader(Lorg/xml/sax/XMLReader;)V"/> + <method name="sourceToInputSource(Ljavax/xml/transform/Source;)Lorg/xml/sax/InputSource;"/> + <field name="FEATURE"/> + </class> + <class name="javax/xml/transform/sax/SAXTransformerFactory" since="8"> + <extends name="javax/xml/transform/TransformerFactory"/> + <method name="<init>()V"/> + <method name="newTemplatesHandler()Ljavax/xml/transform/sax/TemplatesHandler;"/> + <method name="newTransformerHandler()Ljavax/xml/transform/sax/TransformerHandler;"/> + <method name="newTransformerHandler(Ljavax/xml/transform/Source;)Ljavax/xml/transform/sax/TransformerHandler;"/> + <method name="newTransformerHandler(Ljavax/xml/transform/Templates;)Ljavax/xml/transform/sax/TransformerHandler;"/> + <method name="newXMLFilter(Ljavax/xml/transform/Source;)Lorg/xml/sax/XMLFilter;"/> + <method name="newXMLFilter(Ljavax/xml/transform/Templates;)Lorg/xml/sax/XMLFilter;"/> + <field name="FEATURE"/> + <field name="FEATURE_XMLFILTER"/> + </class> + <class name="javax/xml/transform/sax/TemplatesHandler" since="8"> + <extends name="java/lang/Object"/> + <implements name="org/xml/sax/ContentHandler"/> + <method name="getSystemId()Ljava/lang/String;"/> + <method name="getTemplates()Ljavax/xml/transform/Templates;"/> + <method name="setSystemId(Ljava/lang/String;)V"/> + </class> + <class name="javax/xml/transform/sax/TransformerHandler" since="8"> + <extends name="java/lang/Object"/> + <implements name="org/xml/sax/ContentHandler"/> + <implements name="org/xml/sax/DTDHandler"/> + <implements name="org/xml/sax/ext/LexicalHandler"/> + <method name="getSystemId()Ljava/lang/String;"/> + <method name="getTransformer()Ljavax/xml/transform/Transformer;"/> + <method name="setResult(Ljavax/xml/transform/Result;)V"/> + <method name="setSystemId(Ljava/lang/String;)V"/> + </class> + <class name="javax/xml/transform/stream/StreamResult" since="8"> + <extends name="java/lang/Object"/> + <implements name="javax/xml/transform/Result"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/io/File;)V"/> + <method name="<init>(Ljava/io/OutputStream;)V"/> + <method name="<init>(Ljava/io/Writer;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getOutputStream()Ljava/io/OutputStream;"/> + <method name="getWriter()Ljava/io/Writer;"/> + <method name="setOutputStream(Ljava/io/OutputStream;)V"/> + <method name="setSystemId(Ljava/io/File;)V"/> + <method name="setWriter(Ljava/io/Writer;)V"/> + <field name="FEATURE"/> + </class> + <class name="javax/xml/transform/stream/StreamSource" since="8"> + <extends name="java/lang/Object"/> + <implements name="javax/xml/transform/Source"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/io/File;)V"/> + <method name="<init>(Ljava/io/InputStream;)V"/> + <method name="<init>(Ljava/io/InputStream;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/io/Reader;)V"/> + <method name="<init>(Ljava/io/Reader;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getInputStream()Ljava/io/InputStream;"/> + <method name="getPublicId()Ljava/lang/String;"/> + <method name="getReader()Ljava/io/Reader;"/> + <method name="setInputStream(Ljava/io/InputStream;)V"/> + <method name="setPublicId(Ljava/lang/String;)V"/> + <method name="setReader(Ljava/io/Reader;)V"/> + <method name="setSystemId(Ljava/io/File;)V"/> + <field name="FEATURE"/> + </class> + <class name="javax/xml/validation/Schema" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="newValidator()Ljavax/xml/validation/Validator;"/> + <method name="newValidatorHandler()Ljavax/xml/validation/ValidatorHandler;"/> + </class> + <class name="javax/xml/validation/SchemaFactory" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getErrorHandler()Lorg/xml/sax/ErrorHandler;"/> + <method name="getFeature(Ljava/lang/String;)Z"/> + <method name="getProperty(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="getResourceResolver()Lorg/w3c/dom/ls/LSResourceResolver;"/> + <method name="isSchemaLanguageSupported(Ljava/lang/String;)Z"/> + <method name="newInstance(Ljava/lang/String;)Ljavax/xml/validation/SchemaFactory;"/> + <method name="newInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/validation/SchemaFactory;" since="9"/> + <method name="newSchema()Ljavax/xml/validation/Schema;"/> + <method name="newSchema(Ljava/io/File;)Ljavax/xml/validation/Schema;"/> + <method name="newSchema(Ljava/net/URL;)Ljavax/xml/validation/Schema;"/> + <method name="newSchema(Ljavax/xml/transform/Source;)Ljavax/xml/validation/Schema;"/> + <method name="newSchema([Ljavax/xml/transform/Source;)Ljavax/xml/validation/Schema;"/> + <method name="setErrorHandler(Lorg/xml/sax/ErrorHandler;)V"/> + <method name="setFeature(Ljava/lang/String;Z)V"/> + <method name="setProperty(Ljava/lang/String;Ljava/lang/Object;)V"/> + <method name="setResourceResolver(Lorg/w3c/dom/ls/LSResourceResolver;)V"/> + </class> + <class name="javax/xml/validation/SchemaFactoryLoader" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="newFactory(Ljava/lang/String;)Ljavax/xml/validation/SchemaFactory;"/> + </class> + <class name="javax/xml/validation/TypeInfoProvider" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAttributeTypeInfo(I)Lorg/w3c/dom/TypeInfo;"/> + <method name="getElementTypeInfo()Lorg/w3c/dom/TypeInfo;"/> + <method name="isIdAttribute(I)Z"/> + <method name="isSpecified(I)Z"/> + </class> + <class name="javax/xml/validation/Validator" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getErrorHandler()Lorg/xml/sax/ErrorHandler;"/> + <method name="getFeature(Ljava/lang/String;)Z"/> + <method name="getProperty(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="getResourceResolver()Lorg/w3c/dom/ls/LSResourceResolver;"/> + <method name="reset()V"/> + <method name="setErrorHandler(Lorg/xml/sax/ErrorHandler;)V"/> + <method name="setFeature(Ljava/lang/String;Z)V"/> + <method name="setProperty(Ljava/lang/String;Ljava/lang/Object;)V"/> + <method name="setResourceResolver(Lorg/w3c/dom/ls/LSResourceResolver;)V"/> + <method name="validate(Ljavax/xml/transform/Source;)V"/> + <method name="validate(Ljavax/xml/transform/Source;Ljavax/xml/transform/Result;)V"/> + </class> + <class name="javax/xml/validation/ValidatorHandler" since="8"> + <extends name="java/lang/Object"/> + <implements name="org/xml/sax/ContentHandler"/> + <method name="<init>()V"/> + <method name="getContentHandler()Lorg/xml/sax/ContentHandler;"/> + <method name="getErrorHandler()Lorg/xml/sax/ErrorHandler;"/> + <method name="getFeature(Ljava/lang/String;)Z"/> + <method name="getProperty(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="getResourceResolver()Lorg/w3c/dom/ls/LSResourceResolver;"/> + <method name="getTypeInfoProvider()Ljavax/xml/validation/TypeInfoProvider;"/> + <method name="setContentHandler(Lorg/xml/sax/ContentHandler;)V"/> + <method name="setErrorHandler(Lorg/xml/sax/ErrorHandler;)V"/> + <method name="setFeature(Ljava/lang/String;Z)V"/> + <method name="setProperty(Ljava/lang/String;Ljava/lang/Object;)V"/> + <method name="setResourceResolver(Lorg/w3c/dom/ls/LSResourceResolver;)V"/> + </class> + <class name="javax/xml/xpath/XPath" since="8"> + <extends name="java/lang/Object"/> + <method name="compile(Ljava/lang/String;)Ljavax/xml/xpath/XPathExpression;"/> + <method name="evaluate(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/String;"/> + <method name="evaluate(Ljava/lang/String;Ljava/lang/Object;Ljavax/xml/namespace/QName;)Ljava/lang/Object;"/> + <method name="evaluate(Ljava/lang/String;Lorg/xml/sax/InputSource;)Ljava/lang/String;"/> + <method name="evaluate(Ljava/lang/String;Lorg/xml/sax/InputSource;Ljavax/xml/namespace/QName;)Ljava/lang/Object;"/> + <method name="getNamespaceContext()Ljavax/xml/namespace/NamespaceContext;"/> + <method name="getXPathFunctionResolver()Ljavax/xml/xpath/XPathFunctionResolver;"/> + <method name="getXPathVariableResolver()Ljavax/xml/xpath/XPathVariableResolver;"/> + <method name="reset()V"/> + <method name="setNamespaceContext(Ljavax/xml/namespace/NamespaceContext;)V"/> + <method name="setXPathFunctionResolver(Ljavax/xml/xpath/XPathFunctionResolver;)V"/> + <method name="setXPathVariableResolver(Ljavax/xml/xpath/XPathVariableResolver;)V"/> + </class> + <class name="javax/xml/xpath/XPathConstants" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="BOOLEAN"/> + <field name="DOM_OBJECT_MODEL"/> + <field name="NODE"/> + <field name="NODESET"/> + <field name="NUMBER"/> + <field name="STRING"/> + </class> + <class name="javax/xml/xpath/XPathException" since="8"> + <extends name="java/lang/Exception"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="javax/xml/xpath/XPathExpression" since="8"> + <extends name="java/lang/Object"/> + <method name="evaluate(Ljava/lang/Object;)Ljava/lang/String;"/> + <method name="evaluate(Ljava/lang/Object;Ljavax/xml/namespace/QName;)Ljava/lang/Object;"/> + <method name="evaluate(Lorg/xml/sax/InputSource;)Ljava/lang/String;"/> + <method name="evaluate(Lorg/xml/sax/InputSource;Ljavax/xml/namespace/QName;)Ljava/lang/Object;"/> + </class> + <class name="javax/xml/xpath/XPathExpressionException" since="8"> + <extends name="javax/xml/xpath/XPathException"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="javax/xml/xpath/XPathFactory" since="8"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getFeature(Ljava/lang/String;)Z"/> + <method name="isObjectModelSupported(Ljava/lang/String;)Z"/> + <method name="newInstance()Ljavax/xml/xpath/XPathFactory;"/> + <method name="newInstance(Ljava/lang/String;)Ljavax/xml/xpath/XPathFactory;"/> + <method name="newInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/xpath/XPathFactory;"/> + <method name="newXPath()Ljavax/xml/xpath/XPath;"/> + <method name="setFeature(Ljava/lang/String;Z)V"/> + <method name="setXPathFunctionResolver(Ljavax/xml/xpath/XPathFunctionResolver;)V"/> + <method name="setXPathVariableResolver(Ljavax/xml/xpath/XPathVariableResolver;)V"/> + <field name="DEFAULT_OBJECT_MODEL_URI"/> + <field name="DEFAULT_PROPERTY_NAME"/> + </class> + <class name="javax/xml/xpath/XPathFactoryConfigurationException" since="8"> + <extends name="javax/xml/xpath/XPathException"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="javax/xml/xpath/XPathFunction" since="8"> + <extends name="java/lang/Object"/> + <method name="evaluate(Ljava/util/List;)Ljava/lang/Object;"/> + </class> + <class name="javax/xml/xpath/XPathFunctionException" since="8"> + <extends name="javax/xml/xpath/XPathExpressionException"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="javax/xml/xpath/XPathFunctionResolver" since="8"> + <extends name="java/lang/Object"/> + <method name="resolveFunction(Ljavax/xml/namespace/QName;I)Ljavax/xml/xpath/XPathFunction;"/> + </class> + <class name="javax/xml/xpath/XPathVariableResolver" since="8"> + <extends name="java/lang/Object"/> + <method name="resolveVariable(Ljavax/xml/namespace/QName;)Ljava/lang/Object;"/> + </class> + <class name="junit/framework/Assert" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="assertEquals(BB)V"/> + <method name="assertEquals(CC)V"/> + <method name="assertEquals(DDD)V"/> + <method name="assertEquals(FFF)V"/> + <method name="assertEquals(II)V"/> + <method name="assertEquals(JJ)V"/> + <method name="assertEquals(Ljava/lang/Object;Ljava/lang/Object;)V"/> + <method name="assertEquals(Ljava/lang/String;BB)V"/> + <method name="assertEquals(Ljava/lang/String;CC)V"/> + <method name="assertEquals(Ljava/lang/String;DDD)V"/> + <method name="assertEquals(Ljava/lang/String;FFF)V"/> + <method name="assertEquals(Ljava/lang/String;II)V"/> + <method name="assertEquals(Ljava/lang/String;JJ)V"/> + <method name="assertEquals(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V"/> + <method name="assertEquals(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="assertEquals(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="assertEquals(Ljava/lang/String;SS)V"/> + <method name="assertEquals(Ljava/lang/String;ZZ)V"/> + <method name="assertEquals(SS)V"/> + <method name="assertEquals(ZZ)V"/> + <method name="assertFalse(Ljava/lang/String;Z)V"/> + <method name="assertFalse(Z)V"/> + <method name="assertNotNull(Ljava/lang/Object;)V"/> + <method name="assertNotNull(Ljava/lang/String;Ljava/lang/Object;)V"/> + <method name="assertNotSame(Ljava/lang/Object;Ljava/lang/Object;)V"/> + <method name="assertNotSame(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V"/> + <method name="assertNull(Ljava/lang/Object;)V"/> + <method name="assertNull(Ljava/lang/String;Ljava/lang/Object;)V"/> + <method name="assertSame(Ljava/lang/Object;Ljava/lang/Object;)V"/> + <method name="assertSame(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V"/> + <method name="assertTrue(Ljava/lang/String;Z)V"/> + <method name="assertTrue(Z)V"/> + <method name="fail()V"/> + <method name="fail(Ljava/lang/String;)V"/> + <method name="failNotEquals(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V" since="16"/> + <method name="failNotSame(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V" since="16"/> + <method name="failSame(Ljava/lang/String;)V" since="16"/> + <method name="format(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/String;" since="16"/> + </class> + <class name="junit/framework/AssertionFailedError" since="1"> + <extends name="java/lang/AssertionError" since="16"/> + <extends name="java/lang/Error" removed="16"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="junit/framework/ComparisonFailure" since="1"> + <extends name="junit/framework/AssertionFailedError"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="getActual()Ljava/lang/String;" since="16"/> + <method name="getExpected()Ljava/lang/String;" since="16"/> + </class> + <class name="junit/framework/Protectable" since="1"> + <extends name="java/lang/Object"/> + <method name="protect()V"/> + </class> + <class name="junit/framework/Test" since="1"> + <extends name="java/lang/Object"/> + <method name="countTestCases()I"/> + <method name="run(Ljunit/framework/TestResult;)V"/> + </class> + <class name="junit/framework/TestCase" since="1"> + <extends name="junit/framework/Assert"/> + <implements name="junit/framework/Test"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="createResult()Ljunit/framework/TestResult;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="run()Ljunit/framework/TestResult;"/> + <method name="runBare()V"/> + <method name="runTest()V"/> + <method name="setName(Ljava/lang/String;)V"/> + <method name="setUp()V"/> + <method name="tearDown()V"/> + </class> + <class name="junit/framework/TestFailure" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljunit/framework/Test;Ljava/lang/Throwable;)V"/> + <method name="exceptionMessage()Ljava/lang/String;"/> + <method name="failedTest()Ljunit/framework/Test;"/> + <method name="isFailure()Z"/> + <method name="thrownException()Ljava/lang/Throwable;"/> + <method name="trace()Ljava/lang/String;"/> + <field name="fFailedTest"/> + <field name="fThrownException"/> + </class> + <class name="junit/framework/TestListener" since="1"> + <extends name="java/lang/Object"/> + <method name="addError(Ljunit/framework/Test;Ljava/lang/Throwable;)V"/> + <method name="addFailure(Ljunit/framework/Test;Ljunit/framework/AssertionFailedError;)V"/> + <method name="endTest(Ljunit/framework/Test;)V"/> + <method name="startTest(Ljunit/framework/Test;)V"/> + </class> + <class name="junit/framework/TestResult" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="addError(Ljunit/framework/Test;Ljava/lang/Throwable;)V"/> + <method name="addFailure(Ljunit/framework/Test;Ljunit/framework/AssertionFailedError;)V"/> + <method name="addListener(Ljunit/framework/TestListener;)V"/> + <method name="endTest(Ljunit/framework/Test;)V"/> + <method name="errorCount()I"/> + <method name="errors()Ljava/util/Enumeration;"/> + <method name="failureCount()I"/> + <method name="failures()Ljava/util/Enumeration;"/> + <method name="removeListener(Ljunit/framework/TestListener;)V"/> + <method name="run(Ljunit/framework/TestCase;)V"/> + <method name="runCount()I"/> + <method name="runProtected(Ljunit/framework/Test;Ljunit/framework/Protectable;)V"/> + <method name="shouldStop()Z"/> + <method name="startTest(Ljunit/framework/Test;)V"/> + <method name="stop()V"/> + <method name="wasSuccessful()Z"/> + <field name="fErrors"/> + <field name="fFailures"/> + <field name="fListeners"/> + <field name="fRunTests"/> + </class> + <class name="junit/framework/TestSuite" since="1"> + <extends name="java/lang/Object"/> + <implements name="junit/framework/Test"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/Class;)V"/> + <method name="<init>(Ljava/lang/Class;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>([Ljava/lang/Class;)V" since="16"/> + <method name="<init>([Ljava/lang/Class;Ljava/lang/String;)V" since="16"/> + <method name="addTest(Ljunit/framework/Test;)V"/> + <method name="addTestSuite(Ljava/lang/Class;)V"/> + <method name="createTest(Ljava/lang/Class;Ljava/lang/String;)Ljunit/framework/Test;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getTestConstructor(Ljava/lang/Class;)Ljava/lang/reflect/Constructor;"/> + <method name="runTest(Ljunit/framework/Test;Ljunit/framework/TestResult;)V"/> + <method name="setName(Ljava/lang/String;)V"/> + <method name="testAt(I)Ljunit/framework/Test;"/> + <method name="testCount()I"/> + <method name="tests()Ljava/util/Enumeration;"/> + <method name="warning(Ljava/lang/String;)Ljunit/framework/Test;" since="16"/> + </class> + <class name="junit/runner/BaseTestRunner" since="1"> + <extends name="java/lang/Object"/> + <implements name="junit/framework/TestListener"/> + <method name="<init>()V"/> + <method name="clearStatus()V"/> + <method name="elapsedTimeAsString(J)Ljava/lang/String;"/> + <method name="extractClassName(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getFilteredTrace(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getFilteredTrace(Ljava/lang/Throwable;)Ljava/lang/String;"/> + <method name="getLoader()Ljunit/runner/TestSuiteLoader;" deprecated="16"/> + <method name="getPreference(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getPreference(Ljava/lang/String;I)I"/> + <method name="getPreferences()Ljava/util/Properties;"/> + <method name="getTest(Ljava/lang/String;)Ljunit/framework/Test;"/> + <method name="inVAJava()Z" deprecated="16"/> + <method name="loadSuiteClass(Ljava/lang/String;)Ljava/lang/Class;"/> + <method name="processArguments([Ljava/lang/String;)Ljava/lang/String;"/> + <method name="runFailed(Ljava/lang/String;)V"/> + <method name="savePreferences()V"/> + <method name="setLoading(Z)V"/> + <method name="setPreference(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="setPreferences(Ljava/util/Properties;)V"/> + <method name="showStackRaw()Z"/> + <method name="testEnded(Ljava/lang/String;)V"/> + <method name="testFailed(ILjunit/framework/Test;Ljava/lang/Throwable;)V"/> + <method name="testStarted(Ljava/lang/String;)V"/> + <method name="truncate(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="useReloadingTestSuiteLoader()Z"/> + <field name="SUITE_METHODNAME"/> + </class> + <class name="junit/runner/TestSuiteLoader" since="1"> + <extends name="java/lang/Object"/> + <method name="load(Ljava/lang/String;)Ljava/lang/Class;"/> + <method name="reload(Ljava/lang/Class;)Ljava/lang/Class;"/> + </class> + <class name="junit/runner/Version" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="id()Ljava/lang/String;"/> + </class> + <class name="org/apache/commons/logging/Log" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="debug(Ljava/lang/Object;)V"/> + <method name="debug(Ljava/lang/Object;Ljava/lang/Throwable;)V"/> + <method name="error(Ljava/lang/Object;)V"/> + <method name="error(Ljava/lang/Object;Ljava/lang/Throwable;)V"/> + <method name="fatal(Ljava/lang/Object;)V"/> + <method name="fatal(Ljava/lang/Object;Ljava/lang/Throwable;)V"/> + <method name="info(Ljava/lang/Object;)V"/> + <method name="info(Ljava/lang/Object;Ljava/lang/Throwable;)V"/> + <method name="isDebugEnabled()Z"/> + <method name="isErrorEnabled()Z"/> + <method name="isFatalEnabled()Z"/> + <method name="isInfoEnabled()Z"/> + <method name="isTraceEnabled()Z"/> + <method name="isWarnEnabled()Z"/> + <method name="trace(Ljava/lang/Object;)V"/> + <method name="trace(Ljava/lang/Object;Ljava/lang/Throwable;)V"/> + <method name="warn(Ljava/lang/Object;)V"/> + <method name="warn(Ljava/lang/Object;Ljava/lang/Throwable;)V"/> + </class> + <class name="org/apache/http/ConnectionClosedException" since="1" deprecated="22" removed="23"> + <extends name="java/io/IOException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="org/apache/http/ConnectionReuseStrategy" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="keepAlive(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Z"/> + </class> + <class name="org/apache/http/FormattedHeader" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/Header"/> + <method name="getBuffer()Lorg/apache/http/util/CharArrayBuffer;"/> + <method name="getValuePos()I"/> + </class> + <class name="org/apache/http/Header" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="getElements()[Lorg/apache/http/HeaderElement;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getValue()Ljava/lang/String;"/> + </class> + <class name="org/apache/http/HeaderElement" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getParameter(I)Lorg/apache/http/NameValuePair;"/> + <method name="getParameterByName(Ljava/lang/String;)Lorg/apache/http/NameValuePair;"/> + <method name="getParameterCount()I"/> + <method name="getParameters()[Lorg/apache/http/NameValuePair;"/> + <method name="getValue()Ljava/lang/String;"/> + </class> + <class name="org/apache/http/HeaderElementIterator" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="java/util/Iterator"/> + <method name="nextElement()Lorg/apache/http/HeaderElement;"/> + </class> + <class name="org/apache/http/HeaderIterator" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="java/util/Iterator"/> + <method name="nextHeader()Lorg/apache/http/Header;"/> + </class> + <class name="org/apache/http/HttpClientConnection" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpConnection"/> + <method name="flush()V"/> + <method name="isResponseAvailable(I)Z"/> + <method name="receiveResponseEntity(Lorg/apache/http/HttpResponse;)V"/> + <method name="receiveResponseHeader()Lorg/apache/http/HttpResponse;"/> + <method name="sendRequestEntity(Lorg/apache/http/HttpEntityEnclosingRequest;)V"/> + <method name="sendRequestHeader(Lorg/apache/http/HttpRequest;)V"/> + </class> + <class name="org/apache/http/HttpConnection" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="close()V"/> + <method name="getMetrics()Lorg/apache/http/HttpConnectionMetrics;"/> + <method name="getSocketTimeout()I"/> + <method name="isOpen()Z"/> + <method name="isStale()Z"/> + <method name="setSocketTimeout(I)V"/> + <method name="shutdown()V"/> + </class> + <class name="org/apache/http/HttpConnectionMetrics" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="getMetric(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="getReceivedBytesCount()J"/> + <method name="getRequestCount()J"/> + <method name="getResponseCount()J"/> + <method name="getSentBytesCount()J"/> + <method name="reset()V"/> + </class> + <class name="org/apache/http/HttpEntity" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="consumeContent()V"/> + <method name="getContent()Ljava/io/InputStream;"/> + <method name="getContentEncoding()Lorg/apache/http/Header;"/> + <method name="getContentLength()J"/> + <method name="getContentType()Lorg/apache/http/Header;"/> + <method name="isChunked()Z"/> + <method name="isRepeatable()Z"/> + <method name="isStreaming()Z"/> + <method name="writeTo(Ljava/io/OutputStream;)V"/> + </class> + <class name="org/apache/http/HttpEntityEnclosingRequest" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpRequest"/> + <method name="expectContinue()Z"/> + <method name="getEntity()Lorg/apache/http/HttpEntity;"/> + <method name="setEntity(Lorg/apache/http/HttpEntity;)V"/> + </class> + <class name="org/apache/http/HttpException" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + </class> + <class name="org/apache/http/HttpHost" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="<init>(Ljava/lang/String;ILjava/lang/String;)V"/> + <method name="<init>(Lorg/apache/http/HttpHost;)V"/> + <method name="getHostName()Ljava/lang/String;"/> + <method name="getPort()I"/> + <method name="getSchemeName()Ljava/lang/String;"/> + <method name="toHostString()Ljava/lang/String;"/> + <method name="toURI()Ljava/lang/String;"/> + <field name="DEFAULT_SCHEME_NAME"/> + <field name="hostname"/> + <field name="lcHostname"/> + <field name="port"/> + <field name="schemeName"/> + </class> + <class name="org/apache/http/HttpInetConnection" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpConnection"/> + <method name="getLocalAddress()Ljava/net/InetAddress;"/> + <method name="getLocalPort()I"/> + <method name="getRemoteAddress()Ljava/net/InetAddress;"/> + <method name="getRemotePort()I"/> + </class> + <class name="org/apache/http/HttpMessage" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="addHeader(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="addHeader(Lorg/apache/http/Header;)V"/> + <method name="containsHeader(Ljava/lang/String;)Z"/> + <method name="getAllHeaders()[Lorg/apache/http/Header;"/> + <method name="getFirstHeader(Ljava/lang/String;)Lorg/apache/http/Header;"/> + <method name="getHeaders(Ljava/lang/String;)[Lorg/apache/http/Header;"/> + <method name="getLastHeader(Ljava/lang/String;)Lorg/apache/http/Header;"/> + <method name="getParams()Lorg/apache/http/params/HttpParams;"/> + <method name="getProtocolVersion()Lorg/apache/http/ProtocolVersion;"/> + <method name="headerIterator()Lorg/apache/http/HeaderIterator;"/> + <method name="headerIterator(Ljava/lang/String;)Lorg/apache/http/HeaderIterator;"/> + <method name="removeHeader(Lorg/apache/http/Header;)V"/> + <method name="removeHeaders(Ljava/lang/String;)V"/> + <method name="setHeader(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="setHeader(Lorg/apache/http/Header;)V"/> + <method name="setHeaders([Lorg/apache/http/Header;)V"/> + <method name="setParams(Lorg/apache/http/params/HttpParams;)V"/> + </class> + <class name="org/apache/http/HttpRequest" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpMessage"/> + <method name="getRequestLine()Lorg/apache/http/RequestLine;"/> + </class> + <class name="org/apache/http/HttpRequestFactory" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="newHttpRequest(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/http/HttpRequest;"/> + <method name="newHttpRequest(Lorg/apache/http/RequestLine;)Lorg/apache/http/HttpRequest;"/> + </class> + <class name="org/apache/http/HttpRequestInterceptor" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V"/> + </class> + <class name="org/apache/http/HttpResponse" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpMessage"/> + <method name="getEntity()Lorg/apache/http/HttpEntity;"/> + <method name="getLocale()Ljava/util/Locale;"/> + <method name="getStatusLine()Lorg/apache/http/StatusLine;"/> + <method name="setEntity(Lorg/apache/http/HttpEntity;)V"/> + <method name="setLocale(Ljava/util/Locale;)V"/> + <method name="setReasonPhrase(Ljava/lang/String;)V"/> + <method name="setStatusCode(I)V"/> + <method name="setStatusLine(Lorg/apache/http/ProtocolVersion;I)V"/> + <method name="setStatusLine(Lorg/apache/http/ProtocolVersion;ILjava/lang/String;)V"/> + <method name="setStatusLine(Lorg/apache/http/StatusLine;)V"/> + </class> + <class name="org/apache/http/HttpResponseFactory" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="newHttpResponse(Lorg/apache/http/ProtocolVersion;ILorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;"/> + <method name="newHttpResponse(Lorg/apache/http/StatusLine;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;"/> + </class> + <class name="org/apache/http/HttpResponseInterceptor" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="process(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V"/> + </class> + <class name="org/apache/http/HttpServerConnection" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpConnection"/> + <method name="flush()V"/> + <method name="receiveRequestEntity(Lorg/apache/http/HttpEntityEnclosingRequest;)V"/> + <method name="receiveRequestHeader()Lorg/apache/http/HttpRequest;"/> + <method name="sendResponseEntity(Lorg/apache/http/HttpResponse;)V"/> + <method name="sendResponseHeader(Lorg/apache/http/HttpResponse;)V"/> + </class> + <class name="org/apache/http/HttpStatus" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <field name="SC_ACCEPTED"/> + <field name="SC_BAD_GATEWAY"/> + <field name="SC_BAD_REQUEST"/> + <field name="SC_CONFLICT"/> + <field name="SC_CONTINUE"/> + <field name="SC_CREATED"/> + <field name="SC_EXPECTATION_FAILED"/> + <field name="SC_FAILED_DEPENDENCY"/> + <field name="SC_FORBIDDEN"/> + <field name="SC_GATEWAY_TIMEOUT"/> + <field name="SC_GONE"/> + <field name="SC_HTTP_VERSION_NOT_SUPPORTED"/> + <field name="SC_INSUFFICIENT_SPACE_ON_RESOURCE"/> + <field name="SC_INSUFFICIENT_STORAGE"/> + <field name="SC_INTERNAL_SERVER_ERROR"/> + <field name="SC_LENGTH_REQUIRED"/> + <field name="SC_LOCKED"/> + <field name="SC_METHOD_FAILURE"/> + <field name="SC_METHOD_NOT_ALLOWED"/> + <field name="SC_MOVED_PERMANENTLY"/> + <field name="SC_MOVED_TEMPORARILY"/> + <field name="SC_MULTIPLE_CHOICES"/> + <field name="SC_MULTI_STATUS"/> + <field name="SC_NON_AUTHORITATIVE_INFORMATION"/> + <field name="SC_NOT_ACCEPTABLE"/> + <field name="SC_NOT_FOUND"/> + <field name="SC_NOT_IMPLEMENTED"/> + <field name="SC_NOT_MODIFIED"/> + <field name="SC_NO_CONTENT"/> + <field name="SC_OK"/> + <field name="SC_PARTIAL_CONTENT"/> + <field name="SC_PAYMENT_REQUIRED"/> + <field name="SC_PRECONDITION_FAILED"/> + <field name="SC_PROCESSING"/> + <field name="SC_PROXY_AUTHENTICATION_REQUIRED"/> + <field name="SC_REQUESTED_RANGE_NOT_SATISFIABLE"/> + <field name="SC_REQUEST_TIMEOUT"/> + <field name="SC_REQUEST_TOO_LONG"/> + <field name="SC_REQUEST_URI_TOO_LONG"/> + <field name="SC_RESET_CONTENT"/> + <field name="SC_SEE_OTHER"/> + <field name="SC_SERVICE_UNAVAILABLE"/> + <field name="SC_SWITCHING_PROTOCOLS"/> + <field name="SC_TEMPORARY_REDIRECT"/> + <field name="SC_UNAUTHORIZED"/> + <field name="SC_UNPROCESSABLE_ENTITY"/> + <field name="SC_UNSUPPORTED_MEDIA_TYPE"/> + <field name="SC_USE_PROXY"/> + </class> + <class name="org/apache/http/HttpVersion" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/ProtocolVersion"/> + <method name="<init>(II)V"/> + <field name="HTTP"/> + <field name="HTTP_0_9"/> + <field name="HTTP_1_0"/> + <field name="HTTP_1_1"/> + </class> + <class name="org/apache/http/MalformedChunkCodingException" since="1" deprecated="22" removed="23"> + <extends name="java/io/IOException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="org/apache/http/MethodNotSupportedException" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/HttpException"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + </class> + <class name="org/apache/http/NameValuePair" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getValue()Ljava/lang/String;"/> + </class> + <class name="org/apache/http/NoHttpResponseException" since="1" deprecated="22" removed="23"> + <extends name="java/io/IOException"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="org/apache/http/ParseException" since="1" deprecated="22" removed="23"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="org/apache/http/ProtocolException" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/HttpException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + </class> + <class name="org/apache/http/ProtocolVersion" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>(Ljava/lang/String;II)V"/> + <method name="compareToVersion(Lorg/apache/http/ProtocolVersion;)I"/> + <method name="forVersion(II)Lorg/apache/http/ProtocolVersion;"/> + <method name="getMajor()I"/> + <method name="getMinor()I"/> + <method name="getProtocol()Ljava/lang/String;"/> + <method name="greaterEquals(Lorg/apache/http/ProtocolVersion;)Z"/> + <method name="isComparable(Lorg/apache/http/ProtocolVersion;)Z"/> + <method name="lessEquals(Lorg/apache/http/ProtocolVersion;)Z"/> + <field name="major"/> + <field name="minor"/> + <field name="protocol"/> + </class> + <class name="org/apache/http/ReasonPhraseCatalog" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="getReason(ILjava/util/Locale;)Ljava/lang/String;"/> + </class> + <class name="org/apache/http/RequestLine" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="getMethod()Ljava/lang/String;"/> + <method name="getProtocolVersion()Lorg/apache/http/ProtocolVersion;"/> + <method name="getUri()Ljava/lang/String;"/> + </class> + <class name="org/apache/http/StatusLine" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="getProtocolVersion()Lorg/apache/http/ProtocolVersion;"/> + <method name="getReasonPhrase()Ljava/lang/String;"/> + <method name="getStatusCode()I"/> + </class> + <class name="org/apache/http/TokenIterator" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="java/util/Iterator"/> + <method name="nextToken()Ljava/lang/String;"/> + </class> + <class name="org/apache/http/UnsupportedHttpVersionException" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/ProtocolException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="org/apache/http/auth/AUTH" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="PROXY_AUTH"/> + <field name="PROXY_AUTH_RESP"/> + <field name="WWW_AUTH"/> + <field name="WWW_AUTH_RESP"/> + </class> + <class name="org/apache/http/auth/AuthScheme" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="authenticate(Lorg/apache/http/auth/Credentials;Lorg/apache/http/HttpRequest;)Lorg/apache/http/Header;"/> + <method name="getParameter(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getRealm()Ljava/lang/String;"/> + <method name="getSchemeName()Ljava/lang/String;"/> + <method name="isComplete()Z"/> + <method name="isConnectionBased()Z"/> + <method name="processChallenge(Lorg/apache/http/Header;)V"/> + </class> + <class name="org/apache/http/auth/AuthSchemeFactory" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="newInstance(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/auth/AuthScheme;"/> + </class> + <class name="org/apache/http/auth/AuthSchemeRegistry" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAuthScheme(Ljava/lang/String;Lorg/apache/http/params/HttpParams;)Lorg/apache/http/auth/AuthScheme;"/> + <method name="getSchemeNames()Ljava/util/List;"/> + <method name="register(Ljava/lang/String;Lorg/apache/http/auth/AuthSchemeFactory;)V"/> + <method name="setItems(Ljava/util/Map;)V"/> + <method name="unregister(Ljava/lang/String;)V"/> + </class> + <class name="org/apache/http/auth/AuthScope" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;I)V"/> + <method name="<init>(Ljava/lang/String;ILjava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Lorg/apache/http/auth/AuthScope;)V"/> + <method name="getHost()Ljava/lang/String;"/> + <method name="getPort()I"/> + <method name="getRealm()Ljava/lang/String;"/> + <method name="getScheme()Ljava/lang/String;"/> + <method name="match(Lorg/apache/http/auth/AuthScope;)I"/> + <field name="ANY"/> + <field name="ANY_HOST"/> + <field name="ANY_PORT"/> + <field name="ANY_REALM"/> + <field name="ANY_SCHEME"/> + </class> + <class name="org/apache/http/auth/AuthState" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAuthScheme()Lorg/apache/http/auth/AuthScheme;"/> + <method name="getAuthScope()Lorg/apache/http/auth/AuthScope;"/> + <method name="getCredentials()Lorg/apache/http/auth/Credentials;"/> + <method name="invalidate()V"/> + <method name="isValid()Z"/> + <method name="setAuthScheme(Lorg/apache/http/auth/AuthScheme;)V"/> + <method name="setAuthScope(Lorg/apache/http/auth/AuthScope;)V"/> + <method name="setCredentials(Lorg/apache/http/auth/Credentials;)V"/> + </class> + <class name="org/apache/http/auth/AuthenticationException" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/ProtocolException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + </class> + <class name="org/apache/http/auth/BasicUserPrincipal" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="java/security/Principal"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="org/apache/http/auth/Credentials" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="getPassword()Ljava/lang/String;"/> + <method name="getUserPrincipal()Ljava/security/Principal;"/> + </class> + <class name="org/apache/http/auth/InvalidCredentialsException" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/auth/AuthenticationException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + </class> + <class name="org/apache/http/auth/MalformedChallengeException" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/ProtocolException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + </class> + <class name="org/apache/http/auth/NTCredentials" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/auth/Credentials"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="getDomain()Ljava/lang/String;"/> + <method name="getUserName()Ljava/lang/String;"/> + <method name="getWorkstation()Ljava/lang/String;"/> + </class> + <class name="org/apache/http/auth/NTUserPrincipal" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="java/security/Principal"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="getDomain()Ljava/lang/String;"/> + <method name="getUsername()Ljava/lang/String;"/> + </class> + <class name="org/apache/http/auth/UsernamePasswordCredentials" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/auth/Credentials"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="getUserName()Ljava/lang/String;"/> + </class> + <class name="org/apache/http/auth/params/AuthPNames" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <field name="CREDENTIAL_CHARSET"/> + </class> + <class name="org/apache/http/auth/params/AuthParamBean" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/params/HttpAbstractParamBean"/> + <method name="<init>(Lorg/apache/http/params/HttpParams;)V"/> + <method name="setCredentialCharset(Ljava/lang/String;)V"/> + </class> + <class name="org/apache/http/auth/params/AuthParams" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getCredentialCharset(Lorg/apache/http/params/HttpParams;)Ljava/lang/String;"/> + <method name="setCredentialCharset(Lorg/apache/http/params/HttpParams;Ljava/lang/String;)V"/> + </class> + <class name="org/apache/http/client/AuthenticationHandler" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="getChallenges(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Ljava/util/Map;"/> + <method name="isAuthenticationRequested(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Z"/> + <method name="selectScheme(Ljava/util/Map;Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/auth/AuthScheme;"/> + </class> + <class name="org/apache/http/client/CircularRedirectException" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/client/RedirectException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + </class> + <class name="org/apache/http/client/ClientProtocolException" since="1" deprecated="22" removed="23"> + <extends name="java/io/IOException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + <method name="<init>(Ljava/lang/Throwable;)V"/> + </class> + <class name="org/apache/http/client/CookieStore" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="addCookie(Lorg/apache/http/cookie/Cookie;)V"/> + <method name="clear()V"/> + <method name="clearExpired(Ljava/util/Date;)Z"/> + <method name="getCookies()Ljava/util/List;"/> + </class> + <class name="org/apache/http/client/CredentialsProvider" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="clear()V"/> + <method name="getCredentials(Lorg/apache/http/auth/AuthScope;)Lorg/apache/http/auth/Credentials;"/> + <method name="setCredentials(Lorg/apache/http/auth/AuthScope;Lorg/apache/http/auth/Credentials;)V"/> + </class> + <class name="org/apache/http/client/HttpClient" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;)Lorg/apache/http/HttpResponse;"/> + <method name="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/client/ResponseHandler;)Ljava/lang/Object;"/> + <method name="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/client/ResponseHandler;Lorg/apache/http/protocol/HttpContext;)Ljava/lang/Object;"/> + <method name="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;"/> + <method name="execute(Lorg/apache/http/client/methods/HttpUriRequest;)Lorg/apache/http/HttpResponse;"/> + <method name="execute(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/client/ResponseHandler;)Ljava/lang/Object;"/> + <method name="execute(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/client/ResponseHandler;Lorg/apache/http/protocol/HttpContext;)Ljava/lang/Object;"/> + <method name="execute(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;"/> + <method name="getConnectionManager()Lorg/apache/http/conn/ClientConnectionManager;"/> + <method name="getParams()Lorg/apache/http/params/HttpParams;"/> + </class> + <class name="org/apache/http/client/HttpRequestRetryHandler" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="retryRequest(Ljava/io/IOException;ILorg/apache/http/protocol/HttpContext;)Z"/> + </class> + <class name="org/apache/http/client/HttpResponseException" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/client/ClientProtocolException"/> + <method name="<init>(ILjava/lang/String;)V"/> + <method name="getStatusCode()I"/> + </class> + <class name="org/apache/http/client/NonRepeatableRequestException" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/ProtocolException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="org/apache/http/client/RedirectException" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/ProtocolException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + </class> + <class name="org/apache/http/client/RedirectHandler" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="getLocationURI(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Ljava/net/URI;"/> + <method name="isRedirectRequested(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Z"/> + </class> + <class name="org/apache/http/client/RequestDirector" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;"/> + </class> + <class name="org/apache/http/client/ResponseHandler" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="handleResponse(Lorg/apache/http/HttpResponse;)Ljava/lang/Object;"/> + </class> + <class name="org/apache/http/client/UserTokenHandler" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="getUserToken(Lorg/apache/http/protocol/HttpContext;)Ljava/lang/Object;"/> + </class> + <class name="org/apache/http/client/entity/UrlEncodedFormEntity" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/entity/StringEntity"/> + <method name="<init>(Ljava/util/List;)V"/> + <method name="<init>(Ljava/util/List;Ljava/lang/String;)V"/> + </class> + <class name="org/apache/http/client/methods/AbortableHttpRequest" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="abort()V"/> + <method name="setConnectionRequest(Lorg/apache/http/conn/ClientConnectionRequest;)V"/> + <method name="setReleaseTrigger(Lorg/apache/http/conn/ConnectionReleaseTrigger;)V"/> + </class> + <class name="org/apache/http/client/methods/HttpDelete" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/client/methods/HttpRequestBase"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/net/URI;)V"/> + <field name="METHOD_NAME"/> + </class> + <class name="org/apache/http/client/methods/HttpEntityEnclosingRequestBase" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/client/methods/HttpRequestBase"/> + <implements name="org/apache/http/HttpEntityEnclosingRequest"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/client/methods/HttpGet" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/client/methods/HttpRequestBase"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/net/URI;)V"/> + <field name="METHOD_NAME"/> + </class> + <class name="org/apache/http/client/methods/HttpHead" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/client/methods/HttpRequestBase"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/net/URI;)V"/> + <field name="METHOD_NAME"/> + </class> + <class name="org/apache/http/client/methods/HttpOptions" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/client/methods/HttpRequestBase"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/net/URI;)V"/> + <method name="getAllowedMethods(Lorg/apache/http/HttpResponse;)Ljava/util/Set;"/> + <field name="METHOD_NAME"/> + </class> + <class name="org/apache/http/client/methods/HttpPost" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/client/methods/HttpEntityEnclosingRequestBase"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/net/URI;)V"/> + <field name="METHOD_NAME"/> + </class> + <class name="org/apache/http/client/methods/HttpPut" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/client/methods/HttpEntityEnclosingRequestBase"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/net/URI;)V"/> + <field name="METHOD_NAME"/> + </class> + <class name="org/apache/http/client/methods/HttpRequestBase" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/message/AbstractHttpMessage"/> + <implements name="java/lang/Cloneable"/> + <implements name="org/apache/http/client/methods/AbortableHttpRequest"/> + <implements name="org/apache/http/client/methods/HttpUriRequest"/> + <method name="<init>()V"/> + <method name="setURI(Ljava/net/URI;)V"/> + </class> + <class name="org/apache/http/client/methods/HttpTrace" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/client/methods/HttpRequestBase"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/net/URI;)V"/> + <field name="METHOD_NAME"/> + </class> + <class name="org/apache/http/client/methods/HttpUriRequest" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpRequest"/> + <method name="abort()V"/> + <method name="getMethod()Ljava/lang/String;"/> + <method name="getURI()Ljava/net/URI;"/> + <method name="isAborted()Z"/> + </class> + <class name="org/apache/http/client/params/AllClientPNames" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/auth/params/AuthPNames"/> + <implements name="org/apache/http/client/params/ClientPNames"/> + <implements name="org/apache/http/conn/params/ConnConnectionPNames"/> + <implements name="org/apache/http/conn/params/ConnManagerPNames"/> + <implements name="org/apache/http/conn/params/ConnRoutePNames"/> + <implements name="org/apache/http/cookie/params/CookieSpecPNames"/> + <implements name="org/apache/http/params/CoreConnectionPNames"/> + <implements name="org/apache/http/params/CoreProtocolPNames"/> + </class> + <class name="org/apache/http/client/params/AuthPolicy" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="BASIC"/> + <field name="DIGEST"/> + <field name="NTLM"/> + </class> + <class name="org/apache/http/client/params/ClientPNames" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <field name="ALLOW_CIRCULAR_REDIRECTS"/> + <field name="CONNECTION_MANAGER_FACTORY"/> + <field name="CONNECTION_MANAGER_FACTORY_CLASS_NAME"/> + <field name="COOKIE_POLICY"/> + <field name="DEFAULT_HEADERS"/> + <field name="DEFAULT_HOST"/> + <field name="HANDLE_AUTHENTICATION"/> + <field name="HANDLE_REDIRECTS"/> + <field name="MAX_REDIRECTS"/> + <field name="REJECT_RELATIVE_REDIRECT"/> + <field name="VIRTUAL_HOST"/> + </class> + <class name="org/apache/http/client/params/ClientParamBean" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/params/HttpAbstractParamBean"/> + <method name="<init>(Lorg/apache/http/params/HttpParams;)V"/> + <method name="setAllowCircularRedirects(Z)V"/> + <method name="setConnectionManagerFactory(Lorg/apache/http/conn/ClientConnectionManagerFactory;)V"/> + <method name="setConnectionManagerFactoryClassName(Ljava/lang/String;)V"/> + <method name="setCookiePolicy(Ljava/lang/String;)V"/> + <method name="setDefaultHeaders(Ljava/util/Collection;)V"/> + <method name="setDefaultHost(Lorg/apache/http/HttpHost;)V"/> + <method name="setHandleAuthentication(Z)V"/> + <method name="setHandleRedirects(Z)V"/> + <method name="setMaxRedirects(I)V"/> + <method name="setRejectRelativeRedirect(Z)V"/> + <method name="setVirtualHost(Lorg/apache/http/HttpHost;)V"/> + </class> + <class name="org/apache/http/client/params/CookiePolicy" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <field name="BEST_MATCH"/> + <field name="BROWSER_COMPATIBILITY"/> + <field name="NETSCAPE"/> + <field name="RFC_2109"/> + <field name="RFC_2965"/> + </class> + <class name="org/apache/http/client/params/HttpClientParams" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getCookiePolicy(Lorg/apache/http/params/HttpParams;)Ljava/lang/String;"/> + <method name="isAuthenticating(Lorg/apache/http/params/HttpParams;)Z"/> + <method name="isRedirecting(Lorg/apache/http/params/HttpParams;)Z"/> + <method name="setAuthenticating(Lorg/apache/http/params/HttpParams;Z)V"/> + <method name="setCookiePolicy(Lorg/apache/http/params/HttpParams;Ljava/lang/String;)V"/> + <method name="setRedirecting(Lorg/apache/http/params/HttpParams;Z)V"/> + </class> + <class name="org/apache/http/client/protocol/ClientContext" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <field name="AUTHSCHEME_REGISTRY"/> + <field name="AUTH_SCHEME_PREF"/> + <field name="COOKIESPEC_REGISTRY"/> + <field name="COOKIE_ORIGIN"/> + <field name="COOKIE_SPEC"/> + <field name="COOKIE_STORE"/> + <field name="CREDS_PROVIDER"/> + <field name="PROXY_AUTH_STATE"/> + <field name="TARGET_AUTH_STATE"/> + <field name="USER_TOKEN"/> + </class> + <class name="org/apache/http/client/protocol/ClientContextConfigurer" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/client/protocol/ClientContext"/> + <method name="<init>(Lorg/apache/http/protocol/HttpContext;)V"/> + <method name="setAuthSchemePref(Ljava/util/List;)V"/> + <method name="setAuthSchemeRegistry(Lorg/apache/http/auth/AuthSchemeRegistry;)V"/> + <method name="setCookieSpecRegistry(Lorg/apache/http/cookie/CookieSpecRegistry;)V"/> + <method name="setCookieStore(Lorg/apache/http/client/CookieStore;)V"/> + <method name="setCredentialsProvider(Lorg/apache/http/client/CredentialsProvider;)V"/> + </class> + <class name="org/apache/http/client/protocol/RequestAddCookies" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpRequestInterceptor"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/client/protocol/RequestDefaultHeaders" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpRequestInterceptor"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/client/protocol/RequestProxyAuthentication" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpRequestInterceptor"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/client/protocol/RequestTargetAuthentication" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpRequestInterceptor"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/client/protocol/ResponseProcessCookies" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpResponseInterceptor"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/client/utils/CloneUtils" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="clone(Ljava/lang/Object;)Ljava/lang/Object;"/> + </class> + <class name="org/apache/http/client/utils/URIUtils" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="createURI(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/net/URI;"/> + <method name="resolve(Ljava/net/URI;Ljava/lang/String;)Ljava/net/URI;"/> + <method name="resolve(Ljava/net/URI;Ljava/net/URI;)Ljava/net/URI;"/> + <method name="rewriteURI(Ljava/net/URI;Lorg/apache/http/HttpHost;)Ljava/net/URI;"/> + <method name="rewriteURI(Ljava/net/URI;Lorg/apache/http/HttpHost;Z)Ljava/net/URI;"/> + </class> + <class name="org/apache/http/client/utils/URLEncodedUtils" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="format(Ljava/util/List;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="isEncoded(Lorg/apache/http/HttpEntity;)Z"/> + <method name="parse(Ljava/net/URI;Ljava/lang/String;)Ljava/util/List;"/> + <method name="parse(Ljava/util/List;Ljava/util/Scanner;Ljava/lang/String;)V"/> + <method name="parse(Lorg/apache/http/HttpEntity;)Ljava/util/List;"/> + <field name="CONTENT_TYPE"/> + </class> + <class name="org/apache/http/conn/BasicEofSensorWatcher" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/conn/EofSensorWatcher"/> + <method name="<init>(Lorg/apache/http/conn/ManagedClientConnection;Z)V"/> + <field name="attemptReuse"/> + <field name="managedConn"/> + </class> + <class name="org/apache/http/conn/BasicManagedEntity" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/entity/HttpEntityWrapper"/> + <implements name="org/apache/http/conn/ConnectionReleaseTrigger"/> + <implements name="org/apache/http/conn/EofSensorWatcher"/> + <method name="<init>(Lorg/apache/http/HttpEntity;Lorg/apache/http/conn/ManagedClientConnection;Z)V"/> + <method name="releaseManagedConnection()V"/> + <field name="attemptReuse"/> + <field name="managedConn"/> + </class> + <class name="org/apache/http/conn/ClientConnectionManager" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="closeExpiredConnections()V"/> + <method name="closeIdleConnections(JLjava/util/concurrent/TimeUnit;)V"/> + <method name="getSchemeRegistry()Lorg/apache/http/conn/scheme/SchemeRegistry;"/> + <method name="releaseConnection(Lorg/apache/http/conn/ManagedClientConnection;JLjava/util/concurrent/TimeUnit;)V"/> + <method name="requestConnection(Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Object;)Lorg/apache/http/conn/ClientConnectionRequest;"/> + <method name="shutdown()V"/> + </class> + <class name="org/apache/http/conn/ClientConnectionManagerFactory" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="newInstance(Lorg/apache/http/params/HttpParams;Lorg/apache/http/conn/scheme/SchemeRegistry;)Lorg/apache/http/conn/ClientConnectionManager;"/> + </class> + <class name="org/apache/http/conn/ClientConnectionOperator" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="createConnection()Lorg/apache/http/conn/OperatedClientConnection;"/> + <method name="openConnection(Lorg/apache/http/conn/OperatedClientConnection;Lorg/apache/http/HttpHost;Ljava/net/InetAddress;Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V"/> + <method name="updateSecureConnection(Lorg/apache/http/conn/OperatedClientConnection;Lorg/apache/http/HttpHost;Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V"/> + </class> + <class name="org/apache/http/conn/ClientConnectionRequest" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="abortRequest()V"/> + <method name="getConnection(JLjava/util/concurrent/TimeUnit;)Lorg/apache/http/conn/ManagedClientConnection;"/> + </class> + <class name="org/apache/http/conn/ConnectTimeoutException" since="1" deprecated="22"> + <extends name="java/io/InterruptedIOException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="org/apache/http/conn/ConnectionKeepAliveStrategy" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="getKeepAliveDuration(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)J"/> + </class> + <class name="org/apache/http/conn/ConnectionPoolTimeoutException" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/conn/ConnectTimeoutException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="org/apache/http/conn/ConnectionReleaseTrigger" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="abortConnection()V"/> + <method name="releaseConnection()V"/> + </class> + <class name="org/apache/http/conn/EofSensorInputStream" since="1" deprecated="22" removed="23"> + <extends name="java/io/InputStream"/> + <implements name="org/apache/http/conn/ConnectionReleaseTrigger"/> + <method name="<init>(Ljava/io/InputStream;Lorg/apache/http/conn/EofSensorWatcher;)V"/> + <method name="checkAbort()V"/> + <method name="checkClose()V"/> + <method name="checkEOF(I)V"/> + <method name="isReadAllowed()Z"/> + <field name="wrappedStream"/> + </class> + <class name="org/apache/http/conn/EofSensorWatcher" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="eofDetected(Ljava/io/InputStream;)Z"/> + <method name="streamAbort(Ljava/io/InputStream;)Z"/> + <method name="streamClosed(Ljava/io/InputStream;)Z"/> + </class> + <class name="org/apache/http/conn/HttpHostConnectException" since="1" deprecated="22" removed="23"> + <extends name="java/net/ConnectException"/> + <method name="<init>(Lorg/apache/http/HttpHost;Ljava/net/ConnectException;)V"/> + <method name="getHost()Lorg/apache/http/HttpHost;"/> + </class> + <class name="org/apache/http/conn/ManagedClientConnection" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpClientConnection"/> + <implements name="org/apache/http/HttpInetConnection"/> + <implements name="org/apache/http/conn/ConnectionReleaseTrigger"/> + <method name="getRoute()Lorg/apache/http/conn/routing/HttpRoute;"/> + <method name="getSSLSession()Ljavax/net/ssl/SSLSession;"/> + <method name="getState()Ljava/lang/Object;"/> + <method name="isMarkedReusable()Z"/> + <method name="isSecure()Z"/> + <method name="layerProtocol(Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V"/> + <method name="markReusable()V"/> + <method name="open(Lorg/apache/http/conn/routing/HttpRoute;Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V"/> + <method name="setIdleDuration(JLjava/util/concurrent/TimeUnit;)V"/> + <method name="setState(Ljava/lang/Object;)V"/> + <method name="tunnelProxy(Lorg/apache/http/HttpHost;ZLorg/apache/http/params/HttpParams;)V"/> + <method name="tunnelTarget(ZLorg/apache/http/params/HttpParams;)V"/> + <method name="unmarkReusable()V"/> + </class> + <class name="org/apache/http/conn/MultihomePlainSocketFactory" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/conn/scheme/SocketFactory"/> + <method name="<init>()V"/> + <method name="getSocketFactory()Lorg/apache/http/conn/MultihomePlainSocketFactory;"/> + </class> + <class name="org/apache/http/conn/OperatedClientConnection" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpClientConnection"/> + <implements name="org/apache/http/HttpInetConnection"/> + <method name="getSocket()Ljava/net/Socket;"/> + <method name="getTargetHost()Lorg/apache/http/HttpHost;"/> + <method name="isSecure()Z"/> + <method name="openCompleted(ZLorg/apache/http/params/HttpParams;)V"/> + <method name="opening(Ljava/net/Socket;Lorg/apache/http/HttpHost;)V"/> + <method name="update(Ljava/net/Socket;Lorg/apache/http/HttpHost;ZLorg/apache/http/params/HttpParams;)V"/> + </class> + <class name="org/apache/http/conn/params/ConnConnectionPNames" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <field name="MAX_STATUS_LINE_GARBAGE"/> + </class> + <class name="org/apache/http/conn/params/ConnConnectionParamBean" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/params/HttpAbstractParamBean"/> + <method name="<init>(Lorg/apache/http/params/HttpParams;)V"/> + <method name="setMaxStatusLineGarbage(I)V"/> + </class> + <class name="org/apache/http/conn/params/ConnManagerPNames" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <field name="MAX_CONNECTIONS_PER_ROUTE"/> + <field name="MAX_TOTAL_CONNECTIONS"/> + <field name="TIMEOUT"/> + </class> + <class name="org/apache/http/conn/params/ConnManagerParamBean" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/params/HttpAbstractParamBean"/> + <method name="<init>(Lorg/apache/http/params/HttpParams;)V"/> + <method name="setConnectionsPerRoute(Lorg/apache/http/conn/params/ConnPerRouteBean;)V"/> + <method name="setMaxTotalConnections(I)V"/> + <method name="setTimeout(J)V"/> + </class> + <class name="org/apache/http/conn/params/ConnManagerParams" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/conn/params/ConnManagerPNames"/> + <method name="<init>()V"/> + <method name="getMaxConnectionsPerRoute(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/conn/params/ConnPerRoute;"/> + <method name="getMaxTotalConnections(Lorg/apache/http/params/HttpParams;)I"/> + <method name="getTimeout(Lorg/apache/http/params/HttpParams;)J"/> + <method name="setMaxConnectionsPerRoute(Lorg/apache/http/params/HttpParams;Lorg/apache/http/conn/params/ConnPerRoute;)V"/> + <method name="setMaxTotalConnections(Lorg/apache/http/params/HttpParams;I)V"/> + <method name="setTimeout(Lorg/apache/http/params/HttpParams;J)V"/> + <field name="DEFAULT_MAX_TOTAL_CONNECTIONS"/> + </class> + <class name="org/apache/http/conn/params/ConnPerRoute" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="getMaxForRoute(Lorg/apache/http/conn/routing/HttpRoute;)I"/> + </class> + <class name="org/apache/http/conn/params/ConnPerRouteBean" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/conn/params/ConnPerRoute"/> + <method name="<init>()V"/> + <method name="<init>(I)V"/> + <method name="getDefaultMax()I"/> + <method name="setDefaultMaxPerRoute(I)V"/> + <method name="setMaxForRoute(Lorg/apache/http/conn/routing/HttpRoute;I)V"/> + <method name="setMaxForRoutes(Ljava/util/Map;)V"/> + <field name="DEFAULT_MAX_CONNECTIONS_PER_ROUTE"/> + </class> + <class name="org/apache/http/conn/params/ConnRoutePNames" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <field name="DEFAULT_PROXY"/> + <field name="FORCED_ROUTE"/> + <field name="LOCAL_ADDRESS"/> + </class> + <class name="org/apache/http/conn/params/ConnRouteParamBean" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/params/HttpAbstractParamBean"/> + <method name="<init>(Lorg/apache/http/params/HttpParams;)V"/> + <method name="setDefaultProxy(Lorg/apache/http/HttpHost;)V"/> + <method name="setForcedRoute(Lorg/apache/http/conn/routing/HttpRoute;)V"/> + <method name="setLocalAddress(Ljava/net/InetAddress;)V"/> + </class> + <class name="org/apache/http/conn/params/ConnRouteParams" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/conn/params/ConnRoutePNames"/> + <method name="<init>()V"/> + <method name="getDefaultProxy(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/HttpHost;"/> + <method name="getForcedRoute(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/conn/routing/HttpRoute;"/> + <method name="getLocalAddress(Lorg/apache/http/params/HttpParams;)Ljava/net/InetAddress;"/> + <method name="setDefaultProxy(Lorg/apache/http/params/HttpParams;Lorg/apache/http/HttpHost;)V"/> + <method name="setForcedRoute(Lorg/apache/http/params/HttpParams;Lorg/apache/http/conn/routing/HttpRoute;)V"/> + <method name="setLocalAddress(Lorg/apache/http/params/HttpParams;Ljava/net/InetAddress;)V"/> + <field name="NO_HOST"/> + <field name="NO_ROUTE"/> + </class> + <class name="org/apache/http/conn/routing/BasicRouteDirector" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/conn/routing/HttpRouteDirector"/> + <method name="<init>()V"/> + <method name="directStep(Lorg/apache/http/conn/routing/RouteInfo;Lorg/apache/http/conn/routing/RouteInfo;)I"/> + <method name="firstStep(Lorg/apache/http/conn/routing/RouteInfo;)I"/> + <method name="proxiedStep(Lorg/apache/http/conn/routing/RouteInfo;Lorg/apache/http/conn/routing/RouteInfo;)I"/> + </class> + <class name="org/apache/http/conn/routing/HttpRoute" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <implements name="org/apache/http/conn/routing/RouteInfo"/> + <method name="<init>(Lorg/apache/http/HttpHost;)V"/> + <method name="<init>(Lorg/apache/http/HttpHost;Ljava/net/InetAddress;Lorg/apache/http/HttpHost;Z)V"/> + <method name="<init>(Lorg/apache/http/HttpHost;Ljava/net/InetAddress;Lorg/apache/http/HttpHost;ZLorg/apache/http/conn/routing/RouteInfo$TunnelType;Lorg/apache/http/conn/routing/RouteInfo$LayerType;)V"/> + <method name="<init>(Lorg/apache/http/HttpHost;Ljava/net/InetAddress;Z)V"/> + <method name="<init>(Lorg/apache/http/HttpHost;Ljava/net/InetAddress;[Lorg/apache/http/HttpHost;ZLorg/apache/http/conn/routing/RouteInfo$TunnelType;Lorg/apache/http/conn/routing/RouteInfo$LayerType;)V"/> + </class> + <class name="org/apache/http/conn/routing/HttpRouteDirector" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="nextStep(Lorg/apache/http/conn/routing/RouteInfo;Lorg/apache/http/conn/routing/RouteInfo;)I"/> + <field name="COMPLETE"/> + <field name="CONNECT_PROXY"/> + <field name="CONNECT_TARGET"/> + <field name="LAYER_PROTOCOL"/> + <field name="TUNNEL_PROXY"/> + <field name="TUNNEL_TARGET"/> + <field name="UNREACHABLE"/> + </class> + <class name="org/apache/http/conn/routing/HttpRoutePlanner" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="determineRoute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/conn/routing/HttpRoute;"/> + </class> + <class name="org/apache/http/conn/routing/RouteInfo" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="getHopCount()I"/> + <method name="getHopTarget(I)Lorg/apache/http/HttpHost;"/> + <method name="getLayerType()Lorg/apache/http/conn/routing/RouteInfo$LayerType;"/> + <method name="getLocalAddress()Ljava/net/InetAddress;"/> + <method name="getProxyHost()Lorg/apache/http/HttpHost;"/> + <method name="getTargetHost()Lorg/apache/http/HttpHost;"/> + <method name="getTunnelType()Lorg/apache/http/conn/routing/RouteInfo$TunnelType;"/> + <method name="isLayered()Z"/> + <method name="isSecure()Z"/> + <method name="isTunnelled()Z"/> + </class> + <class name="org/apache/http/conn/routing/RouteInfo$LayerType" since="1" removed="23"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Lorg/apache/http/conn/routing/RouteInfo$LayerType;"/> + <method name="values()[Lorg/apache/http/conn/routing/RouteInfo$LayerType;"/> + <field name="LAYERED"/> + <field name="PLAIN"/> + </class> + <class name="org/apache/http/conn/routing/RouteInfo$TunnelType" since="1" removed="23"> + <extends name="java/lang/Enum"/> + <method name="valueOf(Ljava/lang/String;)Lorg/apache/http/conn/routing/RouteInfo$TunnelType;"/> + <method name="values()[Lorg/apache/http/conn/routing/RouteInfo$TunnelType;"/> + <field name="PLAIN"/> + <field name="TUNNELLED"/> + </class> + <class name="org/apache/http/conn/routing/RouteTracker" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <implements name="org/apache/http/conn/routing/RouteInfo"/> + <method name="<init>(Lorg/apache/http/HttpHost;Ljava/net/InetAddress;)V"/> + <method name="<init>(Lorg/apache/http/conn/routing/HttpRoute;)V"/> + <method name="connectProxy(Lorg/apache/http/HttpHost;Z)V"/> + <method name="connectTarget(Z)V"/> + <method name="isConnected()Z"/> + <method name="layerProtocol(Z)V"/> + <method name="toRoute()Lorg/apache/http/conn/routing/HttpRoute;"/> + <method name="tunnelProxy(Lorg/apache/http/HttpHost;Z)V"/> + <method name="tunnelTarget(Z)V"/> + </class> + <class name="org/apache/http/conn/scheme/HostNameResolver" since="1" deprecated="22"> + <extends name="java/lang/Object"/> + <method name="resolve(Ljava/lang/String;)Ljava/net/InetAddress;"/> + </class> + <class name="org/apache/http/conn/scheme/LayeredSocketFactory" since="1" deprecated="22"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/conn/scheme/SocketFactory"/> + <method name="createSocket(Ljava/net/Socket;Ljava/lang/String;IZ)Ljava/net/Socket;"/> + </class> + <class name="org/apache/http/conn/scheme/PlainSocketFactory" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/conn/scheme/SocketFactory"/> + <method name="<init>()V"/> + <method name="<init>(Lorg/apache/http/conn/scheme/HostNameResolver;)V"/> + <method name="getSocketFactory()Lorg/apache/http/conn/scheme/PlainSocketFactory;"/> + </class> + <class name="org/apache/http/conn/scheme/Scheme" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;Lorg/apache/http/conn/scheme/SocketFactory;I)V"/> + <method name="getDefaultPort()I"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getSocketFactory()Lorg/apache/http/conn/scheme/SocketFactory;"/> + <method name="isLayered()Z"/> + <method name="resolvePort(I)I"/> + </class> + <class name="org/apache/http/conn/scheme/SchemeRegistry" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="get(Ljava/lang/String;)Lorg/apache/http/conn/scheme/Scheme;"/> + <method name="getScheme(Ljava/lang/String;)Lorg/apache/http/conn/scheme/Scheme;"/> + <method name="getScheme(Lorg/apache/http/HttpHost;)Lorg/apache/http/conn/scheme/Scheme;"/> + <method name="getSchemeNames()Ljava/util/List;"/> + <method name="register(Lorg/apache/http/conn/scheme/Scheme;)Lorg/apache/http/conn/scheme/Scheme;"/> + <method name="setItems(Ljava/util/Map;)V"/> + <method name="unregister(Ljava/lang/String;)Lorg/apache/http/conn/scheme/Scheme;"/> + </class> + <class name="org/apache/http/conn/scheme/SocketFactory" since="1" deprecated="22"> + <extends name="java/lang/Object"/> + <method name="connectSocket(Ljava/net/Socket;Ljava/lang/String;ILjava/net/InetAddress;ILorg/apache/http/params/HttpParams;)Ljava/net/Socket;"/> + <method name="createSocket()Ljava/net/Socket;"/> + <method name="isSecure(Ljava/net/Socket;)Z"/> + </class> + <class name="org/apache/http/conn/ssl/AbstractVerifier" since="1" deprecated="22"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/conn/ssl/X509HostnameVerifier"/> + <method name="<init>()V"/> + <method name="acceptableCountryWildcard(Ljava/lang/String;)Z"/> + <method name="countDots(Ljava/lang/String;)I"/> + <method name="getCNs(Ljava/security/cert/X509Certificate;)[Ljava/lang/String;"/> + <method name="getDNSSubjectAlts(Ljava/security/cert/X509Certificate;)[Ljava/lang/String;"/> + <method name="verify(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;Z)V"/> + </class> + <class name="org/apache/http/conn/ssl/AllowAllHostnameVerifier" since="1" deprecated="22"> + <extends name="org/apache/http/conn/ssl/AbstractVerifier"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/conn/ssl/BrowserCompatHostnameVerifier" since="1" deprecated="22"> + <extends name="org/apache/http/conn/ssl/AbstractVerifier"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/conn/ssl/SSLSocketFactory" since="1" deprecated="22"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/conn/scheme/LayeredSocketFactory"/> + <method name="<init>(Ljava/lang/String;Ljava/security/KeyStore;Ljava/lang/String;Ljava/security/KeyStore;Ljava/security/SecureRandom;Lorg/apache/http/conn/scheme/HostNameResolver;)V"/> + <method name="<init>(Ljava/security/KeyStore;)V"/> + <method name="<init>(Ljava/security/KeyStore;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/security/KeyStore;Ljava/lang/String;Ljava/security/KeyStore;)V"/> + <method name="getHostnameVerifier()Lorg/apache/http/conn/ssl/X509HostnameVerifier;"/> + <method name="getSocketFactory()Lorg/apache/http/conn/ssl/SSLSocketFactory;"/> + <method name="setHostnameVerifier(Lorg/apache/http/conn/ssl/X509HostnameVerifier;)V"/> + <field name="ALLOW_ALL_HOSTNAME_VERIFIER"/> + <field name="BROWSER_COMPATIBLE_HOSTNAME_VERIFIER"/> + <field name="SSL"/> + <field name="SSLV2"/> + <field name="STRICT_HOSTNAME_VERIFIER"/> + <field name="TLS"/> + </class> + <class name="org/apache/http/conn/ssl/StrictHostnameVerifier" since="1" deprecated="22"> + <extends name="org/apache/http/conn/ssl/AbstractVerifier"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/conn/ssl/X509HostnameVerifier" since="1" deprecated="22"> + <extends name="java/lang/Object"/> + <implements name="javax/net/ssl/HostnameVerifier"/> + <method name="verify(Ljava/lang/String;Ljava/security/cert/X509Certificate;)V"/> + <method name="verify(Ljava/lang/String;Ljavax/net/ssl/SSLSocket;)V"/> + <method name="verify(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)V"/> + </class> + <class name="org/apache/http/conn/util/InetAddressUtils" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="isIPv4Address(Ljava/lang/String;)Z"/> + <method name="isIPv6Address(Ljava/lang/String;)Z"/> + <method name="isIPv6HexCompressedAddress(Ljava/lang/String;)Z"/> + <method name="isIPv6StdAddress(Ljava/lang/String;)Z"/> + </class> + <class name="org/apache/http/cookie/ClientCookie" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/cookie/Cookie"/> + <method name="containsAttribute(Ljava/lang/String;)Z"/> + <method name="getAttribute(Ljava/lang/String;)Ljava/lang/String;"/> + <field name="COMMENTURL_ATTR"/> + <field name="COMMENT_ATTR"/> + <field name="DISCARD_ATTR"/> + <field name="DOMAIN_ATTR"/> + <field name="EXPIRES_ATTR"/> + <field name="MAX_AGE_ATTR"/> + <field name="PATH_ATTR"/> + <field name="PORT_ATTR"/> + <field name="SECURE_ATTR"/> + <field name="VERSION_ATTR"/> + </class> + <class name="org/apache/http/cookie/Cookie" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="getComment()Ljava/lang/String;"/> + <method name="getCommentURL()Ljava/lang/String;"/> + <method name="getDomain()Ljava/lang/String;"/> + <method name="getExpiryDate()Ljava/util/Date;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getPath()Ljava/lang/String;"/> + <method name="getPorts()[I"/> + <method name="getValue()Ljava/lang/String;"/> + <method name="getVersion()I"/> + <method name="isExpired(Ljava/util/Date;)Z"/> + <method name="isPersistent()Z"/> + <method name="isSecure()Z"/> + </class> + <class name="org/apache/http/cookie/CookieAttributeHandler" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="match(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)Z"/> + <method name="parse(Lorg/apache/http/cookie/SetCookie;Ljava/lang/String;)V"/> + <method name="validate(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)V"/> + </class> + <class name="org/apache/http/cookie/CookieIdentityComparator" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/util/Comparator"/> + <method name="<init>()V"/> + <method name="compare(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/Cookie;)I"/> + </class> + <class name="org/apache/http/cookie/CookieOrigin" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;ILjava/lang/String;Z)V"/> + <method name="getHost()Ljava/lang/String;"/> + <method name="getPath()Ljava/lang/String;"/> + <method name="getPort()I"/> + <method name="isSecure()Z"/> + </class> + <class name="org/apache/http/cookie/CookiePathComparator" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="java/io/Serializable"/> + <implements name="java/util/Comparator"/> + <method name="<init>()V"/> + <method name="compare(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/Cookie;)I"/> + </class> + <class name="org/apache/http/cookie/CookieSpec" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="formatCookies(Ljava/util/List;)Ljava/util/List;"/> + <method name="getVersion()I"/> + <method name="getVersionHeader()Lorg/apache/http/Header;"/> + <method name="match(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)Z"/> + <method name="parse(Lorg/apache/http/Header;Lorg/apache/http/cookie/CookieOrigin;)Ljava/util/List;"/> + <method name="validate(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)V"/> + </class> + <class name="org/apache/http/cookie/CookieSpecFactory" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="newInstance(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/cookie/CookieSpec;"/> + </class> + <class name="org/apache/http/cookie/CookieSpecRegistry" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getCookieSpec(Ljava/lang/String;)Lorg/apache/http/cookie/CookieSpec;"/> + <method name="getCookieSpec(Ljava/lang/String;Lorg/apache/http/params/HttpParams;)Lorg/apache/http/cookie/CookieSpec;"/> + <method name="getSpecNames()Ljava/util/List;"/> + <method name="register(Ljava/lang/String;Lorg/apache/http/cookie/CookieSpecFactory;)V"/> + <method name="setItems(Ljava/util/Map;)V"/> + <method name="unregister(Ljava/lang/String;)V"/> + </class> + <class name="org/apache/http/cookie/MalformedCookieException" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/ProtocolException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + </class> + <class name="org/apache/http/cookie/SM" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <field name="COOKIE"/> + <field name="COOKIE2"/> + <field name="SET_COOKIE"/> + <field name="SET_COOKIE2"/> + </class> + <class name="org/apache/http/cookie/SetCookie" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/cookie/Cookie"/> + <method name="setComment(Ljava/lang/String;)V"/> + <method name="setDomain(Ljava/lang/String;)V"/> + <method name="setExpiryDate(Ljava/util/Date;)V"/> + <method name="setPath(Ljava/lang/String;)V"/> + <method name="setSecure(Z)V"/> + <method name="setValue(Ljava/lang/String;)V"/> + <method name="setVersion(I)V"/> + </class> + <class name="org/apache/http/cookie/SetCookie2" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/cookie/SetCookie"/> + <method name="setCommentURL(Ljava/lang/String;)V"/> + <method name="setDiscard(Z)V"/> + <method name="setPorts([I)V"/> + </class> + <class name="org/apache/http/cookie/params/CookieSpecPNames" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <field name="DATE_PATTERNS"/> + <field name="SINGLE_COOKIE_HEADER"/> + </class> + <class name="org/apache/http/cookie/params/CookieSpecParamBean" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/params/HttpAbstractParamBean"/> + <method name="<init>(Lorg/apache/http/params/HttpParams;)V"/> + <method name="setDatePatterns(Ljava/util/Collection;)V"/> + <method name="setSingleHeader(Z)V"/> + </class> + <class name="org/apache/http/entity/AbstractHttpEntity" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpEntity"/> + <method name="<init>()V"/> + <method name="setChunked(Z)V"/> + <method name="setContentEncoding(Ljava/lang/String;)V"/> + <method name="setContentEncoding(Lorg/apache/http/Header;)V"/> + <method name="setContentType(Ljava/lang/String;)V"/> + <method name="setContentType(Lorg/apache/http/Header;)V"/> + <field name="chunked"/> + <field name="contentEncoding"/> + <field name="contentType"/> + </class> + <class name="org/apache/http/entity/BasicHttpEntity" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/entity/AbstractHttpEntity"/> + <method name="<init>()V"/> + <method name="setContent(Ljava/io/InputStream;)V"/> + <method name="setContentLength(J)V"/> + </class> + <class name="org/apache/http/entity/BufferedHttpEntity" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/entity/HttpEntityWrapper"/> + <method name="<init>(Lorg/apache/http/HttpEntity;)V"/> + </class> + <class name="org/apache/http/entity/ByteArrayEntity" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/entity/AbstractHttpEntity"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>([B)V"/> + <field name="content"/> + </class> + <class name="org/apache/http/entity/ContentLengthStrategy" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="determineLength(Lorg/apache/http/HttpMessage;)J"/> + <field name="CHUNKED"/> + <field name="IDENTITY"/> + </class> + <class name="org/apache/http/entity/ContentProducer" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="writeTo(Ljava/io/OutputStream;)V"/> + </class> + <class name="org/apache/http/entity/EntityTemplate" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/entity/AbstractHttpEntity"/> + <method name="<init>(Lorg/apache/http/entity/ContentProducer;)V"/> + </class> + <class name="org/apache/http/entity/FileEntity" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/entity/AbstractHttpEntity"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>(Ljava/io/File;Ljava/lang/String;)V"/> + <field name="file"/> + </class> + <class name="org/apache/http/entity/HttpEntityWrapper" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpEntity"/> + <method name="<init>(Lorg/apache/http/HttpEntity;)V"/> + <field name="wrappedEntity"/> + </class> + <class name="org/apache/http/entity/InputStreamEntity" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/entity/AbstractHttpEntity"/> + <method name="<init>(Ljava/io/InputStream;J)V"/> + </class> + <class name="org/apache/http/entity/SerializableEntity" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/entity/AbstractHttpEntity"/> + <method name="<init>(Ljava/io/Serializable;Z)V"/> + </class> + <class name="org/apache/http/entity/StringEntity" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/entity/AbstractHttpEntity"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <field name="content"/> + </class> + <class name="org/apache/http/impl/AbstractHttpClientConnection" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpClientConnection"/> + <method name="<init>()V"/> + <method name="assertOpen()V"/> + <method name="createEntityDeserializer()Lorg/apache/http/impl/entity/EntityDeserializer;"/> + <method name="createEntitySerializer()Lorg/apache/http/impl/entity/EntitySerializer;"/> + <method name="createHttpResponseFactory()Lorg/apache/http/HttpResponseFactory;"/> + <method name="createRequestWriter(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/params/HttpParams;)Lorg/apache/http/io/HttpMessageWriter;"/> + <method name="createResponseParser(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/HttpResponseFactory;Lorg/apache/http/params/HttpParams;)Lorg/apache/http/io/HttpMessageParser;"/> + <method name="doFlush()V"/> + <method name="init(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/params/HttpParams;)V"/> + </class> + <class name="org/apache/http/impl/AbstractHttpServerConnection" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpServerConnection"/> + <method name="<init>()V"/> + <method name="assertOpen()V"/> + <method name="createEntityDeserializer()Lorg/apache/http/impl/entity/EntityDeserializer;"/> + <method name="createEntitySerializer()Lorg/apache/http/impl/entity/EntitySerializer;"/> + <method name="createHttpRequestFactory()Lorg/apache/http/HttpRequestFactory;"/> + <method name="createRequestParser(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/HttpRequestFactory;Lorg/apache/http/params/HttpParams;)Lorg/apache/http/io/HttpMessageParser;"/> + <method name="createResponseWriter(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/params/HttpParams;)Lorg/apache/http/io/HttpMessageWriter;"/> + <method name="doFlush()V"/> + <method name="init(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/params/HttpParams;)V"/> + </class> + <class name="org/apache/http/impl/DefaultConnectionReuseStrategy" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/ConnectionReuseStrategy"/> + <method name="<init>()V"/> + <method name="createTokenIterator(Lorg/apache/http/HeaderIterator;)Lorg/apache/http/TokenIterator;"/> + </class> + <class name="org/apache/http/impl/DefaultHttpClientConnection" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/SocketHttpClientConnection"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/DefaultHttpRequestFactory" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpRequestFactory"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/DefaultHttpResponseFactory" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpResponseFactory"/> + <method name="<init>()V"/> + <method name="<init>(Lorg/apache/http/ReasonPhraseCatalog;)V"/> + <method name="determineLocale(Lorg/apache/http/protocol/HttpContext;)Ljava/util/Locale;"/> + <field name="reasonCatalog"/> + </class> + <class name="org/apache/http/impl/DefaultHttpServerConnection" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/SocketHttpServerConnection"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/EnglishReasonPhraseCatalog" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/ReasonPhraseCatalog"/> + <method name="<init>()V"/> + <field name="INSTANCE"/> + </class> + <class name="org/apache/http/impl/HttpConnectionMetricsImpl" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpConnectionMetrics"/> + <method name="<init>(Lorg/apache/http/io/HttpTransportMetrics;Lorg/apache/http/io/HttpTransportMetrics;)V"/> + <method name="incrementRequestCount()V"/> + <method name="incrementResponseCount()V"/> + <method name="setMetric(Ljava/lang/String;Ljava/lang/Object;)V"/> + <field name="RECEIVED_BYTES_COUNT"/> + <field name="REQUEST_COUNT"/> + <field name="RESPONSE_COUNT"/> + <field name="SENT_BYTES_COUNT"/> + </class> + <class name="org/apache/http/impl/NoConnectionReuseStrategy" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/ConnectionReuseStrategy"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/SocketHttpClientConnection" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/AbstractHttpClientConnection"/> + <implements name="org/apache/http/HttpInetConnection"/> + <method name="<init>()V"/> + <method name="assertNotOpen()V"/> + <method name="bind(Ljava/net/Socket;Lorg/apache/http/params/HttpParams;)V"/> + <method name="createSessionInputBuffer(Ljava/net/Socket;ILorg/apache/http/params/HttpParams;)Lorg/apache/http/io/SessionInputBuffer;"/> + <method name="createSessionOutputBuffer(Ljava/net/Socket;ILorg/apache/http/params/HttpParams;)Lorg/apache/http/io/SessionOutputBuffer;"/> + <method name="getSocket()Ljava/net/Socket;"/> + </class> + <class name="org/apache/http/impl/SocketHttpServerConnection" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/AbstractHttpServerConnection"/> + <implements name="org/apache/http/HttpInetConnection"/> + <method name="<init>()V"/> + <method name="assertNotOpen()V"/> + <method name="bind(Ljava/net/Socket;Lorg/apache/http/params/HttpParams;)V"/> + <method name="createHttpDataReceiver(Ljava/net/Socket;ILorg/apache/http/params/HttpParams;)Lorg/apache/http/io/SessionInputBuffer;"/> + <method name="createHttpDataTransmitter(Ljava/net/Socket;ILorg/apache/http/params/HttpParams;)Lorg/apache/http/io/SessionOutputBuffer;"/> + <method name="getSocket()Ljava/net/Socket;"/> + </class> + <class name="org/apache/http/impl/auth/AuthSchemeBase" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/auth/AuthScheme"/> + <method name="<init>()V"/> + <method name="isProxy()Z"/> + <method name="parseChallenge(Lorg/apache/http/util/CharArrayBuffer;II)V"/> + </class> + <class name="org/apache/http/impl/auth/BasicScheme" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/auth/RFC2617Scheme"/> + <method name="<init>()V"/> + <method name="authenticate(Lorg/apache/http/auth/Credentials;Ljava/lang/String;Z)Lorg/apache/http/Header;"/> + </class> + <class name="org/apache/http/impl/auth/BasicSchemeFactory" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/auth/AuthSchemeFactory"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/auth/DigestScheme" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/auth/RFC2617Scheme"/> + <method name="<init>()V"/> + <method name="createCnonce()Ljava/lang/String;"/> + <method name="overrideParamter(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="org/apache/http/impl/auth/DigestSchemeFactory" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/auth/AuthSchemeFactory"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/auth/NTLMEngine" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="generateType1Msg(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="generateType3Msg(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + </class> + <class name="org/apache/http/impl/auth/NTLMEngineException" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/auth/AuthenticationException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + </class> + <class name="org/apache/http/impl/auth/NTLMScheme" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/auth/AuthSchemeBase"/> + <method name="<init>(Lorg/apache/http/impl/auth/NTLMEngine;)V"/> + </class> + <class name="org/apache/http/impl/auth/RFC2617Scheme" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/auth/AuthSchemeBase"/> + <method name="<init>()V"/> + <method name="getParameters()Ljava/util/Map;"/> + </class> + <class name="org/apache/http/impl/auth/UnsupportedDigestAlgorithmException" since="1" deprecated="22" removed="23"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V"/> + </class> + <class name="org/apache/http/impl/client/AbstractAuthenticationHandler" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/client/AuthenticationHandler"/> + <method name="<init>()V"/> + <method name="getAuthPreferences()Ljava/util/List;"/> + <method name="parseChallenges([Lorg/apache/http/Header;)Ljava/util/Map;"/> + </class> + <class name="org/apache/http/impl/client/AbstractHttpClient" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/client/HttpClient"/> + <method name="<init>(Lorg/apache/http/conn/ClientConnectionManager;Lorg/apache/http/params/HttpParams;)V"/> + <method name="addRequestInterceptor(Lorg/apache/http/HttpRequestInterceptor;)V"/> + <method name="addRequestInterceptor(Lorg/apache/http/HttpRequestInterceptor;I)V"/> + <method name="addResponseInterceptor(Lorg/apache/http/HttpResponseInterceptor;)V"/> + <method name="addResponseInterceptor(Lorg/apache/http/HttpResponseInterceptor;I)V"/> + <method name="clearRequestInterceptors()V"/> + <method name="clearResponseInterceptors()V"/> + <method name="createAuthSchemeRegistry()Lorg/apache/http/auth/AuthSchemeRegistry;"/> + <method name="createClientConnectionManager()Lorg/apache/http/conn/ClientConnectionManager;"/> + <method name="createClientRequestDirector(Lorg/apache/http/protocol/HttpRequestExecutor;Lorg/apache/http/conn/ClientConnectionManager;Lorg/apache/http/ConnectionReuseStrategy;Lorg/apache/http/conn/ConnectionKeepAliveStrategy;Lorg/apache/http/conn/routing/HttpRoutePlanner;Lorg/apache/http/protocol/HttpProcessor;Lorg/apache/http/client/HttpRequestRetryHandler;Lorg/apache/http/client/RedirectHandler;Lorg/apache/http/client/AuthenticationHandler;Lorg/apache/http/client/AuthenticationHandler;Lorg/apache/http/client/UserTokenHandler;Lorg/apache/http/params/HttpParams;)Lorg/apache/http/client/RequestDirector;"/> + <method name="createConnectionKeepAliveStrategy()Lorg/apache/http/conn/ConnectionKeepAliveStrategy;"/> + <method name="createConnectionReuseStrategy()Lorg/apache/http/ConnectionReuseStrategy;"/> + <method name="createCookieSpecRegistry()Lorg/apache/http/cookie/CookieSpecRegistry;"/> + <method name="createCookieStore()Lorg/apache/http/client/CookieStore;"/> + <method name="createCredentialsProvider()Lorg/apache/http/client/CredentialsProvider;"/> + <method name="createHttpContext()Lorg/apache/http/protocol/HttpContext;"/> + <method name="createHttpParams()Lorg/apache/http/params/HttpParams;"/> + <method name="createHttpProcessor()Lorg/apache/http/protocol/BasicHttpProcessor;"/> + <method name="createHttpRequestRetryHandler()Lorg/apache/http/client/HttpRequestRetryHandler;"/> + <method name="createHttpRoutePlanner()Lorg/apache/http/conn/routing/HttpRoutePlanner;"/> + <method name="createProxyAuthenticationHandler()Lorg/apache/http/client/AuthenticationHandler;"/> + <method name="createRedirectHandler()Lorg/apache/http/client/RedirectHandler;"/> + <method name="createRequestExecutor()Lorg/apache/http/protocol/HttpRequestExecutor;"/> + <method name="createTargetAuthenticationHandler()Lorg/apache/http/client/AuthenticationHandler;"/> + <method name="createUserTokenHandler()Lorg/apache/http/client/UserTokenHandler;"/> + <method name="determineParams(Lorg/apache/http/HttpRequest;)Lorg/apache/http/params/HttpParams;"/> + <method name="getAuthSchemes()Lorg/apache/http/auth/AuthSchemeRegistry;"/> + <method name="getConnectionKeepAliveStrategy()Lorg/apache/http/conn/ConnectionKeepAliveStrategy;"/> + <method name="getConnectionReuseStrategy()Lorg/apache/http/ConnectionReuseStrategy;"/> + <method name="getCookieSpecs()Lorg/apache/http/cookie/CookieSpecRegistry;"/> + <method name="getCookieStore()Lorg/apache/http/client/CookieStore;"/> + <method name="getCredentialsProvider()Lorg/apache/http/client/CredentialsProvider;"/> + <method name="getHttpProcessor()Lorg/apache/http/protocol/BasicHttpProcessor;"/> + <method name="getHttpRequestRetryHandler()Lorg/apache/http/client/HttpRequestRetryHandler;"/> + <method name="getProxyAuthenticationHandler()Lorg/apache/http/client/AuthenticationHandler;"/> + <method name="getRedirectHandler()Lorg/apache/http/client/RedirectHandler;"/> + <method name="getRequestExecutor()Lorg/apache/http/protocol/HttpRequestExecutor;"/> + <method name="getRequestInterceptor(I)Lorg/apache/http/HttpRequestInterceptor;"/> + <method name="getRequestInterceptorCount()I"/> + <method name="getResponseInterceptor(I)Lorg/apache/http/HttpResponseInterceptor;"/> + <method name="getResponseInterceptorCount()I"/> + <method name="getRoutePlanner()Lorg/apache/http/conn/routing/HttpRoutePlanner;"/> + <method name="getTargetAuthenticationHandler()Lorg/apache/http/client/AuthenticationHandler;"/> + <method name="getUserTokenHandler()Lorg/apache/http/client/UserTokenHandler;"/> + <method name="removeRequestInterceptorByClass(Ljava/lang/Class;)V"/> + <method name="removeResponseInterceptorByClass(Ljava/lang/Class;)V"/> + <method name="setAuthSchemes(Lorg/apache/http/auth/AuthSchemeRegistry;)V"/> + <method name="setCookieSpecs(Lorg/apache/http/cookie/CookieSpecRegistry;)V"/> + <method name="setCookieStore(Lorg/apache/http/client/CookieStore;)V"/> + <method name="setCredentialsProvider(Lorg/apache/http/client/CredentialsProvider;)V"/> + <method name="setHttpRequestRetryHandler(Lorg/apache/http/client/HttpRequestRetryHandler;)V"/> + <method name="setKeepAliveStrategy(Lorg/apache/http/conn/ConnectionKeepAliveStrategy;)V"/> + <method name="setParams(Lorg/apache/http/params/HttpParams;)V"/> + <method name="setProxyAuthenticationHandler(Lorg/apache/http/client/AuthenticationHandler;)V"/> + <method name="setRedirectHandler(Lorg/apache/http/client/RedirectHandler;)V"/> + <method name="setReuseStrategy(Lorg/apache/http/ConnectionReuseStrategy;)V"/> + <method name="setRoutePlanner(Lorg/apache/http/conn/routing/HttpRoutePlanner;)V"/> + <method name="setTargetAuthenticationHandler(Lorg/apache/http/client/AuthenticationHandler;)V"/> + <method name="setUserTokenHandler(Lorg/apache/http/client/UserTokenHandler;)V"/> + </class> + <class name="org/apache/http/impl/client/BasicCookieStore" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/client/CookieStore"/> + <method name="<init>()V"/> + <method name="addCookies([Lorg/apache/http/cookie/Cookie;)V"/> + </class> + <class name="org/apache/http/impl/client/BasicCredentialsProvider" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/client/CredentialsProvider"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/client/BasicResponseHandler" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/client/ResponseHandler"/> + <method name="<init>()V"/> + <method name="handleResponse(Lorg/apache/http/HttpResponse;)Ljava/lang/String;"/> + </class> + <class name="org/apache/http/impl/client/ClientParamsStack" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/params/AbstractHttpParams"/> + <method name="<init>(Lorg/apache/http/impl/client/ClientParamsStack;)V"/> + <method name="<init>(Lorg/apache/http/impl/client/ClientParamsStack;Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;)V"/> + <method name="<init>(Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;)V"/> + <method name="getApplicationParams()Lorg/apache/http/params/HttpParams;"/> + <method name="getClientParams()Lorg/apache/http/params/HttpParams;"/> + <method name="getOverrideParams()Lorg/apache/http/params/HttpParams;"/> + <method name="getRequestParams()Lorg/apache/http/params/HttpParams;"/> + <field name="applicationParams"/> + <field name="clientParams"/> + <field name="overrideParams"/> + <field name="requestParams"/> + </class> + <class name="org/apache/http/impl/client/DefaultConnectionKeepAliveStrategy" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/conn/ConnectionKeepAliveStrategy"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/client/DefaultHttpClient" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/client/AbstractHttpClient"/> + <method name="<init>()V"/> + <method name="<init>(Lorg/apache/http/conn/ClientConnectionManager;Lorg/apache/http/params/HttpParams;)V"/> + <method name="<init>(Lorg/apache/http/params/HttpParams;)V"/> + </class> + <class name="org/apache/http/impl/client/DefaultHttpRequestRetryHandler" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/client/HttpRequestRetryHandler"/> + <method name="<init>()V"/> + <method name="<init>(IZ)V"/> + <method name="getRetryCount()I"/> + <method name="isRequestSentRetryEnabled()Z"/> + </class> + <class name="org/apache/http/impl/client/DefaultProxyAuthenticationHandler" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/client/AbstractAuthenticationHandler"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/client/DefaultRedirectHandler" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/client/RedirectHandler"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/client/DefaultRequestDirector" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/client/RequestDirector"/> + <method name="<init>(Lorg/apache/http/protocol/HttpRequestExecutor;Lorg/apache/http/conn/ClientConnectionManager;Lorg/apache/http/ConnectionReuseStrategy;Lorg/apache/http/conn/ConnectionKeepAliveStrategy;Lorg/apache/http/conn/routing/HttpRoutePlanner;Lorg/apache/http/protocol/HttpProcessor;Lorg/apache/http/client/HttpRequestRetryHandler;Lorg/apache/http/client/RedirectHandler;Lorg/apache/http/client/AuthenticationHandler;Lorg/apache/http/client/AuthenticationHandler;Lorg/apache/http/client/UserTokenHandler;Lorg/apache/http/params/HttpParams;)V"/> + <method name="createConnectRequest(Lorg/apache/http/conn/routing/HttpRoute;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpRequest;"/> + <method name="createTunnelToProxy(Lorg/apache/http/conn/routing/HttpRoute;ILorg/apache/http/protocol/HttpContext;)Z"/> + <method name="createTunnelToTarget(Lorg/apache/http/conn/routing/HttpRoute;Lorg/apache/http/protocol/HttpContext;)Z"/> + <method name="determineRoute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/conn/routing/HttpRoute;"/> + <method name="establishRoute(Lorg/apache/http/conn/routing/HttpRoute;Lorg/apache/http/protocol/HttpContext;)V"/> + <method name="handleResponse(Lorg/apache/http/impl/client/RoutedRequest;Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/impl/client/RoutedRequest;"/> + <method name="releaseConnection()V"/> + <method name="rewriteRequestURI(Lorg/apache/http/impl/client/RequestWrapper;Lorg/apache/http/conn/routing/HttpRoute;)V"/> + <field name="connManager"/> + <field name="httpProcessor"/> + <field name="keepAliveStrategy"/> + <field name="managedConn"/> + <field name="params"/> + <field name="redirectHandler"/> + <field name="requestExec"/> + <field name="retryHandler"/> + <field name="reuseStrategy"/> + <field name="routePlanner"/> + </class> + <class name="org/apache/http/impl/client/DefaultTargetAuthenticationHandler" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/client/AbstractAuthenticationHandler"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/client/DefaultUserTokenHandler" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/client/UserTokenHandler"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/client/EntityEnclosingRequestWrapper" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/client/RequestWrapper"/> + <implements name="org/apache/http/HttpEntityEnclosingRequest"/> + <method name="<init>(Lorg/apache/http/HttpEntityEnclosingRequest;)V"/> + </class> + <class name="org/apache/http/impl/client/RedirectLocations" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="add(Ljava/net/URI;)V"/> + <method name="contains(Ljava/net/URI;)Z"/> + <method name="remove(Ljava/net/URI;)Z"/> + </class> + <class name="org/apache/http/impl/client/RequestWrapper" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/message/AbstractHttpMessage"/> + <implements name="org/apache/http/client/methods/HttpUriRequest"/> + <method name="<init>(Lorg/apache/http/HttpRequest;)V"/> + <method name="getExecCount()I"/> + <method name="getOriginal()Lorg/apache/http/HttpRequest;"/> + <method name="incrementExecCount()V"/> + <method name="isRepeatable()Z"/> + <method name="resetHeaders()V"/> + <method name="setMethod(Ljava/lang/String;)V"/> + <method name="setProtocolVersion(Lorg/apache/http/ProtocolVersion;)V"/> + <method name="setURI(Ljava/net/URI;)V"/> + </class> + <class name="org/apache/http/impl/client/RoutedRequest" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>(Lorg/apache/http/impl/client/RequestWrapper;Lorg/apache/http/conn/routing/HttpRoute;)V"/> + <method name="getRequest()Lorg/apache/http/impl/client/RequestWrapper;"/> + <method name="getRoute()Lorg/apache/http/conn/routing/HttpRoute;"/> + <field name="request"/> + <field name="route"/> + </class> + <class name="org/apache/http/impl/client/TunnelRefusedException" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/HttpException"/> + <method name="<init>(Ljava/lang/String;Lorg/apache/http/HttpResponse;)V"/> + <method name="getResponse()Lorg/apache/http/HttpResponse;"/> + </class> + <class name="org/apache/http/impl/conn/AbstractClientConnAdapter" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/conn/ManagedClientConnection"/> + <method name="<init>(Lorg/apache/http/conn/ClientConnectionManager;Lorg/apache/http/conn/OperatedClientConnection;)V"/> + <method name="assertNotAborted()V"/> + <method name="assertValid(Lorg/apache/http/conn/OperatedClientConnection;)V"/> + <method name="detach()V"/> + <method name="getManager()Lorg/apache/http/conn/ClientConnectionManager;"/> + <method name="getWrappedConnection()Lorg/apache/http/conn/OperatedClientConnection;"/> + </class> + <class name="org/apache/http/impl/conn/AbstractPoolEntry" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>(Lorg/apache/http/conn/ClientConnectionOperator;Lorg/apache/http/conn/routing/HttpRoute;)V"/> + <method name="getState()Ljava/lang/Object;"/> + <method name="layerProtocol(Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V"/> + <method name="open(Lorg/apache/http/conn/routing/HttpRoute;Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V"/> + <method name="setState(Ljava/lang/Object;)V"/> + <method name="shutdownEntry()V"/> + <method name="tunnelProxy(Lorg/apache/http/HttpHost;ZLorg/apache/http/params/HttpParams;)V"/> + <method name="tunnelTarget(ZLorg/apache/http/params/HttpParams;)V"/> + <field name="connOperator"/> + <field name="connection"/> + <field name="route"/> + <field name="state"/> + <field name="tracker"/> + </class> + <class name="org/apache/http/impl/conn/AbstractPooledConnAdapter" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/conn/AbstractClientConnAdapter"/> + <method name="<init>(Lorg/apache/http/conn/ClientConnectionManager;Lorg/apache/http/impl/conn/AbstractPoolEntry;)V"/> + <method name="assertAttached()V"/> + <field name="poolEntry"/> + </class> + <class name="org/apache/http/impl/conn/DefaultClientConnection" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/SocketHttpClientConnection"/> + <implements name="org/apache/http/conn/OperatedClientConnection"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/conn/DefaultClientConnectionOperator" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/conn/ClientConnectionOperator"/> + <method name="<init>(Lorg/apache/http/conn/scheme/SchemeRegistry;)V"/> + <method name="prepareSocket(Ljava/net/Socket;Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V"/> + <field name="schemeRegistry"/> + </class> + <class name="org/apache/http/impl/conn/DefaultHttpRoutePlanner" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/conn/routing/HttpRoutePlanner"/> + <method name="<init>(Lorg/apache/http/conn/scheme/SchemeRegistry;)V"/> + <field name="schemeRegistry"/> + </class> + <class name="org/apache/http/impl/conn/DefaultResponseParser" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/io/AbstractMessageParser"/> + <method name="<init>(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/message/LineParser;Lorg/apache/http/HttpResponseFactory;Lorg/apache/http/params/HttpParams;)V"/> + </class> + <class name="org/apache/http/impl/conn/IdleConnectionHandler" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="add(Lorg/apache/http/HttpConnection;JLjava/util/concurrent/TimeUnit;)V"/> + <method name="closeExpiredConnections()V"/> + <method name="closeIdleConnections(J)V"/> + <method name="remove(Lorg/apache/http/HttpConnection;)Z"/> + <method name="removeAll()V"/> + </class> + <class name="org/apache/http/impl/conn/LoggingSessionInputBuffer" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/io/SessionInputBuffer"/> + <method name="<init>(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/impl/conn/Wire;)V"/> + </class> + <class name="org/apache/http/impl/conn/LoggingSessionOutputBuffer" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/io/SessionOutputBuffer"/> + <method name="<init>(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/impl/conn/Wire;)V"/> + </class> + <class name="org/apache/http/impl/conn/ProxySelectorRoutePlanner" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/conn/routing/HttpRoutePlanner"/> + <method name="<init>(Lorg/apache/http/conn/scheme/SchemeRegistry;Ljava/net/ProxySelector;)V"/> + <method name="chooseProxy(Ljava/util/List;Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Ljava/net/Proxy;"/> + <method name="determineProxy(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpHost;"/> + <method name="getHost(Ljava/net/InetSocketAddress;)Ljava/lang/String;"/> + <method name="getProxySelector()Ljava/net/ProxySelector;"/> + <method name="setProxySelector(Ljava/net/ProxySelector;)V"/> + <field name="proxySelector"/> + <field name="schemeRegistry"/> + </class> + <class name="org/apache/http/impl/conn/SingleClientConnManager" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/conn/ClientConnectionManager"/> + <method name="<init>(Lorg/apache/http/params/HttpParams;Lorg/apache/http/conn/scheme/SchemeRegistry;)V"/> + <method name="assertStillUp()V"/> + <method name="createConnectionOperator(Lorg/apache/http/conn/scheme/SchemeRegistry;)Lorg/apache/http/conn/ClientConnectionOperator;"/> + <method name="getConnection(Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Object;)Lorg/apache/http/conn/ManagedClientConnection;"/> + <method name="revokeConnection()V"/> + <field name="MISUSE_MESSAGE"/> + <field name="alwaysShutDown"/> + <field name="connOperator"/> + <field name="connectionExpiresTime"/> + <field name="isShutDown"/> + <field name="lastReleaseTime"/> + <field name="managedConn"/> + <field name="schemeRegistry"/> + <field name="uniquePoolEntry"/> + </class> + <class name="org/apache/http/impl/conn/SingleClientConnManager$ConnAdapter" since="1" removed="23"> + <extends name="org/apache/http/impl/conn/AbstractPooledConnAdapter"/> + <method name="<init>(Lorg/apache/http/impl/conn/SingleClientConnManager;Lorg/apache/http/impl/conn/SingleClientConnManager$PoolEntry;Lorg/apache/http/conn/routing/HttpRoute;)V"/> + </class> + <class name="org/apache/http/impl/conn/SingleClientConnManager$PoolEntry" since="1" removed="23"> + <extends name="org/apache/http/impl/conn/AbstractPoolEntry"/> + <method name="<init>(Lorg/apache/http/impl/conn/SingleClientConnManager;)V"/> + <method name="close()V"/> + <method name="shutdown()V"/> + </class> + <class name="org/apache/http/impl/conn/Wire" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>(Lorg/apache/commons/logging/Log;)V"/> + <method name="enabled()Z"/> + <method name="input(I)V"/> + <method name="input(Ljava/io/InputStream;)V"/> + <method name="input(Ljava/lang/String;)V"/> + <method name="input([B)V"/> + <method name="input([BII)V"/> + <method name="output(I)V"/> + <method name="output(Ljava/io/InputStream;)V"/> + <method name="output(Ljava/lang/String;)V"/> + <method name="output([B)V"/> + <method name="output([BII)V"/> + </class> + <class name="org/apache/http/impl/conn/tsccm/AbstractConnPool" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/impl/conn/tsccm/RefQueueHandler"/> + <method name="<init>()V"/> + <method name="closeConnection(Lorg/apache/http/conn/OperatedClientConnection;)V"/> + <method name="closeExpiredConnections()V"/> + <method name="closeIdleConnections(JLjava/util/concurrent/TimeUnit;)V"/> + <method name="deleteClosedConnections()V"/> + <method name="enableConnectionGC()V"/> + <method name="freeEntry(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;ZJLjava/util/concurrent/TimeUnit;)V"/> + <method name="getEntry(Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;"/> + <method name="handleLostEntry(Lorg/apache/http/conn/routing/HttpRoute;)V"/> + <method name="requestPoolEntry(Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Object;)Lorg/apache/http/impl/conn/tsccm/PoolEntryRequest;"/> + <method name="shutdown()V"/> + <field name="idleConnHandler"/> + <field name="isShutDown"/> + <field name="issuedConnections"/> + <field name="numConnections"/> + <field name="poolLock"/> + <field name="refQueue"/> + </class> + <class name="org/apache/http/impl/conn/tsccm/BasicPoolEntry" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/conn/AbstractPoolEntry"/> + <method name="<init>(Lorg/apache/http/conn/ClientConnectionOperator;Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/ref/ReferenceQueue;)V"/> + <method name="getConnection()Lorg/apache/http/conn/OperatedClientConnection;"/> + <method name="getPlannedRoute()Lorg/apache/http/conn/routing/HttpRoute;"/> + <method name="getWeakRef()Lorg/apache/http/impl/conn/tsccm/BasicPoolEntryRef;"/> + </class> + <class name="org/apache/http/impl/conn/tsccm/BasicPoolEntryRef" since="1" deprecated="22" removed="23"> + <extends name="java/lang/ref/WeakReference"/> + <method name="<init>(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;Ljava/lang/ref/ReferenceQueue;)V"/> + <method name="getRoute()Lorg/apache/http/conn/routing/HttpRoute;"/> + </class> + <class name="org/apache/http/impl/conn/tsccm/BasicPooledConnAdapter" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/conn/AbstractPooledConnAdapter"/> + <method name="<init>(Lorg/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager;Lorg/apache/http/impl/conn/AbstractPoolEntry;)V"/> + <method name="getPoolEntry()Lorg/apache/http/impl/conn/AbstractPoolEntry;"/> + </class> + <class name="org/apache/http/impl/conn/tsccm/ConnPoolByRoute" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/conn/tsccm/AbstractConnPool"/> + <method name="<init>(Lorg/apache/http/conn/ClientConnectionOperator;Lorg/apache/http/params/HttpParams;)V"/> + <method name="createEntry(Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;Lorg/apache/http/conn/ClientConnectionOperator;)Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;"/> + <method name="createFreeConnQueue()Ljava/util/Queue;"/> + <method name="createRouteToPoolMap()Ljava/util/Map;"/> + <method name="createWaitingThreadQueue()Ljava/util/Queue;"/> + <method name="deleteEntry(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;)V"/> + <method name="deleteLeastUsedEntry()V"/> + <method name="getConnectionsInPool(Lorg/apache/http/conn/routing/HttpRoute;)I"/> + <method name="getEntryBlocking(Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;Lorg/apache/http/impl/conn/tsccm/WaitingThreadAborter;)Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;"/> + <method name="getFreeEntry(Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;Ljava/lang/Object;)Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;"/> + <method name="getRoutePool(Lorg/apache/http/conn/routing/HttpRoute;Z)Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;"/> + <method name="newRouteSpecificPool(Lorg/apache/http/conn/routing/HttpRoute;)Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;"/> + <method name="newWaitingThread(Ljava/util/concurrent/locks/Condition;Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;)Lorg/apache/http/impl/conn/tsccm/WaitingThread;"/> + <method name="notifyWaitingThread(Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;)V"/> + <field name="freeConnections"/> + <field name="maxTotalConnections"/> + <field name="operator"/> + <field name="routeToPool"/> + <field name="waitingThreads"/> + </class> + <class name="org/apache/http/impl/conn/tsccm/PoolEntryRequest" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="abortRequest()V"/> + <method name="getPoolEntry(JLjava/util/concurrent/TimeUnit;)Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;"/> + </class> + <class name="org/apache/http/impl/conn/tsccm/RefQueueHandler" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="handleReference(Ljava/lang/ref/Reference;)V"/> + </class> + <class name="org/apache/http/impl/conn/tsccm/RefQueueWorker" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Runnable"/> + <method name="<init>(Ljava/lang/ref/ReferenceQueue;Lorg/apache/http/impl/conn/tsccm/RefQueueHandler;)V"/> + <method name="shutdown()V"/> + <field name="refHandler"/> + <field name="refQueue"/> + <field name="workerThread"/> + </class> + <class name="org/apache/http/impl/conn/tsccm/RouteSpecificPool" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>(Lorg/apache/http/conn/routing/HttpRoute;I)V"/> + <method name="allocEntry(Ljava/lang/Object;)Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;"/> + <method name="createdEntry(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;)V"/> + <method name="deleteEntry(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;)Z"/> + <method name="dropEntry()V"/> + <method name="freeEntry(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;)V"/> + <method name="getCapacity()I"/> + <method name="getEntryCount()I"/> + <method name="getMaxEntries()I"/> + <method name="getRoute()Lorg/apache/http/conn/routing/HttpRoute;"/> + <method name="hasThread()Z"/> + <method name="isUnused()Z"/> + <method name="nextThread()Lorg/apache/http/impl/conn/tsccm/WaitingThread;"/> + <method name="queueThread(Lorg/apache/http/impl/conn/tsccm/WaitingThread;)V"/> + <method name="removeThread(Lorg/apache/http/impl/conn/tsccm/WaitingThread;)V"/> + <field name="freeEntries"/> + <field name="maxEntries"/> + <field name="numEntries"/> + <field name="route"/> + <field name="waitingThreads"/> + </class> + <class name="org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/conn/ClientConnectionManager"/> + <method name="<init>(Lorg/apache/http/params/HttpParams;Lorg/apache/http/conn/scheme/SchemeRegistry;)V"/> + <method name="createConnectionOperator(Lorg/apache/http/conn/scheme/SchemeRegistry;)Lorg/apache/http/conn/ClientConnectionOperator;"/> + <method name="createConnectionPool(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/impl/conn/tsccm/AbstractConnPool;"/> + <method name="getConnectionsInPool()I"/> + <method name="getConnectionsInPool(Lorg/apache/http/conn/routing/HttpRoute;)I"/> + <field name="connOperator"/> + <field name="connectionPool"/> + <field name="schemeRegistry"/> + </class> + <class name="org/apache/http/impl/conn/tsccm/WaitingThread" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/util/concurrent/locks/Condition;Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;)V"/> + <method name="await(Ljava/util/Date;)Z"/> + <method name="getCondition()Ljava/util/concurrent/locks/Condition;"/> + <method name="getPool()Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;"/> + <method name="getThread()Ljava/lang/Thread;"/> + <method name="interrupt()V"/> + <method name="wakeup()V"/> + </class> + <class name="org/apache/http/impl/conn/tsccm/WaitingThreadAborter" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="abort()V"/> + <method name="setWaitingThread(Lorg/apache/http/impl/conn/tsccm/WaitingThread;)V"/> + </class> + <class name="org/apache/http/impl/cookie/AbstractCookieAttributeHandler" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/cookie/CookieAttributeHandler"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/cookie/AbstractCookieSpec" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/cookie/CookieSpec"/> + <method name="<init>()V"/> + <method name="findAttribHandler(Ljava/lang/String;)Lorg/apache/http/cookie/CookieAttributeHandler;"/> + <method name="getAttribHandler(Ljava/lang/String;)Lorg/apache/http/cookie/CookieAttributeHandler;"/> + <method name="getAttribHandlers()Ljava/util/Collection;"/> + <method name="registerAttribHandler(Ljava/lang/String;Lorg/apache/http/cookie/CookieAttributeHandler;)V"/> + </class> + <class name="org/apache/http/impl/cookie/BasicClientCookie" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <implements name="org/apache/http/cookie/ClientCookie"/> + <implements name="org/apache/http/cookie/SetCookie"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="setAttribute(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="org/apache/http/impl/cookie/BasicClientCookie2" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/cookie/BasicClientCookie"/> + <implements name="org/apache/http/cookie/SetCookie2"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="org/apache/http/impl/cookie/BasicCommentHandler" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/cookie/AbstractCookieAttributeHandler"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/cookie/BasicDomainHandler" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/cookie/CookieAttributeHandler"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/cookie/BasicExpiresHandler" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/cookie/AbstractCookieAttributeHandler"/> + <method name="<init>([Ljava/lang/String;)V"/> + </class> + <class name="org/apache/http/impl/cookie/BasicMaxAgeHandler" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/cookie/AbstractCookieAttributeHandler"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/cookie/BasicPathHandler" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/cookie/CookieAttributeHandler"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/cookie/BasicSecureHandler" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/cookie/AbstractCookieAttributeHandler"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/cookie/BestMatchSpec" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/cookie/CookieSpec"/> + <method name="<init>()V"/> + <method name="<init>([Ljava/lang/String;Z)V"/> + </class> + <class name="org/apache/http/impl/cookie/BestMatchSpecFactory" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/cookie/CookieSpecFactory"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/cookie/BrowserCompatSpec" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/cookie/CookieSpecBase"/> + <method name="<init>()V"/> + <method name="<init>([Ljava/lang/String;)V"/> + <field name="DATE_PATTERNS"/> + </class> + <class name="org/apache/http/impl/cookie/BrowserCompatSpecFactory" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/cookie/CookieSpecFactory"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/cookie/CookieSpecBase" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/cookie/AbstractCookieSpec"/> + <method name="<init>()V"/> + <method name="getDefaultDomain(Lorg/apache/http/cookie/CookieOrigin;)Ljava/lang/String;"/> + <method name="getDefaultPath(Lorg/apache/http/cookie/CookieOrigin;)Ljava/lang/String;"/> + <method name="parse([Lorg/apache/http/HeaderElement;Lorg/apache/http/cookie/CookieOrigin;)Ljava/util/List;"/> + </class> + <class name="org/apache/http/impl/cookie/DateParseException" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="org/apache/http/impl/cookie/DateUtils" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="formatDate(Ljava/util/Date;)Ljava/lang/String;"/> + <method name="formatDate(Ljava/util/Date;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="parseDate(Ljava/lang/String;)Ljava/util/Date;"/> + <method name="parseDate(Ljava/lang/String;[Ljava/lang/String;)Ljava/util/Date;"/> + <method name="parseDate(Ljava/lang/String;[Ljava/lang/String;Ljava/util/Date;)Ljava/util/Date;"/> + <field name="GMT"/> + <field name="PATTERN_ASCTIME"/> + <field name="PATTERN_RFC1036"/> + <field name="PATTERN_RFC1123"/> + </class> + <class name="org/apache/http/impl/cookie/NetscapeDomainHandler" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/cookie/BasicDomainHandler"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/cookie/NetscapeDraftHeaderParser" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="parseHeader(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/HeaderElement;"/> + <field name="DEFAULT"/> + </class> + <class name="org/apache/http/impl/cookie/NetscapeDraftSpec" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/cookie/CookieSpecBase"/> + <method name="<init>()V"/> + <method name="<init>([Ljava/lang/String;)V"/> + <field name="EXPIRES_PATTERN"/> + </class> + <class name="org/apache/http/impl/cookie/NetscapeDraftSpecFactory" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/cookie/CookieSpecFactory"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/cookie/RFC2109DomainHandler" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/cookie/CookieAttributeHandler"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/cookie/RFC2109Spec" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/cookie/CookieSpecBase"/> + <method name="<init>()V"/> + <method name="<init>([Ljava/lang/String;Z)V"/> + <method name="formatCookieAsVer(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/cookie/Cookie;I)V"/> + <method name="formatParamAsVer(Lorg/apache/http/util/CharArrayBuffer;Ljava/lang/String;Ljava/lang/String;I)V"/> + </class> + <class name="org/apache/http/impl/cookie/RFC2109SpecFactory" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/cookie/CookieSpecFactory"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/cookie/RFC2109VersionHandler" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/cookie/AbstractCookieAttributeHandler"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/cookie/RFC2965CommentUrlAttributeHandler" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/cookie/CookieAttributeHandler"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/cookie/RFC2965DiscardAttributeHandler" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/cookie/CookieAttributeHandler"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/cookie/RFC2965DomainAttributeHandler" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/cookie/CookieAttributeHandler"/> + <method name="<init>()V"/> + <method name="domainMatch(Ljava/lang/String;Ljava/lang/String;)Z"/> + </class> + <class name="org/apache/http/impl/cookie/RFC2965PortAttributeHandler" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/cookie/CookieAttributeHandler"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/cookie/RFC2965Spec" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/cookie/RFC2109Spec"/> + <method name="<init>()V"/> + <method name="<init>([Ljava/lang/String;Z)V"/> + </class> + <class name="org/apache/http/impl/cookie/RFC2965SpecFactory" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/cookie/CookieSpecFactory"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/cookie/RFC2965VersionAttributeHandler" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/cookie/CookieAttributeHandler"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/entity/EntityDeserializer" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>(Lorg/apache/http/entity/ContentLengthStrategy;)V"/> + <method name="deserialize(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/HttpMessage;)Lorg/apache/http/HttpEntity;"/> + <method name="doDeserialize(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/HttpMessage;)Lorg/apache/http/entity/BasicHttpEntity;"/> + </class> + <class name="org/apache/http/impl/entity/EntitySerializer" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>(Lorg/apache/http/entity/ContentLengthStrategy;)V"/> + <method name="doSerialize(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/HttpMessage;)Ljava/io/OutputStream;"/> + <method name="serialize(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/HttpMessage;Lorg/apache/http/HttpEntity;)V"/> + </class> + <class name="org/apache/http/impl/entity/LaxContentLengthStrategy" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/entity/ContentLengthStrategy"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/entity/StrictContentLengthStrategy" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/entity/ContentLengthStrategy"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/impl/io/AbstractMessageParser" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/io/HttpMessageParser"/> + <method name="<init>(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/message/LineParser;Lorg/apache/http/params/HttpParams;)V"/> + <method name="parseHead(Lorg/apache/http/io/SessionInputBuffer;)Lorg/apache/http/HttpMessage;"/> + <method name="parseHeaders(Lorg/apache/http/io/SessionInputBuffer;IILorg/apache/http/message/LineParser;)[Lorg/apache/http/Header;"/> + <field name="lineParser"/> + </class> + <class name="org/apache/http/impl/io/AbstractMessageWriter" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/io/HttpMessageWriter"/> + <method name="<init>(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/message/LineFormatter;Lorg/apache/http/params/HttpParams;)V"/> + <method name="writeHeadLine(Lorg/apache/http/HttpMessage;)V"/> + <field name="lineBuf"/> + <field name="lineFormatter"/> + <field name="sessionBuffer"/> + </class> + <class name="org/apache/http/impl/io/AbstractSessionInputBuffer" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/io/SessionInputBuffer"/> + <method name="<init>()V"/> + <method name="fillBuffer()I"/> + <method name="hasBufferedData()Z"/> + <method name="init(Ljava/io/InputStream;ILorg/apache/http/params/HttpParams;)V"/> + </class> + <class name="org/apache/http/impl/io/AbstractSessionOutputBuffer" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/io/SessionOutputBuffer"/> + <method name="<init>()V"/> + <method name="flushBuffer()V"/> + <method name="init(Ljava/io/OutputStream;ILorg/apache/http/params/HttpParams;)V"/> + </class> + <class name="org/apache/http/impl/io/ChunkedInputStream" since="1" deprecated="22" removed="23"> + <extends name="java/io/InputStream"/> + <method name="<init>(Lorg/apache/http/io/SessionInputBuffer;)V"/> + <method name="getFooters()[Lorg/apache/http/Header;"/> + </class> + <class name="org/apache/http/impl/io/ChunkedOutputStream" since="1" deprecated="22" removed="23"> + <extends name="java/io/OutputStream"/> + <method name="<init>(Lorg/apache/http/io/SessionOutputBuffer;)V"/> + <method name="<init>(Lorg/apache/http/io/SessionOutputBuffer;I)V"/> + <method name="finish()V"/> + <method name="flushCache()V"/> + <method name="flushCacheWithAppend([BII)V"/> + <method name="writeClosingChunk()V"/> + </class> + <class name="org/apache/http/impl/io/ContentLengthInputStream" since="1" deprecated="22" removed="23"> + <extends name="java/io/InputStream"/> + <method name="<init>(Lorg/apache/http/io/SessionInputBuffer;J)V"/> + </class> + <class name="org/apache/http/impl/io/ContentLengthOutputStream" since="1" deprecated="22" removed="23"> + <extends name="java/io/OutputStream"/> + <method name="<init>(Lorg/apache/http/io/SessionOutputBuffer;J)V"/> + </class> + <class name="org/apache/http/impl/io/HttpRequestParser" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/io/AbstractMessageParser"/> + <method name="<init>(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/message/LineParser;Lorg/apache/http/HttpRequestFactory;Lorg/apache/http/params/HttpParams;)V"/> + </class> + <class name="org/apache/http/impl/io/HttpRequestWriter" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/io/AbstractMessageWriter"/> + <method name="<init>(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/message/LineFormatter;Lorg/apache/http/params/HttpParams;)V"/> + </class> + <class name="org/apache/http/impl/io/HttpResponseParser" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/io/AbstractMessageParser"/> + <method name="<init>(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/message/LineParser;Lorg/apache/http/HttpResponseFactory;Lorg/apache/http/params/HttpParams;)V"/> + </class> + <class name="org/apache/http/impl/io/HttpResponseWriter" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/io/AbstractMessageWriter"/> + <method name="<init>(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/message/LineFormatter;Lorg/apache/http/params/HttpParams;)V"/> + </class> + <class name="org/apache/http/impl/io/HttpTransportMetricsImpl" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/io/HttpTransportMetrics"/> + <method name="<init>()V"/> + <method name="incrementBytesTransferred(J)V"/> + <method name="setBytesTransferred(J)V"/> + </class> + <class name="org/apache/http/impl/io/IdentityInputStream" since="1" deprecated="22" removed="23"> + <extends name="java/io/InputStream"/> + <method name="<init>(Lorg/apache/http/io/SessionInputBuffer;)V"/> + </class> + <class name="org/apache/http/impl/io/IdentityOutputStream" since="1" deprecated="22" removed="23"> + <extends name="java/io/OutputStream"/> + <method name="<init>(Lorg/apache/http/io/SessionOutputBuffer;)V"/> + </class> + <class name="org/apache/http/impl/io/SocketInputBuffer" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/io/AbstractSessionInputBuffer"/> + <method name="<init>(Ljava/net/Socket;ILorg/apache/http/params/HttpParams;)V"/> + </class> + <class name="org/apache/http/impl/io/SocketOutputBuffer" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/impl/io/AbstractSessionOutputBuffer"/> + <method name="<init>(Ljava/net/Socket;ILorg/apache/http/params/HttpParams;)V"/> + </class> + <class name="org/apache/http/io/HttpMessageParser" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="parse()Lorg/apache/http/HttpMessage;"/> + </class> + <class name="org/apache/http/io/HttpMessageWriter" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="write(Lorg/apache/http/HttpMessage;)V"/> + </class> + <class name="org/apache/http/io/HttpTransportMetrics" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="getBytesTransferred()J"/> + <method name="reset()V"/> + </class> + <class name="org/apache/http/io/SessionInputBuffer" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="getMetrics()Lorg/apache/http/io/HttpTransportMetrics;"/> + <method name="isDataAvailable(I)Z"/> + <method name="read()I"/> + <method name="read([B)I"/> + <method name="read([BII)I"/> + <method name="readLine()Ljava/lang/String;"/> + <method name="readLine(Lorg/apache/http/util/CharArrayBuffer;)I"/> + </class> + <class name="org/apache/http/io/SessionOutputBuffer" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="flush()V"/> + <method name="getMetrics()Lorg/apache/http/io/HttpTransportMetrics;"/> + <method name="write(I)V"/> + <method name="write([B)V"/> + <method name="write([BII)V"/> + <method name="writeLine(Ljava/lang/String;)V"/> + <method name="writeLine(Lorg/apache/http/util/CharArrayBuffer;)V"/> + </class> + <class name="org/apache/http/message/AbstractHttpMessage" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpMessage"/> + <method name="<init>()V"/> + <method name="<init>(Lorg/apache/http/params/HttpParams;)V"/> + <field name="headergroup"/> + <field name="params"/> + </class> + <class name="org/apache/http/message/BasicHeader" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <implements name="org/apache/http/Header"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="org/apache/http/message/BasicHeaderElement" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <implements name="org/apache/http/HeaderElement"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;[Lorg/apache/http/NameValuePair;)V"/> + </class> + <class name="org/apache/http/message/BasicHeaderElementIterator" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HeaderElementIterator"/> + <method name="<init>(Lorg/apache/http/HeaderIterator;)V"/> + <method name="<init>(Lorg/apache/http/HeaderIterator;Lorg/apache/http/message/HeaderValueParser;)V"/> + </class> + <class name="org/apache/http/message/BasicHeaderIterator" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HeaderIterator"/> + <method name="<init>([Lorg/apache/http/Header;Ljava/lang/String;)V"/> + <method name="filterHeader(I)Z"/> + <method name="findNext(I)I"/> + <field name="allHeaders"/> + <field name="currentIndex"/> + <field name="headerName"/> + </class> + <class name="org/apache/http/message/BasicHeaderValueFormatter" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/message/HeaderValueFormatter"/> + <method name="<init>()V"/> + <method name="doFormatValue(Lorg/apache/http/util/CharArrayBuffer;Ljava/lang/String;Z)V"/> + <method name="estimateElementsLen([Lorg/apache/http/HeaderElement;)I"/> + <method name="estimateHeaderElementLen(Lorg/apache/http/HeaderElement;)I"/> + <method name="estimateNameValuePairLen(Lorg/apache/http/NameValuePair;)I"/> + <method name="estimateParametersLen([Lorg/apache/http/NameValuePair;)I"/> + <method name="formatElements([Lorg/apache/http/HeaderElement;ZLorg/apache/http/message/HeaderValueFormatter;)Ljava/lang/String;"/> + <method name="formatHeaderElement(Lorg/apache/http/HeaderElement;ZLorg/apache/http/message/HeaderValueFormatter;)Ljava/lang/String;"/> + <method name="formatNameValuePair(Lorg/apache/http/NameValuePair;ZLorg/apache/http/message/HeaderValueFormatter;)Ljava/lang/String;"/> + <method name="formatParameters([Lorg/apache/http/NameValuePair;ZLorg/apache/http/message/HeaderValueFormatter;)Ljava/lang/String;"/> + <method name="isSeparator(C)Z"/> + <method name="isUnsafe(C)Z"/> + <field name="DEFAULT"/> + <field name="SEPARATORS"/> + <field name="UNSAFE_CHARS"/> + </class> + <class name="org/apache/http/message/BasicHeaderValueParser" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/message/HeaderValueParser"/> + <method name="<init>()V"/> + <method name="createHeaderElement(Ljava/lang/String;Ljava/lang/String;[Lorg/apache/http/NameValuePair;)Lorg/apache/http/HeaderElement;"/> + <method name="createNameValuePair(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/http/NameValuePair;"/> + <method name="parseElements(Ljava/lang/String;Lorg/apache/http/message/HeaderValueParser;)[Lorg/apache/http/HeaderElement;"/> + <method name="parseHeaderElement(Ljava/lang/String;Lorg/apache/http/message/HeaderValueParser;)Lorg/apache/http/HeaderElement;"/> + <method name="parseNameValuePair(Ljava/lang/String;Lorg/apache/http/message/HeaderValueParser;)Lorg/apache/http/NameValuePair;"/> + <method name="parseNameValuePair(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;[C)Lorg/apache/http/NameValuePair;"/> + <method name="parseParameters(Ljava/lang/String;Lorg/apache/http/message/HeaderValueParser;)[Lorg/apache/http/NameValuePair;"/> + <field name="DEFAULT"/> + </class> + <class name="org/apache/http/message/BasicHttpEntityEnclosingRequest" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/message/BasicHttpRequest"/> + <implements name="org/apache/http/HttpEntityEnclosingRequest"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Lorg/apache/http/ProtocolVersion;)V"/> + <method name="<init>(Lorg/apache/http/RequestLine;)V"/> + </class> + <class name="org/apache/http/message/BasicHttpRequest" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/message/AbstractHttpMessage"/> + <implements name="org/apache/http/HttpRequest"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Lorg/apache/http/ProtocolVersion;)V"/> + <method name="<init>(Lorg/apache/http/RequestLine;)V"/> + </class> + <class name="org/apache/http/message/BasicHttpResponse" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/message/AbstractHttpMessage"/> + <implements name="org/apache/http/HttpResponse"/> + <method name="<init>(Lorg/apache/http/ProtocolVersion;ILjava/lang/String;)V"/> + <method name="<init>(Lorg/apache/http/StatusLine;)V"/> + <method name="<init>(Lorg/apache/http/StatusLine;Lorg/apache/http/ReasonPhraseCatalog;Ljava/util/Locale;)V"/> + <method name="getReason(I)Ljava/lang/String;"/> + </class> + <class name="org/apache/http/message/BasicLineFormatter" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/message/LineFormatter"/> + <method name="<init>()V"/> + <method name="doFormatHeader(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/Header;)V"/> + <method name="doFormatRequestLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/RequestLine;)V"/> + <method name="doFormatStatusLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/StatusLine;)V"/> + <method name="estimateProtocolVersionLen(Lorg/apache/http/ProtocolVersion;)I"/> + <method name="formatHeader(Lorg/apache/http/Header;Lorg/apache/http/message/LineFormatter;)Ljava/lang/String;"/> + <method name="formatProtocolVersion(Lorg/apache/http/ProtocolVersion;Lorg/apache/http/message/LineFormatter;)Ljava/lang/String;"/> + <method name="formatRequestLine(Lorg/apache/http/RequestLine;Lorg/apache/http/message/LineFormatter;)Ljava/lang/String;"/> + <method name="formatStatusLine(Lorg/apache/http/StatusLine;Lorg/apache/http/message/LineFormatter;)Ljava/lang/String;"/> + <method name="initBuffer(Lorg/apache/http/util/CharArrayBuffer;)Lorg/apache/http/util/CharArrayBuffer;"/> + <field name="DEFAULT"/> + </class> + <class name="org/apache/http/message/BasicLineParser" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/message/LineParser"/> + <method name="<init>()V"/> + <method name="<init>(Lorg/apache/http/ProtocolVersion;)V"/> + <method name="createProtocolVersion(II)Lorg/apache/http/ProtocolVersion;"/> + <method name="createRequestLine(Ljava/lang/String;Ljava/lang/String;Lorg/apache/http/ProtocolVersion;)Lorg/apache/http/RequestLine;"/> + <method name="createStatusLine(Lorg/apache/http/ProtocolVersion;ILjava/lang/String;)Lorg/apache/http/StatusLine;"/> + <method name="parseHeader(Ljava/lang/String;Lorg/apache/http/message/LineParser;)Lorg/apache/http/Header;"/> + <method name="parseProtocolVersion(Ljava/lang/String;Lorg/apache/http/message/LineParser;)Lorg/apache/http/ProtocolVersion;"/> + <method name="parseRequestLine(Ljava/lang/String;Lorg/apache/http/message/LineParser;)Lorg/apache/http/RequestLine;"/> + <method name="parseStatusLine(Ljava/lang/String;Lorg/apache/http/message/LineParser;)Lorg/apache/http/StatusLine;"/> + <method name="skipWhitespace(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)V"/> + <field name="DEFAULT"/> + <field name="protocol"/> + </class> + <class name="org/apache/http/message/BasicListHeaderIterator" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HeaderIterator"/> + <method name="<init>(Ljava/util/List;Ljava/lang/String;)V"/> + <method name="filterHeader(I)Z"/> + <method name="findNext(I)I"/> + <field name="allHeaders"/> + <field name="currentIndex"/> + <field name="headerName"/> + <field name="lastIndex"/> + </class> + <class name="org/apache/http/message/BasicNameValuePair" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <implements name="org/apache/http/NameValuePair"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="org/apache/http/message/BasicRequestLine" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <implements name="org/apache/http/RequestLine"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Lorg/apache/http/ProtocolVersion;)V"/> + </class> + <class name="org/apache/http/message/BasicStatusLine" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <implements name="org/apache/http/StatusLine"/> + <method name="<init>(Lorg/apache/http/ProtocolVersion;ILjava/lang/String;)V"/> + </class> + <class name="org/apache/http/message/BasicTokenIterator" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/TokenIterator"/> + <method name="<init>(Lorg/apache/http/HeaderIterator;)V"/> + <method name="createToken(Ljava/lang/String;II)Ljava/lang/String;"/> + <method name="findNext(I)I"/> + <method name="findTokenEnd(I)I"/> + <method name="findTokenSeparator(I)I"/> + <method name="findTokenStart(I)I"/> + <method name="isHttpSeparator(C)Z"/> + <method name="isTokenChar(C)Z"/> + <method name="isTokenSeparator(C)Z"/> + <method name="isWhitespace(C)Z"/> + <field name="HTTP_SEPARATORS"/> + <field name="currentHeader"/> + <field name="currentToken"/> + <field name="headerIt"/> + <field name="searchPos"/> + </class> + <class name="org/apache/http/message/BufferedHeader" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <implements name="org/apache/http/FormattedHeader"/> + <method name="<init>(Lorg/apache/http/util/CharArrayBuffer;)V"/> + </class> + <class name="org/apache/http/message/HeaderGroup" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="addHeader(Lorg/apache/http/Header;)V"/> + <method name="clear()V"/> + <method name="containsHeader(Ljava/lang/String;)Z"/> + <method name="copy()Lorg/apache/http/message/HeaderGroup;"/> + <method name="getAllHeaders()[Lorg/apache/http/Header;"/> + <method name="getCondensedHeader(Ljava/lang/String;)Lorg/apache/http/Header;"/> + <method name="getFirstHeader(Ljava/lang/String;)Lorg/apache/http/Header;"/> + <method name="getHeaders(Ljava/lang/String;)[Lorg/apache/http/Header;"/> + <method name="getLastHeader(Ljava/lang/String;)Lorg/apache/http/Header;"/> + <method name="iterator()Lorg/apache/http/HeaderIterator;"/> + <method name="iterator(Ljava/lang/String;)Lorg/apache/http/HeaderIterator;"/> + <method name="removeHeader(Lorg/apache/http/Header;)V"/> + <method name="setHeaders([Lorg/apache/http/Header;)V"/> + <method name="updateHeader(Lorg/apache/http/Header;)V"/> + </class> + <class name="org/apache/http/message/HeaderValueFormatter" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="formatElements(Lorg/apache/http/util/CharArrayBuffer;[Lorg/apache/http/HeaderElement;Z)Lorg/apache/http/util/CharArrayBuffer;"/> + <method name="formatHeaderElement(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/HeaderElement;Z)Lorg/apache/http/util/CharArrayBuffer;"/> + <method name="formatNameValuePair(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/NameValuePair;Z)Lorg/apache/http/util/CharArrayBuffer;"/> + <method name="formatParameters(Lorg/apache/http/util/CharArrayBuffer;[Lorg/apache/http/NameValuePair;Z)Lorg/apache/http/util/CharArrayBuffer;"/> + </class> + <class name="org/apache/http/message/HeaderValueParser" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="parseElements(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)[Lorg/apache/http/HeaderElement;"/> + <method name="parseHeaderElement(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/HeaderElement;"/> + <method name="parseNameValuePair(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/NameValuePair;"/> + <method name="parseParameters(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)[Lorg/apache/http/NameValuePair;"/> + </class> + <class name="org/apache/http/message/LineFormatter" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="appendProtocolVersion(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/ProtocolVersion;)Lorg/apache/http/util/CharArrayBuffer;"/> + <method name="formatHeader(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/Header;)Lorg/apache/http/util/CharArrayBuffer;"/> + <method name="formatRequestLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/RequestLine;)Lorg/apache/http/util/CharArrayBuffer;"/> + <method name="formatStatusLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/StatusLine;)Lorg/apache/http/util/CharArrayBuffer;"/> + </class> + <class name="org/apache/http/message/LineParser" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="hasProtocolVersion(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Z"/> + <method name="parseHeader(Lorg/apache/http/util/CharArrayBuffer;)Lorg/apache/http/Header;"/> + <method name="parseProtocolVersion(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/ProtocolVersion;"/> + <method name="parseRequestLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/RequestLine;"/> + <method name="parseStatusLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/StatusLine;"/> + </class> + <class name="org/apache/http/message/ParserCursor" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>(II)V"/> + <method name="atEnd()Z"/> + <method name="getLowerBound()I"/> + <method name="getPos()I"/> + <method name="getUpperBound()I"/> + <method name="updatePos(I)V"/> + </class> + <class name="org/apache/http/params/AbstractHttpParams" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/params/HttpParams"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/params/BasicHttpParams" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/params/AbstractHttpParams"/> + <implements name="java/io/Serializable"/> + <implements name="java/lang/Cloneable"/> + <method name="<init>()V"/> + <method name="clear()V"/> + <method name="copyParams(Lorg/apache/http/params/HttpParams;)V"/> + <method name="isParameterSet(Ljava/lang/String;)Z"/> + <method name="isParameterSetLocally(Ljava/lang/String;)Z"/> + <method name="setParameters([Ljava/lang/String;Ljava/lang/Object;)V"/> + </class> + <class name="org/apache/http/params/CoreConnectionPNames" since="1" deprecated="22"> + <extends name="java/lang/Object"/> + <field name="CONNECTION_TIMEOUT"/> + <field name="MAX_HEADER_COUNT"/> + <field name="MAX_LINE_LENGTH"/> + <field name="SOCKET_BUFFER_SIZE"/> + <field name="SO_LINGER"/> + <field name="SO_TIMEOUT"/> + <field name="STALE_CONNECTION_CHECK"/> + <field name="TCP_NODELAY"/> + </class> + <class name="org/apache/http/params/CoreProtocolPNames" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <field name="HTTP_CONTENT_CHARSET"/> + <field name="HTTP_ELEMENT_CHARSET"/> + <field name="ORIGIN_SERVER"/> + <field name="PROTOCOL_VERSION"/> + <field name="STRICT_TRANSFER_ENCODING"/> + <field name="USER_AGENT"/> + <field name="USE_EXPECT_CONTINUE"/> + <field name="WAIT_FOR_CONTINUE"/> + </class> + <class name="org/apache/http/params/DefaultedHttpParams" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/params/AbstractHttpParams"/> + <method name="<init>(Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;)V"/> + <method name="getDefaults()Lorg/apache/http/params/HttpParams;"/> + </class> + <class name="org/apache/http/params/HttpAbstractParamBean" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>(Lorg/apache/http/params/HttpParams;)V"/> + <field name="params"/> + </class> + <class name="org/apache/http/params/HttpConnectionParamBean" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/params/HttpAbstractParamBean"/> + <method name="<init>(Lorg/apache/http/params/HttpParams;)V"/> + <method name="setConnectionTimeout(I)V"/> + <method name="setLinger(I)V"/> + <method name="setSoTimeout(I)V"/> + <method name="setSocketBufferSize(I)V"/> + <method name="setStaleCheckingEnabled(Z)V"/> + <method name="setTcpNoDelay(Z)V"/> + </class> + <class name="org/apache/http/params/HttpConnectionParams" since="1" deprecated="22"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/params/CoreConnectionPNames"/> + <method name="<init>()V"/> + <method name="getConnectionTimeout(Lorg/apache/http/params/HttpParams;)I"/> + <method name="getLinger(Lorg/apache/http/params/HttpParams;)I"/> + <method name="getSoTimeout(Lorg/apache/http/params/HttpParams;)I"/> + <method name="getSocketBufferSize(Lorg/apache/http/params/HttpParams;)I"/> + <method name="getTcpNoDelay(Lorg/apache/http/params/HttpParams;)Z"/> + <method name="isStaleCheckingEnabled(Lorg/apache/http/params/HttpParams;)Z"/> + <method name="setConnectionTimeout(Lorg/apache/http/params/HttpParams;I)V"/> + <method name="setLinger(Lorg/apache/http/params/HttpParams;I)V"/> + <method name="setSoTimeout(Lorg/apache/http/params/HttpParams;I)V"/> + <method name="setSocketBufferSize(Lorg/apache/http/params/HttpParams;I)V"/> + <method name="setStaleCheckingEnabled(Lorg/apache/http/params/HttpParams;Z)V"/> + <method name="setTcpNoDelay(Lorg/apache/http/params/HttpParams;Z)V"/> + </class> + <class name="org/apache/http/params/HttpParams" since="1" deprecated="22"> + <extends name="java/lang/Object"/> + <method name="copy()Lorg/apache/http/params/HttpParams;"/> + <method name="getBooleanParameter(Ljava/lang/String;Z)Z"/> + <method name="getDoubleParameter(Ljava/lang/String;D)D"/> + <method name="getIntParameter(Ljava/lang/String;I)I"/> + <method name="getLongParameter(Ljava/lang/String;J)J"/> + <method name="getParameter(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="isParameterFalse(Ljava/lang/String;)Z"/> + <method name="isParameterTrue(Ljava/lang/String;)Z"/> + <method name="removeParameter(Ljava/lang/String;)Z"/> + <method name="setBooleanParameter(Ljava/lang/String;Z)Lorg/apache/http/params/HttpParams;"/> + <method name="setDoubleParameter(Ljava/lang/String;D)Lorg/apache/http/params/HttpParams;"/> + <method name="setIntParameter(Ljava/lang/String;I)Lorg/apache/http/params/HttpParams;"/> + <method name="setLongParameter(Ljava/lang/String;J)Lorg/apache/http/params/HttpParams;"/> + <method name="setParameter(Ljava/lang/String;Ljava/lang/Object;)Lorg/apache/http/params/HttpParams;"/> + </class> + <class name="org/apache/http/params/HttpProtocolParamBean" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/params/HttpAbstractParamBean"/> + <method name="<init>(Lorg/apache/http/params/HttpParams;)V"/> + <method name="setContentCharset(Ljava/lang/String;)V"/> + <method name="setHttpElementCharset(Ljava/lang/String;)V"/> + <method name="setUseExpectContinue(Z)V"/> + <method name="setUserAgent(Ljava/lang/String;)V"/> + <method name="setVersion(Lorg/apache/http/HttpVersion;)V"/> + </class> + <class name="org/apache/http/params/HttpProtocolParams" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/params/CoreProtocolPNames"/> + <method name="<init>()V"/> + <method name="getContentCharset(Lorg/apache/http/params/HttpParams;)Ljava/lang/String;"/> + <method name="getHttpElementCharset(Lorg/apache/http/params/HttpParams;)Ljava/lang/String;"/> + <method name="getUserAgent(Lorg/apache/http/params/HttpParams;)Ljava/lang/String;"/> + <method name="getVersion(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/ProtocolVersion;"/> + <method name="setContentCharset(Lorg/apache/http/params/HttpParams;Ljava/lang/String;)V"/> + <method name="setHttpElementCharset(Lorg/apache/http/params/HttpParams;Ljava/lang/String;)V"/> + <method name="setUseExpectContinue(Lorg/apache/http/params/HttpParams;Z)V"/> + <method name="setUserAgent(Lorg/apache/http/params/HttpParams;Ljava/lang/String;)V"/> + <method name="setVersion(Lorg/apache/http/params/HttpParams;Lorg/apache/http/ProtocolVersion;)V"/> + <method name="useExpectContinue(Lorg/apache/http/params/HttpParams;)Z"/> + </class> + <class name="org/apache/http/protocol/BasicHttpContext" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/protocol/HttpContext"/> + <method name="<init>()V"/> + <method name="<init>(Lorg/apache/http/protocol/HttpContext;)V"/> + </class> + <class name="org/apache/http/protocol/BasicHttpProcessor" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="java/lang/Cloneable"/> + <implements name="org/apache/http/protocol/HttpProcessor"/> + <implements name="org/apache/http/protocol/HttpRequestInterceptorList"/> + <implements name="org/apache/http/protocol/HttpResponseInterceptorList"/> + <method name="<init>()V"/> + <method name="addInterceptor(Lorg/apache/http/HttpRequestInterceptor;)V"/> + <method name="addInterceptor(Lorg/apache/http/HttpRequestInterceptor;I)V"/> + <method name="addInterceptor(Lorg/apache/http/HttpResponseInterceptor;)V"/> + <method name="addInterceptor(Lorg/apache/http/HttpResponseInterceptor;I)V"/> + <method name="clearInterceptors()V"/> + <method name="copy()Lorg/apache/http/protocol/BasicHttpProcessor;"/> + <method name="copyInterceptors(Lorg/apache/http/protocol/BasicHttpProcessor;)V"/> + <field name="requestInterceptors"/> + <field name="responseInterceptors"/> + </class> + <class name="org/apache/http/protocol/DefaultedHttpContext" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/protocol/HttpContext"/> + <method name="<init>(Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/protocol/HttpContext;)V"/> + <method name="getDefaults()Lorg/apache/http/protocol/HttpContext;"/> + </class> + <class name="org/apache/http/protocol/ExecutionContext" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <field name="HTTP_CONNECTION"/> + <field name="HTTP_PROXY_HOST"/> + <field name="HTTP_REQUEST"/> + <field name="HTTP_REQ_SENT"/> + <field name="HTTP_RESPONSE"/> + <field name="HTTP_TARGET_HOST"/> + </class> + <class name="org/apache/http/protocol/HTTP" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="isWhitespace(C)Z"/> + <field name="ASCII"/> + <field name="CHARSET_PARAM"/> + <field name="CHUNK_CODING"/> + <field name="CONN_CLOSE"/> + <field name="CONN_DIRECTIVE"/> + <field name="CONN_KEEP_ALIVE"/> + <field name="CONTENT_ENCODING"/> + <field name="CONTENT_LEN"/> + <field name="CONTENT_TYPE"/> + <field name="CR"/> + <field name="DATE_HEADER"/> + <field name="DEFAULT_CONTENT_CHARSET"/> + <field name="DEFAULT_CONTENT_TYPE"/> + <field name="DEFAULT_PROTOCOL_CHARSET"/> + <field name="EXPECT_CONTINUE"/> + <field name="EXPECT_DIRECTIVE"/> + <field name="HT"/> + <field name="IDENTITY_CODING"/> + <field name="ISO_8859_1"/> + <field name="LF"/> + <field name="OCTET_STREAM_TYPE"/> + <field name="PLAIN_TEXT_TYPE"/> + <field name="SERVER_HEADER"/> + <field name="SP"/> + <field name="TARGET_HOST"/> + <field name="TRANSFER_ENCODING"/> + <field name="USER_AGENT"/> + <field name="US_ASCII"/> + <field name="UTF_16"/> + <field name="UTF_8"/> + </class> + <class name="org/apache/http/protocol/HttpContext" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="getAttribute(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="removeAttribute(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="setAttribute(Ljava/lang/String;Ljava/lang/Object;)V"/> + <field name="RESERVED_PREFIX"/> + </class> + <class name="org/apache/http/protocol/HttpDateGenerator" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getCurrentDate()Ljava/lang/String;"/> + <field name="GMT"/> + <field name="PATTERN_RFC1123"/> + </class> + <class name="org/apache/http/protocol/HttpExpectationVerifier" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="verify(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V"/> + </class> + <class name="org/apache/http/protocol/HttpProcessor" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpRequestInterceptor"/> + <implements name="org/apache/http/HttpResponseInterceptor"/> + </class> + <class name="org/apache/http/protocol/HttpRequestExecutor" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="canResponseHaveBody(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpResponse;)Z"/> + <method name="doReceiveResponse(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpClientConnection;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;"/> + <method name="doSendRequest(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpClientConnection;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;"/> + <method name="execute(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpClientConnection;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;"/> + <method name="postProcess(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpProcessor;Lorg/apache/http/protocol/HttpContext;)V"/> + <method name="preProcess(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpProcessor;Lorg/apache/http/protocol/HttpContext;)V"/> + </class> + <class name="org/apache/http/protocol/HttpRequestHandler" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="handle(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V"/> + </class> + <class name="org/apache/http/protocol/HttpRequestHandlerRegistry" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/protocol/HttpRequestHandlerResolver"/> + <method name="<init>()V"/> + <method name="matchUriRequestPattern(Ljava/lang/String;Ljava/lang/String;)Z" deprecated="16"/> + <method name="register(Ljava/lang/String;Lorg/apache/http/protocol/HttpRequestHandler;)V"/> + <method name="setHandlers(Ljava/util/Map;)V"/> + <method name="unregister(Ljava/lang/String;)V"/> + </class> + <class name="org/apache/http/protocol/HttpRequestHandlerResolver" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="lookup(Ljava/lang/String;)Lorg/apache/http/protocol/HttpRequestHandler;"/> + </class> + <class name="org/apache/http/protocol/HttpRequestInterceptorList" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="addRequestInterceptor(Lorg/apache/http/HttpRequestInterceptor;)V"/> + <method name="addRequestInterceptor(Lorg/apache/http/HttpRequestInterceptor;I)V"/> + <method name="clearRequestInterceptors()V"/> + <method name="getRequestInterceptor(I)Lorg/apache/http/HttpRequestInterceptor;"/> + <method name="getRequestInterceptorCount()I"/> + <method name="removeRequestInterceptorByClass(Ljava/lang/Class;)V"/> + <method name="setInterceptors(Ljava/util/List;)V"/> + </class> + <class name="org/apache/http/protocol/HttpResponseInterceptorList" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="addResponseInterceptor(Lorg/apache/http/HttpResponseInterceptor;)V"/> + <method name="addResponseInterceptor(Lorg/apache/http/HttpResponseInterceptor;I)V"/> + <method name="clearResponseInterceptors()V"/> + <method name="getResponseInterceptor(I)Lorg/apache/http/HttpResponseInterceptor;"/> + <method name="getResponseInterceptorCount()I"/> + <method name="removeResponseInterceptorByClass(Ljava/lang/Class;)V"/> + <method name="setInterceptors(Ljava/util/List;)V"/> + </class> + <class name="org/apache/http/protocol/HttpService" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>(Lorg/apache/http/protocol/HttpProcessor;Lorg/apache/http/ConnectionReuseStrategy;Lorg/apache/http/HttpResponseFactory;)V"/> + <method name="doService(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V"/> + <method name="getParams()Lorg/apache/http/params/HttpParams;"/> + <method name="handleException(Lorg/apache/http/HttpException;Lorg/apache/http/HttpResponse;)V"/> + <method name="handleRequest(Lorg/apache/http/HttpServerConnection;Lorg/apache/http/protocol/HttpContext;)V"/> + <method name="setConnReuseStrategy(Lorg/apache/http/ConnectionReuseStrategy;)V"/> + <method name="setExpectationVerifier(Lorg/apache/http/protocol/HttpExpectationVerifier;)V"/> + <method name="setHandlerResolver(Lorg/apache/http/protocol/HttpRequestHandlerResolver;)V"/> + <method name="setHttpProcessor(Lorg/apache/http/protocol/HttpProcessor;)V"/> + <method name="setParams(Lorg/apache/http/params/HttpParams;)V"/> + <method name="setResponseFactory(Lorg/apache/http/HttpResponseFactory;)V"/> + </class> + <class name="org/apache/http/protocol/RequestConnControl" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpRequestInterceptor"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/protocol/RequestContent" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpRequestInterceptor"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/protocol/RequestDate" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpRequestInterceptor"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/protocol/RequestExpectContinue" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpRequestInterceptor"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/protocol/RequestTargetHost" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpRequestInterceptor"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/protocol/RequestUserAgent" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpRequestInterceptor"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/protocol/ResponseConnControl" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpResponseInterceptor"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/protocol/ResponseContent" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpResponseInterceptor"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/protocol/ResponseDate" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpResponseInterceptor"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/protocol/ResponseServer" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <implements name="org/apache/http/HttpResponseInterceptor"/> + <method name="<init>()V"/> + </class> + <class name="org/apache/http/protocol/SyncBasicHttpContext" since="1" deprecated="22" removed="23"> + <extends name="org/apache/http/protocol/BasicHttpContext"/> + <method name="<init>(Lorg/apache/http/protocol/HttpContext;)V"/> + </class> + <class name="org/apache/http/protocol/UriPatternMatcher" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="lookup(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="matchUriRequestPattern(Ljava/lang/String;Ljava/lang/String;)Z"/> + <method name="register(Ljava/lang/String;Ljava/lang/Object;)V"/> + <method name="setHandlers(Ljava/util/Map;)V"/> + <method name="unregister(Ljava/lang/String;)V"/> + </class> + <class name="org/apache/http/util/ByteArrayBuffer" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>(I)V"/> + <method name="append(I)V"/> + <method name="append(Lorg/apache/http/util/CharArrayBuffer;II)V"/> + <method name="append([BII)V"/> + <method name="append([CII)V"/> + <method name="buffer()[B"/> + <method name="byteAt(I)I"/> + <method name="capacity()I"/> + <method name="clear()V"/> + <method name="isEmpty()Z"/> + <method name="isFull()Z"/> + <method name="length()I"/> + <method name="setLength(I)V"/> + <method name="toByteArray()[B"/> + </class> + <class name="org/apache/http/util/CharArrayBuffer" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>(I)V"/> + <method name="append(C)V"/> + <method name="append(Ljava/lang/Object;)V"/> + <method name="append(Ljava/lang/String;)V"/> + <method name="append(Lorg/apache/http/util/ByteArrayBuffer;II)V"/> + <method name="append(Lorg/apache/http/util/CharArrayBuffer;)V"/> + <method name="append(Lorg/apache/http/util/CharArrayBuffer;II)V"/> + <method name="append([BII)V"/> + <method name="append([CII)V"/> + <method name="buffer()[C"/> + <method name="capacity()I"/> + <method name="charAt(I)C"/> + <method name="clear()V"/> + <method name="ensureCapacity(I)V"/> + <method name="indexOf(I)I"/> + <method name="indexOf(III)I"/> + <method name="isEmpty()Z"/> + <method name="isFull()Z"/> + <method name="length()I"/> + <method name="setLength(I)V"/> + <method name="substring(II)Ljava/lang/String;"/> + <method name="substringTrimmed(II)Ljava/lang/String;"/> + <method name="toCharArray()[C"/> + </class> + <class name="org/apache/http/util/EncodingUtils" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getAsciiBytes(Ljava/lang/String;)[B"/> + <method name="getAsciiString([B)Ljava/lang/String;"/> + <method name="getAsciiString([BII)Ljava/lang/String;"/> + <method name="getBytes(Ljava/lang/String;Ljava/lang/String;)[B"/> + <method name="getString([BIILjava/lang/String;)Ljava/lang/String;"/> + <method name="getString([BLjava/lang/String;)Ljava/lang/String;"/> + </class> + <class name="org/apache/http/util/EntityUtils" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getContentCharSet(Lorg/apache/http/HttpEntity;)Ljava/lang/String;"/> + <method name="toByteArray(Lorg/apache/http/HttpEntity;)[B"/> + <method name="toString(Lorg/apache/http/HttpEntity;)Ljava/lang/String;"/> + <method name="toString(Lorg/apache/http/HttpEntity;Ljava/lang/String;)Ljava/lang/String;"/> + </class> + <class name="org/apache/http/util/ExceptionUtils" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="initCause(Ljava/lang/Throwable;Ljava/lang/Throwable;)V"/> + </class> + <class name="org/apache/http/util/LangUtils" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="equals(Ljava/lang/Object;Ljava/lang/Object;)Z"/> + <method name="equals([Ljava/lang/Object;[Ljava/lang/Object;)Z"/> + <method name="hashCode(II)I"/> + <method name="hashCode(ILjava/lang/Object;)I"/> + <method name="hashCode(IZ)I"/> + <field name="HASH_OFFSET"/> + <field name="HASH_SEED"/> + </class> + <class name="org/apache/http/util/VersionInfo" since="1" deprecated="22" removed="23"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="fromMap(Ljava/lang/String;Ljava/util/Map;Ljava/lang/ClassLoader;)Lorg/apache/http/util/VersionInfo;"/> + <method name="getClassloader()Ljava/lang/String;"/> + <method name="getModule()Ljava/lang/String;"/> + <method name="getPackage()Ljava/lang/String;"/> + <method name="getRelease()Ljava/lang/String;"/> + <method name="getTimestamp()Ljava/lang/String;"/> + <method name="loadVersionInfo(Ljava/lang/String;Ljava/lang/ClassLoader;)Lorg/apache/http/util/VersionInfo;"/> + <method name="loadVersionInfo([Ljava/lang/String;Ljava/lang/ClassLoader;)[Lorg/apache/http/util/VersionInfo;"/> + <field name="PROPERTY_MODULE"/> + <field name="PROPERTY_RELEASE"/> + <field name="PROPERTY_TIMESTAMP"/> + <field name="UNAVAILABLE"/> + <field name="VERSION_PROPERTY_FILE"/> + </class> + <class name="org/json/JSONArray" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/Object;)V" since="19"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/util/Collection;)V"/> + <method name="<init>(Lorg/json/JSONTokener;)V"/> + <method name="get(I)Ljava/lang/Object;"/> + <method name="getBoolean(I)Z"/> + <method name="getDouble(I)D"/> + <method name="getInt(I)I"/> + <method name="getJSONArray(I)Lorg/json/JSONArray;"/> + <method name="getJSONObject(I)Lorg/json/JSONObject;"/> + <method name="getLong(I)J"/> + <method name="getString(I)Ljava/lang/String;"/> + <method name="isNull(I)Z"/> + <method name="join(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="length()I"/> + <method name="opt(I)Ljava/lang/Object;"/> + <method name="optBoolean(I)Z"/> + <method name="optBoolean(IZ)Z"/> + <method name="optDouble(I)D"/> + <method name="optDouble(ID)D"/> + <method name="optInt(I)I"/> + <method name="optInt(II)I"/> + <method name="optJSONArray(I)Lorg/json/JSONArray;"/> + <method name="optJSONObject(I)Lorg/json/JSONObject;"/> + <method name="optLong(I)J"/> + <method name="optLong(IJ)J"/> + <method name="optString(I)Ljava/lang/String;"/> + <method name="optString(ILjava/lang/String;)Ljava/lang/String;"/> + <method name="put(D)Lorg/json/JSONArray;"/> + <method name="put(I)Lorg/json/JSONArray;"/> + <method name="put(ID)Lorg/json/JSONArray;"/> + <method name="put(II)Lorg/json/JSONArray;"/> + <method name="put(IJ)Lorg/json/JSONArray;"/> + <method name="put(ILjava/lang/Object;)Lorg/json/JSONArray;"/> + <method name="put(IZ)Lorg/json/JSONArray;"/> + <method name="put(J)Lorg/json/JSONArray;"/> + <method name="put(Ljava/lang/Object;)Lorg/json/JSONArray;"/> + <method name="put(Z)Lorg/json/JSONArray;"/> + <method name="remove(I)Ljava/lang/Object;" since="19"/> + <method name="toJSONObject(Lorg/json/JSONArray;)Lorg/json/JSONObject;"/> + <method name="toString(I)Ljava/lang/String;"/> + </class> + <class name="org/json/JSONException" since="1"> + <extends name="java/lang/Exception"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="27"/> + <method name="<init>(Ljava/lang/Throwable;)V" since="27"/> + </class> + <class name="org/json/JSONObject" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/util/Map;)V"/> + <method name="<init>(Lorg/json/JSONObject;[Ljava/lang/String;)V"/> + <method name="<init>(Lorg/json/JSONTokener;)V"/> + <method name="accumulate(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;"/> + <method name="get(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="getBoolean(Ljava/lang/String;)Z"/> + <method name="getDouble(Ljava/lang/String;)D"/> + <method name="getInt(Ljava/lang/String;)I"/> + <method name="getJSONArray(Ljava/lang/String;)Lorg/json/JSONArray;"/> + <method name="getJSONObject(Ljava/lang/String;)Lorg/json/JSONObject;"/> + <method name="getLong(Ljava/lang/String;)J"/> + <method name="getString(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="has(Ljava/lang/String;)Z"/> + <method name="isNull(Ljava/lang/String;)Z"/> + <method name="keys()Ljava/util/Iterator;"/> + <method name="length()I"/> + <method name="names()Lorg/json/JSONArray;"/> + <method name="numberToString(Ljava/lang/Number;)Ljava/lang/String;"/> + <method name="opt(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="optBoolean(Ljava/lang/String;)Z"/> + <method name="optBoolean(Ljava/lang/String;Z)Z"/> + <method name="optDouble(Ljava/lang/String;)D"/> + <method name="optDouble(Ljava/lang/String;D)D"/> + <method name="optInt(Ljava/lang/String;)I"/> + <method name="optInt(Ljava/lang/String;I)I"/> + <method name="optJSONArray(Ljava/lang/String;)Lorg/json/JSONArray;"/> + <method name="optJSONObject(Ljava/lang/String;)Lorg/json/JSONObject;"/> + <method name="optLong(Ljava/lang/String;)J"/> + <method name="optLong(Ljava/lang/String;J)J"/> + <method name="optString(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="optString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="put(Ljava/lang/String;D)Lorg/json/JSONObject;"/> + <method name="put(Ljava/lang/String;I)Lorg/json/JSONObject;"/> + <method name="put(Ljava/lang/String;J)Lorg/json/JSONObject;"/> + <method name="put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;"/> + <method name="put(Ljava/lang/String;Z)Lorg/json/JSONObject;"/> + <method name="putOpt(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;"/> + <method name="quote(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="remove(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="toJSONArray(Lorg/json/JSONArray;)Lorg/json/JSONArray;"/> + <method name="toString(I)Ljava/lang/String;"/> + <method name="wrap(Ljava/lang/Object;)Ljava/lang/Object;" since="19"/> + <field name="NULL"/> + </class> + <class name="org/json/JSONStringer" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="array()Lorg/json/JSONStringer;"/> + <method name="endArray()Lorg/json/JSONStringer;"/> + <method name="endObject()Lorg/json/JSONStringer;"/> + <method name="key(Ljava/lang/String;)Lorg/json/JSONStringer;"/> + <method name="object()Lorg/json/JSONStringer;"/> + <method name="value(D)Lorg/json/JSONStringer;"/> + <method name="value(J)Lorg/json/JSONStringer;"/> + <method name="value(Ljava/lang/Object;)Lorg/json/JSONStringer;"/> + <method name="value(Z)Lorg/json/JSONStringer;"/> + </class> + <class name="org/json/JSONTokener" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="back()V"/> + <method name="dehexchar(C)I"/> + <method name="more()Z"/> + <method name="next()C"/> + <method name="next(C)C"/> + <method name="next(I)Ljava/lang/String;"/> + <method name="nextClean()C"/> + <method name="nextString(C)Ljava/lang/String;"/> + <method name="nextTo(C)Ljava/lang/String;"/> + <method name="nextTo(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="nextValue()Ljava/lang/Object;"/> + <method name="skipPast(Ljava/lang/String;)V"/> + <method name="skipTo(C)C"/> + <method name="syntaxError(Ljava/lang/String;)Lorg/json/JSONException;"/> + </class> + <class name="org/w3c/dom/Attr" since="1"> + <extends name="java/lang/Object"/> + <implements name="org/w3c/dom/Node"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getOwnerElement()Lorg/w3c/dom/Element;"/> + <method name="getSchemaTypeInfo()Lorg/w3c/dom/TypeInfo;" since="8"/> + <method name="getSpecified()Z"/> + <method name="getValue()Ljava/lang/String;"/> + <method name="isId()Z" since="8"/> + <method name="setValue(Ljava/lang/String;)V"/> + </class> + <class name="org/w3c/dom/CDATASection" since="1"> + <extends name="java/lang/Object"/> + <implements name="org/w3c/dom/Text"/> + </class> + <class name="org/w3c/dom/CharacterData" since="1"> + <extends name="java/lang/Object"/> + <implements name="org/w3c/dom/Node"/> + <method name="appendData(Ljava/lang/String;)V"/> + <method name="deleteData(II)V"/> + <method name="getData()Ljava/lang/String;"/> + <method name="getLength()I"/> + <method name="insertData(ILjava/lang/String;)V"/> + <method name="replaceData(IILjava/lang/String;)V"/> + <method name="setData(Ljava/lang/String;)V"/> + <method name="substringData(II)Ljava/lang/String;"/> + </class> + <class name="org/w3c/dom/Comment" since="1"> + <extends name="java/lang/Object"/> + <implements name="org/w3c/dom/CharacterData"/> + </class> + <class name="org/w3c/dom/DOMConfiguration" since="8"> + <extends name="java/lang/Object"/> + <method name="canSetParameter(Ljava/lang/String;Ljava/lang/Object;)Z"/> + <method name="getParameter(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="getParameterNames()Lorg/w3c/dom/DOMStringList;"/> + <method name="setParameter(Ljava/lang/String;Ljava/lang/Object;)V"/> + </class> + <class name="org/w3c/dom/DOMError" since="8"> + <extends name="java/lang/Object"/> + <method name="getLocation()Lorg/w3c/dom/DOMLocator;"/> + <method name="getMessage()Ljava/lang/String;"/> + <method name="getRelatedData()Ljava/lang/Object;"/> + <method name="getRelatedException()Ljava/lang/Object;"/> + <method name="getSeverity()S"/> + <method name="getType()Ljava/lang/String;"/> + <field name="SEVERITY_ERROR"/> + <field name="SEVERITY_FATAL_ERROR"/> + <field name="SEVERITY_WARNING"/> + </class> + <class name="org/w3c/dom/DOMErrorHandler" since="8"> + <extends name="java/lang/Object"/> + <method name="handleError(Lorg/w3c/dom/DOMError;)Z"/> + </class> + <class name="org/w3c/dom/DOMException" since="1"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>(SLjava/lang/String;)V"/> + <field name="DOMSTRING_SIZE_ERR"/> + <field name="HIERARCHY_REQUEST_ERR"/> + <field name="INDEX_SIZE_ERR"/> + <field name="INUSE_ATTRIBUTE_ERR"/> + <field name="INVALID_ACCESS_ERR"/> + <field name="INVALID_CHARACTER_ERR"/> + <field name="INVALID_MODIFICATION_ERR"/> + <field name="INVALID_STATE_ERR"/> + <field name="NAMESPACE_ERR"/> + <field name="NOT_FOUND_ERR"/> + <field name="NOT_SUPPORTED_ERR"/> + <field name="NO_DATA_ALLOWED_ERR"/> + <field name="NO_MODIFICATION_ALLOWED_ERR"/> + <field name="SYNTAX_ERR"/> + <field name="TYPE_MISMATCH_ERR" since="8"/> + <field name="VALIDATION_ERR" since="8"/> + <field name="WRONG_DOCUMENT_ERR"/> + <field name="code"/> + </class> + <class name="org/w3c/dom/DOMImplementation" since="1"> + <extends name="java/lang/Object"/> + <method name="createDocument(Ljava/lang/String;Ljava/lang/String;Lorg/w3c/dom/DocumentType;)Lorg/w3c/dom/Document;"/> + <method name="createDocumentType(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/DocumentType;"/> + <method name="getFeature(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;" since="8"/> + <method name="hasFeature(Ljava/lang/String;Ljava/lang/String;)Z"/> + </class> + <class name="org/w3c/dom/DOMImplementationList" since="8"> + <extends name="java/lang/Object"/> + <method name="getLength()I"/> + <method name="item(I)Lorg/w3c/dom/DOMImplementation;"/> + </class> + <class name="org/w3c/dom/DOMImplementationSource" since="8"> + <extends name="java/lang/Object"/> + <method name="getDOMImplementation(Ljava/lang/String;)Lorg/w3c/dom/DOMImplementation;"/> + <method name="getDOMImplementationList(Ljava/lang/String;)Lorg/w3c/dom/DOMImplementationList;"/> + </class> + <class name="org/w3c/dom/DOMLocator" since="8"> + <extends name="java/lang/Object"/> + <method name="getByteOffset()I"/> + <method name="getColumnNumber()I"/> + <method name="getLineNumber()I"/> + <method name="getRelatedNode()Lorg/w3c/dom/Node;"/> + <method name="getUri()Ljava/lang/String;"/> + <method name="getUtf16Offset()I"/> + </class> + <class name="org/w3c/dom/DOMStringList" since="8"> + <extends name="java/lang/Object"/> + <method name="contains(Ljava/lang/String;)Z"/> + <method name="getLength()I"/> + <method name="item(I)Ljava/lang/String;"/> + </class> + <class name="org/w3c/dom/Document" since="1"> + <extends name="java/lang/Object"/> + <implements name="org/w3c/dom/Node"/> + <method name="adoptNode(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;" since="8"/> + <method name="createAttribute(Ljava/lang/String;)Lorg/w3c/dom/Attr;"/> + <method name="createAttributeNS(Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/Attr;"/> + <method name="createCDATASection(Ljava/lang/String;)Lorg/w3c/dom/CDATASection;"/> + <method name="createComment(Ljava/lang/String;)Lorg/w3c/dom/Comment;"/> + <method name="createDocumentFragment()Lorg/w3c/dom/DocumentFragment;"/> + <method name="createElement(Ljava/lang/String;)Lorg/w3c/dom/Element;"/> + <method name="createElementNS(Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/Element;"/> + <method name="createEntityReference(Ljava/lang/String;)Lorg/w3c/dom/EntityReference;"/> + <method name="createProcessingInstruction(Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/ProcessingInstruction;"/> + <method name="createTextNode(Ljava/lang/String;)Lorg/w3c/dom/Text;"/> + <method name="getDoctype()Lorg/w3c/dom/DocumentType;"/> + <method name="getDocumentElement()Lorg/w3c/dom/Element;"/> + <method name="getDocumentURI()Ljava/lang/String;" since="8"/> + <method name="getDomConfig()Lorg/w3c/dom/DOMConfiguration;" since="8"/> + <method name="getElementById(Ljava/lang/String;)Lorg/w3c/dom/Element;"/> + <method name="getElementsByTagName(Ljava/lang/String;)Lorg/w3c/dom/NodeList;"/> + <method name="getElementsByTagNameNS(Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/NodeList;"/> + <method name="getImplementation()Lorg/w3c/dom/DOMImplementation;"/> + <method name="getInputEncoding()Ljava/lang/String;" since="8"/> + <method name="getStrictErrorChecking()Z" since="8"/> + <method name="getXmlEncoding()Ljava/lang/String;" since="8"/> + <method name="getXmlStandalone()Z" since="8"/> + <method name="getXmlVersion()Ljava/lang/String;" since="8"/> + <method name="importNode(Lorg/w3c/dom/Node;Z)Lorg/w3c/dom/Node;"/> + <method name="normalizeDocument()V" since="8"/> + <method name="renameNode(Lorg/w3c/dom/Node;Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/Node;" since="8"/> + <method name="setDocumentURI(Ljava/lang/String;)V" since="8"/> + <method name="setStrictErrorChecking(Z)V" since="8"/> + <method name="setXmlStandalone(Z)V" since="8"/> + <method name="setXmlVersion(Ljava/lang/String;)V" since="8"/> + </class> + <class name="org/w3c/dom/DocumentFragment" since="1"> + <extends name="java/lang/Object"/> + <implements name="org/w3c/dom/Node"/> + </class> + <class name="org/w3c/dom/DocumentType" since="1"> + <extends name="java/lang/Object"/> + <implements name="org/w3c/dom/Node"/> + <method name="getEntities()Lorg/w3c/dom/NamedNodeMap;"/> + <method name="getInternalSubset()Ljava/lang/String;"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getNotations()Lorg/w3c/dom/NamedNodeMap;"/> + <method name="getPublicId()Ljava/lang/String;"/> + <method name="getSystemId()Ljava/lang/String;"/> + </class> + <class name="org/w3c/dom/Element" since="1"> + <extends name="java/lang/Object"/> + <implements name="org/w3c/dom/Node"/> + <method name="getAttribute(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getAttributeNS(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getAttributeNode(Ljava/lang/String;)Lorg/w3c/dom/Attr;"/> + <method name="getAttributeNodeNS(Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/Attr;"/> + <method name="getElementsByTagName(Ljava/lang/String;)Lorg/w3c/dom/NodeList;"/> + <method name="getElementsByTagNameNS(Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/NodeList;"/> + <method name="getSchemaTypeInfo()Lorg/w3c/dom/TypeInfo;" since="8"/> + <method name="getTagName()Ljava/lang/String;"/> + <method name="hasAttribute(Ljava/lang/String;)Z"/> + <method name="hasAttributeNS(Ljava/lang/String;Ljava/lang/String;)Z"/> + <method name="removeAttribute(Ljava/lang/String;)V"/> + <method name="removeAttributeNS(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="removeAttributeNode(Lorg/w3c/dom/Attr;)Lorg/w3c/dom/Attr;"/> + <method name="setAttribute(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="setAttributeNS(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="setAttributeNode(Lorg/w3c/dom/Attr;)Lorg/w3c/dom/Attr;"/> + <method name="setAttributeNodeNS(Lorg/w3c/dom/Attr;)Lorg/w3c/dom/Attr;"/> + <method name="setIdAttribute(Ljava/lang/String;Z)V" since="8"/> + <method name="setIdAttributeNS(Ljava/lang/String;Ljava/lang/String;Z)V" since="8"/> + <method name="setIdAttributeNode(Lorg/w3c/dom/Attr;Z)V" since="8"/> + </class> + <class name="org/w3c/dom/Entity" since="1"> + <extends name="java/lang/Object"/> + <implements name="org/w3c/dom/Node"/> + <method name="getInputEncoding()Ljava/lang/String;" since="8"/> + <method name="getNotationName()Ljava/lang/String;"/> + <method name="getPublicId()Ljava/lang/String;"/> + <method name="getSystemId()Ljava/lang/String;"/> + <method name="getXmlEncoding()Ljava/lang/String;" since="8"/> + <method name="getXmlVersion()Ljava/lang/String;" since="8"/> + </class> + <class name="org/w3c/dom/EntityReference" since="1"> + <extends name="java/lang/Object"/> + <implements name="org/w3c/dom/Node"/> + </class> + <class name="org/w3c/dom/NameList" since="8"> + <extends name="java/lang/Object"/> + <method name="contains(Ljava/lang/String;)Z"/> + <method name="containsNS(Ljava/lang/String;Ljava/lang/String;)Z"/> + <method name="getLength()I"/> + <method name="getName(I)Ljava/lang/String;"/> + <method name="getNamespaceURI(I)Ljava/lang/String;"/> + </class> + <class name="org/w3c/dom/NamedNodeMap" since="1"> + <extends name="java/lang/Object"/> + <method name="getLength()I"/> + <method name="getNamedItem(Ljava/lang/String;)Lorg/w3c/dom/Node;"/> + <method name="getNamedItemNS(Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/Node;"/> + <method name="item(I)Lorg/w3c/dom/Node;"/> + <method name="removeNamedItem(Ljava/lang/String;)Lorg/w3c/dom/Node;"/> + <method name="removeNamedItemNS(Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/Node;"/> + <method name="setNamedItem(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;"/> + <method name="setNamedItemNS(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;"/> + </class> + <class name="org/w3c/dom/Node" since="1"> + <extends name="java/lang/Object"/> + <method name="appendChild(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;"/> + <method name="cloneNode(Z)Lorg/w3c/dom/Node;"/> + <method name="compareDocumentPosition(Lorg/w3c/dom/Node;)S" since="8"/> + <method name="getAttributes()Lorg/w3c/dom/NamedNodeMap;"/> + <method name="getBaseURI()Ljava/lang/String;" since="8"/> + <method name="getChildNodes()Lorg/w3c/dom/NodeList;"/> + <method name="getFeature(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;" since="8"/> + <method name="getFirstChild()Lorg/w3c/dom/Node;"/> + <method name="getLastChild()Lorg/w3c/dom/Node;"/> + <method name="getLocalName()Ljava/lang/String;"/> + <method name="getNamespaceURI()Ljava/lang/String;"/> + <method name="getNextSibling()Lorg/w3c/dom/Node;"/> + <method name="getNodeName()Ljava/lang/String;"/> + <method name="getNodeType()S"/> + <method name="getNodeValue()Ljava/lang/String;"/> + <method name="getOwnerDocument()Lorg/w3c/dom/Document;"/> + <method name="getParentNode()Lorg/w3c/dom/Node;"/> + <method name="getPrefix()Ljava/lang/String;"/> + <method name="getPreviousSibling()Lorg/w3c/dom/Node;"/> + <method name="getTextContent()Ljava/lang/String;" since="8"/> + <method name="getUserData(Ljava/lang/String;)Ljava/lang/Object;" since="8"/> + <method name="hasAttributes()Z"/> + <method name="hasChildNodes()Z"/> + <method name="insertBefore(Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;"/> + <method name="isDefaultNamespace(Ljava/lang/String;)Z" since="8"/> + <method name="isEqualNode(Lorg/w3c/dom/Node;)Z" since="8"/> + <method name="isSameNode(Lorg/w3c/dom/Node;)Z" since="8"/> + <method name="isSupported(Ljava/lang/String;Ljava/lang/String;)Z"/> + <method name="lookupNamespaceURI(Ljava/lang/String;)Ljava/lang/String;" since="8"/> + <method name="lookupPrefix(Ljava/lang/String;)Ljava/lang/String;" since="8"/> + <method name="normalize()V"/> + <method name="removeChild(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;"/> + <method name="replaceChild(Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;"/> + <method name="setNodeValue(Ljava/lang/String;)V"/> + <method name="setPrefix(Ljava/lang/String;)V"/> + <method name="setTextContent(Ljava/lang/String;)V" since="8"/> + <method name="setUserData(Ljava/lang/String;Ljava/lang/Object;Lorg/w3c/dom/UserDataHandler;)Ljava/lang/Object;" since="8"/> + <field name="ATTRIBUTE_NODE"/> + <field name="CDATA_SECTION_NODE"/> + <field name="COMMENT_NODE"/> + <field name="DOCUMENT_FRAGMENT_NODE"/> + <field name="DOCUMENT_NODE"/> + <field name="DOCUMENT_POSITION_CONTAINED_BY" since="8"/> + <field name="DOCUMENT_POSITION_CONTAINS" since="8"/> + <field name="DOCUMENT_POSITION_DISCONNECTED" since="8"/> + <field name="DOCUMENT_POSITION_FOLLOWING" since="8"/> + <field name="DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" since="8"/> + <field name="DOCUMENT_POSITION_PRECEDING" since="8"/> + <field name="DOCUMENT_TYPE_NODE"/> + <field name="ELEMENT_NODE"/> + <field name="ENTITY_NODE"/> + <field name="ENTITY_REFERENCE_NODE"/> + <field name="NOTATION_NODE"/> + <field name="PROCESSING_INSTRUCTION_NODE"/> + <field name="TEXT_NODE"/> + </class> + <class name="org/w3c/dom/NodeList" since="1"> + <extends name="java/lang/Object"/> + <method name="getLength()I"/> + <method name="item(I)Lorg/w3c/dom/Node;"/> + </class> + <class name="org/w3c/dom/Notation" since="1"> + <extends name="java/lang/Object"/> + <implements name="org/w3c/dom/Node"/> + <method name="getPublicId()Ljava/lang/String;"/> + <method name="getSystemId()Ljava/lang/String;"/> + </class> + <class name="org/w3c/dom/ProcessingInstruction" since="1"> + <extends name="java/lang/Object"/> + <implements name="org/w3c/dom/Node"/> + <method name="getData()Ljava/lang/String;"/> + <method name="getTarget()Ljava/lang/String;"/> + <method name="setData(Ljava/lang/String;)V"/> + </class> + <class name="org/w3c/dom/Text" since="1"> + <extends name="java/lang/Object"/> + <implements name="org/w3c/dom/CharacterData"/> + <method name="getWholeText()Ljava/lang/String;" since="8"/> + <method name="isElementContentWhitespace()Z" since="8"/> + <method name="replaceWholeText(Ljava/lang/String;)Lorg/w3c/dom/Text;" since="8"/> + <method name="splitText(I)Lorg/w3c/dom/Text;"/> + </class> + <class name="org/w3c/dom/TypeInfo" since="8"> + <extends name="java/lang/Object"/> + <method name="getTypeName()Ljava/lang/String;"/> + <method name="getTypeNamespace()Ljava/lang/String;"/> + <method name="isDerivedFrom(Ljava/lang/String;Ljava/lang/String;I)Z"/> + <field name="DERIVATION_EXTENSION"/> + <field name="DERIVATION_LIST"/> + <field name="DERIVATION_RESTRICTION"/> + <field name="DERIVATION_UNION"/> + </class> + <class name="org/w3c/dom/UserDataHandler" since="8"> + <extends name="java/lang/Object"/> + <method name="handle(SLjava/lang/String;Ljava/lang/Object;Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;)V"/> + <field name="NODE_ADOPTED"/> + <field name="NODE_CLONED"/> + <field name="NODE_DELETED"/> + <field name="NODE_IMPORTED"/> + <field name="NODE_RENAMED"/> + </class> + <class name="org/w3c/dom/ls/DOMImplementationLS" since="8"> + <extends name="java/lang/Object"/> + <method name="createLSInput()Lorg/w3c/dom/ls/LSInput;"/> + <method name="createLSOutput()Lorg/w3c/dom/ls/LSOutput;"/> + <method name="createLSParser(SLjava/lang/String;)Lorg/w3c/dom/ls/LSParser;"/> + <method name="createLSSerializer()Lorg/w3c/dom/ls/LSSerializer;"/> + <field name="MODE_ASYNCHRONOUS"/> + <field name="MODE_SYNCHRONOUS"/> + </class> + <class name="org/w3c/dom/ls/LSException" since="8"> + <extends name="java/lang/RuntimeException"/> + <method name="<init>(SLjava/lang/String;)V"/> + <field name="PARSE_ERR"/> + <field name="SERIALIZE_ERR"/> + <field name="code"/> + </class> + <class name="org/w3c/dom/ls/LSInput" since="8"> + <extends name="java/lang/Object"/> + <method name="getBaseURI()Ljava/lang/String;"/> + <method name="getByteStream()Ljava/io/InputStream;"/> + <method name="getCertifiedText()Z"/> + <method name="getCharacterStream()Ljava/io/Reader;"/> + <method name="getEncoding()Ljava/lang/String;"/> + <method name="getPublicId()Ljava/lang/String;"/> + <method name="getStringData()Ljava/lang/String;"/> + <method name="getSystemId()Ljava/lang/String;"/> + <method name="setBaseURI(Ljava/lang/String;)V"/> + <method name="setByteStream(Ljava/io/InputStream;)V"/> + <method name="setCertifiedText(Z)V"/> + <method name="setCharacterStream(Ljava/io/Reader;)V"/> + <method name="setEncoding(Ljava/lang/String;)V"/> + <method name="setPublicId(Ljava/lang/String;)V"/> + <method name="setStringData(Ljava/lang/String;)V"/> + <method name="setSystemId(Ljava/lang/String;)V"/> + </class> + <class name="org/w3c/dom/ls/LSOutput" since="8"> + <extends name="java/lang/Object"/> + <method name="getByteStream()Ljava/io/OutputStream;"/> + <method name="getCharacterStream()Ljava/io/Writer;"/> + <method name="getEncoding()Ljava/lang/String;"/> + <method name="getSystemId()Ljava/lang/String;"/> + <method name="setByteStream(Ljava/io/OutputStream;)V"/> + <method name="setCharacterStream(Ljava/io/Writer;)V"/> + <method name="setEncoding(Ljava/lang/String;)V"/> + <method name="setSystemId(Ljava/lang/String;)V"/> + </class> + <class name="org/w3c/dom/ls/LSParser" since="8"> + <extends name="java/lang/Object"/> + <method name="abort()V"/> + <method name="getAsync()Z"/> + <method name="getBusy()Z"/> + <method name="getDomConfig()Lorg/w3c/dom/DOMConfiguration;"/> + <method name="getFilter()Lorg/w3c/dom/ls/LSParserFilter;"/> + <method name="parse(Lorg/w3c/dom/ls/LSInput;)Lorg/w3c/dom/Document;"/> + <method name="parseURI(Ljava/lang/String;)Lorg/w3c/dom/Document;"/> + <method name="parseWithContext(Lorg/w3c/dom/ls/LSInput;Lorg/w3c/dom/Node;S)Lorg/w3c/dom/Node;"/> + <method name="setFilter(Lorg/w3c/dom/ls/LSParserFilter;)V"/> + <field name="ACTION_APPEND_AS_CHILDREN"/> + <field name="ACTION_INSERT_AFTER"/> + <field name="ACTION_INSERT_BEFORE"/> + <field name="ACTION_REPLACE"/> + <field name="ACTION_REPLACE_CHILDREN"/> + </class> + <class name="org/w3c/dom/ls/LSParserFilter" since="8"> + <extends name="java/lang/Object"/> + <method name="acceptNode(Lorg/w3c/dom/Node;)S"/> + <method name="getWhatToShow()I"/> + <method name="startElement(Lorg/w3c/dom/Element;)S"/> + <field name="FILTER_ACCEPT"/> + <field name="FILTER_INTERRUPT"/> + <field name="FILTER_REJECT"/> + <field name="FILTER_SKIP"/> + </class> + <class name="org/w3c/dom/ls/LSResourceResolver" since="8"> + <extends name="java/lang/Object"/> + <method name="resolveResource(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/ls/LSInput;"/> + </class> + <class name="org/w3c/dom/ls/LSSerializer" since="8"> + <extends name="java/lang/Object"/> + <method name="getDomConfig()Lorg/w3c/dom/DOMConfiguration;"/> + <method name="getNewLine()Ljava/lang/String;"/> + <method name="setNewLine(Ljava/lang/String;)V"/> + <method name="write(Lorg/w3c/dom/Node;Lorg/w3c/dom/ls/LSOutput;)Z"/> + <method name="writeToString(Lorg/w3c/dom/Node;)Ljava/lang/String;"/> + <method name="writeToURI(Lorg/w3c/dom/Node;Ljava/lang/String;)Z"/> + </class> + <class name="org/xml/sax/AttributeList" since="1" deprecated="9"> + <extends name="java/lang/Object"/> + <method name="getLength()I"/> + <method name="getName(I)Ljava/lang/String;"/> + <method name="getType(I)Ljava/lang/String;"/> + <method name="getType(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getValue(I)Ljava/lang/String;"/> + <method name="getValue(Ljava/lang/String;)Ljava/lang/String;"/> + </class> + <class name="org/xml/sax/Attributes" since="1"> + <extends name="java/lang/Object"/> + <method name="getIndex(Ljava/lang/String;)I"/> + <method name="getIndex(Ljava/lang/String;Ljava/lang/String;)I"/> + <method name="getLength()I"/> + <method name="getLocalName(I)Ljava/lang/String;"/> + <method name="getQName(I)Ljava/lang/String;"/> + <method name="getType(I)Ljava/lang/String;"/> + <method name="getType(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getType(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getURI(I)Ljava/lang/String;"/> + <method name="getValue(I)Ljava/lang/String;"/> + <method name="getValue(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + </class> + <class name="org/xml/sax/ContentHandler" since="1"> + <extends name="java/lang/Object"/> + <method name="characters([CII)V"/> + <method name="endDocument()V"/> + <method name="endElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="endPrefixMapping(Ljava/lang/String;)V"/> + <method name="ignorableWhitespace([CII)V"/> + <method name="processingInstruction(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="setDocumentLocator(Lorg/xml/sax/Locator;)V"/> + <method name="skippedEntity(Ljava/lang/String;)V"/> + <method name="startDocument()V"/> + <method name="startElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/xml/sax/Attributes;)V"/> + <method name="startPrefixMapping(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="org/xml/sax/DTDHandler" since="1"> + <extends name="java/lang/Object"/> + <method name="notationDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="unparsedEntityDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="org/xml/sax/DocumentHandler" since="1" deprecated="9"> + <extends name="java/lang/Object"/> + <method name="characters([CII)V"/> + <method name="endDocument()V"/> + <method name="endElement(Ljava/lang/String;)V"/> + <method name="ignorableWhitespace([CII)V"/> + <method name="processingInstruction(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="setDocumentLocator(Lorg/xml/sax/Locator;)V"/> + <method name="startDocument()V"/> + <method name="startElement(Ljava/lang/String;Lorg/xml/sax/AttributeList;)V"/> + </class> + <class name="org/xml/sax/EntityResolver" since="1"> + <extends name="java/lang/Object"/> + <method name="resolveEntity(Ljava/lang/String;Ljava/lang/String;)Lorg/xml/sax/InputSource;"/> + </class> + <class name="org/xml/sax/ErrorHandler" since="1"> + <extends name="java/lang/Object"/> + <method name="error(Lorg/xml/sax/SAXParseException;)V"/> + <method name="fatalError(Lorg/xml/sax/SAXParseException;)V"/> + <method name="warning(Lorg/xml/sax/SAXParseException;)V"/> + </class> + <class name="org/xml/sax/HandlerBase" since="1" deprecated="9"> + <extends name="java/lang/Object"/> + <implements name="org/xml/sax/DTDHandler"/> + <implements name="org/xml/sax/DocumentHandler"/> + <implements name="org/xml/sax/EntityResolver"/> + <implements name="org/xml/sax/ErrorHandler"/> + <method name="<init>()V"/> + </class> + <class name="org/xml/sax/InputSource" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/io/InputStream;)V"/> + <method name="<init>(Ljava/io/Reader;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="getByteStream()Ljava/io/InputStream;"/> + <method name="getCharacterStream()Ljava/io/Reader;"/> + <method name="getEncoding()Ljava/lang/String;"/> + <method name="getPublicId()Ljava/lang/String;"/> + <method name="getSystemId()Ljava/lang/String;"/> + <method name="setByteStream(Ljava/io/InputStream;)V"/> + <method name="setCharacterStream(Ljava/io/Reader;)V"/> + <method name="setEncoding(Ljava/lang/String;)V"/> + <method name="setPublicId(Ljava/lang/String;)V"/> + <method name="setSystemId(Ljava/lang/String;)V"/> + </class> + <class name="org/xml/sax/Locator" since="1"> + <extends name="java/lang/Object"/> + <method name="getColumnNumber()I"/> + <method name="getLineNumber()I"/> + <method name="getPublicId()Ljava/lang/String;"/> + <method name="getSystemId()Ljava/lang/String;"/> + </class> + <class name="org/xml/sax/Parser" since="1" deprecated="9"> + <extends name="java/lang/Object"/> + <method name="parse(Ljava/lang/String;)V"/> + <method name="parse(Lorg/xml/sax/InputSource;)V"/> + <method name="setDTDHandler(Lorg/xml/sax/DTDHandler;)V"/> + <method name="setDocumentHandler(Lorg/xml/sax/DocumentHandler;)V"/> + <method name="setEntityResolver(Lorg/xml/sax/EntityResolver;)V"/> + <method name="setErrorHandler(Lorg/xml/sax/ErrorHandler;)V"/> + <method name="setLocale(Ljava/util/Locale;)V"/> + </class> + <class name="org/xml/sax/SAXException" since="1"> + <extends name="java/lang/Exception"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/Exception;)V"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/Exception;)V"/> + <method name="getException()Ljava/lang/Exception;"/> + </class> + <class name="org/xml/sax/SAXNotRecognizedException" since="1"> + <extends name="org/xml/sax/SAXException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="org/xml/sax/SAXNotSupportedException" since="1"> + <extends name="org/xml/sax/SAXException"/> + <method name="<init>()V"/> + <method name="<init>(Ljava/lang/String;)V"/> + </class> + <class name="org/xml/sax/SAXParseException" since="1"> + <extends name="org/xml/sax/SAXException"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V"/> + <method name="<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/lang/Exception;)V"/> + <method name="<init>(Ljava/lang/String;Lorg/xml/sax/Locator;)V"/> + <method name="<init>(Ljava/lang/String;Lorg/xml/sax/Locator;Ljava/lang/Exception;)V"/> + <method name="getColumnNumber()I"/> + <method name="getLineNumber()I"/> + <method name="getPublicId()Ljava/lang/String;"/> + <method name="getSystemId()Ljava/lang/String;"/> + </class> + <class name="org/xml/sax/XMLFilter" since="1"> + <extends name="java/lang/Object"/> + <implements name="org/xml/sax/XMLReader"/> + <method name="getParent()Lorg/xml/sax/XMLReader;"/> + <method name="setParent(Lorg/xml/sax/XMLReader;)V"/> + </class> + <class name="org/xml/sax/XMLReader" since="1"> + <extends name="java/lang/Object"/> + <method name="getContentHandler()Lorg/xml/sax/ContentHandler;"/> + <method name="getDTDHandler()Lorg/xml/sax/DTDHandler;"/> + <method name="getEntityResolver()Lorg/xml/sax/EntityResolver;"/> + <method name="getErrorHandler()Lorg/xml/sax/ErrorHandler;"/> + <method name="getFeature(Ljava/lang/String;)Z"/> + <method name="getProperty(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="parse(Ljava/lang/String;)V"/> + <method name="parse(Lorg/xml/sax/InputSource;)V"/> + <method name="setContentHandler(Lorg/xml/sax/ContentHandler;)V"/> + <method name="setDTDHandler(Lorg/xml/sax/DTDHandler;)V"/> + <method name="setEntityResolver(Lorg/xml/sax/EntityResolver;)V"/> + <method name="setErrorHandler(Lorg/xml/sax/ErrorHandler;)V"/> + <method name="setFeature(Ljava/lang/String;Z)V"/> + <method name="setProperty(Ljava/lang/String;Ljava/lang/Object;)V"/> + </class> + <class name="org/xml/sax/ext/Attributes2" since="1"> + <extends name="java/lang/Object"/> + <implements name="org/xml/sax/Attributes"/> + <method name="isDeclared(I)Z"/> + <method name="isDeclared(Ljava/lang/String;)Z"/> + <method name="isDeclared(Ljava/lang/String;Ljava/lang/String;)Z"/> + <method name="isSpecified(I)Z"/> + <method name="isSpecified(Ljava/lang/String;)Z"/> + <method name="isSpecified(Ljava/lang/String;Ljava/lang/String;)Z"/> + </class> + <class name="org/xml/sax/ext/Attributes2Impl" since="1"> + <extends name="org/xml/sax/helpers/AttributesImpl"/> + <implements name="org/xml/sax/ext/Attributes2"/> + <method name="<init>()V"/> + <method name="<init>(Lorg/xml/sax/Attributes;)V"/> + <method name="setDeclared(IZ)V"/> + <method name="setSpecified(IZ)V"/> + </class> + <class name="org/xml/sax/ext/DeclHandler" since="1"> + <extends name="java/lang/Object"/> + <method name="attributeDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="elementDecl(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="externalEntityDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="internalEntityDecl(Ljava/lang/String;Ljava/lang/String;)V"/> + </class> + <class name="org/xml/sax/ext/DefaultHandler2" since="1"> + <extends name="org/xml/sax/helpers/DefaultHandler"/> + <implements name="org/xml/sax/ext/DeclHandler"/> + <implements name="org/xml/sax/ext/EntityResolver2"/> + <implements name="org/xml/sax/ext/LexicalHandler"/> + <method name="<init>()V"/> + </class> + <class name="org/xml/sax/ext/EntityResolver2" since="1"> + <extends name="java/lang/Object"/> + <implements name="org/xml/sax/EntityResolver"/> + <method name="getExternalSubset(Ljava/lang/String;Ljava/lang/String;)Lorg/xml/sax/InputSource;"/> + <method name="resolveEntity(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/xml/sax/InputSource;"/> + </class> + <class name="org/xml/sax/ext/LexicalHandler" since="1"> + <extends name="java/lang/Object"/> + <method name="comment([CII)V"/> + <method name="endCDATA()V"/> + <method name="endDTD()V"/> + <method name="endEntity(Ljava/lang/String;)V"/> + <method name="startCDATA()V"/> + <method name="startDTD(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="startEntity(Ljava/lang/String;)V"/> + </class> + <class name="org/xml/sax/ext/Locator2" since="1"> + <extends name="java/lang/Object"/> + <implements name="org/xml/sax/Locator"/> + <method name="getEncoding()Ljava/lang/String;"/> + <method name="getXMLVersion()Ljava/lang/String;"/> + </class> + <class name="org/xml/sax/ext/Locator2Impl" since="1"> + <extends name="org/xml/sax/helpers/LocatorImpl"/> + <implements name="org/xml/sax/ext/Locator2"/> + <method name="<init>()V"/> + <method name="<init>(Lorg/xml/sax/Locator;)V"/> + <method name="setEncoding(Ljava/lang/String;)V"/> + <method name="setXMLVersion(Ljava/lang/String;)V"/> + </class> + <class name="org/xml/sax/helpers/AttributeListImpl" since="1" deprecated="9"> + <extends name="java/lang/Object"/> + <implements name="org/xml/sax/AttributeList"/> + <method name="<init>()V"/> + <method name="<init>(Lorg/xml/sax/AttributeList;)V"/> + <method name="addAttribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="clear()V"/> + <method name="removeAttribute(Ljava/lang/String;)V"/> + <method name="setAttributeList(Lorg/xml/sax/AttributeList;)V"/> + </class> + <class name="org/xml/sax/helpers/AttributesImpl" since="1"> + <extends name="java/lang/Object"/> + <implements name="org/xml/sax/Attributes"/> + <method name="<init>()V"/> + <method name="<init>(Lorg/xml/sax/Attributes;)V"/> + <method name="addAttribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="clear()V"/> + <method name="removeAttribute(I)V"/> + <method name="setAttribute(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="setAttributes(Lorg/xml/sax/Attributes;)V"/> + <method name="setLocalName(ILjava/lang/String;)V"/> + <method name="setQName(ILjava/lang/String;)V"/> + <method name="setType(ILjava/lang/String;)V"/> + <method name="setURI(ILjava/lang/String;)V"/> + <method name="setValue(ILjava/lang/String;)V"/> + </class> + <class name="org/xml/sax/helpers/DefaultHandler" since="1"> + <extends name="java/lang/Object"/> + <implements name="org/xml/sax/ContentHandler"/> + <implements name="org/xml/sax/DTDHandler"/> + <implements name="org/xml/sax/EntityResolver"/> + <implements name="org/xml/sax/ErrorHandler"/> + <method name="<init>()V"/> + </class> + <class name="org/xml/sax/helpers/LocatorImpl" since="1"> + <extends name="java/lang/Object"/> + <implements name="org/xml/sax/Locator"/> + <method name="<init>()V"/> + <method name="<init>(Lorg/xml/sax/Locator;)V"/> + <method name="setColumnNumber(I)V"/> + <method name="setLineNumber(I)V"/> + <method name="setPublicId(Ljava/lang/String;)V"/> + <method name="setSystemId(Ljava/lang/String;)V"/> + </class> + <class name="org/xml/sax/helpers/NamespaceSupport" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="declarePrefix(Ljava/lang/String;Ljava/lang/String;)Z"/> + <method name="getDeclaredPrefixes()Ljava/util/Enumeration;"/> + <method name="getPrefix(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getPrefixes()Ljava/util/Enumeration;"/> + <method name="getPrefixes(Ljava/lang/String;)Ljava/util/Enumeration;"/> + <method name="getURI(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="isNamespaceDeclUris()Z"/> + <method name="popContext()V"/> + <method name="processName(Ljava/lang/String;[Ljava/lang/String;Z)[Ljava/lang/String;"/> + <method name="pushContext()V"/> + <method name="reset()V"/> + <method name="setNamespaceDeclUris(Z)V"/> + <field name="NSDECL"/> + <field name="XMLNS"/> + </class> + <class name="org/xml/sax/helpers/ParserAdapter" since="1"> + <extends name="java/lang/Object"/> + <implements name="org/xml/sax/DocumentHandler"/> + <implements name="org/xml/sax/XMLReader"/> + <method name="<init>()V"/> + <method name="<init>(Lorg/xml/sax/Parser;)V"/> + </class> + <class name="org/xml/sax/helpers/ParserFactory" since="1" deprecated="9"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="makeParser()Lorg/xml/sax/Parser;"/> + <method name="makeParser(Ljava/lang/String;)Lorg/xml/sax/Parser;"/> + </class> + <class name="org/xml/sax/helpers/XMLFilterImpl" since="1"> + <extends name="java/lang/Object"/> + <implements name="org/xml/sax/ContentHandler"/> + <implements name="org/xml/sax/DTDHandler"/> + <implements name="org/xml/sax/EntityResolver"/> + <implements name="org/xml/sax/ErrorHandler"/> + <implements name="org/xml/sax/XMLFilter"/> + <method name="<init>()V"/> + <method name="<init>(Lorg/xml/sax/XMLReader;)V"/> + </class> + <class name="org/xml/sax/helpers/XMLReaderAdapter" since="1"> + <extends name="java/lang/Object"/> + <implements name="org/xml/sax/ContentHandler"/> + <implements name="org/xml/sax/Parser"/> + <method name="<init>()V"/> + <method name="<init>(Lorg/xml/sax/XMLReader;)V"/> + </class> + <class name="org/xml/sax/helpers/XMLReaderFactory" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="createXMLReader()Lorg/xml/sax/XMLReader;"/> + <method name="createXMLReader(Ljava/lang/String;)Lorg/xml/sax/XMLReader;"/> + </class> + <class name="org/xmlpull/v1/XmlPullParser" since="1"> + <extends name="java/lang/Object"/> + <method name="defineEntityReplacementText(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="getAttributeCount()I"/> + <method name="getAttributeName(I)Ljava/lang/String;"/> + <method name="getAttributeNamespace(I)Ljava/lang/String;"/> + <method name="getAttributePrefix(I)Ljava/lang/String;"/> + <method name="getAttributeType(I)Ljava/lang/String;"/> + <method name="getAttributeValue(I)Ljava/lang/String;"/> + <method name="getAttributeValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getColumnNumber()I"/> + <method name="getDepth()I"/> + <method name="getEventType()I"/> + <method name="getFeature(Ljava/lang/String;)Z"/> + <method name="getInputEncoding()Ljava/lang/String;"/> + <method name="getLineNumber()I"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getNamespace()Ljava/lang/String;"/> + <method name="getNamespace(Ljava/lang/String;)Ljava/lang/String;"/> + <method name="getNamespaceCount(I)I"/> + <method name="getNamespacePrefix(I)Ljava/lang/String;"/> + <method name="getNamespaceUri(I)Ljava/lang/String;"/> + <method name="getPositionDescription()Ljava/lang/String;"/> + <method name="getPrefix()Ljava/lang/String;"/> + <method name="getProperty(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="getText()Ljava/lang/String;"/> + <method name="getTextCharacters([I)[C"/> + <method name="isAttributeDefault(I)Z"/> + <method name="isEmptyElementTag()Z"/> + <method name="isWhitespace()Z"/> + <method name="next()I"/> + <method name="nextTag()I"/> + <method name="nextText()Ljava/lang/String;"/> + <method name="nextToken()I"/> + <method name="require(ILjava/lang/String;Ljava/lang/String;)V"/> + <method name="setFeature(Ljava/lang/String;Z)V"/> + <method name="setInput(Ljava/io/InputStream;Ljava/lang/String;)V"/> + <method name="setInput(Ljava/io/Reader;)V"/> + <method name="setProperty(Ljava/lang/String;Ljava/lang/Object;)V"/> + <field name="CDSECT"/> + <field name="COMMENT"/> + <field name="DOCDECL"/> + <field name="END_DOCUMENT"/> + <field name="END_TAG"/> + <field name="ENTITY_REF"/> + <field name="FEATURE_PROCESS_DOCDECL"/> + <field name="FEATURE_PROCESS_NAMESPACES"/> + <field name="FEATURE_REPORT_NAMESPACE_ATTRIBUTES"/> + <field name="FEATURE_VALIDATION"/> + <field name="IGNORABLE_WHITESPACE"/> + <field name="NO_NAMESPACE"/> + <field name="PROCESSING_INSTRUCTION"/> + <field name="START_DOCUMENT"/> + <field name="START_TAG"/> + <field name="TEXT"/> + <field name="TYPES"/> + </class> + <class name="org/xmlpull/v1/XmlPullParserException" since="1"> + <extends name="java/lang/Exception"/> + <method name="<init>(Ljava/lang/String;)V"/> + <method name="<init>(Ljava/lang/String;Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/Throwable;)V"/> + <method name="getColumnNumber()I"/> + <method name="getDetail()Ljava/lang/Throwable;"/> + <method name="getLineNumber()I"/> + <field name="column"/> + <field name="detail"/> + <field name="row"/> + </class> + <class name="org/xmlpull/v1/XmlPullParserFactory" since="1"> + <extends name="java/lang/Object"/> + <method name="<init>()V"/> + <method name="getFeature(Ljava/lang/String;)Z"/> + <method name="isNamespaceAware()Z"/> + <method name="isValidating()Z"/> + <method name="newInstance()Lorg/xmlpull/v1/XmlPullParserFactory;"/> + <method name="newInstance(Ljava/lang/String;Ljava/lang/Class;)Lorg/xmlpull/v1/XmlPullParserFactory;"/> + <method name="newPullParser()Lorg/xmlpull/v1/XmlPullParser;"/> + <method name="newSerializer()Lorg/xmlpull/v1/XmlSerializer;"/> + <method name="setFeature(Ljava/lang/String;Z)V"/> + <method name="setNamespaceAware(Z)V"/> + <method name="setValidating(Z)V"/> + <field name="PROPERTY_NAME"/> + <field name="classNamesLocation"/> + <field name="features"/> + <field name="parserClasses"/> + <field name="serializerClasses"/> + </class> + <class name="org/xmlpull/v1/XmlSerializer" since="1"> + <extends name="java/lang/Object"/> + <method name="attribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;"/> + <method name="cdsect(Ljava/lang/String;)V"/> + <method name="comment(Ljava/lang/String;)V"/> + <method name="docdecl(Ljava/lang/String;)V"/> + <method name="endDocument()V"/> + <method name="endTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;"/> + <method name="entityRef(Ljava/lang/String;)V"/> + <method name="flush()V"/> + <method name="getDepth()I"/> + <method name="getFeature(Ljava/lang/String;)Z"/> + <method name="getName()Ljava/lang/String;"/> + <method name="getNamespace()Ljava/lang/String;"/> + <method name="getPrefix(Ljava/lang/String;Z)Ljava/lang/String;"/> + <method name="getProperty(Ljava/lang/String;)Ljava/lang/Object;"/> + <method name="ignorableWhitespace(Ljava/lang/String;)V"/> + <method name="processingInstruction(Ljava/lang/String;)V"/> + <method name="setFeature(Ljava/lang/String;Z)V"/> + <method name="setOutput(Ljava/io/OutputStream;Ljava/lang/String;)V"/> + <method name="setOutput(Ljava/io/Writer;)V"/> + <method name="setPrefix(Ljava/lang/String;Ljava/lang/String;)V"/> + <method name="setProperty(Ljava/lang/String;Ljava/lang/Object;)V"/> + <method name="startDocument(Ljava/lang/String;Ljava/lang/Boolean;)V"/> + <method name="startTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;"/> + <method name="text(Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;"/> + <method name="text([CII)Lorg/xmlpull/v1/XmlSerializer;"/> + </class> + <class name="org/xmlpull/v1/sax2/Driver" since="1"> + <extends name="java/lang/Object"/> + <implements name="org/xml/sax/Attributes"/> + <implements name="org/xml/sax/Locator"/> + <implements name="org/xml/sax/XMLReader"/> + <method name="<init>()V"/> + <method name="<init>(Lorg/xmlpull/v1/XmlPullParser;)V"/> + <method name="parseSubTree(Lorg/xmlpull/v1/XmlPullParser;)V"/> + <method name="startElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"/> + <field name="APACHE_DYNAMIC_VALIDATION_FEATURE"/> + <field name="APACHE_SCHEMA_VALIDATION_FEATURE"/> + <field name="DECLARATION_HANDLER_PROPERTY"/> + <field name="LEXICAL_HANDLER_PROPERTY"/> + <field name="NAMESPACES_FEATURE"/> + <field name="NAMESPACE_PREFIXES_FEATURE"/> + <field name="VALIDATION_FEATURE"/> + <field name="contentHandler"/> + <field name="errorHandler"/> + <field name="pp"/> + <field name="systemId"/> + </class> +</api> diff --git a/love2dToAPK/tools/tools/adb/dmtracedump.exe b/love2dToAPK/tools/tools/adb/dmtracedump.exe new file mode 100644 index 0000000..db5b507 Binary files /dev/null and b/love2dToAPK/tools/tools/adb/dmtracedump.exe differ diff --git a/love2dToAPK/tools/tools/adb/etc1tool.exe b/love2dToAPK/tools/tools/adb/etc1tool.exe new file mode 100644 index 0000000..86aabc6 Binary files /dev/null and b/love2dToAPK/tools/tools/adb/etc1tool.exe differ diff --git a/love2dToAPK/tools/tools/adb/fastboot.exe b/love2dToAPK/tools/tools/adb/fastboot.exe new file mode 100644 index 0000000..6e15f5a Binary files /dev/null and b/love2dToAPK/tools/tools/adb/fastboot.exe differ diff --git a/love2dToAPK/tools/tools/adb/hprof-conv.exe b/love2dToAPK/tools/tools/adb/hprof-conv.exe new file mode 100644 index 0000000..0c53d48 Binary files /dev/null and b/love2dToAPK/tools/tools/adb/hprof-conv.exe differ diff --git a/love2dToAPK/tools/tools/adb/lib64/libc++.so b/love2dToAPK/tools/tools/adb/lib64/libc++.so new file mode 100644 index 0000000..7489d9c Binary files /dev/null and b/love2dToAPK/tools/tools/adb/lib64/libc++.so differ diff --git a/love2dToAPK/tools/tools/adb/libwinpthread-1.dll b/love2dToAPK/tools/tools/adb/libwinpthread-1.dll new file mode 100644 index 0000000..3aa88d7 Binary files /dev/null and b/love2dToAPK/tools/tools/adb/libwinpthread-1.dll differ diff --git a/love2dToAPK/tools/tools/adb/mke2fs.exe b/love2dToAPK/tools/tools/adb/mke2fs.exe new file mode 100644 index 0000000..d4491e1 Binary files /dev/null and b/love2dToAPK/tools/tools/adb/mke2fs.exe differ diff --git a/love2dToAPK/tools/tools/adb/source.properties b/love2dToAPK/tools/tools/adb/source.properties new file mode 100644 index 0000000..7b0ac1b --- /dev/null +++ b/love2dToAPK/tools/tools/adb/source.properties @@ -0,0 +1,3 @@ +Pkg.UserSrc=false +#Pkg.Revision=26.0.0 +Pkg.Revision=27.0.0 diff --git a/love2dToAPK/tools/tools/adb/sqlite3.exe b/love2dToAPK/tools/tools/adb/sqlite3.exe new file mode 100644 index 0000000..ef34825 Binary files /dev/null and b/love2dToAPK/tools/tools/adb/sqlite3.exe differ diff --git a/love2dToAPK/tools/tools/adb/systrace/NOTICE b/love2dToAPK/tools/tools/adb/systrace/NOTICE new file mode 100644 index 0000000..624b6da --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/NOTICE @@ -0,0 +1,205 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/love2dToAPK/tools/tools/adb/systrace/UPSTREAM_REVISION b/love2dToAPK/tools/tools/adb/systrace/UPSTREAM_REVISION new file mode 100644 index 0000000..d19651e --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/UPSTREAM_REVISION @@ -0,0 +1 @@ +6171fd4dd88d738437b803fbf5374be6bf9c5342 diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/battor/battor/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/battor/battor/__init__.py new file mode 100644 index 0000000..f18f330 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/battor/battor/__init__.py @@ -0,0 +1,27 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +import os +import sys + +def _JoinPath(*path_parts): + return os.path.abspath(os.path.join(*path_parts)) + + +def _AddDirToPythonPath(*path_parts): + path = _JoinPath(*path_parts) + if os.path.isdir(path) and path not in sys.path: + # Some call sites that use Telemetry assume that sys.path[0] is the + # directory containing the script, so we add these extra paths to right + # after sys.path[0]. + sys.path.insert(1, path) + +_CATAPULT_DIR = os.path.join( + os.path.dirname(os.path.abspath(__file__)), + os.path.pardir, os.path.pardir, os.path.pardir) + +_AddDirToPythonPath(_CATAPULT_DIR, 'common', 'battor') +_AddDirToPythonPath(_CATAPULT_DIR, 'common', 'py_utils') +_AddDirToPythonPath(_CATAPULT_DIR, 'dependency_manager') +_AddDirToPythonPath(_CATAPULT_DIR, 'devil') +_AddDirToPythonPath(_CATAPULT_DIR, 'third_party', 'pyserial') diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/battor/battor/battor_binary_dependencies.json b/love2dToAPK/tools/tools/adb/systrace/catapult/common/battor/battor/battor_binary_dependencies.json new file mode 100644 index 0000000..58c203e --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/battor/battor/battor_binary_dependencies.json @@ -0,0 +1,114 @@ +{ + "config_type": "BaseConfig", + "dependencies": { + "avrdude_binary": { + "cloud_storage_base_folder": "binary_dependencies/battor", + "cloud_storage_bucket": "chromium-telemetry", + "file_info": { + "darwin_x86_64": { + "cloud_storage_hash": "6de6324c279ea75c79c68cab4c2ddcc68da1b286", + "download_path": "../bin/darwin/x86_64/avrdude", + "local_paths": [ + "../bin/override/avrdude" + ] + }, + "linux2_x86_64": { + "cloud_storage_hash": "db29526605f6f95a75ab33f4060b8c330152de69", + "download_path": "../bin/linux2/x86_64/avrdude", + "local_paths": [ + "../bin/override/avrdude" + ] + }, + "win32_AMD64": { + "cloud_storage_hash": "517aa73b093e254007076cf5ac7afb94151df2ed", + "download_path": "../bin/win/x86_64/avrdude.exe", + "local_paths": [ + "../bin/override/avrdude.exe" + ] + }, + "win32_x86": { + "cloud_storage_hash": "517aa73b093e254007076cf5ac7afb94151df2ed", + "download_path": "../bin/win/x86_64/avrdude.exe", + "local_paths": [ + "../bin/override/avrdude.exe" + ] + }, + "win_AMD64": { + "cloud_storage_hash": "517aa73b093e254007076cf5ac7afb94151df2ed", + "download_path": "../bin/win/x86_64/avrdude.exe", + "local_paths": [ + "../bin/override/avrdude.exe" + ] + } + } + }, + "avrdude_config": { + "cloud_storage_base_folder": "binary_dependencies/battor", + "cloud_storage_bucket": "chromium-telemetry", + "file_info": { + "default": { + "cloud_storage_hash": "ccdfa12743429b8b92b61a20163d6311ab55a4fa", + "download_path": "../bin/battor/avrdude.conf", + "local_paths": [ + "../bin/override/avrdude.conf" + ] + } + } + }, + "battor_agent_binary": { + "cloud_storage_base_folder": "binary_dependencies/battor", + "cloud_storage_bucket": "chromium-telemetry", + "file_info": { + "darwin_x86_64": { + "cloud_storage_hash": "276b3507a1c617c01734d85a2133ed200f2a477b", + "download_path": "../bin/darwin/x86_64/battor_agent", + "local_paths": [ + "../bin/override/battor_agent" + ] + }, + "linux2_x86_64": { + "cloud_storage_hash": "582cfe85971ca84aa75cf078bafb737d0cbdfb31", + "download_path": "../bin/linux2/x86_64/battor_agent", + "local_paths": [ + "../bin/override/battor_agent" + ] + }, + "win32_AMD64": { + "cloud_storage_hash": "609c5f79a03b347ddbfd6e544d229a56851c0f66", + "download_path": "../bin/win/AMD64/battor_agent.exe", + "local_paths": [ + "../bin/override/battor_agent.exe" + ] + }, + "win32_x86": { + "cloud_storage_hash": "609c5f79a03b347ddbfd6e544d229a56851c0f66", + "download_path": "../bin/win/x86_64/battor_agent.exe", + "local_paths": [ + "../bin/override/battor_agent.exe" + ] + }, + "win_AMD64": { + "cloud_storage_hash": "609c5f79a03b347ddbfd6e544d229a56851c0f66", + "download_path": "../bin/win/AMD64/battor_agent.exe", + "local_paths": [ + "../bin/override/battor_agent.exe" + ] + } + } + }, + "battor_firmware": { + "cloud_storage_base_folder": "binary_dependencies/battor", + "cloud_storage_bucket": "chromium-telemetry", + "file_info": { + "default": { + "cloud_storage_hash": "da987f879c341bf2f928dc0f65cc6477c2d32bbc", + "download_path": "../bin/battor/battor_firmware.hex", + "local_paths": [ + "../bin/override/battor_firmware.hex" + ], + "version_in_cs": "3c3ce4d" + } + } + } + } +} diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/battor/battor/battor_error.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/battor/battor/battor_error.py new file mode 100644 index 0000000..3ea6efc --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/battor/battor/battor_error.py @@ -0,0 +1,8 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +from devil import base_error + +class BattOrError(base_error.BaseError): + pass diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/battor/battor/battor_wrapper.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/battor/battor/battor_wrapper.py new file mode 100644 index 0000000..6947f83 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/battor/battor/battor_wrapper.py @@ -0,0 +1,420 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import atexit +import datetime +import os +import logging +import platform +import random +import subprocess +import sys +import tempfile +import time + +from battor import battor_error +import py_utils +from py_utils import cloud_storage +import dependency_manager +from devil.utils import battor_device_mapping +from devil.utils import find_usb_devices + +import serial +from serial.tools import list_ports + + +DEFAULT_SHELL_CLOSE_TIMEOUT_S = 60 + + +def IsBattOrConnected(test_platform, android_device=None, + android_device_map=None, android_device_file=None): + """Returns True if BattOr is detected.""" + if test_platform == 'android': + if not android_device: + raise ValueError('Must pass android device serial when determining ' + 'support on android platform') + + if not android_device_map: + device_tree = find_usb_devices.GetBusNumberToDeviceTreeMap() + if device_tree: + logging.warning('Device tree:') + for _, node in sorted(device_tree.iteritems()): + node.Display() + else: + logging.warning('Empty device tree.') + if len(battor_device_mapping.GetBattOrList(device_tree)) == 1: + return True + if android_device_file: + android_device_map = battor_device_mapping.ReadSerialMapFile( + android_device_file) + else: + try: + android_device_map = battor_device_mapping.GenerateSerialMap() + logging.warning('Android device map: %s', android_device_map) + except battor_error.BattOrError: + logging.exception('Error generating serial map') + return False + + # If neither if statement above is triggered, it means that an + # android_device_map was passed in and will be used. + return str(android_device) in android_device_map + + elif test_platform == 'win': + for (_1, desc, _2) in serial.tools.list_ports.comports(): + if 'USB Serial Port' in desc: + return True + logging.info('No usb serial port discovered. Available ones are: %s' % + list(serial.tools.list_ports.comports())) + return False + + elif test_platform == 'mac': + for (_1, desc, _2) in serial.tools.list_ports.comports(): + if 'BattOr' in desc: + return True + return False + + elif test_platform == 'linux': + device_tree = find_usb_devices.GetBusNumberToDeviceTreeMap(fast=True) + return bool(battor_device_mapping.GetBattOrList(device_tree)) + + return False + + +class BattOrWrapper(object): + """A class for communicating with a BattOr in python.""" + _EXIT_CMD = 'Exit' + _GET_FIRMWARE_GIT_HASH_CMD = 'GetFirmwareGitHash' + _START_TRACING_CMD = 'StartTracing' + _STOP_TRACING_CMD = 'StopTracing' + _SUPPORTS_CLOCKSYNC_CMD = 'SupportsExplicitClockSync' + _RECORD_CLOCKSYNC_CMD = 'RecordClockSyncMarker' + _SUPPORTED_PLATFORMS = ['android', 'chromeos', 'linux', 'mac', 'win'] + + _BATTOR_PARTNO = 'x192a3u' + _BATTOR_PROGRAMMER = 'avr109' + _BATTOR_BAUDRATE = '115200' + + def __init__(self, target_platform, android_device=None, battor_path=None, + battor_map_file=None, battor_map=None, serial_log_bucket=None, + autoflash=True): + """Constructor. + + Args: + target_platform: Platform BattOr is attached to. + android_device: Serial number of Android device. + battor_path: Path to BattOr device. + battor_map_file: File giving map of [device serial: BattOr path] + battor_map: Map of [device serial: BattOr path] + serial_log_bucket: The cloud storage bucket to which BattOr agent serial + logs are uploaded on failure. + + Attributes: + _battor_path: Path to BattOr. Typically similar to /tty/USB0. + _battor_agent_binary: Path to the BattOr agent binary used to communicate + with the BattOr. + _tracing: A bool saying if tracing has been started. + _battor_shell: A subprocess running the battor_agent_binary + _trace_results_path: Path to BattOr trace results file. + _serial_log_bucket: Cloud storage bucket to which BattOr agent serial logs + are uploaded on failure. + _serial_log_file: Temp file for the BattOr agent serial log. + """ + self._battor_path = self._GetBattOrPath(target_platform, android_device, + battor_path, battor_map_file, battor_map) + config = os.path.join( + os.path.dirname(os.path.abspath(__file__)), + 'battor_binary_dependencies.json') + + self._dm = dependency_manager.DependencyManager( + [dependency_manager.BaseConfig(config)]) + self._battor_agent_binary = self._dm.FetchPath( + 'battor_agent_binary', '%s_%s' % (sys.platform, platform.machine())) + + self._autoflash = autoflash + self._serial_log_bucket = serial_log_bucket + self._tracing = False + self._battor_shell = None + self._trace_results_path = None + self._start_tracing_time = None + self._stop_tracing_time = None + self._trace_results = None + self._serial_log_file = None + self._target_platform = target_platform + self._git_hash = None + + atexit.register(self.KillBattOrShell) + + def _FlashBattOr(self): + assert self._battor_shell, ( + 'Must start shell before attempting to flash BattOr') + + try: + device_git_hash = self.GetFirmwareGitHash() + battor_firmware, cs_git_hash = self._dm.FetchPathWithVersion( + 'battor_firmware', 'default') + if cs_git_hash != device_git_hash: + logging.info( + 'Flashing BattOr with old firmware version <%s> with new ' + 'version <%s>.', device_git_hash, cs_git_hash) + avrdude_config = self._dm.FetchPath('avrdude_config', 'default') + self.StopShell() + return self.FlashFirmware(battor_firmware, avrdude_config) + return False + except ValueError: + logging.exception('Git hash returned from BattOr was not as expected: %s' + % self._git_hash) + + finally: + if not self._battor_shell: + # TODO(charliea): Once we understand why BattOrs are crashing, remove + # this log. + # http://crbug.com/699581 + logging.info('_FlashBattOr serial log:') + self._UploadSerialLogToCloudStorage() + self._serial_log_file = None + + self.StartShell() + + def KillBattOrShell(self): + if self._battor_shell: + logging.critical('BattOr shell was not properly closed. Killing now.') + self._battor_shell.kill() + + def GetShellReturnCode(self): + """Gets the return code of the BattOr agent shell.""" + rc = self._battor_shell.poll() + return rc + + def StartShell(self): + """Start BattOr binary shell.""" + assert not self._battor_shell, 'Attempting to start running BattOr shell.' + + battor_cmd = [self._battor_agent_binary] + if self._serial_log_bucket: + # Create and immediately close a temp file in order to get a filename + # for the serial log. + self._serial_log_file = tempfile.NamedTemporaryFile(delete=False) + self._serial_log_file.close() + battor_cmd.append('--battor-serial-log=%s' % self._serial_log_file.name) + if self._battor_path: + battor_cmd.append('--battor-path=%s' % self._battor_path) + self._battor_shell = self._StartShellImpl(battor_cmd) + assert self.GetShellReturnCode() is None, 'Shell failed to start.' + + def StopShell(self, timeout=None): + """Stop BattOr binary shell.""" + assert self._battor_shell, 'Attempting to stop a non-running BattOr shell.' + assert not self._tracing, 'Attempting to stop a BattOr shell while tracing.' + timeout = timeout if timeout else DEFAULT_SHELL_CLOSE_TIMEOUT_S + + self._SendBattOrCommand(self._EXIT_CMD, check_return=False) + try: + py_utils.WaitFor(lambda: self.GetShellReturnCode() != None, timeout) + except py_utils.TimeoutException: + self.KillBattOrShell() + finally: + self._battor_shell = None + + def StartTracing(self): + """Start tracing on the BattOr.""" + assert self._battor_shell, 'Must start shell before tracing' + assert not self._tracing, 'Tracing already started.' + self._FlashBattOr() + self._SendBattOrCommand(self._START_TRACING_CMD) + self._tracing = True + self._start_tracing_time = int(time.time()) + + def StopTracing(self): + """Stop tracing on the BattOr.""" + assert self._tracing, 'Must run StartTracing before StopTracing' + # Create temp file to reserve location for saving results. + temp_file = tempfile.NamedTemporaryFile(delete=False) + self._trace_results_path = temp_file.name + temp_file.close() + self._SendBattOrCommand( + '%s %s' % (self._STOP_TRACING_CMD, self._trace_results_path), + check_return=False) + self._tracing = False + self._stop_tracing_time = int(time.time()) + + def CollectTraceData(self, timeout=None): + """Collect trace data from battor. + Args: + timeout: timeout for waiting on the BattOr process to terminate in + seconds. + Returns: Trace data in form of a list. + """ + # The BattOr shell terminates after returning the results. + if timeout is None: + timeout = self._stop_tracing_time - self._start_tracing_time + py_utils.WaitFor(lambda: self.GetShellReturnCode() != None, timeout) + + # TODO(charliea): Once we understand why BattOrs are crashing, only do + # this on failure. + # http://crbug.com/699581 + logging.info('CollectTraceData serial log:') + self._UploadSerialLogToCloudStorage() + + with open(self._trace_results_path) as results: + self._trace_results = results.read() + self._battor_shell = None + self._serial_log_file = None + return self._trace_results + + def SupportsExplicitClockSync(self): + """Returns if BattOr supports Clock Sync events.""" + return bool(int(self._SendBattOrCommand(self._SUPPORTS_CLOCKSYNC_CMD, + check_return=False))) + + def RecordClockSyncMarker(self, sync_id): + """Record clock sync event on BattOr.""" + if not isinstance(sync_id, basestring): + raise TypeError('sync_id must be a string.') + self._SendBattOrCommand('%s %s' % (self._RECORD_CLOCKSYNC_CMD, sync_id)) + + def _GetBattOrPath(self, target_platform, android_device=None, + battor_path=None, battor_map_file=None, battor_map=None): + """Determines most likely path to the correct BattOr.""" + if target_platform not in self._SUPPORTED_PLATFORMS: + raise battor_error.BattOrError( + '%s is an unsupported platform.' % target_platform) + if target_platform in ['win']: + # Right now, the BattOr agent binary isn't able to automatically detect + # the BattOr port on Windows. To get around this, we know that the BattOr + # shows up with a name of 'USB Serial Port', so use the COM port that + # corresponds to a device with that name. + for (port, desc, _) in serial.tools.list_ports.comports(): + if 'USB Serial Port' in desc: + return port + raise battor_error.BattOrError( + 'Could not find BattOr attached to machine.') + if target_platform in ['mac']: + for (port, desc, _) in serial.tools.list_ports.comports(): + if 'BattOr' in desc: + return port + + if target_platform in ['android', 'linux']: + device_tree = find_usb_devices.GetBusNumberToDeviceTreeMap(fast=True) + if battor_path: + if not isinstance(battor_path, basestring): + raise battor_error.BattOrError( + 'An invalid BattOr path was specified.') + return battor_path + + if target_platform == 'android': + if not android_device: + raise battor_error.BattOrError( + 'Must specify device for Android platform.') + if not battor_map_file and not battor_map: + # No map was passed, so must create one. + battor_map = battor_device_mapping.GenerateSerialMap() + + return battor_device_mapping.GetBattOrPathFromPhoneSerial( + str(android_device), serial_map_file=battor_map_file, + serial_map=battor_map) + + # Not Android and no explicitly passed BattOr. + battors = battor_device_mapping.GetBattOrList(device_tree) + if len(battors) != 1: + raise battor_error.BattOrError( + 'For non-Android platforms, exactly one BattOr must be ' + 'attached unless address is explicitly given.') + return '/dev/%s' % battors.pop() + + raise NotImplementedError( + 'BattOr Wrapper not implemented for given platform') + + def _SendBattOrCommandImpl(self, cmd): + """Sends command to the BattOr.""" + self._battor_shell.stdin.write('%s\n' % cmd) + self._battor_shell.stdin.flush() + return self._battor_shell.stdout.readline() + + def _SendBattOrCommand(self, cmd, check_return=True): + status = self._SendBattOrCommandImpl(cmd) + + if check_return and not 'Done.' in status: + self.KillBattOrShell() + self._UploadSerialLogToCloudStorage() + self._serial_log_file = None + raise battor_error.BattOrError( + 'BattOr did not complete command \'%s\' correctly.\n' + 'Outputted: %s' % (cmd, status)) + return status + + def _StartShellImpl(self, battor_cmd): + return subprocess.Popen( + battor_cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, shell=False) + + def _UploadSerialLogToCloudStorage(self): + """Uploads the BattOr serial log to cloud storage.""" + if not self._serial_log_file or not cloud_storage.IsNetworkIOEnabled(): + return + + remote_path = ('battor-serial-log-%s-%d.txt' % ( + datetime.datetime.now().strftime('%Y-%m-%d_%H-%M.txt'), + random.randint(1, 100000))) + + try: + cloud_url = cloud_storage.Insert( + self._serial_log_bucket, remote_path, self._serial_log_file.name) + sys.stderr.write('View BattOr serial log at %s\n' % cloud_url) + except cloud_storage.PermissionError as e: + logging.error('Cannot upload BattOr serial log file to cloud storage due ' + 'to permission error: %s' % e.message) + + def GetFirmwareGitHash(self): + """Gets the git hash for the BattOr firmware. + + Returns: Git hash for firmware currently on the BattOr. + Also sets self._git_hash to this value. + + Raises: ValueException if the git hash is not in hex. + """ + assert self._battor_shell, ('Must start shell before getting firmware git ' + 'hash') + self._git_hash = self._SendBattOrCommand(self._GET_FIRMWARE_GIT_HASH_CMD, + check_return=False).strip() + # We expect the git hash to be a valid 6 character hexstring. This will + # throw a ValueError exception otherwise. + int(self._git_hash, 16) + return self._git_hash + + def FlashFirmware(self, hex_path, avrdude_config_path): + """Flashes the BattOr using an avrdude config at config_path with the new + firmware at hex_path. + """ + assert not self._battor_shell, 'Cannot flash BattOr with open shell' + + avrdude_binary = self._dm.FetchPath( + 'avrdude_binary', '%s_%s' % (sys.platform, platform.machine())) + # Sanitize hex file path for windows. It contains <drive>:/ which avrdude + # is not capable of handling. + _, hex_path = os.path.splitdrive(hex_path) + avr_cmd = [ + avrdude_binary, + '-e', # Specify to erase data on chip. + '-p', self._BATTOR_PARTNO, # Specify AVR device. + # Specify which microcontroller programmer to use. + '-c', self._BATTOR_PROGRAMMER, + '-b', self._BATTOR_BAUDRATE, # Specify the baud rate to communicate at. + '-P', self._battor_path, # Serial path to the battor. + # Command to execute with hex file and path to hex file. + '-U', 'flash:w:%s' % hex_path, + '-C', avrdude_config_path, # AVRdude config file path. + '2>&1' # All output goes to stderr for some reason. + ] + try: + subprocess.check_output(avr_cmd) + except subprocess.CalledProcessError as e: + raise BattOrFlashError('BattOr flash failed with return code %s.' + % e.returncode) + + self._git_hash = None + return True + + +class BattOrFlashError(Exception): + pass diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/battor/battor/battor_wrapper_devicetest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/battor/battor/battor_wrapper_devicetest.py new file mode 100644 index 0000000..4ca59a7 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/battor/battor/battor_wrapper_devicetest.py @@ -0,0 +1,106 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import logging +import platform +import os +import sys +import time +import unittest + +if __name__ == '__main__': + sys.path.append( + os.path.join(os.path.dirname(__file__), '..')) + +from battor import battor_wrapper +from devil.utils import battor_device_mapping +from devil.utils import find_usb_devices +from py_utils import cloud_storage + + +_SUPPORTED_CQ_PLATFORMS = ['win', 'linux', 'mac'] + +class BattOrWrapperDeviceTest(unittest.TestCase): + def setUp(self): + test_platform = platform.system() + self._battor_list = None + if 'Win' in test_platform: + self._platform = 'win' + elif 'Linux' in test_platform: + self._platform = 'linux' + device_tree = find_usb_devices.GetBusNumberToDeviceTreeMap() + self._battor_list = battor_device_mapping.GetBattOrList(device_tree) + elif 'Darwin' in test_platform: + self._platform = 'mac' + + if not battor_wrapper.IsBattOrConnected(self._platform): + self._battor_list = [] + + def testFullRun(self): + # If battor_list is an empty list, a BattOr was expected but not found. + if self._battor_list is not None and not self._battor_list: + logging.critical('No BattOrs attached. Cannot run tests.') + return + + if self._platform not in _SUPPORTED_CQ_PLATFORMS: + logging.critical('Platform %s is not supported on CQ.' % self._platform) + return + + + battor_path = (None if not self._battor_list + else '/dev/%s' % self._battor_list[0]) + battor = battor_wrapper.BattOrWrapper( + self._platform, battor_path=battor_path, + serial_log_bucket=cloud_storage.TELEMETRY_OUTPUT) + try: + battor.StartShell() + self.assertTrue(isinstance(battor.GetFirmwareGitHash(), basestring)) + # We expect the git hash to be a valid 6 character hexstring. This will + # throw a ValueError exception otherwise. + int(battor.GetFirmwareGitHash(), 16) + self.assertTrue(len(battor.GetFirmwareGitHash()) == 7) + battor.StopShell() + + battor.StartShell() + battor.StartTracing() + # TODO(rnephew): This sleep is required for now because crbug.com/602266 + # causes the BattOr to crash when the trace time is too short. Once that + # bug is fixed, we should remove this delay. + time.sleep(1) + battor.RecordClockSyncMarker('abc') + # Sleep here because clock sync marker will be flaky if not. + time.sleep(1) + battor.StopTracing() + + # Below is a work around for crbug.com/603309. On this short of a trace, 5 + # seconds is enough to ensure that the trace will finish flushing to the + # file. The process is then killed so that BattOrWrapper knows that the + # process has been closed after tracing stops. + if self._platform == 'win': + time.sleep(5) + battor._battor_shell.kill() + results = battor.CollectTraceData().splitlines() + except: + if battor._battor_shell is not None: + battor._battor_shell.kill() + battor._battor_shell = None + raise + + self.assertTrue('# BattOr' in results[0]) + self.assertTrue('# voltage_range' in results[1]) + self.assertTrue('# current_range' in results[2]) + self.assertTrue('# sample_rate' in results[3]) + # First line with results. Should be 3 'words'. + self.assertTrue(len(results[4].split()) == 3) + clock_sync_found = False + for entry in results: + if '<abc>' in entry: + clock_sync_found = True + break + self.assertTrue(clock_sync_found, 'BattOr Data:%s\n' % repr(results)) + + +if __name__ == '__main__': + logging.getLogger().setLevel(logging.DEBUG) + unittest.main(verbosity=2) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/battor/battor/battor_wrapper_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/battor/battor/battor_wrapper_unittest.py new file mode 100644 index 0000000..3e48a33 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/battor/battor/battor_wrapper_unittest.py @@ -0,0 +1,365 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import dependency_manager +import logging +import mock +import subprocess +import unittest + +from battor import battor_error +from battor import battor_wrapper +from devil.utils import battor_device_mapping +from devil.utils import find_usb_devices + +import serial +from serial.tools import list_ports + + +class DependencyManagerMock(object): + def __init__(self, _): + self._fetch_return = 'path' + self._version_return = 'cbaa843' + + def FetchPath(self, _, *unused): + del unused + return self._fetch_return + + def FetchPathWithVersion(self, _, *unused): + del unused + return self._fetch_return, self._version_return + +class PopenMock(object): + def __init__(self, *unused): + pass + + def poll(self): + pass + + def kill(self): + pass + + +class IsBattOrConnectedTest(unittest.TestCase): + def setUp(self): + # Windows monkey patches. + self._serial_tools_return = [] + self._comports = serial.tools.list_ports.comports + serial.tools.list_ports.comports = lambda: self._serial_tools_return + + # Linux/Android monkey patches. + self._generate_serial_map_return = {} + self._generate_serial_map = battor_device_mapping.GenerateSerialMap + battor_device_mapping.GenerateSerialMap = ( + lambda: self._generate_serial_map_return) + + self._read_serial_map_file_return = {} + self._read_serial_map_file = battor_device_mapping.ReadSerialMapFile + battor_device_mapping.ReadSerialMapFile = ( + lambda f: self._read_serial_map_file_return) + + self._get_bus_number_to_device_tree_map = ( + find_usb_devices.GetBusNumberToDeviceTreeMap) + find_usb_devices.GetBusNumberToDeviceTreeMap = lambda fast=None: {} + + self._get_battor_list_return = [] + self._get_battor_list = battor_device_mapping.GetBattOrList + battor_device_mapping.GetBattOrList = lambda x: self._get_battor_list_return + + def tearDown(self): + serial.tools.list_ports.comports = self._comports + battor_device_mapping.GenerateSerialMap = self._generate_serial_map + battor_device_mapping.ReadSerialMapFile = self._read_serial_map_file + find_usb_devices.GetBusNumberToDeviceTreeMap = ( + self._get_bus_number_to_device_tree_map) + battor_device_mapping.GetBattOrList = self._get_battor_list + + def forceException(self): + raise NotImplementedError + + def testAndroidWithBattOr(self): + self._generate_serial_map_return = {'abc': '123'} + self.assertTrue(battor_wrapper.IsBattOrConnected('android', 'abc')) + + def testAndroidWithoutMatchingBattOr(self): + self._generate_serial_map_return = {'notabc': 'not123'} + self.assertFalse(battor_wrapper.IsBattOrConnected('android', 'abc')) + + def testAndroidNoDevicePassed(self): + with self.assertRaises(ValueError): + battor_wrapper.IsBattOrConnected('android') + + def testAndroidWithMapAndFile(self): + device_map = {'abc': '123'} + battor_device_mapping.ReadSerialMapFile = self.forceException + self.assertTrue( + battor_wrapper.IsBattOrConnected('android', android_device='abc', + android_device_map=device_map, + android_device_file='file')) + + def testAndroidWithMap(self): + self.assertTrue( + battor_wrapper.IsBattOrConnected('android', android_device='abc', + android_device_map={'abc', '123'})) + + def testAndroidWithFile(self): + self._read_serial_map_file_return = {'abc': '123'} + self.assertTrue( + battor_wrapper.IsBattOrConnected('android', android_device='abc', + android_device_file='file')) + + def testLinuxWithBattOr(self): + self._get_battor_list_return = ['battor'] + self.assertTrue(battor_wrapper.IsBattOrConnected('linux')) + + def testLinuxWithoutBattOr(self): + self._get_battor_list_return = [] + self.assertFalse(battor_wrapper.IsBattOrConnected('linux')) + + def testMacWithBattOr(self): + self._serial_tools_return = [('/dev/tty.usbserial-MAA', 'BattOr v3.3', '')] + self.assertTrue(battor_wrapper.IsBattOrConnected('mac')) + + def testMacWithoutBattOr(self): + self._serial_tools_return = [('/dev/tty.usbserial-MAA', 'not_one', '')] + self.assertFalse(battor_wrapper.IsBattOrConnected('mac')) + + def testWinWithBattOr(self): + self._serial_tools_return = [('COM4', 'USB Serial Port', '')] + self.assertTrue(battor_wrapper.IsBattOrConnected('win')) + + def testWinWithoutBattOr(self): + self._get_battor_list_return = [] + self.assertFalse(battor_wrapper.IsBattOrConnected('win')) + + +class BattOrWrapperTest(unittest.TestCase): + def setUp(self): + self._battor = None + self._is_battor = True + self._battor_list = ['battor1'] + self._should_pass = True + self._fake_map = {'battor1': 'device1'} + self._fake_return_code = None + self._fake_battor_return = 'Done.\n' + + self._get_battor_path_from_phone_serial = ( + battor_device_mapping.GetBattOrPathFromPhoneSerial) + self._get_bus_number_to_device_tree_map = ( + find_usb_devices.GetBusNumberToDeviceTreeMap) + self._dependency_manager = dependency_manager.DependencyManager + self._get_battor_list = battor_device_mapping.GetBattOrList + self._is_battor = battor_device_mapping.IsBattOr + self._generate_serial_map = battor_device_mapping.GenerateSerialMap + self._serial_tools = serial.tools.list_ports.comports + + battor_device_mapping.GetBattOrPathFromPhoneSerial = ( + lambda x, serial_map_file=None, serial_map=None: x + '_battor') + find_usb_devices.GetBusNumberToDeviceTreeMap = lambda fast=False: True + dependency_manager.DependencyManager = DependencyManagerMock + battor_device_mapping.GetBattOrList = lambda x: self._battor_list + battor_device_mapping.IsBattOr = lambda x, y: self._is_battor + battor_device_mapping.GenerateSerialMap = lambda: self._fake_map + serial.tools.list_ports.comports = lambda: [('COM4', 'USB Serial Port', '')] + + self._subprocess_check_output_code = 0 + def subprocess_check_output_mock(*unused): + if self._subprocess_check_output_code != 0: + raise subprocess.CalledProcessError(None, None) + return 0 + self._subprocess_check_output = subprocess.check_output + subprocess.check_output = subprocess_check_output_mock + + def tearDown(self): + battor_device_mapping.GetBattOrPathFromPhoneSerial = ( + self._get_battor_path_from_phone_serial) + find_usb_devices.GetBusNumberToDeviceTreeMap = ( + self._get_bus_number_to_device_tree_map) + dependency_manager.DependencyManager = self._dependency_manager + battor_device_mapping.GetBattOrList = self._get_battor_list + battor_device_mapping.IsBattOr = self._is_battor + battor_device_mapping.GenerateSerialMap = self._generate_serial_map + serial.tools.list_ports.comports = self._serial_tools + subprocess.check_output = self._subprocess_check_output + + def _DefaultBattOrReplacements(self): + battor_wrapper.DEFAULT_SHELL_CLOSE_TIMEOUT_S = .1 + self._battor._StartShellImpl = lambda *unused: PopenMock() + self._battor.GetShellReturnCode = lambda *unused: self._fake_return_code + self._battor._SendBattOrCommandImpl = lambda x: self._fake_battor_return + self._battor._StopTracingImpl = lambda *unused: (self._fake_battor_return, + None) + + def testBadPlatform(self): + with self.assertRaises(battor_error.BattOrError): + self._battor = battor_wrapper.BattOrWrapper('unknown') + + def testInitAndroidWithBattOr(self): + self._battor = battor_wrapper.BattOrWrapper('android', android_device='abc') + self.assertEquals(self._battor._battor_path, 'abc_battor') + + def testInitAndroidWithoutBattOr(self): + self._battor_list = [] + self._fake_map = {} + battor_device_mapping.GetBattOrPathFromPhoneSerial = ( + self._get_battor_path_from_phone_serial) + with self.assertRaises(battor_error.BattOrError): + self._battor = battor_wrapper.BattOrWrapper('android', + android_device='abc') + + def testInitBattOrPathIsBattOr(self): + battor_path = 'battor/path/here' + self._battor = battor_wrapper.BattOrWrapper( + 'android', android_device='abc', battor_path=battor_path) + self.assertEquals(self._battor._battor_path, battor_path) + + def testInitNonAndroidWithBattOr(self): + self._battor = battor_wrapper.BattOrWrapper('win') + self.assertEquals(self._battor._battor_path, 'COM4') + + def testInitNonAndroidWithMultipleBattOr(self): + self._battor_list.append('battor2') + with self.assertRaises(battor_error.BattOrError): + self._battor = battor_wrapper.BattOrWrapper('linux') + + def testInitNonAndroidWithoutBattOr(self): + self._battor_list = [] + serial.tools.list_ports.comports = lambda: [('COM4', 'None', '')] + with self.assertRaises(battor_error.BattOrError): + self._battor = battor_wrapper.BattOrWrapper('win') + + def testStartShellPass(self): + self._battor = battor_wrapper.BattOrWrapper('win') + self._DefaultBattOrReplacements() + self._battor.StartShell() + self.assertIsNotNone(self._battor._battor_shell) + + def testStartShellDoubleStart(self): + self._battor = battor_wrapper.BattOrWrapper('win') + self._DefaultBattOrReplacements() + self._battor.StartShell() + with self.assertRaises(AssertionError): + self._battor.StartShell() + + def testStartShellFail(self): + self._battor = battor_wrapper.BattOrWrapper('win') + self._DefaultBattOrReplacements() + self._battor.GetShellReturnCode = lambda *unused: 1 + with self.assertRaises(AssertionError): + self._battor.StartShell() + + def testStartTracingPass(self): + self._battor = battor_wrapper.BattOrWrapper('win') + self._DefaultBattOrReplacements() + self._battor.StartShell() + self._battor.StartTracing() + self.assertTrue(self._battor._tracing) + + def testStartTracingDoubleStart(self): + self._battor = battor_wrapper.BattOrWrapper('win') + self._DefaultBattOrReplacements() + self._battor.StartShell() + self._battor.StartTracing() + with self.assertRaises(AssertionError): + self._battor.StartTracing() + + def testStartTracingCommandFails(self): + self._battor = battor_wrapper.BattOrWrapper('win') + self._DefaultBattOrReplacements() + self._battor._SendBattOrCommandImpl = lambda *unused: 'Fail.\n' + self._battor.StartShell() + with self.assertRaises(battor_error.BattOrError): + self._battor.StartTracing() + + def testStopTracingPass(self): + self._battor = battor_wrapper.BattOrWrapper('win') + self._DefaultBattOrReplacements() + self._battor.StartShell() + self._battor.StartTracing() + self._battor.GetShellReturnCode = lambda *unused: 0 + self._battor.StopTracing() + self.assertFalse(self._battor._tracing) + + def testStopTracingNotRunning(self): + self._battor = battor_wrapper.BattOrWrapper('win') + self._DefaultBattOrReplacements() + with self.assertRaises(AssertionError): + self._battor.StopTracing() + + def testFlashFirmwarePass(self): + self._battor = battor_wrapper.BattOrWrapper('linux') + self._DefaultBattOrReplacements() + self.assertTrue(self._battor.FlashFirmware('hex_path', 'config_path')) + + def testFlashFirmwareFail(self): + self._battor = battor_wrapper.BattOrWrapper('linux') + self._DefaultBattOrReplacements() + self._subprocess_check_output_code = 1 + with self.assertRaises(battor_wrapper.BattOrFlashError): + self._battor.FlashFirmware('hex_path', 'config_path') + + def testFlashFirmwareShellRunning(self): + self._battor = battor_wrapper.BattOrWrapper('linux') + self._DefaultBattOrReplacements() + self._battor.StartShell() + with self.assertRaises(AssertionError): + self._battor.FlashFirmware('hex_path', 'config_path') + + def testGetFirmwareGitHashNotRunning(self): + self._battor = battor_wrapper.BattOrWrapper('win') + self._DefaultBattOrReplacements() + with self.assertRaises(AssertionError): + self._battor.GetFirmwareGitHash() + + def testGetFirmwareGitHashPass(self): + self._battor = battor_wrapper.BattOrWrapper('win') + self._DefaultBattOrReplacements() + self._battor.StartShell() + self._battor.GetFirmwareGitHash = lambda: 'cbaa843' + self.assertTrue(isinstance(self._battor.GetFirmwareGitHash(), basestring)) + + def testStopShellPass(self): + self._battor = battor_wrapper.BattOrWrapper('win') + self._DefaultBattOrReplacements() + self._battor.StartShell() + self._fake_return_code = 0 + self._battor.StopShell() + self.assertIsNone(self._battor._battor_shell) + + @mock.patch('time.sleep', mock.Mock) + def testStopShellTimeOutAndKill(self): + self._battor = battor_wrapper.BattOrWrapper('win') + self._DefaultBattOrReplacements() + self._battor.StartShell() + self._battor.StopShell() + self.assertIsNone(self._battor._battor_shell) + + def testStopShellNotStarted(self): + self._battor = battor_wrapper.BattOrWrapper('win') + self._DefaultBattOrReplacements() + with self.assertRaises(AssertionError): + self._battor.StopShell() + + @mock.patch('time.sleep', mock.Mock) + def testFlashBattOrSameGitHash(self): + self._battor = battor_wrapper.BattOrWrapper('linux') + self._DefaultBattOrReplacements() + self._battor.StartShell() + self._battor.GetFirmwareGitHash = lambda: 'cbaa843' + dependency_manager.DependencyManager._version_return = 'cbaa843' + self.assertFalse(self._battor._FlashBattOr()) + + @mock.patch('time.sleep', mock.Mock) + def testFlashBattOrDifferentGitHash(self): + self._battor = battor_wrapper.BattOrWrapper('linux') + self._DefaultBattOrReplacements() + self._battor.StartShell() + self._battor.GetFirmwareGitHash = lambda: 'bazz732' + dependency_manager.DependencyManager._version_return = 'cbaa843' + self.assertTrue(self._battor._FlashBattOr()) + + +if __name__ == '__main__': + logging.getLogger().setLevel(logging.DEBUG) + unittest.main(verbosity=2) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/eslint/LICENSE b/love2dToAPK/tools/tools/adb/systrace/catapult/common/eslint/LICENSE new file mode 100644 index 0000000..f943447 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/eslint/LICENSE @@ -0,0 +1,20 @@ +ESLint +Copyright jQuery Foundation and other contributors, https://jquery.org/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/eslint/README.md b/love2dToAPK/tools/tools/adb/systrace/catapult/common/eslint/README.md new file mode 100644 index 0000000..8ba5b63 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/eslint/README.md @@ -0,0 +1,5 @@ +This directory contains the Catapult eslint config, custom Catapult eslint rules, +and tests for those rules. + +Some of our custom rules are modified versions of those included with eslint, as +suggested in https://goo.gl/uAxFHq. diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/eslint/eslint/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/eslint/eslint/__init__.py new file mode 100644 index 0000000..082178a --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/eslint/eslint/__init__.py @@ -0,0 +1,68 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import subprocess +import sys + + +_CATAPULT_PATH = os.path.join( + os.path.dirname(os.path.abspath(__file__)), + os.path.pardir, os.path.pardir, os.path.pardir) + + +def _AddToPathIfNeeded(path): + if path not in sys.path: + sys.path.insert(0, path) + + +def _UpdateSysPathIfNeeded(): + _AddToPathIfNeeded(os.path.join(_CATAPULT_PATH, 'common', 'node_runner')) + _AddToPathIfNeeded(os.path.join(_CATAPULT_PATH, 'common', 'py_utils')) + + +_UpdateSysPathIfNeeded() + + +import py_utils +from node_runner import node_util + + +BASE_ESLINT_CMD = [ + node_util.GetNodePath(), + os.path.join(node_util.GetNodeModulesPath(), 'eslint', 'bin', 'eslint.js'), + '--color' +] + + +DEFAULT_ESLINT_RULES_DIR = os.path.join( + py_utils.GetCatapultDir(), 'common', 'eslint', 'rules') + + +def _CreateEslintCommand(rulesdir, extra_args): + eslint_cmd = BASE_ESLINT_CMD + [ + '--rulesdir', rulesdir, '--ext', '.js,.html' + ] + if extra_args: + eslint_cmd.extend(extra_args.strip().split(' ')) + return eslint_cmd + + +def RunEslint(paths, rules_dir=DEFAULT_ESLINT_RULES_DIR, extra_args=None): + """Runs eslint on a list of paths. + + Args: + paths: A list of paths to run eslint on. + rules_dir: A directory of custom eslint rules. + extra_args: A string to append to the end of the eslint command. + """ + if type(paths) is not list or len(paths) == 0: + raise ValueError('Must specify a non-empty list of paths to lint.') + + try: + eslint_cmd = _CreateEslintCommand(rules_dir, extra_args) + return True, subprocess.check_output(eslint_cmd + paths, + stderr=subprocess.STDOUT).rstrip() + except subprocess.CalledProcessError as e: + return False, e.output.rstrip() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/eslint/eslint/smoke_test.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/eslint/eslint/smoke_test.py new file mode 100644 index 0000000..9a0f442 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/eslint/eslint/smoke_test.py @@ -0,0 +1,36 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import eslint +import os +import tempfile +import unittest + + +_TEMP_FILE_CONTENTS = '''<!DOCTYPE html> +<!-- +Copyright 2016 The Chromium Authors. All rights reserved. +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> +<script> +// This should cause a linter error because we require camelCase. +var non_camel_case = 0; +</script> +''' + + +class SmokeTest(unittest.TestCase): + def testEslintFindsError(self): + try: + tmp_file = tempfile.NamedTemporaryFile( + delete=False, dir=os.path.dirname(__file__), suffix=".html") + tmp_file.write(_TEMP_FILE_CONTENTS) + tmp_file.close() + + success, output = eslint.RunEslint([tmp_file.name]) + self.assertFalse(success) + self.assertTrue('is not in camel case' in output) + finally: + os.remove(tmp_file.name) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/eslint/rules/catapult-camelcase.js b/love2dToAPK/tools/tools/adb/systrace/catapult/common/eslint/rules/catapult-camelcase.js new file mode 100644 index 0000000..bf31052 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/eslint/rules/catapult-camelcase.js @@ -0,0 +1,154 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +/* eslint-disable */ + +/** + * @fileoverview Rule to flag non-camelcased identifiers + * @author Nicholas C. Zakas + */ + +'use strict'; + +//------------------------------------------------------------------------------ +// Rule Definition +//------------------------------------------------------------------------------ + +module.exports = { + meta: { + docs: { + description: "enforce Catapult camelcase naming convention", + category: "Stylistic Issues", + recommended: false + }, + + schema: [ + { + type: "object", + properties: { + properties: { + enum: ["always", "never"] + } + }, + additionalProperties: false + } + ] + }, + + create(context) { + + //-------------------------------------------------------------------------- + // Helpers + //-------------------------------------------------------------------------- + + // contains reported nodes to avoid reporting twice on destructuring with shorthand notation + var reported = []; + + /** + * Checks if a string contains an underscore and isn't all upper-case + * @param {string} name The string to check. + * @returns {boolean} if the string is underscored + * @private + */ + function isUnderscored(name) { + + // if there's an underscore, it might be A_VARANT, which is okay + return name.indexOf("_") > -1 && name !== name.toUpperCase(); + } + + /** + * Reports an AST node as a rule violation. + * @param {ASTNode} node The node to report. + * @returns {void} + * @private + */ + function report(node) { + if (reported.indexOf(node) < 0) { + reported.push(node); + context.report(node, "Identifier '{{name}}' is not in camel case.", { name: node.name }); + } + } + + var options = context.options[0] || {}; + let properties = options.properties || ""; + + if (properties !== "always" && properties !== "never") { + properties = "always"; + } + + return { + + Identifier(node) { + + /* + * Leading and trailing underscores are commonly used to flag + * private/protected identifiers, strip them. + * + * NOTE: This has four Catapult-specific style exceptions: + * + * - The prefix opt_ + * - The prefix g_ + * - The suffix _smallerIsBetter + * - The suffix _biggerIsBetter + */ + var name = node.name.replace(/(?:^opt_)|^(?:^g_)|^_+|_+$|(?:_smallerIsBetter)$|(?:_biggerIsBetter)$/g, ""), + effectiveParent = (node.parent.type === "MemberExpression") ? node.parent.parent : node.parent; + + // MemberExpressions get special rules + if (node.parent.type === "MemberExpression") { + + // "never" check properties + if (properties === "never") { + return; + } + + // Always report underscored object names + if (node.parent.object.type === "Identifier" && + node.parent.object.name === node.name && + isUnderscored(name)) { + report(node); + + // Report AssignmentExpressions only if they are the left side of the assignment + } else if (effectiveParent.type === "AssignmentExpression" && + isUnderscored(name) && + (effectiveParent.right.type !== "MemberExpression" || + effectiveParent.left.type === "MemberExpression" && + effectiveParent.left.property.name === node.name)) { + report(node); + } + + // Properties have their own rules + } else if (node.parent.type === "Property") { + + // "never" check properties + if (properties === "never") { + return; + } + + if (node.parent.parent && node.parent.parent.type === "ObjectPattern" && + node.parent.key === node && node.parent.value !== node) { + return; + } + + if (isUnderscored(name) && effectiveParent.type !== "CallExpression") { + report(node); + } + + // Check if it's an import specifier + } else if (["ImportSpecifier", "ImportNamespaceSpecifier", "ImportDefaultSpecifier"].indexOf(node.parent.type) >= 0) { + + // Report only if the local imported identifier is underscored + if (node.parent.local && node.parent.local.name === node.name && isUnderscored(name)) { + report(node); + } + + // Report anything that is underscored that isn't a CallExpression + } else if (isUnderscored(name) && effectiveParent.type !== "CallExpression") { + report(node); + } + } + + }; + + } +}; diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/eslint/tests/catapult-camelcase.js b/love2dToAPK/tools/tools/adb/systrace/catapult/common/eslint/tests/catapult-camelcase.js new file mode 100644 index 0000000..f0bdb37 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/eslint/tests/catapult-camelcase.js @@ -0,0 +1,324 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +/* eslint-disable */ + +/** + * @fileoverview Tests for camelcase rule. + * @author Nicholas C. Zakas + */ + +'use strict'; + +//------------------------------------------------------------------------------ +// Requirements +//------------------------------------------------------------------------------ + +var rule = require("../rules/catapult-camelcase"), + RuleTester = require("../../node_runner/node_runner/node_modules/eslint/lib/testers/rule-tester"); + +//------------------------------------------------------------------------------ +// Tests +//------------------------------------------------------------------------------ + +var ruleTester = new RuleTester(); + +ruleTester.run("camelcase", rule, { + valid: [ + "firstName = \"Nicholas\"", + "FIRST_NAME = \"Nicholas\"", + "__myPrivateVariable = \"Patrick\"", + "myPrivateVariable_ = \"Patrick\"", + "function doSomething(){}", + "do_something()", + "foo.do_something()", + "var foo = bar.baz_boom;", + "var foo = bar.baz_boom.something;", + "foo.boom_pow.qux = bar.baz_boom.something;", + "if (bar.baz_boom) {}", + "var obj = { key: foo.bar_baz };", + "var arr = [foo.bar_baz];", + "[foo.bar_baz]", + "var arr = [foo.bar_baz.qux];", + "[foo.bar_baz.nesting]", + "if (foo.bar_baz === boom.bam_pow) { [foo.baz_boom] }", + // These tests are for Catapult-specific exceptions. + "opt_firstName = \"Nicholas\"", + "g_firstName = \"Nicholas\"", + "sizeInBytes_smallerIsBetter = \"Nicholas\"", + "sizeInBytes_biggerIsBetter = \"Nicholas\"", + { + code: "var o = {key: 1}", + options: [{properties: "always"}] + }, + { + code: "var o = {bar_baz: 1}", + options: [{properties: "never"}] + }, + { + code: "obj.a_b = 2;", + options: [{properties: "never"}] + }, + { + code: "var obj = {\n a_a: 1 \n};\n obj.a_b = 2;", + options: [{properties: "never"}] + }, + { + code: "obj.foo_bar = function(){};", + options: [{properties: "never"}] + }, + { + code: "var { category_id: category } = query;", + parserOptions: { ecmaVersion: 6 } + }, + { + code: "var { category_id: category } = query;", + parserOptions: { ecmaVersion: 6 }, + options: [{properties: "never"}] + }, + { + code: "import { camelCased } from \"external module\";", + parserOptions: { ecmaVersion: 6, sourceType: "module" } + }, + { + code: "import { no_camelcased as camelCased } from \"external-module\";", + parserOptions: { ecmaVersion: 6, sourceType: "module" } + }, + { + code: "import { no_camelcased as camelCased, anoterCamelCased } from \"external-module\";", + parserOptions: { ecmaVersion: 6, sourceType: "module" } + } + ], + invalid: [ + { + code: "first_name = \"Nicholas\"", + errors: [ + { + message: "Identifier 'first_name' is not in camel case.", + type: "Identifier" + } + ] + }, + { + code: "__private_first_name = \"Patrick\"", + errors: [ + { + message: "Identifier '__private_first_name' is not in camel case.", + type: "Identifier" + } + ] + }, + { + code: "function foo_bar(){}", + errors: [ + { + message: "Identifier 'foo_bar' is not in camel case.", + type: "Identifier" + } + ] + }, + { + code: "obj.foo_bar = function(){};", + errors: [ + { + message: "Identifier 'foo_bar' is not in camel case.", + type: "Identifier" + } + ] + }, + { + code: "bar_baz.foo = function(){};", + errors: [ + { + message: "Identifier 'bar_baz' is not in camel case.", + type: "Identifier" + } + ] + }, + { + code: "[foo_bar.baz]", + errors: [ + { + message: "Identifier 'foo_bar' is not in camel case.", + type: "Identifier" + } + ] + }, + { + code: "if (foo.bar_baz === boom.bam_pow) { [foo_bar.baz] }", + errors: [ + { + message: "Identifier 'foo_bar' is not in camel case.", + type: "Identifier" + } + ] + }, + { + code: "foo.bar_baz = boom.bam_pow", + errors: [ + { + message: "Identifier 'bar_baz' is not in camel case.", + type: "Identifier" + } + ] + }, + { + code: "var foo = { bar_baz: boom.bam_pow }", + errors: [ + { + message: "Identifier 'bar_baz' is not in camel case.", + type: "Identifier" + } + ] + }, + { + code: "foo.qux.boom_pow = { bar: boom.bam_pow }", + errors: [ + { + message: "Identifier 'boom_pow' is not in camel case.", + type: "Identifier" + } + ] + }, + { + code: "var o = {bar_baz: 1}", + options: [{properties: "always"}], + errors: [ + { + message: "Identifier 'bar_baz' is not in camel case.", + type: "Identifier" + } + ] + }, + { + code: "obj.a_b = 2;", + options: [{properties: "always"}], + errors: [ + { + message: "Identifier 'a_b' is not in camel case.", + type: "Identifier" + } + ] + }, + { + code: "obj.a_b = 2;", + options: [{properties: "always"}], + errors: [ + { + message: "Identifier 'a_b' is not in camel case.", + type: "Identifier" + } + ] + }, + { + code: "var { category_id: category_id } = query;", + parserOptions: { ecmaVersion: 6 }, + errors: [ + { + message: "Identifier 'category_id' is not in camel case.", + type: "Identifier" + } + ] + }, + { + code: "var { category_id } = query;", + parserOptions: { ecmaVersion: 6 }, + errors: [ + { + message: "Identifier 'category_id' is not in camel case.", + type: "Identifier" + } + ] + }, + { + code: "import no_camelcased from \"external-module\";", + parserOptions: { ecmaVersion: 6, sourceType: "module" }, + errors: [ + { + message: "Identifier 'no_camelcased' is not in camel case.", + type: "Identifier" + } + ] + }, + { + code: "import * as no_camelcased from \"external-module\";", + parserOptions: { ecmaVersion: 6, sourceType: "module" }, + errors: [ + { + message: "Identifier 'no_camelcased' is not in camel case.", + type: "Identifier" + } + ] + }, + { + code: "import { no_camelcased } from \"external-module\";", + parserOptions: { ecmaVersion: 6, sourceType: "module" }, + errors: [ + { + message: "Identifier 'no_camelcased' is not in camel case.", + type: "Identifier" + } + ] + }, + { + code: "import { no_camelcased as no_camel_cased } from \"external module\";", + parserOptions: { ecmaVersion: 6, sourceType: "module" }, + errors: [ + { + message: "Identifier 'no_camel_cased' is not in camel case.", + type: "Identifier" + } + ] + }, + { + code: "import { camelCased as no_camel_cased } from \"external module\";", + parserOptions: { ecmaVersion: 6, sourceType: "module" }, + errors: [ + { + message: "Identifier 'no_camel_cased' is not in camel case.", + type: "Identifier" + } + ] + }, + { + code: "import { camelCased, no_camelcased } from \"external-module\";", + parserOptions: { ecmaVersion: 6, sourceType: "module" }, + errors: [ + { + message: "Identifier 'no_camelcased' is not in camel case.", + type: "Identifier" + } + ] + }, + { + code: "import { no_camelcased as camelCased, another_no_camelcased } from \"external-module\";", + parserOptions: { ecmaVersion: 6, sourceType: "module" }, + errors: [ + { + message: "Identifier 'another_no_camelcased' is not in camel case.", + type: "Identifier" + } + ] + }, + { + code: "import camelCased, { no_camelcased } from \"external-module\";", + parserOptions: { ecmaVersion: 6, sourceType: "module" }, + errors: [ + { + message: "Identifier 'no_camelcased' is not in camel case.", + type: "Identifier" + } + ] + }, + { + code: "import no_camelcased, { another_no_camelcased as camelCased } from \"external-module\";", + parserOptions: { ecmaVersion: 6, sourceType: "module" }, + errors: [ + { + message: "Identifier 'no_camelcased' is not in camel case.", + type: "Identifier" + } + ] + } + ] +}); diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/lab/commits.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/lab/commits.py new file mode 100644 index 0000000..3938c40 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/lab/commits.py @@ -0,0 +1,101 @@ +#!/usr/bin/env python +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Print statistics about the rate of commits to a repository.""" + +import datetime +import itertools +import json +import math +import urllib +import urllib2 + + +_BASE_URL = 'https://chromium.googlesource.com/' +# Can be up to 10,000. +_REVISION_COUNT = 1000 + +_REPOSITORIES = [ + 'chromium/src', + 'angle/angle', + 'skia', + 'v8/v8', +] + + +def Pairwise(iterable): + """s -> (s0,s1), (s1,s2), (s2, s3), ...""" + a, b = itertools.tee(iterable) + next(b, None) + return itertools.izip(a, b) + + +def Percentile(data, percentile): + """Find a percentile of a list of values. + + Parameters: + data: A sorted list of values. + percentile: The percentile to look up, from 0.0 to 1.0. + + Returns: + The percentile. + + Raises: + ValueError: If data is empty. + """ + if not data: + raise ValueError() + + k = (len(data) - 1) * percentile + f = math.floor(k) + c = math.ceil(k) + + if f == c: + return data[int(k)] + return data[int(f)] * (c - k) + data[int(c)] * (k - f) + + +def CommitTimes(repository, revision_count): + parameters = urllib.urlencode((('n', revision_count), ('format', 'JSON'))) + url = '%s/%s/+log?%s' % (_BASE_URL, urllib.quote(repository), parameters) + data = json.loads(''.join(urllib2.urlopen(url).read().splitlines()[1:])) + + commit_times = [] + for revision in data['log']: + commit_time_string = revision['committer']['time'] + commit_time = datetime.datetime.strptime( + commit_time_string, '%a %b %d %H:%M:%S %Y') + commit_times.append(commit_time) + + return commit_times + + +def main(): + for repository in _REPOSITORIES: + commit_times = CommitTimes(repository, _REVISION_COUNT) + + commit_durations = [] + for time1, time2 in Pairwise(commit_times): + commit_durations.append((time1 - time2).total_seconds()) + commit_durations.sort() + + print 'REPOSITORY:', repository + print 'Start Date:', min(commit_times) + print ' End Date:', max(commit_times) + print ' Duration:', max(commit_times) - min(commit_times) + print ' n:', len(commit_times) + + for p in (0.00, 0.05, 0.25, 0.50, 0.75, 0.95, 1.00): + percentile = Percentile(commit_durations, p) + print '%3d%% commit duration:' % (p * 100), '%6ds' % percentile + mean = math.fsum(commit_durations) / len(commit_durations) + print ' Min commit duration:', '%6ds' % min(commit_durations) + print 'Mean commit duration:', '%6ds' % mean + print ' Max commit duration:', '%6ds' % max(commit_durations) + print + + +if __name__ == '__main__': + main() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/lab/hardware.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/lab/hardware.py new file mode 100644 index 0000000..5e49c5c --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/lab/hardware.py @@ -0,0 +1,93 @@ +#!/usr/bin/env python +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Query build slave hardware info, and print it to stdout as csv.""" + +import csv +import json +import logging +import sys +import urllib2 + + +_MASTERS = [ + 'chromium.perf', + 'chromium.perf.fyi', + 'client.catapult', + 'tryserver.chromium.perf', + 'tryserver.client.catapult', +] + + +_KEYS = [ + 'master', 'builder', 'hostname', + + 'os family', 'os version', 'bitness (userland)', + + 'product name', 'architecture', 'processor count', 'processor type', + 'memory total', + + 'facter version', 'git version', 'puppet version', 'python version', + 'ruby version', + + 'android device 1', 'android device 2', 'android device 3', + 'android device 4', 'android device 5', 'android device 6', + 'android device 7', 'android device 8', +] +_EXCLUDED_KEYS = frozenset([ + 'architecture (userland)', + 'b directory', + 'last puppet run', + 'uptime', + 'windows version', +]) + + +def main(): + writer = csv.DictWriter(sys.stdout, _KEYS) + writer.writeheader() + + for master_name in _MASTERS: + master_data = json.load(urllib2.urlopen( + 'http://build.chromium.org/p/%s/json/slaves' % master_name)) + + slaves = sorted(master_data.iteritems(), + key=lambda x: (x[1]['builders'].keys(), x[0])) + for slave_name, slave_data in slaves: + for builder_name in slave_data['builders']: + row = { + 'master': master_name, + 'builder': builder_name, + 'hostname': slave_name, + } + + host_data = slave_data['host'] + if host_data: + host_data = host_data.splitlines() + if len(host_data) > 1: + for line in host_data: + if not line: + continue + key, value = line.split(': ') + if key in _EXCLUDED_KEYS: + continue + row[key] = value + + # Munge keys. + row = {key.replace('_', ' '): value for key, value in row.iteritems()} + if 'osfamily' in row: + row['os family'] = row.pop('osfamily') + if 'product name' not in row and slave_name.startswith('slave'): + row['product name'] = 'Google Compute Engine' + + try: + writer.writerow(row) + except ValueError: + logging.error(row) + raise + + +if __name__ == '__main__': + main() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/lab/keychain_unlock.sh b/love2dToAPK/tools/tools/adb/systrace/catapult/common/lab/keychain_unlock.sh new file mode 100644 index 0000000..e550f8d --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/lab/keychain_unlock.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +# +# Script to SSH into a list of bots and set up their keychains for Telemetry. +# https://www.chromium.org/developers/telemetry/telemetry-mac-keychain-setup + +for hostname in "$@" +do + ssh -t "$hostname" 'security unlock-keychain login.keychain +security delete-generic-password -s "Chrome Safe Storage" login.keychain +security add-generic-password -a Chrome -w "+NTclOvR4wLMgRlLIL9bHQ==" \ + -s "Chrome Safe Storage" -A login.keychain' +done diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/node_runner/node_runner/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/node_runner/node_runner/__init__.py new file mode 100644 index 0000000..ce33e05 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/node_runner/node_runner/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/node_runner/node_runner/node_binaries.json b/love2dToAPK/tools/tools/adb/systrace/catapult/common/node_runner/node_runner/node_binaries.json new file mode 100644 index 0000000..4245249 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/node_runner/node_runner/node_binaries.json @@ -0,0 +1,53 @@ +{ + "config_type": "BaseConfig", + "dependencies": { + "node": { + "cloud_storage_base_folder": "binary_dependencies", + "cloud_storage_bucket": "chromium-telemetry", + "file_info": { + "linux_x86_64": { + "cloud_storage_hash": "5750e968975e7f5ab8cb694f5e92a34a890e129d", + "download_path": "bin/node/node-linux64.zip", + "path_within_archive": "node-v6.7.0-linux-x64/bin/node", + "version_in_cs": "6.7.0" + }, + "mac_x86_64": { + "cloud_storage_hash": "1af7c221e530165af8a6ab8ff7ccb1f2dd54036d", + "download_path": "bin/node/node-mac64.zip", + "path_within_archive": "node-v6.7.0-darwin-x64/bin/node", + "version_in_cs": "6.7.0" + }, + "win_AMD64": { + "cloud_storage_hash": "23f21bfb2edf874a8b6bdb6c1acb408bc7edeced", + "download_path": "bin/node/node-win64.zip", + "path_within_archive": "node-v6.7.0-win-x64/node.exe", + "version_in_cs": "6.7.0" + } + } + }, + "npm": { + "cloud_storage_base_folder": "binary_dependencies", + "cloud_storage_bucket": "chromium-telemetry", + "file_info": { + "linux_x86_64": { + "cloud_storage_hash": "5750e968975e7f5ab8cb694f5e92a34a890e129d", + "download_path": "bin/node/node-linux64.zip", + "path_within_archive": "node-v6.7.0-linux-x64/lib/node_modules/npm/bin/npm-cli.js", + "version_in_cs": "6.7.0" + }, + "mac_x86_64": { + "cloud_storage_hash": "1af7c221e530165af8a6ab8ff7ccb1f2dd54036d", + "download_path": "bin/node/node-mac64.zip", + "path_within_archive": "node-v6.7.0-darwin-x64/lib/node_modules/npm/bin/npm-cli.js", + "version_in_cs": "6.7.0" + }, + "win_AMD64": { + "cloud_storage_hash": "23f21bfb2edf874a8b6bdb6c1acb408bc7edeced", + "download_path": "bin/node/node-win64.zip", + "path_within_archive": "node-v6.7.0-win-x64\\node_modules\\npm\\bin\\npm-cli.js", + "version_in_cs": "6.7.0" + } + } + } + } +} diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/node_runner/node_runner/node_util.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/node_runner/node_runner/node_util.py new file mode 100644 index 0000000..05d0084 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/node_runner/node_runner/node_util.py @@ -0,0 +1,60 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import subprocess +import sys + +import py_utils +from py_utils import binary_manager +from py_utils import dependency_util + + +def _NodeBinariesConfigPath(): + return os.path.realpath(os.path.join( + os.path.dirname(os.path.abspath(__file__)), 'node_binaries.json')) + + +class _NodeManager(object): + def __init__(self): + self.bm = binary_manager.BinaryManager( + [_NodeBinariesConfigPath()]) + self.os_name = dependency_util.GetOSNameForCurrentDesktopPlatform() + self.arch_name = dependency_util.GetArchForCurrentDesktopPlatform( + self.os_name) + self.node_path = self.bm.FetchPath('node', self.os_name, self.arch_name) + self.npm_path = self.bm.FetchPath('npm', self.os_name, self.arch_name) + + self.node_initialized = False + + def InitNode(self): + if self.node_initialized: + return # So we only init once per run + self.node_initialized = True + old_dir = os.path.abspath(os.curdir) + os.chdir(os.path.join(os.path.abspath( + py_utils.GetCatapultDir()), 'common', 'node_runner', 'node_runner')) + subprocess.call([self.node_path, self.npm_path, 'install']) + os.chdir(old_dir) + + +_NODE_MANAGER = _NodeManager() + + +def InitNode(): + _NODE_MANAGER.InitNode() + + +def GetNodePath(): + return _NODE_MANAGER.node_path + + +def GetNodeModulesPath(): + _NODE_MANAGER.InitNode() + path = os.path.abspath(os.path.join(os.path.dirname(__file__), + 'node_modules')) + if sys.platform.startswith('win'): + # Escape path on Windows because it's very long and must be passed to NTFS. + path = u'\\\\?\\' + path + return path diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/node_runner/node_runner/package.json b/love2dToAPK/tools/tools/adb/systrace/catapult/common/node_runner/node_runner/package.json new file mode 100644 index 0000000..27d0325 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/node_runner/node_runner/package.json @@ -0,0 +1,22 @@ +{ + "name": "catapult_base", + "version": "1.0.0", + "description": "Catapult project base", + "repository": { + "type": "git", + "url": "https://github.com/catapult-project/catapult/tree/master/catapult_base" + }, + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "The Chromium Authors", + "license": "BSD-2-Clause", + "gypfile": false, + "private": true, + "dependencies": { + "eslint": "^3.14.1", + "eslint-config-google": "^0.6.0", + "eslint-plugin-html": "^2.0.0" + } +} diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/README.txt b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/README.txt new file mode 100644 index 0000000..2f0d33d --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/README.txt @@ -0,0 +1,7 @@ +py_trace_event allows low-overhead instrumentation of a multi-threaded, +multi-process application in order to study its global performance +characteristics. It uses the trace event format used in Chromium/Chrome's +about:tracing system. + +Trace files generated by py_trace_event can be viewed and manipulated by +trace_event_viewer. diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/__init__.py new file mode 100644 index 0000000..b8b6630 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/__init__.py @@ -0,0 +1,9 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +import os +import sys + +SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__)) +PY_UTILS = os.path.abspath(os.path.join(SCRIPT_DIR, '..', '..', 'py_utils')) +sys.path.append(PY_UTILS) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/run_tests b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/run_tests new file mode 100644 index 0000000..7f9673d --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/run_tests @@ -0,0 +1,163 @@ +#!/usr/bin/env python +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +import logging +import optparse +import os +import platform +import re +import sys +import types +import traceback +import unittest + + +def discover(dir, filters): + if hasattr(unittest.TestLoader, 'discover'): + return unittest.TestLoader().discover(dir, '*') + + # poor mans unittest.discover + loader = unittest.TestLoader() + subsuites = [] + + for (dirpath, dirnames, filenames) in os.walk(dir): + for filename in [x for x in filenames if re.match('.*_test\.py$', x)]: + if filename.startswith('.') or filename.startswith('_'): + continue + fqn = dirpath.replace( + '/', '.') + '.' + re.match('(.+)\.py$', filename).group(1) + + # load the test + try: + module = __import__(fqn,fromlist=[True]) + except: + print "While importing [%s]\n" % fqn + traceback.print_exc() + continue + + def test_is_selected(name): + for f in filters: + if re.search(f,name): + return True + return False + + if hasattr(module, 'suite'): + base_suite = module.suite() + else: + base_suite = loader.loadTestsFromModule(module) + new_suite = unittest.TestSuite() + for t in base_suite: + if isinstance(t, unittest.TestSuite): + for i in t: + if test_is_selected(i.id()): + new_suite.addTest(i) + elif isinstance(t, unittest.TestCase): + if test_is_selected(t.id()): + new_suite.addTest(t) + else: + raise Exception("Wtf, expected TestSuite or TestCase, got %s" % t) + + if new_suite.countTestCases(): + subsuites.append(new_suite) + + return unittest.TestSuite(subsuites) + + +def main(): + parser = optparse.OptionParser() + parser.add_option( + '-v', '--verbose', action='count', default=0, + help='Increase verbosity level (repeat as needed)') + parser.add_option('--debug', dest='debug', action='store_true', default=False, + help='Break into pdb when an assertion fails') + parser.add_option('--incremental', dest='incremental', action='store_true', + default=False, help='Run tests one at a time.') + parser.add_option('--stop', dest='stop_on_error', action='store_true', + default=False, help='Stop running tests on error.') + (options, args) = parser.parse_args() + + if options.verbose >= 2: + logging.basicConfig(level=logging.DEBUG) + elif options.verbose: + logging.basicConfig(level=logging.INFO) + else: + logging.basicConfig(level=logging.WARNING) + + # install hook on set_trace if --debug + if options.debug: + import exceptions + class DebuggingAssertionError(exceptions.AssertionError): + def __init__(self, *args): + exceptions.AssertionError.__init__(self, *args) + print "Assertion failed, entering PDB..." + import pdb + if hasattr(sys, '_getframe'): + pdb.Pdb().set_trace(sys._getframe().f_back.f_back) + else: + pdb.set_trace() + unittest.TestCase.failureException = DebuggingAssertionError + + def hook(*args): + import traceback, pdb + traceback.print_exception(*args) + pdb.pm() + sys.excepthook = hook + + import browser + browser.debug_mode = True + + else: + def hook(exc, value, tb): + import traceback + if not str(value).startswith("_noprint"): + traceback.print_exception(exc, value, tb) + import src.message_loop + if src.message_loop.is_main_loop_running(): + if not str(value).startswith("_noprint"): + print "Untrapped exception! Exiting message loop with exception." + src.message_loop.quit_main_loop(quit_with_exception=True) + + sys.excepthook = hook + + # make sure cwd is the base directory! + os.chdir(os.path.dirname(__file__)) + + if len(args) > 0: + suites = discover('trace_event_impl', args) + else: + suites = discover('trace_event_impl', ['.*']) + + r = unittest.TextTestRunner() + if not options.incremental: + res = r.run(suites) + if res.wasSuccessful(): + return 0 + return 255 + else: + ok = True + for s in suites: + if isinstance(s, unittest.TestSuite): + for t in s: + print '--------------------------------------------------------------' + print 'Running %s' % str(t) + res = r.run(t) + if not res.wasSuccessful(): + ok = False + if options.stop_on_error: + break + if ok == False and options.stop_on_error: + break + else: + res = r.run(s) + if not res.wasSuccessful(): + ok = False + if options.stop_on_error: + break + if ok: + return 0 + return 255 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/setup.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/setup.py new file mode 100644 index 0000000..0b0070a --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/setup.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python +# Copyright 2011 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +from distutils.core import setup +setup( + name='py_trace_event', + packages=['trace_event_impl'], + version='0.1.0', + description='Performance tracing for python', + author='Nat Duca' +) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event.py new file mode 100644 index 0000000..1abbfa7 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event.py @@ -0,0 +1,266 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +from py_trace_event import trace_time + + +r"""Instrumentation-based profiling for Python. + +trace_event allows you to hand-instrument your code with areas of interest. +When enabled, trace_event logs the start and stop times of these events to a +logfile. These resulting logfiles can be viewed with either Chrome's +about:tracing UI or with the standalone trace_event_viewer available at + http://www.github.com/natduca/trace_event_viewer/ + +To use trace event, call trace_event_enable and start instrumenting your code: + from trace_event import * + + if "--trace" in sys.argv: + trace_enable("myfile.trace") + + @traced + def foo(): + ... + + class MyFoo(object): + @traced + def bar(self): + ... + +trace_event records trace events to an in-memory buffer. If your application is +long running and you want to see the results of a trace before it exits, you can +call trace_flush to write any in-memory events to disk. + +To help intregrating trace_event into existing codebases that dont want to add +trace_event as a dependancy, trace_event is split into an import shim +(trace_event.py) and an implementaiton (trace_event_impl/*). You can copy the +shim, trace_event.py, directly into your including codebase. If the +trace_event_impl is not found, the shim will simply noop. + +trace_event is safe with regard to Python threads. Simply trace as you normally +would and each thread's timing will show up in the trace file. + +Multiple processes can safely output into a single trace_event logfile. If you +fork after enabling tracing, the child process will continue outputting to the +logfile. Use of the multiprocessing module will work as well. In both cases, +however, note that disabling tracing in the parent process will not stop tracing +in the child processes. +""" + +try: + import trace_event_impl +except ImportError: + trace_event_impl = None + + +def trace_can_enable(): + """ + Returns True if a trace_event_impl was found. If false, + trace_enable will fail. Regular tracing methods, including + trace_begin and trace_end, will simply be no-ops. + """ + return trace_event_impl != None + +if trace_event_impl: + import time + + + def trace_is_enabled(): + return trace_event_impl.trace_is_enabled() + + def trace_enable(logfile): + return trace_event_impl.trace_enable(logfile) + + def trace_disable(): + return trace_event_impl.trace_disable() + + def trace_flush(): + trace_event_impl.trace_flush() + + def trace_begin(name, **kwargs): + args_to_log = {key: repr(value) for key, value in kwargs.iteritems()} + trace_event_impl.add_trace_event("B", trace_time.Now(), "python", name, + args_to_log) + + def trace_end(name): + trace_event_impl.add_trace_event("E", trace_time.Now(), "python", name) + + def trace(name, **kwargs): + return trace_event_impl.trace(name, **kwargs) + + TracedMetaClass = trace_event_impl.TracedMetaClass + + def traced(fn): + return trace_event_impl.traced(fn) + + def clock_sync(sync_id, issue_ts=None): + ''' + Add a clock sync event to the trace log. + + Args: + sync_id: ID of clock sync event. + issue_ts: Time at which clock sync was issued, in microseconds. + ''' + time_stamp = trace_time.Now() + args_to_log = {'sync_id': sync_id} + if issue_ts: # Issuer if issue_ts is set, else reciever. + assert issue_ts <= time_stamp + args_to_log['issue_ts'] = issue_ts + trace_event_impl.add_trace_event( + "c", time_stamp, "python", "clock_sync", args_to_log) + + def is_tracing_controllable(): + return trace_event_impl.is_tracing_controllable() + +else: + import contextlib + + def trace_enable(): + raise TraceException( + "Cannot enable trace_event. No trace_event_impl module found.") + + def trace_disable(): + pass + + def trace_is_enabled(): + return False + + def trace_flush(): + pass + + def trace_begin(name, **kwargs): + del name # unused. + del kwargs # unused. + pass + + def trace_end(name): + del name # unused. + pass + + @contextlib.contextmanager + def trace(name, **kwargs): + del name # unused + del kwargs # unused + yield + + def traced(fn): + return fn + + def clock_sync(sync_id, issue_ts=None): + del sync_id # unused. + pass + + def is_tracing_controllable(): + return False + +trace_enable.__doc__ = """Enables tracing. + + Once enabled, the enabled bit propagates to forked processes and + multiprocessing subprocesses. Regular child processes, e.g. those created via + os.system/popen, or subprocess.Popen instances, will not get traced. You can, + however, enable tracing on those subprocess manually. + + Trace files are multiprocess safe, so you can have multiple processes + outputting to the same tracelog at once. + + log_file can be one of three things: + + None: a logfile is opened based on sys[argv], namely + "./" + sys.argv[0] + ".json" + + string: a logfile of the given name is opened. + + file-like object: the fileno() is is used. The underlying file descriptor + must support fcntl.lockf() operations. + """ + +trace_disable.__doc__ = """Disables tracing, if enabled. + + Will not disable tracing on any existing child proceses that were forked + from this process. You must disable them yourself. + """ + +trace_flush.__doc__ = """Flushes any currently-recorded trace data to disk. + + trace_event records traces into an in-memory buffer for efficiency. Flushing + is only done at process exit or when this method is called. + """ + +trace_is_enabled.__doc__ = """Returns whether tracing is enabled. + """ + +trace_begin.__doc__ = """Records the beginning of an event of the given name. + + The building block for performance tracing. A typical example is: + from trace_event import * + def something_heavy(): + trace_begin("something_heavy") + + trace_begin("read") + try: + lines = open().readlines() + finally: + trace_end("read") + + trace_begin("parse") + try: + parse(lines) + finally: + trace_end("parse") + + trace_end("something_heavy") + + Note that a trace_end call must be issued for every trace_begin call. When + tracing around blocks that might throw exceptions, you should use the trace + function, or a try-finally pattern to ensure that the trace_end method is + called. + + See the documentation for the @traced decorator for a simpler way to + instrument functions and methods. + """ + +trace_end.__doc__ = """Records the end of an event of the given name. + + See the documentation for trace_begin for more information. + + Make sure to issue a trace_end for every trace_begin issued. Failure to pair + these calls will lead to bizarrely tall looking traces in the + trace_event_viewer UI. + """ + +trace.__doc__ = """Traces a block of code using a with statement. + + Example usage: + from trace_event import * + def something_heavy(lines): + with trace("parse_lines", lines=lines): + parse(lines) + + If tracing an entire function call, prefer the @traced decorator. + """ + +traced.__doc__ = """ + Traces the provided function, using the function name for the actual generated + event. + + Prefer this decorator over the explicit trace_begin and trace_end functions + whenever you are tracing the start and stop of a function. It automatically + issues trace_begin/end events, even when the wrapped function throws. + + You can also pass the function's argument names to traced, and the argument + values will be added to the trace. Example usage: + from trace_event import * + @traced("url") + def send_request(url): + urllib2.urlopen(url).read() + """ + +clock_sync.__doc__ = """ + Issues a clock sync marker event. + + Clock sync markers are used to synchronize the clock domains of different + traces so that they can be used together. It takes a sync_id, and if it is + the issuer of a clock sync event it will also require an issue_ts. The + issue_ts is a timestamp from when the clocksync was first issued. This is used + to calculate the time difference between clock domains. + """ diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/__init__.py new file mode 100644 index 0000000..d250e03 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/__init__.py @@ -0,0 +1,7 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +from log import * +from decorators import * +from meta_class import * +import multiprocessing_shim diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/decorators.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/decorators.py new file mode 100644 index 0000000..dc753f1 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/decorators.py @@ -0,0 +1,87 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +import contextlib +import inspect +import time +import functools + +import log +from py_trace_event import trace_time + + +@contextlib.contextmanager +def trace(name, **kwargs): + category = "python" + start = trace_time.Now() + args_to_log = {key: repr(value) for key, value in kwargs.iteritems()} + log.add_trace_event("B", start, category, name, args_to_log) + try: + yield + finally: + end = trace_time.Now() + log.add_trace_event("E", end, category, name) + +def traced(*args): + def get_wrapper(func): + if inspect.isgeneratorfunction(func): + raise Exception("Can not trace generators.") + + category = "python" + + arg_spec = inspect.getargspec(func) + is_method = arg_spec.args and arg_spec.args[0] == "self" + + def arg_spec_tuple(name): + arg_index = arg_spec.args.index(name) + defaults_length = len(arg_spec.defaults) if arg_spec.defaults else 0 + default_index = arg_index + defaults_length - len(arg_spec.args) + if default_index >= 0: + default = arg_spec.defaults[default_index] + else: + default = None + return (name, arg_index, default) + + args_to_log = map(arg_spec_tuple, arg_names) + + @functools.wraps(func) + def traced_function(*args, **kwargs): + # Everything outside traced_function is done at decoration-time. + # Everything inside traced_function is done at run-time and must be fast. + if not log._enabled: # This check must be at run-time. + return func(*args, **kwargs) + + def get_arg_value(name, index, default): + if name in kwargs: + return kwargs[name] + elif index < len(args): + return args[index] + else: + return default + + if is_method: + name = "%s.%s" % (args[0].__class__.__name__, func.__name__) + else: + name = "%s.%s" % (func.__module__, func.__name__) + + # Be sure to repr before calling func. Argument values may change. + arg_values = { + name: repr(get_arg_value(name, index, default)) + for name, index, default in args_to_log} + + start = trace_time.Now() + log.add_trace_event("B", start, category, name, arg_values) + try: + return func(*args, **kwargs) + finally: + end = trace_time.Now() + log.add_trace_event("E", end, category, name) + return traced_function + + no_decorator_arguments = len(args) == 1 and callable(args[0]) + if no_decorator_arguments: + arg_names = () + return get_wrapper(args[0]) + else: + arg_names = args + return get_wrapper diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/decorators_test.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/decorators_test.py new file mode 100644 index 0000000..5bb13ad --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/decorators_test.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +import decorators +import logging +import unittest + +from trace_test import TraceTest +#from .trace_test import TraceTest + +def generator(): + yield 1 + yield 2 + +class DecoratorTests(unittest.TestCase): + def test_tracing_object_fails(self): + self.assertRaises(Exception, lambda: decorators.trace(1)) + self.assertRaises(Exception, lambda: decorators.trace("")) + self.assertRaises(Exception, lambda: decorators.trace([])) + + def test_tracing_generators_fail(self): + self.assertRaises(Exception, lambda: decorators.trace(generator)) + +class ClassToTest(object): + @decorators.traced + def method1(self): + return 1 + + @decorators.traced + def method2(self): + return 1 + +@decorators.traced +def traced_func(): + return 1 + +class DecoratorTests(TraceTest): + def _get_decorated_method_name(self, f): + res = self.go(f) + events = res.findEventsOnThread(res.findThreadIds()[0]) + + # Sanity checks. + self.assertEquals(2, len(events)) + self.assertEquals(events[0]["name"], events[1]["name"]) + return events[1]["name"] + + + def test_func_names_work(self): + self.assertEquals('__main__.traced_func', + self._get_decorated_method_name(traced_func)) + + def test_method_names_work(self): + ctt = ClassToTest() + self.assertEquals('ClassToTest.method1', + self._get_decorated_method_name(ctt.method1)) + self.assertEquals('ClassToTest.method2', + self._get_decorated_method_name(ctt.method2)) + +if __name__ == '__main__': + logging.getLogger().setLevel(logging.DEBUG) + unittest.main(verbosity=2) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/log.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/log.py new file mode 100644 index 0000000..95d012f --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/log.py @@ -0,0 +1,179 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +import atexit +import json +import os +import sys +import time +import threading + +from py_trace_event import trace_time + +from py_utils import lock + + +_lock = threading.Lock() + +_enabled = False +_log_file = None + +_cur_events = [] # events that have yet to be buffered + +_tls = threading.local() # tls used to detect forking/etc +_atexit_regsitered_for_pid = None + +_control_allowed = True + + +class TraceException(Exception): + pass + +def _note(msg, *args): + pass +# print "%i: %s" % (os.getpid(), msg) + + +def _locked(fn): + def locked_fn(*args,**kwargs): + _lock.acquire() + try: + ret = fn(*args,**kwargs) + finally: + _lock.release() + return ret + return locked_fn + +def _disallow_tracing_control(): + global _control_allowed + _control_allowed = False + +def trace_enable(log_file=None): + _trace_enable(log_file) + +@_locked +def _trace_enable(log_file=None): + global _enabled + if _enabled: + raise TraceException("Already enabled") + if not _control_allowed: + raise TraceException("Tracing control not allowed in child processes.") + _enabled = True + global _log_file + if log_file == None: + if sys.argv[0] == '': + n = 'trace_event' + else: + n = sys.argv[0] + log_file = open("%s.json" % n, "ab", False) + _note("trace_event: tracelog name is %s.json" % n) + elif isinstance(log_file, basestring): + _note("trace_event: tracelog name is %s" % log_file) + log_file = open("%s" % log_file, "ab", False) + elif not hasattr(log_file, 'fileno'): + raise TraceException( + "Log file must be None, a string, or file-like object with a fileno()") + + _log_file = log_file + with lock.FileLock(_log_file, lock.LOCK_EX): + _log_file.seek(0, os.SEEK_END) + + lastpos = _log_file.tell() + creator = lastpos == 0 + if creator: + _note("trace_event: Opened new tracelog, lastpos=%i", lastpos) + _log_file.write('[') + + tid = threading.current_thread().ident + if not tid: + tid = os.getpid() + x = {"ph": "M", "category": "process_argv", + "pid": os.getpid(), "tid": threading.current_thread().ident, + "ts": trace_time.Now(), + "name": "process_argv", "args": {"argv": sys.argv}} + _log_file.write("%s\n" % json.dumps(x)) + else: + _note("trace_event: Opened existing tracelog") + _log_file.flush() + +@_locked +def trace_flush(): + if _enabled: + _flush() + +@_locked +def trace_disable(): + global _enabled + if not _control_allowed: + raise TraceException("Tracing control not allowed in child processes.") + if not _enabled: + return + _enabled = False + _flush(close=True) + +def _flush(close=False): + global _log_file + with lock.FileLock(_log_file, lock.LOCK_EX): + _log_file.seek(0, os.SEEK_END) + if len(_cur_events): + _log_file.write(",\n") + _log_file.write(",\n".join([json.dumps(e) for e in _cur_events])) + del _cur_events[:] + + if close: + # We might not be the only process writing to this logfile. So, + # we will simply close the file rather than writign the trailing ] that + # it technically requires. The trace viewer understands that this may + # happen and will insert a trailing ] during loading. + pass + _log_file.flush() + + if close: + _note("trace_event: Closed") + _log_file.close() + _log_file = None + else: + _note("trace_event: Flushed") + +@_locked +def trace_is_enabled(): + return _enabled + +@_locked +def add_trace_event(ph, ts, category, name, args=None): + global _enabled + if not _enabled: + return + if not hasattr(_tls, 'pid') or _tls.pid != os.getpid(): + _tls.pid = os.getpid() + global _atexit_regsitered_for_pid + if _tls.pid != _atexit_regsitered_for_pid: + _atexit_regsitered_for_pid = _tls.pid + atexit.register(_trace_disable_atexit) + _tls.pid = os.getpid() + del _cur_events[:] # we forked, clear the event buffer! + tid = threading.current_thread().ident + if not tid: + tid = os.getpid() + _tls.tid = tid + + _cur_events.append({"ph": ph, + "category": category, + "pid": _tls.pid, + "tid": _tls.tid, + "ts": ts, + "name": name, + "args": args or {}}); + +def trace_begin(name, args=None): + add_trace_event("B", trace_time.Now(), "python", name, args) + +def trace_end(name, args=None): + add_trace_event("E", trace_time.Now(), "python", name, args) + +def _trace_disable_atexit(): + trace_disable() + +def is_tracing_controllable(): + global _control_allowed + return _control_allowed diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/log_io_test.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/log_io_test.py new file mode 100644 index 0000000..99a0621 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/log_io_test.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +import logging +import os +import sys +import tempfile +import unittest + +from log import * +from parsed_trace_events import * + + +class LogIOTest(unittest.TestCase): + def test_enable_with_file(self): + file = tempfile.NamedTemporaryFile() + trace_enable(open(file.name, 'w+')) + trace_disable() + e = ParsedTraceEvents(trace_filename = file.name) + file.close() + self.assertTrue(len(e) > 0) + + def test_enable_with_filename(self): + file = tempfile.NamedTemporaryFile() + trace_enable(file.name) + trace_disable() + e = ParsedTraceEvents(trace_filename = file.name) + file.close() + self.assertTrue(len(e) > 0) + + def test_enable_with_implicit_filename(self): + expected_filename = "%s.json" % sys.argv[0] + def do_work(): + file = tempfile.NamedTemporaryFile() + trace_enable() + trace_disable() + e = ParsedTraceEvents(trace_filename = expected_filename) + file.close() + self.assertTrue(len(e) > 0) + try: + do_work() + finally: + if os.path.exists(expected_filename): + os.unlink(expected_filename) + +if __name__ == '__main__': + logging.getLogger().setLevel(logging.DEBUG) + unittest.main(verbosity=2) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/meta_class.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/meta_class.py new file mode 100644 index 0000000..4ede79b --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/meta_class.py @@ -0,0 +1,16 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import types + +from py_trace_event.trace_event_impl import decorators + + +class TracedMetaClass(type): + def __new__(cls, name, bases, attrs): + for attr_name, attr_value in attrs.iteritems(): + if isinstance(attr_value, types.FunctionType): + attrs[attr_name] = decorators.traced(attr_value) + + return super(TracedMetaClass, cls).__new__(cls, name, bases, attrs) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/multiprocessing_shim.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/multiprocessing_shim.py new file mode 100644 index 0000000..9796bdf --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/multiprocessing_shim.py @@ -0,0 +1,92 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +import multiprocessing +import log +import time + + +_RealProcess = multiprocessing.Process +__all__ = [] + + +class ProcessSubclass(_RealProcess): + def __init__(self, shim, *args, **kwards): + _RealProcess.__init__(self, *args, **kwards) + self._shim = shim + + def run(self,*args,**kwargs): + log._disallow_tracing_control() + try: + r = _RealProcess.run(self, *args, **kwargs) + finally: + if log.trace_is_enabled(): + log.trace_flush() # todo, reduce need for this... + return r + +class ProcessShim(): + def __init__(self, group=None, target=None, name=None, args=(), kwargs={}): + self._proc = ProcessSubclass(self, group, target, name, args, kwargs) + # hint to testing code that the shimming worked + self._shimmed_by_trace_event = True + + def run(self): + self._proc.run() + + def start(self): + self._proc.start() + + def terminate(self): + if log.trace_is_enabled(): + # give the flush a chance to finish --> TODO: find some other way. + time.sleep(0.25) + self._proc.terminate() + + def join(self, timeout=None): + self._proc.join( timeout) + + def is_alive(self): + return self._proc.is_alive() + + @property + def name(self): + return self._proc.name + + @name.setter + def name(self, name): + self._proc.name = name + + @property + def daemon(self): + return self._proc.daemon + + @daemon.setter + def daemon(self, daemonic): + self._proc.daemon = daemonic + + @property + def authkey(self): + return self._proc._authkey + + @authkey.setter + def authkey(self, authkey): + self._proc.authkey = AuthenticationString(authkey) + + @property + def exitcode(self): + return self._proc.exitcode + + @property + def ident(self): + return self._proc.ident + + @property + def pid(self): + return self._proc.pid + + def __repr__(self): + return self._proc.__repr__() + +# Monkeypatch in our process replacement. +if multiprocessing.Process != ProcessShim: + multiprocessing.Process = ProcessShim diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/parsed_trace_events.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/parsed_trace_events.py new file mode 100644 index 0000000..fdc7514 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/parsed_trace_events.py @@ -0,0 +1,98 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +import math +import json + + +class ParsedTraceEvents(object): + def __init__(self, events = None, trace_filename = None): + """ + Utility class for filtering and manipulating trace data. + + events -- An iterable object containing trace events + trace_filename -- A file object that contains a complete trace. + + """ + if trace_filename and events: + raise Exception("Provide either a trace file or event list") + if not trace_filename and events == None: + raise Exception("Provide either a trace file or event list") + + if trace_filename: + f = open(trace_filename, 'r') + t = f.read() + f.close() + + # If the event data begins with a [, then we know it should end with a ]. + # The reason we check for this is because some tracing implementations + # cannot guarantee that a ']' gets written to the trace file. So, we are + # forgiving and if this is obviously the case, we fix it up before + # throwing the string at JSON.parse. + if t[0] == '[': + n = len(t); + if t[n - 1] != ']' and t[n - 1] != '\n': + t = t + ']' + elif t[n - 2] != ']' and t[n - 1] == '\n': + t = t + ']' + elif t[n - 3] != ']' and t[n - 2] == '\r' and t[n - 1] == '\n': + t = t + ']' + + try: + events = json.loads(t) + except ValueError: + raise Exception("Corrupt trace, did not parse. Value: %s" % t) + + if 'traceEvents' in events: + events = events['traceEvents'] + + if not hasattr(events, '__iter__'): + raise Exception, 'events must be iteraable.' + self.events = events + self.pids = None + self.tids = None + + def __len__(self): + return len(self.events) + + def __getitem__(self, i): + return self.events[i] + + def __setitem__(self, i, v): + self.events[i] = v + + def __repr__(self): + return "[%s]" % ",\n ".join([repr(e) for e in self.events]) + + def findProcessIds(self): + if self.pids: + return self.pids + pids = set() + for e in self.events: + if "pid" in e and e["pid"]: + pids.add(e["pid"]) + self.pids = list(pids) + return self.pids + + def findThreadIds(self): + if self.tids: + return self.tids + tids = set() + for e in self.events: + if "tid" in e and e["tid"]: + tids.add(e["tid"]) + self.tids = list(tids) + return self.tids + + def findEventsOnProcess(self, pid): + return ParsedTraceEvents([e for e in self.events if e["pid"] == pid]) + + def findEventsOnThread(self, tid): + return ParsedTraceEvents( + [e for e in self.events if e["ph"] != "M" and e["tid"] == tid]) + + def findByPhase(self, ph): + return ParsedTraceEvents([e for e in self.events if e["ph"] == ph]) + + def findByName(self, n): + return ParsedTraceEvents([e for e in self.events if e["name"] == n]) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/trace_test.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/trace_test.py new file mode 100644 index 0000000..7047e0e --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_impl/trace_test.py @@ -0,0 +1,48 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +import tempfile +import unittest + +#from .log import * +#from .parsed_trace_events import * + +from log import * +from parsed_trace_events import * + +class TraceTest(unittest.TestCase): + def __init__(self, *args): + """ + Infrastructure for running tests of the tracing system. + + Does not actually run any tests. Look at subclasses for those. + """ + unittest.TestCase.__init__(self, *args) + self._file = None + + def go(self, cb): + """ + Enables tracing, runs the provided callback, and if successful, returns a + TraceEvents object with the results. + """ + self._file = tempfile.NamedTemporaryFile() + trace_enable(open(self._file.name, 'a+')) + + try: + cb() + finally: + trace_disable() + e = ParsedTraceEvents(trace_filename = self._file.name) + self._file.close() + self._file = None + return e + + @property + def trace_filename(self): + return self._file.name + + def tearDown(self): + if trace_is_enabled(): + trace_disable() + if self._file: + self._file.close() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_unittest.py new file mode 100644 index 0000000..f88ef95 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_event_unittest.py @@ -0,0 +1,423 @@ +#!/usr/bin/env python +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +import contextlib +import json +import logging +import math +import multiprocessing +import os +import tempfile +import time +import unittest + +from py_trace_event import trace_event +from py_trace_event import trace_time +from py_trace_event.trace_event_impl import log + + +class TraceEventTests(unittest.TestCase): + + def setUp(self): + tf = tempfile.NamedTemporaryFile(delete=False) + self._log_path = tf.name + tf.close() + + def tearDown(self): + if os.path.exists(self._log_path): + os.remove(self._log_path) + + @contextlib.contextmanager + def _test_trace(self, disable=True): + try: + trace_event.trace_enable(self._log_path) + yield + finally: + if disable: + trace_event.trace_disable() + + def testNoImpl(self): + orig_impl = trace_event.trace_event_impl + try: + trace_event.trace_event_impl = None + self.assertFalse(trace_event.trace_can_enable()) + finally: + trace_event.trace_event_impl = orig_impl + + def testImpl(self): + self.assertTrue(trace_event.trace_can_enable()) + + def testIsEnabledFalse(self): + self.assertFalse(trace_event.trace_is_enabled()) + + def testIsEnabledTrue(self): + with self._test_trace(): + self.assertTrue(trace_event.trace_is_enabled()) + + def testEnable(self): + with self._test_trace(): + with open(self._log_path, 'r') as f: + log_output = json.loads(f.read() + ']') + self.assertEquals(len(log_output), 1) + self.assertTrue(trace_event.trace_is_enabled()) + log_output = log_output.pop() + self.assertEquals(log_output['category'], 'process_argv') + self.assertEquals(log_output['name'], 'process_argv') + self.assertTrue(log_output['args']['argv']) + self.assertEquals(log_output['ph'], 'M') + + def testDoubleEnable(self): + try: + with self._test_trace(): + with self._test_trace(): + pass + except log.TraceException: + return + assert False + + def testDisable(self): + with self._test_trace(disable=False): + with open(self._log_path, 'r') as f: + self.assertTrue(trace_event.trace_is_enabled()) + trace_event.trace_disable() + self.assertEquals(len(json.loads(f.read() + ']')), 1) + self.assertFalse(trace_event.trace_is_enabled()) + + def testDoubleDisable(self): + with self._test_trace(): + pass + trace_event.trace_disable() + + def testFlushChanges(self): + with self._test_trace(): + with open(self._log_path, 'r') as f: + trace_event.clock_sync('1') + self.assertEquals(len(json.loads(f.read() + ']')), 1) + f.seek(0) + trace_event.trace_flush() + self.assertEquals(len(json.loads(f.read() + ']')), 2) + + def testFlushNoChanges(self): + with self._test_trace(): + with open(self._log_path, 'r') as f: + self.assertEquals(len(json.loads(f.read() + ']')),1) + f.seek(0) + trace_event.trace_flush() + self.assertEquals(len(json.loads(f.read() + ']')), 1) + + def testDoubleFlush(self): + with self._test_trace(): + with open(self._log_path, 'r') as f: + trace_event.clock_sync('1') + self.assertEquals(len(json.loads(f.read() + ']')), 1) + f.seek(0) + trace_event.trace_flush() + trace_event.trace_flush() + self.assertEquals(len(json.loads(f.read() + ']')), 2) + + def testTraceBegin(self): + with self._test_trace(): + with open(self._log_path, 'r') as f: + trace_event.trace_begin('test_event', this='that') + trace_event.trace_flush() + log_output = json.loads(f.read() + ']') + self.assertEquals(len(log_output), 2) + current_entry = log_output.pop(0) + self.assertEquals(current_entry['category'], 'process_argv') + self.assertEquals(current_entry['name'], 'process_argv') + self.assertTrue( current_entry['args']['argv']) + self.assertEquals( current_entry['ph'], 'M') + current_entry = log_output.pop(0) + self.assertEquals(current_entry['category'], 'python') + self.assertEquals(current_entry['name'], 'test_event') + self.assertEquals(current_entry['args']['this'], '\'that\'') + self.assertEquals(current_entry['ph'], 'B') + + def testTraceEnd(self): + with self._test_trace(): + with open(self._log_path, 'r') as f: + trace_event.trace_end('test_event') + trace_event.trace_flush() + log_output = json.loads(f.read() + ']') + self.assertEquals(len(log_output), 2) + current_entry = log_output.pop(0) + self.assertEquals(current_entry['category'], 'process_argv') + self.assertEquals(current_entry['name'], 'process_argv') + self.assertTrue(current_entry['args']['argv']) + self.assertEquals(current_entry['ph'], 'M') + current_entry = log_output.pop(0) + self.assertEquals(current_entry['category'], 'python') + self.assertEquals(current_entry['name'], 'test_event') + self.assertEquals(current_entry['args'], {}) + self.assertEquals(current_entry['ph'], 'E') + + def testTrace(self): + with self._test_trace(): + with trace_event.trace('test_event', this='that'): + pass + trace_event.trace_flush() + with open(self._log_path, 'r') as f: + log_output = json.loads(f.read() + ']') + self.assertEquals(len(log_output), 3) + current_entry = log_output.pop(0) + self.assertEquals(current_entry['category'], 'process_argv') + self.assertEquals(current_entry['name'], 'process_argv') + self.assertTrue(current_entry['args']['argv']) + self.assertEquals(current_entry['ph'], 'M') + current_entry = log_output.pop(0) + self.assertEquals(current_entry['category'], 'python') + self.assertEquals(current_entry['name'], 'test_event') + self.assertEquals(current_entry['args']['this'], '\'that\'') + self.assertEquals(current_entry['ph'], 'B') + current_entry = log_output.pop(0) + self.assertEquals(current_entry['category'], 'python') + self.assertEquals(current_entry['name'], 'test_event') + self.assertEquals(current_entry['args'], {}) + self.assertEquals(current_entry['ph'], 'E') + + def testTracedDecorator(self): + @trace_event.traced("this") + def test_decorator(this="that"): + pass + + with self._test_trace(): + test_decorator() + trace_event.trace_flush() + with open(self._log_path, 'r') as f: + log_output = json.loads(f.read() + ']') + self.assertEquals(len(log_output), 3) + current_entry = log_output.pop(0) + self.assertEquals(current_entry['category'], 'process_argv') + self.assertEquals(current_entry['name'], 'process_argv') + self.assertTrue(current_entry['args']['argv']) + self.assertEquals(current_entry['ph'], 'M') + current_entry = log_output.pop(0) + self.assertEquals(current_entry['category'], 'python') + self.assertEquals(current_entry['name'], '__main__.test_decorator') + self.assertEquals(current_entry['args']['this'], '\'that\'') + self.assertEquals(current_entry['ph'], 'B') + current_entry = log_output.pop(0) + self.assertEquals(current_entry['category'], 'python') + self.assertEquals(current_entry['name'], '__main__.test_decorator') + self.assertEquals(current_entry['args'], {}) + self.assertEquals(current_entry['ph'], 'E') + + def testClockSyncWithTs(self): + with self._test_trace(): + with open(self._log_path, 'r') as f: + trace_event.clock_sync('id', issue_ts=trace_time.Now()) + trace_event.trace_flush() + log_output = json.loads(f.read() + ']') + self.assertEquals(len(log_output), 2) + current_entry = log_output.pop(0) + self.assertEquals(current_entry['category'], 'process_argv') + self.assertEquals(current_entry['name'], 'process_argv') + self.assertTrue(current_entry['args']['argv']) + self.assertEquals(current_entry['ph'], 'M') + current_entry = log_output.pop(0) + self.assertEquals(current_entry['category'], 'python') + self.assertEquals(current_entry['name'], 'clock_sync') + self.assertTrue(current_entry['args']['issue_ts']) + self.assertEquals(current_entry['ph'], 'c') + + def testClockSyncWithoutTs(self): + with self._test_trace(): + with open(self._log_path, 'r') as f: + trace_event.clock_sync('id') + trace_event.trace_flush() + log_output = json.loads(f.read() + ']') + self.assertEquals(len(log_output), 2) + current_entry = log_output.pop(0) + self.assertEquals(current_entry['category'], 'process_argv') + self.assertEquals(current_entry['name'], 'process_argv') + self.assertTrue(current_entry['args']['argv']) + self.assertEquals(current_entry['ph'], 'M') + current_entry = log_output.pop(0) + self.assertEquals(current_entry['category'], 'python') + self.assertEquals(current_entry['name'], 'clock_sync') + self.assertFalse(current_entry['args'].get('issue_ts')) + self.assertEquals(current_entry['ph'], 'c') + + def testTime(self): + actual_diff = [] + def func1(): + trace_begin("func1") + start = time.time() + time.sleep(0.25) + end = time.time() + actual_diff.append(end-start) # Pass via array because of Python scoping + trace_end("func1") + + with self._test_trace(): + start_ts = time.time() + trace_event.trace_begin('test') + end_ts = time.time() + trace_event.trace_end('test') + trace_event.trace_flush() + with open(self._log_path, 'r') as f: + log_output = json.loads(f.read() + ']') + self.assertEquals(len(log_output), 3) + meta_data = log_output[0] + open_data = log_output[1] + close_data = log_output[2] + self.assertEquals(meta_data['category'], 'process_argv') + self.assertEquals(meta_data['name'], 'process_argv') + self.assertTrue(meta_data['args']['argv']) + self.assertEquals(meta_data['ph'], 'M') + self.assertEquals(open_data['category'], 'python') + self.assertEquals(open_data['name'], 'test') + self.assertEquals(open_data['ph'], 'B') + self.assertEquals(close_data['category'], 'python') + self.assertEquals(close_data['name'], 'test') + self.assertEquals(close_data['ph'], 'E') + event_time_diff = close_data['ts'] - open_data['ts'] + recorded_time_diff = (end_ts - start_ts) * 1000000 + self.assertLess(math.fabs(event_time_diff - recorded_time_diff), 1000) + + def testNestedCalls(self): + with self._test_trace(): + trace_event.trace_begin('one') + trace_event.trace_begin('two') + trace_event.trace_end('two') + trace_event.trace_end('one') + trace_event.trace_flush() + with open(self._log_path, 'r') as f: + log_output = json.loads(f.read() + ']') + self.assertEquals(len(log_output), 5) + meta_data = log_output[0] + one_open = log_output[1] + two_open = log_output[2] + two_close = log_output[3] + one_close = log_output[4] + self.assertEquals(meta_data['category'], 'process_argv') + self.assertEquals(meta_data['name'], 'process_argv') + self.assertTrue(meta_data['args']['argv']) + self.assertEquals(meta_data['ph'], 'M') + + self.assertEquals(one_open['category'], 'python') + self.assertEquals(one_open['name'], 'one') + self.assertEquals(one_open['ph'], 'B') + self.assertEquals(one_close['category'], 'python') + self.assertEquals(one_close['name'], 'one') + self.assertEquals(one_close['ph'], 'E') + + self.assertEquals(two_open['category'], 'python') + self.assertEquals(two_open['name'], 'two') + self.assertEquals(two_open['ph'], 'B') + self.assertEquals(two_close['category'], 'python') + self.assertEquals(two_close['name'], 'two') + self.assertEquals(two_close['ph'], 'E') + + self.assertLessEqual(one_open['ts'], two_open['ts']) + self.assertGreaterEqual(one_close['ts'], two_close['ts']) + + def testInterleavedCalls(self): + with self._test_trace(): + trace_event.trace_begin('one') + trace_event.trace_begin('two') + trace_event.trace_end('one') + trace_event.trace_end('two') + trace_event.trace_flush() + with open(self._log_path, 'r') as f: + log_output = json.loads(f.read() + ']') + self.assertEquals(len(log_output), 5) + meta_data = log_output[0] + one_open = log_output[1] + two_open = log_output[2] + two_close = log_output[4] + one_close = log_output[3] + self.assertEquals(meta_data['category'], 'process_argv') + self.assertEquals(meta_data['name'], 'process_argv') + self.assertTrue(meta_data['args']['argv']) + self.assertEquals(meta_data['ph'], 'M') + + self.assertEquals(one_open['category'], 'python') + self.assertEquals(one_open['name'], 'one') + self.assertEquals(one_open['ph'], 'B') + self.assertEquals(one_close['category'], 'python') + self.assertEquals(one_close['name'], 'one') + self.assertEquals(one_close['ph'], 'E') + + self.assertEquals(two_open['category'], 'python') + self.assertEquals(two_open['name'], 'two') + self.assertEquals(two_open['ph'], 'B') + self.assertEquals(two_close['category'], 'python') + self.assertEquals(two_close['name'], 'two') + self.assertEquals(two_close['ph'], 'E') + + self.assertLessEqual(one_open['ts'], two_open['ts']) + self.assertLessEqual(one_close['ts'], two_close['ts']) + + def testMultiprocess(self): + def child_function(): + with trace_event.trace('child_event'): + pass + + with self._test_trace(): + trace_event.trace_begin('parent_event') + trace_event.trace_flush() + p = multiprocessing.Process(target=child_function) + p.start() + self.assertTrue(hasattr(p, "_shimmed_by_trace_event")) + p.join() + trace_event.trace_end('parent_event') + trace_event.trace_flush() + with open(self._log_path, 'r') as f: + log_output = json.loads(f.read() + ']') + self.assertEquals(len(log_output), 5) + meta_data = log_output[0] + parent_open = log_output[1] + child_open = log_output[2] + child_close = log_output[3] + parent_close = log_output[4] + self.assertEquals(meta_data['category'], 'process_argv') + self.assertEquals(meta_data['name'], 'process_argv') + self.assertTrue(meta_data['args']['argv']) + self.assertEquals(meta_data['ph'], 'M') + + self.assertEquals(parent_open['category'], 'python') + self.assertEquals(parent_open['name'], 'parent_event') + self.assertEquals(parent_open['ph'], 'B') + + self.assertEquals(child_open['category'], 'python') + self.assertEquals(child_open['name'], 'child_event') + self.assertEquals(child_open['ph'], 'B') + + self.assertEquals(child_close['category'], 'python') + self.assertEquals(child_close['name'], 'child_event') + self.assertEquals(child_close['ph'], 'E') + + self.assertEquals(parent_close['category'], 'python') + self.assertEquals(parent_close['name'], 'parent_event') + self.assertEquals(parent_close['ph'], 'E') + + def testMultiprocessExceptionInChild(self): + def bad_child(): + trace_event.trace_disable() + + with self._test_trace(): + p = multiprocessing.Pool(1) + trace_event.trace_begin('parent') + self.assertRaises(Exception, lambda: p.apply(bad_child, ())) + p.close() + p.terminate() + p.join() + trace_event.trace_end('parent') + trace_event.trace_flush() + with open(self._log_path, 'r') as f: + log_output = json.loads(f.read() + ']') + self.assertEquals(len(log_output), 3) + meta_data = log_output[0] + parent_open = log_output[1] + parent_close = log_output[2] + self.assertEquals(parent_open['category'], 'python') + self.assertEquals(parent_open['name'], 'parent') + self.assertEquals(parent_open['ph'], 'B') + self.assertEquals(parent_close['category'], 'python') + self.assertEquals(parent_close['name'], 'parent') + self.assertEquals(parent_close['ph'], 'E') + +if __name__ == '__main__': + logging.getLogger().setLevel(logging.DEBUG) + unittest.main(verbosity=2) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_time.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_time.py new file mode 100644 index 0000000..c5e3fe1 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_time.py @@ -0,0 +1,234 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import ctypes +import ctypes.util +import logging +import os +import platform +import sys +import time +import threading + + +GET_TICK_COUNT_LAST_NOW = 0 +# If GET_TICK_COUNTER_LAST_NOW is less than the current time, the clock has +# rolled over, and this needs to be accounted for. +GET_TICK_COUNT_WRAPAROUNDS = 0 +# The current detected platform +_CLOCK = None +_NOW_FUNCTION = None +# Mapping of supported platforms and what is returned by sys.platform. +_PLATFORMS = { + 'mac': 'darwin', + 'linux': 'linux', + 'windows': 'win32', + 'cygwin': 'cygwin', + 'freebsd': 'freebsd', + 'sunos': 'sunos5', + 'bsd': 'bsd' +} +# Mapping of what to pass get_clocktime based on platform. +_CLOCK_MONOTONIC = { + 'linux': 1, + 'freebsd': 4, + 'bsd': 3, + 'sunos5': 4 +} + +_LINUX_CLOCK = 'LINUX_CLOCK_MONOTONIC' +_MAC_CLOCK = 'MAC_MACH_ABSOLUTE_TIME' +_WIN_HIRES = 'WIN_QPC' +_WIN_LORES = 'WIN_ROLLOVER_PROTECTED_TIME_GET_TIME' + +def InitializeMacNowFunction(plat): + """Sets a monotonic clock for the Mac platform. + + Args: + plat: Platform that is being run on. Unused in GetMacNowFunction. Passed + for consistency between initilaizers. + """ + del plat # Unused + global _CLOCK # pylint: disable=global-statement + global _NOW_FUNCTION # pylint: disable=global-statement + _CLOCK = _MAC_CLOCK + libc = ctypes.CDLL('/usr/lib/libc.dylib', use_errno=True) + class MachTimebaseInfoData(ctypes.Structure): + """System timebase info. Defined in <mach/mach_time.h>.""" + _fields_ = (('numer', ctypes.c_uint32), + ('denom', ctypes.c_uint32)) + + mach_absolute_time = libc.mach_absolute_time + mach_absolute_time.restype = ctypes.c_uint64 + + timebase = MachTimebaseInfoData() + libc.mach_timebase_info(ctypes.byref(timebase)) + ticks_per_second = timebase.numer / timebase.denom * 1.0e9 + + def MacNowFunctionImpl(): + return mach_absolute_time() / ticks_per_second + _NOW_FUNCTION = MacNowFunctionImpl + + +def GetClockGetTimeClockNumber(plat): + for key in _CLOCK_MONOTONIC: + if plat.startswith(key): + return _CLOCK_MONOTONIC[key] + raise LookupError('Platform not in clock dicitonary') + +def InitializeLinuxNowFunction(plat): + """Sets a monotonic clock for linux platforms. + + Args: + plat: Platform that is being run on. + """ + global _CLOCK # pylint: disable=global-statement + global _NOW_FUNCTION # pylint: disable=global-statement + _CLOCK = _LINUX_CLOCK + clock_monotonic = GetClockGetTimeClockNumber(plat) + try: + # Attempt to find clock_gettime in the C library. + clock_gettime = ctypes.CDLL(ctypes.util.find_library('c'), + use_errno=True).clock_gettime + except AttributeError: + # If not able to find int in the C library, look in rt library. + clock_gettime = ctypes.CDLL(ctypes.util.find_library('rt'), + use_errno=True).clock_gettime + + class Timespec(ctypes.Structure): + """Time specification, as described in clock_gettime(3).""" + _fields_ = (('tv_sec', ctypes.c_long), + ('tv_nsec', ctypes.c_long)) + + def LinuxNowFunctionImpl(): + ts = Timespec() + if clock_gettime(clock_monotonic, ctypes.pointer(ts)): + errno = ctypes.get_errno() + raise OSError(errno, os.strerror(errno)) + return ts.tv_sec + ts.tv_nsec / 1.0e9 + + _NOW_FUNCTION = LinuxNowFunctionImpl + + +def IsQPCUsable(): + """Determines if system can query the performance counter. + The performance counter is a high resolution timer on windows systems. + Some chipsets have unreliable performance counters, so this checks that one + of those chipsets is not present. + + Returns: + True if QPC is useable, false otherwise. + """ + + # Sample output: 'Intel64 Family 6 Model 23 Stepping 6, GenuineIntel' + info = platform.processor() + if 'AuthenticAMD' in info and 'Family 15' in info: + return False + if not hasattr(ctypes, 'windll'): + return False + try: # If anything goes wrong during this, assume QPC isn't available. + frequency = ctypes.c_int64() + ctypes.windll.Kernel32.QueryPerformanceFrequency( + ctypes.byref(frequency)) + if float(frequency.value) <= 0: + return False + except Exception: # pylint: disable=broad-except + logging.exception('Error when determining if QPC is usable.') + return False + return True + + +def InitializeWinNowFunction(plat): + """Sets a monotonic clock for windows platforms. + + Args: + plat: Platform that is being run on. + """ + global _CLOCK # pylint: disable=global-statement + global _NOW_FUNCTION # pylint: disable=global-statement + + if IsQPCUsable(): + _CLOCK = _WIN_HIRES + qpc_return = ctypes.c_int64() + qpc_frequency = ctypes.c_int64() + ctypes.windll.Kernel32.QueryPerformanceFrequency( + ctypes.byref(qpc_frequency)) + qpc_frequency = float(qpc_frequency.value) + qpc = ctypes.windll.Kernel32.QueryPerformanceCounter + + def WinNowFunctionImpl(): + qpc(ctypes.byref(qpc_return)) + return qpc_return.value / qpc_frequency + + else: + _CLOCK = _WIN_LORES + kernel32 = (ctypes.cdll.kernel32 + if plat.startswith(_PLATFORMS['cygwin']) + else ctypes.windll.kernel32) + get_tick_count_64 = getattr(kernel32, 'GetTickCount64', None) + + # Windows Vista or newer + if get_tick_count_64: + get_tick_count_64.restype = ctypes.c_ulonglong + + def WinNowFunctionImpl(): + return get_tick_count_64() / 1000.0 + + else: # Pre Vista. + get_tick_count = kernel32.GetTickCount + get_tick_count.restype = ctypes.c_uint32 + get_tick_count_lock = threading.Lock() + + def WinNowFunctionImpl(): + global GET_TICK_COUNT_LAST_NOW # pylint: disable=global-statement + global GET_TICK_COUNT_WRAPAROUNDS # pylint: disable=global-statement + with get_tick_count_lock: + current_sample = get_tick_count() + if current_sample < GET_TICK_COUNT_LAST_NOW: + GET_TICK_COUNT_WRAPAROUNDS += 1 + GET_TICK_COUNT_LAST_NOW = current_sample + final_ms = GET_TICK_COUNT_WRAPAROUNDS << 32 + final_ms += GET_TICK_COUNT_LAST_NOW + return final_ms / 1000.0 + + _NOW_FUNCTION = WinNowFunctionImpl + + +def InitializeNowFunction(plat): + """Sets a monotonic clock for the current platform. + + Args: + plat: Platform that is being run on. + """ + if plat.startswith(_PLATFORMS['mac']): + InitializeMacNowFunction(plat) + + elif (plat.startswith(_PLATFORMS['linux']) + or plat.startswith(_PLATFORMS['freebsd']) + or plat.startswith(_PLATFORMS['bsd']) + or plat.startswith(_PLATFORMS['sunos'])): + InitializeLinuxNowFunction(plat) + + elif (plat.startswith(_PLATFORMS['windows']) + or plat.startswith(_PLATFORMS['cygwin'])): + InitializeWinNowFunction(plat) + + else: + raise RuntimeError('%s is not a supported platform.' % plat) + + global _NOW_FUNCTION + global _CLOCK + assert _NOW_FUNCTION, 'Now function not properly set during initialization.' + assert _CLOCK, 'Clock not properly set during initialization.' + + +def Now(): + return _NOW_FUNCTION() * 1e6 # convert from seconds to microseconds + + +def GetClock(): + return _CLOCK + + +InitializeNowFunction(sys.platform) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_time_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_time_unittest.py new file mode 100644 index 0000000..ab54bd6 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_trace_event/py_trace_event/trace_time_unittest.py @@ -0,0 +1,123 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import contextlib +import logging +import platform +import sys +import unittest + +from py_trace_event import trace_time + + +class TimerTest(unittest.TestCase): + # Helper methods. + @contextlib.contextmanager + def ReplacePlatformProcessorCall(self, f): + try: + old_proc = platform.processor + platform.processor = f + yield + finally: + platform.processor = old_proc + + @contextlib.contextmanager + def ReplaceQPCCheck(self, f): + try: + old_qpc = trace_time.IsQPCUsable + trace_time.IsQPCUsable = f + yield + finally: + trace_time.IsQPCUsable = old_qpc + + # Platform detection tests. + def testInitializeNowFunction_platformNotSupported(self): + with self.assertRaises(RuntimeError): + trace_time.InitializeNowFunction('invalid_platform') + + def testInitializeNowFunction_windows(self): + if not (sys.platform.startswith(trace_time._PLATFORMS['windows']) + or sys.platform.startswith(trace_time._PLATFORMS['cygwin'])): + return True + trace_time.InitializeNowFunction(sys.platform) + self.assertTrue(trace_time.GetClock() == trace_time._WIN_HIRES + or trace_time.GetClock() == trace_time._WIN_LORES) + + def testInitializeNowFunction_linux(self): + if not sys.platform.startswith(trace_time._PLATFORMS['linux']): + return True + trace_time.InitializeNowFunction(sys.platform) + self.assertEqual(trace_time.GetClock(), trace_time._LINUX_CLOCK) + + def testInitializeNowFunction_mac(self): + if not sys.platform.startswith(trace_time._PLATFORMS['mac']): + return True + trace_time.InitializeNowFunction(sys.platform) + self.assertEqual(trace_time.GetClock(), trace_time._MAC_CLOCK) + + # Windows Tests + def testIsQPCUsable_buggyAthlonProcReturnsFalse(self): + if not (sys.platform.startswith(trace_time._PLATFORMS['windows']) + or sys.platform.startswith(trace_time._PLATFORMS['cygwin'])): + return True + + def BuggyAthlonProc(): + return 'AMD64 Family 15 Model 23 Stepping 6, AuthenticAMD' + + with self.ReplacePlatformProcessorCall(BuggyAthlonProc): + self.assertFalse(trace_time.IsQPCUsable()) + + def testIsQPCUsable_returnsTrueOnWindows(self): + if not (sys.platform.startswith(trace_time._PLATFORMS['windows']) + or sys.platform.startswith(trace_time._PLATFORMS['cygwin'])): + return True + + def Proc(): + return 'Intel64 Family 15 Model 23 Stepping 6, GenuineIntel' + + with self.ReplacePlatformProcessorCall(Proc): + self.assertTrue(trace_time.IsQPCUsable()) + + def testGetWinNowFunction_QPC(self): + if not (sys.platform.startswith(trace_time._PLATFORMS['windows']) + or sys.platform.startswith(trace_time._PLATFORMS['cygwin'])): + return True + # Test requires QPC to be available on platform. + if not trace_time.IsQPCUsable(): + return True + self.assertGreater(trace_time.monotonic(), 0) + + # Works even if QPC would work. + def testGetWinNowFunction_GetTickCount(self): + if not (sys.platform.startswith(trace_time._PLATFORMS['windows']) + or sys.platform.startswith(trace_time._PLATFORMS['cygwin'])): + return True + with self.ReplaceQPCCheck(lambda: False): + self.assertGreater(trace_time.monotonic(), 0) + + # Linux tests. + def testGetClockGetTimeClockNumber_linux(self): + self.assertEquals(trace_time.GetClockGetTimeClockNumber('linux'), 1) + + def testGetClockGetTimeClockNumber_freebsd(self): + self.assertEquals(trace_time.GetClockGetTimeClockNumber('freebsd'), 4) + + def testGetClockGetTimeClockNumber_bsd(self): + self.assertEquals(trace_time.GetClockGetTimeClockNumber('bsd'), 3) + + def testGetClockGetTimeClockNumber_sunos(self): + self.assertEquals(trace_time.GetClockGetTimeClockNumber('sunos5'), 4) + + # Smoke Test. + def testMonotonic(self): + time_one = trace_time.Now() + for _ in xrange(1000): + time_two = trace_time.Now() + self.assertLessEqual(time_one, time_two) + time_one = time_two + + +if __name__ == '__main__': + logging.getLogger().setLevel(logging.DEBUG) + unittest.main(verbosity=2) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/PRESUBMIT.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/PRESUBMIT.py new file mode 100644 index 0000000..c1d92fe --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/PRESUBMIT.py @@ -0,0 +1,31 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + + +def CheckChangeOnUpload(input_api, output_api): + return _CommonChecks(input_api, output_api) + + +def CheckChangeOnCommit(input_api, output_api): + return _CommonChecks(input_api, output_api) + + +def _CommonChecks(input_api, output_api): + results = [] + results += input_api.RunTests(input_api.canned_checks.GetPylint( + input_api, output_api, extra_paths_list=_GetPathsToPrepend(input_api), + pylintrc='../../pylintrc')) + return results + + +def _GetPathsToPrepend(input_api): + project_dir = input_api.PresubmitLocalPath() + catapult_dir = input_api.os_path.join(project_dir, '..', '..') + return [ + project_dir, + input_api.os_path.join(catapult_dir, 'dependency_manager'), + input_api.os_path.join(catapult_dir, 'devil'), + input_api.os_path.join(catapult_dir, 'third_party', 'mock'), + input_api.os_path.join(catapult_dir, 'third_party', 'pyfakefs'), + ] diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/__init__.py new file mode 100644 index 0000000..3f26311 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/__init__.py @@ -0,0 +1,140 @@ +#!/usr/bin/env python + +# Copyright (c) 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import functools +import inspect +import os +import sys +import time + + +def GetCatapultDir(): + return os.path.normpath( + os.path.join(os.path.dirname(__file__), '..', '..', '..')) + + +def IsRunningOnCrosDevice(): + """Returns True if we're on a ChromeOS device.""" + lsb_release = '/etc/lsb-release' + if sys.platform.startswith('linux') and os.path.exists(lsb_release): + with open(lsb_release, 'r') as f: + res = f.read() + if res.count('CHROMEOS_RELEASE_NAME'): + return True + return False + + +def _ExecutableExtensions(): + # pathext is, e.g. '.com;.exe;.bat;.cmd' + exts = os.getenv('PATHEXT').split(';') #e.g. ['.com','.exe','.bat','.cmd'] + return [x[1:].upper() for x in exts] #e.g. ['COM','EXE','BAT','CMD'] + + +def IsExecutable(path): + if os.path.isfile(path): + if hasattr(os, 'name') and os.name == 'nt': + return path.split('.')[-1].upper() in _ExecutableExtensions() + else: + return os.access(path, os.X_OK) + else: + return False + + +def _AddDirToPythonPath(*path_parts): + path = os.path.abspath(os.path.join(*path_parts)) + if os.path.isdir(path) and path not in sys.path: + # Some callsite that use telemetry assumes that sys.path[0] is the directory + # containing the script, so we add these extra paths to right after it. + sys.path.insert(1, path) + +_AddDirToPythonPath(os.path.join(GetCatapultDir(), 'devil')) +_AddDirToPythonPath(os.path.join(GetCatapultDir(), 'dependency_manager')) +_AddDirToPythonPath(os.path.join(GetCatapultDir(), 'third_party', 'mock')) +# mox3 is needed for pyfakefs usage, but not for pylint. +_AddDirToPythonPath(os.path.join(GetCatapultDir(), 'third_party', 'mox3')) +_AddDirToPythonPath( + os.path.join(GetCatapultDir(), 'third_party', 'pyfakefs')) + +from devil.utils import timeout_retry +from devil.utils import reraiser_thread + + +# Decorator that adds timeout functionality to a function. +def Timeout(default_timeout): + return lambda func: TimeoutDeco(func, default_timeout) + +# Note: Even though the "timeout" keyword argument is the only +# keyword argument that will need to be given to the decorated function, +# we still have to use the **kwargs syntax, because we have to use +# the *args syntax here before (since the decorator decorates functions +# with different numbers of positional arguments) and Python doesn't allow +# a single named keyword argument after *args. +# (e.g., 'def foo(*args, bar=42):' is a syntax error) + +def TimeoutDeco(func, default_timeout): + @functools.wraps(func) + def RunWithTimeout(*args, **kwargs): + if 'timeout' in kwargs: + timeout = kwargs['timeout'] + else: + timeout = default_timeout + try: + return timeout_retry.Run(func, timeout, 0, args=args) + except reraiser_thread.TimeoutError: + print '%s timed out.' % func.__name__ + return False + return RunWithTimeout + + +MIN_POLL_INTERVAL_IN_SECONDS = 0.1 +MAX_POLL_INTERVAL_IN_SECONDS = 5 +OUTPUT_INTERVAL_IN_SECONDS = 300 + +def WaitFor(condition, timeout): + """Waits for up to |timeout| secs for the function |condition| to return True. + + Polling frequency is (elapsed_time / 10), with a min of .1s and max of 5s. + + Returns: + Result of |condition| function (if present). + """ + def GetConditionString(): + if condition.__name__ == '<lambda>': + try: + return inspect.getsource(condition).strip() + except IOError: + pass + return condition.__name__ + + # Do an initial check to see if its true. + res = condition() + if res: + return res + start_time = time.time() + last_output_time = start_time + elapsed_time = time.time() - start_time + while elapsed_time < timeout: + res = condition() + if res: + return res + now = time.time() + elapsed_time = now - start_time + last_output_elapsed_time = now - last_output_time + if last_output_elapsed_time > OUTPUT_INTERVAL_IN_SECONDS: + last_output_time = time.time() + poll_interval = min(max(elapsed_time / 10., MIN_POLL_INTERVAL_IN_SECONDS), + MAX_POLL_INTERVAL_IN_SECONDS) + time.sleep(poll_interval) + raise TimeoutException('Timed out while waiting %ds for %s.' % + (timeout, GetConditionString())) + +class TimeoutException(Exception): + """The operation failed to complete because of a timeout. + + It is possible that waiting for a longer period of time would result in a + successful operation. + """ + pass diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/binary_manager.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/binary_manager.py new file mode 100644 index 0000000..8af08cf --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/binary_manager.py @@ -0,0 +1,61 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import logging + +import dependency_manager + + +class BinaryManager(object): + """ This class is effectively a subclass of dependency_manager, but uses a + different number of arguments for FetchPath and LocalPath. + """ + + def __init__(self, config_files): + if not config_files or type(config_files) != list: + raise ValueError( + 'Must supply a list of config files to the BinaryManager') + configs = [dependency_manager.BaseConfig(config) for config in config_files] + self._dependency_manager = dependency_manager.DependencyManager(configs) + + def FetchPathWithVersion(self, binary_name, os_name, arch, os_version=None): + """ Return a path to the executable for <binary_name>, or None if not found. + + Will attempt to download from cloud storage if needed. + """ + return self._WrapDependencyManagerFunction( + self._dependency_manager.FetchPathWithVersion, binary_name, os_name, + arch, os_version) + + def FetchPath(self, binary_name, os_name, arch, os_version=None): + """ Return a path to the executable for <binary_name>, or None if not found. + + Will attempt to download from cloud storage if needed. + """ + return self._WrapDependencyManagerFunction( + self._dependency_manager.FetchPath, binary_name, os_name, arch, + os_version) + + def LocalPath(self, binary_name, os_name, arch, os_version=None): + """ Return a local path to the given binary name, or None if not found. + + Will not download from cloud_storage. + """ + return self._WrapDependencyManagerFunction( + self._dependency_manager.LocalPath, binary_name, os_name, arch, + os_version) + + def _WrapDependencyManagerFunction( + self, function, binary_name, os_name, arch, os_version): + platform = '%s_%s' % (os_name, arch) + if os_version: + try: + versioned_platform = '%s_%s_%s' % (os_name, os_version, arch) + return function(binary_name, versioned_platform) + except dependency_manager.NoPathFoundError: + logging.warning( + 'Cannot find path for %s on platform %s. Falling back to %s.', + binary_name, versioned_platform, platform) + return function(binary_name, platform) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/binary_manager_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/binary_manager_unittest.py new file mode 100644 index 0000000..ccf21ad --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/binary_manager_unittest.py @@ -0,0 +1,214 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import json +import os + +from pyfakefs import fake_filesystem_unittest +from dependency_manager import exceptions + +from py_utils import binary_manager + +class BinaryManagerTest(fake_filesystem_unittest.TestCase): + # TODO(aiolos): disable cloud storage use during this test. + + def setUp(self): + self.setUpPyfakefs() + # pylint: disable=bad-continuation + self.expected_dependencies = { + 'dep_1': { + 'cloud_storage_base_folder': 'dependencies/fake_config', + 'cloud_storage_bucket': 'chrome-tel', + 'file_info': { + 'linux_x86_64': { + 'cloud_storage_hash': '661ce936b3276f7ec3d687ab62be05b96d796f21', + 'download_path': 'bin/linux/x86_64/dep_1' + }, + 'mac_x86_64': { + 'cloud_storage_hash': 'c7b1bfc6399dc683058e88dac1ef0f877edea74b', + 'download_path': 'bin/mac/x86_64/dep_1' + }, + 'win_AMD64': { + 'cloud_storage_hash': 'ac4fee89a51662b9d920bce443c19b9b2929b198', + 'download_path': 'bin/win/AMD64/dep_1.exe' + }, + 'win_x86': { + 'cloud_storage_hash': 'e246e183553ea26967d7b323ea269e3357b9c837', + 'download_path': 'bin/win/x86/dep_1.exe' + } + } + }, + 'dep_2': { + 'cloud_storage_base_folder': 'dependencies/fake_config', + 'cloud_storage_bucket': 'chrome-tel', + 'file_info': { + 'linux_x86_64': { + 'cloud_storage_hash': '13a57efae9a680ac0f160b3567e02e81f4ac493c', + 'download_path': 'bin/linux/x86_64/dep_2', + 'local_paths': [ + '../../example/location/linux/dep_2', + '../../example/location2/linux/dep_2' + ] + }, + 'mac_x86_64': { + 'cloud_storage_hash': 'd10c0ddaa8586b20449e951216bee852fa0f8850', + 'download_path': 'bin/mac/x86_64/dep_2', + 'local_paths': [ + '../../example/location/mac/dep_2', + '../../example/location2/mac/dep_2' + ] + }, + 'win_AMD64': { + 'cloud_storage_hash': 'fd5b417f78c7f7d9192a98967058709ded1d399d', + 'download_path': 'bin/win/AMD64/dep_2.exe', + 'local_paths': [ + '../../example/location/win64/dep_2', + '../../example/location2/win64/dep_2' + ] + }, + 'win_x86': { + 'cloud_storage_hash': 'cf5c8fe920378ce30d057e76591d57f63fd31c1a', + 'download_path': 'bin/win/x86/dep_2.exe', + 'local_paths': [ + '../../example/location/win32/dep_2', + '../../example/location2/win32/dep_2' + ] + }, + 'android_k_x64': { + 'cloud_storage_hash': '09177be2fed00b44df0e777932828425440b23b3', + 'download_path': 'bin/android/x64/k/dep_2.apk', + 'local_paths': [ + '../../example/location/android_x64/k/dep_2', + '../../example/location2/android_x64/k/dep_2' + ] + }, + 'android_l_x64': { + 'cloud_storage_hash': '09177be2fed00b44df0e777932828425440b23b3', + 'download_path': 'bin/android/x64/l/dep_2.apk', + 'local_paths': [ + '../../example/location/android_x64/l/dep_2', + '../../example/location2/android_x64/l/dep_2' + ] + }, + 'android_k_x86': { + 'cloud_storage_hash': 'bcf02af039713a48b69b89bd7f0f9c81ed8183a4', + 'download_path': 'bin/android/x86/k/dep_2.apk', + 'local_paths': [ + '../../example/location/android_x86/k/dep_2', + '../../example/location2/android_x86/k/dep_2' + ] + }, + 'android_l_x86': { + 'cloud_storage_hash': '12a74cec071017ba11655b5740b8a58e2f52a219', + 'download_path': 'bin/android/x86/l/dep_2.apk', + 'local_paths': [ + '../../example/location/android_x86/l/dep_2', + '../../example/location2/android_x86/l/dep_2' + ] + } + } + }, + 'dep_3': { + 'file_info': { + 'linux_x86_64': { + 'local_paths': [ + '../../example/location/linux/dep_3', + '../../example/location2/linux/dep_3' + ] + }, + 'mac_x86_64': { + 'local_paths': [ + '../../example/location/mac/dep_3', + '../../example/location2/mac/dep_3' + ] + }, + 'win_AMD64': { + 'local_paths': [ + '../../example/location/win64/dep_3', + '../../example/location2/win64/dep_3' + ] + }, + 'win_x86': { + 'local_paths': [ + '../../example/location/win32/dep_3', + '../../example/location2/win32/dep_3' + ] + } + } + } + } + # pylint: enable=bad-continuation + fake_config = { + 'config_type': 'BaseConfig', + 'dependencies': self.expected_dependencies + } + + self.base_config = os.path.join(os.path.dirname(__file__), + 'example_config.json') + self.fs.CreateFile(self.base_config, contents=json.dumps(fake_config)) + linux_file = os.path.join( + os.path.dirname(self.base_config), + os.path.join('..', '..', 'example', 'location2', 'linux', 'dep_2')) + android_file = os.path.join( + os.path.dirname(self.base_config), + '..', '..', 'example', 'location', 'android_x86', 'l', 'dep_2') + self.expected_dep2_linux_file = os.path.abspath(linux_file) + self.expected_dep2_android_file = os.path.abspath(android_file) + self.fs.CreateFile(self.expected_dep2_linux_file) + self.fs.CreateFile(self.expected_dep2_android_file) + + def tearDown(self): + self.tearDownPyfakefs() + + def testInitializationNoConfig(self): + with self.assertRaises(ValueError): + binary_manager.BinaryManager(None) + + def testInitializationMissingConfig(self): + with self.assertRaises(ValueError): + binary_manager.BinaryManager(os.path.join('missing', 'path')) + + def testInitializationWithConfig(self): + with self.assertRaises(ValueError): + manager = binary_manager.BinaryManager(self.base_config) + manager = binary_manager.BinaryManager([self.base_config]) + self.assertItemsEqual(self.expected_dependencies, + manager._dependency_manager._lookup_dict) + + def testSuccessfulFetchPathNoOsVersion(self): + manager = binary_manager.BinaryManager([self.base_config]) + found_path = manager.FetchPath('dep_2', 'linux', 'x86_64') + self.assertEqual(self.expected_dep2_linux_file, found_path) + + def testSuccessfulFetchPathOsVersion(self): + manager = binary_manager.BinaryManager([self.base_config]) + found_path = manager.FetchPath('dep_2', 'android', 'x86', 'l') + self.assertEqual(self.expected_dep2_android_file, found_path) + + def testSuccessfulFetchPathFallbackToNoOsVersion(self): + manager = binary_manager.BinaryManager([self.base_config]) + found_path = manager.FetchPath('dep_2', 'linux', 'x86_64', 'fake_version') + self.assertEqual(self.expected_dep2_linux_file, found_path) + + def testFailedFetchPathMissingDep(self): + manager = binary_manager.BinaryManager([self.base_config]) + with self.assertRaises(exceptions.NoPathFoundError): + manager.FetchPath('missing_dep', 'linux', 'x86_64') + with self.assertRaises(exceptions.NoPathFoundError): + manager.FetchPath('missing_dep', 'android', 'x86', 'l') + with self.assertRaises(exceptions.NoPathFoundError): + manager.FetchPath('dep_1', 'linux', 'bad_arch') + with self.assertRaises(exceptions.NoPathFoundError): + manager.FetchPath('dep_1', 'bad_os', 'x86') + + def testSuccessfulLocalPathNoOsVersion(self): + manager = binary_manager.BinaryManager([self.base_config]) + found_path = manager.LocalPath('dep_2', 'linux', 'x86_64') + self.assertEqual(self.expected_dep2_linux_file, found_path) + + def testSuccessfulLocalPathOsVersion(self): + manager = binary_manager.BinaryManager([self.base_config]) + found_path = manager.LocalPath('dep_2', 'android', 'x86', 'l') + self.assertEqual(self.expected_dep2_android_file, found_path) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/chrome_binaries.json b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/chrome_binaries.json new file mode 100644 index 0000000..bb0b2e1 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/chrome_binaries.json @@ -0,0 +1,86 @@ +{ + "config_type": "BaseConfig", + "dependencies": { + "chrome_canary": { + "cloud_storage_base_folder": "binary_dependencies", + "cloud_storage_bucket": "chrome-telemetry", + "file_info": { + "mac_x86_64": { + "cloud_storage_hash": "ab33866d00fb0c9d6543c20a21da5f047ba6a7b6", + "download_path": "bin/reference_builds/chrome-mac64.zip", + "path_within_archive": "chrome-mac/Google Chrome.app/Contents/MacOS/Google Chrome", + "version_in_cs": "58.0.3004.0" + }, + "win_AMD64": { + "cloud_storage_hash": "2348f9bcf421fa4739493a12b4c8e3210a528d84", + "download_path": "bin\\reference_build\\chrome-win64-pgo.zip", + "path_within_archive": "chrome-win64-pgo\\chrome.exe", + "version_in_cs": "58.0.3004.0" + }, + "win_x86": { + "cloud_storage_hash": "421c59cfbc02bee9b74f68869af3a930b5988e71", + "download_path": "bin\\reference_build\\chrome-win32-pgo.zip", + "path_within_archive": "chrome-win32-pgo\\chrome.exe", + "version_in_cs": "58.0.3004.0" + } + } + }, + "chrome_dev": { + "cloud_storage_base_folder": "binary_dependencies", + "cloud_storage_bucket": "chrome-telemetry", + "file_info": { + "linux_x86_64": { + "cloud_storage_hash": "d61c3c5a81dc5e0a896589ab3d72a253e4b9cc90", + "download_path": "bin/reference_build/chrome-linux64.zip", + "path_within_archive": "chrome-precise64/chrome", + "version_in_cs": "58.0.3000.4" + } + } + }, + "chrome_stable": { + "cloud_storage_base_folder": "binary_dependencies", + "cloud_storage_bucket": "chrome-telemetry", + "file_info": { + "android_k_armeabi-v7a": { + "cloud_storage_hash": "2f0629a395974793c3a25e6c2dc971487742bd49", + "download_path": "bin/reference_build/android_k_armeabi-v7a/ChromeStable.apk", + "version_in_cs": "56.0.2924.87" + }, + "android_l_arm64-v8a": { + "cloud_storage_hash": "03306b04e49ed3b0c4c29da84a128d76659624f2", + "download_path": "bin/reference_build/android_l_arm64-v8a/ChromeStable.apk", + "version_in_cs": "56.0.2924.87" + }, + "android_l_armeabi-v7a": { + "cloud_storage_hash": "2f0629a395974793c3a25e6c2dc971487742bd49", + "download_path": "bin/reference_build/android_l_armeabi-v7a/ChromeStable.apk", + "version_in_cs": "56.0.2924.87" + }, + "linux_x86_64": { + "cloud_storage_hash": "07dd594d89c8350978ed368b55204d7ee3641001", + "download_path": "bin/reference_build/chrome-linux64.zip", + "path_within_archive": "chrome-precise64/chrome", + "version_in_cs": "56.0.2924.87" + }, + "mac_x86_64": { + "cloud_storage_hash": "e2e1ac31913ab6976084375540e17bbaa2401820", + "download_path": "bin/reference_builds/chrome-mac64.zip", + "path_within_archive": "chrome-mac/Google Chrome.app/Contents/MacOS/Google Chrome", + "version_in_cs": "56.0.2924.87" + }, + "win_AMD64": { + "cloud_storage_hash": "d6624303bceff81503db78c4ad17d1ebd1af7b68", + "download_path": "bin\\reference_build\\chrome-win64-pgo.zip", + "path_within_archive": "chrome-win64-pgo\\chrome.exe", + "version_in_cs": "56.0.2924.87" + }, + "win_x86": { + "cloud_storage_hash": "2b89d4571eeac4d80d4a1fac7c92db3f7e0bd565", + "download_path": "bin\\reference_build\\chrome-win32-pgo.zip", + "path_within_archive": "chrome-win32-pgo\\chrome.exe", + "version_in_cs": "56.0.2924.87" + } + } + } + } +} \ No newline at end of file diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/cloud_storage.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/cloud_storage.py new file mode 100644 index 0000000..7bc9a19 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/cloud_storage.py @@ -0,0 +1,461 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Wrappers for gsutil, for basic interaction with Google Cloud Storage.""" + +import collections +import contextlib +import hashlib +import logging +import os +import shutil +import stat +import subprocess +import re +import sys +import tempfile + +import py_utils +from py_utils import lock + +# Do a no-op import here so that cloud_storage_global_lock dep is picked up +# by https://cs.chromium.org/chromium/src/build/android/test_runner.pydeps. +# TODO(nedn, jbudorick): figure out a way to get rid of this ugly hack. +from py_utils import cloud_storage_global_lock # pylint: disable=unused-import + +logger = logging.getLogger(__name__) # pylint: disable=invalid-name + + +PUBLIC_BUCKET = 'chromium-telemetry' +PARTNER_BUCKET = 'chrome-partner-telemetry' +INTERNAL_BUCKET = 'chrome-telemetry' +TELEMETRY_OUTPUT = 'chrome-telemetry-output' + +# Uses ordered dict to make sure that bucket's key-value items are ordered from +# the most open to the most restrictive. +BUCKET_ALIASES = collections.OrderedDict(( + ('public', PUBLIC_BUCKET), + ('partner', PARTNER_BUCKET), + ('internal', INTERNAL_BUCKET), + ('output', TELEMETRY_OUTPUT), +)) + +BUCKET_ALIAS_NAMES = BUCKET_ALIASES.keys() + + +_GSUTIL_PATH = os.path.join(py_utils.GetCatapultDir(), 'third_party', 'gsutil', + 'gsutil') + +# TODO(tbarzic): A workaround for http://crbug.com/386416 and +# http://crbug.com/359293. See |_RunCommand|. +_CROS_GSUTIL_HOME_WAR = '/home/chromeos-test/' + + +# If Environment variables has DISABLE_CLOUD_STORAGE_IO set to '1', any method +# calls that invoke cloud storage network io will throw exceptions. +DISABLE_CLOUD_STORAGE_IO = 'DISABLE_CLOUD_STORAGE_IO' + +# The maximum number of seconds to wait to acquire the pseudo lock for a cloud +# storage file before raising an exception. +LOCK_ACQUISITION_TIMEOUT = 10 + + +class CloudStorageError(Exception): + + @staticmethod + def _GetConfigInstructions(): + command = _GSUTIL_PATH + if py_utils.IsRunningOnCrosDevice(): + command = 'HOME=%s %s' % (_CROS_GSUTIL_HOME_WAR, _GSUTIL_PATH) + return ('To configure your credentials:\n' + ' 1. Run "%s config" and follow its instructions.\n' + ' 2. If you have a @google.com account, use that account.\n' + ' 3. For the project-id, just enter 0.' % command) + + +class PermissionError(CloudStorageError): + + def __init__(self): + super(PermissionError, self).__init__( + 'Attempted to access a file from Cloud Storage but you don\'t ' + 'have permission. ' + self._GetConfigInstructions()) + + +class CredentialsError(CloudStorageError): + + def __init__(self): + super(CredentialsError, self).__init__( + 'Attempted to access a file from Cloud Storage but you have no ' + 'configured credentials. ' + self._GetConfigInstructions()) + + +class CloudStorageIODisabled(CloudStorageError): + pass + + +class NotFoundError(CloudStorageError): + pass + + +class ServerError(CloudStorageError): + pass + + +# TODO(tonyg/dtu): Can this be replaced with distutils.spawn.find_executable()? +def _FindExecutableInPath(relative_executable_path, *extra_search_paths): + search_paths = list(extra_search_paths) + os.environ['PATH'].split(os.pathsep) + for search_path in search_paths: + executable_path = os.path.join(search_path, relative_executable_path) + if py_utils.IsExecutable(executable_path): + return executable_path + return None + + +def _EnsureExecutable(gsutil): + """chmod +x if gsutil is not executable.""" + st = os.stat(gsutil) + if not st.st_mode & stat.S_IEXEC: + os.chmod(gsutil, st.st_mode | stat.S_IEXEC) + + +def _RunCommand(args): + # On cros device, as telemetry is running as root, home will be set to /root/, + # which is not writable. gsutil will attempt to create a download tracker dir + # in home dir and fail. To avoid this, override HOME dir to something writable + # when running on cros device. + # + # TODO(tbarzic): Figure out a better way to handle gsutil on cros. + # http://crbug.com/386416, http://crbug.com/359293. + gsutil_env = None + if py_utils.IsRunningOnCrosDevice(): + gsutil_env = os.environ.copy() + gsutil_env['HOME'] = _CROS_GSUTIL_HOME_WAR + + if os.name == 'nt': + # If Windows, prepend python. Python scripts aren't directly executable. + args = [sys.executable, _GSUTIL_PATH] + args + else: + # Don't do it on POSIX, in case someone is using a shell script to redirect. + args = [_GSUTIL_PATH] + args + _EnsureExecutable(_GSUTIL_PATH) + + if args[0] not in ('help', 'hash', 'version') and not IsNetworkIOEnabled(): + raise CloudStorageIODisabled( + "Environment variable DISABLE_CLOUD_STORAGE_IO is set to 1. " + 'Command %s is not allowed to run' % args) + + gsutil = subprocess.Popen(args, stdout=subprocess.PIPE, + stderr=subprocess.PIPE, env=gsutil_env) + stdout, stderr = gsutil.communicate() + + if gsutil.returncode: + raise GetErrorObjectForCloudStorageStderr(stderr) + + return stdout + + +def GetErrorObjectForCloudStorageStderr(stderr): + if (stderr.startswith(( + 'You are attempting to access protected data with no configured', + 'Failure: No handler was ready to authenticate.')) or + re.match('.*401.*does not have .* access to .*', stderr)): + return CredentialsError() + if ('status=403' in stderr or 'status 403' in stderr or + '403 Forbidden' in stderr or + re.match('.*403.*does not have .* access to .*', stderr)): + return PermissionError() + if (stderr.startswith('InvalidUriError') or 'No such object' in stderr or + 'No URLs matched' in stderr or 'One or more URLs matched no' in stderr): + return NotFoundError(stderr) + if '500 Internal Server Error' in stderr: + return ServerError(stderr) + return CloudStorageError(stderr) + + +def IsNetworkIOEnabled(): + """Returns true if cloud storage is enabled.""" + disable_cloud_storage_env_val = os.getenv(DISABLE_CLOUD_STORAGE_IO) + + if disable_cloud_storage_env_val and disable_cloud_storage_env_val != '1': + logger.error( + 'Unsupported value of environment variable ' + 'DISABLE_CLOUD_STORAGE_IO. Expected None or \'1\' but got %s.', + disable_cloud_storage_env_val) + + return disable_cloud_storage_env_val != '1' + + +def List(bucket): + query = 'gs://%s/' % bucket + stdout = _RunCommand(['ls', query]) + return [url[len(query):] for url in stdout.splitlines()] + + +def Exists(bucket, remote_path): + try: + _RunCommand(['ls', 'gs://%s/%s' % (bucket, remote_path)]) + return True + except NotFoundError: + return False + + +def Move(bucket1, bucket2, remote_path): + url1 = 'gs://%s/%s' % (bucket1, remote_path) + url2 = 'gs://%s/%s' % (bucket2, remote_path) + logger.info('Moving %s to %s', url1, url2) + _RunCommand(['mv', url1, url2]) + + +def Copy(bucket_from, bucket_to, remote_path_from, remote_path_to): + """Copy a file from one location in CloudStorage to another. + + Args: + bucket_from: The cloud storage bucket where the file is currently located. + bucket_to: The cloud storage bucket it is being copied to. + remote_path_from: The file path where the file is located in bucket_from. + remote_path_to: The file path it is being copied to in bucket_to. + + It should: cause no changes locally or to the starting file, and will + overwrite any existing files in the destination location. + """ + url1 = 'gs://%s/%s' % (bucket_from, remote_path_from) + url2 = 'gs://%s/%s' % (bucket_to, remote_path_to) + logger.info('Copying %s to %s', url1, url2) + _RunCommand(['cp', url1, url2]) + + +def Delete(bucket, remote_path): + url = 'gs://%s/%s' % (bucket, remote_path) + logger.info('Deleting %s', url) + _RunCommand(['rm', url]) + + +def Get(bucket, remote_path, local_path): + with _FileLock(local_path): + _GetLocked(bucket, remote_path, local_path) + + +_CLOUD_STORAGE_GLOBAL_LOCK = os.path.join( + os.path.dirname(os.path.abspath(__file__)), 'cloud_storage_global_lock.py') + + +@contextlib.contextmanager +def _FileLock(base_path): + pseudo_lock_path = '%s.pseudo_lock' % base_path + _CreateDirectoryIfNecessary(os.path.dirname(pseudo_lock_path)) + + # Make sure that we guard the creation, acquisition, release, and removal of + # the pseudo lock all with the same guard (_CLOUD_STORAGE_GLOBAL_LOCK). + # Otherwise, we can get nasty interleavings that result in multiple processes + # thinking they have an exclusive lock, like: + # + # (Process 1) Create and acquire the pseudo lock + # (Process 1) Release the pseudo lock + # (Process 1) Release the file lock + # (Process 2) Open and acquire the existing pseudo lock + # (Process 1) Delete the (existing) pseudo lock + # (Process 3) Create and acquire a new pseudo lock + # + # Using the same guard for creation and removal of the pseudo lock guarantees + # that all processes are referring to the same lock. + pseudo_lock_fd = None + pseudo_lock_fd_return = [] + py_utils.WaitFor(lambda: _AttemptPseudoLockAcquisition(pseudo_lock_path, + pseudo_lock_fd_return), + LOCK_ACQUISITION_TIMEOUT) + pseudo_lock_fd = pseudo_lock_fd_return[0] + + try: + yield + finally: + py_utils.WaitFor(lambda: _AttemptPseudoLockRelease(pseudo_lock_fd), + LOCK_ACQUISITION_TIMEOUT) + +def _AttemptPseudoLockAcquisition(pseudo_lock_path, pseudo_lock_fd_return): + """Try to acquire the lock and return a boolean indicating whether the attempt + was successful. If the attempt was successful, pseudo_lock_fd_return, which + should be an empty array, will be modified to contain a single entry: the file + descriptor of the (now acquired) lock file. + + This whole operation is guarded with the global cloud storage lock, which + prevents race conditions that might otherwise cause multiple processes to + believe they hold the same pseudo lock (see _FileLock for more details). + """ + pseudo_lock_fd = None + try: + with open(_CLOUD_STORAGE_GLOBAL_LOCK) as global_file: + with lock.FileLock(global_file, lock.LOCK_EX | lock.LOCK_NB): + # Attempt to acquire the lock in a non-blocking manner. If we block, + # then we'll cause deadlock because another process will be unable to + # acquire the cloud storage global lock in order to release the pseudo + # lock. + pseudo_lock_fd = open(pseudo_lock_path, 'w') + lock.AcquireFileLock(pseudo_lock_fd, lock.LOCK_EX | lock.LOCK_NB) + pseudo_lock_fd_return.append(pseudo_lock_fd) + return True + except (lock.LockException, IOError): + # We failed to acquire either the global cloud storage lock or the pseudo + # lock. + if pseudo_lock_fd: + pseudo_lock_fd.close() + return False + + +def _AttemptPseudoLockRelease(pseudo_lock_fd): + """Try to release the pseudo lock and return a boolean indicating whether + the release was succesful. + + This whole operation is guarded with the global cloud storage lock, which + prevents race conditions that might otherwise cause multiple processes to + believe they hold the same pseudo lock (see _FileLock for more details). + """ + pseudo_lock_path = pseudo_lock_fd.name + try: + with open(_CLOUD_STORAGE_GLOBAL_LOCK) as global_file: + with lock.FileLock(global_file, lock.LOCK_EX | lock.LOCK_NB): + lock.ReleaseFileLock(pseudo_lock_fd) + pseudo_lock_fd.close() + try: + os.remove(pseudo_lock_path) + except OSError: + # We don't care if the pseudo lock gets removed elsewhere before + # we have a chance to do so. + pass + return True + except (lock.LockException, IOError): + # We failed to acquire the global cloud storage lock and are thus unable to + # release the pseudo lock. + return False + + +def _CreateDirectoryIfNecessary(directory): + if not os.path.exists(directory): + os.makedirs(directory) + + +def _GetLocked(bucket, remote_path, local_path): + url = 'gs://%s/%s' % (bucket, remote_path) + logger.info('Downloading %s to %s', url, local_path) + _CreateDirectoryIfNecessary(os.path.dirname(local_path)) + with tempfile.NamedTemporaryFile( + dir=os.path.dirname(local_path), + delete=False) as partial_download_path: + try: + # Windows won't download to an open file. + partial_download_path.close() + try: + _RunCommand(['cp', url, partial_download_path.name]) + except ServerError: + logger.info('Cloud Storage server error, retrying download') + _RunCommand(['cp', url, partial_download_path.name]) + shutil.move(partial_download_path.name, local_path) + finally: + if os.path.exists(partial_download_path.name): + os.remove(partial_download_path.name) + + +def Insert(bucket, remote_path, local_path, publicly_readable=False): + """ Upload file in |local_path| to cloud storage. + Args: + bucket: the google cloud storage bucket name. + remote_path: the remote file path in |bucket|. + local_path: path of the local file to be uploaded. + publicly_readable: whether the uploaded file has publicly readable + permission. + + Returns: + The url where the file is uploaded to. + """ + url = 'gs://%s/%s' % (bucket, remote_path) + command_and_args = ['cp'] + extra_info = '' + if publicly_readable: + command_and_args += ['-a', 'public-read'] + extra_info = ' (publicly readable)' + command_and_args += [local_path, url] + logger.info('Uploading %s to %s%s', local_path, url, extra_info) + _RunCommand(command_and_args) + return 'https://console.developers.google.com/m/cloudstorage/b/%s/o/%s' % ( + bucket, remote_path) + + +def GetIfHashChanged(cs_path, download_path, bucket, file_hash): + """Downloads |download_path| to |file_path| if |file_path| doesn't exist or + it's hash doesn't match |file_hash|. + + Returns: + True if the binary was changed. + Raises: + CredentialsError if the user has no configured credentials. + PermissionError if the user does not have permission to access the bucket. + NotFoundError if the file is not in the given bucket in cloud_storage. + """ + with _FileLock(download_path): + if (os.path.exists(download_path) and + CalculateHash(download_path) == file_hash): + return False + _GetLocked(bucket, cs_path, download_path) + return True + + +def GetIfChanged(file_path, bucket): + """Gets the file at file_path if it has a hash file that doesn't match or + if there is no local copy of file_path, but there is a hash file for it. + + Returns: + True if the binary was changed. + Raises: + CredentialsError if the user has no configured credentials. + PermissionError if the user does not have permission to access the bucket. + NotFoundError if the file is not in the given bucket in cloud_storage. + """ + with _FileLock(file_path): + hash_path = file_path + '.sha1' + if not os.path.exists(hash_path): + logger.warning('Hash file not found: %s', hash_path) + return False + + expected_hash = ReadHash(hash_path) + if os.path.exists(file_path) and CalculateHash(file_path) == expected_hash: + return False + _GetLocked(bucket, expected_hash, file_path) + return True + + +def GetFilesInDirectoryIfChanged(directory, bucket): + """ Scan the directory for .sha1 files, and download them from the given + bucket in cloud storage if the local and remote hash don't match or + there is no local copy. + """ + if not os.path.isdir(directory): + raise ValueError( + '%s does not exist. Must provide a valid directory path.' % directory) + # Don't allow the root directory to be a serving_dir. + if directory == os.path.abspath(os.sep): + raise ValueError('Trying to serve root directory from HTTP server.') + for dirpath, _, filenames in os.walk(directory): + for filename in filenames: + path_name, extension = os.path.splitext( + os.path.join(dirpath, filename)) + if extension != '.sha1': + continue + GetIfChanged(path_name, bucket) + + +def CalculateHash(file_path): + """Calculates and returns the hash of the file at file_path.""" + sha1 = hashlib.sha1() + with open(file_path, 'rb') as f: + while True: + # Read in 1mb chunks, so it doesn't all have to be loaded into memory. + chunk = f.read(1024 * 1024) + if not chunk: + break + sha1.update(chunk) + return sha1.hexdigest() + + +def ReadHash(hash_path): + with open(hash_path, 'rb') as f: + return f.read(1024).rstrip() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/cloud_storage_global_lock.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/cloud_storage_global_lock.py new file mode 100644 index 0000000..5718e10 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/cloud_storage_global_lock.py @@ -0,0 +1,5 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# This file is used by cloud_storage._FileLock implementation, don't delete it! diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/cloud_storage_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/cloud_storage_unittest.py new file mode 100644 index 0000000..a513b26 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/cloud_storage_unittest.py @@ -0,0 +1,284 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import shutil +import sys +import tempfile +import unittest + +import mock +from pyfakefs import fake_filesystem_unittest + +import py_utils +from py_utils import cloud_storage +from py_utils import lock + +_CLOUD_STORAGE_GLOBAL_LOCK_PATH = os.path.join( + os.path.dirname(__file__), 'cloud_storage_global_lock.py') + +def _FakeReadHash(_): + return 'hashthis!' + + +def _FakeCalulateHashMatchesRead(_): + return 'hashthis!' + + +def _FakeCalulateHashNewHash(_): + return 'omgnewhash' + + +class CloudStorageFakeFsUnitTest(fake_filesystem_unittest.TestCase): + + def setUp(self): + self.original_environ = os.environ.copy() + os.environ['DISABLE_CLOUD_STORAGE_IO'] = '' + self.setUpPyfakefs() + self.fs.CreateFile( + os.path.join(py_utils.GetCatapultDir(), + 'third_party', 'gsutil', 'gsutil')) + + def CreateFiles(self, file_paths): + for f in file_paths: + self.fs.CreateFile(f) + + def tearDown(self): + self.tearDownPyfakefs() + os.environ = self.original_environ + + def _FakeRunCommand(self, cmd): + pass + + def _FakeGet(self, bucket, remote_path, local_path): + pass + + def _AssertRunCommandRaisesError(self, communicate_strs, error): + with mock.patch('py_utils.cloud_storage.subprocess.Popen') as popen: + p_mock = mock.Mock() + popen.return_value = p_mock + p_mock.returncode = 1 + for stderr in communicate_strs: + p_mock.communicate.return_value = ('', stderr) + self.assertRaises(error, cloud_storage._RunCommand, []) + + def testRunCommandCredentialsError(self): + strs = ['You are attempting to access protected data with no configured', + 'Failure: No handler was ready to authenticate.'] + self._AssertRunCommandRaisesError(strs, cloud_storage.CredentialsError) + + def testRunCommandPermissionError(self): + strs = ['status=403', 'status 403', '403 Forbidden'] + self._AssertRunCommandRaisesError(strs, cloud_storage.PermissionError) + + def testRunCommandNotFoundError(self): + strs = ['InvalidUriError', 'No such object', 'No URLs matched', + 'One or more URLs matched no', 'InvalidUriError'] + self._AssertRunCommandRaisesError(strs, cloud_storage.NotFoundError) + + def testRunCommandServerError(self): + strs = ['500 Internal Server Error'] + self._AssertRunCommandRaisesError(strs, cloud_storage.ServerError) + + def testRunCommandGenericError(self): + strs = ['Random string'] + self._AssertRunCommandRaisesError(strs, cloud_storage.CloudStorageError) + + def testInsertCreatesValidCloudUrl(self): + orig_run_command = cloud_storage._RunCommand + try: + cloud_storage._RunCommand = self._FakeRunCommand + remote_path = 'test-remote-path.html' + local_path = 'test-local-path.html' + cloud_url = cloud_storage.Insert(cloud_storage.PUBLIC_BUCKET, + remote_path, local_path) + self.assertEqual('https://console.developers.google.com/m/cloudstorage' + '/b/chromium-telemetry/o/test-remote-path.html', + cloud_url) + finally: + cloud_storage._RunCommand = orig_run_command + + @mock.patch('py_utils.cloud_storage.subprocess') + def testExistsReturnsFalse(self, subprocess_mock): + p_mock = mock.Mock() + subprocess_mock.Popen.return_value = p_mock + p_mock.communicate.return_value = ( + '', + 'CommandException: One or more URLs matched no objects.\n') + p_mock.returncode_result = 1 + self.assertFalse(cloud_storage.Exists('fake bucket', + 'fake remote path')) + + @mock.patch('py_utils.cloud_storage.CalculateHash') + @mock.patch('py_utils.cloud_storage._GetLocked') + @mock.patch('py_utils.cloud_storage._FileLock') + @mock.patch('py_utils.cloud_storage.os.path') + def testGetIfHashChanged(self, path_mock, unused_lock_mock, get_mock, + calc_hash_mock): + path_mock.exists.side_effect = [False, True, True] + calc_hash_mock.return_value = 'hash' + + # The file at |local_path| doesn't exist. We should download file from cs. + ret = cloud_storage.GetIfHashChanged( + 'remote_path', 'local_path', 'cs_bucket', 'hash') + self.assertTrue(ret) + get_mock.assert_called_once_with('cs_bucket', 'remote_path', 'local_path') + get_mock.reset_mock() + self.assertFalse(calc_hash_mock.call_args) + calc_hash_mock.reset_mock() + + # A local file exists at |local_path| but has the wrong hash. + # We should download file from cs. + ret = cloud_storage.GetIfHashChanged( + 'remote_path', 'local_path', 'cs_bucket', 'new_hash') + self.assertTrue(ret) + get_mock.assert_called_once_with('cs_bucket', 'remote_path', 'local_path') + get_mock.reset_mock() + calc_hash_mock.assert_called_once_with('local_path') + calc_hash_mock.reset_mock() + + # Downloaded file exists locally and has the right hash. Don't download. + ret = cloud_storage.GetIfHashChanged( + 'remote_path', 'local_path', 'cs_bucket', 'hash') + self.assertFalse(get_mock.call_args) + self.assertFalse(ret) + calc_hash_mock.reset_mock() + get_mock.reset_mock() + + @mock.patch('py_utils.cloud_storage._FileLock') + def testGetIfChanged(self, unused_lock_mock): + orig_get = cloud_storage._GetLocked + orig_read_hash = cloud_storage.ReadHash + orig_calculate_hash = cloud_storage.CalculateHash + cloud_storage.ReadHash = _FakeReadHash + cloud_storage.CalculateHash = _FakeCalulateHashMatchesRead + file_path = 'test-file-path.wpr' + hash_path = file_path + '.sha1' + try: + cloud_storage._GetLocked = self._FakeGet + # hash_path doesn't exist. + self.assertFalse(cloud_storage.GetIfChanged(file_path, + cloud_storage.PUBLIC_BUCKET)) + # hash_path exists, but file_path doesn't. + self.CreateFiles([hash_path]) + self.assertTrue(cloud_storage.GetIfChanged(file_path, + cloud_storage.PUBLIC_BUCKET)) + # hash_path and file_path exist, and have same hash. + self.CreateFiles([file_path]) + self.assertFalse(cloud_storage.GetIfChanged(file_path, + cloud_storage.PUBLIC_BUCKET)) + # hash_path and file_path exist, and have different hashes. + cloud_storage.CalculateHash = _FakeCalulateHashNewHash + self.assertTrue(cloud_storage.GetIfChanged(file_path, + cloud_storage.PUBLIC_BUCKET)) + finally: + cloud_storage._GetLocked = orig_get + cloud_storage.CalculateHash = orig_calculate_hash + cloud_storage.ReadHash = orig_read_hash + + @unittest.skipIf(sys.platform.startswith('win'), + 'https://github.com/catapult-project/catapult/issues/1861') + def testGetFilesInDirectoryIfChanged(self): + self.CreateFiles([ + 'real_dir_path/dir1/1file1.sha1', + 'real_dir_path/dir1/1file2.txt', + 'real_dir_path/dir1/1file3.sha1', + 'real_dir_path/dir2/2file.txt', + 'real_dir_path/dir3/3file1.sha1']) + + def IncrementFilesUpdated(*_): + IncrementFilesUpdated.files_updated += 1 + IncrementFilesUpdated.files_updated = 0 + orig_get_if_changed = cloud_storage.GetIfChanged + cloud_storage.GetIfChanged = IncrementFilesUpdated + try: + self.assertRaises(ValueError, cloud_storage.GetFilesInDirectoryIfChanged, + os.path.abspath(os.sep), cloud_storage.PUBLIC_BUCKET) + self.assertEqual(0, IncrementFilesUpdated.files_updated) + self.assertRaises(ValueError, cloud_storage.GetFilesInDirectoryIfChanged, + 'fake_dir_path', cloud_storage.PUBLIC_BUCKET) + self.assertEqual(0, IncrementFilesUpdated.files_updated) + cloud_storage.GetFilesInDirectoryIfChanged('real_dir_path', + cloud_storage.PUBLIC_BUCKET) + self.assertEqual(3, IncrementFilesUpdated.files_updated) + finally: + cloud_storage.GetIfChanged = orig_get_if_changed + + def testCopy(self): + orig_run_command = cloud_storage._RunCommand + + def AssertCorrectRunCommandArgs(args): + self.assertEqual(expected_args, args) + cloud_storage._RunCommand = AssertCorrectRunCommandArgs + expected_args = ['cp', 'gs://bucket1/remote_path1', + 'gs://bucket2/remote_path2'] + try: + cloud_storage.Copy('bucket1', 'bucket2', 'remote_path1', 'remote_path2') + finally: + cloud_storage._RunCommand = orig_run_command + + + @mock.patch('py_utils.cloud_storage._FileLock') + def testDisableCloudStorageIo(self, unused_lock_mock): + os.environ['DISABLE_CLOUD_STORAGE_IO'] = '1' + dir_path = 'real_dir_path' + self.fs.CreateDirectory(dir_path) + file_path = os.path.join(dir_path, 'file1') + file_path_sha = file_path + '.sha1' + self.CreateFiles([file_path, file_path_sha]) + with open(file_path_sha, 'w') as f: + f.write('hash1234') + with self.assertRaises(cloud_storage.CloudStorageIODisabled): + cloud_storage.Copy('bucket1', 'bucket2', 'remote_path1', 'remote_path2') + with self.assertRaises(cloud_storage.CloudStorageIODisabled): + cloud_storage.Get('bucket', 'foo', file_path) + with self.assertRaises(cloud_storage.CloudStorageIODisabled): + cloud_storage.GetIfChanged(file_path, 'foo') + with self.assertRaises(cloud_storage.CloudStorageIODisabled): + cloud_storage.GetIfHashChanged('bar', file_path, 'bucket', 'hash1234') + with self.assertRaises(cloud_storage.CloudStorageIODisabled): + cloud_storage.Insert('bucket', 'foo', file_path) + with self.assertRaises(cloud_storage.CloudStorageIODisabled): + cloud_storage.GetFilesInDirectoryIfChanged(dir_path, 'bucket') + + +class CloudStorageRealFsUnitTest(unittest.TestCase): + + def setUp(self): + self.original_environ = os.environ.copy() + os.environ['DISABLE_CLOUD_STORAGE_IO'] = '' + + def tearDown(self): + os.environ = self.original_environ + + @mock.patch('py_utils.cloud_storage.LOCK_ACQUISITION_TIMEOUT', .005) + def testGetPseudoLockUnavailableCausesTimeout(self): + with tempfile.NamedTemporaryFile(suffix='.pseudo_lock') as pseudo_lock_fd: + with lock.FileLock(pseudo_lock_fd, lock.LOCK_EX | lock.LOCK_NB): + with self.assertRaises(py_utils.TimeoutException): + file_path = pseudo_lock_fd.name.replace('.pseudo_lock', '') + cloud_storage.GetIfChanged(file_path, cloud_storage.PUBLIC_BUCKET) + + @mock.patch('py_utils.cloud_storage.LOCK_ACQUISITION_TIMEOUT', .005) + def testGetGlobalLockUnavailableCausesTimeout(self): + with open(_CLOUD_STORAGE_GLOBAL_LOCK_PATH) as global_lock_fd: + with lock.FileLock(global_lock_fd, lock.LOCK_EX | lock.LOCK_NB): + tmp_dir = tempfile.mkdtemp() + try: + file_path = os.path.join(tmp_dir, 'foo') + with self.assertRaises(py_utils.TimeoutException): + cloud_storage.GetIfChanged(file_path, cloud_storage.PUBLIC_BUCKET) + finally: + shutil.rmtree(tmp_dir) + + +class CloudStorageErrorHandlingTest(unittest.TestCase): + def runTest(self): + self.assertIsInstance(cloud_storage.GetErrorObjectForCloudStorageStderr( + 'ServiceException: 401 Anonymous users does not have ' + 'storage.objects.get access to object chrome-partner-telemetry'), + cloud_storage.CredentialsError) + self.assertIsInstance(cloud_storage.GetErrorObjectForCloudStorageStderr( + '403 Caller does not have storage.objects.list access to bucket ' + 'chrome-telemetry'), cloud_storage.PermissionError) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/contextlib_ext.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/contextlib_ext.py new file mode 100644 index 0000000..922d27d --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/contextlib_ext.py @@ -0,0 +1,33 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + + +class _OptionalContextManager(object): + + def __init__(self, manager, condition): + self._manager = manager + self._condition = condition + + def __enter__(self): + if self._condition: + return self._manager.__enter__() + return None + + def __exit__(self, exc_type, exc_val, exc_tb): + if self._condition: + return self._manager.__exit__(exc_type, exc_val, exc_tb) + return None + + +def Optional(manager, condition): + """Wraps the provided context manager and runs it if condition is True. + + Args: + manager: A context manager to conditionally run. + condition: If true, runs the given context manager. + Returns: + A context manager that conditionally executes the given manager. + """ + return _OptionalContextManager(manager, condition) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/contextlib_ext_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/contextlib_ext_unittest.py new file mode 100644 index 0000000..b83e7e5 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/contextlib_ext_unittest.py @@ -0,0 +1,34 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import unittest + +from py_utils import contextlib_ext + + +class OptionalUnittest(unittest.TestCase): + + class SampleContextMgr(object): + + def __init__(self): + self.entered = False + self.exited = False + + def __enter__(self): + self.entered = True + + def __exit__(self, exc_type, exc_val, exc_tb): + self.exited = True + + def testConditionTrue(self): + c = self.SampleContextMgr() + with contextlib_ext.Optional(c, True): + self.assertTrue(c.entered) + self.assertTrue(c.exited) + + def testConditionFalse(self): + c = self.SampleContextMgr() + with contextlib_ext.Optional(c, False): + self.assertFalse(c.entered) + self.assertFalse(c.exited) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/dependency_util.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/dependency_util.py new file mode 100644 index 0000000..d3cfe89 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/dependency_util.py @@ -0,0 +1,49 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import platform +import sys + +import py_utils + +def GetOSAndArchForCurrentDesktopPlatform(): + os_name = GetOSNameForCurrentDesktopPlatform() + return os_name, GetArchForCurrentDesktopPlatform(os_name) + + +def GetOSNameForCurrentDesktopPlatform(): + if py_utils.IsRunningOnCrosDevice(): + return 'chromeos' + if sys.platform.startswith('linux'): + return 'linux' + if sys.platform == 'darwin': + return 'mac' + if sys.platform == 'win32': + return 'win' + return sys.platform + + +def GetArchForCurrentDesktopPlatform(os_name): + if os_name == 'chromeos': + # Current tests outside of telemetry don't run on chromeos, and + # platform.machine is not the way telemetry gets the arch name on chromeos. + raise NotImplementedError() + return platform.machine() + + +def GetChromeApkOsVersion(version_name): + version = version_name[0] + assert version.isupper(), ( + 'First character of versions name %s was not an uppercase letter.') + if version < 'L': + return 'k' + elif version > 'M': + return 'n' + return 'l' + + +def ChromeBinariesConfigPath(): + return os.path.realpath(os.path.join( + os.path.dirname(os.path.abspath(__file__)), 'chrome_binaries.json')) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/lock.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/lock.py new file mode 100644 index 0000000..aa9a095 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/lock.py @@ -0,0 +1,117 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import contextlib +import os + +LOCK_EX = None # Exclusive lock +LOCK_SH = None # Shared lock +LOCK_NB = None # Non-blocking (LockException is raised if resource is locked) + + +class LockException(Exception): + pass + + +if os.name == 'nt': + import win32con # pylint: disable=import-error + import win32file # pylint: disable=import-error + import pywintypes # pylint: disable=import-error + LOCK_EX = win32con.LOCKFILE_EXCLUSIVE_LOCK + LOCK_SH = 0 # the default + LOCK_NB = win32con.LOCKFILE_FAIL_IMMEDIATELY + _OVERLAPPED = pywintypes.OVERLAPPED() +elif os.name == 'posix': + import fcntl # pylint: disable=import-error + LOCK_EX = fcntl.LOCK_EX + LOCK_SH = fcntl.LOCK_SH + LOCK_NB = fcntl.LOCK_NB + + +@contextlib.contextmanager +def FileLock(target_file, flags): + """ Lock the target file. Similar to AcquireFileLock but allow user to write: + with FileLock(f, LOCK_EX): + ...do stuff on file f without worrying about race condition + Args: see AcquireFileLock's documentation. + """ + AcquireFileLock(target_file, flags) + try: + yield + finally: + ReleaseFileLock(target_file) + + +def AcquireFileLock(target_file, flags): + """ Lock the target file. Note that if |target_file| is closed, the lock is + automatically released. + Args: + target_file: file handle of the file to acquire lock. + flags: can be any of the type LOCK_EX, LOCK_SH, LOCK_NB, or a bitwise + OR combination of flags. + """ + assert flags in ( + LOCK_EX, LOCK_SH, LOCK_NB, LOCK_EX | LOCK_NB, LOCK_SH | LOCK_NB) + if os.name == 'nt': + _LockImplWin(target_file, flags) + elif os.name == 'posix': + _LockImplPosix(target_file, flags) + else: + raise NotImplementedError('%s is not supported' % os.name) + + +def ReleaseFileLock(target_file): + """ Unlock the target file. + Args: + target_file: file handle of the file to release the lock. + """ + if os.name == 'nt': + _UnlockImplWin(target_file) + elif os.name == 'posix': + _UnlockImplPosix(target_file) + else: + raise NotImplementedError('%s is not supported' % os.name) + +# These implementations are based on +# http://code.activestate.com/recipes/65203/ + +def _LockImplWin(target_file, flags): + hfile = win32file._get_osfhandle(target_file.fileno()) + try: + win32file.LockFileEx(hfile, flags, 0, -0x10000, _OVERLAPPED) + except pywintypes.error, exc_value: + if exc_value[0] == 33: + raise LockException('Error trying acquiring lock of %s: %s' % + (target_file.name, exc_value[2])) + else: + raise + + +def _UnlockImplWin(target_file): + hfile = win32file._get_osfhandle(target_file.fileno()) + try: + win32file.UnlockFileEx(hfile, 0, -0x10000, _OVERLAPPED) + except pywintypes.error, exc_value: + if exc_value[0] == 158: + # error: (158, 'UnlockFileEx', 'The segment is already unlocked.') + # To match the 'posix' implementation, silently ignore this error + pass + else: + # Q: Are there exceptions/codes we should be dealing with here? + raise + + +def _LockImplPosix(target_file, flags): + try: + fcntl.flock(target_file.fileno(), flags) + except IOError, exc_value: + if exc_value[0] == 11 or exc_value[0] == 35: + raise LockException('Error trying acquiring lock of %s: %s' % + (target_file.name, exc_value[1])) + else: + raise + + +def _UnlockImplPosix(target_file): + fcntl.flock(target_file.fileno(), fcntl.LOCK_UN) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/lock_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/lock_unittest.py new file mode 100644 index 0000000..a260621 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/lock_unittest.py @@ -0,0 +1,165 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import multiprocessing +import os +import time +import unittest +import tempfile + + +from py_utils import lock + + +def _AppendTextToFile(file_name): + with open(file_name, 'a') as f: + lock.AcquireFileLock(f, lock.LOCK_EX) + # Sleep 100 ms to increase the chance of another process trying to acquire + # the lock of file as the same time. + time.sleep(0.1) + f.write('Start') + for _ in range(10000): + f.write('*') + f.write('End') + + +def _ReadFileWithSharedLockBlockingThenWrite(read_file, write_file): + with open(read_file, 'r') as f: + lock.AcquireFileLock(f, lock.LOCK_SH) + content = f.read() + with open(write_file, 'a') as f2: + lock.AcquireFileLock(f2, lock.LOCK_EX) + f2.write(content) + + +def _ReadFileWithExclusiveLockNonBlocking(target_file, status_file): + with open(target_file, 'r') as f: + try: + lock.AcquireFileLock(f, lock.LOCK_EX | lock.LOCK_NB) + with open(status_file, 'w') as f2: + f2.write('LockException was not raised') + except lock.LockException: + with open(status_file, 'w') as f2: + f2.write('LockException raised') + + +class FileLockTest(unittest.TestCase): + def setUp(self): + tf = tempfile.NamedTemporaryFile(delete=False) + tf.close() + self.temp_file_path = tf.name + + def tearDown(self): + os.remove(self.temp_file_path) + + def testExclusiveLock(self): + processess = [] + for _ in range(10): + p = multiprocessing.Process( + target=_AppendTextToFile, args=(self.temp_file_path,)) + p.start() + processess.append(p) + for p in processess: + p.join() + + # If the file lock works as expected, there should be 10 atomic writes of + # 'Start***...***End' to the file in some order, which lead to the final + # file content as below. + expected_file_content = ''.join((['Start'] + ['*']*10000 + ['End']) * 10) + with open(self.temp_file_path, 'r') as f: + # Use assertTrue instead of assertEquals since the strings are big, hence + # assertEquals's assertion failure will contain huge strings. + self.assertTrue(expected_file_content == f.read()) + + def testSharedLock(self): + tf = tempfile.NamedTemporaryFile(delete=False) + tf.close() + temp_write_file = tf.name + try: + with open(self.temp_file_path, 'w') as f: + f.write('0123456789') + with open(self.temp_file_path, 'r') as f: + # First, acquire a shared lock on temp_file_path + lock.AcquireFileLock(f, lock.LOCK_SH) + + processess = [] + # Create 10 processes that also try to acquire shared lock from + # temp_file_path then append temp_file_path's content to temp_write_file + for _ in range(10): + p = multiprocessing.Process( + target=_ReadFileWithSharedLockBlockingThenWrite, + args=(self.temp_file_path, temp_write_file)) + p.start() + processess.append(p) + for p in processess: + p.join() + + # temp_write_file should contains 10 copy of temp_file_path's content. + with open(temp_write_file, 'r') as f: + self.assertEquals('0123456789'*10, f.read()) + finally: + os.remove(temp_write_file) + + def testNonBlockingLockAcquiring(self): + tf = tempfile.NamedTemporaryFile(delete=False) + tf.close() + temp_status_file = tf.name + try: + with open(self.temp_file_path, 'w') as f: + lock.AcquireFileLock(f, lock.LOCK_EX) + p = multiprocessing.Process( + target=_ReadFileWithExclusiveLockNonBlocking, + args=(self.temp_file_path, temp_status_file)) + p.start() + p.join() + with open(temp_status_file, 'r') as f: + self.assertEquals('LockException raised', f.read()) + finally: + os.remove(temp_status_file) + + def testUnlockBeforeClosingFile(self): + tf = tempfile.NamedTemporaryFile(delete=False) + tf.close() + temp_status_file = tf.name + try: + with open(self.temp_file_path, 'r') as f: + lock.AcquireFileLock(f, lock.LOCK_SH) + lock.ReleaseFileLock(f) + p = multiprocessing.Process( + target=_ReadFileWithExclusiveLockNonBlocking, + args=(self.temp_file_path, temp_status_file)) + p.start() + p.join() + with open(temp_status_file, 'r') as f: + self.assertEquals('LockException was not raised', f.read()) + finally: + os.remove(temp_status_file) + + def testContextualLock(self): + tf = tempfile.NamedTemporaryFile(delete=False) + tf.close() + temp_status_file = tf.name + try: + with open(self.temp_file_path, 'r') as f: + with lock.FileLock(f, lock.LOCK_EX): + # Within this block, accessing self.temp_file_path from another + # process should raise exception. + p = multiprocessing.Process( + target=_ReadFileWithExclusiveLockNonBlocking, + args=(self.temp_file_path, temp_status_file)) + p.start() + p.join() + with open(temp_status_file, 'r') as f: + self.assertEquals('LockException raised', f.read()) + + # Accessing self.temp_file_path here should not raise exception. + p = multiprocessing.Process( + target=_ReadFileWithExclusiveLockNonBlocking, + args=(self.temp_file_path, temp_status_file)) + p.start() + p.join() + with open(temp_status_file, 'r') as f: + self.assertEquals('LockException was not raised', f.read()) + finally: + os.remove(temp_status_file) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/py_utils_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/py_utils_unittest.py new file mode 100644 index 0000000..e614a45 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/py_utils_unittest.py @@ -0,0 +1,55 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +import os +import sys +import unittest + +import py_utils + + +class PathTest(unittest.TestCase): + + def testIsExecutable(self): + self.assertFalse(py_utils.IsExecutable('nonexistent_file')) + # We use actual files on disk instead of pyfakefs because the executable is + # set different on win that posix platforms and pyfakefs doesn't support + # win platform well. + self.assertFalse(py_utils.IsExecutable(_GetFileInTestDir('foo.txt'))) + self.assertTrue(py_utils.IsExecutable(sys.executable)) + + +def _GetFileInTestDir(file_name): + return os.path.join(os.path.dirname(__file__), 'test_data', file_name) + + +class WaitForTest(unittest.TestCase): + + def testWaitForTrue(self): + def ReturnTrue(): + return True + self.assertTrue(py_utils.WaitFor(ReturnTrue, .1)) + + def testWaitForFalse(self): + def ReturnFalse(): + return False + + with self.assertRaises(py_utils.TimeoutException): + py_utils.WaitFor(ReturnFalse, .1) + + def testWaitForEventuallyTrue(self): + # Use list to pass to inner function in order to allow modifying the + # variable from the outer scope. + c = [0] + def ReturnCounterBasedValue(): + c[0] += 1 + return c[0] > 2 + + self.assertTrue(py_utils.WaitFor(ReturnCounterBasedValue, .5)) + + def testWaitForTrueLambda(self): + self.assertTrue(py_utils.WaitFor(lambda: True, .1)) + + def testWaitForFalseLambda(self): + with self.assertRaises(py_utils.TimeoutException): + py_utils.WaitFor(lambda: False, .1) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/__init__.py new file mode 100644 index 0000000..e3fbb5f --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/__init__.py @@ -0,0 +1,28 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Style-preserving Python code transforms. + +This module provides components for modifying and querying Python code. They can +be used to build custom refactorings and linters. +""" + +import functools +import multiprocessing + +# pylint: disable=wildcard-import +from py_utils.refactor.annotated_symbol import * +from py_utils.refactor.module import Module + + +def _TransformFile(transform, file_path): + module = Module(file_path) + result = transform(module) + module.Write() + return result + + +def Transform(transform, file_paths): + transform = functools.partial(_TransformFile, transform) + return multiprocessing.Pool().map(transform, file_paths) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/annotated_symbol/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/annotated_symbol/__init__.py new file mode 100644 index 0000000..610bc15 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/annotated_symbol/__init__.py @@ -0,0 +1,71 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# pylint: disable=wildcard-import +from py_utils.refactor.annotated_symbol.class_definition import * +from py_utils.refactor.annotated_symbol.function_definition import * +from py_utils.refactor.annotated_symbol.import_statement import * +from py_utils.refactor.annotated_symbol.reference import * +from py_utils.refactor import snippet + + +__all__ = [ + 'Annotate', + + 'Class', + 'Function', + 'Import', + 'Reference', +] + + +# Specific symbol types with extra methods for manipulating them. +# Python's full grammar is here: +# https://docs.python.org/2/reference/grammar.html + +# Annotated Symbols have an Annotate classmethod that takes a symbol type and +# list of children, and returns an instance of that annotated Symbol. + +ANNOTATED_SYMBOLS = ( + AsName, + Class, + DottedName, + ImportFrom, + ImportName, + Function, +) + + +# Unfortunately, some logical groupings are not represented by a node in the +# parse tree. To work around this, some annotated Symbols have an Annotate +# classmethod that takes and returns a list of Snippets instead. + +ANNOTATED_GROUPINGS = ( + Reference, +) + + +def Annotate(f): + """Return the syntax tree of the given file.""" + return _AnnotateNode(snippet.Snippetize(f)) + + +def _AnnotateNode(node): + if not isinstance(node, snippet.Symbol): + return node + + children = map(_AnnotateNode, node.children) + + for symbol_type in ANNOTATED_GROUPINGS: + annotated_grouping = symbol_type.Annotate(children) + if annotated_grouping: + children = annotated_grouping + break + + for symbol_type in ANNOTATED_SYMBOLS: + annotated_symbol = symbol_type.Annotate(node.type, children) + if annotated_symbol: + return annotated_symbol + + return snippet.Symbol(node.type, children) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/annotated_symbol/base_symbol.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/annotated_symbol/base_symbol.py new file mode 100644 index 0000000..2e28e89 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/annotated_symbol/base_symbol.py @@ -0,0 +1,36 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +from py_utils.refactor import snippet + + +class AnnotatedSymbol(snippet.Symbol): + def __init__(self, symbol_type, children): + super(AnnotatedSymbol, self).__init__(symbol_type, children) + self._modified = False + + @property + def modified(self): + if self._modified: + return True + return super(AnnotatedSymbol, self).modified + + def __setattr__(self, name, value): + if (hasattr(self.__class__, name) and + isinstance(getattr(self.__class__, name), property)): + self._modified = True + return super(AnnotatedSymbol, self).__setattr__(name, value) + + def Cut(self, child): + for i in xrange(len(self._children)): + if self._children[i] == child: + self._modified = True + del self._children[i] + break + else: + raise ValueError('%s is not in %s.' % (child, self)) + + def Paste(self, child): + self._modified = True + self._children.append(child) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/annotated_symbol/class_definition.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/annotated_symbol/class_definition.py new file mode 100644 index 0000000..814958f --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/annotated_symbol/class_definition.py @@ -0,0 +1,51 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import symbol + +from py_utils.refactor.annotated_symbol import base_symbol + + +__all__ = [ + 'Class', +] + + +class Class(base_symbol.AnnotatedSymbol): + # pylint: disable=abstract-class-not-used + + @classmethod + def Annotate(cls, symbol_type, children): + if symbol_type != symbol.stmt: + return None + + compound_statement = children[0] + if compound_statement.type != symbol.compound_stmt: + return None + + statement = compound_statement.children[0] + if statement.type == symbol.classdef: + return cls(statement.type, statement.children) + elif (statement.type == symbol.decorated and + statement.children[-1].type == symbol.classdef): + return cls(statement.type, statement.children) + else: + return None + + @property + def suite(self): + # TODO: Complete. + raise NotImplementedError() + + def FindChild(self, snippet_type, **kwargs): + return self.suite.FindChild(snippet_type, **kwargs) + + def FindChildren(self, snippet_type): + return self.suite.FindChildren(snippet_type) + + def Cut(self, child): + self.suite.Cut(child) + + def Paste(self, child): + self.suite.Paste(child) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/annotated_symbol/function_definition.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/annotated_symbol/function_definition.py new file mode 100644 index 0000000..50a1672 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/annotated_symbol/function_definition.py @@ -0,0 +1,51 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import symbol + +from py_utils.refactor.annotated_symbol import base_symbol + + +__all__ = [ + 'Function', +] + + +class Function(base_symbol.AnnotatedSymbol): + # pylint: disable=abstract-class-not-used + + @classmethod + def Annotate(cls, symbol_type, children): + if symbol_type != symbol.stmt: + return None + + compound_statement = children[0] + if compound_statement.type != symbol.compound_stmt: + return None + + statement = compound_statement.children[0] + if statement.type == symbol.funcdef: + return cls(statement.type, statement.children) + elif (statement.type == symbol.decorated and + statement.children[-1].type == symbol.funcdef): + return cls(statement.type, statement.children) + else: + return None + + @property + def suite(self): + # TODO: Complete. + raise NotImplementedError() + + def FindChild(self, snippet_type, **kwargs): + return self.suite.FindChild(snippet_type, **kwargs) + + def FindChildren(self, snippet_type): + return self.suite.FindChildren(snippet_type) + + def Cut(self, child): + self.suite.Cut(child) + + def Paste(self, child): + self.suite.Paste(child) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/annotated_symbol/import_statement.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/annotated_symbol/import_statement.py new file mode 100644 index 0000000..5c38c10 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/annotated_symbol/import_statement.py @@ -0,0 +1,322 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import itertools +import keyword +import symbol +import token + +from py_utils.refactor.annotated_symbol import base_symbol +from py_utils.refactor import snippet + + +__all__ = [ + 'AsName', + 'DottedName', + 'Import', + 'ImportFrom', + 'ImportName', +] + + +class DottedName(base_symbol.AnnotatedSymbol): + @classmethod + def Annotate(cls, symbol_type, children): + if symbol_type != symbol.dotted_name: + return None + return cls(symbol_type, children) + + @property + def value(self): + return ''.join(token_snippet.value for token_snippet in self._children) + + @value.setter + def value(self, value): + value_parts = value.split('.') + for value_part in value_parts: + if keyword.iskeyword(value_part): + raise ValueError('%s is a reserved keyword.' % value_part) + + # If we have too many children, cut the list down to size. + self._children = self._children[:len(value_parts)*2-1] + + # Update child nodes. + for child, value_part in itertools.izip_longest( + self._children[::2], value_parts): + if child: + # Modify existing children. This helps preserve comments and spaces. + child.value = value_part + else: + # Add children as needed. + self._children.append(snippet.TokenSnippet.Create(token.DOT, '.')) + self._children.append( + snippet.TokenSnippet.Create(token.NAME, value_part)) + + +class AsName(base_symbol.AnnotatedSymbol): + @classmethod + def Annotate(cls, symbol_type, children): + if (symbol_type != symbol.dotted_as_name and + symbol_type != symbol.import_as_name): + return None + return cls(symbol_type, children) + + @property + def name(self): + return self.children[0].value + + @name.setter + def name(self, value): + self.children[0].value = value + + @property + def alias(self): + if len(self.children) < 3: + return None + return self.children[2].value + + @alias.setter + def alias(self, value): + if keyword.iskeyword(value): + raise ValueError('%s is a reserved keyword.' % value) + + if value: + if len(self.children) < 3: + # If we currently have no alias, add one. + self.children.append( + snippet.TokenSnippet.Create(token.NAME, 'as', (0, 1))) + self.children.append( + snippet.TokenSnippet.Create(token.NAME, value, (0, 1))) + else: + # We already have an alias. Just update the value. + self.children[2].value = value + else: + # Removing the alias. Strip the "as foo". + self.children = [self.children[0]] + + +class Import(base_symbol.AnnotatedSymbol): + """An import statement. + + Example: + import a.b.c as d + from a.b import c as d + + In these examples, + path == 'a.b.c' + alias == 'd' + root == 'a.b' (only for "from" imports) + module == 'c' (only for "from" imports) + name (read-only) == the name used by references to the module, which is the + alias if there is one, the full module path in "full" imports, and the + module name in "from" imports. + """ + @property + def has_from(self): + """Returns True iff the import statment is of the form "from x import y".""" + raise NotImplementedError() + + @property + def values(self): + raise NotImplementedError() + + @property + def paths(self): + raise NotImplementedError() + + @property + def aliases(self): + raise NotImplementedError() + + @property + def path(self): + """The full dotted path of the module.""" + raise NotImplementedError() + + @path.setter + def path(self, value): + raise NotImplementedError() + + @property + def alias(self): + """The alias, if the module is renamed with "as". None otherwise.""" + raise NotImplementedError() + + @alias.setter + def alias(self, value): + raise NotImplementedError() + + @property + def name(self): + """The name used to reference this import's module.""" + raise NotImplementedError() + + +class ImportName(Import): + @classmethod + def Annotate(cls, symbol_type, children): + if symbol_type != symbol.import_stmt: + return None + if children[0].type != symbol.import_name: + return None + assert len(children) == 1 + return cls(symbol_type, children[0].children) + + @property + def has_from(self): + return False + + @property + def values(self): + dotted_as_names = self.children[1] + return tuple((dotted_as_name.name, dotted_as_name.alias) + for dotted_as_name in dotted_as_names.children[::2]) + + @property + def paths(self): + return tuple(path for path, _ in self.values) + + @property + def aliases(self): + return tuple(alias for _, alias in self.values) + + @property + def _dotted_as_name(self): + dotted_as_names = self.children[1] + if len(dotted_as_names.children) != 1: + raise NotImplementedError( + 'This method only works if the statement has one import.') + return dotted_as_names.children[0] + + @property + def path(self): + return self._dotted_as_name.name + + @path.setter + def path(self, value): # pylint: disable=arguments-differ + self._dotted_as_name.name = value + + @property + def alias(self): + return self._dotted_as_name.alias + + @alias.setter + def alias(self, value): # pylint: disable=arguments-differ + self._dotted_as_name.alias = value + + @property + def name(self): + if self.alias: + return self.alias + else: + return self.path + + +class ImportFrom(Import): + @classmethod + def Annotate(cls, symbol_type, children): + if symbol_type != symbol.import_stmt: + return None + if children[0].type != symbol.import_from: + return None + assert len(children) == 1 + return cls(symbol_type, children[0].children) + + @property + def has_from(self): + return True + + @property + def values(self): + try: + import_as_names = self.FindChild(symbol.import_as_names) + except ValueError: + return (('*', None),) + + return tuple((import_as_name.name, import_as_name.alias) + for import_as_name in import_as_names.children[::2]) + + @property + def paths(self): + module = self.module + return tuple('.'.join((module, name)) for name, _ in self.values) + + @property + def aliases(self): + return tuple(alias for _, alias in self.values) + + @property + def root(self): + return self.FindChild(symbol.dotted_name).value + + @root.setter + def root(self, value): + self.FindChild(symbol.dotted_name).value = value + + @property + def _import_as_name(self): + try: + import_as_names = self.FindChild(symbol.import_as_names) + except ValueError: + return None + + if len(import_as_names.children) != 1: + raise NotImplementedError( + 'This method only works if the statement has one import.') + + return import_as_names.children[0] + + @property + def module(self): + import_as_name = self._import_as_name + if import_as_name: + return import_as_name.name + else: + return '*' + + @module.setter + def module(self, value): + if keyword.iskeyword(value): + raise ValueError('%s is a reserved keyword.' % value) + + import_as_name = self._import_as_name + if value == '*': + # TODO: Implement this. + raise NotImplementedError() + else: + if import_as_name: + import_as_name.name = value + else: + # TODO: Implement this. + raise NotImplementedError() + + @property + def path(self): + return '.'.join((self.root, self.module)) + + @path.setter + def path(self, value): # pylint: disable=arguments-differ + self.root, _, self.module = value.rpartition('.') + + @property + def alias(self): + import_as_name = self._import_as_name + if import_as_name: + return import_as_name.alias + else: + return None + + @alias.setter + def alias(self, value): # pylint: disable=arguments-differ + import_as_name = self._import_as_name + if not import_as_name: + raise NotImplementedError('Cannot change alias for "import *".') + import_as_name.alias = value + + @property + def name(self): + if self.alias: + return self.alias + else: + return self.module diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/annotated_symbol/reference.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/annotated_symbol/reference.py new file mode 100644 index 0000000..757c57f --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/annotated_symbol/reference.py @@ -0,0 +1,75 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import itertools +import symbol +import token + +from py_utils.refactor.annotated_symbol import base_symbol +from py_utils.refactor import snippet + + +__all__ = [ + 'Reference', +] + + +class Reference(base_symbol.AnnotatedSymbol): + @classmethod + def Annotate(cls, nodes): + if not nodes: + return None + if nodes[0].type != symbol.atom: + return None + if not nodes[0].children or nodes[0].children[0].type != token.NAME: + return None + + for i in xrange(1, len(nodes)): + if not nodes: + break + if nodes[i].type != symbol.trailer: + break + if len(nodes[i].children) != 2: + break + if (nodes[i].children[0].type != token.DOT or + nodes[i].children[1].type != token.NAME): + break + else: + i = len(nodes) + + return [cls(nodes[:i])] + nodes[i:] + + def __init__(self, children): + super(Reference, self).__init__(-1, children) + + @property + def type_name(self): + return 'attribute_reference' + + @property + def value(self): + return ''.join(token_snippet.value + for child in self.children + for token_snippet in child.children) + + @value.setter + def value(self, value): + value_parts = value.split('.') + + # If we have too many children, cut the list down to size. + self._children = self._children[:len(value_parts)] + + # Update child nodes. + for child, value_part in itertools.izip_longest( + self._children, value_parts): + if child: + # Modify existing children. This helps preserve comments and spaces. + child.children[-1].value = value_part + else: + # Add children as needed. + token_snippets = [ + snippet.TokenSnippet.Create(token.DOT, '.'), + snippet.TokenSnippet.Create(token.NAME, value_part), + ] + self._children.append(snippet.Symbol(symbol.trailer, token_snippets)) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/module.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/module.py new file mode 100644 index 0000000..d6eae00 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/module.py @@ -0,0 +1,39 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +from py_utils.refactor import annotated_symbol + + +class Module(object): + + def __init__(self, file_path): + self._file_path = file_path + + with open(self._file_path, 'r') as f: + self._snippet = annotated_symbol.Annotate(f) + + @property + def file_path(self): + return self._file_path + + @property + def modified(self): + return self._snippet.modified + + def FindAll(self, snippet_type): + return self._snippet.FindAll(snippet_type) + + def FindChildren(self, snippet_type): + return self._snippet.FindChildren(snippet_type) + + def Write(self): + """Write modifications to the file.""" + if not self.modified: + return + + # Stringify before opening the file for writing. + # If we fail, we won't truncate the file. + string = str(self._snippet) + with open(self._file_path, 'w') as f: + f.write(string) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/offset_token.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/offset_token.py new file mode 100644 index 0000000..5fa953e --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/offset_token.py @@ -0,0 +1,115 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import collections +import itertools +import token +import tokenize + + +def _Pairwise(iterable): + """s -> (None, s0), (s0, s1), (s1, s2), (s2, s3), ...""" + a, b = itertools.tee(iterable) + a = itertools.chain((None,), a) + return itertools.izip(a, b) + + +class OffsetToken(object): + """A Python token with a relative position. + + A token is represented by a type defined in Python's token module, a string + representing the content, and an offset. Using relative positions makes it + easy to insert and remove tokens. + """ + + def __init__(self, token_type, string, offset): + self._type = token_type + self._string = string + self._offset = offset + + @property + def type(self): + return self._type + + @property + def type_name(self): + return token.tok_name[self._type] + + @property + def string(self): + return self._string + + @string.setter + def string(self, value): + self._string = value + + @property + def offset(self): + return self._offset + + def __str__(self): + return str((self.type_name, self.string, self.offset)) + + +def Tokenize(f): + """Read tokens from a file-like object. + + Args: + f: Any object that has a readline method. + + Returns: + A collections.deque containing OffsetTokens. Deques are cheaper and easier + to manipulate sequentially than lists. + """ + f.seek(0) + tokenize_tokens = tokenize.generate_tokens(f.readline) + + offset_tokens = collections.deque() + for prev_token, next_token in _Pairwise(tokenize_tokens): + token_type, string, (srow, scol), _, _ = next_token + if not prev_token: + offset_tokens.append(OffsetToken(token_type, string, (0, 0))) + else: + erow, ecol = prev_token[3] + if erow == srow: + offset_tokens.append(OffsetToken(token_type, string, (0, scol - ecol))) + else: + offset_tokens.append(OffsetToken( + token_type, string, (srow - erow, scol))) + + return offset_tokens + + +def Untokenize(offset_tokens): + """Return the string representation of an iterable of OffsetTokens.""" + # Make a copy. Don't modify the original. + offset_tokens = collections.deque(offset_tokens) + + # Strip leading NL tokens. + while offset_tokens[0].type == tokenize.NL: + offset_tokens.popleft() + + # Strip leading vertical whitespace. + first_token = offset_tokens.popleft() + # Take care not to modify the existing token. Create a new one in its place. + first_token = OffsetToken(first_token.type, first_token.string, + (0, first_token.offset[1])) + offset_tokens.appendleft(first_token) + + # Convert OffsetTokens to tokenize tokens. + tokenize_tokens = [] + row = 1 + col = 0 + for t in offset_tokens: + offset_row, offset_col = t.offset + if offset_row == 0: + col += offset_col + else: + row += offset_row + col = offset_col + tokenize_tokens.append((t.type, t.string, (row, col), (row, col), None)) + + # tokenize can't handle whitespace before line continuations. + # So add a space. + return tokenize.untokenize(tokenize_tokens).replace('\\\n', ' \\\n') diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/snippet.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/snippet.py new file mode 100644 index 0000000..b98561a --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor/snippet.py @@ -0,0 +1,244 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import parser +import symbol +import sys +import token +import tokenize + +from py_utils.refactor import offset_token + + +class Snippet(object): + """A node in the Python parse tree. + + The Python grammar is defined at: + https://docs.python.org/2/reference/grammar.html + + There are two types of Snippets: + TokenSnippets are leaf nodes containing actual text. + Symbols are internal nodes representing higher-level groupings, and are + defined by the left-hand sides of the BNFs in the above link. + """ + @property + def type(self): + raise NotImplementedError() + + @property + def type_name(self): + raise NotImplementedError() + + @property + def children(self): + """Return a list of this node's children.""" + raise NotImplementedError() + + @property + def tokens(self): + """Return a tuple of the tokens this Snippet contains.""" + raise NotImplementedError() + + def PrintTree(self, indent=0, stream=sys.stdout): + """Spew a pretty-printed parse tree. Mostly useful for debugging.""" + raise NotImplementedError() + + def __str__(self): + return offset_token.Untokenize(self.tokens) + + def FindAll(self, snippet_type): + if isinstance(snippet_type, int): + if self.type == snippet_type: + yield self + else: + if isinstance(self, snippet_type): + yield self + + for child in self.children: + for snippet in child.FindAll(snippet_type): + yield snippet + + def FindChild(self, snippet_type, **kwargs): + for child in self.children: + if isinstance(snippet_type, int): + if child.type != snippet_type: + continue + else: + if not isinstance(child, snippet_type): + continue + + for attribute, value in kwargs: + if getattr(child, attribute) != value: + break + else: + return child + raise ValueError('%s is not in %s. Children are: %s' % + (snippet_type, self, self.children)) + + def FindChildren(self, snippet_type): + if isinstance(snippet_type, int): + for child in self.children: + if child.type == snippet_type: + yield child + else: + for child in self.children: + if isinstance(child, snippet_type): + yield child + + +class TokenSnippet(Snippet): + """A Snippet containing a list of tokens. + + A list of tokens may start with any number of comments and non-terminating + newlines, but must end with a syntactically meaningful token. + """ + + def __init__(self, token_type, tokens): + # For operators and delimiters, the TokenSnippet's type may be more specific + # than the type of the constituent token. E.g. the TokenSnippet type is + # token.DOT, but the token type is token.OP. This is because the parser + # has more context than the tokenizer. + self._type = token_type + self._tokens = tokens + self._modified = False + + @classmethod + def Create(cls, token_type, string, offset=(0, 0)): + return cls(token_type, + [offset_token.OffsetToken(token_type, string, offset)]) + + @property + def type(self): + return self._type + + @property + def type_name(self): + return token.tok_name[self.type] + + @property + def value(self): + return self._tokens[-1].string + + @value.setter + def value(self, value): + self._tokens[-1].string = value + self._modified = True + + @property + def children(self): + return [] + + @property + def tokens(self): + return tuple(self._tokens) + + @property + def modified(self): + return self._modified + + def PrintTree(self, indent=0, stream=sys.stdout): + stream.write(' ' * indent) + if not self.tokens: + print >> stream, self.type_name + return + + print >> stream, '%-4s' % self.type_name, repr(self.tokens[0].string) + for tok in self.tokens[1:]: + stream.write(' ' * indent) + print >> stream, ' ' * max(len(self.type_name), 4), repr(tok.string) + + +class Symbol(Snippet): + """A Snippet containing sub-Snippets. + + The possible types and type_names are defined in Python's symbol module.""" + + def __init__(self, symbol_type, children): + self._type = symbol_type + self._children = children + + @property + def type(self): + return self._type + + @property + def type_name(self): + return symbol.sym_name[self.type] + + @property + def children(self): + return self._children + + @children.setter + def children(self, value): # pylint: disable=arguments-differ + self._children = value + + @property + def tokens(self): + tokens = [] + for child in self.children: + tokens += child.tokens + return tuple(tokens) + + @property + def modified(self): + return any(child.modified for child in self.children) + + def PrintTree(self, indent=0, stream=sys.stdout): + stream.write(' ' * indent) + + # If there's only one child, collapse it onto the same line. + node = self + while len(node.children) == 1 and len(node.children[0].children) == 1: + print >> stream, node.type_name, + node = node.children[0] + + print >> stream, node.type_name + for child in node.children: + child.PrintTree(indent + 2, stream) + + +def Snippetize(f): + """Return the syntax tree of the given file.""" + f.seek(0) + syntax_tree = parser.st2list(parser.suite(f.read())) + tokens = offset_token.Tokenize(f) + + snippet = _SnippetizeNode(syntax_tree, tokens) + assert not tokens + return snippet + + +def _SnippetizeNode(node, tokens): + # The parser module gives a syntax tree that discards comments, + # non-terminating newlines, and whitespace information. Use the tokens given + # by the tokenize module to annotate the syntax tree with the information + # needed to exactly reproduce the original source code. + node_type = node[0] + + if node_type >= token.NT_OFFSET: + # Symbol. + children = tuple(_SnippetizeNode(child, tokens) for child in node[1:]) + return Symbol(node_type, children) + else: + # Token. + grabbed_tokens = [] + while tokens and ( + tokens[0].type == tokenize.COMMENT or tokens[0].type == tokenize.NL): + grabbed_tokens.append(tokens.popleft()) + + # parser has 2 NEWLINEs right before the end. + # tokenize has 0 or 1 depending on if the file has one. + # Create extra nodes without consuming tokens to account for this. + if node_type == token.NEWLINE: + for tok in tokens: + if tok.type == token.ENDMARKER: + return TokenSnippet(node_type, grabbed_tokens) + if tok.type != token.DEDENT: + break + + assert tokens[0].type == token.OP or node_type == tokens[0].type + + grabbed_tokens.append(tokens.popleft()) + return TokenSnippet(node_type, grabbed_tokens) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor_util/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor_util/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor_util/move.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor_util/move.py new file mode 100644 index 0000000..d68f93b --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/refactor_util/move.py @@ -0,0 +1,116 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import functools +import os +import sys + +from py_utils import refactor + + +def Run(sources, target, files_to_update): + """Move modules and update imports. + + Args: + sources: List of source module or package paths. + target: Destination module or package path. + files_to_update: Modules whose imports we should check for changes. + """ + # TODO(dtu): Support moving classes and functions. + moves = tuple(_Move(source, target) for source in sources) + + # Update imports and references. + refactor.Transform(functools.partial(_Update, moves), files_to_update) + + # Move files. + for move in moves: + os.rename(move.source_path, move.target_path) + + +def _Update(moves, module): + for import_statement in module.FindAll(refactor.Import): + for move in moves: + try: + if move.UpdateImportAndReferences(module, import_statement): + break + except NotImplementedError as e: + print >> sys.stderr, 'Error updating %s: %s' % (module.file_path, e) + + +class _Move(object): + + def __init__(self, source, target): + self._source_path = os.path.realpath(source) + self._target_path = os.path.realpath(target) + + if os.path.isdir(self._target_path): + self._target_path = os.path.join( + self._target_path, os.path.basename(self._source_path)) + + @property + def source_path(self): + return self._source_path + + @property + def target_path(self): + return self._target_path + + @property + def source_module_path(self): + return _ModulePath(self._source_path) + + @property + def target_module_path(self): + return _ModulePath(self._target_path) + + def UpdateImportAndReferences(self, module, import_statement): + """Update an import statement in a module and all its references.. + + Args: + module: The refactor.Module to update. + import_statement: The refactor.Import to update. + + Returns: + True if the import statement was updated, or False if the import statement + needed no updating. + """ + statement_path_parts = import_statement.path.split('.') + source_path_parts = self.source_module_path.split('.') + if source_path_parts != statement_path_parts[:len(source_path_parts)]: + return False + + # Update import statement. + old_name_parts = import_statement.name.split('.') + new_name_parts = ([self.target_module_path] + + statement_path_parts[len(source_path_parts):]) + import_statement.path = '.'.join(new_name_parts) + new_name = import_statement.name + + # Update references. + for reference in module.FindAll(refactor.Reference): + reference_parts = reference.value.split('.') + if old_name_parts != reference_parts[:len(old_name_parts)]: + continue + + new_reference_parts = [new_name] + reference_parts[len(old_name_parts):] + reference.value = '.'.join(new_reference_parts) + + return True + + +def _BaseDir(module_path): + if not os.path.isdir(module_path): + module_path = os.path.dirname(module_path) + + while '__init__.py' in os.listdir(module_path): + module_path = os.path.dirname(module_path) + + return module_path + + +def _ModulePath(module_path): + if os.path.split(module_path)[1] == '__init__.py': + module_path = os.path.dirname(module_path) + rel_path = os.path.relpath(module_path, _BaseDir(module_path)) + return os.path.splitext(rel_path)[0].replace(os.sep, '.') diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/shell_util.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/shell_util.py new file mode 100644 index 0000000..2a529c8 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/shell_util.py @@ -0,0 +1,40 @@ +# Copyright 2017 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +# +# Shell scripting helpers (created for Telemetry dependency roll scripts). + +import os as _os +import shutil as _shutil +import subprocess as _subprocess +import tempfile as _tempfile +from contextlib import contextmanager as _contextmanager + +@_contextmanager +def ScopedChangeDir(new_path): + old_path = _os.getcwd() + _os.chdir(new_path) + print '> cd', _os.getcwd() + try: + yield + finally: + _os.chdir(old_path) + print '> cd', old_path + +@_contextmanager +def ScopedTempDir(): + temp_dir = _tempfile.mkdtemp() + try: + with ScopedChangeDir(temp_dir): + yield + finally: + _shutil.rmtree(temp_dir) + +def CallProgram(path_parts, *args, **kwargs): + '''Call an executable os.path.join(*path_parts) with the arguments specified + by *args. Any keyword arguments are passed as environment variables.''' + args = [_os.path.join(*path_parts)] + list(args) + env = dict(_os.environ) + env.update(kwargs) + print '>', ' '.join(args) + _subprocess.check_call(args, env=env) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/tempfile_ext.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/tempfile_ext.py new file mode 100644 index 0000000..b095530 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/tempfile_ext.py @@ -0,0 +1,25 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + + +import contextlib +import shutil +import tempfile + + +@contextlib.contextmanager +def NamedTemporaryDirectory(suffix='', prefix='tmp', dir=None): + """A context manager that manages a temporary directory. + + This is a context manager version of tempfile.mkdtemp. The arguments to this + function are the same as the arguments for that one. + """ + # This uses |dir| as a parameter name for consistency with mkdtemp. + # pylint: disable=redefined-builtin + + d = tempfile.mkdtemp(suffix=suffix, prefix=prefix, dir=dir) + try: + yield d + finally: + shutil.rmtree(d) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/tempfile_ext_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/tempfile_ext_unittest.py new file mode 100644 index 0000000..6844623 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/tempfile_ext_unittest.py @@ -0,0 +1,39 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os + +from py_utils import tempfile_ext +from pyfakefs import fake_filesystem_unittest + + +class NamedTemporaryDirectoryTest(fake_filesystem_unittest.TestCase): + + def setUp(self): + self.setUpPyfakefs() + + def tearDown(self): + self.tearDownPyfakefs() + + def testBasic(self): + with tempfile_ext.NamedTemporaryDirectory() as d: + self.assertTrue(os.path.exists(d)) + self.assertTrue(os.path.isdir(d)) + self.assertFalse(os.path.exists(d)) + + def testSuffix(self): + test_suffix = 'foo' + with tempfile_ext.NamedTemporaryDirectory(suffix=test_suffix) as d: + self.assertTrue(os.path.basename(d).endswith(test_suffix)) + + def testPrefix(self): + test_prefix = 'bar' + with tempfile_ext.NamedTemporaryDirectory(prefix=test_prefix) as d: + self.assertTrue(os.path.basename(d).startswith(test_prefix)) + + def testDir(self): + test_dir = '/baz' + self.fs.CreateDirectory(test_dir) + with tempfile_ext.NamedTemporaryDirectory(dir=test_dir) as d: + self.assertEquals(test_dir, os.path.dirname(d)) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/test_data/foo.txt b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/test_data/foo.txt new file mode 100644 index 0000000..a9cac3e --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/test_data/foo.txt @@ -0,0 +1 @@ +This file is not executable. diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/xvfb.py b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/xvfb.py new file mode 100644 index 0000000..c09f3e3 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/common/py_utils/py_utils/xvfb.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +import os +import logging +import subprocess +import platform +import time + + +def ShouldStartXvfb(): + return platform.system() == 'Linux' + + +def StartXvfb(): + display = ':99' + xvfb_command = ['Xvfb', display, '-screen', '0', '1024x769x24', '-ac'] + xvfb_process = subprocess.Popen( + xvfb_command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + time.sleep(0.2) + returncode = xvfb_process.poll() + if returncode is None: + os.environ['DISPLAY'] = display + else: + logging.error('Xvfb did not start, returncode: %s, stdout:\n%s', + returncode, xvfb_process.stdout.read()) + xvfb_process = None + return xvfb_process diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/PRESUBMIT.py b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/PRESUBMIT.py new file mode 100644 index 0000000..a34480c --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/PRESUBMIT.py @@ -0,0 +1,32 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + + +def CheckChangeOnUpload(input_api, output_api): + return _CommonChecks(input_api, output_api) + + +def CheckChangeOnCommit(input_api, output_api): + return _CommonChecks(input_api, output_api) + + +def _CommonChecks(input_api, output_api): + results = [] + results += input_api.RunTests(input_api.canned_checks.GetPylint( + input_api, output_api, extra_paths_list=_GetPathsToPrepend(input_api), + pylintrc='pylintrc')) + return results + + +def _GetPathsToPrepend(input_api): + project_dir = input_api.PresubmitLocalPath() + catapult_dir = input_api.os_path.join(project_dir, '..') + return [ + project_dir, + + input_api.os_path.join(catapult_dir, 'common', 'py_utils'), + + input_api.os_path.join(catapult_dir, 'third_party', 'mock'), + input_api.os_path.join(catapult_dir, 'third_party', 'pyfakefs'), + ] diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/__init__.py new file mode 100644 index 0000000..68efbdb --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/__init__.py @@ -0,0 +1,43 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import sys + + +CATAPULT_PATH = os.path.dirname(os.path.dirname(os.path.dirname( + os.path.abspath(__file__)))) +CATAPULT_THIRD_PARTY_PATH = os.path.join(CATAPULT_PATH, 'third_party') +DEPENDENCY_MANAGER_PATH = os.path.join(CATAPULT_PATH, 'dependency_manager') + + +def _AddDirToPythonPath(*path_parts): + path = os.path.abspath(os.path.join(*path_parts)) + if os.path.isdir(path) and path not in sys.path: + sys.path.append(path) + + +_AddDirToPythonPath(CATAPULT_PATH, 'common', 'py_utils') +_AddDirToPythonPath(CATAPULT_THIRD_PARTY_PATH, 'mock') +_AddDirToPythonPath(CATAPULT_THIRD_PARTY_PATH, 'pyfakefs') +_AddDirToPythonPath(CATAPULT_THIRD_PARTY_PATH, 'zipfile') +_AddDirToPythonPath(DEPENDENCY_MANAGER_PATH) + + +# pylint: disable=unused-import +from .archive_info import ArchiveInfo +from .base_config import BaseConfig +from .cloud_storage_info import CloudStorageInfo +from .dependency_info import DependencyInfo +from .exceptions import CloudStorageError +from .exceptions import CloudStorageUploadConflictError +from .exceptions import EmptyConfigError +from .exceptions import FileNotFoundError +from .exceptions import NoPathFoundError +from .exceptions import ReadWriteError +from .exceptions import UnsupportedConfigFormatError +from .local_path_info import LocalPathInfo +from .manager import DependencyManager +# pylint: enable=unused-import + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/archive_info.py b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/archive_info.py new file mode 100644 index 0000000..ff13f90 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/archive_info.py @@ -0,0 +1,80 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import glob +import os +import shutil + +from dependency_manager import exceptions +from dependency_manager import dependency_manager_util + + +class ArchiveInfo(object): + + def __init__(self, archive_file, unzip_path, path_within_archive, + stale_unzip_path_glob=None): + """ Container for the information needed to unzip a downloaded archive. + + Args: + archive_path: Path to the archive file. + unzip_path: Path to unzip the archive into. Assumes that this path + is unique for the archive. + path_within_archive: Specify if and how to handle zip archives + downloaded from cloud_storage. Expected values: + None: Do not unzip the file downloaded from cloud_storage. + '.': Unzip the file downloaded from cloud_storage. The + unzipped file/folder is the expected dependency. + file_path: Unzip the file downloaded from cloud_storage. + |file_path| is the path to the expected dependency, + relative to the unzipped archive path. + stale_unzip_path_glob: Optional argument specifying a glob matching + string which matches directories that should be removed before this + archive is extracted (if it is extracted at all). + """ + self._archive_file = archive_file + self._unzip_path = unzip_path + self._path_within_archive = path_within_archive + self._dependency_path = os.path.join( + self._unzip_path, self._path_within_archive) + self._stale_unzip_path_glob = stale_unzip_path_glob + if not self._has_minimum_data: + raise ValueError( + 'Not enough information specified to initialize an archive info.' + ' %s' % self) + + def GetUnzippedPath(self): + if self.ShouldUnzipArchive(): + # Remove stale unzip results + if self._stale_unzip_path_glob: + for path in glob.glob(self._stale_unzip_path_glob): + shutil.rmtree(path) + # TODO(aiolos): Replace UnzipFile with zipfile.extractall once python + # version 2.7.4 or later can safely be assumed. + dependency_manager_util.UnzipArchive( + self._archive_file, self._unzip_path) + if self.ShouldUnzipArchive(): + raise exceptions.ArchiveError( + "Expected path '%s' was not extracted from archive '%s'." % + (self._dependency_path, self._archive_file)) + return self._dependency_path + + def ShouldUnzipArchive(self): + if not self._has_minimum_data: + raise exceptions.ArchiveError( + 'Missing needed info to unzip archive. Known data: %s', + self.data_string) + return not os.path.exists(self._dependency_path) + + @property + def _has_minimum_data(self): + return all([self._archive_file, self._unzip_path, + self._dependency_path]) + + def __repr__(self): + return ( + 'ArchiveInfo(archive_file=%s, unzip_path=%s, path_within_archive=%s, ' + 'dependency_path =%s)' % ( + self._archive_file, self._unzip_path, self._path_within_archive, + self._dependency_path)) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/base_config.py b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/base_config.py new file mode 100644 index 0000000..c735688 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/base_config.py @@ -0,0 +1,388 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import json +import logging +import os + +from py_utils import cloud_storage +from dependency_manager import archive_info +from dependency_manager import cloud_storage_info +from dependency_manager import dependency_info +from dependency_manager import exceptions +from dependency_manager import local_path_info +from dependency_manager import uploader + + +class BaseConfig(object): + """A basic config class for use with the DependencyManager. + + Initiated with a json file in the following format: + + { "config_type": "BaseConfig", + "dependencies": { + "dep_name1": { + "cloud_storage_base_folder": "base_folder1", + "cloud_storage_bucket": "bucket1", + "file_info": { + "platform1": { + "cloud_storage_hash": "hash_for_platform1", + "download_path": "download_path111", + "version_in_cs": "1.11.1.11." + "local_paths": ["local_path1110", "local_path1111"] + }, + "platform2": { + "cloud_storage_hash": "hash_for_platform2", + "download_path": "download_path2", + "local_paths": ["local_path20", "local_path21"] + }, + ... + } + }, + "dependency_name_2": { + ... + }, + ... + } + } + + Required fields: "dependencies" and "config_type". + Note that config_type must be "BaseConfig" + + Assumptions: + "cloud_storage_base_folder" is a top level folder in the given + "cloud_storage_bucket" where all of the dependency files are stored + at "dependency_name"_"cloud_storage_hash". + + "download_path" and all paths in "local_paths" are relative to the + config file's location. + + All or none of the following cloud storage related fields must be + included in each platform dictionary: + "cloud_storage_hash", "download_path", "cs_remote_path" + + "version_in_cs" is an optional cloud storage field, but is dependent + on the above cloud storage related fields. + + + Also note that platform names are often of the form os_architechture. + Ex: "win_AMD64" + + More information on the fields can be found in dependencies_info.py + """ + def __init__(self, file_path, writable=False): + """ Initialize a BaseConfig for the DependencyManager. + + Args: + writable: False: This config will be used to lookup information. + True: This config will be used to update information. + + file_path: Path to a file containing a json dictionary in the expected + json format for this config class. Base format expected: + + { "config_type": config_type, + "dependencies": dependencies_dict } + + config_type: must match the return value of GetConfigType. + dependencies: A dictionary with the information needed to + create dependency_info instances for the given + dependencies. + + See dependency_info.py for more information. + """ + self._config_path = file_path + self._writable = writable + self._pending_uploads = [] + if not self._config_path: + raise ValueError('Must supply config file path.') + if not os.path.exists(self._config_path): + if not writable: + raise exceptions.EmptyConfigError(file_path) + self._config_data = {} + self._WriteConfigToFile(self._config_path, dependencies=self._config_data) + else: + with open(file_path, 'r') as f: + config_data = json.load(f) + if not config_data: + raise exceptions.EmptyConfigError(file_path) + config_type = config_data.pop('config_type', None) + if config_type != self.GetConfigType(): + raise ValueError( + 'Supplied config_type (%s) is not the expected type (%s) in file ' + '%s' % (config_type, self.GetConfigType(), file_path)) + self._config_data = config_data.get('dependencies', {}) + + def IterDependencyInfo(self): + """ Yields a DependencyInfo for each dependency/platform pair. + + Raises: + ReadWriteError: If called when the config is writable. + ValueError: If any of the dependencies contain partial information for + downloading from cloud_storage. (See dependency_info.py) + """ + if self._writable: + raise exceptions.ReadWriteError( + 'Trying to read dependency info from a writable config. File for ' + 'config: %s' % self._config_path) + base_path = os.path.dirname(self._config_path) + for dependency in self._config_data: + dependency_dict = self._config_data.get(dependency) + platforms_dict = dependency_dict.get('file_info', {}) + for platform in platforms_dict: + platform_info = platforms_dict.get(platform) + + local_info = None + local_paths = platform_info.get('local_paths', []) + if local_paths: + paths = [] + for path in local_paths: + path = self._FormatPath(path) + paths.append(os.path.abspath(os.path.join(base_path, path))) + local_info = local_path_info.LocalPathInfo(paths) + + cs_info = None + cs_bucket = dependency_dict.get('cloud_storage_bucket') + cs_base_folder = dependency_dict.get('cloud_storage_base_folder', '') + download_path = platform_info.get('download_path') + if download_path: + download_path = self._FormatPath(download_path) + download_path = os.path.abspath( + os.path.join(base_path, download_path)) + + cs_hash = platform_info.get('cloud_storage_hash') + if not cs_hash: + raise exceptions.ConfigError( + 'Dependency %s has cloud storage info on platform %s, but is ' + 'missing a cloud storage hash.', dependency, platform) + cs_remote_path = self._CloudStorageRemotePath( + dependency, cs_hash, cs_base_folder) + version_in_cs = platform_info.get('version_in_cs') + + zip_info = None + path_within_archive = platform_info.get('path_within_archive') + if path_within_archive: + unzip_path = os.path.abspath( + os.path.join(os.path.dirname(download_path), + '%s_%s_%s' % (dependency, platform, cs_hash))) + stale_unzip_path_glob = os.path.abspath( + os.path.join(os.path.dirname(download_path), + '%s_%s_%s' % (dependency, platform, + '[0-9a-f]' * 40))) + zip_info = archive_info.ArchiveInfo( + download_path, unzip_path, path_within_archive, + stale_unzip_path_glob) + + cs_info = cloud_storage_info.CloudStorageInfo( + cs_bucket, cs_hash, download_path, cs_remote_path, + version_in_cs=version_in_cs, archive_info=zip_info) + + dep_info = dependency_info.DependencyInfo( + dependency, platform, self._config_path, + local_path_info=local_info, cloud_storage_info=cs_info) + yield dep_info + + @classmethod + def GetConfigType(cls): + return 'BaseConfig' + + @property + def config_path(self): + return self._config_path + + def AddCloudStorageDependencyUpdateJob( + self, dependency, platform, dependency_path, version=None, + execute_job=True): + """Update the file downloaded from cloud storage for a dependency/platform. + + Upload a new file to cloud storage for the given dependency and platform + pair and update the cloud storage hash and the version for the given pair. + + Example usage: + The following should update the default platform for 'dep_name': + UpdateCloudStorageDependency('dep_name', 'default', 'path/to/file') + + The following should update both the mac and win platforms for 'dep_name', + or neither if either update fails: + UpdateCloudStorageDependency( + 'dep_name', 'mac_x86_64', 'path/to/mac/file', execute_job=False) + UpdateCloudStorageDependency( + 'dep_name', 'win_AMD64', 'path/to/win/file', execute_job=False) + ExecuteUpdateJobs() + + Args: + dependency: The dependency to update. + platform: The platform to update the dependency info for. + dependency_path: Path to the new dependency to be used. + version: Version of the updated dependency, for checking future updates + against. + execute_job: True if the config should be written to disk and the file + should be uploaded to cloud storage after the update. False if + multiple updates should be performed atomically. Must call + ExecuteUpdateJobs after all non-executed jobs are added to complete + the update. + + Raises: + ReadWriteError: If the config was not initialized as writable, or if + |execute_job| is True but the config has update jobs still pending + execution. + ValueError: If no information exists in the config for |dependency| on + |platform|. + """ + self._ValidateIsConfigUpdatable( + execute_job=execute_job, dependency=dependency, platform=platform) + cs_hash = cloud_storage.CalculateHash(dependency_path) + if version: + self._SetPlatformData(dependency, platform, 'version_in_cs', version) + self._SetPlatformData(dependency, platform, 'cloud_storage_hash', cs_hash) + + cs_base_folder = self._GetPlatformData( + dependency, platform, 'cloud_storage_base_folder') + cs_bucket = self._GetPlatformData( + dependency, platform, 'cloud_storage_bucket') + cs_remote_path = self._CloudStorageRemotePath( + dependency, cs_hash, cs_base_folder) + self._pending_uploads.append(uploader.CloudStorageUploader( + cs_bucket, cs_remote_path, dependency_path)) + if execute_job: + self.ExecuteUpdateJobs() + + def ExecuteUpdateJobs(self, force=False): + """Write all config changes to the config_path specified in __init__. + + Upload all files pending upload and then write the updated config to + file. Attempt to remove all uploaded files on failure. + + Args: + force: True if files should be uploaded to cloud storage even if a + file already exists in the upload location. + + Returns: + True: if the config was dirty and the upload succeeded. + False: if the config was not dirty. + + Raises: + CloudStorageUploadConflictError: If |force| is False and the potential + upload location of a file already exists. + CloudStorageError: If copying an existing file to the backup location + or uploading a new file fails. + """ + self._ValidateIsConfigUpdatable() + if not self._IsDirty(): + logging.info('ExecuteUpdateJobs called on clean config') + return False + if not self._pending_uploads: + logging.debug('No files needing upload.') + else: + try: + for item_pending_upload in self._pending_uploads: + item_pending_upload.Upload(force) + self._WriteConfigToFile(self._config_path, self._config_data) + self._pending_uploads = [] + except: + # Attempt to rollback the update in any instance of failure, even user + # interrupt via Ctrl+C; but don't consume the exception. + logging.error('Update failed, attempting to roll it back.') + for upload_item in reversed(self._pending_uploads): + upload_item.Rollback() + raise + return True + + def GetVersion(self, dependency, platform): + """Return the Version information for the given dependency.""" + return self._GetPlatformData( + dependency, platform, data_type='version_in_cs') + + def _IsDirty(self): + with open(self._config_path, 'r') as fstream: + curr_config_data = json.load(fstream) + curr_config_data = curr_config_data.get('dependencies', {}) + return self._config_data != curr_config_data + + def _SetPlatformData(self, dependency, platform, data_type, data): + self._ValidateIsConfigWritable() + dependency_dict = self._config_data.get(dependency, {}) + platform_dict = dependency_dict.get('file_info', {}).get(platform) + if not platform_dict: + raise ValueError('No platform data for platform %s on dependency %s' % + (platform, dependency)) + if (data_type == 'cloud_storage_bucket' or + data_type == 'cloud_storage_base_folder'): + self._config_data[dependency][data_type] = data + else: + self._config_data[dependency]['file_info'][platform][data_type] = data + + def _GetPlatformData(self, dependency, platform, data_type=None): + dependency_dict = self._config_data.get(dependency, {}) + if not dependency_dict: + raise ValueError('Dependency %s is not in config.' % dependency) + platform_dict = dependency_dict.get('file_info', {}).get(platform) + if not platform_dict: + raise ValueError('No platform data for platform %s on dependency %s' % + (platform, dependency)) + if data_type: + if (data_type == 'cloud_storage_bucket' or + data_type == 'cloud_storage_base_folder'): + return dependency_dict.get(data_type) + return platform_dict.get(data_type) + return platform_dict + + def _ValidateIsConfigUpdatable( + self, execute_job=False, dependency=None, platform=None): + self._ValidateIsConfigWritable() + if self._IsDirty() and execute_job: + raise exceptions.ReadWriteError( + 'A change has already been made to this config. Either call without' + 'using the execute_job option or first call ExecuteUpdateJobs().') + if dependency and not self._config_data.get(dependency): + raise ValueError('Cannot update information because dependency %s does ' + 'not exist.' % dependency) + if platform and not self._GetPlatformData(dependency, platform): + raise ValueError('No dependency info is available for the given ' + 'dependency: %s' % dependency) + + def _ValidateIsConfigWritable(self): + if not self._writable: + raise exceptions.ReadWriteError( + 'Trying to update the information from a read-only config. ' + 'File for config: %s' % self._config_path) + + @staticmethod + def _CloudStorageRemotePath(dependency, cs_hash, cs_base_folder): + cs_remote_file = '%s_%s' % (dependency, cs_hash) + cs_remote_path = cs_remote_file if not cs_base_folder else ( + '%s/%s' % (cs_base_folder, cs_remote_file)) + return cs_remote_path + + @classmethod + def _FormatPath(cls, file_path): + """ Format |file_path| for the current file system. + + We may be downloading files for another platform, so paths must be + downloadable on the current system. + """ + if not file_path: + return file_path + if os.path.sep != '\\': + return file_path.replace('\\', os.path.sep) + elif os.path.sep != '/': + return file_path.replace('/', os.path.sep) + return file_path + + @classmethod + def _WriteConfigToFile(cls, file_path, dependencies=None): + json_dict = cls._GetJsonDict(dependencies) + file_dir = os.path.dirname(file_path) + if not os.path.exists(file_dir): + os.makedirs(file_dir) + with open(file_path, 'w') as outfile: + json.dump( + json_dict, outfile, indent=2, sort_keys=True, separators=(',', ': ')) + return json_dict + + @classmethod + def _GetJsonDict(cls, dependencies=None): + dependencies = dependencies or {} + json_dict = {'config_type': cls.GetConfigType(), + 'dependencies': dependencies} + return json_dict diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/base_config_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/base_config_unittest.py new file mode 100644 index 0000000..0dc775b --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/base_config_unittest.py @@ -0,0 +1,1525 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# pylint: disable=unused-argument + +import os +import unittest + +from py_utils import cloud_storage +import mock +from pyfakefs import fake_filesystem_unittest +from pyfakefs import fake_filesystem +from pyfakefs import fake_filesystem_glob + +import dependency_manager +from dependency_manager import uploader + + +class BaseConfigCreationAndUpdateUnittests(fake_filesystem_unittest.TestCase): + def setUp(self): + self.addTypeEqualityFunc(uploader.CloudStorageUploader, + uploader.CloudStorageUploader.__eq__) + self.setUpPyfakefs() + self.dependencies = { + 'dep1': {'cloud_storage_bucket': 'bucket1', + 'cloud_storage_base_folder': 'dependencies_folder', + 'file_info': { + 'plat1': { + 'cloud_storage_hash': 'hash11', + 'download_path': '../../relative/dep1/path1'}, + 'plat2': { + 'cloud_storage_hash': 'hash12', + 'download_path': '../../relative/dep1/path2'}}}, + 'dep2': {'cloud_storage_bucket': 'bucket2', + 'file_info': { + 'plat1': { + 'cloud_storage_hash': 'hash21', + 'download_path': '../../relative/dep2/path1'}, + 'plat2': { + 'cloud_storage_hash': 'hash22', + 'download_path': '../../relative/dep2/path2'}}}} + + self.expected_file_lines = [ + # pylint: disable=bad-continuation + '{', '"config_type": "BaseConfig",', '"dependencies": {', + '"dep1": {', '"cloud_storage_base_folder": "dependencies_folder",', + '"cloud_storage_bucket": "bucket1",', '"file_info": {', + '"plat1": {', '"cloud_storage_hash": "hash11",', + '"download_path": "../../relative/dep1/path1"', '},', + '"plat2": {', '"cloud_storage_hash": "hash12",', + '"download_path": "../../relative/dep1/path2"', '}', '}', '},', + '"dep2": {', '"cloud_storage_bucket": "bucket2",', '"file_info": {', + '"plat1": {', '"cloud_storage_hash": "hash21",', + '"download_path": "../../relative/dep2/path1"', '},', + '"plat2": {', '"cloud_storage_hash": "hash22",', + '"download_path": "../../relative/dep2/path2"', '}', '}', '}', + '}', '}'] + + self.file_path = os.path.abspath(os.path.join( + 'path', 'to', 'config', 'file')) + + self.new_dep_path = 'path/to/new/dep' + self.fs.CreateFile(self.new_dep_path) + self.new_dep_hash = 'A23B56B7F23E798601F' + self.new_dependencies = { + 'dep1': {'cloud_storage_bucket': 'bucket1', + 'cloud_storage_base_folder': 'dependencies_folder', + 'file_info': { + 'plat1': { + 'cloud_storage_hash': 'hash11', + 'download_path': '../../relative/dep1/path1'}, + 'plat2': { + 'cloud_storage_hash': self.new_dep_hash, + 'download_path': '../../relative/dep1/path2'}}}, + 'dep2': {'cloud_storage_bucket': 'bucket2', + 'file_info': { + 'plat1': { + 'cloud_storage_hash': 'hash21', + 'download_path': '../../relative/dep2/path1'}, + 'plat2': { + 'cloud_storage_hash': 'hash22', + 'download_path': '../../relative/dep2/path2'}}}} + self.new_bucket = 'bucket1' + self.new_remote_path = 'dependencies_folder/dep1_%s' % self.new_dep_hash + self.new_pending_upload = uploader.CloudStorageUploader( + self.new_bucket, self.new_remote_path, self.new_dep_path) + self.expected_new_backup_path = '.'.join([self.new_remote_path, 'old']) + self.new_expected_file_lines = [ + # pylint: disable=bad-continuation + '{', '"config_type": "BaseConfig",', '"dependencies": {', + '"dep1": {', '"cloud_storage_base_folder": "dependencies_folder",', + '"cloud_storage_bucket": "bucket1",', '"file_info": {', + '"plat1": {', '"cloud_storage_hash": "hash11",', + '"download_path": "../../relative/dep1/path1"', '},', + '"plat2": {', '"cloud_storage_hash": "%s",' % self.new_dep_hash, + '"download_path": "../../relative/dep1/path2"', '}', '}', '},', + '"dep2": {', '"cloud_storage_bucket": "bucket2",', '"file_info": {', + '"plat1": {', '"cloud_storage_hash": "hash21",', + '"download_path": "../../relative/dep2/path1"', '},', + '"plat2": {', '"cloud_storage_hash": "hash22",', + '"download_path": "../../relative/dep2/path2"', '}', '}', '}', + '}', '}'] + + self.final_dep_path = 'path/to/final/dep' + self.fs.CreateFile(self.final_dep_path) + self.final_dep_hash = 'B34662F23B56B7F98601F' + self.final_bucket = 'bucket2' + self.final_remote_path = 'dep1_%s' % self.final_dep_hash + self.final_pending_upload = uploader.CloudStorageUploader( + self.final_bucket, self.final_remote_path, self.final_dep_path) + self.expected_final_backup_path = '.'.join([self.final_remote_path, + 'old']) + self.final_dependencies = { + 'dep1': {'cloud_storage_bucket': 'bucket1', + 'cloud_storage_base_folder': 'dependencies_folder', + 'file_info': { + 'plat1': { + 'cloud_storage_hash': 'hash11', + 'download_path': '../../relative/dep1/path1'}, + 'plat2': { + 'cloud_storage_hash': self.new_dep_hash, + 'download_path': '../../relative/dep1/path2'}}}, + 'dep2': {'cloud_storage_bucket': 'bucket2', + 'file_info': { + 'plat1': { + 'cloud_storage_hash': self.final_dep_hash, + 'download_path': '../../relative/dep2/path1'}, + 'plat2': { + 'cloud_storage_hash': 'hash22', + 'download_path': '../../relative/dep2/path2'}}}} + self.final_expected_file_lines = [ + # pylint: disable=bad-continuation + '{', '"config_type": "BaseConfig",', '"dependencies": {', + '"dep1": {', '"cloud_storage_base_folder": "dependencies_folder",', + '"cloud_storage_bucket": "bucket1",', '"file_info": {', + '"plat1": {', '"cloud_storage_hash": "hash11",', + '"download_path": "../../relative/dep1/path1"', '},', + '"plat2": {', '"cloud_storage_hash": "%s",' % self.new_dep_hash, + '"download_path": "../../relative/dep1/path2"', '}', '}', '},', + '"dep2": {', '"cloud_storage_bucket": "bucket2",', '"file_info": {', + '"plat1": {', '"cloud_storage_hash": "%s",' % self.final_dep_hash, + '"download_path": "../../relative/dep2/path1"', '},', + '"plat2": {', '"cloud_storage_hash": "hash22",', + '"download_path": "../../relative/dep2/path2"', '}', '}', '}', + '}', '}'] + + + def tearDown(self): + self.tearDownPyfakefs() + + # Init is not meant to be overridden, so we should be mocking the + # base_config's json module, even in subclasses. + def testCreateEmptyConfig(self): + expected_file_lines = ['{', + '"config_type": "BaseConfig",', + '"dependencies": {}', + '}'] + config = dependency_manager.BaseConfig(self.file_path, writable=True) + + file_module = fake_filesystem.FakeFileOpen(self.fs) + for line in file_module(self.file_path): + self.assertEqual(expected_file_lines.pop(0), line.strip()) + self.fs.CloseOpenFile(file_module(self.file_path)) + self.assertEqual({}, config._config_data) + self.assertEqual(self.file_path, config._config_path) + + def testCreateEmptyConfigError(self): + self.assertRaises(dependency_manager.EmptyConfigError, + dependency_manager.BaseConfig, self.file_path) + + def testCloudStorageRemotePath(self): + dependency = 'dep_name' + cs_hash = self.new_dep_hash + cs_base_folder = 'dependency_remote_folder' + expected_remote_path = '%s/%s_%s' % (cs_base_folder, dependency, cs_hash) + remote_path = dependency_manager.BaseConfig._CloudStorageRemotePath( + dependency, cs_hash, cs_base_folder) + self.assertEqual(expected_remote_path, remote_path) + + cs_base_folder = 'dependency_remote_folder' + expected_remote_path = '%s_%s' % (dependency, cs_hash) + remote_path = dependency_manager.BaseConfig._CloudStorageRemotePath( + dependency, cs_hash, cs_base_folder) + + def testGetEmptyJsonDict(self): + expected_json_dict = {'config_type': 'BaseConfig', + 'dependencies': {}} + json_dict = dependency_manager.BaseConfig._GetJsonDict() + self.assertEqual(expected_json_dict, json_dict) + + def testGetNonEmptyJsonDict(self): + expected_json_dict = {"config_type": "BaseConfig", + "dependencies": self.dependencies} + json_dict = dependency_manager.BaseConfig._GetJsonDict(self.dependencies) + self.assertEqual(expected_json_dict, json_dict) + + def testWriteEmptyConfigToFile(self): + expected_file_lines = ['{', '"config_type": "BaseConfig",', + '"dependencies": {}', '}'] + self.assertFalse(os.path.exists(self.file_path)) + dependency_manager.BaseConfig._WriteConfigToFile(self.file_path) + self.assertTrue(os.path.exists(self.file_path)) + file_module = fake_filesystem.FakeFileOpen(self.fs) + for line in file_module(self.file_path): + self.assertEqual(expected_file_lines.pop(0), line.strip()) + self.fs.CloseOpenFile(file_module(self.file_path)) + + def testWriteNonEmptyConfigToFile(self): + self.assertFalse(os.path.exists(self.file_path)) + dependency_manager.BaseConfig._WriteConfigToFile(self.file_path, + self.dependencies) + self.assertTrue(os.path.exists(self.file_path)) + expected_file_lines = list(self.expected_file_lines) + file_module = fake_filesystem.FakeFileOpen(self.fs) + for line in file_module(self.file_path): + self.assertEqual(expected_file_lines.pop(0), line.strip()) + self.fs.CloseOpenFile(file_module(self.file_path)) + + @mock.patch('dependency_manager.uploader.cloud_storage') + def testExecuteUpdateJobsNoOp(self, uploader_cs_mock): + self.fs.CreateFile(self.file_path, + contents='\n'.join(self.expected_file_lines)) + config = dependency_manager.BaseConfig(self.file_path, writable=True) + + self.assertFalse(config.ExecuteUpdateJobs()) + self.assertFalse(config._IsDirty()) + self.assertFalse(config._pending_uploads) + self.assertEqual(self.dependencies, config._config_data) + file_module = fake_filesystem.FakeFileOpen(self.fs) + expected_file_lines = list(self.expected_file_lines) + for line in file_module(self.file_path): + self.assertEqual(expected_file_lines.pop(0), line.strip()) + self.fs.CloseOpenFile(file_module(self.file_path)) + + @mock.patch('dependency_manager.uploader.cloud_storage') + def testExecuteUpdateJobsFailureOnInsertNoCSCollision( + self, uploader_cs_mock): + uploader_cs_mock.Exists.return_value = False + uploader_cs_mock.Insert.side_effect = cloud_storage.CloudStorageError + self.fs.CreateFile(self.file_path, + contents='\n'.join(self.expected_file_lines)) + config = dependency_manager.BaseConfig(self.file_path, writable=True) + config._config_data = self.new_dependencies.copy() + config._is_dirty = True + config._pending_uploads = [self.new_pending_upload] + self.assertEqual(self.new_dependencies, config._config_data) + self.assertTrue(config._is_dirty) + self.assertEqual(1, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + expected_exists_calls = [mock.call(self.new_bucket, self.new_remote_path)] + expected_insert_calls = [mock.call(self.new_bucket, self.new_remote_path, + self.new_dep_path)] + expected_copy_calls = [] + expected_delete_calls = [] + + self.assertRaises(cloud_storage.CloudStorageError, + config.ExecuteUpdateJobs) + self.assertTrue(config._is_dirty) + self.assertEqual(1, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + self.assertEqual(self.new_dependencies, config._config_data) + file_module = fake_filesystem.FakeFileOpen(self.fs) + expected_file_lines = list(self.expected_file_lines) + for line in file_module(self.file_path): + self.assertEqual(expected_file_lines.pop(0), line.strip()) + self.fs.CloseOpenFile(file_module(self.file_path)) + self.assertEqual(1, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + self.assertEqual(expected_insert_calls, + uploader_cs_mock.Insert.call_args_list) + self.assertEqual(expected_exists_calls, + uploader_cs_mock.Exists.call_args_list) + self.assertEqual(expected_copy_calls, + uploader_cs_mock.Copy.call_args_list) + self.assertEqual(expected_delete_calls, + uploader_cs_mock.Delete.call_args_list) + + @mock.patch('dependency_manager.uploader.cloud_storage') + def testExecuteUpdateJobsFailureOnInsertCSCollisionForce( + self, uploader_cs_mock): + uploader_cs_mock.Exists.return_value = True + uploader_cs_mock.Insert.side_effect = cloud_storage.CloudStorageError + self.fs.CreateFile(self.file_path, + contents='\n'.join(self.expected_file_lines)) + config = dependency_manager.BaseConfig(self.file_path, writable=True) + config._config_data = self.new_dependencies.copy() + config._is_dirty = True + config._pending_uploads = [self.new_pending_upload] + self.assertEqual(self.new_dependencies, config._config_data) + self.assertTrue(config._is_dirty) + self.assertEqual(1, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + expected_exists_calls = [mock.call(self.new_bucket, self.new_remote_path)] + expected_insert_calls = [mock.call(self.new_bucket, self.new_remote_path, + self.new_dep_path)] + expected_copy_calls = [mock.call(self.new_bucket, self.new_bucket, + self.new_remote_path, + self.expected_new_backup_path), + mock.call(self.new_bucket, self.new_bucket, + self.expected_new_backup_path, + self.new_remote_path)] + expected_delete_calls = [] + + self.assertRaises(cloud_storage.CloudStorageError, + config.ExecuteUpdateJobs, force=True) + self.assertTrue(config._is_dirty) + self.assertEqual(1, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + self.assertEqual(self.new_dependencies, config._config_data) + file_module = fake_filesystem.FakeFileOpen(self.fs) + expected_file_lines = list(self.expected_file_lines) + for line in file_module(self.file_path): + self.assertEqual(expected_file_lines.pop(0), line.strip()) + self.fs.CloseOpenFile(file_module(self.file_path)) + self.assertEqual(1, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + self.assertEqual(expected_insert_calls, + uploader_cs_mock.Insert.call_args_list) + self.assertEqual(expected_exists_calls, + uploader_cs_mock.Exists.call_args_list) + self.assertEqual(expected_copy_calls, + uploader_cs_mock.Copy.call_args_list) + self.assertEqual(expected_delete_calls, + uploader_cs_mock.Delete.call_args_list) + + @mock.patch('dependency_manager.uploader.cloud_storage') + def testExecuteUpdateJobsFailureOnInsertCSCollisionNoForce( + self, uploader_cs_mock): + uploader_cs_mock.Exists.return_value = True + uploader_cs_mock.Insert.side_effect = cloud_storage.CloudStorageError + self.fs.CreateFile(self.file_path, + contents='\n'.join(self.expected_file_lines)) + config = dependency_manager.BaseConfig(self.file_path, writable=True) + config._config_data = self.new_dependencies.copy() + config._is_dirty = True + config._pending_uploads = [self.new_pending_upload] + self.assertEqual(self.new_dependencies, config._config_data) + self.assertTrue(config._is_dirty) + self.assertEqual(1, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + expected_exists_calls = [mock.call(self.new_bucket, self.new_remote_path)] + expected_insert_calls = [] + expected_copy_calls = [] + expected_delete_calls = [] + + self.assertRaises(cloud_storage.CloudStorageError, + config.ExecuteUpdateJobs) + self.assertTrue(config._is_dirty) + self.assertEqual(1, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + self.assertEqual(self.new_dependencies, config._config_data) + file_module = fake_filesystem.FakeFileOpen(self.fs) + expected_file_lines = list(self.expected_file_lines) + for line in file_module(self.file_path): + self.assertEqual(expected_file_lines.pop(0), line.strip()) + self.fs.CloseOpenFile(file_module(self.file_path)) + self.assertEqual(1, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + self.assertEqual(expected_insert_calls, + uploader_cs_mock.Insert.call_args_list) + self.assertEqual(expected_exists_calls, + uploader_cs_mock.Exists.call_args_list) + self.assertEqual(expected_copy_calls, + uploader_cs_mock.Copy.call_args_list) + self.assertEqual(expected_delete_calls, + uploader_cs_mock.Delete.call_args_list) + + @mock.patch('dependency_manager.uploader.cloud_storage') + def testExecuteUpdateJobsFailureOnCopy( + self, uploader_cs_mock): + uploader_cs_mock.Exists.return_value = True + uploader_cs_mock.Copy.side_effect = cloud_storage.CloudStorageError + self.fs.CreateFile(self.file_path, + contents='\n'.join(self.expected_file_lines)) + config = dependency_manager.BaseConfig(self.file_path, writable=True) + config._config_data = self.new_dependencies.copy() + config._is_dirty = True + config._pending_uploads = [self.new_pending_upload] + self.assertEqual(self.new_dependencies, config._config_data) + self.assertTrue(config._is_dirty) + self.assertEqual(1, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + expected_exists_calls = [mock.call(self.new_bucket, self.new_remote_path)] + expected_insert_calls = [] + expected_copy_calls = [mock.call(self.new_bucket, self.new_bucket, + self.new_remote_path, + self.expected_new_backup_path)] + expected_delete_calls = [] + + self.assertRaises(cloud_storage.CloudStorageError, + config.ExecuteUpdateJobs, force=True) + self.assertTrue(config._is_dirty) + self.assertEqual(1, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + self.assertEqual(self.new_dependencies, config._config_data) + file_module = fake_filesystem.FakeFileOpen(self.fs) + expected_file_lines = list(self.expected_file_lines) + for line in file_module(self.file_path): + self.assertEqual(expected_file_lines.pop(0), line.strip()) + self.fs.CloseOpenFile(file_module(self.file_path)) + self.assertEqual(1, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + self.assertEqual(expected_insert_calls, + uploader_cs_mock.Insert.call_args_list) + self.assertEqual(expected_exists_calls, + uploader_cs_mock.Exists.call_args_list) + self.assertEqual(expected_copy_calls, + uploader_cs_mock.Copy.call_args_list) + self.assertEqual(expected_delete_calls, + uploader_cs_mock.Delete.call_args_list) + + @mock.patch('dependency_manager.uploader.cloud_storage') + def testExecuteUpdateJobsFailureOnSecondInsertNoCSCollision( + self, uploader_cs_mock): + uploader_cs_mock.Exists.return_value = False + uploader_cs_mock.Insert.side_effect = [ + True, cloud_storage.CloudStorageError] + self.fs.CreateFile(self.file_path, + contents='\n'.join(self.expected_file_lines)) + config = dependency_manager.BaseConfig(self.file_path, writable=True) + config._config_data = self.new_dependencies.copy() + config._is_dirty = True + config._pending_uploads = [self.new_pending_upload, + self.final_pending_upload] + self.assertEqual(self.new_dependencies, config._config_data) + self.assertTrue(config._is_dirty) + self.assertEqual(2, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + self.assertEqual(self.final_pending_upload, config._pending_uploads[1]) + expected_exists_calls = [mock.call(self.new_bucket, self.new_remote_path), + mock.call(self.final_bucket, + self.final_remote_path)] + expected_insert_calls = [mock.call(self.new_bucket, self.new_remote_path, + self.new_dep_path), + mock.call(self.final_bucket, + self.final_remote_path, + self.final_dep_path)] + expected_copy_calls = [] + expected_delete_calls = [mock.call(self.new_bucket, self.new_remote_path)] + + self.assertRaises(cloud_storage.CloudStorageError, + config.ExecuteUpdateJobs) + self.assertTrue(config._is_dirty) + self.assertEqual(2, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + self.assertEqual(self.final_pending_upload, config._pending_uploads[1]) + self.assertEqual(self.new_dependencies, config._config_data) + file_module = fake_filesystem.FakeFileOpen(self.fs) + expected_file_lines = list(self.expected_file_lines) + for line in file_module(self.file_path): + self.assertEqual(expected_file_lines.pop(0), line.strip()) + self.fs.CloseOpenFile(file_module(self.file_path)) + self.assertEqual(expected_insert_calls, + uploader_cs_mock.Insert.call_args_list) + self.assertEqual(expected_exists_calls, + uploader_cs_mock.Exists.call_args_list) + self.assertEqual(expected_copy_calls, + uploader_cs_mock.Copy.call_args_list) + self.assertEqual(expected_delete_calls, + uploader_cs_mock.Delete.call_args_list) + + @mock.patch('dependency_manager.uploader.cloud_storage') + def testExecuteUpdateJobsFailureOnSecondInsertCSCollisionForce( + self, uploader_cs_mock): + uploader_cs_mock.Exists.return_value = True + uploader_cs_mock.Insert.side_effect = [ + True, cloud_storage.CloudStorageError] + self.fs.CreateFile(self.file_path, + contents='\n'.join(self.expected_file_lines)) + config = dependency_manager.BaseConfig(self.file_path, writable=True) + config._config_data = self.new_dependencies.copy() + config._is_dirty = True + config._pending_uploads = [self.new_pending_upload, + self.final_pending_upload] + self.assertEqual(self.new_dependencies, config._config_data) + self.assertTrue(config._is_dirty) + self.assertEqual(2, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + self.assertEqual(self.final_pending_upload, config._pending_uploads[1]) + expected_exists_calls = [mock.call(self.new_bucket, self.new_remote_path), + mock.call(self.final_bucket, + self.final_remote_path)] + expected_insert_calls = [mock.call(self.new_bucket, self.new_remote_path, + self.new_dep_path), + mock.call(self.final_bucket, + self.final_remote_path, + self.final_dep_path)] + expected_copy_calls = [mock.call(self.new_bucket, self.new_bucket, + self.new_remote_path, + self.expected_new_backup_path), + mock.call(self.final_bucket, self.final_bucket, + self.final_remote_path, + self.expected_final_backup_path), + mock.call(self.final_bucket, self.final_bucket, + self.expected_final_backup_path, + self.final_remote_path), + mock.call(self.new_bucket, self.new_bucket, + self.expected_new_backup_path, + self.new_remote_path)] + expected_delete_calls = [] + + self.assertRaises(cloud_storage.CloudStorageError, + config.ExecuteUpdateJobs, force=True) + self.assertTrue(config._is_dirty) + self.assertEqual(2, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + self.assertEqual(self.final_pending_upload, config._pending_uploads[1]) + self.assertEqual(self.new_dependencies, config._config_data) + file_module = fake_filesystem.FakeFileOpen(self.fs) + expected_file_lines = list(self.expected_file_lines) + for line in file_module(self.file_path): + self.assertEqual(expected_file_lines.pop(0), line.strip()) + self.fs.CloseOpenFile(file_module(self.file_path)) + self.assertEqual(expected_insert_calls, + uploader_cs_mock.Insert.call_args_list) + self.assertEqual(expected_exists_calls, + uploader_cs_mock.Exists.call_args_list) + self.assertEqual(expected_copy_calls, + uploader_cs_mock.Copy.call_args_list) + self.assertEqual(expected_delete_calls, + uploader_cs_mock.Delete.call_args_list) + + @mock.patch('dependency_manager.uploader.cloud_storage') + def testExecuteUpdateJobsFailureOnSecondInsertFirstCSCollisionForce( + self, uploader_cs_mock): + uploader_cs_mock.Exists.side_effect = [True, False, True] + uploader_cs_mock.Insert.side_effect = [ + True, cloud_storage.CloudStorageError] + self.fs.CreateFile(self.file_path, + contents='\n'.join(self.expected_file_lines)) + config = dependency_manager.BaseConfig(self.file_path, writable=True) + config._config_data = self.new_dependencies.copy() + config._is_dirty = True + config._pending_uploads = [self.new_pending_upload, + self.final_pending_upload] + self.assertEqual(self.new_dependencies, config._config_data) + self.assertTrue(config._is_dirty) + self.assertEqual(2, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + self.assertEqual(self.final_pending_upload, config._pending_uploads[1]) + expected_exists_calls = [mock.call(self.new_bucket, self.new_remote_path), + mock.call(self.final_bucket, + self.final_remote_path)] + expected_insert_calls = [mock.call(self.new_bucket, self.new_remote_path, + self.new_dep_path), + mock.call(self.final_bucket, + self.final_remote_path, + self.final_dep_path)] + expected_copy_calls = [mock.call(self.new_bucket, self.new_bucket, + self.new_remote_path, + self.expected_new_backup_path), + mock.call(self.new_bucket, self.new_bucket, + self.expected_new_backup_path, + self.new_remote_path)] + expected_delete_calls = [] + + self.assertRaises(cloud_storage.CloudStorageError, + config.ExecuteUpdateJobs, force=True) + self.assertTrue(config._is_dirty) + self.assertEqual(2, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + self.assertEqual(self.final_pending_upload, config._pending_uploads[1]) + self.assertEqual(self.new_dependencies, config._config_data) + file_module = fake_filesystem.FakeFileOpen(self.fs) + expected_file_lines = list(self.expected_file_lines) + for line in file_module(self.file_path): + self.assertEqual(expected_file_lines.pop(0), line.strip()) + self.fs.CloseOpenFile(file_module(self.file_path)) + self.assertEqual(expected_insert_calls, + uploader_cs_mock.Insert.call_args_list) + self.assertEqual(expected_exists_calls, + uploader_cs_mock.Exists.call_args_list) + self.assertEqual(expected_copy_calls, + uploader_cs_mock.Copy.call_args_list) + self.assertEqual(expected_delete_calls, + uploader_cs_mock.Delete.call_args_list) + + @mock.patch('dependency_manager.uploader.cloud_storage') + def testExecuteUpdateJobsFailureOnFirstCSCollisionNoForce( + self, uploader_cs_mock): + uploader_cs_mock.Exists.side_effect = [True, False, True] + uploader_cs_mock.Insert.side_effect = [ + True, cloud_storage.CloudStorageError] + self.fs.CreateFile(self.file_path, + contents='\n'.join(self.expected_file_lines)) + config = dependency_manager.BaseConfig(self.file_path, writable=True) + config._config_data = self.new_dependencies.copy() + config._is_dirty = True + config._pending_uploads = [self.new_pending_upload, + self.final_pending_upload] + self.assertEqual(self.new_dependencies, config._config_data) + self.assertTrue(config._is_dirty) + self.assertEqual(2, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + self.assertEqual(self.final_pending_upload, config._pending_uploads[1]) + expected_exists_calls = [mock.call(self.new_bucket, self.new_remote_path)] + expected_insert_calls = [] + expected_copy_calls = [] + expected_delete_calls = [] + + self.assertRaises(cloud_storage.CloudStorageError, + config.ExecuteUpdateJobs) + self.assertTrue(config._is_dirty) + self.assertEqual(2, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + self.assertEqual(self.final_pending_upload, config._pending_uploads[1]) + self.assertEqual(self.new_dependencies, config._config_data) + file_module = fake_filesystem.FakeFileOpen(self.fs) + expected_file_lines = list(self.expected_file_lines) + for line in file_module(self.file_path): + self.assertEqual(expected_file_lines.pop(0), line.strip()) + self.fs.CloseOpenFile(file_module(self.file_path)) + self.assertEqual(expected_insert_calls, + uploader_cs_mock.Insert.call_args_list) + self.assertEqual(expected_exists_calls, + uploader_cs_mock.Exists.call_args_list) + self.assertEqual(expected_copy_calls, + uploader_cs_mock.Copy.call_args_list) + self.assertEqual(expected_delete_calls, + uploader_cs_mock.Delete.call_args_list) + + @mock.patch('dependency_manager.uploader.cloud_storage') + def testExecuteUpdateJobsFailureOnSecondCopyCSCollision( + self, uploader_cs_mock): + uploader_cs_mock.Exists.return_value = True + uploader_cs_mock.Insert.return_value = True + uploader_cs_mock.Copy.side_effect = [ + True, cloud_storage.CloudStorageError, True] + self.fs.CreateFile(self.file_path, + contents='\n'.join(self.expected_file_lines)) + config = dependency_manager.BaseConfig(self.file_path, writable=True) + config._config_data = self.new_dependencies.copy() + config._is_dirty = True + config._pending_uploads = [self.new_pending_upload, + self.final_pending_upload] + self.assertEqual(self.new_dependencies, config._config_data) + self.assertTrue(config._is_dirty) + self.assertEqual(2, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + self.assertEqual(self.final_pending_upload, config._pending_uploads[1]) + expected_exists_calls = [mock.call(self.new_bucket, self.new_remote_path), + mock.call(self.final_bucket, + self.final_remote_path)] + expected_insert_calls = [mock.call(self.new_bucket, self.new_remote_path, + self.new_dep_path)] + expected_copy_calls = [mock.call(self.new_bucket, self.new_bucket, + self.new_remote_path, + self.expected_new_backup_path), + mock.call(self.final_bucket, self.final_bucket, + self.final_remote_path, + self.expected_final_backup_path), + mock.call(self.new_bucket, self.new_bucket, + self.expected_new_backup_path, + self.new_remote_path)] + expected_delete_calls = [] + + self.assertRaises(cloud_storage.CloudStorageError, + config.ExecuteUpdateJobs, force=True) + self.assertTrue(config._is_dirty) + self.assertEqual(2, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + self.assertEqual(self.final_pending_upload, config._pending_uploads[1]) + self.assertEqual(self.new_dependencies, config._config_data) + file_module = fake_filesystem.FakeFileOpen(self.fs) + expected_file_lines = list(self.expected_file_lines) + for line in file_module(self.file_path): + self.assertEqual(expected_file_lines.pop(0), line.strip()) + self.fs.CloseOpenFile(file_module(self.file_path)) + self.assertEqual(expected_insert_calls, + uploader_cs_mock.Insert.call_args_list) + self.assertEqual(expected_exists_calls, + uploader_cs_mock.Exists.call_args_list) + self.assertEqual(expected_copy_calls, + uploader_cs_mock.Copy.call_args_list) + self.assertEqual(expected_delete_calls, + uploader_cs_mock.Delete.call_args_list) + + @mock.patch('dependency_manager.uploader.cloud_storage') + def testExecuteUpdateJobsFailureOnSecondCopyNoCSCollisionForce( + self, uploader_cs_mock): + uploader_cs_mock.Exists.side_effect = [False, True, False] + uploader_cs_mock.Copy.side_effect = cloud_storage.CloudStorageError + self.fs.CreateFile(self.file_path, + contents='\n'.join(self.expected_file_lines)) + config = dependency_manager.BaseConfig(self.file_path, writable=True) + config._config_data = self.new_dependencies.copy() + config._is_dirty = True + config._pending_uploads = [self.new_pending_upload, + self.final_pending_upload] + self.assertEqual(self.new_dependencies, config._config_data) + self.assertTrue(config._is_dirty) + self.assertEqual(2, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + self.assertEqual(self.final_pending_upload, config._pending_uploads[1]) + expected_exists_calls = [mock.call(self.new_bucket, self.new_remote_path), + mock.call(self.final_bucket, + self.final_remote_path)] + expected_insert_calls = [mock.call(self.new_bucket, self.new_remote_path, + self.new_dep_path)] + expected_copy_calls = [mock.call(self.final_bucket, self.final_bucket, + self.final_remote_path, + self.expected_final_backup_path)] + expected_delete_calls = [mock.call(self.new_bucket, self.new_remote_path)] + + self.assertRaises(cloud_storage.CloudStorageError, + config.ExecuteUpdateJobs, force=True) + self.assertTrue(config._is_dirty) + self.assertEqual(2, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + self.assertEqual(self.final_pending_upload, config._pending_uploads[1]) + self.assertEqual(self.new_dependencies, config._config_data) + file_module = fake_filesystem.FakeFileOpen(self.fs) + expected_file_lines = list(self.expected_file_lines) + for line in file_module(self.file_path): + self.assertEqual(expected_file_lines.pop(0), line.strip()) + self.fs.CloseOpenFile(file_module(self.file_path)) + self.assertEqual(expected_insert_calls, + uploader_cs_mock.Insert.call_args_list) + self.assertEqual(expected_exists_calls, + uploader_cs_mock.Exists.call_args_list) + self.assertEqual(expected_copy_calls, + uploader_cs_mock.Copy.call_args_list) + self.assertEqual(expected_delete_calls, + uploader_cs_mock.Delete.call_args_list) + + @mock.patch('dependency_manager.uploader.cloud_storage') + def testExecuteUpdateJobsFailureOnSecondCopyNoCSCollisionNoForce( + self, uploader_cs_mock): + uploader_cs_mock.Exists.side_effect = [False, True, False] + uploader_cs_mock.Copy.side_effect = cloud_storage.CloudStorageError + self.fs.CreateFile(self.file_path, + contents='\n'.join(self.expected_file_lines)) + config = dependency_manager.BaseConfig(self.file_path, writable=True) + config._config_data = self.new_dependencies.copy() + config._is_dirty = True + config._pending_uploads = [self.new_pending_upload, + self.final_pending_upload] + self.assertEqual(self.new_dependencies, config._config_data) + self.assertTrue(config._is_dirty) + self.assertEqual(2, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + self.assertEqual(self.final_pending_upload, config._pending_uploads[1]) + expected_exists_calls = [mock.call(self.new_bucket, self.new_remote_path), + mock.call(self.final_bucket, + self.final_remote_path)] + expected_insert_calls = [mock.call(self.new_bucket, self.new_remote_path, + self.new_dep_path)] + expected_copy_calls = [] + expected_delete_calls = [mock.call(self.new_bucket, self.new_remote_path)] + + self.assertRaises(cloud_storage.CloudStorageError, + config.ExecuteUpdateJobs) + self.assertTrue(config._is_dirty) + self.assertEqual(2, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + self.assertEqual(self.final_pending_upload, config._pending_uploads[1]) + self.assertEqual(self.new_dependencies, config._config_data) + file_module = fake_filesystem.FakeFileOpen(self.fs) + expected_file_lines = list(self.expected_file_lines) + for line in file_module(self.file_path): + self.assertEqual(expected_file_lines.pop(0), line.strip()) + self.fs.CloseOpenFile(file_module(self.file_path)) + self.assertEqual(expected_insert_calls, + uploader_cs_mock.Insert.call_args_list) + self.assertEqual(expected_exists_calls, + uploader_cs_mock.Exists.call_args_list) + self.assertEqual(expected_copy_calls, + uploader_cs_mock.Copy.call_args_list) + self.assertEqual(expected_delete_calls, + uploader_cs_mock.Delete.call_args_list) + + @mock.patch('dependency_manager.uploader.cloud_storage') + def testExecuteUpdateJobsSuccessOnePendingDepNoCloudStorageCollision( + self, uploader_cs_mock): + uploader_cs_mock.Exists.return_value = False + self.fs.CreateFile(self.file_path, + contents='\n'.join(self.expected_file_lines)) + config = dependency_manager.BaseConfig(self.file_path, writable=True) + config._config_data = self.new_dependencies.copy() + config._pending_uploads = [self.new_pending_upload] + self.assertEqual(self.new_dependencies, config._config_data) + self.assertTrue(config._IsDirty()) + self.assertEqual(1, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + expected_exists_calls = [mock.call(self.new_bucket, self.new_remote_path)] + expected_insert_calls = [mock.call(self.new_bucket, self.new_remote_path, + self.new_dep_path)] + expected_copy_calls = [] + expected_delete_calls = [] + + self.assertTrue(config.ExecuteUpdateJobs()) + self.assertFalse(config._IsDirty()) + self.assertFalse(config._pending_uploads) + self.assertEqual(self.new_dependencies, config._config_data) + file_module = fake_filesystem.FakeFileOpen(self.fs) + expected_file_lines = list(self.new_expected_file_lines) + for line in file_module(self.file_path): + self.assertEqual(expected_file_lines.pop(0), line.strip()) + self.fs.CloseOpenFile(file_module(self.file_path)) + self.assertFalse(config._pending_uploads) + self.assertEqual(expected_insert_calls, + uploader_cs_mock.Insert.call_args_list) + self.assertEqual(expected_exists_calls, + uploader_cs_mock.Exists.call_args_list) + self.assertEqual(expected_copy_calls, + uploader_cs_mock.Copy.call_args_list) + self.assertEqual(expected_delete_calls, + uploader_cs_mock.Delete.call_args_list) + + @mock.patch('dependency_manager.uploader.cloud_storage') + def testExecuteUpdateJobsSuccessOnePendingDepCloudStorageCollision( + self, uploader_cs_mock): + uploader_cs_mock.Exists.return_value = True + self.fs.CreateFile(self.file_path, + contents='\n'.join(self.expected_file_lines)) + config = dependency_manager.BaseConfig(self.file_path, writable=True) + config._config_data = self.new_dependencies.copy() + config._pending_uploads = [self.new_pending_upload] + self.assertEqual(self.new_dependencies, config._config_data) + self.assertTrue(config._IsDirty()) + self.assertEqual(1, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + expected_exists_calls = [mock.call(self.new_bucket, self.new_remote_path)] + expected_insert_calls = [mock.call(self.new_bucket, self.new_remote_path, + self.new_dep_path)] + expected_copy_calls = [mock.call(self.new_bucket, self.new_bucket, + self.new_remote_path, + self.expected_new_backup_path)] + + self.assertTrue(config.ExecuteUpdateJobs(force=True)) + self.assertFalse(config._IsDirty()) + self.assertFalse(config._pending_uploads) + self.assertEqual(self.new_dependencies, config._config_data) + file_module = fake_filesystem.FakeFileOpen(self.fs) + expected_file_lines = list(self.new_expected_file_lines) + for line in file_module(self.file_path): + self.assertEqual(expected_file_lines.pop(0), line.strip()) + self.fs.CloseOpenFile(file_module(self.file_path)) + self.assertFalse(config._pending_uploads) + self.assertEqual(expected_insert_calls, + uploader_cs_mock.Insert.call_args_list) + self.assertEqual(expected_exists_calls, + uploader_cs_mock.Exists.call_args_list) + self.assertEqual(expected_copy_calls, + uploader_cs_mock.Copy.call_args_list) + + @mock.patch('dependency_manager.uploader.cloud_storage') + def testExecuteUpdateJobsErrorOnePendingDepCloudStorageCollisionNoForce( + self, uploader_cs_mock): + uploader_cs_mock.Exists.return_value = True + self.fs.CreateFile(self.file_path, + contents='\n'.join(self.expected_file_lines)) + config = dependency_manager.BaseConfig(self.file_path, writable=True) + config._config_data = self.new_dependencies.copy() + config._is_dirty = True + config._pending_uploads = [self.new_pending_upload] + self.assertEqual(self.new_dependencies, config._config_data) + self.assertTrue(config._is_dirty) + self.assertEqual(1, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + expected_exists_calls = [mock.call(self.new_bucket, self.new_remote_path)] + expected_insert_calls = [] + expected_copy_calls = [] + + self.assertRaises(dependency_manager.CloudStorageUploadConflictError, + config.ExecuteUpdateJobs) + self.assertTrue(config._is_dirty) + self.assertTrue(config._pending_uploads) + self.assertEqual(self.new_dependencies, config._config_data) + self.assertEqual(1, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + file_module = fake_filesystem.FakeFileOpen(self.fs) + expected_file_lines = list(self.expected_file_lines) + for line in file_module(self.file_path): + self.assertEqual(expected_file_lines.pop(0), line.strip()) + self.fs.CloseOpenFile(file_module(self.file_path)) + self.assertEqual(expected_insert_calls, + uploader_cs_mock.Insert.call_args_list) + self.assertEqual(expected_exists_calls, + uploader_cs_mock.Exists.call_args_list) + self.assertEqual(expected_copy_calls, + uploader_cs_mock.Copy.call_args_list) + + @mock.patch('dependency_manager.uploader.cloud_storage') + def testExecuteUpdateJobsSuccessMultiplePendingDepsOneCloudStorageCollision( + self, uploader_cs_mock): + uploader_cs_mock.Exists.side_effect = [False, True] + self.fs.CreateFile(self.file_path, + contents='\n'.join(self.expected_file_lines)) + config = dependency_manager.BaseConfig(self.file_path, writable=True) + config._config_data = self.final_dependencies.copy() + config._pending_uploads = [self.new_pending_upload, + self.final_pending_upload] + self.assertEqual(self.final_dependencies, config._config_data) + self.assertTrue(config._IsDirty()) + self.assertEqual(2, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + self.assertEqual(self.final_pending_upload, config._pending_uploads[1]) + + expected_exists_calls = [mock.call(self.new_bucket, self.new_remote_path), + mock.call(self.final_bucket, + self.final_remote_path)] + expected_insert_calls = [mock.call(self.new_bucket, self.new_remote_path, + self.new_dep_path), + mock.call(self.final_bucket, + self.final_remote_path, + self.final_dep_path)] + expected_copy_calls = [mock.call(self.final_bucket, self.final_bucket, + self.final_remote_path, + self.expected_final_backup_path)] + + self.assertTrue(config.ExecuteUpdateJobs(force=True)) + self.assertFalse(config._IsDirty()) + self.assertFalse(config._pending_uploads) + self.assertEqual(self.final_dependencies, config._config_data) + file_module = fake_filesystem.FakeFileOpen(self.fs) + expected_file_lines = list(self.final_expected_file_lines) + for line in file_module(self.file_path): + self.assertEqual(expected_file_lines.pop(0), line.strip()) + self.fs.CloseOpenFile(file_module(self.file_path)) + self.assertFalse(config._pending_uploads) + self.assertEqual(expected_insert_calls, + uploader_cs_mock.Insert.call_args_list) + self.assertEqual(expected_exists_calls, + uploader_cs_mock.Exists.call_args_list) + self.assertEqual(expected_copy_calls, + uploader_cs_mock.Copy.call_args_list) + + @mock.patch('dependency_manager.uploader.cloud_storage') + def testUpdateCloudStorageDependenciesReadOnlyConfig( + self, uploader_cs_mock): + self.fs.CreateFile(self.file_path, + contents='\n'.join(self.expected_file_lines)) + config = dependency_manager.BaseConfig(self.file_path) + with self.assertRaises(dependency_manager.ReadWriteError): + config.AddCloudStorageDependencyUpdateJob( + 'dep', 'plat', 'path') + with self.assertRaises(dependency_manager.ReadWriteError): + config.AddCloudStorageDependencyUpdateJob( + 'dep', 'plat', 'path', version='1.2.3') + with self.assertRaises(dependency_manager.ReadWriteError): + config.AddCloudStorageDependencyUpdateJob( + 'dep', 'plat', 'path', execute_job=False) + with self.assertRaises(dependency_manager.ReadWriteError): + config.AddCloudStorageDependencyUpdateJob( + 'dep', 'plat', 'path', version='1.2.3', execute_job=False) + + @mock.patch('dependency_manager.uploader.cloud_storage') + def testUpdateCloudStorageDependenciesMissingDependency( + self, uploader_cs_mock): + self.fs.CreateFile(self.file_path, + contents='\n'.join(self.expected_file_lines)) + config = dependency_manager.BaseConfig(self.file_path, writable=True) + self.assertRaises(ValueError, config.AddCloudStorageDependencyUpdateJob, + 'dep', 'plat', 'path') + self.assertRaises(ValueError, config.AddCloudStorageDependencyUpdateJob, + 'dep', 'plat', 'path', version='1.2.3') + self.assertRaises(ValueError, config.AddCloudStorageDependencyUpdateJob, + 'dep', 'plat', 'path', execute_job=False) + self.assertRaises(ValueError, config.AddCloudStorageDependencyUpdateJob, + 'dep', 'plat', 'path', version='1.2.3', execute_job=False) + + @mock.patch('dependency_manager.uploader.cloud_storage') + @mock.patch('dependency_manager.base_config.cloud_storage') + def testUpdateCloudStorageDependenciesWrite( + self, base_config_cs_mock, uploader_cs_mock): + expected_dependencies = self.dependencies + self.fs.CreateFile(self.file_path, + contents='\n'.join(self.expected_file_lines)) + config = dependency_manager.BaseConfig(self.file_path, writable=True) + self.assertFalse(config._IsDirty()) + self.assertEqual(expected_dependencies, config._config_data) + + base_config_cs_mock.CalculateHash.return_value = self.new_dep_hash + uploader_cs_mock.Exists.return_value = False + expected_dependencies = self.new_dependencies + config.AddCloudStorageDependencyUpdateJob( + 'dep1', 'plat2', self.new_dep_path, execute_job=True) + self.assertFalse(config._IsDirty()) + self.assertFalse(config._pending_uploads) + self.assertEqual(expected_dependencies, config._config_data) + # check that file contents has been updated + file_module = fake_filesystem.FakeFileOpen(self.fs) + expected_file_lines = list(self.new_expected_file_lines) + for line in file_module(self.file_path): + self.assertEqual(expected_file_lines.pop(0), line.strip()) + self.fs.CloseOpenFile(file_module(self.file_path)) + + expected_dependencies = self.final_dependencies + base_config_cs_mock.CalculateHash.return_value = self.final_dep_hash + config.AddCloudStorageDependencyUpdateJob( + 'dep2', 'plat1', self.final_dep_path, execute_job=True) + self.assertFalse(config._IsDirty()) + self.assertFalse(config._pending_uploads) + self.assertEqual(expected_dependencies, config._config_data) + # check that file contents has been updated + expected_file_lines = list(self.final_expected_file_lines) + file_module = fake_filesystem.FakeFileOpen(self.fs) + for line in file_module(self.file_path): + self.assertEqual(expected_file_lines.pop(0), line.strip()) + self.fs.CloseOpenFile(file_module(self.file_path)) + + @mock.patch('dependency_manager.uploader.cloud_storage') + @mock.patch('dependency_manager.base_config.cloud_storage') + def testUpdateCloudStorageDependenciesNoWrite( + self, base_config_cs_mock, uploader_cs_mock): + self.fs.CreateFile(self.file_path, + contents='\n'.join(self.expected_file_lines)) + config = dependency_manager.BaseConfig(self.file_path, writable=True) + + self.assertRaises(ValueError, config.AddCloudStorageDependencyUpdateJob, + 'dep', 'plat', 'path') + self.assertRaises(ValueError, config.AddCloudStorageDependencyUpdateJob, + 'dep', 'plat', 'path', version='1.2.3') + + expected_dependencies = self.dependencies + config = dependency_manager.BaseConfig(self.file_path, writable=True) + self.assertFalse(config._IsDirty()) + self.assertFalse(config._pending_uploads) + self.assertEqual(expected_dependencies, config._config_data) + + base_config_cs_mock.CalculateHash.return_value = self.new_dep_hash + uploader_cs_mock.Exists.return_value = False + expected_dependencies = self.new_dependencies + config.AddCloudStorageDependencyUpdateJob( + 'dep1', 'plat2', self.new_dep_path, execute_job=False) + self.assertTrue(config._IsDirty()) + self.assertEqual(1, len(config._pending_uploads)) + self.assertEqual(self.new_pending_upload, config._pending_uploads[0]) + self.assertEqual(expected_dependencies, config._config_data) + # check that file contents have not been updated. + expected_file_lines = list(self.expected_file_lines) + file_module = fake_filesystem.FakeFileOpen(self.fs) + for line in file_module(self.file_path): + self.assertEqual(expected_file_lines.pop(0), line.strip()) + self.fs.CloseOpenFile(file_module(self.file_path)) + + expected_dependencies = self.final_dependencies + base_config_cs_mock.CalculateHash.return_value = self.final_dep_hash + config.AddCloudStorageDependencyUpdateJob( + 'dep2', 'plat1', self.final_dep_path, execute_job=False) + self.assertTrue(config._IsDirty()) + self.assertEqual(expected_dependencies, config._config_data) + # check that file contents have not been updated. + expected_file_lines = list(self.expected_file_lines) + file_module = fake_filesystem.FakeFileOpen(self.fs) + for line in file_module(self.file_path): + self.assertEqual(expected_file_lines.pop(0), line.strip()) + self.fs.CloseOpenFile(file_module(self.file_path)) + + +class BaseConfigDataManipulationUnittests(fake_filesystem_unittest.TestCase): + def setUp(self): + self.addTypeEqualityFunc(uploader.CloudStorageUploader, + uploader.CloudStorageUploader.__eq__) + self.setUpPyfakefs() + + self.cs_bucket = 'bucket1' + self.cs_base_folder = 'dependencies_folder' + self.cs_hash = 'hash12' + self.download_path = '../../relative/dep1/path2' + self.local_paths = ['../../../relative/local/path21', + '../../../relative/local/path22'] + self.platform_dict = {'cloud_storage_hash': self.cs_hash, + 'download_path': self.download_path, + 'local_paths': self.local_paths} + self.dependencies = { + 'dep1': { + 'cloud_storage_bucket': self.cs_bucket, + 'cloud_storage_base_folder': self.cs_base_folder, + 'file_info': { + 'plat1': { + 'cloud_storage_hash': 'hash11', + 'download_path': '../../relative/dep1/path1', + 'local_paths': ['../../../relative/local/path11', + '../../../relative/local/path12']}, + 'plat2': self.platform_dict + } + }, + 'dep2': { + 'cloud_storage_bucket': 'bucket2', + 'file_info': { + 'plat1': { + 'cloud_storage_hash': 'hash21', + 'download_path': '../../relative/dep2/path1', + 'local_paths': ['../../../relative/local/path31', + '../../../relative/local/path32']}, + 'plat2': { + 'cloud_storage_hash': 'hash22', + 'download_path': '../../relative/dep2/path2'}}}} + + self.file_path = os.path.abspath(os.path.join( + 'path', 'to', 'config', 'file')) + + + self.expected_file_lines = [ + # pylint: disable=bad-continuation + '{', '"config_type": "BaseConfig",', '"dependencies": {', + '"dep1": {', '"cloud_storage_base_folder": "dependencies_folder",', + '"cloud_storage_bucket": "bucket1",', '"file_info": {', + '"plat1": {', '"cloud_storage_hash": "hash11",', + '"download_path": "../../relative/dep1/path1",', + '"local_paths": [', '"../../../relative/local/path11",', + '"../../../relative/local/path12"', ']', '},', + '"plat2": {', '"cloud_storage_hash": "hash12",', + '"download_path": "../../relative/dep1/path2",', + '"local_paths": [', '"../../../relative/local/path21",', + '"../../../relative/local/path22"', ']', + '}', '}', '},', + '"dep2": {', '"cloud_storage_bucket": "bucket2",', '"file_info": {', + '"plat1": {', '"cloud_storage_hash": "hash21",', + '"download_path": "../../relative/dep2/path1",', + '"local_paths": [', '"../../../relative/local/path31",', + '"../../../relative/local/path32"', ']', '},', + '"plat2": {', '"cloud_storage_hash": "hash22",', + '"download_path": "../../relative/dep2/path2"', '}', '}', '}', + '}', '}'] + self.fs.CreateFile(self.file_path, + contents='\n'.join(self.expected_file_lines)) + + + def testSetPlatformDataFailureNotWritable(self): + config = dependency_manager.BaseConfig(self.file_path) + self.assertRaises( + dependency_manager.ReadWriteError, config._SetPlatformData, + 'dep1', 'plat1', 'cloud_storage_bucket', 'new_bucket') + self.assertEqual(self.dependencies, config._config_data) + + def testSetPlatformDataFailure(self): + config = dependency_manager.BaseConfig(self.file_path, writable=True) + self.assertRaises(ValueError, config._SetPlatformData, 'missing_dep', + 'plat2', 'cloud_storage_bucket', 'new_bucket') + self.assertEqual(self.dependencies, config._config_data) + self.assertRaises(ValueError, config._SetPlatformData, 'dep1', + 'missing_plat', 'cloud_storage_bucket', 'new_bucket') + self.assertEqual(self.dependencies, config._config_data) + + + def testSetPlatformDataCloudStorageBucketSuccess(self): + config = dependency_manager.BaseConfig(self.file_path, writable=True) + updated_cs_dependencies = { + 'dep1': {'cloud_storage_bucket': 'new_bucket', + 'cloud_storage_base_folder': 'dependencies_folder', + 'file_info': { + 'plat1': { + 'cloud_storage_hash': 'hash11', + 'download_path': '../../relative/dep1/path1', + 'local_paths': ['../../../relative/local/path11', + '../../../relative/local/path12']}, + 'plat2': { + 'cloud_storage_hash': 'hash12', + 'download_path': '../../relative/dep1/path2', + 'local_paths': ['../../../relative/local/path21', + '../../../relative/local/path22']}}}, + 'dep2': {'cloud_storage_bucket': 'bucket2', + 'file_info': { + 'plat1': { + 'cloud_storage_hash': 'hash21', + 'download_path': '../../relative/dep2/path1', + 'local_paths': ['../../../relative/local/path31', + '../../../relative/local/path32']}, + 'plat2': { + 'cloud_storage_hash': 'hash22', + 'download_path': '../../relative/dep2/path2'}}}} + config._SetPlatformData('dep1', 'plat2', 'cloud_storage_bucket', + 'new_bucket') + self.assertEqual(updated_cs_dependencies, config._config_data) + + def testSetPlatformDataCloudStorageBaseFolderSuccess(self): + config = dependency_manager.BaseConfig(self.file_path, writable=True) + updated_cs_dependencies = { + 'dep1': {'cloud_storage_bucket': 'bucket1', + 'cloud_storage_base_folder': 'new_dependencies_folder', + 'file_info': { + 'plat1': { + 'cloud_storage_hash': 'hash11', + 'download_path': '../../relative/dep1/path1', + 'local_paths': ['../../../relative/local/path11', + '../../../relative/local/path12']}, + 'plat2': { + 'cloud_storage_hash': 'hash12', + 'download_path': '../../relative/dep1/path2', + 'local_paths': ['../../../relative/local/path21', + '../../../relative/local/path22']}}}, + 'dep2': {'cloud_storage_bucket': 'bucket2', + 'file_info': { + 'plat1': { + 'cloud_storage_hash': 'hash21', + 'download_path': '../../relative/dep2/path1', + 'local_paths': ['../../../relative/local/path31', + '../../../relative/local/path32']}, + 'plat2': { + 'cloud_storage_hash': 'hash22', + 'download_path': '../../relative/dep2/path2'}}}} + config._SetPlatformData('dep1', 'plat2', 'cloud_storage_base_folder', + 'new_dependencies_folder') + self.assertEqual(updated_cs_dependencies, config._config_data) + + def testSetPlatformDataHashSuccess(self): + config = dependency_manager.BaseConfig(self.file_path, writable=True) + updated_cs_dependencies = { + 'dep1': {'cloud_storage_bucket': 'bucket1', + 'cloud_storage_base_folder': 'dependencies_folder', + 'file_info': { + 'plat1': { + 'cloud_storage_hash': 'hash11', + 'download_path': '../../relative/dep1/path1', + 'local_paths': ['../../../relative/local/path11', + '../../../relative/local/path12']}, + 'plat2': { + 'cloud_storage_hash': 'new_hash', + 'download_path': '../../relative/dep1/path2', + 'local_paths': ['../../../relative/local/path21', + '../../../relative/local/path22']}}}, + 'dep2': {'cloud_storage_bucket': 'bucket2', + 'file_info': { + 'plat1': { + 'cloud_storage_hash': 'hash21', + 'download_path': '../../relative/dep2/path1', + 'local_paths': ['../../../relative/local/path31', + '../../../relative/local/path32']}, + 'plat2': { + 'cloud_storage_hash': 'hash22', + 'download_path': '../../relative/dep2/path2'}}}} + config._SetPlatformData('dep1', 'plat2', 'cloud_storage_hash', + 'new_hash') + self.assertEqual(updated_cs_dependencies, config._config_data) + + def testSetPlatformDataDownloadPathSuccess(self): + config = dependency_manager.BaseConfig(self.file_path, writable=True) + updated_cs_dependencies = { + 'dep1': {'cloud_storage_bucket': 'bucket1', + 'cloud_storage_base_folder': 'dependencies_folder', + 'file_info': { + 'plat1': { + 'cloud_storage_hash': 'hash11', + 'download_path': '../../relative/dep1/path1', + 'local_paths': ['../../../relative/local/path11', + '../../../relative/local/path12']}, + 'plat2': { + 'cloud_storage_hash': 'hash12', + 'download_path': '../../new/dep1/path2', + 'local_paths': ['../../../relative/local/path21', + '../../../relative/local/path22']}}}, + 'dep2': {'cloud_storage_bucket': 'bucket2', + 'file_info': { + 'plat1': { + 'cloud_storage_hash': 'hash21', + 'download_path': '../../relative/dep2/path1', + 'local_paths': ['../../../relative/local/path31', + '../../../relative/local/path32']}, + 'plat2': { + 'cloud_storage_hash': 'hash22', + 'download_path': '../../relative/dep2/path2'}}}} + config._SetPlatformData('dep1', 'plat2', 'download_path', + '../../new/dep1/path2') + self.assertEqual(updated_cs_dependencies, config._config_data) + + def testSetPlatformDataLocalPathSuccess(self): + config = dependency_manager.BaseConfig(self.file_path, writable=True) + updated_cs_dependencies = { + 'dep1': {'cloud_storage_bucket': 'bucket1', + 'cloud_storage_base_folder': 'dependencies_folder', + 'file_info': { + 'plat1': { + 'cloud_storage_hash': 'hash11', + 'download_path': '../../relative/dep1/path1', + 'local_paths': ['../../../relative/local/path11', + '../../../relative/local/path12']}, + 'plat2': { + 'cloud_storage_hash': 'hash12', + 'download_path': '../../relative/dep1/path2', + 'local_paths': ['../../new/relative/local/path21', + '../../new/relative/local/path22']}}}, + 'dep2': {'cloud_storage_bucket': 'bucket2', + 'file_info': { + 'plat1': { + 'cloud_storage_hash': 'hash21', + 'download_path': '../../relative/dep2/path1', + 'local_paths': ['../../../relative/local/path31', + '../../../relative/local/path32']}, + 'plat2': { + 'cloud_storage_hash': 'hash22', + 'download_path': '../../relative/dep2/path2'}}}} + config._SetPlatformData('dep1', 'plat2', 'local_paths', + ['../../new/relative/local/path21', + '../../new/relative/local/path22']) + self.assertEqual(updated_cs_dependencies, config._config_data) + + def testGetPlatformDataFailure(self): + config = dependency_manager.BaseConfig(self.file_path, writable=True) + self.assertRaises(ValueError, config._GetPlatformData, 'missing_dep', + 'plat2', 'cloud_storage_bucket') + self.assertEqual(self.dependencies, config._config_data) + self.assertRaises(ValueError, config._GetPlatformData, 'dep1', + 'missing_plat', 'cloud_storage_bucket') + self.assertEqual(self.dependencies, config._config_data) + + def testGetPlatformDataDictSuccess(self): + config = dependency_manager.BaseConfig(self.file_path, writable=True) + self.assertEqual(self.platform_dict, + config._GetPlatformData('dep1', 'plat2')) + self.assertEqual(self.dependencies, config._config_data) + + def testGetPlatformDataCloudStorageBucketSuccess(self): + config = dependency_manager.BaseConfig(self.file_path, writable=True) + self.assertEqual(self.cs_bucket, config._GetPlatformData( + 'dep1', 'plat2', 'cloud_storage_bucket')) + self.assertEqual(self.dependencies, config._config_data) + + def testGetPlatformDataCloudStorageBaseFolderSuccess(self): + config = dependency_manager.BaseConfig(self.file_path, writable=True) + self.assertEqual(self.cs_base_folder, config._GetPlatformData( + 'dep1', 'plat2', 'cloud_storage_base_folder')) + self.assertEqual(self.dependencies, config._config_data) + + def testGetPlatformDataHashSuccess(self): + config = dependency_manager.BaseConfig(self.file_path, writable=True) + self.assertEqual(self.cs_hash, config._GetPlatformData( + 'dep1', 'plat2', 'cloud_storage_hash')) + self.assertEqual(self.dependencies, config._config_data) + + def testGetPlatformDataDownloadPathSuccess(self): + config = dependency_manager.BaseConfig(self.file_path, writable=True) + self.assertEqual(self.download_path, config._GetPlatformData( + 'dep1', 'plat2', 'download_path')) + self.assertEqual(self.dependencies, config._config_data) + + def testGetPlatformDataLocalPathSuccess(self): + config = dependency_manager.BaseConfig(self.file_path, writable=True) + self.assertEqual(self.local_paths, config._GetPlatformData( + 'dep1', 'plat2', 'local_paths')) + self.assertEqual(self.dependencies, config._config_data) + +class BaseConfigTest(unittest.TestCase): + """ Subclassable unittests for BaseConfig. + For subclasses: override setUp, GetConfigDataFromDict, + and EndToEndExpectedConfigData as needed. + + setUp must set the following properties: + self.config_type: String returnedd from GetConfigType in config subclass. + self.config_class: the class for the config subclass. + self.config_module: importable module for the config subclass. + self.empty_dict: expected dictionary for an empty config, as it would be + stored in a json file. + self.one_dep_dict: example dictionary for a config with one dependency, + as it would be stored in a json file. + """ + def setUp(self): + self.config_type = 'BaseConfig' + self.config_class = dependency_manager.BaseConfig + self.config_module = 'dependency_manager.base_config' + + self.empty_dict = {'config_type': self.config_type, + 'dependencies': {}} + + dependency_dict = { + 'dep': { + 'cloud_storage_base_folder': 'cs_base_folder1', + 'cloud_storage_bucket': 'bucket1', + 'file_info': { + 'plat1_arch1': { + 'cloud_storage_hash': 'hash111', + 'download_path': 'download_path111', + 'cs_remote_path': 'cs_path111', + 'version_in_cs': 'version_111', + 'local_paths': ['local_path1110', 'local_path1111'] + }, + 'plat1_arch2': { + 'cloud_storage_hash': 'hash112', + 'download_path': 'download_path112', + 'cs_remote_path': 'cs_path112', + 'local_paths': ['local_path1120', 'local_path1121'] + }, + 'win_arch1': { + 'cloud_storage_hash': 'hash1w1', + 'download_path': 'download\\path\\1w1', + 'cs_remote_path': 'cs_path1w1', + 'local_paths': ['local\\path\\1w10', 'local\\path\\1w11'] + }, + 'all_the_variables': { + 'cloud_storage_hash': 'hash111', + 'download_path': 'download_path111', + 'cs_remote_path': 'cs_path111', + 'version_in_cs': 'version_111', + 'path_within_archive': 'path/within/archive', + 'local_paths': ['local_path1110', 'local_path1111'] + } + } + } + } + self.one_dep_dict = {'config_type': self.config_type, + 'dependencies': dependency_dict} + + def GetConfigDataFromDict(self, config_dict): + return config_dict.get('dependencies', {}) + + @mock.patch('os.path') + @mock.patch('__builtin__.open') + def testInitBaseProperties(self, open_mock, path_mock): + # Init is not meant to be overridden, so we should be mocking the + # base_config's json module, even in subclasses. + json_module = 'dependency_manager.base_config.json' + with mock.patch(json_module) as json_mock: + json_mock.load.return_value = self.empty_dict.copy() + config = self.config_class('file_path') + self.assertEqual('file_path', config._config_path) + self.assertEqual(self.config_type, config.GetConfigType()) + self.assertEqual(self.GetConfigDataFromDict(self.empty_dict), + config._config_data) + + + @mock.patch('dependency_manager.dependency_info.DependencyInfo') + @mock.patch('os.path') + @mock.patch('__builtin__.open') + def testInitWithDependencies(self, open_mock, path_mock, dep_info_mock): + # Init is not meant to be overridden, so we should be mocking the + # base_config's json module, even in subclasses. + json_module = 'dependency_manager.base_config.json' + with mock.patch(json_module) as json_mock: + json_mock.load.return_value = self.one_dep_dict + config = self.config_class('file_path') + self.assertEqual('file_path', config._config_path) + self.assertEqual(self.config_type, config.GetConfigType()) + self.assertEqual(self.GetConfigDataFromDict(self.one_dep_dict), + config._config_data) + + def testFormatPath(self): + self.assertEqual(None, self.config_class._FormatPath(None)) + self.assertEqual('', self.config_class._FormatPath('')) + self.assertEqual('some_string', + self.config_class._FormatPath('some_string')) + + expected_path = os.path.join('some', 'file', 'path') + self.assertEqual(expected_path, + self.config_class._FormatPath('some/file/path')) + self.assertEqual(expected_path, + self.config_class._FormatPath('some\\file\\path')) + + @mock.patch('dependency_manager.base_config.json') + @mock.patch('dependency_manager.dependency_info.DependencyInfo') + @mock.patch('os.path.exists') + @mock.patch('__builtin__.open') + def testIterDependenciesError( + self, open_mock, exists_mock, dep_info_mock, json_mock): + # Init is not meant to be overridden, so we should be mocking the + # base_config's json module, even in subclasses. + json_mock.load.return_value = self.one_dep_dict + config = self.config_class('file_path', writable=True) + self.assertEqual(self.GetConfigDataFromDict(self.one_dep_dict), + config._config_data) + self.assertTrue(config._writable) + with self.assertRaises(dependency_manager.ReadWriteError): + for _ in config.IterDependencyInfo(): + pass + + @mock.patch('dependency_manager.base_config.json') + @mock.patch('dependency_manager.dependency_info.DependencyInfo') + @mock.patch('os.path.exists') + @mock.patch('__builtin__.open') + def testIterDependencies( + self, open_mock, exists_mock, dep_info_mock, json_mock): + json_mock.load.return_value = self.one_dep_dict + config = self.config_class('file_path') + self.assertEqual(self.GetConfigDataFromDict(self.one_dep_dict), + config._config_data) + expected_dep_info = ['dep_info0', 'dep_info1', 'dep_info2'] + dep_info_mock.side_effect = expected_dep_info + expected_calls = [ + mock.call('dep', 'plat1_arch1', 'file_path', cs_bucket='bucket1', + cs_hash='hash111', download_path='download_path111', + cs_remote_path='cs_path111', + local_paths=['local_path1110', 'local_path1111']), + mock.call('dep', 'plat1_arch1', 'file_path', cs_bucket='bucket1', + cs_hash='hash112', download_path='download_path112', + cs_remote_path='cs_path112', + local_paths=['local_path1120', 'local_path1121']), + mock.call('dep', 'win_arch1', 'file_path', cs_bucket='bucket1', + cs_hash='hash1w1', + download_path=os.path.join('download', 'path', '1w1'), + cs_remote_path='cs_path1w1', + local_paths=[os.path.join('download', 'path', '1w10'), + os.path.join('download', 'path', '1w11')])] + deps_seen = [] + for dep_info in config.IterDependencyInfo(): + deps_seen.append(dep_info) + dep_info_mock.assert_call_args(expected_calls) + self.assertItemsEqual(expected_dep_info, deps_seen) + + @mock.patch('dependency_manager.base_config.json') + @mock.patch('os.path.exists') + @mock.patch('__builtin__.open') + def testIterDependenciesStaleGlob(self, open_mock, exists_mock, json_mock): + json_mock.load.return_value = self.one_dep_dict + config = self.config_class('file_path') + + abspath = os.path.abspath + should_match = set(map(abspath, [ + 'dep_all_the_variables_0123456789abcdef0123456789abcdef01234567', + 'dep_all_the_variables_123456789abcdef0123456789abcdef012345678'])) + # Not testing case changes, because Windows is case-insensitive. + should_not_match = set(map(abspath, [ + # A configuration that doesn't unzip shouldn't clear any stale unzips. + 'dep_plat1_arch1_0123456789abcdef0123456789abcdef01234567', + # "Hash" component less than 40 characters (not a valid SHA1 hash). + 'dep_all_the_variables_0123456789abcdef0123456789abcdef0123456', + # "Hash" component greater than 40 characters (not a valid SHA1 hash). + 'dep_all_the_variables_0123456789abcdef0123456789abcdef012345678', + # "Hash" component not comprised of hex (not a valid SHA1 hash). + 'dep_all_the_variables_0123456789gggggg0123456789gggggg01234567'])) + + # Create a fake filesystem just for glob to use + fake_fs = fake_filesystem.FakeFilesystem() + fake_glob = fake_filesystem_glob.FakeGlobModule(fake_fs) + for stale_dir in set.union(should_match, should_not_match): + fake_fs.CreateDirectory(stale_dir) + fake_fs.CreateFile(os.path.join(stale_dir, 'some_file')) + + for dep_info in config.IterDependencyInfo(): + if dep_info.platform == 'all_the_variables': + cs_info = dep_info.cloud_storage_info + actual_glob = cs_info._archive_info._stale_unzip_path_glob + actual_matches = set(fake_glob.glob(actual_glob)) + self.assertItemsEqual(should_match, actual_matches) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/cloud_storage_info.py b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/cloud_storage_info.py new file mode 100644 index 0000000..376c311 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/cloud_storage_info.py @@ -0,0 +1,110 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import errno +import os +import stat + +from py_utils import cloud_storage + +from dependency_manager import exceptions + +class CloudStorageInfo(object): + def __init__(self, cs_bucket, cs_hash, download_path, cs_remote_path, + version_in_cs=None, archive_info=None): + """ Container for the information needed to download a dependency from + cloud storage. + + Args: + cs_bucket: The cloud storage bucket the dependency is located in. + cs_hash: The hash of the file stored in cloud storage. + download_path: Where the file should be downloaded to. + cs_remote_path: Where the file is stored in the cloud storage bucket. + version_in_cs: The version of the file stored in cloud storage. + archive_info: An instance of ArchiveInfo if this dependency is an + archive. Else None. + """ + self._download_path = download_path + self._cs_remote_path = cs_remote_path + self._cs_bucket = cs_bucket + self._cs_hash = cs_hash + self._version_in_cs = version_in_cs + self._archive_info = archive_info + if not self._has_minimum_data: + raise ValueError( + 'Not enough information specified to initialize a cloud storage info.' + ' %s' % self) + + def DependencyExistsInCloudStorage(self): + return cloud_storage.Exists(self._cs_bucket, self._cs_remote_path) + + def GetRemotePath(self): + """Gets the path to a downloaded version of the dependency. + + May not download the file if it has already been downloaded. + Will unzip the downloaded file if a non-empty archive_info was passed in at + init. + + Returns: A path to an executable that was stored in cloud_storage, or None + if not found. + + Raises: + CredentialsError: If cloud_storage credentials aren't configured. + PermissionError: If cloud_storage credentials are configured, but not + with an account that has permission to download the needed file. + NotFoundError: If the needed file does not exist where expected in + cloud_storage or the downloaded zip file. + ServerError: If an internal server error is hit while downloading the + needed file. + CloudStorageError: If another error occured while downloading the remote + path. + FileNotFoundError: If the download was otherwise unsuccessful. + """ + if not self._has_minimum_data: + return None + + download_dir = os.path.dirname(self._download_path) + if not os.path.exists(download_dir): + try: + os.makedirs(download_dir) + except OSError as e: + # The logic above is racy, and os.makedirs will raise an OSError if + # the directory exists. + if e.errno != errno.EEXIST: + raise + + dependency_path = self._download_path + cloud_storage.GetIfHashChanged( + self._cs_remote_path, self._download_path, self._cs_bucket, + self._cs_hash) + if not os.path.exists(dependency_path): + raise exceptions.FileNotFoundError(dependency_path) + + if self.has_archive_info: + dependency_path = self._archive_info.GetUnzippedPath() + else: + mode = os.stat(dependency_path).st_mode + os.chmod(dependency_path, mode | stat.S_IXUSR) + return os.path.abspath(dependency_path) + + @property + def version_in_cs(self): + return self._version_in_cs + + @property + def _has_minimum_data(self): + return all([self._cs_bucket, self._cs_remote_path, self._download_path, + self._cs_hash]) + + + @property + def has_archive_info(self): + return bool(self._archive_info) + + def __repr__(self): + return ( + 'CloudStorageInfo(download_path=%s, cs_remote_path=%s, cs_bucket=%s, ' + 'cs_hash=%s, version_in_cs=%s, archive_info=%s)' % ( + self._download_path, self._cs_remote_path, self._cs_bucket, + self._cs_hash, self._version_in_cs, self._archive_info)) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/cloud_storage_info_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/cloud_storage_info_unittest.py new file mode 100644 index 0000000..699cd50 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/cloud_storage_info_unittest.py @@ -0,0 +1,233 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import stat +import unittest + +import mock +from pyfakefs import fake_filesystem_unittest +from py_utils import cloud_storage + +from dependency_manager import archive_info +from dependency_manager import cloud_storage_info +from dependency_manager import exceptions + +class CloudStorageInfoTest(unittest.TestCase): + def testInitCloudStorageInfoErrors(self): + # Must specify cloud storage information atomically. + self.assertRaises(ValueError, cloud_storage_info.CloudStorageInfo, + None, None, None, None) + self.assertRaises(ValueError, cloud_storage_info.CloudStorageInfo, + 'cs_bucket', None, None, None) + self.assertRaises(ValueError, cloud_storage_info.CloudStorageInfo, + None, 'cs_hash', None, None) + self.assertRaises(ValueError, cloud_storage_info.CloudStorageInfo, + None, None, 'download_path', None) + self.assertRaises(ValueError, cloud_storage_info.CloudStorageInfo, + None, None, None, 'cs_remote_path') + self.assertRaises(ValueError, cloud_storage_info.CloudStorageInfo, + None, 'cs_hash', 'download_path', 'cs_remote_path') + self.assertRaises(ValueError, cloud_storage_info.CloudStorageInfo, + 'cs_bucket', None, 'download_path', 'cs_remote_path') + self.assertRaises(ValueError, cloud_storage_info.CloudStorageInfo, + 'cs_bucket', 'cs_hash', None, 'cs_remote_path') + self.assertRaises(ValueError, cloud_storage_info.CloudStorageInfo, + 'cs_bucket', 'cs_hash', 'download_path', None) + + def testInitWithVersion(self): + self.assertRaises( + ValueError, cloud_storage_info.CloudStorageInfo, None, None, None, + 'cs_remote_path', version_in_cs='version_in_cs') + self.assertRaises( + ValueError, cloud_storage_info.CloudStorageInfo, None, 'cs_hash', + 'download_path', 'cs_remote_path', version_in_cs='version_in_cs') + + cs_info = cloud_storage_info.CloudStorageInfo( + 'cs_bucket', 'cs_hash', 'download_path', 'cs_remote_path', + version_in_cs='version_in_cs') + self.assertEqual('cs_hash', cs_info._cs_hash) + self.assertEqual('cs_bucket', cs_info._cs_bucket) + self.assertEqual('cs_remote_path', cs_info._cs_remote_path) + self.assertEqual('download_path', cs_info._download_path) + self.assertEqual('version_in_cs', cs_info._version_in_cs) + + def testInitWithArchiveInfoErrors(self): + zip_info = archive_info.ArchiveInfo( + 'download_path', 'unzip_location', 'path_within_archive') + self.assertRaises( + ValueError, cloud_storage_info.CloudStorageInfo, None, None, None, None, + archive_info=zip_info) + self.assertRaises( + ValueError, cloud_storage_info.CloudStorageInfo, None, None, None, + 'cs_remote_path', archive_info=zip_info) + self.assertRaises( + ValueError, cloud_storage_info.CloudStorageInfo, 'cs_bucket', 'cs_hash', + None, 'cs_remote_path', archive_info=zip_info) + self.assertRaises(ValueError, cloud_storage_info.CloudStorageInfo, + 'cs_bucket', 'cs_hash', + 'cs_remote_path', None, version_in_cs='version', + archive_info=zip_info) + + + def testInitWithArchiveInfo(self): + zip_info = archive_info.ArchiveInfo( + 'download_path', 'unzip_location', 'path_within_archive') + cs_info = cloud_storage_info.CloudStorageInfo( + 'cs_bucket', 'cs_hash', 'download_path', 'cs_remote_path', + archive_info=zip_info) + self.assertEqual('cs_hash', cs_info._cs_hash) + self.assertEqual('cs_bucket', cs_info._cs_bucket) + self.assertEqual('cs_remote_path', cs_info._cs_remote_path) + self.assertEqual('download_path', cs_info._download_path) + self.assertEqual(zip_info, cs_info._archive_info) + self.assertFalse(cs_info._version_in_cs) + + def testInitWithVersionAndArchiveInfo(self): + zip_info = archive_info.ArchiveInfo( + 'download_path', 'unzip_location', 'path_within_archive') + cs_info = cloud_storage_info.CloudStorageInfo( + 'cs_bucket', 'cs_hash', 'download_path', + 'cs_remote_path', version_in_cs='version_in_cs', + archive_info=zip_info) + self.assertEqual('cs_hash', cs_info._cs_hash) + self.assertEqual('cs_bucket', cs_info._cs_bucket) + self.assertEqual('cs_remote_path', cs_info._cs_remote_path) + self.assertEqual('download_path', cs_info._download_path) + self.assertEqual(zip_info, cs_info._archive_info) + self.assertEqual('version_in_cs', cs_info._version_in_cs) + + def testInitMinimumCloudStorageInfo(self): + cs_info = cloud_storage_info.CloudStorageInfo( + 'cs_bucket', + 'cs_hash', 'download_path', + 'cs_remote_path') + self.assertEqual('cs_hash', cs_info._cs_hash) + self.assertEqual('cs_bucket', cs_info._cs_bucket) + self.assertEqual('cs_remote_path', cs_info._cs_remote_path) + self.assertEqual('download_path', cs_info._download_path) + self.assertFalse(cs_info._version_in_cs) + self.assertFalse(cs_info._archive_info) + + +class TestGetRemotePath(fake_filesystem_unittest.TestCase): + def setUp(self): + self.setUpPyfakefs() + self.config_path = '/test/dep_config.json' + self.fs.CreateFile(self.config_path, contents='{}') + self.download_path = '/foo/download_path' + self.fs.CreateFile( + self.download_path, contents='1010110', st_mode=stat.S_IWOTH) + self.cs_info = cloud_storage_info.CloudStorageInfo( + 'cs_bucket', 'cs_hash', self.download_path, 'cs_remote_path', + version_in_cs='1.2.3.4',) + + def tearDown(self): + self.tearDownPyfakefs() + + @mock.patch( + 'py_utils.cloud_storage.GetIfHashChanged') + def testGetRemotePathNoArchive(self, cs_get_mock): + def _GetIfHashChangedMock(cs_path, download_path, bucket, file_hash): + del cs_path, bucket, file_hash + if not os.path.exists(download_path): + self.fs.CreateFile(download_path, contents='1010001010101010110101') + cs_get_mock.side_effect = _GetIfHashChangedMock + # All of the needed information is given, and the downloaded path exists + # after calling cloud storage. + self.assertEqual( + os.path.abspath(self.download_path), + self.cs_info.GetRemotePath()) + self.assertTrue(os.stat(self.download_path).st_mode & stat.S_IXUSR) + + # All of the needed information is given, but the downloaded path doesn't + # exists after calling cloud storage. + self.fs.RemoveObject(self.download_path) + cs_get_mock.side_effect = [True] + self.assertRaises( + exceptions.FileNotFoundError, self.cs_info.GetRemotePath) + + @mock.patch( + 'dependency_manager.dependency_manager_util.UnzipArchive') + @mock.patch( + 'dependency_manager.cloud_storage_info.cloud_storage.GetIfHashChanged') # pylint: disable=line-too-long + def testGetRemotePathWithArchive(self, cs_get_mock, unzip_mock): + def _GetIfHashChangedMock(cs_path, download_path, bucket, file_hash): + del cs_path, bucket, file_hash + if not os.path.exists(download_path): + self.fs.CreateFile(download_path, contents='1010001010101010110101') + cs_get_mock.side_effect = _GetIfHashChangedMock + + unzip_path = os.path.join( + os.path.dirname(self.download_path), 'unzip_dir') + path_within_archive = os.path.join('path', 'within', 'archive') + dep_path = os.path.join(unzip_path, path_within_archive) + def _UnzipFileMock(archive_file, unzip_location, tmp_location=None): + del archive_file, tmp_location + self.fs.CreateFile(dep_path) + self.fs.CreateFile(os.path.join(unzip_location, 'extra', 'path')) + self.fs.CreateFile(os.path.join(unzip_location, 'another_extra_path')) + unzip_mock.side_effect = _UnzipFileMock + + # Create a stale directory that's expected to get deleted + stale_unzip_path_glob = os.path.join( + os.path.dirname(self.download_path), 'unzip_dir_*') + stale_path = os.path.join( + os.path.dirname(self.download_path), 'unzip_dir_stale') + self.fs.CreateDirectory(stale_path) + self.fs.CreateFile(os.path.join(stale_path, 'some_file')) + + self.assertFalse(os.path.exists(dep_path)) + zip_info = archive_info.ArchiveInfo( + self.download_path, unzip_path, path_within_archive, + stale_unzip_path_glob) + self.cs_info = cloud_storage_info.CloudStorageInfo( + 'cs_bucket', 'cs_hash', self.download_path, 'cs_remote_path', + version_in_cs='1.2.3.4', archive_info=zip_info) + + self.assertFalse(unzip_mock.called) + self.assertEqual( + os.path.abspath(dep_path), + self.cs_info.GetRemotePath()) + self.assertTrue(os.path.exists(dep_path)) + self.assertTrue(stat.S_IMODE(os.stat(os.path.abspath(dep_path)).st_mode) & + (stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR)) + unzip_mock.assert_called_once_with(self.download_path, unzip_path) + + # Stale directory should have been deleted + self.assertFalse(os.path.exists(stale_path)) + + # Should not need to unzip a second time, but should return the same path. + unzip_mock.reset_mock() + self.assertTrue(os.path.exists(dep_path)) + self.assertEqual( + os.path.abspath(dep_path), + self.cs_info.GetRemotePath()) + self.assertTrue(stat.S_IMODE(os.stat(os.path.abspath(dep_path)).st_mode) & + (stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR)) + self.assertFalse(unzip_mock.called) + + + @mock.patch( + 'py_utils.cloud_storage.GetIfHashChanged') + def testGetRemotePathCloudStorageErrors(self, cs_get_mock): + cs_get_mock.side_effect = cloud_storage.CloudStorageError + self.assertRaises(cloud_storage.CloudStorageError, + self.cs_info.GetRemotePath) + + cs_get_mock.side_effect = cloud_storage.ServerError + self.assertRaises(cloud_storage.ServerError, + self.cs_info.GetRemotePath) + + cs_get_mock.side_effect = cloud_storage.NotFoundError + self.assertRaises(cloud_storage.NotFoundError, + self.cs_info.GetRemotePath) + + cs_get_mock.side_effect = cloud_storage.PermissionError + self.assertRaises(cloud_storage.PermissionError, + self.cs_info.GetRemotePath) + + cs_get_mock.side_effect = cloud_storage.CredentialsError + self.assertRaises(cloud_storage.CredentialsError, + self.cs_info.GetRemotePath) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/dependency_info.py b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/dependency_info.py new file mode 100644 index 0000000..942d57e --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/dependency_info.py @@ -0,0 +1,128 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +class DependencyInfo(object): + def __init__(self, dependency, platform, config_path, local_path_info=None, + cloud_storage_info=None): + """ Container for the information needed for each dependency/platform pair + in the dependency_manager. + + Args: + Required: + dependency: Name of the dependency. + platform: Name of the platform to be run on. + config_path: Path to the config_path this information came from. Used + for error messages to improve debugging. + + Optional: + local_paths: A list of paths to search in order for a local file. + cloud_storage_info: An instance of CloudStorageInfo. + """ + # TODO(aiolos): update the above doc string for A) the usage of zip files + # and B) supporting lists of local_paths to be checked for most recently + # changed files. + if not dependency or not platform: + raise ValueError( + 'Must supply both a dependency and platform to DependencyInfo') + + self._dependency = dependency + self._platform = platform + self._config_paths = [config_path] + self._local_path_info = local_path_info + self._cloud_storage_info = cloud_storage_info + + def Update(self, new_dep_info): + """Add the information from |new_dep_info| to this instance. + """ + self._config_paths.extend(new_dep_info.config_paths) + if (self.dependency != new_dep_info.dependency or + self.platform != new_dep_info.platform): + raise ValueError( + 'Cannot update DependencyInfo with different dependency or platform.' + 'Existing dep: %s, existing platform: %s. New dep: %s, new platform:' + '%s. Config_paths conflicting: %s' % ( + self.dependency, self.platform, new_dep_info.dependency, + new_dep_info.platform, self.config_paths)) + if new_dep_info.has_cloud_storage_info: + if self.has_cloud_storage_info: + raise ValueError( + 'Overriding cloud storage data is not allowed when updating a ' + 'DependencyInfo. Conflict in dependency %s on platform %s in ' + 'config_paths: %s.' % (self.dependency, self.platform, + self.config_paths)) + else: + self._cloud_storage_info = new_dep_info._cloud_storage_info + if not self._local_path_info: + self._local_path_info = new_dep_info._local_path_info + else: + self._local_path_info.Update(new_dep_info._local_path_info) + + def GetRemotePath(self): + """Gets the path to a downloaded version of the dependency. + + May not download the file if it has already been downloaded. + Will unzip the downloaded file if specified in the config + via unzipped_hash. + + Returns: A path to an executable that was stored in cloud_storage, or None + if not found. + + Raises: + CredentialsError: If cloud_storage credentials aren't configured. + PermissionError: If cloud_storage credentials are configured, but not + with an account that has permission to download the needed file. + NotFoundError: If the needed file does not exist where expected in + cloud_storage or the downloaded zip file. + ServerError: If an internal server error is hit while downloading the + needed file. + CloudStorageError: If another error occured while downloading the remote + path. + FileNotFoundError: If the download was otherwise unsuccessful. + """ + if self.has_cloud_storage_info: + return self._cloud_storage_info.GetRemotePath() + return None + + def GetRemotePathVersion(self): + if self.has_cloud_storage_info: + return self._cloud_storage_info.version_in_cs + return None + + def GetLocalPath(self): + """Gets the path to a local version of the dependency. + + Returns: A path to a local dependency, or None if not found. + + """ + if self.has_local_path_info: + return self._local_path_info.GetLocalPath() + return None + + @property + def dependency(self): + return self._dependency + + @property + def platform(self): + return self._platform + + @property + def config_paths(self): + return self._config_paths + + @property + def local_path_info(self): + return self._local_path_info + + @property + def has_cloud_storage_info(self): + return bool(self._cloud_storage_info) + + @property + def has_local_path_info(self): + return bool(self._local_path_info) + + @property + def cloud_storage_info(self): + return self._cloud_storage_info diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/dependency_info_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/dependency_info_unittest.py new file mode 100644 index 0000000..6117cd3 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/dependency_info_unittest.py @@ -0,0 +1,234 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import unittest + +import dependency_manager + +class DependencyInfoTest(unittest.TestCase): + def testInitRequiredInfo(self): + # Must have a dependency, platform and file_path. + self.assertRaises(ValueError, dependency_manager.DependencyInfo, + None, None, None) + self.assertRaises(ValueError, dependency_manager.DependencyInfo, + 'dep', None, None) + self.assertRaises(ValueError, dependency_manager.DependencyInfo, + None, 'plat', None) + self.assertRaises(ValueError, dependency_manager.DependencyInfo, + None, None, 'config_path') + # Empty DependencyInfo. + empty_di = dependency_manager.DependencyInfo('dep', 'plat', 'config_path') + self.assertEqual('dep', empty_di.dependency) + self.assertEqual('plat', empty_di.platform) + self.assertEqual(['config_path'], empty_di.config_paths) + self.assertFalse(empty_di.has_local_path_info) + self.assertFalse(empty_di.has_cloud_storage_info) + + def testInitLocalPaths(self): + local_path_info = dependency_manager.LocalPathInfo(['path0', 'path1']) + dep_info = dependency_manager.DependencyInfo( + 'dep', 'platform', 'config_path', local_path_info + ) + self.assertEqual('dep', dep_info.dependency) + self.assertEqual('platform', dep_info.platform) + self.assertEqual(['config_path'], dep_info.config_paths) + self.assertEqual(local_path_info, dep_info._local_path_info) + self.assertFalse(dep_info.has_cloud_storage_info) + + def testInitCloudStorageInfo(self): + cs_info = dependency_manager.CloudStorageInfo( + 'cs_bucket', 'cs_hash', 'dowload_path', 'cs_remote_path') + dep_info = dependency_manager.DependencyInfo( + 'dep', 'platform', 'config_path', cloud_storage_info=cs_info) + self.assertEqual('dep', dep_info.dependency) + self.assertEqual('platform', dep_info.platform) + self.assertEqual(['config_path'], dep_info.config_paths) + self.assertFalse(dep_info.has_local_path_info) + self.assertTrue(dep_info.has_cloud_storage_info) + self.assertEqual(cs_info, dep_info._cloud_storage_info) + + def testInitAllInfo(self): + cs_info = dependency_manager.CloudStorageInfo( + 'cs_bucket', 'cs_hash', 'dowload_path', 'cs_remote_path') + dep_info = dependency_manager.DependencyInfo( + 'dep', 'platform', 'config_path', cloud_storage_info=cs_info) + self.assertEqual('dep', dep_info.dependency) + self.assertEqual('platform', dep_info.platform) + self.assertEqual(['config_path'], dep_info.config_paths) + self.assertFalse(dep_info.has_local_path_info) + self.assertTrue(dep_info.has_cloud_storage_info) + + + def testUpdateRequiredArgsConflicts(self): + lp_info = dependency_manager.LocalPathInfo(['path0', 'path2']) + dep_info1 = dependency_manager.DependencyInfo( + 'dep1', 'platform1', 'config_path1', local_path_info=lp_info) + dep_info2 = dependency_manager.DependencyInfo( + 'dep1', 'platform2', 'config_path2', local_path_info=lp_info) + dep_info3 = dependency_manager.DependencyInfo( + 'dep2', 'platform1', 'config_path3', local_path_info=lp_info) + self.assertRaises(ValueError, dep_info1.Update, dep_info2) + self.assertRaises(ValueError, dep_info1.Update, dep_info3) + self.assertRaises(ValueError, dep_info3.Update, dep_info2) + + def testUpdateMinimumCloudStorageInfo(self): + dep_info1 = dependency_manager.DependencyInfo( + 'dep1', 'platform1', 'config_path1') + + cs_info2 = dependency_manager.CloudStorageInfo( + cs_bucket='cs_bucket2', cs_hash='cs_hash2', + download_path='download_path2', cs_remote_path='cs_remote_path2') + dep_info2 = dependency_manager.DependencyInfo( + 'dep1', 'platform1', 'config_path2', cloud_storage_info=cs_info2) + + dep_info3 = dependency_manager.DependencyInfo( + 'dep1', 'platform1', 'config_path3') + + cs_info4 = dependency_manager.CloudStorageInfo( + cs_bucket='cs_bucket4', cs_hash='cs_hash4', + download_path='download_path4', cs_remote_path='cs_remote_path4') + dep_info4 = dependency_manager.DependencyInfo( + 'dep1', 'platform1', 'config_path4', cloud_storage_info=cs_info4) + + self.assertEqual('dep1', dep_info1.dependency) + self.assertEqual('platform1', dep_info1.platform) + self.assertEqual(['config_path1'], dep_info1.config_paths) + + dep_info1.Update(dep_info2) + self.assertFalse(dep_info1.has_local_path_info) + self.assertEqual('dep1', dep_info1.dependency) + self.assertEqual('platform1', dep_info1.platform) + self.assertEqual(['config_path1', 'config_path2'], dep_info1.config_paths) + + cs_info = dep_info1._cloud_storage_info + self.assertEqual(cs_info, cs_info2) + self.assertEqual('cs_bucket2', cs_info._cs_bucket) + self.assertEqual('cs_hash2', cs_info._cs_hash) + self.assertEqual('download_path2', cs_info._download_path) + self.assertEqual('cs_remote_path2', cs_info._cs_remote_path) + + dep_info1.Update(dep_info3) + self.assertEqual('dep1', dep_info1.dependency) + self.assertEqual('platform1', dep_info1.platform) + self.assertEqual(['config_path1', 'config_path2', 'config_path3'], + dep_info1.config_paths) + self.assertFalse(dep_info1.has_local_path_info) + cs_info = dep_info1._cloud_storage_info + self.assertEqual(cs_info, cs_info2) + self.assertEqual('cs_bucket2', cs_info._cs_bucket) + self.assertEqual('cs_hash2', cs_info._cs_hash) + self.assertEqual('download_path2', cs_info._download_path) + self.assertEqual('cs_remote_path2', cs_info._cs_remote_path) + + self.assertRaises(ValueError, dep_info1.Update, dep_info4) + + def testUpdateMaxCloudStorageInfo(self): + dep_info1 = dependency_manager.DependencyInfo( + 'dep1', 'platform1', 'config_path1') + + zip_info2 = dependency_manager.ArchiveInfo( + 'archive_path2', 'unzip_path2', 'path_withing_archive2') + cs_info2 = dependency_manager.CloudStorageInfo( + 'cs_bucket2', 'cs_hash2', 'download_path2', 'cs_remote_path2', + version_in_cs='2.1.1', archive_info=zip_info2) + dep_info2 = dependency_manager.DependencyInfo( + 'dep1', 'platform1', 'config_path2', cloud_storage_info=cs_info2) + + dep_info3 = dependency_manager.DependencyInfo( + 'dep1', 'platform1', 'config_path3') + + zip_info4 = dependency_manager.ArchiveInfo( + 'archive_path4', 'unzip_path4', 'path_withing_archive4') + cs_info4 = dependency_manager.CloudStorageInfo( + 'cs_bucket4', 'cs_hash4', 'download_path4', 'cs_remote_path4', + version_in_cs='4.2.1', archive_info=zip_info4) + dep_info4 = dependency_manager.DependencyInfo( + 'dep1', 'platform1', 'config_path4', cloud_storage_info=cs_info4) + + self.assertEqual('dep1', dep_info1.dependency) + self.assertEqual('platform1', dep_info1.platform) + self.assertEqual(['config_path1'], dep_info1.config_paths) + + dep_info1.Update(dep_info2) + self.assertFalse(dep_info1.has_local_path_info) + self.assertEqual('dep1', dep_info1.dependency) + self.assertEqual('platform1', dep_info1.platform) + self.assertEqual(['config_path1', 'config_path2'], dep_info1.config_paths) + + cs_info = dep_info1._cloud_storage_info + self.assertEqual(cs_info, cs_info2) + self.assertEqual('cs_bucket2', cs_info._cs_bucket) + self.assertEqual('cs_hash2', cs_info._cs_hash) + self.assertEqual('download_path2', cs_info._download_path) + self.assertEqual('cs_remote_path2', cs_info._cs_remote_path) + self.assertEqual('cs_remote_path2', cs_info._cs_remote_path) + + dep_info1.Update(dep_info3) + self.assertEqual('dep1', dep_info1.dependency) + self.assertEqual('platform1', dep_info1.platform) + self.assertEqual(['config_path1', 'config_path2', 'config_path3'], + dep_info1.config_paths) + self.assertFalse(dep_info1.has_local_path_info) + cs_info = dep_info1._cloud_storage_info + self.assertEqual(cs_info, cs_info2) + self.assertEqual('cs_bucket2', cs_info._cs_bucket) + self.assertEqual('cs_hash2', cs_info._cs_hash) + self.assertEqual('download_path2', cs_info._download_path) + self.assertEqual('cs_remote_path2', cs_info._cs_remote_path) + + self.assertRaises(ValueError, dep_info1.Update, dep_info4) + + def testUpdateAllInfo(self): + lp_info1 = dependency_manager.LocalPathInfo(['path1']) + dep_info1 = dependency_manager.DependencyInfo( + 'dep1', 'platform1', 'config_path1', local_path_info=lp_info1) + cs_info2 = dependency_manager.CloudStorageInfo( + cs_bucket='cs_bucket2', cs_hash='cs_hash2', + download_path='download_path2', cs_remote_path='cs_remote_path2') + lp_info2 = dependency_manager.LocalPathInfo(['path2']) + dep_info2 = dependency_manager.DependencyInfo( + 'dep1', 'platform1', 'config_path2', local_path_info=lp_info2, + cloud_storage_info=cs_info2) + lp_info3 = dependency_manager.LocalPathInfo(['path3']) + dep_info3 = dependency_manager.DependencyInfo( + 'dep1', 'platform1', 'config_path3', local_path_info=lp_info3) + lp_info4 = dependency_manager.LocalPathInfo(['path4']) + cs_info4 = dependency_manager.CloudStorageInfo( + cs_bucket='cs_bucket4', cs_hash='cs_hash4', + download_path='download_path4', cs_remote_path='cs_remote_path4') + dep_info4 = dependency_manager.DependencyInfo( + 'dep1', 'platform1', 'config_path4', local_path_info=lp_info4, + cloud_storage_info=cs_info4) + + self.assertTrue(dep_info1._local_path_info.IsPathInLocalPaths('path1')) + self.assertFalse(dep_info1._local_path_info.IsPathInLocalPaths('path2')) + self.assertFalse(dep_info1._local_path_info.IsPathInLocalPaths('path3')) + self.assertFalse(dep_info1._local_path_info.IsPathInLocalPaths('path4')) + + dep_info1.Update(dep_info2) + cs_info = dep_info1._cloud_storage_info + self.assertEqual(cs_info, cs_info2) + self.assertEqual('cs_bucket2', cs_info._cs_bucket) + self.assertEqual('cs_hash2', cs_info._cs_hash) + self.assertEqual('download_path2', cs_info._download_path) + self.assertEqual('cs_remote_path2', cs_info._cs_remote_path) + self.assertTrue(dep_info1._local_path_info.IsPathInLocalPaths('path1')) + self.assertTrue(dep_info1._local_path_info.IsPathInLocalPaths('path2')) + self.assertFalse(dep_info1._local_path_info.IsPathInLocalPaths('path3')) + self.assertFalse(dep_info1._local_path_info.IsPathInLocalPaths('path4')) + + dep_info1.Update(dep_info3) + cs_info = dep_info1._cloud_storage_info + self.assertEqual(cs_info, cs_info2) + self.assertEqual('cs_bucket2', cs_info._cs_bucket) + self.assertEqual('cs_hash2', cs_info._cs_hash) + self.assertEqual('download_path2', cs_info._download_path) + self.assertEqual('cs_remote_path2', cs_info._cs_remote_path) + self.assertTrue(dep_info1._local_path_info.IsPathInLocalPaths('path1')) + self.assertTrue(dep_info1._local_path_info.IsPathInLocalPaths('path2')) + self.assertTrue(dep_info1._local_path_info.IsPathInLocalPaths('path3')) + self.assertFalse(dep_info1._local_path_info.IsPathInLocalPaths('path4')) + + self.assertRaises(ValueError, dep_info1.Update, dep_info4) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/dependency_manager_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/dependency_manager_unittest.py new file mode 100644 index 0000000..86d17f7 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/dependency_manager_unittest.py @@ -0,0 +1,527 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# pylint: disable=unused-argument + +import mock + +from pyfakefs import fake_filesystem_unittest +from py_utils import cloud_storage + +import dependency_manager +from dependency_manager import exceptions + + +class DependencyManagerTest(fake_filesystem_unittest.TestCase): + + def setUp(self): + self.lp_info012 = dependency_manager.LocalPathInfo( + ['path0', 'path1', 'path2']) + self.cloud_storage_info = dependency_manager.CloudStorageInfo( + 'cs_bucket', 'cs_hash', 'download_path', 'cs_remote_path') + + self.dep_info = dependency_manager.DependencyInfo( + 'dep', 'platform', 'config_file', local_path_info=self.lp_info012, + cloud_storage_info=self.cloud_storage_info) + self.setUpPyfakefs() + + def tearDown(self): + self.tearDownPyfakefs() + + # TODO(nednguyen): add a test that construct + # dependency_manager.DependencyManager from a list of DependencyInfo. + def testErrorInit(self): + with self.assertRaises(ValueError): + dependency_manager.DependencyManager(None) + with self.assertRaises(ValueError): + dependency_manager.DependencyManager('config_file?') + + def testInitialUpdateDependencies(self): + dep_manager = dependency_manager.DependencyManager([]) + + # Empty BaseConfig. + dep_manager._lookup_dict = {} + base_config_mock = mock.MagicMock(spec=dependency_manager.BaseConfig) + base_config_mock.IterDependencyInfo.return_value = iter([]) + dep_manager._UpdateDependencies(base_config_mock) + self.assertFalse(dep_manager._lookup_dict) + + # One dependency/platform in a BaseConfig. + dep_manager._lookup_dict = {} + base_config_mock = mock.MagicMock(spec=dependency_manager.BaseConfig) + dep_info = mock.MagicMock(spec=dependency_manager.DependencyInfo) + dep = 'dependency' + plat = 'platform' + dep_info.dependency = dep + dep_info.platform = plat + base_config_mock.IterDependencyInfo.return_value = iter([dep_info]) + expected_lookup_dict = {dep: {plat: dep_info}} + dep_manager._UpdateDependencies(base_config_mock) + self.assertEqual(expected_lookup_dict, dep_manager._lookup_dict) + self.assertFalse(dep_info.Update.called) + + # One dependency multiple platforms in a BaseConfig. + dep_manager._lookup_dict = {} + base_config_mock = mock.MagicMock(spec=dependency_manager.BaseConfig) + dep = 'dependency' + plat1 = 'platform1' + plat2 = 'platform2' + dep_info1 = mock.MagicMock(spec=dependency_manager.DependencyInfo) + dep_info1.dependency = dep + dep_info1.platform = plat1 + dep_info2 = mock.MagicMock(spec=dependency_manager.DependencyInfo) + dep_info2.dependency = dep + dep_info2.platform = plat2 + base_config_mock.IterDependencyInfo.return_value = iter([dep_info1, + dep_info2]) + expected_lookup_dict = {dep: {plat1: dep_info1, + plat2: dep_info2}} + dep_manager._UpdateDependencies(base_config_mock) + self.assertEqual(expected_lookup_dict, dep_manager._lookup_dict) + self.assertFalse(dep_info1.Update.called) + self.assertFalse(dep_info2.Update.called) + + # Multiple dependencies, multiple platforms in a BaseConfig. + dep_manager._lookup_dict = {} + base_config_mock = mock.MagicMock(spec=dependency_manager.BaseConfig) + dep1 = 'dependency1' + dep2 = 'dependency2' + plat1 = 'platform1' + plat2 = 'platform2' + dep_info1 = mock.MagicMock(spec=dependency_manager.DependencyInfo) + dep_info1.dependency = dep1 + dep_info1.platform = plat1 + dep_info2 = mock.MagicMock(spec=dependency_manager.DependencyInfo) + dep_info2.dependency = dep1 + dep_info2.platform = plat2 + dep_info3 = mock.MagicMock(spec=dependency_manager.DependencyInfo) + dep_info3.dependency = dep2 + dep_info3.platform = plat2 + base_config_mock.IterDependencyInfo.return_value = iter( + [dep_info1, dep_info2, dep_info3]) + expected_lookup_dict = {dep1: {plat1: dep_info1, + plat2: dep_info2}, + dep2: {plat2: dep_info3}} + dep_manager._UpdateDependencies(base_config_mock) + self.assertEqual(expected_lookup_dict, dep_manager._lookup_dict) + self.assertFalse(dep_info1.Update.called) + self.assertFalse(dep_info2.Update.called) + self.assertFalse(dep_info3.Update.called) + + def testFollowupUpdateDependenciesNoOverlap(self): + dep_manager = dependency_manager.DependencyManager([]) + dep = 'dependency' + dep1 = 'dependency1' + dep2 = 'dependency2' + dep3 = 'dependency3' + plat1 = 'platform1' + plat2 = 'platform2' + plat3 = 'platform3' + dep_info_a = mock.MagicMock(spec=dependency_manager.DependencyInfo) + dep_info_a.dependency = dep1 + dep_info_a.platform = plat1 + dep_info_b = mock.MagicMock(spec=dependency_manager.DependencyInfo) + dep_info_b.dependency = dep1 + dep_info_b.platform = plat2 + dep_info_c = mock.MagicMock(spec=dependency_manager.DependencyInfo) + dep_info_c.dependency = dep + dep_info_c.platform = plat1 + + start_lookup_dict = {dep: {plat1: dep_info_a, + plat2: dep_info_b}, + dep1: {plat1: dep_info_c}} + base_config_mock = mock.MagicMock(spec=dependency_manager.BaseConfig) + + # Empty BaseConfig. + dep_manager._lookup_dict = start_lookup_dict.copy() + base_config_mock.IterDependencyInfo.return_value = iter([]) + dep_manager._UpdateDependencies(base_config_mock) + self.assertEqual(start_lookup_dict, dep_manager._lookup_dict) + + # One dependency/platform in a BaseConfig. + dep_manager._lookup_dict = start_lookup_dict.copy() + dep_info = mock.MagicMock(spec=dependency_manager.DependencyInfo) + dep_info.dependency = dep3 + dep_info.platform = plat1 + base_config_mock.IterDependencyInfo.return_value = iter([dep_info]) + expected_lookup_dict = {dep: {plat1: dep_info_a, + plat2: dep_info_b}, + dep1: {plat1: dep_info_c}, + dep3: {plat3: dep_info}} + + dep_manager._UpdateDependencies(base_config_mock) + self.assertItemsEqual(expected_lookup_dict, dep_manager._lookup_dict) + self.assertFalse(dep_info.Update.called) + self.assertFalse(dep_info_a.Update.called) + self.assertFalse(dep_info_b.Update.called) + self.assertFalse(dep_info_c.Update.called) + + # One dependency multiple platforms in a BaseConfig. + dep_manager._lookup_dict = start_lookup_dict.copy() + dep_info1 = mock.MagicMock(spec=dependency_manager.DependencyInfo) + dep_info1.dependency = dep2 + dep_info1.platform = plat1 + dep_info2 = mock.MagicMock(spec=dependency_manager.DependencyInfo) + dep_info2.dependency = dep2 + dep_info2.platform = plat2 + base_config_mock.IterDependencyInfo.return_value = iter([dep_info1, + dep_info2]) + expected_lookup_dict = {dep: {plat1: dep_info_a, + plat2: dep_info_b}, + dep1: {plat1: dep_info_c}, + dep2: {plat1: dep_info1, + plat2: dep_info2}} + dep_manager._UpdateDependencies(base_config_mock) + self.assertEqual(expected_lookup_dict, dep_manager._lookup_dict) + self.assertFalse(dep_info1.Update.called) + self.assertFalse(dep_info2.Update.called) + self.assertFalse(dep_info_a.Update.called) + self.assertFalse(dep_info_b.Update.called) + self.assertFalse(dep_info_c.Update.called) + + # Multiple dependencies, multiple platforms in a BaseConfig. + dep_manager._lookup_dict = start_lookup_dict.copy() + dep1 = 'dependency1' + plat1 = 'platform1' + plat2 = 'platform2' + dep_info1 = mock.MagicMock(spec=dependency_manager.DependencyInfo) + dep_info1.dependency = dep2 + dep_info1.platform = plat1 + dep_info2 = mock.MagicMock(spec=dependency_manager.DependencyInfo) + dep_info2.dependency = dep2 + dep_info2.platform = plat2 + dep_info3 = mock.MagicMock(spec=dependency_manager.DependencyInfo) + dep_info3.dependency = dep3 + dep_info3.platform = plat2 + base_config_mock.IterDependencyInfo.return_value = iter( + [dep_info1, dep_info2, dep_info3]) + expected_lookup_dict = {dep: {plat1: dep_info_a, + plat2: dep_info_b}, + dep1: {plat1: dep_info_c}, + dep2: {plat1: dep_info1, + plat2: dep_info2}, + dep3: {plat2: dep_info3}} + dep_manager._UpdateDependencies(base_config_mock) + self.assertEqual(expected_lookup_dict, dep_manager._lookup_dict) + self.assertFalse(dep_info1.Update.called) + self.assertFalse(dep_info2.Update.called) + self.assertFalse(dep_info3.Update.called) + self.assertFalse(dep_info_a.Update.called) + self.assertFalse(dep_info_b.Update.called) + self.assertFalse(dep_info_c.Update.called) + + # Ensure the testing data wasn't corrupted. + self.assertEqual(start_lookup_dict, + {dep: {plat1: dep_info_a, + plat2: dep_info_b}, + dep1: {plat1: dep_info_c}}) + + def testFollowupUpdateDependenciesWithCollisions(self): + dep_manager = dependency_manager.DependencyManager([]) + dep = 'dependency' + dep1 = 'dependency1' + dep2 = 'dependency2' + plat1 = 'platform1' + plat2 = 'platform2' + dep_info_a = mock.MagicMock(spec=dependency_manager.DependencyInfo) + dep_info_a.dependency = dep1 + dep_info_a.platform = plat1 + dep_info_b = mock.MagicMock(spec=dependency_manager.DependencyInfo) + dep_info_b.dependency = dep1 + dep_info_b.platform = plat2 + dep_info_c = mock.MagicMock(spec=dependency_manager.DependencyInfo) + dep_info_c.dependency = dep + dep_info_c.platform = plat1 + + start_lookup_dict = {dep: {plat1: dep_info_a, + plat2: dep_info_b}, + dep1: {plat1: dep_info_c}} + base_config_mock = mock.MagicMock(spec=dependency_manager.BaseConfig) + + # One dependency/platform. + dep_manager._lookup_dict = start_lookup_dict.copy() + dep_info = mock.MagicMock(spec=dependency_manager.DependencyInfo) + dep_info.dependency = dep + dep_info.platform = plat1 + base_config_mock.IterDependencyInfo.return_value = iter([dep_info]) + expected_lookup_dict = {dep: {plat1: dep_info_a, + plat2: dep_info_b}, + dep1: {plat1: dep_info_c}} + + dep_manager._UpdateDependencies(base_config_mock) + self.assertItemsEqual(expected_lookup_dict, dep_manager._lookup_dict) + dep_info_a.Update.assert_called_once_with(dep_info) + self.assertFalse(dep_info.Update.called) + self.assertFalse(dep_info_b.Update.called) + self.assertFalse(dep_info_c.Update.called) + dep_info_a.reset_mock() + dep_info_b.reset_mock() + dep_info_c.reset_mock() + + # One dependency multiple platforms in a BaseConfig. + dep_manager._lookup_dict = start_lookup_dict.copy() + dep_info1 = mock.MagicMock(spec=dependency_manager.DependencyInfo) + dep_info1.dependency = dep1 + dep_info1.platform = plat1 + dep_info2 = mock.MagicMock(spec=dependency_manager.DependencyInfo) + dep_info2.dependency = dep2 + dep_info2.platform = plat2 + base_config_mock.IterDependencyInfo.return_value = iter([dep_info1, + dep_info2]) + expected_lookup_dict = {dep: {plat1: dep_info_a, + plat2: dep_info_b}, + dep1: {plat1: dep_info_c}, + dep2: {plat2: dep_info2}} + dep_manager._UpdateDependencies(base_config_mock) + self.assertEqual(expected_lookup_dict, dep_manager._lookup_dict) + self.assertFalse(dep_info1.Update.called) + self.assertFalse(dep_info2.Update.called) + self.assertFalse(dep_info_a.Update.called) + self.assertFalse(dep_info_b.Update.called) + dep_info_c.Update.assert_called_once_with(dep_info1) + dep_info_a.reset_mock() + dep_info_b.reset_mock() + dep_info_c.reset_mock() + + # Multiple dependencies, multiple platforms in a BaseConfig. + dep_manager._lookup_dict = start_lookup_dict.copy() + dep1 = 'dependency1' + plat1 = 'platform1' + plat2 = 'platform2' + dep_info1 = mock.MagicMock(spec=dependency_manager.DependencyInfo) + dep_info1.dependency = dep + dep_info1.platform = plat1 + dep_info2 = mock.MagicMock(spec=dependency_manager.DependencyInfo) + dep_info2.dependency = dep1 + dep_info2.platform = plat1 + dep_info3 = mock.MagicMock(spec=dependency_manager.DependencyInfo) + dep_info3.dependency = dep2 + dep_info3.platform = plat2 + base_config_mock.IterDependencyInfo.return_value = iter( + [dep_info1, dep_info2, dep_info3]) + expected_lookup_dict = {dep: {plat1: dep_info_a, + plat2: dep_info_b}, + dep1: {plat1: dep_info_c}, + dep2: {plat2: dep_info3}} + dep_manager._UpdateDependencies(base_config_mock) + self.assertEqual(expected_lookup_dict, dep_manager._lookup_dict) + self.assertFalse(dep_info1.Update.called) + self.assertFalse(dep_info2.Update.called) + self.assertFalse(dep_info3.Update.called) + self.assertFalse(dep_info_b.Update.called) + dep_info_a.Update.assert_called_once_with(dep_info1) + dep_info_c.Update.assert_called_once_with(dep_info2) + + # Collision error. + dep_manager._lookup_dict = start_lookup_dict.copy() + dep_info = mock.MagicMock(spec=dependency_manager.DependencyInfo) + dep_info.dependency = dep + dep_info.platform = plat1 + base_config_mock.IterDependencyInfo.return_value = iter([dep_info]) + dep_info_a.Update.side_effect = ValueError + self.assertRaises(ValueError, + dep_manager._UpdateDependencies, base_config_mock) + + # Ensure the testing data wasn't corrupted. + self.assertEqual(start_lookup_dict, + {dep: {plat1: dep_info_a, + plat2: dep_info_b}, + dep1: {plat1: dep_info_c}}) + + def testGetDependencyInfo(self): + dep_manager = dependency_manager.DependencyManager([]) + self.assertFalse(dep_manager._lookup_dict) + + # No dependencies in the dependency manager. + self.assertEqual(None, dep_manager._GetDependencyInfo('missing_dep', + 'missing_plat')) + + dep_manager._lookup_dict = {'dep1': {'plat1': 'dep_info11', + 'plat2': 'dep_info12', + 'plat3': 'dep_info13'}, + 'dep2': {'plat1': 'dep_info11', + 'plat2': 'dep_info21', + 'plat3': 'dep_info23', + 'default': 'dep_info2d'}, + 'dep3': {'plat1': 'dep_info31', + 'plat2': 'dep_info32', + 'default': 'dep_info3d'}} + # Dependency not in the dependency manager. + self.assertEqual(None, dep_manager._GetDependencyInfo( + 'missing_dep', 'missing_plat')) + # Dependency in the dependency manager, but not the platform. No default. + self.assertEqual(None, dep_manager._GetDependencyInfo( + 'dep1', 'missing_plat')) + # Dependency in the dependency manager, but not the platform, but a default + # exists. + self.assertEqual('dep_info2d', dep_manager._GetDependencyInfo( + 'dep2', 'missing_plat')) + # Dependency and platform in the dependency manager. A default exists. + self.assertEqual('dep_info23', dep_manager._GetDependencyInfo( + 'dep2', 'plat3')) + # Dependency and platform in the dependency manager. No default exists. + self.assertEqual('dep_info12', dep_manager._GetDependencyInfo( + 'dep1', 'plat2')) + + + + + + + + + + + + + + + + + + + @mock.patch( + 'dependency_manager.dependency_info.DependencyInfo.GetRemotePath') # pylint: disable=line-too-long + def testFetchPathUnititializedDependency( + self, cs_path_mock): + dep_manager = dependency_manager.DependencyManager([]) + self.assertFalse(cs_path_mock.call_args) + cs_path = 'cs_path' + cs_path_mock.return_value = cs_path + + # Empty lookup_dict + with self.assertRaises(exceptions.NoPathFoundError): + dep_manager.FetchPath('dep', 'plat_arch_x86') + + # Non-empty lookup dict that doesn't contain the dependency we're looking + # for. + dep_manager._lookup_dict = {'dep1': mock.MagicMock(), + 'dep2': mock.MagicMock()} + with self.assertRaises(exceptions.NoPathFoundError): + dep_manager.FetchPath('dep', 'plat_arch_x86') + + @mock.patch('os.path') + @mock.patch( + 'dependency_manager.DependencyManager._GetDependencyInfo') + @mock.patch( + 'dependency_manager.dependency_info.DependencyInfo.GetRemotePath') # pylint: disable=line-too-long + def testFetchPathLocalFile(self, cs_path_mock, dep_info_mock, path_mock): + dep_manager = dependency_manager.DependencyManager([]) + self.assertFalse(cs_path_mock.call_args) + cs_path = 'cs_path' + dep_info = self.dep_info + cs_path_mock.return_value = cs_path + # The DependencyInfo returned should be passed through to LocalPath. + dep_info_mock.return_value = dep_info + + # Non-empty lookup dict that contains the dependency we're looking for. + # Local path exists. + dep_manager._lookup_dict = {'dep': {'platform' : self.dep_info}, + 'dep2': mock.MagicMock()} + self.fs.CreateFile('path1') + found_path = dep_manager.FetchPath('dep', 'platform') + + self.assertEqual('path1', found_path) + self.assertFalse(cs_path_mock.call_args) + + + @mock.patch( + 'dependency_manager.dependency_info.DependencyInfo.GetRemotePath') # pylint: disable=line-too-long + def testFetchPathRemoteFile( + self, cs_path_mock): + dep_manager = dependency_manager.DependencyManager([]) + self.assertFalse(cs_path_mock.call_args) + cs_path = 'cs_path' + def FakeCSPath(): + self.fs.CreateFile(cs_path) + return cs_path + cs_path_mock.side_effect = FakeCSPath + + # Non-empty lookup dict that contains the dependency we're looking for. + # Local path doesn't exist, but cloud_storage_path is downloaded. + dep_manager._lookup_dict = {'dep': {'platform' : self.dep_info, + 'plat1': mock.MagicMock()}, + 'dep2': {'plat2': mock.MagicMock()}} + found_path = dep_manager.FetchPath('dep', 'platform') + self.assertEqual(cs_path, found_path) + + + @mock.patch( + 'dependency_manager.dependency_info.DependencyInfo.GetRemotePath') # pylint: disable=line-too-long + def testFetchPathError( + self, cs_path_mock): + dep_manager = dependency_manager.DependencyManager([]) + self.assertFalse(cs_path_mock.call_args) + cs_path_mock.return_value = None + dep_manager._lookup_dict = {'dep': {'platform' : self.dep_info, + 'plat1': mock.MagicMock()}, + 'dep2': {'plat2': mock.MagicMock()}} + # Non-empty lookup dict that contains the dependency we're looking for. + # Local path doesn't exist, and cloud_storage path wasn't successfully + # found. + self.assertRaises(exceptions.NoPathFoundError, + dep_manager.FetchPath, 'dep', 'platform') + + cs_path_mock.side_effect = cloud_storage.CredentialsError + self.assertRaises(cloud_storage.CredentialsError, + dep_manager.FetchPath, 'dep', 'platform') + + cs_path_mock.side_effect = cloud_storage.CloudStorageError + self.assertRaises(cloud_storage.CloudStorageError, + dep_manager.FetchPath, 'dep', 'platform') + + cs_path_mock.side_effect = cloud_storage.PermissionError + self.assertRaises(cloud_storage.PermissionError, + dep_manager.FetchPath, 'dep', 'platform') + + def testLocalPath(self): + dep_manager = dependency_manager.DependencyManager([]) + # Empty lookup_dict + with self.assertRaises(exceptions.NoPathFoundError): + dep_manager.LocalPath('dep', 'plat') + + def testLocalPathNoDependency(self): + # Non-empty lookup dict that doesn't contain the dependency we're looking + # for. + dep_manager = dependency_manager.DependencyManager([]) + dep_manager._lookup_dict = {'dep1': mock.MagicMock(), + 'dep2': mock.MagicMock()} + with self.assertRaises(exceptions.NoPathFoundError): + dep_manager.LocalPath('dep', 'plat') + + def testLocalPathExists(self): + # Non-empty lookup dict that contains the dependency we're looking for. + # Local path exists. + dep_manager = dependency_manager.DependencyManager([]) + dep_manager._lookup_dict = {'dependency' : {'platform': self.dep_info}, + 'dep1': mock.MagicMock(), + 'dep2': mock.MagicMock()} + self.fs.CreateFile('path1') + found_path = dep_manager.LocalPath('dependency', 'platform') + + self.assertEqual('path1', found_path) + + def testLocalPathMissingPaths(self): + # Non-empty lookup dict that contains the dependency we're looking for. + # Local path is found but doesn't exist. + dep_manager = dependency_manager.DependencyManager([]) + dep_manager._lookup_dict = {'dependency' : {'platform': self.dep_info}, + 'dep1': mock.MagicMock(), + 'dep2': mock.MagicMock()} + self.assertRaises(exceptions.NoPathFoundError, + dep_manager.LocalPath, 'dependency', 'platform') + + def testLocalPathNoPaths(self): + # Non-empty lookup dict that contains the dependency we're looking for. + # Local path isn't found. + dep_manager = dependency_manager.DependencyManager([]) + dep_info = dependency_manager.DependencyInfo( + 'dep', 'platform', 'config_file', + cloud_storage_info=self.cloud_storage_info) + dep_manager._lookup_dict = {'dependency' : {'platform': dep_info}, + 'dep1': mock.MagicMock(), + 'dep2': mock.MagicMock()} + self.assertRaises(exceptions.NoPathFoundError, + dep_manager.LocalPath, 'dependency', 'platform') + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/dependency_manager_util.py b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/dependency_manager_util.py new file mode 100644 index 0000000..7ec2ec6 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/dependency_manager_util.py @@ -0,0 +1,103 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import shutil +import stat +import sys +import zipfile_2_7_13 as zipfile + +from dependency_manager import exceptions + + +def _WinReadOnlyHandler(func, path, execinfo): + if not os.access(path, os.W_OK): + os.chmod(path, stat.S_IWRITE) + func(path) + else: + raise execinfo[0], execinfo[1], execinfo[2] + + +def RemoveDir(dir_path): + assert os.path.isabs(dir_path) + if sys.platform.startswith('win'): + dir_path = u'\\\\?\\' + dir_path + if os.path.isdir(dir_path): + shutil.rmtree(dir_path, onerror=_WinReadOnlyHandler) + + +def VerifySafeArchive(archive): + def ResolvePath(path_name): + return os.path.realpath(os.path.abspath(path_name)) + # Must add pathsep to avoid false positives. + # Ex: /tmp/abc/bad_file.py starts with /tmp/a but not /tmp/a/ + base_path = ResolvePath(os.getcwd()) + os.path.sep + for member in archive.namelist(): + if not ResolvePath(os.path.join(base_path, member)).startswith(base_path): + raise exceptions.ArchiveError( + 'Archive %s contains a bad member: %s.' % (archive.filename, member)) + + +def GetModeFromPath(file_path): + return stat.S_IMODE(os.stat(file_path).st_mode) + + +def GetModeFromZipInfo(zip_info): + return zip_info.external_attr >> 16 + + +def SetUnzippedDirPermissions(archive, unzipped_dir): + """Set the file permissions in an unzipped archive. + + Designed to be called right after extractall() was called on |archive|. + Noop on Win. Otherwise sets the executable bit on files where needed. + + Args: + archive: A zipfile.ZipFile object opened for reading. + unzipped_dir: A path to a directory containing the unzipped contents + of |archive|. + """ + if sys.platform.startswith('win'): + # Windows doesn't have an executable bit, so don't mess with the ACLs. + return + for zip_info in archive.infolist(): + archive_acls = GetModeFromZipInfo(zip_info) + if archive_acls & stat.S_IXUSR: + # Only preserve owner execurable permissions. + unzipped_path = os.path.abspath( + os.path.join(unzipped_dir, zip_info.filename)) + mode = GetModeFromPath(unzipped_path) + os.chmod(unzipped_path, mode | stat.S_IXUSR) + + +def UnzipArchive(archive_path, unzip_path): + """Unzips a file if it is a zip file. + + Args: + archive_path: The downloaded file to unzip. + unzip_path: The destination directory to unzip to. + + Raises: + ValueError: If |archive_path| is not a zipfile. + """ + # TODO(aiolos): Add tests once the refactor is completed. crbug.com/551158 + if not (archive_path and zipfile.is_zipfile(archive_path)): + raise ValueError( + 'Attempting to unzip a non-archive file at %s' % archive_path) + if not os.path.exists(unzip_path): + os.makedirs(unzip_path) + try: + with zipfile.ZipFile(archive_path, 'r') as archive: + VerifySafeArchive(archive) + assert os.path.isabs(unzip_path) + unzip_path_without_prefix = unzip_path + if sys.platform.startswith('win'): + unzip_path = u'\\\\?\\' + unzip_path + archive.extractall(path=unzip_path) + SetUnzippedDirPermissions(archive, unzip_path) + except: + # Hack necessary because isdir doesn't work with escaped paths on Windows. + if unzip_path_without_prefix and os.path.isdir(unzip_path_without_prefix): + RemoveDir(unzip_path_without_prefix) + raise diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/dependency_manager_util_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/dependency_manager_util_unittest.py new file mode 100644 index 0000000..c62bfd5 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/dependency_manager_util_unittest.py @@ -0,0 +1,193 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import shutil +import stat +import sys +import tempfile +import unittest +import uuid +import zipfile + +import mock + +from dependency_manager import dependency_manager_util +from dependency_manager import exceptions + + +class DependencyManagerUtilTest(unittest.TestCase): + # This class intentionally uses actual file I/O to test real system behavior. + + def setUp(self): + self.tmp_dir = os.path.abspath(tempfile.mkdtemp(prefix='telemetry')) + self.sub_dir = os.path.join(self.tmp_dir, 'sub_dir') + os.mkdir(self.sub_dir) + + self.read_only_path = (os.path.join(self.tmp_dir, 'read_only')) + with open(self.read_only_path, 'w+') as read_file: + read_file.write('Read-only file') + os.chmod(self.read_only_path, stat.S_IRUSR) + + self.writable_path = (os.path.join(self.tmp_dir, 'writable')) + with open(self.writable_path, 'w+') as writable_file: + writable_file.write('Writable file') + os.chmod(self.writable_path, stat.S_IRUSR | stat.S_IWUSR) + + self.executable_path = (os.path.join(self.tmp_dir, 'executable')) + with open(self.executable_path, 'w+') as executable_file: + executable_file.write('Executable file') + os.chmod(self.executable_path, stat.S_IRWXU) + + self.sub_read_only_path = (os.path.join(self.sub_dir, 'read_only')) + with open(self.sub_read_only_path, 'w+') as read_file: + read_file.write('Read-only sub file') + os.chmod(self.sub_read_only_path, stat.S_IRUSR) + + self.sub_writable_path = (os.path.join(self.sub_dir, 'writable')) + with open(self.sub_writable_path, 'w+') as writable_file: + writable_file.write('Writable sub file') + os.chmod(self.sub_writable_path, stat.S_IRUSR | stat.S_IWUSR) + + self.sub_executable_path = (os.path.join(self.sub_dir, 'executable')) + with open(self.sub_executable_path, 'w+') as executable_file: + executable_file.write('Executable sub file') + os.chmod(self.sub_executable_path, stat.S_IRWXU) + + self.AssertExpectedDirFiles(self.tmp_dir) + self.archive_path = self.CreateZipArchiveFromDir(self.tmp_dir) + + def tearDown(self): + if os.path.isdir(self.tmp_dir): + dependency_manager_util.RemoveDir(self.tmp_dir) + if os.path.isfile(self.archive_path): + os.remove(self.archive_path) + + def AssertExpectedDirFiles(self, top_dir): + sub_dir = os.path.join(top_dir, 'sub_dir') + read_only_path = (os.path.join(top_dir, 'read_only')) + writable_path = (os.path.join(top_dir, 'writable')) + executable_path = (os.path.join(top_dir, 'executable')) + sub_read_only_path = (os.path.join(sub_dir, 'read_only')) + sub_writable_path = (os.path.join(sub_dir, 'writable')) + sub_executable_path = (os.path.join(sub_dir, 'executable')) + # assert contents as expected + self.assertTrue(os.path.isdir(top_dir)) + self.assertTrue(os.path.isdir(sub_dir)) + self.assertTrue(os.path.isfile(read_only_path)) + self.assertTrue(os.path.isfile(writable_path)) + self.assertTrue(os.path.isfile(executable_path)) + self.assertTrue(os.path.isfile(sub_read_only_path)) + self.assertTrue(os.path.isfile(sub_writable_path)) + self.assertTrue(os.path.isfile(sub_executable_path)) + + # assert permissions as expected + self.assertTrue( + stat.S_IRUSR & stat.S_IMODE(os.stat(read_only_path).st_mode)) + self.assertTrue( + stat.S_IRUSR & stat.S_IMODE(os.stat(sub_read_only_path).st_mode)) + self.assertTrue( + stat.S_IRUSR & stat.S_IMODE(os.stat(writable_path).st_mode)) + self.assertTrue( + stat.S_IWUSR & stat.S_IMODE(os.stat(writable_path).st_mode)) + self.assertTrue( + stat.S_IRUSR & stat.S_IMODE(os.stat(sub_writable_path).st_mode)) + self.assertTrue( + stat.S_IWUSR & stat.S_IMODE(os.stat(sub_writable_path).st_mode)) + if not sys.platform.startswith('win'): + self.assertEqual( + stat.S_IRWXU, + stat.S_IRWXU & stat.S_IMODE(os.stat(executable_path).st_mode)) + self.assertEqual( + stat.S_IRWXU, + stat.S_IRWXU & stat.S_IMODE(os.stat(sub_executable_path).st_mode)) + + def CreateZipArchiveFromDir(self, dir_path): + try: + base_path = os.path.join(tempfile.gettempdir(), str(uuid.uuid4())) + archive_path = shutil.make_archive(base_path, 'zip', dir_path) + self.assertTrue(os.path.exists(archive_path)) + self.assertTrue(zipfile.is_zipfile(archive_path)) + except: + if os.path.isfile(archive_path): + os.remove(archive_path) + raise + return archive_path + + def testRemoveDirWithSubDir(self): + dependency_manager_util.RemoveDir(self.tmp_dir) + + self.assertFalse(os.path.exists(self.tmp_dir)) + self.assertFalse(os.path.exists(self.sub_dir)) + self.assertFalse(os.path.exists(self.read_only_path)) + self.assertFalse(os.path.exists(self.writable_path)) + self.assertFalse(os.path.isfile(self.executable_path)) + self.assertFalse(os.path.exists(self.sub_read_only_path)) + self.assertFalse(os.path.exists(self.sub_writable_path)) + self.assertFalse(os.path.isfile(self.sub_executable_path)) + + def testUnzipFile(self): + self.AssertExpectedDirFiles(self.tmp_dir) + unzip_path = os.path.join(tempfile.gettempdir(), str(uuid.uuid4())) + dependency_manager_util.UnzipArchive(self.archive_path, unzip_path) + self.AssertExpectedDirFiles(unzip_path) + self.AssertExpectedDirFiles(self.tmp_dir) + dependency_manager_util.RemoveDir(unzip_path) + + def testUnzipFileContainingLongPath(self): + try: + dir_path = self.tmp_dir + if sys.platform.startswith('win'): + dir_path = u'\\\\?\\' + dir_path + + archive_suffix = '' + # 260 is the Windows API path length limit. + while len(archive_suffix) < 260: + archive_suffix = os.path.join(archive_suffix, 'really') + contents_dir_path = os.path.join(dir_path, archive_suffix) + os.makedirs(contents_dir_path) + filename = os.path.join(contents_dir_path, 'longpath.txt') + open(filename, 'a').close() + + base_path = os.path.join(tempfile.gettempdir(), str(uuid.uuid4())) + archive_path = shutil.make_archive(base_path, 'zip', dir_path) + self.assertTrue(os.path.exists(archive_path)) + self.assertTrue(zipfile.is_zipfile(archive_path)) + except: + if os.path.isfile(archive_path): + os.remove(archive_path) + raise + + unzip_path = os.path.join(tempfile.gettempdir(), str(uuid.uuid4())) + dependency_manager_util.UnzipArchive(archive_path, unzip_path) + dependency_manager_util.RemoveDir(unzip_path) + + def testUnzipFileFailure(self): + unzip_path = os.path.join(tempfile.gettempdir(), str(uuid.uuid4())) + self.assertFalse(os.path.exists(unzip_path)) + with mock.patch( + 'dependency_manager.dependency_manager_util.zipfile.ZipFile.extractall' # pylint: disable=line-too-long + ) as zipfile_mock: + zipfile_mock.side_effect = IOError + self.assertRaises( + IOError, dependency_manager_util.UnzipArchive, self.archive_path, + unzip_path) + self.AssertExpectedDirFiles(self.tmp_dir) + self.assertFalse(os.path.exists(unzip_path)) + + def testVerifySafeArchivePasses(self): + with zipfile.ZipFile(self.archive_path) as archive: + dependency_manager_util.VerifySafeArchive(archive) + + def testVerifySafeArchiveFailsOnRelativePathWithPardir(self): + tmp_file = tempfile.NamedTemporaryFile(delete=False) + tmp_file_name = tmp_file.name + tmp_file.write('Bad file!') + tmp_file.close() + with zipfile.ZipFile(self.archive_path, 'w') as archive: + archive.write(tmp_file_name, '../../foo') + self.assertRaises( + exceptions.ArchiveError, dependency_manager_util.VerifySafeArchive, + archive) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/exceptions.py b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/exceptions.py new file mode 100644 index 0000000..d7863db --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/exceptions.py @@ -0,0 +1,52 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +from py_utils import cloud_storage + + +CloudStorageError = cloud_storage.CloudStorageError + + +class UnsupportedConfigFormatError(ValueError): + def __init__(self, config_type, config_file): + if not config_type: + message = ('The json file at %s is unsupported by the dependency_manager ' + 'due to no specified config type' % config_file) + else: + message = ('The json file at %s has config type %s, which is unsupported ' + 'by the dependency manager.' % (config_file, config_type)) + super(UnsupportedConfigFormatError, self).__init__(message) + + +class EmptyConfigError(ValueError): + def __init__(self, file_path): + super(EmptyConfigError, self).__init__('Empty config at %s.' % file_path) + + +class FileNotFoundError(Exception): + def __init__(self, file_path): + super(FileNotFoundError, self).__init__('No file found at %s' % file_path) + + +class NoPathFoundError(Exception): + def __init__(self, dependency, platform): + super(NoPathFoundError, self).__init__( + 'No file could be found locally, and no file to download from cloud ' + 'storage for %s on platform %s' % (dependency, platform)) + + +class ReadWriteError(Exception): + pass + + +class CloudStorageUploadConflictError(CloudStorageError): + def __init__(self, bucket, path): + super(CloudStorageUploadConflictError, self).__init__( + 'File location %s already exists in bucket %s' % (path, bucket)) + + +class ArchiveError(Exception): + def __init__(self, msg): + super(ArchiveError, self).__init__(msg) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/local_path_info.py b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/local_path_info.py new file mode 100644 index 0000000..0103e8f --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/local_path_info.py @@ -0,0 +1,40 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os + + +class LocalPathInfo(object): + + def __init__(self, path_priority_groups): + self._path_priority_groups = self._ParseLocalPaths(path_priority_groups) + + def GetLocalPath(self): + for priority_group in self._path_priority_groups: + priority_group = filter(os.path.exists, priority_group) + if not priority_group: + continue + return max(priority_group, key=lambda path: os.stat(path).st_mtime) + return None + + def IsPathInLocalPaths(self, path): + return any( + path in priority_group for priority_group in self._path_priority_groups) + + def Update(self, local_path_info): + if not local_path_info: + return + for priority_group in local_path_info._path_priority_groups: + group_list = [] + for path in priority_group: + if not self.IsPathInLocalPaths(path): + group_list.append(path) + if group_list: + self._path_priority_groups.append(group_list) + + @staticmethod + def _ParseLocalPaths(local_paths): + if not local_paths: + return [] + return [[e] if isinstance(e, basestring) else e for e in local_paths] diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/manager.py b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/manager.py new file mode 100644 index 0000000..69ca550 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/manager.py @@ -0,0 +1,247 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import logging +import os + +from dependency_manager import base_config +from dependency_manager import exceptions + + +DEFAULT_TYPE = 'default' + + +class DependencyManager(object): + def __init__(self, configs, supported_config_types=None): + """Manages file dependencies found locally or in cloud_storage. + + Args: + configs: A list of instances of BaseConfig or it's subclasses, passed + in decreasing order of precedence. + supported_config_types: A list of whitelisted config_types. + No restrictions if None is specified. + + Raises: + ValueError: If |configs| is not a list of instances of BaseConfig or + its subclasses. + UnsupportedConfigFormatError: If supported_config_types is specified and + configs contains a config not in the supported config_types. + + Example: DependencyManager([config1, config2, config3]) + No requirements on the type of Config, and any dependencies that have + local files for the same platform will first look in those from + config1, then those from config2, and finally those from config3. + """ + if configs is None or type(configs) != list: + raise ValueError( + 'Must supply a list of config files to DependencyManager') + # self._lookup_dict is a dictionary with the following format: + # { dependency1: {platform1: dependency_info1, + # platform2: dependency_info2} + # dependency2: {platform1: dependency_info3, + # ...} + # ...} + # + # Where the dependencies and platforms are strings, and the + # dependency_info's are DependencyInfo instances. + self._lookup_dict = {} + self.supported_configs = supported_config_types or [] + for config in configs: + self._UpdateDependencies(config) + + + def FetchPathWithVersion(self, dependency, platform): + """Get a path to an executable for |dependency|, downloading as needed. + + A path to a default executable may be returned if a platform specific + version is not specified in the config(s). + + Args: + dependency: Name of the desired dependency, as given in the config(s) + used in this DependencyManager. + platform: Name of the platform the dependency will run on. Often of the + form 'os_architecture'. Must match those specified in the config(s) + used in this DependencyManager. + Returns: + <path>, <version> where: + <path> is the path to an executable of |dependency| that will run + on |platform|, downloading from cloud storage if needed. + <version> is the version of the executable at <path> or None. + + Raises: + NoPathFoundError: If a local copy of the executable cannot be found and + a remote path could not be downloaded from cloud_storage. + CredentialsError: If cloud_storage credentials aren't configured. + PermissionError: If cloud_storage credentials are configured, but not + with an account that has permission to download the remote file. + NotFoundError: If the remote file does not exist where expected in + cloud_storage. + ServerError: If an internal server error is hit while downloading the + remote file. + CloudStorageError: If another error occured while downloading the remote + path. + FileNotFoundError: If an attempted download was otherwise unsuccessful. + + """ + dependency_info = self._GetDependencyInfo(dependency, platform) + if not dependency_info: + raise exceptions.NoPathFoundError(dependency, platform) + path = dependency_info.GetLocalPath() + version = None + if not path or not os.path.exists(path): + path = dependency_info.GetRemotePath() + if not path or not os.path.exists(path): + raise exceptions.NoPathFoundError(dependency, platform) + version = dependency_info.GetRemotePathVersion() + return path, version + + def FetchPath(self, dependency, platform): + """Get a path to an executable for |dependency|, downloading as needed. + + A path to a default executable may be returned if a platform specific + version is not specified in the config(s). + + Args: + dependency: Name of the desired dependency, as given in the config(s) + used in this DependencyManager. + platform: Name of the platform the dependency will run on. Often of the + form 'os_architecture'. Must match those specified in the config(s) + used in this DependencyManager. + Returns: + A path to an executable of |dependency| that will run on |platform|, + downloading from cloud storage if needed. + + Raises: + NoPathFoundError: If a local copy of the executable cannot be found and + a remote path could not be downloaded from cloud_storage. + CredentialsError: If cloud_storage credentials aren't configured. + PermissionError: If cloud_storage credentials are configured, but not + with an account that has permission to download the remote file. + NotFoundError: If the remote file does not exist where expected in + cloud_storage. + ServerError: If an internal server error is hit while downloading the + remote file. + CloudStorageError: If another error occured while downloading the remote + path. + FileNotFoundError: If an attempted download was otherwise unsuccessful. + + """ + path, _ = self.FetchPathWithVersion(dependency, platform) + return path + + def LocalPath(self, dependency, platform): + """Get a path to a locally stored executable for |dependency|. + + A path to a default executable may be returned if a platform specific + version is not specified in the config(s). + Will not download the executable. + + Args: + dependency: Name of the desired dependency, as given in the config(s) + used in this DependencyManager. + platform: Name of the platform the dependency will run on. Often of the + form 'os_architecture'. Must match those specified in the config(s) + used in this DependencyManager. + Returns: + A path to an executable for |dependency| that will run on |platform|. + + Raises: + NoPathFoundError: If a local copy of the executable cannot be found. + """ + dependency_info = self._GetDependencyInfo(dependency, platform) + if not dependency_info: + raise exceptions.NoPathFoundError(dependency, platform) + local_path = dependency_info.GetLocalPath() + if not local_path or not os.path.exists(local_path): + raise exceptions.NoPathFoundError(dependency, platform) + return local_path + + def PrefetchPaths(self, platform, dependencies=None, cloud_storage_retries=3): + if not dependencies: + dependencies = self._lookup_dict.keys() + + skipped_deps = [] + found_deps = [] + missing_deps = [] + for dependency in dependencies: + dependency_info = self._GetDependencyInfo(dependency, platform) + if not dependency_info: + # The dependency is only configured for other platforms. + skipped_deps.append(dependency) + logging.warning( + 'Dependency %s not configured for platform %s. Skipping prefetch.', + dependency, platform) + continue + local_path = dependency_info.GetLocalPath() + if local_path: + found_deps.append(dependency) + continue + fetched_path = None + for _ in range(0, cloud_storage_retries + 1): + try: + fetched_path = dependency_info.GetRemotePath() + except exceptions.CloudStorageError: + continue + break + if fetched_path: + found_deps.append(dependency) + else: + missing_deps.append(dependency) + logging.error( + 'Dependency %s could not be found or fetched from cloud storage for' + ' platform %s.', dependency, platform) + if missing_deps: + raise exceptions.NoPathFoundError(', '.join(missing_deps), platform) + return (found_deps, skipped_deps) + + def _UpdateDependencies(self, config): + """Add the dependency information stored in |config| to this instance. + + Args: + config: An instances of BaseConfig or a subclasses. + + Raises: + UnsupportedConfigFormatError: If supported_config_types was specified + and config is not in the supported config_types. + """ + if not isinstance(config, base_config.BaseConfig): + raise ValueError('Must use a BaseConfig or subclass instance with the ' + 'DependencyManager.') + if (self.supported_configs and + config.GetConfigType() not in self.supported_configs): + raise exceptions.UnsupportedConfigFormatError(config.GetConfigType(), + config.config_path) + for dep_info in config.IterDependencyInfo(): + dependency = dep_info.dependency + platform = dep_info.platform + if dependency not in self._lookup_dict: + self._lookup_dict[dependency] = {} + if platform not in self._lookup_dict[dependency]: + self._lookup_dict[dependency][platform] = dep_info + else: + self._lookup_dict[dependency][platform].Update(dep_info) + + + def _GetDependencyInfo(self, dependency, platform): + """Get information for |dependency| on |platform|, or a default if needed. + + Args: + dependency: Name of the desired dependency, as given in the config(s) + used in this DependencyManager. + platform: Name of the platform the dependency will run on. Often of the + form 'os_architecture'. Must match those specified in the config(s) + used in this DependencyManager. + + Returns: The dependency_info for |dependency| on |platform| if it exists. + Or the default version of |dependency| if it exists, or None if neither + exist. + """ + if not self._lookup_dict or dependency not in self._lookup_dict: + return None + dependency_dict = self._lookup_dict[dependency] + device_type = platform + if not device_type in dependency_dict: + device_type = DEFAULT_TYPE + return dependency_dict.get(device_type) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/uploader.py b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/uploader.py new file mode 100644 index 0000000..e88b7c0 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/uploader.py @@ -0,0 +1,108 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import logging +import os + +from py_utils import cloud_storage + +from dependency_manager import exceptions + + +BACKUP_PATH_EXTENSION = 'old' + + +class CloudStorageUploader(object): + def __init__(self, bucket, remote_path, local_path, cs_backup_path=None): + if not bucket or not remote_path or not local_path: + raise ValueError( + 'Attempted to partially initialize upload data with bucket %s, ' + 'remote_path %s, and local_path %s', bucket, remote_path, local_path) + if not os.path.exists(local_path): + raise ValueError('Attempting to initilize UploadInfo with missing ' + 'local path %s', local_path) + + self._cs_bucket = bucket + self._cs_remote_path = remote_path + self._local_path = local_path + self._cs_backup_path = (cs_backup_path or + '%s.%s' % (self._cs_remote_path, + BACKUP_PATH_EXTENSION)) + self._updated = False + self._backed_up = False + + def Upload(self, force=False): + """Upload all pending files and then write the updated config to disk. + + Will attempt to copy files existing in the upload location to a backup + location in the same bucket in cloud storage if |force| is True. + + Args: + force: True if files should be uploaded to cloud storage even if a + file already exists in the upload location. + + Raises: + CloudStorageUploadConflictError: If |force| is False and the potential + upload location of a file already exists. + CloudStorageError: If copying an existing file to the backup location + or uploading the new file fails. + """ + if cloud_storage.Exists(self._cs_bucket, self._cs_remote_path): + if not force: + #pylint: disable=nonstandard-exception + raise exceptions.CloudStorageUploadConflictError(self._cs_bucket, + self._cs_remote_path) + #pylint: enable=nonstandard-exception + logging.debug('A file already exists at upload path %s in self.cs_bucket' + ' %s', self._cs_remote_path, self._cs_bucket) + try: + cloud_storage.Copy(self._cs_bucket, self._cs_bucket, + self._cs_remote_path, self._cs_backup_path) + self._backed_up = True + except cloud_storage.CloudStorageError: + logging.error('Failed to copy existing file %s in cloud storage bucket ' + '%s to backup location %s', self._cs_remote_path, + self._cs_bucket, self._cs_backup_path) + raise + + try: + cloud_storage.Insert( + self._cs_bucket, self._cs_remote_path, self._local_path) + except cloud_storage.CloudStorageError: + logging.error('Failed to upload %s to %s in cloud_storage bucket %s', + self._local_path, self._cs_remote_path, self._cs_bucket) + raise + self._updated = True + + def Rollback(self): + """Attempt to undo the previous call to Upload. + + Does nothing if no previous call to Upload was made, or if nothing was + successfully changed. + + Returns: + True iff changes were successfully rolled back. + Raises: + CloudStorageError: If copying the backed up file to its original + location or removing the uploaded file fails. + """ + cloud_storage_changed = False + if self._backed_up: + cloud_storage.Copy(self._cs_bucket, self._cs_bucket, self._cs_backup_path, + self._cs_remote_path) + cloud_storage_changed = True + self._cs_backup_path = None + elif self._updated: + cloud_storage.Delete(self._cs_bucket, self._cs_remote_path) + cloud_storage_changed = True + self._updated = False + return cloud_storage_changed + + def __eq__(self, other, msg=None): + if type(self) != type(other): + return False + return (self._local_path == other._local_path and + self._cs_remote_path == other._cs_remote_path and + self._cs_bucket == other._cs_bucket) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/uploader_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/uploader_unittest.py new file mode 100644 index 0000000..5c8e2a0 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/dependency_manager/uploader_unittest.py @@ -0,0 +1,91 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os + +from pyfakefs import fake_filesystem_unittest + +from dependency_manager import uploader + + +class CloudStorageUploaderTest(fake_filesystem_unittest.TestCase): + def setUp(self): + self.setUpPyfakefs() + self.bucket = 'cloud_storage_bucket' + self.local_path = os.path.abspath(os.path.join('path', 'to', 'dependency')) + self.fs.CreateFile(self.local_path) + self.remote_path = 'config_folder/remote_path' + + def testCloudStorageUploaderMissingData(self): + self.assertRaises(ValueError, uploader.CloudStorageUploader, + None, self.remote_path, self.local_path) + self.assertRaises(ValueError, uploader.CloudStorageUploader, + self.bucket, None, self.local_path) + self.assertRaises(ValueError, uploader.CloudStorageUploader, + self.bucket, self.remote_path, None) + + def testCloudStorageUploaderLocalFileMissing(self): + self.fs.RemoveObject(self.local_path) + self.assertRaises(ValueError, uploader.CloudStorageUploader, + self.bucket, self.remote_path, self.local_path) + + def testCloudStorageUploaderCreation(self): + upload_data = uploader.CloudStorageUploader( + self.bucket, self.remote_path, self.local_path) + expected_bucket = self.bucket + expected_remote_path = self.remote_path + expected_cs_backup_path = '%s.old' % expected_remote_path + expected_local_path = self.local_path + self.assertEqual(expected_bucket, upload_data._cs_bucket) + self.assertEqual(expected_remote_path, upload_data._cs_remote_path) + self.assertEqual(expected_local_path, upload_data._local_path) + self.assertEqual(expected_cs_backup_path, upload_data._cs_backup_path) + + def testCloudStorageUploaderEquality(self): + upload_data = uploader.CloudStorageUploader( + self.bucket, self.remote_path, self.local_path) + upload_data_exact = uploader.CloudStorageUploader( + self.bucket, self.remote_path, self.local_path) + upload_data_equal = uploader.CloudStorageUploader( + 'cloud_storage_bucket', + 'config_folder/remote_path', + os.path.abspath(os.path.join('path', 'to', 'dependency'))) + self.assertEqual(upload_data, upload_data) + self.assertEqual(upload_data, upload_data_exact) + self.assertEqual(upload_data_exact, upload_data) + self.assertEqual(upload_data, upload_data_equal) + self.assertEqual(upload_data_equal, upload_data) + + + def testCloudStorageUploaderInequality(self): + new_local_path = os.path.abspath(os.path.join('new', 'local', 'path')) + self.fs.CreateFile(new_local_path) + new_bucket = 'new_bucket' + new_remote_path = 'new_remote/path' + + upload_data = uploader.CloudStorageUploader( + self.bucket, self.remote_path, self.local_path) + upload_data_all_different = uploader.CloudStorageUploader( + new_bucket, new_remote_path, new_local_path) + upload_data_different_bucket = uploader.CloudStorageUploader( + new_bucket, self.remote_path, self.local_path) + upload_data_different_remote_path = uploader.CloudStorageUploader( + self.bucket, new_remote_path, self.local_path) + upload_data_different_local_path = uploader.CloudStorageUploader( + self.bucket, self.remote_path, new_local_path) + + self.assertNotEqual(upload_data, 'a string!') + self.assertNotEqual(upload_data, 0) + self.assertNotEqual(upload_data, 2354) + self.assertNotEqual(upload_data, None) + self.assertNotEqual(upload_data, upload_data_all_different) + self.assertNotEqual(upload_data_all_different, upload_data) + self.assertNotEqual(upload_data, upload_data_different_bucket) + self.assertNotEqual(upload_data_different_bucket, upload_data) + self.assertNotEqual(upload_data, upload_data_different_remote_path) + self.assertNotEqual(upload_data_different_remote_path, upload_data) + self.assertNotEqual(upload_data, upload_data_different_local_path) + self.assertNotEqual(upload_data_different_local_path, upload_data) + + #TODO: write unittests for upload and rollback diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/pylintrc b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/pylintrc new file mode 100644 index 0000000..4541fb8 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/dependency_manager/pylintrc @@ -0,0 +1,68 @@ +[MESSAGES CONTROL] + +# Disable the message, report, category or checker with the given id(s). +# TODO: Shrink this list to as small as possible. +disable= + design, + similarities, + + fixme, + locally-disabled, + locally-enabled, + missing-docstring, + no-member, + no-self-use, + protected-access, + star-args, + + +[REPORTS] + +# Don't write out full reports, just messages. +reports=no + + +[BASIC] + +# Regular expression which should only match correct function names. +function-rgx=^(?:(?P<exempt>setUp|tearDown|setUpModule|tearDownModule)|(?P<camel_case>_?[A-Z][a-zA-Z0-9]*))$ + +# Regular expression which should only match correct method names. +method-rgx=^(?:(?P<exempt>_[a-z0-9_]+__|get|post|runTest|setUp|tearDown|setUpTestCase|tearDownTestCase|setupSelf|tearDownClass|setUpClass)|(?P<camel_case>(_{0,2}|test|assert)[A-Z][a-zA-Z0-9_]*))$ + +# Regular expression which should only match correct argument names. +argument-rgx=^[a-z][a-z0-9_]*$ + +# Regular expression which should only match correct variable names. +variable-rgx=^[a-z][a-z0-9_]*$ + +# Good variable names which should always be accepted, separated by a comma. +good-names=main,_ + +# List of builtins function names that should not be used, separated by a comma. +bad-functions=apply,input,reduce + + +[VARIABLES] + +# Tells wether we should check for unused import in __init__ files. +init-import=no + +# A regular expression matching names used for dummy variables (i.e. not used). +dummy-variables-rgx=^\*{0,2}(_$|unused_) + + +[TYPECHECK] + +# Tells wether missing members accessed in mixin class should be ignored. A +# mixin class is detected if its name ends with "mixin" (case insensitive). +ignore-mixin-members=yes + + +[FORMAT] + +# Maximum number of lines in a module. +max-module-lines=2000 + +# We use two spaces for indents, instead of the usual four spaces or tab. +indent-string=' ' diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/PRESUBMIT.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/PRESUBMIT.py new file mode 100644 index 0000000..289a5c6 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/PRESUBMIT.py @@ -0,0 +1,81 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Presubmit script for devil. + +See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts for +details on the presubmit API built into depot_tools. +""" + + +def _RunPylint(input_api, output_api): + return input_api.RunTests(input_api.canned_checks.RunPylint( + input_api, output_api, pylintrc='pylintrc')) + + +def _RunUnitTests(input_api, output_api): + def J(*dirs): + """Returns a path relative to presubmit directory.""" + return input_api.os_path.join( + input_api.PresubmitLocalPath(), 'devil', *dirs) + + test_env = dict(input_api.environ) + test_env.update({ + 'PYTHONDONTWRITEBYTECODE': '1', + 'PYTHONPATH': ':'.join([J(), J('..')]), + }) + + message_type = (output_api.PresubmitError if input_api.is_committing + else output_api.PresubmitPromptWarning) + + return input_api.RunTests([ + input_api.Command( + name='devil/bin/run_py_tests', + cmd=[ + input_api.os_path.join( + input_api.PresubmitLocalPath(), 'bin', 'run_py_tests')], + kwargs={'env': test_env}, + message=message_type)]) + + +def _EnsureNoPylibUse(input_api, output_api): + def other_python_files(f): + this_presubmit_file = input_api.os_path.join( + input_api.PresubmitLocalPath(), 'PRESUBMIT.py') + return (f.LocalPath().endswith('.py') + and not f.AbsoluteLocalPath() == this_presubmit_file) + + changed_files = input_api.AffectedSourceFiles(other_python_files) + import_error_re = input_api.re.compile( + r'(from pylib.* import)|(import pylib)') + + errors = [] + for f in changed_files: + errors.extend( + '%s:%d' % (f.LocalPath(), line_number) + for line_number, line_text in f.ChangedContents() + if import_error_re.search(line_text)) + + if errors: + return [output_api.PresubmitError( + 'pylib modules should not be imported from devil modules.', + items=errors)] + return [] + + +def CommonChecks(input_api, output_api): + output = [] + output += _RunPylint(input_api, output_api) + output += _RunUnitTests(input_api, output_api) + output += _EnsureNoPylibUse(input_api, output_api) + return output + + +def CheckChangeOnUpload(input_api, output_api): + return CommonChecks(input_api, output_api) + + +def CheckChangeOnCommit(input_api, output_api): + return CommonChecks(input_api, output_api) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/README.md b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/README.md new file mode 100644 index 0000000..852ac37 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/README.md @@ -0,0 +1,37 @@ +<!-- Copyright 2015 The Chromium Authors. All rights reserved. + Use of this source code is governed by a BSD-style license that can be + found in the LICENSE file. +--> +## devil + +😈 + +devil is a library used by the Chromium developers to interact with Android +devices. It currently supports SDK level 16 and above. + +## Interfaces + +devil provides python APIs: + - [`devil.android.adb_wrapper`](docs/adb_wrapper.md) provides a thin wrapper + around the adb binary. Most functions and methods have direct analogues on + the adb command-line. + - [`devil.android.device_utils`](docs/device_utils.md) provides higher-level + functionality built on top of `adb_wrapper`. **This is the primary + mechanism through which chromium's scripts interact with devices.** + +## Utilities + +devil also provides command-line utilities: + - [`devil/utils/markdown.py`](docs/markdown.md) generated markdown + documentation for python modules. + +## Constraints and Caveats + +devil is used with python 2.7. Its compatibility with python 3 has not been +tested, and neither achieving nor maintaining said compatibility is currently +a priority. + +## Contributing + +Please see the [contributor's guide](https://github.com/catapult-project/catapult/blob/master/CONTRIBUTING.md). + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/__init__.py new file mode 100644 index 0000000..7de59c9 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/__init__.py @@ -0,0 +1,7 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import logging + +logging.getLogger('devil').addHandler(logging.NullHandler()) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/__init__.py new file mode 100644 index 0000000..50b23df --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/__init__.py @@ -0,0 +1,3 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/apk_helper.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/apk_helper.py new file mode 100644 index 0000000..1a9b8c5 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/apk_helper.py @@ -0,0 +1,164 @@ +# Copyright (c) 2013 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Module containing utilities for apk packages.""" + +import itertools +import re + +from devil import base_error +from devil.android.sdk import aapt + + +_MANIFEST_ATTRIBUTE_RE = re.compile( + r'\s*A: ([^\(\)= ]*)(?:\([^\(\)= ]*\))?=' + r'(?:"(.*)" \(Raw: .*\)|\(type.*?\)(.*))$') +_MANIFEST_ELEMENT_RE = re.compile(r'\s*(?:E|N): (\S*) .*$') + + +def GetPackageName(apk_path): + """Returns the package name of the apk.""" + return ApkHelper(apk_path).GetPackageName() + + +# TODO(jbudorick): Deprecate and remove this function once callers have been +# converted to ApkHelper.GetInstrumentationName +def GetInstrumentationName(apk_path): + """Returns the name of the Instrumentation in the apk.""" + return ApkHelper(apk_path).GetInstrumentationName() + + +def ToHelper(path_or_helper): + """Creates an ApkHelper unless one is already given.""" + if isinstance(path_or_helper, basestring): + return ApkHelper(path_or_helper) + return path_or_helper + + +def _ParseManifestFromApk(apk_path): + aapt_output = aapt.Dump('xmltree', apk_path, 'AndroidManifest.xml') + + parsed_manifest = {} + node_stack = [parsed_manifest] + indent = ' ' + + for line in aapt_output[1:]: + if len(line) == 0: + continue + + indent_depth = 0 + while line[(len(indent) * indent_depth):].startswith(indent): + indent_depth += 1 + + node_stack = node_stack[:indent_depth] + node = node_stack[-1] + + m = _MANIFEST_ELEMENT_RE.match(line[len(indent) * indent_depth:]) + if m: + manifest_key = m.group(1) + if manifest_key in node: + node[manifest_key] += [{}] + else: + node[manifest_key] = [{}] + node_stack += [node[manifest_key][-1]] + continue + + m = _MANIFEST_ATTRIBUTE_RE.match(line[len(indent) * indent_depth:]) + if m: + manifest_key = m.group(1) + if manifest_key in node: + raise base_error.BaseError( + "A single attribute should have one key and one value") + else: + node[manifest_key] = m.group(2) or m.group(3) + continue + + return parsed_manifest + + +class ApkHelper(object): + + def __init__(self, path): + self._apk_path = path + self._manifest = None + + @property + def path(self): + return self._apk_path + + def GetActivityName(self): + """Returns the name of the Activity in the apk.""" + manifest_info = self._GetManifest() + try: + activity = ( + manifest_info['manifest'][0]['application'][0]['activity'][0] + ['android:name']) + except KeyError: + return None + if '.' not in activity: + activity = '%s.%s' % (self.GetPackageName(), activity) + elif activity.startswith('.'): + activity = '%s%s' % (self.GetPackageName(), activity) + return activity + + def GetInstrumentationName( + self, default='android.test.InstrumentationTestRunner'): + """Returns the name of the Instrumentation in the apk.""" + all_instrumentations = self.GetAllInstrumentations(default=default) + if len(all_instrumentations) != 1: + raise base_error.BaseError( + 'There is more than one instrumentation. Expected one.') + else: + return all_instrumentations[0]['android:name'] + + def GetAllInstrumentations( + self, default='android.test.InstrumentationTestRunner'): + """Returns a list of all Instrumentations in the apk.""" + try: + return self._GetManifest()['manifest'][0]['instrumentation'] + except KeyError: + return [{'android:name': default}] + + def GetPackageName(self): + """Returns the package name of the apk.""" + manifest_info = self._GetManifest() + try: + return manifest_info['manifest'][0]['package'] + except KeyError: + raise Exception('Failed to determine package name of %s' % self._apk_path) + + def GetPermissions(self): + manifest_info = self._GetManifest() + try: + return [p['android:name'] for + p in manifest_info['manifest'][0]['uses-permission']] + except KeyError: + return [] + + def GetSplitName(self): + """Returns the name of the split of the apk.""" + manifest_info = self._GetManifest() + try: + return manifest_info['manifest'][0]['split'] + except KeyError: + return None + + def HasIsolatedProcesses(self): + """Returns whether any services exist that use isolatedProcess=true.""" + manifest_info = self._GetManifest() + try: + applications = manifest_info['manifest'][0].get('application', []) + services = itertools.chain( + *(application.get('service', []) for application in applications)) + return any( + int(s.get('android:isolatedProcess', '0'), 0) + for s in services) + except KeyError: + return False + + def _GetManifest(self): + if not self._manifest: + self._manifest = _ParseManifestFromApk(self._apk_path) + return self._manifest + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/apk_helper_test.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/apk_helper_test.py new file mode 100644 index 0000000..f7d077d --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/apk_helper_test.py @@ -0,0 +1,169 @@ +#! /usr/bin/env python +# Copyright 2017 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +from devil import base_error +from devil import devil_env +from devil.android import apk_helper +from devil.utils import mock_calls + +with devil_env.SysPath(devil_env.PYMOCK_PATH): + import mock # pylint: disable=import-error + + +_MANIFEST_DUMP = """N: android=http://schemas.android.com/apk/res/android + E: manifest (line=1) + A: package="org.chromium.abc" (Raw: "org.chromium.abc") + A: split="random_split" (Raw: "random_split") + E: uses-permission (line=2) + A: android:name(0x01010003)="android.permission.INTERNET" (Raw: "android.permission.INTERNET") + E: uses-permission (line=3) + A: android:name(0x01010003)="android.permission.READ_EXTERNAL_STORAGE" (Raw: "android.permission.READ_EXTERNAL_STORAGE") + E: uses-permission (line=4) + A: android:name(0x01010003)="android.permission.ACCESS_FINE_LOCATION" (Raw: "android.permission.ACCESS_FINE_LOCATION") + E: application (line=5) + E: activity (line=6) + A: android:name(0x01010003)="org.chromium.ActivityName" (Raw: "org.chromium.ActivityName") + A: android:exported(0x01010010)=(type 0x12)0xffffffff + E: service (line=7) + A: android:name(0x01010001)="org.chromium.RandomService" (Raw: "org.chromium.RandomService") + A: android:isolatedProcess(0x01010888)=(type 0x12)0xffffffff + E: instrumentation (line=8) + A: android:label(0x01010001)="abc" (Raw: "abc") + A: android:name(0x01010003)="org.chromium.RandomJUnit4TestRunner" (Raw: "org.chromium.RandomJUnit4TestRunner") + A: android:targetPackage(0x01010021)="org.chromium.random_package" (Raw:"org.chromium.random_pacakge") + A: junit4=(type 0x12)0xffffffff (Raw: "true") + E: instrumentation (line=9) + A: android:label(0x01010001)="abc" (Raw: "abc") + A: android:name(0x01010003)="org.chromium.RandomTestRunner" (Raw: "org.chromium.RandomTestRunner") + A: android:targetPackage(0x01010021)="org.chromium.random_package" (Raw:"org.chromium.random_pacakge") +""" + +_NO_ISOLATED_SERVICES = """N: android=http://schemas.android.com/apk/res/android + E: manifest (line=1) + A: package="org.chromium.abc" (Raw: "org.chromium.abc") + E: application (line=5) + E: activity (line=6) + A: android:name(0x01010003)="org.chromium.ActivityName" (Raw: "org.chromium.ActivityName") + A: android:exported(0x01010010)=(type 0x12)0xffffffff + E: service (line=7) + A: android:name(0x01010001)="org.chromium.RandomService" (Raw: "org.chromium.RandomService") +""" + +_NO_SERVICES = """N: android=http://schemas.android.com/apk/res/android + E: manifest (line=1) + A: package="org.chromium.abc" (Raw: "org.chromium.abc") + E: application (line=5) + E: activity (line=6) + A: android:name(0x01010003)="org.chromium.ActivityName" (Raw: "org.chromium.ActivityName") + A: android:exported(0x01010010)=(type 0x12)0xffffffff +""" + +_NO_APPLICATION = """N: android=http://schemas.android.com/apk/res/android + E: manifest (line=1) + A: package="org.chromium.abc" (Raw: "org.chromium.abc") +""" + +_SINGLE_INSTRUMENTATION_MANIFEST_DUMP = """N: android=http://schemas.android.com/apk/res/android + E: manifest (line=1) + A: package="org.chromium.xyz" (Raw: "org.chromium.xyz") + E: instrumentation (line=8) + A: android:label(0x01010001)="xyz" (Raw: "xyz") + A: android:name(0x01010003)="org.chromium.RandomTestRunner" (Raw: "org.chromium.RandomTestRunner") + A: android:targetPackage(0x01010021)="org.chromium.random_package" (Raw:"org.chromium.random_pacakge") +""" + +_SINGLE_J4_INSTRUMENTATION_MANIFEST_DUMP = """N: android=http://schemas.android.com/apk/res/android + E: manifest (line=1) + A: package="org.chromium.xyz" (Raw: "org.chromium.xyz") + E: instrumentation (line=8) + A: android:label(0x01010001)="xyz" (Raw: "xyz") + A: android:name(0x01010003)="org.chromium.RandomJ4TestRunner" (Raw: "org.chromium.RandomJ4TestRunner") + A: android:targetPackage(0x01010021)="org.chromium.random_package" (Raw:"org.chromium.random_pacakge") + A: junit4=(type 0x12)0xffffffff (Raw: "true") +""" + + +def _MockAaptDump(manifest_dump): + return mock.patch( + 'devil.android.sdk.aapt.Dump', + mock.Mock(side_effect=None, return_value=manifest_dump.split('\n'))) + +class ApkHelperTest(mock_calls.TestCase): + + def testGetInstrumentationName(self): + with _MockAaptDump(_MANIFEST_DUMP): + helper = apk_helper.ApkHelper("") + with self.assertRaises(base_error.BaseError): + helper.GetInstrumentationName() + + def testGetActivityName(self): + with _MockAaptDump(_MANIFEST_DUMP): + helper = apk_helper.ApkHelper("") + self.assertEquals( + helper.GetActivityName(), 'org.chromium.ActivityName') + + def testGetAllInstrumentations(self): + with _MockAaptDump(_MANIFEST_DUMP): + helper = apk_helper.ApkHelper("") + all_instrumentations = helper.GetAllInstrumentations() + self.assertEquals(len(all_instrumentations), 2) + self.assertEquals(all_instrumentations[0]['android:name'], + 'org.chromium.RandomJUnit4TestRunner') + self.assertEquals(all_instrumentations[1]['android:name'], + 'org.chromium.RandomTestRunner') + + def testGetPackageName(self): + with _MockAaptDump(_MANIFEST_DUMP): + helper = apk_helper.ApkHelper("") + self.assertEquals(helper.GetPackageName(), 'org.chromium.abc') + + def testGetPermssions(self): + with _MockAaptDump(_MANIFEST_DUMP): + helper = apk_helper.ApkHelper("") + all_permissions = helper.GetPermissions() + self.assertEquals(len(all_permissions), 3) + self.assertTrue('android.permission.INTERNET' in all_permissions) + self.assertTrue( + 'android.permission.READ_EXTERNAL_STORAGE' in all_permissions) + self.assertTrue( + 'android.permission.ACCESS_FINE_LOCATION' in all_permissions) + + def testGetSplitName(self): + with _MockAaptDump(_MANIFEST_DUMP): + helper = apk_helper.ApkHelper("") + self.assertEquals(helper.GetSplitName(), 'random_split') + + def testHasIsolatedProcesses_noApplication(self): + with _MockAaptDump(_NO_APPLICATION): + helper = apk_helper.ApkHelper("") + self.assertFalse(helper.HasIsolatedProcesses()) + + def testHasIsolatedProcesses_noServices(self): + with _MockAaptDump(_NO_SERVICES): + helper = apk_helper.ApkHelper("") + self.assertFalse(helper.HasIsolatedProcesses()) + + def testHasIsolatedProcesses_oneNotIsolatedProcess(self): + with _MockAaptDump(_NO_ISOLATED_SERVICES): + helper = apk_helper.ApkHelper("") + self.assertFalse(helper.HasIsolatedProcesses()) + + def testHasIsolatedProcesses_oneIsolatedProcess(self): + with _MockAaptDump(_MANIFEST_DUMP): + helper = apk_helper.ApkHelper("") + self.assertTrue(helper.HasIsolatedProcesses()) + + def testGetSingleInstrumentationName(self): + with _MockAaptDump(_SINGLE_INSTRUMENTATION_MANIFEST_DUMP): + helper = apk_helper.ApkHelper("") + self.assertEquals('org.chromium.RandomTestRunner', + helper.GetInstrumentationName()) + + def testGetSingleJUnit4InstrumentationName(self): + with _MockAaptDump(_SINGLE_J4_INSTRUMENTATION_MANIFEST_DUMP): + helper = apk_helper.ApkHelper("") + self.assertEquals('org.chromium.RandomJ4TestRunner', + helper.GetInstrumentationName()) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/app_ui.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/app_ui.py new file mode 100644 index 0000000..2b04e8b --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/app_ui.py @@ -0,0 +1,243 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Provides functionality to interact with UI elements of an Android app.""" + +import collections +import re +from xml.etree import ElementTree as element_tree + +from devil.android import decorators +from devil.android import device_temp_file +from devil.utils import geometry +from devil.utils import timeout_retry + +_DEFAULT_SHORT_TIMEOUT = 10 +_DEFAULT_SHORT_RETRIES = 3 +_DEFAULT_LONG_TIMEOUT = 30 +_DEFAULT_LONG_RETRIES = 0 + +# Parse rectangle bounds given as: '[left,top][right,bottom]'. +_RE_BOUNDS = re.compile( + r'\[(?P<left>\d+),(?P<top>\d+)\]\[(?P<right>\d+),(?P<bottom>\d+)\]') + + +class _UiNode(object): + + def __init__(self, device, xml_node, package=None): + """Object to interact with a UI node from an xml snapshot. + + Note: there is usually no need to call this constructor directly. Instead, + use an AppUi object (below) to grab an xml screenshot from a device and + find nodes in it. + + Args: + device: A device_utils.DeviceUtils instance. + xml_node: An ElementTree instance of the node to interact with. + package: An optional package name for the app owning this node. + """ + self._device = device + self._xml_node = xml_node + self._package = package + + def _GetAttribute(self, key): + """Get the value of an attribute of this node.""" + return self._xml_node.attrib.get(key) + + @property + def bounds(self): + """Get a rectangle with the bounds of this UI node. + + Returns: + A geometry.Rectangle instance. + """ + d = _RE_BOUNDS.match(self._GetAttribute('bounds')).groupdict() + return geometry.Rectangle.FromDict({k: int(v) for k, v in d.iteritems()}) + + def Tap(self, point=None, dp_units=False): + """Send a tap event to the UI node. + + Args: + point: An optional geometry.Point instance indicating the location to + tap, relative to the bounds of the UI node, i.e. (0, 0) taps the + top-left corner. If ommited, the center of the node is tapped. + dp_units: If True, indicates that the coordinates of the point are given + in device-independent pixels; otherwise they are assumed to be "real" + pixels. This option has no effect when the point is ommited. + """ + if point is None: + point = self.bounds.center + else: + if dp_units: + point = (float(self._device.pixel_density) / 160) * point + point += self.bounds.top_left + + x, y = (str(int(v)) for v in point) + self._device.RunShellCommand(['input', 'tap', x, y], check_return=True) + + def Dump(self): + """Get a brief summary of the child nodes that can be found on this node. + + Returns: + A list of lines that can be logged or otherwise printed. + """ + summary = collections.defaultdict(set) + for node in self._xml_node.iter(): + package = node.get('package') or '(no package)' + label = node.get('resource-id') or '(no id)' + text = node.get('text') + if text: + label = '%s[%r]' % (label, text) + summary[package].add(label) + lines = [] + for package, labels in sorted(summary.iteritems()): + lines.append('- %s:' % package) + for label in sorted(labels): + lines.append(' - %s' % label) + return lines + + def __getitem__(self, key): + """Retrieve a child of this node by its index. + + Args: + key: An integer with the index of the child to retrieve. + Returns: + A UI node instance of the selected child. + Raises: + IndexError if the index is out of range. + """ + return type(self)(self._device, self._xml_node[key], package=self._package) + + def _Find(self, **kwargs): + """Find the first descendant node that matches a given criteria. + + Note: clients would usually call AppUi.GetUiNode or AppUi.WaitForUiNode + instead. + + For example: + + app = app_ui.AppUi(device, package='org.my.app') + app.GetUiNode(resource_id='some_element', text='hello') + + would retrieve the first matching node with both of the xml attributes: + + resource-id='org.my.app:id/some_element' + text='hello' + + As the example shows, if given and needed, the value of the resource_id key + is auto-completed with the package name specified in the AppUi constructor. + + Args: + Arguments are specified as key-value pairs, where keys correnspond to + attribute names in xml nodes (replacing any '-' with '_' to make them + valid identifiers). At least one argument must be supplied, and arguments + with a None value are ignored. + Returns: + A UI node instance of the first descendant node that matches ALL the + given key-value criteria; or None if no such node is found. + Raises: + TypeError if no search arguments are provided. + """ + matches_criteria = self._NodeMatcher(kwargs) + for node in self._xml_node.iter(): + if matches_criteria(node): + return type(self)(self._device, node, package=self._package) + return None + + def _NodeMatcher(self, kwargs): + # Auto-complete resource-id's using the package name if available. + resource_id = kwargs.get('resource_id') + if (resource_id is not None + and self._package is not None + and ':id/' not in resource_id): + kwargs['resource_id'] = '%s:id/%s' % (self._package, resource_id) + + criteria = [(k.replace('_', '-'), v) + for k, v in kwargs.iteritems() + if v is not None] + if not criteria: + raise TypeError('At least one search criteria should be specified') + return lambda node: all(node.get(k) == v for k, v in criteria) + + +class AppUi(object): + # timeout and retry arguments appear unused, but are handled by decorator. + # pylint: disable=unused-argument + + def __init__(self, device, package=None): + """Object to interact with the UI of an Android app. + + Args: + device: A device_utils.DeviceUtils instance. + package: An optional package name for the app. + """ + self._device = device + self._package = package + + @property + def package(self): + return self._package + + @decorators.WithTimeoutAndRetriesDefaults(_DEFAULT_SHORT_TIMEOUT, + _DEFAULT_SHORT_RETRIES) + def _GetRootUiNode(self, timeout=None, retries=None): + """Get a node pointing to the root of the UI nodes on screen. + + Note: This is currently implemented via adb calls to uiatomator and it + is *slow*, ~2 secs per call. Do not rely on low-level implementation + details that may change in the future. + + TODO(crbug.com/567217): Swap to a more efficient implementation. + + Args: + timeout: A number of seconds to wait for the uiautomator dump. + retries: Number of times to retry if the adb command fails. + Returns: + A UI node instance pointing to the root of the xml screenshot. + """ + with device_temp_file.DeviceTempFile(self._device.adb) as dtemp: + self._device.RunShellCommand(['uiautomator', 'dump', dtemp.name], + check_return=True) + xml_node = element_tree.fromstring( + self._device.ReadFile(dtemp.name, force_pull=True)) + return _UiNode(self._device, xml_node, package=self._package) + + def ScreenDump(self): + """Get a brief summary of the nodes that can be found on the screen. + + Returns: + A list of lines that can be logged or otherwise printed. + """ + return self._GetRootUiNode().Dump() + + def GetUiNode(self, **kwargs): + """Get the first node found matching a specified criteria. + + Args: + See _UiNode._Find. + Returns: + A UI node instance of the node if found, otherwise None. + """ + # pylint: disable=protected-access + return self._GetRootUiNode()._Find(**kwargs) + + @decorators.WithTimeoutAndRetriesDefaults(_DEFAULT_LONG_TIMEOUT, + _DEFAULT_LONG_RETRIES) + def WaitForUiNode(self, timeout=None, retries=None, **kwargs): + """Wait for a node matching a given criteria to appear on the screen. + + Args: + timeout: A number of seconds to wait for the matching node to appear. + retries: Number of times to retry in case of adb command errors. + For other args, to specify the search criteria, see _UiNode._Find. + Returns: + The UI node instance found. + Raises: + device_errors.CommandTimeoutError if the node is not found before the + timeout. + """ + def node_found(): + return self.GetUiNode(**kwargs) + + return timeout_retry.WaitFor(node_found) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/app_ui_test.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/app_ui_test.py new file mode 100644 index 0000000..3472985 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/app_ui_test.py @@ -0,0 +1,191 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Unit tests for the app_ui module.""" + +import unittest +from xml.etree import ElementTree as element_tree + +from devil import devil_env +from devil.android import app_ui +from devil.android import device_errors +from devil.utils import geometry + +with devil_env.SysPath(devil_env.PYMOCK_PATH): + import mock # pylint: disable=import-error + + +MOCK_XML_LOADING = ''' +<?xml version='1.0' encoding='UTF-8' standalone='yes' ?> +<hierarchy rotation="0"> + <node bounds="[0,50][1536,178]" content-desc="Loading" + resource-id="com.example.app:id/spinner"/> +</hierarchy> +'''.strip() + + +MOCK_XML_LOADED = ''' +<?xml version='1.0' encoding='UTF-8' standalone='yes' ?> +<hierarchy rotation="0"> + <node bounds="[0,50][1536,178]" content-desc="" + resource-id="com.example.app:id/toolbar"> + <node bounds="[0,58][112,170]" content-desc="Open navigation drawer"/> + <node bounds="[121,50][1536,178]" + resource-id="com.example.app:id/actionbar_custom_view"> + <node bounds="[121,50][1424,178]" + resource-id="com.example.app:id/actionbar_title" text="Primary"/> + <node bounds="[1424,50][1536,178]" content-desc="Search" + resource-id="com.example.app:id/actionbar_search_button"/> + </node> + </node> + <node bounds="[0,178][576,1952]" resource-id="com.example.app:id/drawer"> + <node bounds="[0,178][144,1952]" + resource-id="com.example.app:id/mini_drawer"> + <node bounds="[40,254][104,318]" resource-id="com.example.app:id/avatar"/> + <node bounds="[16,354][128,466]" content-desc="Primary" + resource-id="com.example.app:id/image_view"/> + <node bounds="[16,466][128,578]" content-desc="Social" + resource-id="com.example.app:id/image_view"/> + <node bounds="[16,578][128,690]" content-desc="Promotions" + resource-id="com.example.app:id/image_view"/> + </node> + </node> +</hierarchy> +'''.strip() + + +class UiAppTest(unittest.TestCase): + + def setUp(self): + self.device = mock.Mock() + self.device.pixel_density = 320 # Each dp pixel is 2 real pixels. + self.app = app_ui.AppUi(self.device, package='com.example.app') + self._setMockXmlScreenshots([MOCK_XML_LOADED]) + + def _setMockXmlScreenshots(self, xml_docs): + """Mock self.app._GetRootUiNode to load nodes from some test xml_docs. + + Each time the method is called it will return a UI node for each string + given in |xml_docs|, or rise a time out error when the list is exhausted. + """ + # pylint: disable=protected-access + def get_mock_root_ui_node(value): + if isinstance(value, Exception): + raise value + return app_ui._UiNode( + self.device, element_tree.fromstring(value), self.app.package) + + xml_docs.append(device_errors.CommandTimeoutError('Timed out!')) + + self.app._GetRootUiNode = mock.Mock( + side_effect=(get_mock_root_ui_node(doc) for doc in xml_docs)) + + def assertNodeHasAttribs(self, node, attr): + # pylint: disable=protected-access + for key, value in attr.iteritems(): + self.assertEquals(node._GetAttribute(key), value) + + def assertTappedOnceAt(self, x, y): + self.device.RunShellCommand.assert_called_once_with( + ['input', 'tap', str(x), str(y)], check_return=True) + + def testFind_byText(self): + node = self.app.GetUiNode(text='Primary') + self.assertNodeHasAttribs(node, { + 'text': 'Primary', + 'content-desc': None, + 'resource-id': 'com.example.app:id/actionbar_title', + }) + self.assertEquals(node.bounds, geometry.Rectangle([121, 50], [1424, 178])) + + def testFind_byContentDesc(self): + node = self.app.GetUiNode(content_desc='Social') + self.assertNodeHasAttribs(node, { + 'text': None, + 'content-desc': 'Social', + 'resource-id': 'com.example.app:id/image_view', + }) + self.assertEquals(node.bounds, geometry.Rectangle([16, 466], [128, 578])) + + def testFind_byResourceId_autocompleted(self): + node = self.app.GetUiNode(resource_id='image_view') + self.assertNodeHasAttribs(node, { + 'content-desc': 'Primary', + 'resource-id': 'com.example.app:id/image_view', + }) + + def testFind_byResourceId_absolute(self): + node = self.app.GetUiNode(resource_id='com.example.app:id/image_view') + self.assertNodeHasAttribs(node, { + 'content-desc': 'Primary', + 'resource-id': 'com.example.app:id/image_view', + }) + + def testFind_byMultiple(self): + node = self.app.GetUiNode(resource_id='image_view', + content_desc='Promotions') + self.assertNodeHasAttribs(node, { + 'content-desc': 'Promotions', + 'resource-id': 'com.example.app:id/image_view', + }) + self.assertEquals(node.bounds, geometry.Rectangle([16, 578], [128, 690])) + + def testFind_notFound(self): + node = self.app.GetUiNode(resource_id='does_not_exist') + self.assertIsNone(node) + + def testFind_noArgsGiven(self): + # Same exception given by Python for a function call with not enough args. + with self.assertRaises(TypeError): + self.app.GetUiNode() + + def testGetChildren(self): + node = self.app.GetUiNode(resource_id='mini_drawer') + self.assertNodeHasAttribs( + node[0], {'resource-id': 'com.example.app:id/avatar'}) + self.assertNodeHasAttribs(node[1], {'content-desc': 'Primary'}) + self.assertNodeHasAttribs(node[2], {'content-desc': 'Social'}) + self.assertNodeHasAttribs(node[3], {'content-desc': 'Promotions'}) + with self.assertRaises(IndexError): + # pylint: disable=pointless-statement + node[4] + + def testTap_center(self): + node = self.app.GetUiNode(content_desc='Open navigation drawer') + node.Tap() + self.assertTappedOnceAt(56, 114) + + def testTap_topleft(self): + node = self.app.GetUiNode(content_desc='Open navigation drawer') + node.Tap(geometry.Point(0, 0)) + self.assertTappedOnceAt(0, 58) + + def testTap_withOffset(self): + node = self.app.GetUiNode(content_desc='Open navigation drawer') + node.Tap(geometry.Point(10, 20)) + self.assertTappedOnceAt(10, 78) + + def testTap_withOffsetInDp(self): + node = self.app.GetUiNode(content_desc='Open navigation drawer') + node.Tap(geometry.Point(10, 20), dp_units=True) + self.assertTappedOnceAt(20, 98) + + def testTap_dpUnitsIgnored(self): + node = self.app.GetUiNode(content_desc='Open navigation drawer') + node.Tap(dp_units=True) + self.assertTappedOnceAt(56, 114) # Still taps at center. + + @mock.patch('time.sleep', mock.Mock()) + def testWaitForUiNode_found(self): + self._setMockXmlScreenshots( + [MOCK_XML_LOADING, MOCK_XML_LOADING, MOCK_XML_LOADED]) + node = self.app.WaitForUiNode(resource_id='actionbar_title') + self.assertNodeHasAttribs(node, {'text': 'Primary'}) + + @mock.patch('time.sleep', mock.Mock()) + def testWaitForUiNode_notFound(self): + self._setMockXmlScreenshots( + [MOCK_XML_LOADING, MOCK_XML_LOADING, MOCK_XML_LOADING]) + with self.assertRaises(device_errors.CommandTimeoutError): + self.app.WaitForUiNode(resource_id='actionbar_title') diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/battery_utils.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/battery_utils.py new file mode 100644 index 0000000..068c187 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/battery_utils.py @@ -0,0 +1,711 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Provides a variety of device interactions with power. +""" +# pylint: disable=unused-argument + +import collections +import contextlib +import csv +import logging + +from devil.android import decorators +from devil.android import device_errors +from devil.android import device_utils +from devil.android.sdk import version_codes +from devil.utils import timeout_retry + +logger = logging.getLogger(__name__) + +_DEFAULT_TIMEOUT = 30 +_DEFAULT_RETRIES = 3 + + +_DEVICE_PROFILES = [ + { + 'name': ['Nexus 4'], + 'enable_command': ( + 'echo 0 > /sys/module/pm8921_charger/parameters/disabled && ' + 'dumpsys battery reset'), + 'disable_command': ( + 'echo 1 > /sys/module/pm8921_charger/parameters/disabled && ' + 'dumpsys battery set ac 0 && dumpsys battery set usb 0'), + 'charge_counter': None, + 'voltage': None, + 'current': None, + }, + { + 'name': ['Nexus 5'], + # Nexus 5 + # Setting the HIZ bit of the bq24192 causes the charger to actually ignore + # energy coming from USB. Setting the power_supply offline just updates the + # Android system to reflect that. + 'enable_command': ( + 'echo 0x4A > /sys/kernel/debug/bq24192/INPUT_SRC_CONT && ' + 'chmod 644 /sys/class/power_supply/usb/online && ' + 'echo 1 > /sys/class/power_supply/usb/online && ' + 'dumpsys battery reset'), + 'disable_command': ( + 'echo 0xCA > /sys/kernel/debug/bq24192/INPUT_SRC_CONT && ' + 'chmod 644 /sys/class/power_supply/usb/online && ' + 'echo 0 > /sys/class/power_supply/usb/online && ' + 'dumpsys battery set ac 0 && dumpsys battery set usb 0'), + 'charge_counter': None, + 'voltage': None, + 'current': None, + }, + { + 'name': ['Nexus 6'], + 'enable_command': ( + 'echo 1 > /sys/class/power_supply/battery/charging_enabled && ' + 'dumpsys battery reset'), + 'disable_command': ( + 'echo 0 > /sys/class/power_supply/battery/charging_enabled && ' + 'dumpsys battery set ac 0 && dumpsys battery set usb 0'), + 'charge_counter': ( + '/sys/class/power_supply/max170xx_battery/charge_counter_ext'), + 'voltage': '/sys/class/power_supply/max170xx_battery/voltage_now', + 'current': '/sys/class/power_supply/max170xx_battery/current_now', + }, + { + 'name': ['Nexus 9'], + 'enable_command': ( + 'echo Disconnected > ' + '/sys/bus/i2c/drivers/bq2419x/0-006b/input_cable_state && ' + 'dumpsys battery reset'), + 'disable_command': ( + 'echo Connected > ' + '/sys/bus/i2c/drivers/bq2419x/0-006b/input_cable_state && ' + 'dumpsys battery set ac 0 && dumpsys battery set usb 0'), + 'charge_counter': '/sys/class/power_supply/battery/charge_counter_ext', + 'voltage': '/sys/class/power_supply/battery/voltage_now', + 'current': '/sys/class/power_supply/battery/current_now', + }, + { + 'name': ['Nexus 10'], + 'enable_command': None, + 'disable_command': None, + 'charge_counter': None, + 'voltage': '/sys/class/power_supply/ds2784-fuelgauge/voltage_now', + 'current': '/sys/class/power_supply/ds2784-fuelgauge/current_now', + + }, + { + 'name': ['Nexus 5X'], + 'enable_command': ( + 'echo 1 > /sys/class/power_supply/battery/charging_enabled && ' + 'dumpsys battery reset'), + 'disable_command': ( + 'echo 0 > /sys/class/power_supply/battery/charging_enabled && ' + 'dumpsys battery set ac 0 && dumpsys battery set usb 0'), + 'charge_counter': None, + 'voltage': None, + 'current': None, + }, + { # Galaxy s5 + 'name': ['SM-G900H'], + 'enable_command': ( + 'chmod 644 /sys/class/power_supply/battery/test_mode && ' + 'chmod 644 /sys/class/power_supply/sec-charger/current_now && ' + 'echo 0 > /sys/class/power_supply/battery/test_mode && ' + 'echo 9999 > /sys/class/power_supply/sec-charger/current_now &&' + 'dumpsys battery reset'), + 'disable_command': ( + 'chmod 644 /sys/class/power_supply/battery/test_mode && ' + 'chmod 644 /sys/class/power_supply/sec-charger/current_now && ' + 'echo 1 > /sys/class/power_supply/battery/test_mode && ' + 'echo 0 > /sys/class/power_supply/sec-charger/current_now && ' + 'dumpsys battery set ac 0 && dumpsys battery set usb 0'), + 'charge_counter': None, + 'voltage': '/sys/class/power_supply/sec-fuelgauge/voltage_now', + 'current': '/sys/class/power_supply/sec-charger/current_now', + }, + { # Galaxy s6, Galaxy s6, Galaxy s6 edge + 'name': ['SM-G920F', 'SM-G920V', 'SM-G925V'], + 'enable_command': ( + 'chmod 644 /sys/class/power_supply/battery/test_mode && ' + 'chmod 644 /sys/class/power_supply/max77843-charger/current_now && ' + 'echo 0 > /sys/class/power_supply/battery/test_mode && ' + 'echo 9999 > /sys/class/power_supply/max77843-charger/current_now &&' + 'dumpsys battery reset'), + 'disable_command': ( + 'chmod 644 /sys/class/power_supply/battery/test_mode && ' + 'chmod 644 /sys/class/power_supply/max77843-charger/current_now && ' + 'echo 1 > /sys/class/power_supply/battery/test_mode && ' + 'echo 0 > /sys/class/power_supply/max77843-charger/current_now && ' + 'dumpsys battery set ac 0 && dumpsys battery set usb 0'), + 'charge_counter': None, + 'voltage': '/sys/class/power_supply/max77843-fuelgauge/voltage_now', + 'current': '/sys/class/power_supply/max77843-charger/current_now', + }, + { # Cherry Mobile One + 'name': ['W6210 (4560MMX_b fingerprint)'], + 'enable_command': ( + 'echo "0 0" > /proc/mtk_battery_cmd/current_cmd && ' + 'dumpsys battery reset'), + 'disable_command': ( + 'echo "0 1" > /proc/mtk_battery_cmd/current_cmd && ' + 'dumpsys battery set ac 0 && dumpsys battery set usb 0'), + 'charge_counter': None, + 'voltage': None, + 'current': None, +}, +] + +# The list of useful dumpsys columns. +# Index of the column containing the format version. +_DUMP_VERSION_INDEX = 0 +# Index of the column containing the type of the row. +_ROW_TYPE_INDEX = 3 +# Index of the column containing the uid. +_PACKAGE_UID_INDEX = 4 +# Index of the column containing the application package. +_PACKAGE_NAME_INDEX = 5 +# The column containing the uid of the power data. +_PWI_UID_INDEX = 1 +# The column containing the type of consumption. Only consumption since last +# charge are of interest here. +_PWI_AGGREGATION_INDEX = 2 +_PWS_AGGREGATION_INDEX = _PWI_AGGREGATION_INDEX +# The column containing the amount of power used, in mah. +_PWI_POWER_CONSUMPTION_INDEX = 5 +_PWS_POWER_CONSUMPTION_INDEX = _PWI_POWER_CONSUMPTION_INDEX + +_MAX_CHARGE_ERROR = 20 + + +class BatteryUtils(object): + + def __init__(self, device, default_timeout=_DEFAULT_TIMEOUT, + default_retries=_DEFAULT_RETRIES): + """BatteryUtils constructor. + + Args: + device: A DeviceUtils instance. + default_timeout: An integer containing the default number of seconds to + wait for an operation to complete if no explicit value + is provided. + default_retries: An integer containing the default number or times an + operation should be retried on failure if no explicit + value is provided. + Raises: + TypeError: If it is not passed a DeviceUtils instance. + """ + if not isinstance(device, device_utils.DeviceUtils): + raise TypeError('Must be initialized with DeviceUtils object.') + self._device = device + self._cache = device.GetClientCache(self.__class__.__name__) + self._default_timeout = default_timeout + self._default_retries = default_retries + + @decorators.WithTimeoutAndRetriesFromInstance() + def SupportsFuelGauge(self, timeout=None, retries=None): + """Detect if fuel gauge chip is present. + + Args: + timeout: timeout in seconds + retries: number of retries + + Returns: + True if known fuel gauge files are present. + False otherwise. + """ + self._DiscoverDeviceProfile() + return (self._cache['profile']['enable_command'] != None + and self._cache['profile']['charge_counter'] != None) + + @decorators.WithTimeoutAndRetriesFromInstance() + def GetFuelGaugeChargeCounter(self, timeout=None, retries=None): + """Get value of charge_counter on fuel gauge chip. + + Device must have charging disabled for this, not just battery updates + disabled. The only device that this currently works with is the nexus 5. + + Args: + timeout: timeout in seconds + retries: number of retries + + Returns: + value of charge_counter for fuel gauge chip in units of nAh. + + Raises: + device_errors.CommandFailedError: If fuel gauge chip not found. + """ + if self.SupportsFuelGauge(): + return int(self._device.ReadFile( + self._cache['profile']['charge_counter'])) + raise device_errors.CommandFailedError( + 'Unable to find fuel gauge.') + + @decorators.WithTimeoutAndRetriesFromInstance() + def GetNetworkData(self, package, timeout=None, retries=None): + """Get network data for specific package. + + Args: + package: package name you want network data for. + timeout: timeout in seconds + retries: number of retries + + Returns: + Tuple of (sent_data, recieved_data) + None if no network data found + """ + # If device_utils clears cache, cache['uids'] doesn't exist + if 'uids' not in self._cache: + self._cache['uids'] = {} + if package not in self._cache['uids']: + self.GetPowerData() + if package not in self._cache['uids']: + logger.warning('No UID found for %s. Can\'t get network data.', + package) + return None + + network_data_path = '/proc/uid_stat/%s/' % self._cache['uids'][package] + try: + send_data = int(self._device.ReadFile(network_data_path + 'tcp_snd')) + # If ReadFile throws exception, it means no network data usage file for + # package has been recorded. Return 0 sent and 0 received. + except device_errors.AdbShellCommandFailedError: + logger.warning('No sent data found for package %s', package) + send_data = 0 + try: + recv_data = int(self._device.ReadFile(network_data_path + 'tcp_rcv')) + except device_errors.AdbShellCommandFailedError: + logger.warning('No received data found for package %s', package) + recv_data = 0 + return (send_data, recv_data) + + @decorators.WithTimeoutAndRetriesFromInstance() + def GetPowerData(self, timeout=None, retries=None): + """Get power data for device. + + Args: + timeout: timeout in seconds + retries: number of retries + + Returns: + Dict containing system power, and a per-package power dict keyed on + package names. + { + 'system_total': 23.1, + 'per_package' : { + package_name: { + 'uid': uid, + 'data': [1,2,3] + }, + } + } + """ + if 'uids' not in self._cache: + self._cache['uids'] = {} + dumpsys_output = self._device.RunShellCommand( + ['dumpsys', 'batterystats', '-c'], + check_return=True, large_output=True) + csvreader = csv.reader(dumpsys_output) + pwi_entries = collections.defaultdict(list) + system_total = None + for entry in csvreader: + if entry[_DUMP_VERSION_INDEX] not in ['8', '9']: + # Wrong dumpsys version. + raise device_errors.DeviceVersionError( + 'Dumpsys version must be 8 or 9. "%s" found.' + % entry[_DUMP_VERSION_INDEX]) + if _ROW_TYPE_INDEX < len(entry) and entry[_ROW_TYPE_INDEX] == 'uid': + current_package = entry[_PACKAGE_NAME_INDEX] + if (self._cache['uids'].get(current_package) + and self._cache['uids'].get(current_package) + != entry[_PACKAGE_UID_INDEX]): + raise device_errors.CommandFailedError( + 'Package %s found multiple times with different UIDs %s and %s' + % (current_package, self._cache['uids'][current_package], + entry[_PACKAGE_UID_INDEX])) + self._cache['uids'][current_package] = entry[_PACKAGE_UID_INDEX] + elif (_PWI_POWER_CONSUMPTION_INDEX < len(entry) + and entry[_ROW_TYPE_INDEX] == 'pwi' + and entry[_PWI_AGGREGATION_INDEX] == 'l'): + pwi_entries[entry[_PWI_UID_INDEX]].append( + float(entry[_PWI_POWER_CONSUMPTION_INDEX])) + elif (_PWS_POWER_CONSUMPTION_INDEX < len(entry) + and entry[_ROW_TYPE_INDEX] == 'pws' + and entry[_PWS_AGGREGATION_INDEX] == 'l'): + # This entry should only appear once. + assert system_total is None + system_total = float(entry[_PWS_POWER_CONSUMPTION_INDEX]) + + per_package = {p: {'uid': uid, 'data': pwi_entries[uid]} + for p, uid in self._cache['uids'].iteritems()} + return {'system_total': system_total, 'per_package': per_package} + + @decorators.WithTimeoutAndRetriesFromInstance() + def GetBatteryInfo(self, timeout=None, retries=None): + """Gets battery info for the device. + + Args: + timeout: timeout in seconds + retries: number of retries + Returns: + A dict containing various battery information as reported by dumpsys + battery. + """ + result = {} + # Skip the first line, which is just a header. + for line in self._device.RunShellCommand( + ['dumpsys', 'battery'], check_return=True)[1:]: + # If usb charging has been disabled, an extra line of header exists. + if 'UPDATES STOPPED' in line: + logger.warning('Dumpsys battery not receiving updates. ' + 'Run dumpsys battery reset if this is in error.') + elif ':' not in line: + logger.warning('Unknown line found in dumpsys battery: "%s"', line) + else: + k, v = line.split(':', 1) + result[k.strip()] = v.strip() + return result + + @decorators.WithTimeoutAndRetriesFromInstance() + def GetCharging(self, timeout=None, retries=None): + """Gets the charging state of the device. + + Args: + timeout: timeout in seconds + retries: number of retries + Returns: + True if the device is charging, false otherwise. + """ + battery_info = self.GetBatteryInfo() + for k in ('AC powered', 'USB powered', 'Wireless powered'): + if (k in battery_info and + battery_info[k].lower() in ('true', '1', 'yes')): + return True + return False + + # TODO(rnephew): Make private when all use cases can use the context manager. + @decorators.WithTimeoutAndRetriesFromInstance() + def DisableBatteryUpdates(self, timeout=None, retries=None): + """Resets battery data and makes device appear like it is not + charging so that it will collect power data since last charge. + + Args: + timeout: timeout in seconds + retries: number of retries + + Raises: + device_errors.CommandFailedError: When resetting batterystats fails to + reset power values. + device_errors.DeviceVersionError: If device is not L or higher. + """ + def battery_updates_disabled(): + return self.GetCharging() is False + + self._ClearPowerData() + self._device.RunShellCommand(['dumpsys', 'battery', 'set', 'ac', '0'], + check_return=True) + self._device.RunShellCommand(['dumpsys', 'battery', 'set', 'usb', '0'], + check_return=True) + timeout_retry.WaitFor(battery_updates_disabled, wait_period=1) + + # TODO(rnephew): Make private when all use cases can use the context manager. + @decorators.WithTimeoutAndRetriesFromInstance() + def EnableBatteryUpdates(self, timeout=None, retries=None): + """Restarts device charging so that dumpsys no longer collects power data. + + Args: + timeout: timeout in seconds + retries: number of retries + + Raises: + device_errors.DeviceVersionError: If device is not L or higher. + """ + def battery_updates_enabled(): + return (self.GetCharging() + or not bool('UPDATES STOPPED' in self._device.RunShellCommand( + ['dumpsys', 'battery'], check_return=True))) + + self._device.RunShellCommand(['dumpsys', 'battery', 'reset'], + check_return=True) + timeout_retry.WaitFor(battery_updates_enabled, wait_period=1) + + @contextlib.contextmanager + def BatteryMeasurement(self, timeout=None, retries=None): + """Context manager that enables battery data collection. It makes + the device appear to stop charging so that dumpsys will start collecting + power data since last charge. Once the with block is exited, charging is + resumed and power data since last charge is no longer collected. + + Only for devices L and higher. + + Example usage: + with BatteryMeasurement(): + browser_actions() + get_power_data() # report usage within this block + after_measurements() # Anything that runs after power + # measurements are collected + + Args: + timeout: timeout in seconds + retries: number of retries + + Raises: + device_errors.DeviceVersionError: If device is not L or higher. + """ + if self._device.build_version_sdk < version_codes.LOLLIPOP: + raise device_errors.DeviceVersionError('Device must be L or higher.') + try: + self.DisableBatteryUpdates(timeout=timeout, retries=retries) + yield + finally: + self.EnableBatteryUpdates(timeout=timeout, retries=retries) + + def _DischargeDevice(self, percent, wait_period=120): + """Disables charging and waits for device to discharge given amount + + Args: + percent: level of charge to discharge. + + Raises: + ValueError: If percent is not between 1 and 99. + """ + battery_level = int(self.GetBatteryInfo().get('level')) + if not 0 < percent < 100: + raise ValueError('Discharge amount(%s) must be between 1 and 99' + % percent) + if battery_level is None: + logger.warning('Unable to find current battery level. Cannot discharge.') + return + # Do not discharge if it would make battery level too low. + if percent >= battery_level - 10: + logger.warning('Battery is too low or discharge amount requested is too ' + 'high. Cannot discharge phone %s percent.', percent) + return + + self._HardwareSetCharging(False) + + def device_discharged(): + self._HardwareSetCharging(True) + current_level = int(self.GetBatteryInfo().get('level')) + logger.info('current battery level: %s', current_level) + if battery_level - current_level >= percent: + return True + self._HardwareSetCharging(False) + return False + + timeout_retry.WaitFor(device_discharged, wait_period=wait_period) + + def ChargeDeviceToLevel(self, level, wait_period=60): + """Enables charging and waits for device to be charged to given level. + + Args: + level: level of charge to wait for. + wait_period: time in seconds to wait between checking. + Raises: + device_errors.DeviceChargingError: If error while charging is detected. + """ + self.SetCharging(True) + charge_status = { + 'charge_failure_count': 0, + 'last_charge_value': 0 + } + def device_charged(): + battery_level = self.GetBatteryInfo().get('level') + if battery_level is None: + logger.warning('Unable to find current battery level.') + battery_level = 100 + else: + logger.info('current battery level: %s', battery_level) + battery_level = int(battery_level) + + # Use > so that it will not reset if charge is going down. + if battery_level > charge_status['last_charge_value']: + charge_status['last_charge_value'] = battery_level + charge_status['charge_failure_count'] = 0 + else: + charge_status['charge_failure_count'] += 1 + + if (not battery_level >= level + and charge_status['charge_failure_count'] >= _MAX_CHARGE_ERROR): + raise device_errors.DeviceChargingError( + 'Device not charging properly. Current level:%s Previous level:%s' + % (battery_level, charge_status['last_charge_value'])) + return battery_level >= level + + timeout_retry.WaitFor(device_charged, wait_period=wait_period) + + def LetBatteryCoolToTemperature(self, target_temp, wait_period=180): + """Lets device sit to give battery time to cool down + Args: + temp: maximum temperature to allow in tenths of degrees c. + wait_period: time in seconds to wait between checking. + """ + def cool_device(): + temp = self.GetBatteryInfo().get('temperature') + if temp is None: + logger.warning('Unable to find current battery temperature.') + temp = 0 + else: + logger.info('Current battery temperature: %s', temp) + if int(temp) <= target_temp: + return True + else: + if 'Nexus 5' in self._cache['profile']['name']: + self._DischargeDevice(1) + return False + + self._DiscoverDeviceProfile() + self.EnableBatteryUpdates() + logger.info('Waiting for the device to cool down to %s (0.1 C)', + target_temp) + timeout_retry.WaitFor(cool_device, wait_period=wait_period) + + @decorators.WithTimeoutAndRetriesFromInstance() + def SetCharging(self, enabled, timeout=None, retries=None): + """Enables or disables charging on the device. + + Args: + enabled: A boolean indicating whether charging should be enabled or + disabled. + timeout: timeout in seconds + retries: number of retries + """ + if self.GetCharging() == enabled: + logger.warning('Device charging already in expected state: %s', enabled) + return + + self._DiscoverDeviceProfile() + if enabled: + if self._cache['profile']['enable_command']: + self._HardwareSetCharging(enabled) + else: + logger.info('Unable to enable charging via hardware. ' + 'Falling back to software enabling.') + self.EnableBatteryUpdates() + else: + if self._cache['profile']['enable_command']: + self._ClearPowerData() + self._HardwareSetCharging(enabled) + else: + logger.info('Unable to disable charging via hardware. ' + 'Falling back to software disabling.') + self.DisableBatteryUpdates() + + def _HardwareSetCharging(self, enabled, timeout=None, retries=None): + """Enables or disables charging on the device. + + Args: + enabled: A boolean indicating whether charging should be enabled or + disabled. + timeout: timeout in seconds + retries: number of retries + + Raises: + device_errors.CommandFailedError: If method of disabling charging cannot + be determined. + """ + self._DiscoverDeviceProfile() + if not self._cache['profile']['enable_command']: + raise device_errors.CommandFailedError( + 'Unable to find charging commands.') + + command = (self._cache['profile']['enable_command'] if enabled + else self._cache['profile']['disable_command']) + + def verify_charging(): + return self.GetCharging() == enabled + + self._device.RunShellCommand( + command, check_return=True, as_root=True, large_output=True) + timeout_retry.WaitFor(verify_charging, wait_period=1) + + @contextlib.contextmanager + def PowerMeasurement(self, timeout=None, retries=None): + """Context manager that enables battery power collection. + + Once the with block is exited, charging is resumed. Will attempt to disable + charging at the hardware level, and if that fails will fall back to software + disabling of battery updates. + + Only for devices L and higher. + + Example usage: + with PowerMeasurement(): + browser_actions() + get_power_data() # report usage within this block + after_measurements() # Anything that runs after power + # measurements are collected + + Args: + timeout: timeout in seconds + retries: number of retries + """ + try: + self.SetCharging(False, timeout=timeout, retries=retries) + yield + finally: + self.SetCharging(True, timeout=timeout, retries=retries) + + def _ClearPowerData(self): + """Resets battery data and makes device appear like it is not + charging so that it will collect power data since last charge. + + Returns: + True if power data cleared. + False if power data clearing is not supported (pre-L) + + Raises: + device_errors.DeviceVersionError: If power clearing is supported, + but fails. + """ + if self._device.build_version_sdk < version_codes.LOLLIPOP: + logger.warning('Dumpsys power data only available on 5.0 and above. ' + 'Cannot clear power data.') + return False + + self._device.RunShellCommand( + ['dumpsys', 'battery', 'set', 'usb', '1'], check_return=True) + self._device.RunShellCommand( + ['dumpsys', 'battery', 'set', 'ac', '1'], check_return=True) + + def test_if_clear(): + self._device.RunShellCommand( + ['dumpsys', 'batterystats', '--reset'], check_return=True) + battery_data = self._device.RunShellCommand( + ['dumpsys', 'batterystats', '--charged', '-c'], + check_return=True, large_output=True) + for line in battery_data: + l = line.split(',') + if (len(l) > _PWI_POWER_CONSUMPTION_INDEX + and l[_ROW_TYPE_INDEX] == 'pwi' + and float(l[_PWI_POWER_CONSUMPTION_INDEX]) != 0.0): + return False + return True + + try: + timeout_retry.WaitFor(test_if_clear, wait_period=1) + return True + finally: + self._device.RunShellCommand( + ['dumpsys', 'battery', 'reset'], check_return=True) + + def _DiscoverDeviceProfile(self): + """Checks and caches device information. + + Returns: + True if profile is found, false otherwise. + """ + + if 'profile' in self._cache: + return True + for profile in _DEVICE_PROFILES: + if self._device.product_model in profile['name']: + self._cache['profile'] = profile + return True + self._cache['profile'] = { + 'name': [], + 'enable_command': None, + 'disable_command': None, + 'charge_counter': None, + 'voltage': None, + 'current': None, + } + return False diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/battery_utils_test.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/battery_utils_test.py new file mode 100644 index 0000000..beaba3b --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/battery_utils_test.py @@ -0,0 +1,694 @@ +#!/usr/bin/env python +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +""" +Unit tests for the contents of battery_utils.py +""" + +# pylint: disable=protected-access,unused-argument + +import logging +import unittest + +from devil import devil_env +from devil.android import battery_utils +from devil.android import device_errors +from devil.android import device_utils +from devil.android import device_utils_test +from devil.utils import mock_calls + +with devil_env.SysPath(devil_env.PYMOCK_PATH): + import mock # pylint: disable=import-error + +_DUMPSYS_OUTPUT = [ + '9,0,i,uid,1000,test_package1', + '9,0,i,uid,1001,test_package2', + '9,1000,l,pwi,uid,1', + '9,1001,l,pwi,uid,2', + '9,0,l,pws,1728,2000,190,207', +] + + +class BatteryUtilsTest(mock_calls.TestCase): + + _NEXUS_5 = { + 'name': 'Nexus 5', + 'witness_file': '/sys/kernel/debug/bq24192/INPUT_SRC_CONT', + 'enable_command': ( + 'echo 0x4A > /sys/kernel/debug/bq24192/INPUT_SRC_CONT && ' + 'echo 1 > /sys/class/power_supply/usb/online'), + 'disable_command': ( + 'echo 0xCA > /sys/kernel/debug/bq24192/INPUT_SRC_CONT && ' + 'chmod 644 /sys/class/power_supply/usb/online && ' + 'echo 0 > /sys/class/power_supply/usb/online'), + 'charge_counter': None, + 'voltage': None, + 'current': None, + } + + _NEXUS_6 = { + 'name': 'Nexus 6', + 'witness_file': None, + 'enable_command': None, + 'disable_command': None, + 'charge_counter': ( + '/sys/class/power_supply/max170xx_battery/charge_counter_ext'), + 'voltage': '/sys/class/power_supply/max170xx_battery/voltage_now', + 'current': '/sys/class/power_supply/max170xx_battery/current_now', + } + + _NEXUS_10 = { + 'name': 'Nexus 10', + 'witness_file': None, + 'enable_command': None, + 'disable_command': None, + 'charge_counter': ( + '/sys/class/power_supply/ds2784-fuelgauge/charge_counter_ext'), + 'voltage': '/sys/class/power_supply/ds2784-fuelgauge/voltage_now', + 'current': '/sys/class/power_supply/ds2784-fuelgauge/current_now', + } + + def ShellError(self, output=None, status=1): + def action(cmd, *args, **kwargs): + raise device_errors.AdbShellCommandFailedError( + cmd, output, status, str(self.device)) + if output is None: + output = 'Permission denied\n' + return action + + def setUp(self): + self.adb = device_utils_test._AdbWrapperMock('0123456789abcdef') + self.device = device_utils.DeviceUtils( + self.adb, default_timeout=10, default_retries=0) + self.watchMethodCalls(self.call.adb, ignore=['GetDeviceSerial']) + self.battery = battery_utils.BatteryUtils( + self.device, default_timeout=10, default_retries=0) + + +class BatteryUtilsInitTest(unittest.TestCase): + + def testInitWithDeviceUtil(self): + serial = '0fedcba987654321' + d = device_utils.DeviceUtils(serial) + b = battery_utils.BatteryUtils(d) + self.assertEqual(d, b._device) + + def testInitWithMissing_fails(self): + with self.assertRaises(TypeError): + battery_utils.BatteryUtils(None) + with self.assertRaises(TypeError): + battery_utils.BatteryUtils('') + + +class BatteryUtilsSetChargingTest(BatteryUtilsTest): + + @mock.patch('time.sleep', mock.Mock()) + def testHardwareSetCharging_enabled(self): + self.battery._cache['profile'] = self._NEXUS_5 + with self.assertCalls( + (self.call.device.RunShellCommand( + mock.ANY, check_return=True, as_root=True, large_output=True), []), + (self.call.battery.GetCharging(), False), + (self.call.battery.GetCharging(), True)): + self.battery._HardwareSetCharging(True) + + def testHardwareSetCharging_alreadyEnabled(self): + self.battery._cache['profile'] = self._NEXUS_5 + with self.assertCalls( + (self.call.device.RunShellCommand( + mock.ANY, check_return=True, as_root=True, large_output=True), []), + (self.call.battery.GetCharging(), True)): + self.battery._HardwareSetCharging(True) + + @mock.patch('time.sleep', mock.Mock()) + def testHardwareSetCharging_disabled(self): + self.battery._cache['profile'] = self._NEXUS_5 + with self.assertCalls( + (self.call.device.RunShellCommand( + mock.ANY, check_return=True, as_root=True, large_output=True), []), + (self.call.battery.GetCharging(), True), + (self.call.battery.GetCharging(), False)): + self.battery._HardwareSetCharging(False) + + +class BatteryUtilsSetBatteryMeasurementTest(BatteryUtilsTest): + + @mock.patch('time.sleep', mock.Mock()) + def testBatteryMeasurementWifi(self): + with self.patch_call(self.call.device.build_version_sdk, + return_value=22): + with self.assertCalls( + (self.call.battery._ClearPowerData(), True), + (self.call.device.RunShellCommand( + ['dumpsys', 'battery', 'set', 'ac', '0'], check_return=True), []), + (self.call.device.RunShellCommand( + ['dumpsys', 'battery', 'set', 'usb', '0'], check_return=True), + []), + (self.call.battery.GetCharging(), False), + (self.call.device.RunShellCommand( + ['dumpsys', 'battery', 'reset'], check_return=True), []), + (self.call.battery.GetCharging(), False), + (self.call.device.RunShellCommand( + ['dumpsys', 'battery'], check_return=True), ['UPDATES STOPPED']), + (self.call.battery.GetCharging(), False), + (self.call.device.RunShellCommand( + ['dumpsys', 'battery'], check_return=True), [])): + with self.battery.BatteryMeasurement(): + pass + + @mock.patch('time.sleep', mock.Mock()) + def testBatteryMeasurementUsb(self): + with self.patch_call(self.call.device.build_version_sdk, + return_value=22): + with self.assertCalls( + (self.call.battery._ClearPowerData(), True), + (self.call.device.RunShellCommand( + ['dumpsys', 'battery', 'set', 'ac', '0'], check_return=True), []), + (self.call.device.RunShellCommand( + ['dumpsys', 'battery', 'set', 'usb', '0'], check_return=True), + []), + (self.call.battery.GetCharging(), False), + (self.call.device.RunShellCommand( + ['dumpsys', 'battery', 'reset'], check_return=True), []), + (self.call.battery.GetCharging(), False), + (self.call.device.RunShellCommand( + ['dumpsys', 'battery'], check_return=True), ['UPDATES STOPPED']), + (self.call.battery.GetCharging(), True)): + with self.battery.BatteryMeasurement(): + pass + + +class BatteryUtilsGetPowerData(BatteryUtilsTest): + + def testGetPowerData(self): + with self.assertCalls( + (self.call.device.RunShellCommand( + ['dumpsys', 'batterystats', '-c'], + check_return=True, large_output=True), + _DUMPSYS_OUTPUT)): + data = self.battery.GetPowerData() + check = { + 'system_total': 2000.0, + 'per_package': { + 'test_package1': {'uid': '1000', 'data': [1.0]}, + 'test_package2': {'uid': '1001', 'data': [2.0]} + } + } + self.assertEqual(data, check) + + def testGetPowerData_packageCollisionSame(self): + self.battery._cache['uids'] = {'test_package1': '1000'} + with self.assertCall( + self.call.device.RunShellCommand( + ['dumpsys', 'batterystats', '-c'], + check_return=True, large_output=True), + _DUMPSYS_OUTPUT): + data = self.battery.GetPowerData() + check = { + 'system_total': 2000.0, + 'per_package': { + 'test_package1': {'uid': '1000', 'data': [1.0]}, + 'test_package2': {'uid': '1001', 'data': [2.0]} + } + } + self.assertEqual(data, check) + + def testGetPowerData_packageCollisionDifferent(self): + self.battery._cache['uids'] = {'test_package1': '1'} + with self.assertCall( + self.call.device.RunShellCommand( + ['dumpsys', 'batterystats', '-c'], + check_return=True, large_output=True), + _DUMPSYS_OUTPUT): + with self.assertRaises(device_errors.CommandFailedError): + self.battery.GetPowerData() + + def testGetPowerData_cacheCleared(self): + with self.assertCalls( + (self.call.device.RunShellCommand( + ['dumpsys', 'batterystats', '-c'], + check_return=True, large_output=True), + _DUMPSYS_OUTPUT)): + self.battery._cache.clear() + data = self.battery.GetPowerData() + check = { + 'system_total': 2000.0, + 'per_package': { + 'test_package1': {'uid': '1000', 'data': [1.0]}, + 'test_package2': {'uid': '1001', 'data': [2.0]} + } + } + self.assertEqual(data, check) + + +class BatteryUtilsChargeDevice(BatteryUtilsTest): + + @mock.patch('time.sleep', mock.Mock()) + def testChargeDeviceToLevel_pass(self): + with self.assertCalls( + (self.call.battery.SetCharging(True)), + (self.call.battery.GetBatteryInfo(), {'level': '50'}), + (self.call.battery.GetBatteryInfo(), {'level': '100'})): + self.battery.ChargeDeviceToLevel(95) + + @mock.patch('time.sleep', mock.Mock()) + def testChargeDeviceToLevel_failureSame(self): + with self.assertCalls( + (self.call.battery.SetCharging(True)), + (self.call.battery.GetBatteryInfo(), {'level': '50'}), + (self.call.battery.GetBatteryInfo(), {'level': '50'}), + + (self.call.battery.GetBatteryInfo(), {'level': '50'})): + with self.assertRaises(device_errors.DeviceChargingError): + old_max = battery_utils._MAX_CHARGE_ERROR + try: + battery_utils._MAX_CHARGE_ERROR = 2 + self.battery.ChargeDeviceToLevel(95) + finally: + battery_utils._MAX_CHARGE_ERROR = old_max + + @mock.patch('time.sleep', mock.Mock()) + def testChargeDeviceToLevel_failureDischarge(self): + with self.assertCalls( + (self.call.battery.SetCharging(True)), + (self.call.battery.GetBatteryInfo(), {'level': '50'}), + (self.call.battery.GetBatteryInfo(), {'level': '49'}), + (self.call.battery.GetBatteryInfo(), {'level': '48'})): + with self.assertRaises(device_errors.DeviceChargingError): + old_max = battery_utils._MAX_CHARGE_ERROR + try: + battery_utils._MAX_CHARGE_ERROR = 2 + self.battery.ChargeDeviceToLevel(95) + finally: + battery_utils._MAX_CHARGE_ERROR = old_max + + +class BatteryUtilsDischargeDevice(BatteryUtilsTest): + + @mock.patch('time.sleep', mock.Mock()) + def testDischargeDevice_exact(self): + with self.assertCalls( + (self.call.battery.GetBatteryInfo(), {'level': '100'}), + (self.call.battery._HardwareSetCharging(False)), + (self.call.battery._HardwareSetCharging(True)), + (self.call.battery.GetBatteryInfo(), {'level': '99'})): + self.battery._DischargeDevice(1) + + @mock.patch('time.sleep', mock.Mock()) + def testDischargeDevice_over(self): + with self.assertCalls( + (self.call.battery.GetBatteryInfo(), {'level': '100'}), + (self.call.battery._HardwareSetCharging(False)), + (self.call.battery._HardwareSetCharging(True)), + (self.call.battery.GetBatteryInfo(), {'level': '50'})): + self.battery._DischargeDevice(1) + + @mock.patch('time.sleep', mock.Mock()) + def testDischargeDevice_takeslong(self): + with self.assertCalls( + (self.call.battery.GetBatteryInfo(), {'level': '100'}), + (self.call.battery._HardwareSetCharging(False)), + (self.call.battery._HardwareSetCharging(True)), + (self.call.battery.GetBatteryInfo(), {'level': '100'}), + (self.call.battery._HardwareSetCharging(False)), + (self.call.battery._HardwareSetCharging(True)), + (self.call.battery.GetBatteryInfo(), {'level': '99'}), + (self.call.battery._HardwareSetCharging(False)), + (self.call.battery._HardwareSetCharging(True)), + (self.call.battery.GetBatteryInfo(), {'level': '98'}), + (self.call.battery._HardwareSetCharging(False)), + (self.call.battery._HardwareSetCharging(True)), + (self.call.battery.GetBatteryInfo(), {'level': '97'})): + self.battery._DischargeDevice(3) + + @mock.patch('time.sleep', mock.Mock()) + def testDischargeDevice_dischargeTooClose(self): + with self.assertCalls( + (self.call.battery.GetBatteryInfo(), {'level': '100'})): + self.battery._DischargeDevice(99) + + @mock.patch('time.sleep', mock.Mock()) + def testDischargeDevice_percentageOutOfBounds(self): + with self.assertCalls( + (self.call.battery.GetBatteryInfo(), {'level': '100'})): + with self.assertRaises(ValueError): + self.battery._DischargeDevice(100) + with self.assertCalls( + (self.call.battery.GetBatteryInfo(), {'level': '100'})): + with self.assertRaises(ValueError): + self.battery._DischargeDevice(0) + + +class BatteryUtilsGetBatteryInfoTest(BatteryUtilsTest): + + def testGetBatteryInfo_normal(self): + with self.assertCalls( + (self.call.device.RunShellCommand( + ['dumpsys', 'battery'], check_return=True), + [ + 'Current Battery Service state:', + ' AC powered: false', + ' USB powered: true', + ' level: 100', + ' temperature: 321', + ])): + self.assertEquals( + { + 'AC powered': 'false', + 'USB powered': 'true', + 'level': '100', + 'temperature': '321', + }, + self.battery.GetBatteryInfo()) + + def testGetBatteryInfo_nothing(self): + with self.assertCalls( + (self.call.device.RunShellCommand( + ['dumpsys', 'battery'], check_return=True), [])): + self.assertEquals({}, self.battery.GetBatteryInfo()) + + +class BatteryUtilsGetChargingTest(BatteryUtilsTest): + + def testGetCharging_usb(self): + with self.assertCall( + self.call.battery.GetBatteryInfo(), {'USB powered': 'true'}): + self.assertTrue(self.battery.GetCharging()) + + def testGetCharging_usbFalse(self): + with self.assertCall( + self.call.battery.GetBatteryInfo(), {'USB powered': 'false'}): + self.assertFalse(self.battery.GetCharging()) + + def testGetCharging_ac(self): + with self.assertCall( + self.call.battery.GetBatteryInfo(), {'AC powered': 'true'}): + self.assertTrue(self.battery.GetCharging()) + + def testGetCharging_wireless(self): + with self.assertCall( + self.call.battery.GetBatteryInfo(), {'Wireless powered': 'true'}): + self.assertTrue(self.battery.GetCharging()) + + def testGetCharging_unknown(self): + with self.assertCall( + self.call.battery.GetBatteryInfo(), {'level': '42'}): + self.assertFalse(self.battery.GetCharging()) + + +class BatteryUtilsGetNetworkDataTest(BatteryUtilsTest): + + def testGetNetworkData_noDataUsage(self): + with self.assertCalls( + (self.call.device.RunShellCommand( + ['dumpsys', 'batterystats', '-c'], + check_return=True, large_output=True), + _DUMPSYS_OUTPUT), + (self.call.device.ReadFile('/proc/uid_stat/1000/tcp_snd'), + self.ShellError()), + (self.call.device.ReadFile('/proc/uid_stat/1000/tcp_rcv'), + self.ShellError())): + self.assertEquals(self.battery.GetNetworkData('test_package1'), (0, 0)) + + def testGetNetworkData_badPackage(self): + with self.assertCall( + self.call.device.RunShellCommand( + ['dumpsys', 'batterystats', '-c'], + check_return=True, large_output=True), + _DUMPSYS_OUTPUT): + self.assertEqual(self.battery.GetNetworkData('asdf'), None) + + def testGetNetworkData_packageNotCached(self): + with self.assertCalls( + (self.call.device.RunShellCommand( + ['dumpsys', 'batterystats', '-c'], + check_return=True, large_output=True), + _DUMPSYS_OUTPUT), + (self.call.device.ReadFile('/proc/uid_stat/1000/tcp_snd'), 1), + (self.call.device.ReadFile('/proc/uid_stat/1000/tcp_rcv'), 2)): + self.assertEqual(self.battery.GetNetworkData('test_package1'), (1, 2)) + + def testGetNetworkData_packageCached(self): + self.battery._cache['uids'] = {'test_package1': '1000'} + with self.assertCalls( + (self.call.device.ReadFile('/proc/uid_stat/1000/tcp_snd'), 1), + (self.call.device.ReadFile('/proc/uid_stat/1000/tcp_rcv'), 2)): + self.assertEqual(self.battery.GetNetworkData('test_package1'), (1, 2)) + + def testGetNetworkData_clearedCache(self): + with self.assertCalls( + (self.call.device.RunShellCommand( + ['dumpsys', 'batterystats', '-c'], + check_return=True, large_output=True), + _DUMPSYS_OUTPUT), + (self.call.device.ReadFile('/proc/uid_stat/1000/tcp_snd'), 1), + (self.call.device.ReadFile('/proc/uid_stat/1000/tcp_rcv'), 2)): + self.battery._cache.clear() + self.assertEqual(self.battery.GetNetworkData('test_package1'), (1, 2)) + + +class BatteryUtilsLetBatteryCoolToTemperatureTest(BatteryUtilsTest): + + @mock.patch('time.sleep', mock.Mock()) + def testLetBatteryCoolToTemperature_startUnder(self): + self.battery._cache['profile'] = self._NEXUS_6 + with self.assertCalls( + (self.call.battery.EnableBatteryUpdates(), []), + (self.call.battery.GetBatteryInfo(), {'temperature': '500'})): + self.battery.LetBatteryCoolToTemperature(600) + + @mock.patch('time.sleep', mock.Mock()) + def testLetBatteryCoolToTemperature_startOver(self): + self.battery._cache['profile'] = self._NEXUS_6 + with self.assertCalls( + (self.call.battery.EnableBatteryUpdates(), []), + (self.call.battery.GetBatteryInfo(), {'temperature': '500'}), + (self.call.battery.GetBatteryInfo(), {'temperature': '400'})): + self.battery.LetBatteryCoolToTemperature(400) + + @mock.patch('time.sleep', mock.Mock()) + def testLetBatteryCoolToTemperature_nexus5Hot(self): + self.battery._cache['profile'] = self._NEXUS_5 + with self.assertCalls( + (self.call.battery.EnableBatteryUpdates(), []), + (self.call.battery.GetBatteryInfo(), {'temperature': '500'}), + (self.call.battery._DischargeDevice(1), []), + (self.call.battery.GetBatteryInfo(), {'temperature': '400'})): + self.battery.LetBatteryCoolToTemperature(400) + + @mock.patch('time.sleep', mock.Mock()) + def testLetBatteryCoolToTemperature_nexus5Cool(self): + self.battery._cache['profile'] = self._NEXUS_5 + with self.assertCalls( + (self.call.battery.EnableBatteryUpdates(), []), + (self.call.battery.GetBatteryInfo(), {'temperature': '400'})): + self.battery.LetBatteryCoolToTemperature(400) + + +class BatteryUtilsSupportsFuelGaugeTest(BatteryUtilsTest): + + def testSupportsFuelGauge_false(self): + self.battery._cache['profile'] = self._NEXUS_5 + self.assertFalse(self.battery.SupportsFuelGauge()) + + def testSupportsFuelGauge_trueMax(self): + self.battery._cache['profile'] = self._NEXUS_6 + # TODO(rnephew): Change this to assertTrue when we have support for + # disabling hardware charging on nexus 6. + self.assertFalse(self.battery.SupportsFuelGauge()) + + def testSupportsFuelGauge_trueDS(self): + self.battery._cache['profile'] = self._NEXUS_10 + # TODO(rnephew): Change this to assertTrue when we have support for + # disabling hardware charging on nexus 10. + self.assertFalse(self.battery.SupportsFuelGauge()) + + +class BatteryUtilsGetFuelGaugeChargeCounterTest(BatteryUtilsTest): + + def testGetFuelGaugeChargeCounter_noFuelGauge(self): + self.battery._cache['profile'] = self._NEXUS_5 + with self.assertRaises(device_errors.CommandFailedError): + self.battery.GetFuelGaugeChargeCounter() + + def testGetFuelGaugeChargeCounter_fuelGaugePresent(self): + self.battery._cache['profile'] = self._NEXUS_6 + with self.assertCalls( + (self.call.battery.SupportsFuelGauge(), True), + (self.call.device.ReadFile(mock.ANY), '123')): + self.assertEqual(self.battery.GetFuelGaugeChargeCounter(), 123) + + +class BatteryUtilsSetCharging(BatteryUtilsTest): + + @mock.patch('time.sleep', mock.Mock()) + def testSetCharging_softwareSetTrue(self): + self.battery._cache['profile'] = self._NEXUS_6 + with self.assertCalls( + (self.call.battery.GetCharging(), False), + (self.call.device.RunShellCommand( + ['dumpsys', 'battery', 'reset'], check_return=True), []), + (self.call.battery.GetCharging(), False), + (self.call.device.RunShellCommand( + ['dumpsys', 'battery'], check_return=True), ['UPDATES STOPPED']), + (self.call.battery.GetCharging(), True)): + self.battery.SetCharging(True) + + @mock.patch('time.sleep', mock.Mock()) + def testSetCharging_softwareSetFalse(self): + self.battery._cache['profile'] = self._NEXUS_6 + with self.assertCalls( + (self.call.battery.GetCharging(), True), + (self.call.battery._ClearPowerData(), True), + (self.call.device.RunShellCommand( + ['dumpsys', 'battery', 'set', 'ac', '0'], check_return=True), []), + (self.call.device.RunShellCommand( + ['dumpsys', 'battery', 'set', 'usb', '0'], check_return=True), []), + (self.call.battery.GetCharging(), False)): + self.battery.SetCharging(False) + + @mock.patch('time.sleep', mock.Mock()) + def testSetCharging_hardwareSetTrue(self): + self.battery._cache['profile'] = self._NEXUS_5 + with self.assertCalls( + (self.call.battery.GetCharging(), False), + (self.call.battery._HardwareSetCharging(True))): + self.battery.SetCharging(True) + + @mock.patch('time.sleep', mock.Mock()) + def testSetCharging_hardwareSetFalse(self): + self.battery._cache['profile'] = self._NEXUS_5 + with self.assertCalls( + (self.call.battery.GetCharging(), True), + (self.call.battery._ClearPowerData(), True), + (self.call.battery._HardwareSetCharging(False))): + self.battery.SetCharging(False) + + def testSetCharging_expectedStateAlreadyTrue(self): + with self.assertCalls((self.call.battery.GetCharging(), True)): + self.battery.SetCharging(True) + + def testSetCharging_expectedStateAlreadyFalse(self): + with self.assertCalls((self.call.battery.GetCharging(), False)): + self.battery.SetCharging(False) + + +class BatteryUtilsPowerMeasurement(BatteryUtilsTest): + + def testPowerMeasurement_hardware(self): + self.battery._cache['profile'] = self._NEXUS_5 + with self.assertCalls( + (self.call.battery.GetCharging(), True), + (self.call.battery._ClearPowerData(), True), + (self.call.battery._HardwareSetCharging(False)), + (self.call.battery.GetCharging(), False), + (self.call.battery._HardwareSetCharging(True))): + with self.battery.PowerMeasurement(): + pass + + @mock.patch('time.sleep', mock.Mock()) + def testPowerMeasurement_software(self): + self.battery._cache['profile'] = self._NEXUS_6 + with self.assertCalls( + (self.call.battery.GetCharging(), True), + (self.call.battery._ClearPowerData(), True), + (self.call.device.RunShellCommand( + ['dumpsys', 'battery', 'set', 'ac', '0'], check_return=True), []), + (self.call.device.RunShellCommand( + ['dumpsys', 'battery', 'set', 'usb', '0'], check_return=True), []), + (self.call.battery.GetCharging(), False), + (self.call.battery.GetCharging(), False), + (self.call.device.RunShellCommand( + ['dumpsys', 'battery', 'reset'], check_return=True), []), + (self.call.battery.GetCharging(), False), + (self.call.device.RunShellCommand( + ['dumpsys', 'battery'], check_return=True), ['UPDATES STOPPED']), + (self.call.battery.GetCharging(), True)): + with self.battery.PowerMeasurement(): + pass + + +class BatteryUtilsDiscoverDeviceProfile(BatteryUtilsTest): + + def testDiscoverDeviceProfile_known(self): + with self.patch_call(self.call.device.product_model, + return_value='Nexus 4'): + self.battery._DiscoverDeviceProfile() + self.assertListEqual(self.battery._cache['profile']['name'], ["Nexus 4"]) + + def testDiscoverDeviceProfile_unknown(self): + with self.patch_call(self.call.device.product_model, + return_value='Other'): + self.battery._DiscoverDeviceProfile() + self.assertListEqual(self.battery._cache['profile']['name'], []) + + +class BatteryUtilsClearPowerData(BatteryUtilsTest): + + def testClearPowerData_preL(self): + with self.patch_call(self.call.device.build_version_sdk, + return_value=20): + self.assertFalse(self.battery._ClearPowerData()) + + def testClearPowerData_clearedL(self): + with self.patch_call(self.call.device.build_version_sdk, + return_value=22): + with self.assertCalls( + (self.call.device.RunShellCommand( + ['dumpsys', 'battery', 'set', 'usb', '1'], check_return=True), + []), + (self.call.device.RunShellCommand( + ['dumpsys', 'battery', 'set', 'ac', '1'], check_return=True), []), + (self.call.device.RunShellCommand( + ['dumpsys', 'batterystats', '--reset'], check_return=True), []), + (self.call.device.RunShellCommand( + ['dumpsys', 'batterystats', '--charged', '-c'], + check_return=True, large_output=True), []), + (self.call.device.RunShellCommand( + ['dumpsys', 'battery', 'reset'], check_return=True), [])): + self.assertTrue(self.battery._ClearPowerData()) + + @mock.patch('time.sleep', mock.Mock()) + def testClearPowerData_notClearedL(self): + with self.patch_call(self.call.device.build_version_sdk, + return_value=22): + with self.assertCalls( + (self.call.device.RunShellCommand( + ['dumpsys', 'battery', 'set', 'usb', '1'], check_return=True), + []), + (self.call.device.RunShellCommand( + ['dumpsys', 'battery', 'set', 'ac', '1'], check_return=True), []), + (self.call.device.RunShellCommand( + ['dumpsys', 'batterystats', '--reset'], check_return=True), []), + (self.call.device.RunShellCommand( + ['dumpsys', 'batterystats', '--charged', '-c'], + check_return=True, large_output=True), + ['9,1000,l,pwi,uid,0.0327']), + (self.call.device.RunShellCommand( + ['dumpsys', 'batterystats', '--reset'], check_return=True), []), + (self.call.device.RunShellCommand( + ['dumpsys', 'batterystats', '--charged', '-c'], + check_return=True, large_output=True), + ['9,1000,l,pwi,uid,0.0327']), + (self.call.device.RunShellCommand( + ['dumpsys', 'batterystats', '--reset'], check_return=True), []), + (self.call.device.RunShellCommand( + ['dumpsys', 'batterystats', '--charged', '-c'], + check_return=True, large_output=True), + ['9,1000,l,pwi,uid,0.0327']), + (self.call.device.RunShellCommand( + ['dumpsys', 'batterystats', '--reset'], check_return=True), []), + (self.call.device.RunShellCommand( + ['dumpsys', 'batterystats', '--charged', '-c'], + check_return=True, large_output=True), + ['9,1000,l,pwi,uid,0.0']), + (self.call.device.RunShellCommand( + ['dumpsys', 'battery', 'reset'], check_return=True), [])): + self.battery._ClearPowerData() + + +if __name__ == '__main__': + logging.getLogger().setLevel(logging.DEBUG) + unittest.main(verbosity=2) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/constants/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/constants/__init__.py new file mode 100644 index 0000000..50b23df --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/constants/__init__.py @@ -0,0 +1,3 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/constants/chrome.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/constants/chrome.py new file mode 100644 index 0000000..dca04bd --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/constants/chrome.py @@ -0,0 +1,57 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import collections + +PackageInfo = collections.namedtuple( + 'PackageInfo', + ['package', 'activity', 'cmdline_file', 'devtools_socket']) + +PACKAGE_INFO = { + 'chrome_document': PackageInfo( + 'com.google.android.apps.chrome.document', + 'com.google.android.apps.chrome.document.ChromeLauncherActivity', + 'chrome-command-line', + 'chrome_devtools_remote'), + 'chrome': PackageInfo( + 'com.google.android.apps.chrome', + 'com.google.android.apps.chrome.Main', + 'chrome-command-line', + 'chrome_devtools_remote'), + 'chrome_beta': PackageInfo( + 'com.chrome.beta', + 'com.google.android.apps.chrome.Main', + 'chrome-command-line', + 'chrome_devtools_remote'), + 'chrome_stable': PackageInfo( + 'com.android.chrome', + 'com.google.android.apps.chrome.Main', + 'chrome-command-line', + 'chrome_devtools_remote'), + 'chrome_dev': PackageInfo( + 'com.chrome.dev', + 'com.google.android.apps.chrome.Main', + 'chrome-command-line', + 'chrome_devtools_remote'), + 'chrome_canary': PackageInfo( + 'com.chrome.canary', + 'com.google.android.apps.chrome.Main', + 'chrome-command-line', + 'chrome_devtools_remote'), + 'chrome_work': PackageInfo( + 'com.chrome.work', + 'com.google.android.apps.chrome.Main', + 'chrome-command-line', + 'chrome_devtools_remote'), + 'chromium': PackageInfo( + 'org.chromium.chrome', + 'com.google.android.apps.chrome.Main', + 'chrome-command-line', + 'chrome_devtools_remote'), + 'content_shell': PackageInfo( + 'org.chromium.content_shell_apk', + '.ContentShellActivity', + 'content-shell-command-line', + 'content_shell_devtools_remote'), +} diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/constants/file_system.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/constants/file_system.py new file mode 100644 index 0000000..bffec61 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/constants/file_system.py @@ -0,0 +1,5 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +TEST_EXECUTABLE_DIR = '/data/local/tmp' diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/decorators.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/decorators.py new file mode 100644 index 0000000..3844b49 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/decorators.py @@ -0,0 +1,176 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +""" +Function/method decorators that provide timeout and retry logic. +""" + +import functools +import itertools +import sys + +from devil.android import device_errors +from devil.utils import cmd_helper +from devil.utils import reraiser_thread +from devil.utils import timeout_retry + +DEFAULT_TIMEOUT_ATTR = '_default_timeout' +DEFAULT_RETRIES_ATTR = '_default_retries' + + +def _TimeoutRetryWrapper( + f, timeout_func, retries_func, retry_if_func=timeout_retry.AlwaysRetry, + pass_values=False): + """ Wraps a funcion with timeout and retry handling logic. + + Args: + f: The function to wrap. + timeout_func: A callable that returns the timeout value. + retries_func: A callable that returns the retries value. + pass_values: If True, passes the values returned by |timeout_func| and + |retries_func| to the wrapped function as 'timeout' and + 'retries' kwargs, respectively. + Returns: + The wrapped function. + """ + @functools.wraps(f) + def timeout_retry_wrapper(*args, **kwargs): + timeout = timeout_func(*args, **kwargs) + retries = retries_func(*args, **kwargs) + if pass_values: + kwargs['timeout'] = timeout + kwargs['retries'] = retries + + @functools.wraps(f) + def impl(): + return f(*args, **kwargs) + try: + if timeout_retry.CurrentTimeoutThreadGroup(): + # Don't wrap if there's already an outer timeout thread. + return impl() + else: + desc = '%s(%s)' % (f.__name__, ', '.join(itertools.chain( + (str(a) for a in args), + ('%s=%s' % (k, str(v)) for k, v in kwargs.iteritems())))) + return timeout_retry.Run(impl, timeout, retries, desc=desc, + retry_if_func=retry_if_func) + except reraiser_thread.TimeoutError as e: + raise device_errors.CommandTimeoutError(str(e)), None, ( + sys.exc_info()[2]) + except cmd_helper.TimeoutError as e: + raise device_errors.CommandTimeoutError(str(e)), None, ( + sys.exc_info()[2]) + return timeout_retry_wrapper + + +def WithTimeoutAndRetries(f): + """A decorator that handles timeouts and retries. + + 'timeout' and 'retries' kwargs must be passed to the function. + + Args: + f: The function to decorate. + Returns: + The decorated function. + """ + get_timeout = lambda *a, **kw: kw['timeout'] + get_retries = lambda *a, **kw: kw['retries'] + return _TimeoutRetryWrapper(f, get_timeout, get_retries) + + +def WithTimeoutAndConditionalRetries(retry_if_func): + """Returns a decorator that handles timeouts and, in some cases, retries. + + 'timeout' and 'retries' kwargs must be passed to the function. + + Args: + retry_if_func: A unary callable that takes an exception and returns + whether failures should be retried. + Returns: + The actual decorator. + """ + def decorator(f): + get_timeout = lambda *a, **kw: kw['timeout'] + get_retries = lambda *a, **kw: kw['retries'] + return _TimeoutRetryWrapper( + f, get_timeout, get_retries, retry_if_func=retry_if_func) + return decorator + + +def WithExplicitTimeoutAndRetries(timeout, retries): + """Returns a decorator that handles timeouts and retries. + + The provided |timeout| and |retries| values are always used. + + Args: + timeout: The number of seconds to wait for the decorated function to + return. Always used. + retries: The number of times the decorated function should be retried on + failure. Always used. + Returns: + The actual decorator. + """ + def decorator(f): + get_timeout = lambda *a, **kw: timeout + get_retries = lambda *a, **kw: retries + return _TimeoutRetryWrapper(f, get_timeout, get_retries) + return decorator + + +def WithTimeoutAndRetriesDefaults(default_timeout, default_retries): + """Returns a decorator that handles timeouts and retries. + + The provided |default_timeout| and |default_retries| values are used only + if timeout and retries values are not provided. + + Args: + default_timeout: The number of seconds to wait for the decorated function + to return. Only used if a 'timeout' kwarg is not passed + to the decorated function. + default_retries: The number of times the decorated function should be + retried on failure. Only used if a 'retries' kwarg is not + passed to the decorated function. + Returns: + The actual decorator. + """ + def decorator(f): + get_timeout = lambda *a, **kw: kw.get('timeout', default_timeout) + get_retries = lambda *a, **kw: kw.get('retries', default_retries) + return _TimeoutRetryWrapper(f, get_timeout, get_retries, pass_values=True) + return decorator + + +def WithTimeoutAndRetriesFromInstance( + default_timeout_name=DEFAULT_TIMEOUT_ATTR, + default_retries_name=DEFAULT_RETRIES_ATTR, + min_default_timeout=None): + """Returns a decorator that handles timeouts and retries. + + The provided |default_timeout_name| and |default_retries_name| are used to + get the default timeout value and the default retries value from the object + instance if timeout and retries values are not provided. + + Note that this should only be used to decorate methods, not functions. + + Args: + default_timeout_name: The name of the default timeout attribute of the + instance. + default_retries_name: The name of the default retries attribute of the + instance. + min_timeout: Miniumum timeout to be used when using instance timeout. + Returns: + The actual decorator. + """ + def decorator(f): + def get_timeout(inst, *_args, **kwargs): + ret = getattr(inst, default_timeout_name) + if min_default_timeout is not None: + ret = max(min_default_timeout, ret) + return kwargs.get('timeout', ret) + + def get_retries(inst, *_args, **kwargs): + return kwargs.get('retries', getattr(inst, default_retries_name)) + return _TimeoutRetryWrapper(f, get_timeout, get_retries, pass_values=True) + return decorator + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/decorators_test.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/decorators_test.py new file mode 100644 index 0000000..f60953e --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/decorators_test.py @@ -0,0 +1,332 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +""" +Unit tests for decorators.py. +""" + +# pylint: disable=W0613 + +import time +import traceback +import unittest + +from devil.android import decorators +from devil.android import device_errors +from devil.utils import reraiser_thread + +_DEFAULT_TIMEOUT = 30 +_DEFAULT_RETRIES = 3 + + +class DecoratorsTest(unittest.TestCase): + _decorated_function_called_count = 0 + + def testFunctionDecoratorDoesTimeouts(self): + """Tests that the base decorator handles the timeout logic.""" + DecoratorsTest._decorated_function_called_count = 0 + + @decorators.WithTimeoutAndRetries + def alwaysTimesOut(timeout=None, retries=None): + DecoratorsTest._decorated_function_called_count += 1 + time.sleep(100) + + start_time = time.time() + with self.assertRaises(device_errors.CommandTimeoutError): + alwaysTimesOut(timeout=1, retries=0) + elapsed_time = time.time() - start_time + self.assertTrue(elapsed_time >= 1) + self.assertEquals(1, DecoratorsTest._decorated_function_called_count) + + def testFunctionDecoratorDoesRetries(self): + """Tests that the base decorator handles the retries logic.""" + DecoratorsTest._decorated_function_called_count = 0 + + @decorators.WithTimeoutAndRetries + def alwaysRaisesCommandFailedError(timeout=None, retries=None): + DecoratorsTest._decorated_function_called_count += 1 + raise device_errors.CommandFailedError('testCommand failed') + + with self.assertRaises(device_errors.CommandFailedError): + alwaysRaisesCommandFailedError(timeout=30, retries=10) + self.assertEquals(11, DecoratorsTest._decorated_function_called_count) + + def testFunctionDecoratorRequiresParams(self): + """Tests that the base decorator requires timeout and retries params.""" + @decorators.WithTimeoutAndRetries + def requiresExplicitTimeoutAndRetries(timeout=None, retries=None): + return (timeout, retries) + + with self.assertRaises(KeyError): + requiresExplicitTimeoutAndRetries() + with self.assertRaises(KeyError): + requiresExplicitTimeoutAndRetries(timeout=10) + with self.assertRaises(KeyError): + requiresExplicitTimeoutAndRetries(retries=0) + expected_timeout = 10 + expected_retries = 1 + (actual_timeout, actual_retries) = ( + requiresExplicitTimeoutAndRetries(timeout=expected_timeout, + retries=expected_retries)) + self.assertEquals(expected_timeout, actual_timeout) + self.assertEquals(expected_retries, actual_retries) + + def testFunctionDecoratorTranslatesReraiserExceptions(self): + """Tests that the explicit decorator translates reraiser exceptions.""" + @decorators.WithTimeoutAndRetries + def alwaysRaisesProvidedException(exception, timeout=None, retries=None): + raise exception + + exception_desc = 'Reraiser thread timeout error' + with self.assertRaises(device_errors.CommandTimeoutError) as e: + alwaysRaisesProvidedException( + reraiser_thread.TimeoutError(exception_desc), + timeout=10, retries=1) + self.assertEquals(exception_desc, str(e.exception)) + + def testConditionalRetriesDecoratorRetries(self): + def do_not_retry_no_adb_error(exc): + return not isinstance(exc, device_errors.NoAdbError) + + actual_tries = [0] + + @decorators.WithTimeoutAndConditionalRetries(do_not_retry_no_adb_error) + def alwaysRaisesCommandFailedError(timeout=None, retries=None): + actual_tries[0] += 1 + raise device_errors.CommandFailedError('Command failed :(') + + with self.assertRaises(device_errors.CommandFailedError): + alwaysRaisesCommandFailedError(timeout=10, retries=10) + self.assertEquals(11, actual_tries[0]) + + def testConditionalRetriesDecoratorDoesntRetry(self): + def do_not_retry_no_adb_error(exc): + return not isinstance(exc, device_errors.NoAdbError) + + actual_tries = [0] + + @decorators.WithTimeoutAndConditionalRetries(do_not_retry_no_adb_error) + def alwaysRaisesNoAdbError(timeout=None, retries=None): + actual_tries[0] += 1 + raise device_errors.NoAdbError() + + with self.assertRaises(device_errors.NoAdbError): + alwaysRaisesNoAdbError(timeout=10, retries=10) + self.assertEquals(1, actual_tries[0]) + + def testDefaultsFunctionDecoratorDoesTimeouts(self): + """Tests that the defaults decorator handles timeout logic.""" + DecoratorsTest._decorated_function_called_count = 0 + + @decorators.WithTimeoutAndRetriesDefaults(1, 0) + def alwaysTimesOut(timeout=None, retries=None): + DecoratorsTest._decorated_function_called_count += 1 + time.sleep(100) + + start_time = time.time() + with self.assertRaises(device_errors.CommandTimeoutError): + alwaysTimesOut() + elapsed_time = time.time() - start_time + self.assertTrue(elapsed_time >= 1) + self.assertEquals(1, DecoratorsTest._decorated_function_called_count) + + DecoratorsTest._decorated_function_called_count = 0 + with self.assertRaises(device_errors.CommandTimeoutError): + alwaysTimesOut(timeout=2) + elapsed_time = time.time() - start_time + self.assertTrue(elapsed_time >= 2) + self.assertEquals(1, DecoratorsTest._decorated_function_called_count) + + def testDefaultsFunctionDecoratorDoesRetries(self): + """Tests that the defaults decorator handles retries logic.""" + DecoratorsTest._decorated_function_called_count = 0 + + @decorators.WithTimeoutAndRetriesDefaults(30, 10) + def alwaysRaisesCommandFailedError(timeout=None, retries=None): + DecoratorsTest._decorated_function_called_count += 1 + raise device_errors.CommandFailedError('testCommand failed') + + with self.assertRaises(device_errors.CommandFailedError): + alwaysRaisesCommandFailedError() + self.assertEquals(11, DecoratorsTest._decorated_function_called_count) + + DecoratorsTest._decorated_function_called_count = 0 + with self.assertRaises(device_errors.CommandFailedError): + alwaysRaisesCommandFailedError(retries=5) + self.assertEquals(6, DecoratorsTest._decorated_function_called_count) + + def testDefaultsFunctionDecoratorPassesValues(self): + """Tests that the defaults decorator passes timeout and retries kwargs.""" + @decorators.WithTimeoutAndRetriesDefaults(30, 10) + def alwaysReturnsTimeouts(timeout=None, retries=None): + return timeout + + self.assertEquals(30, alwaysReturnsTimeouts()) + self.assertEquals(120, alwaysReturnsTimeouts(timeout=120)) + + @decorators.WithTimeoutAndRetriesDefaults(30, 10) + def alwaysReturnsRetries(timeout=None, retries=None): + return retries + + self.assertEquals(10, alwaysReturnsRetries()) + self.assertEquals(1, alwaysReturnsRetries(retries=1)) + + def testDefaultsFunctionDecoratorTranslatesReraiserExceptions(self): + """Tests that the explicit decorator translates reraiser exceptions.""" + @decorators.WithTimeoutAndRetriesDefaults(30, 10) + def alwaysRaisesProvidedException(exception, timeout=None, retries=None): + raise exception + + exception_desc = 'Reraiser thread timeout error' + with self.assertRaises(device_errors.CommandTimeoutError) as e: + alwaysRaisesProvidedException( + reraiser_thread.TimeoutError(exception_desc)) + self.assertEquals(exception_desc, str(e.exception)) + + def testExplicitFunctionDecoratorDoesTimeouts(self): + """Tests that the explicit decorator handles timeout logic.""" + DecoratorsTest._decorated_function_called_count = 0 + + @decorators.WithExplicitTimeoutAndRetries(1, 0) + def alwaysTimesOut(): + DecoratorsTest._decorated_function_called_count += 1 + time.sleep(100) + + start_time = time.time() + with self.assertRaises(device_errors.CommandTimeoutError): + alwaysTimesOut() + elapsed_time = time.time() - start_time + self.assertTrue(elapsed_time >= 1) + self.assertEquals(1, DecoratorsTest._decorated_function_called_count) + + def testExplicitFunctionDecoratorDoesRetries(self): + """Tests that the explicit decorator handles retries logic.""" + DecoratorsTest._decorated_function_called_count = 0 + + @decorators.WithExplicitTimeoutAndRetries(30, 10) + def alwaysRaisesCommandFailedError(): + DecoratorsTest._decorated_function_called_count += 1 + raise device_errors.CommandFailedError('testCommand failed') + + with self.assertRaises(device_errors.CommandFailedError): + alwaysRaisesCommandFailedError() + self.assertEquals(11, DecoratorsTest._decorated_function_called_count) + + def testExplicitDecoratorTranslatesReraiserExceptions(self): + """Tests that the explicit decorator translates reraiser exceptions.""" + @decorators.WithExplicitTimeoutAndRetries(30, 10) + def alwaysRaisesProvidedException(exception): + raise exception + + exception_desc = 'Reraiser thread timeout error' + with self.assertRaises(device_errors.CommandTimeoutError) as e: + alwaysRaisesProvidedException( + reraiser_thread.TimeoutError(exception_desc)) + self.assertEquals(exception_desc, str(e.exception)) + + class _MethodDecoratorTestObject(object): + """An object suitable for testing the method decorator.""" + + def __init__(self, test_case, default_timeout=_DEFAULT_TIMEOUT, + default_retries=_DEFAULT_RETRIES): + self._test_case = test_case + self.default_timeout = default_timeout + self.default_retries = default_retries + self.function_call_counters = { + 'alwaysRaisesCommandFailedError': 0, + 'alwaysTimesOut': 0, + 'requiresExplicitTimeoutAndRetries': 0, + } + + @decorators.WithTimeoutAndRetriesFromInstance( + 'default_timeout', 'default_retries') + def alwaysTimesOut(self, timeout=None, retries=None): + self.function_call_counters['alwaysTimesOut'] += 1 + time.sleep(100) + self._test_case.assertFalse(True, msg='Failed to time out?') + + @decorators.WithTimeoutAndRetriesFromInstance( + 'default_timeout', 'default_retries') + def alwaysRaisesCommandFailedError(self, timeout=None, retries=None): + self.function_call_counters['alwaysRaisesCommandFailedError'] += 1 + raise device_errors.CommandFailedError('testCommand failed') + + # pylint: disable=no-self-use + + @decorators.WithTimeoutAndRetriesFromInstance( + 'default_timeout', 'default_retries') + def alwaysReturnsTimeout(self, timeout=None, retries=None): + return timeout + + @decorators.WithTimeoutAndRetriesFromInstance( + 'default_timeout', 'default_retries', min_default_timeout=100) + def alwaysReturnsTimeoutWithMin(self, timeout=None, retries=None): + return timeout + + @decorators.WithTimeoutAndRetriesFromInstance( + 'default_timeout', 'default_retries') + def alwaysReturnsRetries(self, timeout=None, retries=None): + return retries + + @decorators.WithTimeoutAndRetriesFromInstance( + 'default_timeout', 'default_retries') + def alwaysRaisesProvidedException(self, exception, timeout=None, + retries=None): + raise exception + + # pylint: enable=no-self-use + + def testMethodDecoratorDoesTimeout(self): + """Tests that the method decorator handles timeout logic.""" + test_obj = self._MethodDecoratorTestObject(self) + start_time = time.time() + with self.assertRaises(device_errors.CommandTimeoutError): + try: + test_obj.alwaysTimesOut(timeout=1, retries=0) + except: + traceback.print_exc() + raise + elapsed_time = time.time() - start_time + self.assertTrue(elapsed_time >= 1) + self.assertEquals(1, test_obj.function_call_counters['alwaysTimesOut']) + + def testMethodDecoratorDoesRetries(self): + """Tests that the method decorator handles retries logic.""" + test_obj = self._MethodDecoratorTestObject(self) + with self.assertRaises(device_errors.CommandFailedError): + try: + test_obj.alwaysRaisesCommandFailedError(retries=10) + except: + traceback.print_exc() + raise + self.assertEquals( + 11, test_obj.function_call_counters['alwaysRaisesCommandFailedError']) + + def testMethodDecoratorPassesValues(self): + """Tests that the method decorator passes timeout and retries kwargs.""" + test_obj = self._MethodDecoratorTestObject( + self, default_timeout=42, default_retries=31) + self.assertEquals(42, test_obj.alwaysReturnsTimeout()) + self.assertEquals(41, test_obj.alwaysReturnsTimeout(timeout=41)) + self.assertEquals(31, test_obj.alwaysReturnsRetries()) + self.assertEquals(32, test_obj.alwaysReturnsRetries(retries=32)) + + def testMethodDecoratorUsesMiniumumTimeout(self): + test_obj = self._MethodDecoratorTestObject( + self, default_timeout=42, default_retries=31) + self.assertEquals(100, test_obj.alwaysReturnsTimeoutWithMin()) + self.assertEquals(41, test_obj.alwaysReturnsTimeoutWithMin(timeout=41)) + + def testMethodDecoratorTranslatesReraiserExceptions(self): + test_obj = self._MethodDecoratorTestObject(self) + + exception_desc = 'Reraiser thread timeout error' + with self.assertRaises(device_errors.CommandTimeoutError) as e: + test_obj.alwaysRaisesProvidedException( + reraiser_thread.TimeoutError(exception_desc)) + self.assertEquals(exception_desc, str(e.exception)) + +if __name__ == '__main__': + unittest.main(verbosity=2) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_blacklist.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_blacklist.py new file mode 100644 index 0000000..010e996 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_blacklist.py @@ -0,0 +1,80 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import json +import logging +import os +import threading +import time + +logger = logging.getLogger(__name__) + + +class Blacklist(object): + + def __init__(self, path): + self._blacklist_lock = threading.RLock() + self._path = path + + def Read(self): + """Reads the blacklist from the blacklist file. + + Returns: + A dict containing bad devices. + """ + with self._blacklist_lock: + blacklist = dict() + if not os.path.exists(self._path): + return blacklist + + try: + with open(self._path, 'r') as f: + blacklist = json.load(f) + except (IOError, ValueError) as e: + logger.warning('Unable to read blacklist: %s', str(e)) + os.remove(self._path) + + if not isinstance(blacklist, dict): + logger.warning('Ignoring %s: %s (a dict was expected instead)', + self._path, blacklist) + blacklist = dict() + + return blacklist + + def Write(self, blacklist): + """Writes the provided blacklist to the blacklist file. + + Args: + blacklist: list of bad devices to write to the blacklist file. + """ + with self._blacklist_lock: + with open(self._path, 'w') as f: + json.dump(blacklist, f) + + def Extend(self, devices, reason='unknown'): + """Adds devices to blacklist file. + + Args: + devices: list of bad devices to be added to the blacklist file. + reason: string specifying the reason for blacklist (eg: 'unauthorized') + """ + timestamp = time.time() + event_info = { + 'timestamp': timestamp, + 'reason': reason, + } + device_dicts = {device: event_info for device in devices} + logger.info('Adding %s to blacklist %s for reason: %s', + ','.join(devices), self._path, reason) + with self._blacklist_lock: + blacklist = self.Read() + blacklist.update(device_dicts) + self.Write(blacklist) + + def Reset(self): + """Erases the blacklist file if it exists.""" + logger.info('Resetting blacklist %s', self._path) + with self._blacklist_lock: + if os.path.exists(self._path): + os.remove(self._path) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_blacklist_test.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_blacklist_test.py new file mode 100644 index 0000000..bc44da5 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_blacklist_test.py @@ -0,0 +1,38 @@ +#! /usr/bin/env python +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import tempfile +import unittest + +from devil.android import device_blacklist + + +class DeviceBlacklistTest(unittest.TestCase): + + def testBlacklistFileDoesNotExist(self): + with tempfile.NamedTemporaryFile() as blacklist_file: + # Allow the temporary file to be deleted. + pass + + test_blacklist = device_blacklist.Blacklist(blacklist_file.name) + self.assertEquals({}, test_blacklist.Read()) + + def testBlacklistFileIsEmpty(self): + try: + with tempfile.NamedTemporaryFile(delete=False) as blacklist_file: + # Allow the temporary file to be closed. + pass + + test_blacklist = device_blacklist.Blacklist(blacklist_file.name) + self.assertEquals({}, test_blacklist.Read()) + + finally: + if os.path.exists(blacklist_file.name): + os.remove(blacklist_file.name) + + +if __name__ == '__main__': + unittest.main() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_errors.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_errors.py new file mode 100644 index 0000000..57f3615 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_errors.py @@ -0,0 +1,196 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +""" +Exception classes raised by AdbWrapper and DeviceUtils. + +The class hierarchy for device exceptions is: + + base_error.BaseError + +-- CommandFailedError + | +-- AdbCommandFailedError + | | +-- AdbShellCommandFailedError + | +-- FastbootCommandFailedError + | +-- DeviceVersionError + | +-- DeviceChargingError + +-- CommandTimeoutError + +-- DeviceUnreachableError + +-- NoDevicesError + +-- MultipleDevicesError + +-- NoAdbError + +""" + +from devil import base_error +from devil.utils import cmd_helper +from devil.utils import parallelizer + + +class CommandFailedError(base_error.BaseError): + """Exception for command failures.""" + + def __init__(self, message, device_serial=None): + device_leader = '(device: %s)' % device_serial + if device_serial is not None and not message.startswith(device_leader): + message = '%s %s' % (device_leader, message) + self.device_serial = device_serial + super(CommandFailedError, self).__init__(message) + + def __eq__(self, other): + return (super(CommandFailedError, self).__eq__(other) + and self.device_serial == other.device_serial) + + def __ne__(self, other): + return not self == other + + +class _BaseCommandFailedError(CommandFailedError): + """Base Exception for adb and fastboot command failures.""" + + def __init__(self, args, output, status=None, device_serial=None, + message=None): + self.args = args + self.output = output + self.status = status + if not message: + adb_cmd = ' '.join(cmd_helper.SingleQuote(arg) for arg in self.args) + message = ['adb %s: failed ' % adb_cmd] + if status: + message.append('with exit status %s ' % self.status) + if output: + message.append('and output:\n') + message.extend('- %s\n' % line for line in output.splitlines()) + else: + message.append('and no output.') + message = ''.join(message) + super(_BaseCommandFailedError, self).__init__(message, device_serial) + + def __eq__(self, other): + return (super(_BaseCommandFailedError, self).__eq__(other) + and self.args == other.args + and self.output == other.output + and self.status == other.status) + + def __ne__(self, other): + return not self == other + + def __reduce__(self): + """Support pickling.""" + result = [None, None, None, None, None] + super_result = super(_BaseCommandFailedError, self).__reduce__() + for i in range(len(super_result)): + result[i] = super_result[i] + + # Update the args used to reconstruct this exception. + result[1] = ( + self.args, self.output, self.status, self.device_serial, self.message) + return tuple(result) + + +class AdbCommandFailedError(_BaseCommandFailedError): + """Exception for adb command failures.""" + + def __init__(self, args, output, status=None, device_serial=None, + message=None): + super(AdbCommandFailedError, self).__init__( + args, output, status=status, message=message, + device_serial=device_serial) + + +class FastbootCommandFailedError(_BaseCommandFailedError): + """Exception for fastboot command failures.""" + + def __init__(self, args, output, status=None, device_serial=None, + message=None): + super(FastbootCommandFailedError, self).__init__( + args, output, status=status, message=message, + device_serial=device_serial) + + +class DeviceVersionError(CommandFailedError): + """Exception for device version failures.""" + + def __init__(self, message, device_serial=None): + super(DeviceVersionError, self).__init__(message, device_serial) + + +class AdbShellCommandFailedError(AdbCommandFailedError): + """Exception for shell command failures run via adb.""" + + def __init__(self, command, output, status, device_serial=None): + self.command = command + message = ['shell command run via adb failed on the device:\n', + ' command: %s\n' % command] + message.append(' exit status: %s\n' % status) + if output: + message.append(' output:\n') + if isinstance(output, basestring): + output_lines = output.splitlines() + else: + output_lines = output + message.extend(' - %s\n' % line for line in output_lines) + else: + message.append(" output: ''\n") + message = ''.join(message) + super(AdbShellCommandFailedError, self).__init__( + ['shell', command], output, status, device_serial, message) + + def __reduce__(self): + """Support pickling.""" + result = [None, None, None, None, None] + super_result = super(AdbShellCommandFailedError, self).__reduce__() + for i in range(len(super_result)): + result[i] = super_result[i] + + # Update the args used to reconstruct this exception. + result[1] = (self.command, self.output, self.status, self.device_serial) + return tuple(result) + + +class CommandTimeoutError(base_error.BaseError): + """Exception for command timeouts.""" + pass + + +class DeviceUnreachableError(base_error.BaseError): + """Exception for device unreachable failures.""" + pass + + +class NoDevicesError(base_error.BaseError): + """Exception for having no devices attached.""" + + def __init__(self, msg=None): + super(NoDevicesError, self).__init__( + msg or 'No devices attached.', is_infra_error=True) + + +class MultipleDevicesError(base_error.BaseError): + """Exception for having multiple attached devices without selecting one.""" + + def __init__(self, devices): + parallel_devices = parallelizer.Parallelizer(devices) + descriptions = parallel_devices.pMap( + lambda d: d.build_description).pGet(None) + msg = ('More than one device available. Use -d/--device to select a device ' + 'by serial.\n\nAvailable devices:\n') + for d, desc in zip(devices, descriptions): + msg += ' %s (%s)\n' % (d, desc) + + super(MultipleDevicesError, self).__init__(msg, is_infra_error=True) + + +class NoAdbError(base_error.BaseError): + """Exception for being unable to find ADB.""" + + def __init__(self, msg=None): + super(NoAdbError, self).__init__( + msg or 'Unable to find adb.', is_infra_error=True) + + +class DeviceChargingError(CommandFailedError): + """Exception for device charging errors.""" + + def __init__(self, message, device_serial=None): + super(DeviceChargingError, self).__init__(message, device_serial) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_errors_test.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_errors_test.py new file mode 100644 index 0000000..68a4f16 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_errors_test.py @@ -0,0 +1,72 @@ +#! /usr/bin/env python +# Copyright 2017 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import pickle +import sys +import unittest + +from devil.android import device_errors + + +class DeviceErrorsTest(unittest.TestCase): + + def assertIsPicklable(self, original): + pickled = pickle.dumps(original) + reconstructed = pickle.loads(pickled) + self.assertEquals(original, reconstructed) + + def testPicklable_AdbCommandFailedError(self): + original = device_errors.AdbCommandFailedError( + ['these', 'are', 'adb', 'args'], 'adb failure output', status=':(', + device_serial='0123456789abcdef') + self.assertIsPicklable(original) + + def testPicklable_AdbShellCommandFailedError(self): + original = device_errors.AdbShellCommandFailedError( + 'foo', 'erroneous foo output', '1', device_serial='0123456789abcdef') + self.assertIsPicklable(original) + + def testPicklable_CommandFailedError(self): + original = device_errors.CommandFailedError( + 'sample command failed') + self.assertIsPicklable(original) + + def testPicklable_CommandTimeoutError(self): + original = device_errors.CommandTimeoutError( + 'My fake command timed out :(') + self.assertIsPicklable(original) + + def testPicklable_DeviceChargingError(self): + original = device_errors.DeviceChargingError( + 'Fake device failed to charge') + self.assertIsPicklable(original) + + def testPicklable_DeviceUnreachableError(self): + original = device_errors.DeviceUnreachableError + self.assertIsPicklable(original) + + def testPicklable_FastbootCommandFailedError(self): + original = device_errors.FastbootCommandFailedError( + ['these', 'are', 'fastboot', 'args'], 'fastboot failure output', + status=':(', device_serial='0123456789abcdef') + self.assertIsPicklable(original) + + def testPicklable_MultipleDevicesError(self): + # TODO(jbudorick): Implement this after implementing a stable DeviceUtils + # fake. https://github.com/catapult-project/catapult/issues/3145 + pass + + def testPicklable_NoAdbError(self): + original = device_errors.NoAdbError() + self.assertIsPicklable(original) + + def testPicklable_NoDevicesError(self): + original = device_errors.NoDevicesError() + self.assertIsPicklable(original) + + + +if __name__ == '__main__': + sys.exit(unittest.main()) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_list.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_list.py new file mode 100644 index 0000000..0fbb0f1 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_list.py @@ -0,0 +1,52 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""A module to keep track of devices across builds.""" + +import json +import logging +import os + +logger = logging.getLogger(__name__) + + +def GetPersistentDeviceList(file_name): + """Returns a list of devices. + + Args: + file_name: the file name containing a list of devices. + + Returns: List of device serial numbers that were on the bot. + """ + if not os.path.isfile(file_name): + logger.warning("Device file %s doesn't exist.", file_name) + return [] + + try: + with open(file_name) as f: + devices = json.load(f) + if not isinstance(devices, list) or not all(isinstance(d, basestring) + for d in devices): + logger.warning('Unrecognized device file format: %s', devices) + return [] + return [d for d in devices if d != '(error)'] + except ValueError: + logger.exception( + 'Error reading device file %s. Falling back to old format.', file_name) + + # TODO(bpastene) Remove support for old unstructured file format. + with open(file_name) as f: + return [d for d in f.read().splitlines() if d != '(error)'] + + +def WritePersistentDeviceList(file_name, device_list): + path = os.path.dirname(file_name) + assert isinstance(device_list, list) + # If there is a problem with ADB "(error)" can be added to the device list. + # These should be removed before saving. + device_list = [d for d in device_list if d != '(error)'] + if not os.path.exists(path): + os.makedirs(path) + with open(file_name, 'w') as f: + json.dump(device_list, f) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_signal.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_signal.py new file mode 100644 index 0000000..2cec46d --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_signal.py @@ -0,0 +1,41 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Defines constants for signals that should be supported on devices. + +Note: Obtained by running `kill -l` on a user device. +""" + + +SIGHUP = 1 # Hangup +SIGINT = 2 # Interrupt +SIGQUIT = 3 # Quit +SIGILL = 4 # Illegal instruction +SIGTRAP = 5 # Trap +SIGABRT = 6 # Aborted +SIGBUS = 7 # Bus error +SIGFPE = 8 # Floating point exception +SIGKILL = 9 # Killed +SIGUSR1 = 10 # User signal 1 +SIGSEGV = 11 # Segmentation fault +SIGUSR2 = 12 # User signal 2 +SIGPIPE = 13 # Broken pipe +SIGALRM = 14 # Alarm clock +SIGTERM = 15 # Terminated +SIGSTKFLT = 16 # Stack fault +SIGCHLD = 17 # Child exited +SIGCONT = 18 # Continue +SIGSTOP = 19 # Stopped (signal) +SIGTSTP = 20 # Stopped +SIGTTIN = 21 # Stopped (tty input) +SIGTTOU = 22 # Stopped (tty output) +SIGURG = 23 # Urgent I/O condition +SIGXCPU = 24 # CPU time limit exceeded +SIGXFSZ = 25 # File size limit exceeded +SIGVTALRM = 26 # Virtual timer expired +SIGPROF = 27 # Profiling timer expired +SIGWINCH = 28 # Window size changed +SIGIO = 29 # I/O possible +SIGPWR = 30 # Power failure +SIGSYS = 31 # Bad system call diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_temp_file.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_temp_file.py new file mode 100644 index 0000000..4d0c7ad --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_temp_file.py @@ -0,0 +1,63 @@ +# Copyright 2013 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""A temp file that automatically gets pushed and deleted from a device.""" + +# pylint: disable=W0622 + +import posixpath +import random +import threading + +from devil.android import device_errors +from devil.utils import cmd_helper + + +class DeviceTempFile(object): + + def __init__(self, adb, suffix='', prefix='temp_file', dir='/data/local/tmp'): + """Find an unused temporary file path on the device. + + When this object is closed, the file will be deleted on the device. + + Args: + adb: An instance of AdbWrapper + suffix: The suffix of the name of the temp file. + prefix: The prefix of the name of the temp file. + dir: The directory on the device where to place the temp file. + Raises: + ValueError if any of suffix, prefix, or dir are None. + """ + if None in (dir, prefix, suffix): + m = 'Provided None path component. (dir: %s, prefix: %s, suffix: %s)' % ( + dir, prefix, suffix) + raise ValueError(m) + + self._adb = adb + # Python's random module use 52-bit numbers according to its docs. + random_hex = hex(random.randint(0, 2 ** 52))[2:] + self.name = posixpath.join(dir, '%s-%s%s' % (prefix, random_hex, suffix)) + self.name_quoted = cmd_helper.SingleQuote(self.name) + + def close(self): + """Deletes the temporary file from the device.""" + # ignore exception if the file is already gone. + def delete_temporary_file(): + try: + self._adb.Shell('rm -f %s' % self.name_quoted, expect_status=None) + except device_errors.AdbCommandFailedError: + # file does not exist on Android version without 'rm -f' support (ICS) + pass + + # It shouldn't matter when the temp file gets deleted, so do so + # asynchronously. + threading.Thread( + target=delete_temporary_file, + name='delete_temporary_file(%s)' % self._adb.GetDeviceSerial()).start() + + def __enter__(self): + return self + + def __exit__(self, type, value, traceback): + self.close() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_test_case.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_test_case.py new file mode 100644 index 0000000..1148b54 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_test_case.py @@ -0,0 +1,54 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import threading +import unittest + +from devil.android import device_errors +from devil.android import device_utils + +_devices_lock = threading.Lock() +_devices_condition = threading.Condition(_devices_lock) +_devices = set() + + +def PrepareDevices(*_args): + + raw_devices = device_utils.DeviceUtils.HealthyDevices() + live_devices = [] + for d in raw_devices: + try: + d.WaitUntilFullyBooted(timeout=5, retries=0) + live_devices.append(str(d)) + except (device_errors.CommandFailedError, + device_errors.CommandTimeoutError, + device_errors.DeviceUnreachableError): + pass + with _devices_lock: + _devices.update(set(live_devices)) + + if not _devices: + raise Exception('No live devices attached.') + + +class DeviceTestCase(unittest.TestCase): + + def __init__(self, *args, **kwargs): + super(DeviceTestCase, self).__init__(*args, **kwargs) + self.serial = None + + #override + def setUp(self): + super(DeviceTestCase, self).setUp() + with _devices_lock: + while not _devices: + _devices_condition.wait(5) + self.serial = _devices.pop() + + #override + def tearDown(self): + super(DeviceTestCase, self).tearDown() + with _devices_lock: + _devices.add(self.serial) + _devices_condition.notify() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_utils.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_utils.py new file mode 100644 index 0000000..51f7194 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_utils.py @@ -0,0 +1,2654 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Provides a variety of device interactions based on adb. + +Eventually, this will be based on adb_wrapper. +""" +# pylint: disable=unused-argument + +import calendar +import collections +import itertools +import json +import logging +import multiprocessing +import os +import posixpath +import pprint +import re +import shutil +import stat +import tempfile +import time +import threading +import uuid +import zipfile + +from devil import base_error +from devil import devil_env +from devil.utils import cmd_helper +from devil.android import apk_helper +from devil.android import device_signal +from devil.android import decorators +from devil.android import device_errors +from devil.android import device_temp_file +from devil.android import install_commands +from devil.android import logcat_monitor +from devil.android import md5sum +from devil.android.constants import chrome +from devil.android.sdk import adb_wrapper +from devil.android.sdk import intent +from devil.android.sdk import keyevent +from devil.android.sdk import split_select +from devil.android.sdk import version_codes +from devil.utils import host_utils +from devil.utils import parallelizer +from devil.utils import reraiser_thread +from devil.utils import timeout_retry +from devil.utils import zip_utils + +logger = logging.getLogger(__name__) + +_DEFAULT_TIMEOUT = 30 +_DEFAULT_RETRIES = 3 + +# A sentinel object for default values +# TODO(jbudorick,perezju): revisit how default values are handled by +# the timeout_retry decorators. +DEFAULT = object() + +_RESTART_ADBD_SCRIPT = """ + trap '' HUP + trap '' TERM + trap '' PIPE + function restart() { + stop adbd + start adbd + } + restart & +""" + +# Not all permissions can be set. +_PERMISSIONS_BLACKLIST = [ + 'android.permission.ACCESS_LOCATION_EXTRA_COMMANDS', + 'android.permission.ACCESS_MOCK_LOCATION', + 'android.permission.ACCESS_NETWORK_STATE', + 'android.permission.ACCESS_NOTIFICATION_POLICY', + 'android.permission.ACCESS_WIFI_STATE', + 'android.permission.AUTHENTICATE_ACCOUNTS', + 'android.permission.BLUETOOTH', + 'android.permission.BLUETOOTH_ADMIN', + 'android.permission.BROADCAST_STICKY', + 'android.permission.CHANGE_NETWORK_STATE', + 'android.permission.CHANGE_WIFI_MULTICAST_STATE', + 'android.permission.CHANGE_WIFI_STATE', + 'android.permission.DISABLE_KEYGUARD', + 'android.permission.DOWNLOAD_WITHOUT_NOTIFICATION', + 'android.permission.EXPAND_STATUS_BAR', + 'android.permission.GET_PACKAGE_SIZE', + 'android.permission.INSTALL_SHORTCUT', + 'android.permission.INTERNET', + 'android.permission.KILL_BACKGROUND_PROCESSES', + 'android.permission.MANAGE_ACCOUNTS', + 'android.permission.MODIFY_AUDIO_SETTINGS', + 'android.permission.NFC', + 'android.permission.READ_SYNC_SETTINGS', + 'android.permission.READ_SYNC_STATS', + 'android.permission.RECEIVE_BOOT_COMPLETED', + 'android.permission.RECORD_VIDEO', + 'android.permission.REORDER_TASKS', + 'android.permission.REQUEST_INSTALL_PACKAGES', + 'android.permission.RUN_INSTRUMENTATION', + 'android.permission.SET_ALARM', + 'android.permission.SET_TIME_ZONE', + 'android.permission.SET_WALLPAPER', + 'android.permission.SET_WALLPAPER_HINTS', + 'android.permission.TRANSMIT_IR', + 'android.permission.USE_CREDENTIALS', + 'android.permission.USE_FINGERPRINT', + 'android.permission.VIBRATE', + 'android.permission.WAKE_LOCK', + 'android.permission.WRITE_SYNC_SETTINGS', + 'com.android.browser.permission.READ_HISTORY_BOOKMARKS', + 'com.android.browser.permission.WRITE_HISTORY_BOOKMARKS', + 'com.android.launcher.permission.INSTALL_SHORTCUT', + 'com.chrome.permission.DEVICE_EXTRAS', + 'com.google.android.apps.now.CURRENT_ACCOUNT_ACCESS', + 'com.google.android.c2dm.permission.RECEIVE', + 'com.google.android.providers.gsf.permission.READ_GSERVICES', + 'com.sec.enterprise.knox.MDM_CONTENT_PROVIDER', +] +for package_info in chrome.PACKAGE_INFO.itervalues(): + _PERMISSIONS_BLACKLIST.extend([ + '%s.permission.C2D_MESSAGE' % package_info.package, + '%s.permission.READ_WRITE_BOOKMARK_FOLDERS' % package_info.package, + '%s.TOS_ACKED' % package_info.package]) + +_CURRENT_FOCUS_CRASH_RE = re.compile( + r'\s*mCurrentFocus.*Application (Error|Not Responding): (\S+)}') + +_GETPROP_RE = re.compile(r'\[(.*?)\]: \[(.*?)\]') + +# Regex to parse the long (-l) output of 'ls' command, c.f. +# https://github.com/landley/toybox/blob/master/toys/posix/ls.c#L446 +_LONG_LS_OUTPUT_RE = re.compile( + r'(?P<st_mode>[\w-]{10})\s+' # File permissions + r'(?:(?P<st_nlink>\d+)\s+)?' # Number of links (optional) + r'(?P<st_owner>\w+)\s+' # Name of owner + r'(?P<st_group>\w+)\s+' # Group of owner + r'(?:' # Either ... + r'(?P<st_rdev_major>\d+),\s+' # Device major, and + r'(?P<st_rdev_minor>\d+)\s+' # Device minor + r'|' # .. or + r'(?P<st_size>\d+)\s+' # Size in bytes + r')?' # .. or nothing + r'(?P<st_mtime>\d{4}-\d\d-\d\d \d\d:\d\d)\s+' # Modification date/time + r'(?P<filename>.+?)' # File name + r'(?: -> (?P<symbolic_link_to>.+))?' # Symbolic link (optional) + r'$' # End of string +) +_LS_DATE_FORMAT = '%Y-%m-%d %H:%M' +_FILE_MODE_RE = re.compile(r'[dbclps-](?:[r-][w-][xSs-]){2}[r-][w-][xTt-]$') +_FILE_MODE_KIND = { + 'd': stat.S_IFDIR, 'b': stat.S_IFBLK, 'c': stat.S_IFCHR, + 'l': stat.S_IFLNK, 'p': stat.S_IFIFO, 's': stat.S_IFSOCK, + '-': stat.S_IFREG} +_FILE_MODE_PERMS = [ + stat.S_IRUSR, stat.S_IWUSR, stat.S_IXUSR, + stat.S_IRGRP, stat.S_IWGRP, stat.S_IXGRP, + stat.S_IROTH, stat.S_IWOTH, stat.S_IXOTH, +] +_FILE_MODE_SPECIAL = [ + ('s', stat.S_ISUID), + ('s', stat.S_ISGID), + ('t', stat.S_ISVTX), +] +_SELINUX_MODE = { + 'enforcing': True, + 'permissive': False, + 'disabled': None +} +# Some devices require different logic for checking if root is necessary +_SPECIAL_ROOT_DEVICE_LIST = [ + 'marlin', + 'sailfish', +] + + +@decorators.WithExplicitTimeoutAndRetries( + _DEFAULT_TIMEOUT, _DEFAULT_RETRIES) +def GetAVDs(): + """Returns a list of Android Virtual Devices. + + Returns: + A list containing the configured AVDs. + """ + lines = cmd_helper.GetCmdOutput([ + os.path.join(devil_env.config.LocalPath('android_sdk'), + 'tools', 'android'), + 'list', 'avd']).splitlines() + avds = [] + for line in lines: + if 'Name:' not in line: + continue + key, value = (s.strip() for s in line.split(':', 1)) + if key == 'Name': + avds.append(value) + return avds + + +@decorators.WithExplicitTimeoutAndRetries( + _DEFAULT_TIMEOUT, _DEFAULT_RETRIES) +def RestartServer(): + """Restarts the adb server. + + Raises: + CommandFailedError if we fail to kill or restart the server. + """ + def adb_killed(): + return not adb_wrapper.AdbWrapper.IsServerOnline() + + def adb_started(): + return adb_wrapper.AdbWrapper.IsServerOnline() + + adb_wrapper.AdbWrapper.KillServer() + if not timeout_retry.WaitFor(adb_killed, wait_period=1, max_tries=5): + # TODO(perezju): raise an exception after fixng http://crbug.com/442319 + logger.warning('Failed to kill adb server') + adb_wrapper.AdbWrapper.StartServer() + if not timeout_retry.WaitFor(adb_started, wait_period=1, max_tries=5): + raise device_errors.CommandFailedError('Failed to start adb server') + + +def _ParseModeString(mode_str): + """Parse a mode string, e.g. 'drwxrwxrwx', into a st_mode value. + + Effectively the reverse of |mode_to_string| in, e.g.: + https://github.com/landley/toybox/blob/master/lib/lib.c#L896 + """ + if not _FILE_MODE_RE.match(mode_str): + raise ValueError('Unexpected file mode %r', mode_str) + mode = _FILE_MODE_KIND[mode_str[0]] + for c, flag in zip(mode_str[1:], _FILE_MODE_PERMS): + if c != '-' and c.islower(): + mode |= flag + for c, (t, flag) in zip(mode_str[3::3], _FILE_MODE_SPECIAL): + if c.lower() == t: + mode |= flag + return mode + + +def _GetTimeStamp(): + """Return a basic ISO 8601 time stamp with the current local time.""" + return time.strftime('%Y%m%dT%H%M%S', time.localtime()) + + +def _JoinLines(lines): + # makes sure that the last line is also terminated, and is more memory + # efficient than first appending an end-line to each line and then joining + # all of them together. + return ''.join(s for line in lines for s in (line, '\n')) + + +def _CreateAdbWrapper(device): + if isinstance(device, adb_wrapper.AdbWrapper): + return device + else: + return adb_wrapper.AdbWrapper(device) + + +def _FormatPartialOutputError(output): + lines = output.splitlines() if isinstance(output, basestring) else output + message = ['Partial output found:'] + if len(lines) > 11: + message.extend('- %s' % line for line in lines[:5]) + message.extend('<snip>') + message.extend('- %s' % line for line in lines[-5:]) + else: + message.extend('- %s' % line for line in lines) + return '\n'.join(message) + + +class DeviceUtils(object): + + _MAX_ADB_COMMAND_LENGTH = 512 + _MAX_ADB_OUTPUT_LENGTH = 32768 + _LAUNCHER_FOCUSED_RE = re.compile( + r'\s*mCurrentFocus.*(Launcher|launcher).*') + _VALID_SHELL_VARIABLE = re.compile('^[a-zA-Z_][a-zA-Z0-9_]*$') + + LOCAL_PROPERTIES_PATH = posixpath.join('/', 'data', 'local.prop') + + # Property in /data/local.prop that controls Java assertions. + JAVA_ASSERT_PROPERTY = 'dalvik.vm.enableassertions' + + def __init__(self, device, enable_device_files_cache=False, + default_timeout=_DEFAULT_TIMEOUT, + default_retries=_DEFAULT_RETRIES): + """DeviceUtils constructor. + + Args: + device: Either a device serial, an existing AdbWrapper instance, or an + an existing AndroidCommands instance. + enable_device_files_cache: For PushChangedFiles(), cache checksums of + pushed files rather than recomputing them on a subsequent call. + default_timeout: An integer containing the default number of seconds to + wait for an operation to complete if no explicit value is provided. + default_retries: An integer containing the default number or times an + operation should be retried on failure if no explicit value is provided. + """ + self.adb = None + if isinstance(device, basestring): + self.adb = _CreateAdbWrapper(device) + elif isinstance(device, adb_wrapper.AdbWrapper): + self.adb = device + else: + raise ValueError('Unsupported device value: %r' % device) + self._commands_installed = None + self._default_timeout = default_timeout + self._default_retries = default_retries + self._enable_device_files_cache = enable_device_files_cache + self._cache = {} + self._client_caches = {} + self._cache_lock = threading.RLock() + assert hasattr(self, decorators.DEFAULT_TIMEOUT_ATTR) + assert hasattr(self, decorators.DEFAULT_RETRIES_ATTR) + + self._ClearCache() + + @property + def serial(self): + """Returns the device serial.""" + return self.adb.GetDeviceSerial() + + def __eq__(self, other): + """Checks whether |other| refers to the same device as |self|. + + Args: + other: The object to compare to. This can be a basestring, an instance + of adb_wrapper.AdbWrapper, or an instance of DeviceUtils. + Returns: + Whether |other| refers to the same device as |self|. + """ + return self.serial == str(other) + + def __lt__(self, other): + """Compares two instances of DeviceUtils. + + This merely compares their serial numbers. + + Args: + other: The instance of DeviceUtils to compare to. + Returns: + Whether |self| is less than |other|. + """ + return self.serial < other.serial + + def __str__(self): + """Returns the device serial.""" + return self.serial + + @decorators.WithTimeoutAndRetriesFromInstance() + def IsOnline(self, timeout=None, retries=None): + """Checks whether the device is online. + + Args: + timeout: timeout in seconds + retries: number of retries + + Returns: + True if the device is online, False otherwise. + + Raises: + CommandTimeoutError on timeout. + """ + try: + return self.adb.GetState() == 'device' + except base_error.BaseError as exc: + logger.info('Failed to get state: %s', exc) + return False + + @decorators.WithTimeoutAndRetriesFromInstance() + def HasRoot(self, timeout=None, retries=None): + """Checks whether or not adbd has root privileges. + + Args: + timeout: timeout in seconds + retries: number of retries + + Returns: + True if adbd has root privileges, False otherwise. + + Raises: + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. + """ + try: + if self.product_name in _SPECIAL_ROOT_DEVICE_LIST: + return self.GetProp('service.adb.root') == '1' + self.RunShellCommand(['ls', '/root'], check_return=True) + return True + except device_errors.AdbCommandFailedError: + return False + + def NeedsSU(self, timeout=DEFAULT, retries=DEFAULT): + """Checks whether 'su' is needed to access protected resources. + + Args: + timeout: timeout in seconds + retries: number of retries + + Returns: + True if 'su' is available on the device and is needed to to access + protected resources; False otherwise if either 'su' is not available + (e.g. because the device has a user build), or not needed (because adbd + already has root privileges). + + Raises: + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. + """ + if 'needs_su' not in self._cache: + cmd = '%s && ! ls /root' % self._Su('ls /root') + if self.product_name in _SPECIAL_ROOT_DEVICE_LIST: + if self.HasRoot(): + self._cache['needs_su'] = False + return False + cmd = 'which which && which su' + try: + self.RunShellCommand(cmd, shell=True, check_return=True, + timeout=self._default_timeout if timeout is DEFAULT else timeout, + retries=self._default_retries if retries is DEFAULT else retries) + self._cache['needs_su'] = True + except device_errors.AdbCommandFailedError: + self._cache['needs_su'] = False + return self._cache['needs_su'] + + + def _Su(self, command): + if self.build_version_sdk >= version_codes.MARSHMALLOW: + return 'su 0 %s' % command + return 'su -c %s' % command + + @decorators.WithTimeoutAndRetriesFromInstance() + def EnableRoot(self, timeout=None, retries=None): + """Restarts adbd with root privileges. + + Args: + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandFailedError if root could not be enabled. + CommandTimeoutError on timeout. + """ + if 'needs_su' in self._cache: + del self._cache['needs_su'] + + try: + self.adb.Root() + except device_errors.AdbCommandFailedError: + if self.IsUserBuild(): + raise device_errors.CommandFailedError( + 'Unable to root device with user build.', str(self)) + else: + raise # Failed probably due to some other reason. + + def device_online_with_root(): + try: + self.adb.WaitForDevice() + return self.GetProp('service.adb.root', cache=False) == '1' + except (device_errors.AdbCommandFailedError, + device_errors.DeviceUnreachableError): + return False + + timeout_retry.WaitFor(device_online_with_root, wait_period=1) + + @decorators.WithTimeoutAndRetriesFromInstance() + def IsUserBuild(self, timeout=None, retries=None): + """Checks whether or not the device is running a user build. + + Args: + timeout: timeout in seconds + retries: number of retries + + Returns: + True if the device is running a user build, False otherwise (i.e. if + it's running a userdebug build). + + Raises: + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. + """ + return self.build_type == 'user' + + @decorators.WithTimeoutAndRetriesFromInstance() + def GetExternalStoragePath(self, timeout=None, retries=None): + """Get the device's path to its SD card. + + Args: + timeout: timeout in seconds + retries: number of retries + + Returns: + The device's path to its SD card. + + Raises: + CommandFailedError if the external storage path could not be determined. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. + """ + self._EnsureCacheInitialized() + if not self._cache['external_storage']: + raise device_errors.CommandFailedError('$EXTERNAL_STORAGE is not set', + str(self)) + return self._cache['external_storage'] + + @decorators.WithTimeoutAndRetriesFromInstance() + def GetApplicationPaths(self, package, timeout=None, retries=None): + """Get the paths of the installed apks on the device for the given package. + + Args: + package: Name of the package. + + Returns: + List of paths to the apks on the device for the given package. + """ + return self._GetApplicationPathsInternal(package) + + def _GetApplicationPathsInternal(self, package, skip_cache=False): + cached_result = self._cache['package_apk_paths'].get(package) + if cached_result is not None and not skip_cache: + if package in self._cache['package_apk_paths_to_verify']: + self._cache['package_apk_paths_to_verify'].remove(package) + # Don't verify an app that is not thought to be installed. We are + # concerned only with apps we think are installed having been + # uninstalled manually. + if cached_result and not self.PathExists(cached_result): + cached_result = None + self._cache['package_apk_checksums'].pop(package, 0) + if cached_result is not None: + return list(cached_result) + # 'pm path' is liable to incorrectly exit with a nonzero number starting + # in Lollipop. + # TODO(jbudorick): Check if this is fixed as new Android versions are + # released to put an upper bound on this. + should_check_return = (self.build_version_sdk < version_codes.LOLLIPOP) + output = self.RunShellCommand( + ['pm', 'path', package], check_return=should_check_return) + apks = [] + for line in output: + if not line.startswith('package:'): + continue + apks.append(line[len('package:'):]) + if not apks and output: + raise device_errors.CommandFailedError( + 'pm path returned: %r' % '\n'.join(output), str(self)) + self._cache['package_apk_paths'][package] = list(apks) + return apks + + @decorators.WithTimeoutAndRetriesFromInstance() + def GetApplicationVersion(self, package, timeout=None, retries=None): + """Get the version name of a package installed on the device. + + Args: + package: Name of the package. + + Returns: + A string with the version name or None if the package is not found + on the device. + """ + output = self.RunShellCommand( + ['dumpsys', 'package', package], check_return=True) + if not output: + return None + for line in output: + line = line.strip() + if line.startswith('versionName='): + return line[len('versionName='):] + raise device_errors.CommandFailedError( + 'Version name for %s not found on dumpsys output' % package, str(self)) + + @decorators.WithTimeoutAndRetriesFromInstance() + def GetApplicationDataDirectory(self, package, timeout=None, retries=None): + """Get the data directory on the device for the given package. + + Args: + package: Name of the package. + + Returns: + The package's data directory. + Raises: + CommandFailedError if the package's data directory can't be found, + whether because it's not installed or otherwise. + """ + output = self._RunPipedShellCommand( + 'pm dump %s | grep dataDir=' % cmd_helper.SingleQuote(package)) + for line in output: + _, _, dataDir = line.partition('dataDir=') + if dataDir: + return dataDir + raise device_errors.CommandFailedError( + 'Could not find data directory for %s', package) + + @decorators.WithTimeoutAndRetriesFromInstance() + def WaitUntilFullyBooted(self, wifi=False, timeout=None, retries=None): + """Wait for the device to fully boot. + + This means waiting for the device to boot, the package manager to be + available, and the SD card to be ready. It can optionally mean waiting + for wifi to come up, too. + + Args: + wifi: A boolean indicating if we should wait for wifi to come up or not. + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandFailedError on failure. + CommandTimeoutError if one of the component waits times out. + DeviceUnreachableError if the device becomes unresponsive. + """ + def sd_card_ready(): + try: + self.RunShellCommand(['test', '-d', self.GetExternalStoragePath()], + check_return=True) + return True + except device_errors.AdbCommandFailedError: + return False + + def pm_ready(): + try: + return self._GetApplicationPathsInternal('android', skip_cache=True) + except device_errors.CommandFailedError: + return False + + def boot_completed(): + try: + return self.GetProp('sys.boot_completed', cache=False) == '1' + except device_errors.CommandFailedError: + return False + + def wifi_enabled(): + return 'Wi-Fi is enabled' in self.RunShellCommand(['dumpsys', 'wifi'], + check_return=False) + + self.adb.WaitForDevice() + timeout_retry.WaitFor(sd_card_ready) + timeout_retry.WaitFor(pm_ready) + timeout_retry.WaitFor(boot_completed) + if wifi: + timeout_retry.WaitFor(wifi_enabled) + + REBOOT_DEFAULT_TIMEOUT = 10 * _DEFAULT_TIMEOUT + + @decorators.WithTimeoutAndRetriesFromInstance( + min_default_timeout=REBOOT_DEFAULT_TIMEOUT) + def Reboot(self, block=True, wifi=False, timeout=None, retries=None): + """Reboot the device. + + Args: + block: A boolean indicating if we should wait for the reboot to complete. + wifi: A boolean indicating if we should wait for wifi to be enabled after + the reboot. The option has no effect unless |block| is also True. + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. + """ + def device_offline(): + return not self.IsOnline() + + self.adb.Reboot() + self._ClearCache() + timeout_retry.WaitFor(device_offline, wait_period=1) + if block: + self.WaitUntilFullyBooted(wifi=wifi) + + INSTALL_DEFAULT_TIMEOUT = 4 * _DEFAULT_TIMEOUT + + @decorators.WithTimeoutAndRetriesFromInstance( + min_default_timeout=INSTALL_DEFAULT_TIMEOUT) + def Install(self, apk, allow_downgrade=False, reinstall=False, + permissions=None, timeout=None, retries=None): + """Install an APK. + + Noop if an identical APK is already installed. + + Args: + apk: An ApkHelper instance or string containing the path to the APK. + allow_downgrade: A boolean indicating if we should allow downgrades. + reinstall: A boolean indicating if we should keep any existing app data. + permissions: Set of permissions to set. If not set, finds permissions with + apk helper. To set no permissions, pass []. + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandFailedError if the installation fails. + CommandTimeoutError if the installation times out. + DeviceUnreachableError on missing device. + """ + self._InstallInternal(apk, None, allow_downgrade=allow_downgrade, + reinstall=reinstall, permissions=permissions) + + @decorators.WithTimeoutAndRetriesFromInstance( + min_default_timeout=INSTALL_DEFAULT_TIMEOUT) + def InstallSplitApk(self, base_apk, split_apks, allow_downgrade=False, + reinstall=False, allow_cached_props=False, + permissions=None, timeout=None, retries=None): + """Install a split APK. + + Noop if all of the APK splits are already installed. + + Args: + base_apk: An ApkHelper instance or string containing the path to the base + APK. + split_apks: A list of strings of paths of all of the APK splits. + allow_downgrade: A boolean indicating if we should allow downgrades. + reinstall: A boolean indicating if we should keep any existing app data. + allow_cached_props: Whether to use cached values for device properties. + permissions: Set of permissions to set. If not set, finds permissions with + apk helper. To set no permissions, pass []. + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandFailedError if the installation fails. + CommandTimeoutError if the installation times out. + DeviceUnreachableError on missing device. + DeviceVersionError if device SDK is less than Android L. + """ + self._InstallInternal(base_apk, split_apks, reinstall=reinstall, + allow_cached_props=allow_cached_props, + permissions=permissions, + allow_downgrade=allow_downgrade) + + def _InstallInternal(self, base_apk, split_apks, allow_downgrade=False, + reinstall=False, allow_cached_props=False, + permissions=None): + if split_apks: + self._CheckSdkLevel(version_codes.LOLLIPOP) + + base_apk = apk_helper.ToHelper(base_apk) + + all_apks = [base_apk.path] + if split_apks: + all_apks += split_select.SelectSplits( + self, base_apk.path, split_apks, allow_cached_props=allow_cached_props) + if len(all_apks) == 1: + logger.warning('split-select did not select any from %s', split_apks) + + missing_apks = [apk for apk in all_apks if not os.path.exists(apk)] + if missing_apks: + raise device_errors.CommandFailedError( + 'Attempted to install non-existent apks: %s' + % pprint.pformat(missing_apks)) + + package_name = base_apk.GetPackageName() + device_apk_paths = self._GetApplicationPathsInternal(package_name) + + apks_to_install = None + host_checksums = None + if not device_apk_paths: + apks_to_install = all_apks + elif len(device_apk_paths) > 1 and not split_apks: + logger.warning( + 'Installing non-split APK when split APK was previously installed') + apks_to_install = all_apks + elif len(device_apk_paths) == 1 and split_apks: + logger.warning( + 'Installing split APK when non-split APK was previously installed') + apks_to_install = all_apks + else: + try: + apks_to_install, host_checksums = ( + self._ComputeStaleApks(package_name, all_apks)) + except EnvironmentError as e: + logger.warning('Error calculating md5: %s', e) + apks_to_install, host_checksums = all_apks, None + if apks_to_install and not reinstall: + self.Uninstall(package_name) + apks_to_install = all_apks + + if apks_to_install: + # Assume that we won't know the resulting device state. + self._cache['package_apk_paths'].pop(package_name, 0) + self._cache['package_apk_checksums'].pop(package_name, 0) + if split_apks: + partial = package_name if len(apks_to_install) < len(all_apks) else None + self.adb.InstallMultiple( + apks_to_install, partial=partial, reinstall=reinstall, + allow_downgrade=allow_downgrade) + else: + self.adb.Install( + base_apk.path, reinstall=reinstall, allow_downgrade=allow_downgrade) + if (permissions is None + and self.build_version_sdk >= version_codes.MARSHMALLOW): + permissions = base_apk.GetPermissions() + self.GrantPermissions(package_name, permissions) + # Upon success, we know the device checksums, but not their paths. + if host_checksums is not None: + self._cache['package_apk_checksums'][package_name] = host_checksums + else: + # Running adb install terminates running instances of the app, so to be + # consistent, we explicitly terminate it when skipping the install. + self.ForceStop(package_name) + + @decorators.WithTimeoutAndRetriesFromInstance() + def Uninstall(self, package_name, keep_data=False, timeout=None, + retries=None): + """Remove the app |package_name| from the device. + + This is a no-op if the app is not already installed. + + Args: + package_name: The package to uninstall. + keep_data: (optional) Whether to keep the data and cache directories. + timeout: Timeout in seconds. + retries: Number of retries. + + Raises: + CommandFailedError if the uninstallation fails. + CommandTimeoutError if the uninstallation times out. + DeviceUnreachableError on missing device. + """ + installed = self._GetApplicationPathsInternal(package_name) + if not installed: + return + try: + self.adb.Uninstall(package_name, keep_data) + self._cache['package_apk_paths'][package_name] = [] + self._cache['package_apk_checksums'][package_name] = set() + except: + # Clear cache since we can't be sure of the state. + self._cache['package_apk_paths'].pop(package_name, 0) + self._cache['package_apk_checksums'].pop(package_name, 0) + raise + + def _CheckSdkLevel(self, required_sdk_level): + """Raises an exception if the device does not have the required SDK level. + """ + if self.build_version_sdk < required_sdk_level: + raise device_errors.DeviceVersionError( + ('Requires SDK level %s, device is SDK level %s' % + (required_sdk_level, self.build_version_sdk)), + device_serial=self.serial) + + @decorators.WithTimeoutAndRetriesFromInstance() + def RunShellCommand(self, cmd, shell=False, check_return=False, cwd=None, + env=None, run_as=None, as_root=False, single_line=False, + large_output=False, raw_output=False, timeout=None, + retries=None): + """Run an ADB shell command. + + The command to run |cmd| should be a sequence of program arguments + (preferred) or a single string with a shell script to run. + + When |cmd| is a sequence, it is assumed to contain the name of the command + to run followed by its arguments. In this case, arguments are passed to the + command exactly as given, preventing any further processing by the shell. + This allows callers to easily pass arguments with spaces or special + characters without having to worry about quoting rules. Whenever possible, + it is recomended to pass |cmd| as a sequence. + + When |cmd| is passed as a single string, |shell| should be set to True. + The command will be interpreted and run by the shell on the device, + allowing the use of shell features such as pipes, wildcards, or variables. + Failing to set shell=True will issue a warning, but this will be changed + to a hard failure in the future (see: catapult:#3242). + + This behaviour is consistent with that of command runners in cmd_helper as + well as Python's own subprocess.Popen. + + TODO(perezju) Change the default of |check_return| to True when callers + have switched to the new behaviour. + + Args: + cmd: A sequence containing the command to run and its arguments, or a + string with a shell script to run (should also set shell=True). + shell: A boolean indicating whether shell features may be used in |cmd|. + check_return: A boolean indicating whether or not the return code should + be checked. + cwd: The device directory in which the command should be run. + env: The environment variables with which the command should be run. + run_as: A string containing the package as which the command should be + run. + as_root: A boolean indicating whether the shell command should be run + with root privileges. + single_line: A boolean indicating if only a single line of output is + expected. + large_output: Uses a work-around for large shell command output. Without + this large output will be truncated. + raw_output: Whether to only return the raw output + (no splitting into lines). + timeout: timeout in seconds + retries: number of retries + + Returns: + If single_line is False, the output of the command as a list of lines, + otherwise, a string with the unique line of output emmited by the command + (with the optional newline at the end stripped). + + Raises: + AdbCommandFailedError if check_return is True and the exit code of + the command run on the device is non-zero. + CommandFailedError if single_line is True but the output contains two or + more lines. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. + """ + def env_quote(key, value): + if not DeviceUtils._VALID_SHELL_VARIABLE.match(key): + raise KeyError('Invalid shell variable name %r' % key) + # using double quotes here to allow interpolation of shell variables + return '%s=%s' % (key, cmd_helper.DoubleQuote(value)) + + def run(cmd): + return self.adb.Shell(cmd) + + def handle_check_return(cmd): + try: + return run(cmd) + except device_errors.AdbCommandFailedError as exc: + if check_return: + raise + else: + return exc.output + + def handle_large_command(cmd): + if len(cmd) < self._MAX_ADB_COMMAND_LENGTH: + return handle_check_return(cmd) + else: + with device_temp_file.DeviceTempFile(self.adb, suffix='.sh') as script: + self._WriteFileWithPush(script.name, cmd) + logger.info('Large shell command will be run from file: %s ...', + cmd[:self._MAX_ADB_COMMAND_LENGTH]) + return handle_check_return('sh %s' % script.name_quoted) + + def handle_large_output(cmd, large_output_mode): + if large_output_mode: + with device_temp_file.DeviceTempFile(self.adb) as large_output_file: + cmd = '( %s )>%s' % (cmd, large_output_file.name) + logger.debug('Large output mode enabled. Will write output to ' + 'device and read results from file.') + handle_large_command(cmd) + return self.ReadFile(large_output_file.name, force_pull=True) + else: + try: + return handle_large_command(cmd) + except device_errors.AdbCommandFailedError as exc: + if exc.status is None: + logger.error(_FormatPartialOutputError(exc.output)) + logger.warning('Attempting to run in large_output mode.') + logger.warning('Use RunShellCommand(..., large_output=True) for ' + 'shell commands that expect a lot of output.') + return handle_large_output(cmd, True) + else: + raise + + if isinstance(cmd, basestring): + if not shell: + logging.warning( + 'The command to run should preferably be passed as a sequence of' + ' args. If shell features are needed (pipes, wildcards, variables)' + ' clients should explicitly set shell=True.') + else: + cmd = ' '.join(cmd_helper.SingleQuote(s) for s in cmd) + if env: + env = ' '.join(env_quote(k, v) for k, v in env.iteritems()) + cmd = '%s %s' % (env, cmd) + if cwd: + cmd = 'cd %s && %s' % (cmd_helper.SingleQuote(cwd), cmd) + if run_as: + cmd = 'run-as %s sh -c %s' % (cmd_helper.SingleQuote(run_as), + cmd_helper.SingleQuote(cmd)) + if as_root and self.NeedsSU(): + # "su -c sh -c" allows using shell features in |cmd| + cmd = self._Su('sh -c %s' % cmd_helper.SingleQuote(cmd)) + + output = handle_large_output(cmd, large_output) + + if raw_output: + return output + + output = output.splitlines() + if single_line: + if not output: + return '' + elif len(output) == 1: + return output[0] + else: + msg = 'one line of output was expected, but got: %s' + raise device_errors.CommandFailedError(msg % output, str(self)) + else: + return output + + def _RunPipedShellCommand(self, script, **kwargs): + PIPESTATUS_LEADER = 'PIPESTATUS: ' + + script += '; echo "%s${PIPESTATUS[@]}"' % PIPESTATUS_LEADER + kwargs.update(shell=True, check_return=True) + output = self.RunShellCommand(script, **kwargs) + pipestatus_line = output[-1] + + if not pipestatus_line.startswith(PIPESTATUS_LEADER): + logger.error('Pipe exit statuses of shell script missing.') + raise device_errors.AdbShellCommandFailedError( + script, output, status=None, + device_serial=self.serial) + + output = output[:-1] + statuses = [ + int(s) for s in pipestatus_line[len(PIPESTATUS_LEADER):].split()] + if any(statuses): + raise device_errors.AdbShellCommandFailedError( + script, output, status=statuses, + device_serial=self.serial) + return output + + @decorators.WithTimeoutAndRetriesFromInstance() + def KillAll(self, process_name, exact=False, signum=device_signal.SIGKILL, + as_root=False, blocking=False, quiet=False, + timeout=None, retries=None): + """Kill all processes with the given name on the device. + + Args: + process_name: A string containing the name of the process to kill. + exact: A boolean indicating whether to kill all processes matching + the string |process_name| exactly, or all of those which contain + |process_name| as a substring. Defaults to False. + signum: An integer containing the signal number to send to kill. Defaults + to SIGKILL (9). + as_root: A boolean indicating whether the kill should be executed with + root privileges. + blocking: A boolean indicating whether we should wait until all processes + with the given |process_name| are dead. + quiet: A boolean indicating whether to ignore the fact that no processes + to kill were found. + timeout: timeout in seconds + retries: number of retries + + Returns: + The number of processes attempted to kill. + + Raises: + CommandFailedError if no process was killed and |quiet| is False. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. + """ + procs_pids = self.GetPids(process_name) + if exact: + procs_pids = {process_name: procs_pids.get(process_name, [])} + pids = set(itertools.chain(*procs_pids.values())) + if not pids: + if quiet: + return 0 + else: + raise device_errors.CommandFailedError( + 'No process "%s"' % process_name, str(self)) + + logger.info( + 'KillAll(%r, ...) attempting to kill the following:', process_name) + for name, ids in procs_pids.iteritems(): + for i in ids: + logger.info(' %05s %s', str(i), name) + + cmd = ['kill', '-%d' % signum] + sorted(pids) + self.RunShellCommand(cmd, as_root=as_root, check_return=True) + + def all_pids_killed(): + procs_pids_remain = self.GetPids(process_name) + return not pids.intersection(itertools.chain(*procs_pids_remain.values())) + + if blocking: + timeout_retry.WaitFor(all_pids_killed, wait_period=0.1) + + return len(pids) + + @decorators.WithTimeoutAndRetriesFromInstance() + def StartActivity(self, intent_obj, blocking=False, trace_file_name=None, + force_stop=False, timeout=None, retries=None): + """Start package's activity on the device. + + Args: + intent_obj: An Intent object to send. + blocking: A boolean indicating whether we should wait for the activity to + finish launching. + trace_file_name: If present, a string that both indicates that we want to + profile the activity and contains the path to which the + trace should be saved. + force_stop: A boolean indicating whether we should stop the activity + before starting it. + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandFailedError if the activity could not be started. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. + """ + cmd = ['am', 'start'] + if blocking: + cmd.append('-W') + if trace_file_name: + cmd.extend(['--start-profiler', trace_file_name]) + if force_stop: + cmd.append('-S') + cmd.extend(intent_obj.am_args) + for line in self.RunShellCommand(cmd, check_return=True): + if line.startswith('Error:'): + raise device_errors.CommandFailedError(line, str(self)) + + @decorators.WithTimeoutAndRetriesFromInstance() + def StartInstrumentation(self, component, finish=True, raw=False, + extras=None, timeout=None, retries=None): + if extras is None: + extras = {} + + cmd = ['am', 'instrument'] + if finish: + cmd.append('-w') + if raw: + cmd.append('-r') + for k, v in extras.iteritems(): + cmd.extend(['-e', str(k), str(v)]) + cmd.append(component) + + # Store the package name in a shell variable to help the command stay under + # the _MAX_ADB_COMMAND_LENGTH limit. + package = component.split('/')[0] + shell_snippet = 'p=%s;%s' % (package, + cmd_helper.ShrinkToSnippet(cmd, 'p', package)) + return self.RunShellCommand(shell_snippet, shell=True, check_return=True, + large_output=True) + + @decorators.WithTimeoutAndRetriesFromInstance() + def BroadcastIntent(self, intent_obj, timeout=None, retries=None): + """Send a broadcast intent. + + Args: + intent: An Intent to broadcast. + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. + """ + cmd = ['am', 'broadcast'] + intent_obj.am_args + self.RunShellCommand(cmd, check_return=True) + + @decorators.WithTimeoutAndRetriesFromInstance() + def GoHome(self, timeout=None, retries=None): + """Return to the home screen and obtain launcher focus. + + This command launches the home screen and attempts to obtain + launcher focus until the timeout is reached. + + Args: + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. + """ + def is_launcher_focused(): + output = self.RunShellCommand(['dumpsys', 'window', 'windows'], + check_return=True, large_output=True) + return any(self._LAUNCHER_FOCUSED_RE.match(l) for l in output) + + def dismiss_popups(): + # There is a dialog present; attempt to get rid of it. + # Not all dialogs can be dismissed with back. + self.SendKeyEvent(keyevent.KEYCODE_ENTER) + self.SendKeyEvent(keyevent.KEYCODE_BACK) + return is_launcher_focused() + + # If Home is already focused, return early to avoid unnecessary work. + if is_launcher_focused(): + return + + self.StartActivity( + intent.Intent(action='android.intent.action.MAIN', + category='android.intent.category.HOME'), + blocking=True) + + if not is_launcher_focused(): + timeout_retry.WaitFor(dismiss_popups, wait_period=1) + + @decorators.WithTimeoutAndRetriesFromInstance() + def ForceStop(self, package, timeout=None, retries=None): + """Close the application. + + Args: + package: A string containing the name of the package to stop. + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. + """ + if self.GetPids(package): + self.RunShellCommand(['am', 'force-stop', package], check_return=True) + + @decorators.WithTimeoutAndRetriesFromInstance() + def ClearApplicationState( + self, package, permissions=None, timeout=None, retries=None): + """Clear all state for the given package. + + Args: + package: A string containing the name of the package to stop. + permissions: List of permissions to set after clearing data. + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. + """ + # Check that the package exists before clearing it for android builds below + # JB MR2. Necessary because calling pm clear on a package that doesn't exist + # may never return. + if ((self.build_version_sdk >= version_codes.JELLY_BEAN_MR2) + or self._GetApplicationPathsInternal(package)): + self.RunShellCommand(['pm', 'clear', package], check_return=True) + self.GrantPermissions(package, permissions) + + @decorators.WithTimeoutAndRetriesFromInstance() + def SendKeyEvent(self, keycode, timeout=None, retries=None): + """Sends a keycode to the device. + + See the devil.android.sdk.keyevent module for suitable keycode values. + + Args: + keycode: A integer keycode to send to the device. + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. + """ + self.RunShellCommand(['input', 'keyevent', format(keycode, 'd')], + check_return=True) + + PUSH_CHANGED_FILES_DEFAULT_TIMEOUT = 10 * _DEFAULT_TIMEOUT + + @decorators.WithTimeoutAndRetriesFromInstance( + min_default_timeout=PUSH_CHANGED_FILES_DEFAULT_TIMEOUT) + def PushChangedFiles(self, host_device_tuples, timeout=None, + retries=None, delete_device_stale=False): + """Push files to the device, skipping files that don't need updating. + + When a directory is pushed, it is traversed recursively on the host and + all files in it are pushed to the device as needed. + Additionally, if delete_device_stale option is True, + files that exist on the device but don't exist on the host are deleted. + + Args: + host_device_tuples: A list of (host_path, device_path) tuples, where + |host_path| is an absolute path of a file or directory on the host + that should be minimially pushed to the device, and |device_path| is + an absolute path of the destination on the device. + timeout: timeout in seconds + retries: number of retries + delete_device_stale: option to delete stale files on device + + Raises: + CommandFailedError on failure. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. + """ + + all_changed_files = [] + all_stale_files = [] + missing_dirs = [] + cache_commit_funcs = [] + for h, d in host_device_tuples: + assert os.path.isabs(h) and posixpath.isabs(d) + h = os.path.realpath(h) + changed_files, up_to_date_files, stale_files, cache_commit_func = ( + self._GetChangedAndStaleFiles(h, d, delete_device_stale)) + all_changed_files += changed_files + all_stale_files += stale_files + cache_commit_funcs.append(cache_commit_func) + if changed_files and not up_to_date_files and not stale_files: + if os.path.isdir(h): + missing_dirs.append(d) + else: + missing_dirs.append(posixpath.dirname(d)) + + if delete_device_stale and all_stale_files: + self.RunShellCommand(['rm', '-f'] + all_stale_files, check_return=True) + + if all_changed_files: + if missing_dirs: + self.RunShellCommand(['mkdir', '-p'] + missing_dirs, check_return=True) + self._PushFilesImpl(host_device_tuples, all_changed_files) + for func in cache_commit_funcs: + func() + + def _GetChangedAndStaleFiles(self, host_path, device_path, track_stale=False): + """Get files to push and delete + + Args: + host_path: an absolute path of a file or directory on the host + device_path: an absolute path of a file or directory on the device + track_stale: whether to bother looking for stale files (slower) + + Returns: + a four-element tuple + 1st element: a list of (host_files_path, device_files_path) tuples to push + 2nd element: a list of host_files_path that are up-to-date + 3rd element: a list of stale files under device_path, or [] when + track_stale == False + 4th element: a cache commit function. + """ + try: + # Length calculations below assume no trailing /. + host_path = host_path.rstrip('/') + device_path = device_path.rstrip('/') + + specific_device_paths = [device_path] + ignore_other_files = not track_stale and os.path.isdir(host_path) + if ignore_other_files: + specific_device_paths = [] + for root, _, filenames in os.walk(host_path): + relative_dir = root[len(host_path) + 1:] + specific_device_paths.extend( + posixpath.join(device_path, relative_dir, f) for f in filenames) + + def calculate_host_checksums(): + return md5sum.CalculateHostMd5Sums([host_path]) + + def calculate_device_checksums(): + if self._enable_device_files_cache: + cache_entry = self._cache['device_path_checksums'].get(device_path) + if cache_entry and cache_entry[0] == ignore_other_files: + return dict(cache_entry[1]) + + sums = md5sum.CalculateDeviceMd5Sums(specific_device_paths, self) + + cache_entry = [ignore_other_files, sums] + self._cache['device_path_checksums'][device_path] = cache_entry + return dict(sums) + + host_checksums, device_checksums = reraiser_thread.RunAsync(( + calculate_host_checksums, + calculate_device_checksums)) + except EnvironmentError as e: + logger.warning('Error calculating md5: %s', e) + return ([(host_path, device_path)], [], [], lambda: 0) + + to_push = [] + up_to_date = [] + to_delete = [] + if os.path.isfile(host_path): + host_checksum = host_checksums.get(host_path) + device_checksum = device_checksums.get(device_path) + if host_checksum == device_checksum: + up_to_date.append(host_path) + else: + to_push.append((host_path, device_path)) + else: + for host_abs_path, host_checksum in host_checksums.iteritems(): + device_abs_path = posixpath.join( + device_path, os.path.relpath(host_abs_path, host_path)) + device_checksum = device_checksums.pop(device_abs_path, None) + if device_checksum == host_checksum: + up_to_date.append(host_abs_path) + else: + to_push.append((host_abs_path, device_abs_path)) + to_delete = device_checksums.keys() + + def cache_commit_func(): + new_sums = {posixpath.join(device_path, path[len(host_path) + 1:]): val + for path, val in host_checksums.iteritems()} + cache_entry = [ignore_other_files, new_sums] + self._cache['device_path_checksums'][device_path] = cache_entry + + return (to_push, up_to_date, to_delete, cache_commit_func) + + def _ComputeDeviceChecksumsForApks(self, package_name): + ret = self._cache['package_apk_checksums'].get(package_name) + if ret is None: + device_paths = self._GetApplicationPathsInternal(package_name) + file_to_checksums = md5sum.CalculateDeviceMd5Sums(device_paths, self) + ret = set(file_to_checksums.values()) + self._cache['package_apk_checksums'][package_name] = ret + return ret + + def _ComputeStaleApks(self, package_name, host_apk_paths): + def calculate_host_checksums(): + return md5sum.CalculateHostMd5Sums(host_apk_paths) + + def calculate_device_checksums(): + return self._ComputeDeviceChecksumsForApks(package_name) + + host_checksums, device_checksums = reraiser_thread.RunAsync(( + calculate_host_checksums, calculate_device_checksums)) + stale_apks = [k for (k, v) in host_checksums.iteritems() + if v not in device_checksums] + return stale_apks, set(host_checksums.values()) + + def _PushFilesImpl(self, host_device_tuples, files): + if not files: + return + + size = sum(host_utils.GetRecursiveDiskUsage(h) for h, _ in files) + file_count = len(files) + dir_size = sum(host_utils.GetRecursiveDiskUsage(h) + for h, _ in host_device_tuples) + dir_file_count = 0 + for h, _ in host_device_tuples: + if os.path.isdir(h): + dir_file_count += sum(len(f) for _r, _d, f in os.walk(h)) + else: + dir_file_count += 1 + + push_duration = self._ApproximateDuration( + file_count, file_count, size, False) + dir_push_duration = self._ApproximateDuration( + len(host_device_tuples), dir_file_count, dir_size, False) + zip_duration = self._ApproximateDuration(1, 1, size, True) + + if (dir_push_duration < push_duration and dir_push_duration < zip_duration + # TODO(jbudorick): Resume directory pushing once clients have switched + # to 1.0.36-compatible syntax. + and False): + self._PushChangedFilesIndividually(host_device_tuples) + elif push_duration < zip_duration: + self._PushChangedFilesIndividually(files) + elif self._commands_installed is False: + # Already tried and failed to install unzip command. + self._PushChangedFilesIndividually(files) + elif not self._PushChangedFilesZipped( + files, [d for _, d in host_device_tuples]): + self._PushChangedFilesIndividually(files) + + def _MaybeInstallCommands(self): + if self._commands_installed is None: + try: + if not install_commands.Installed(self): + install_commands.InstallCommands(self) + self._commands_installed = True + except device_errors.CommandFailedError as e: + logger.warning('unzip not available: %s', str(e)) + self._commands_installed = False + return self._commands_installed + + @staticmethod + def _ApproximateDuration(adb_calls, file_count, byte_count, is_zipping): + # We approximate the time to push a set of files to a device as: + # t = c1 * a + c2 * f + c3 + b / c4 + b / (c5 * c6), where + # t: total time (sec) + # c1: adb call time delay (sec) + # a: number of times adb is called (unitless) + # c2: push time delay (sec) + # f: number of files pushed via adb (unitless) + # c3: zip time delay (sec) + # c4: zip rate (bytes/sec) + # b: total number of bytes (bytes) + # c5: transfer rate (bytes/sec) + # c6: compression ratio (unitless) + + # All of these are approximations. + ADB_CALL_PENALTY = 0.1 # seconds + ADB_PUSH_PENALTY = 0.01 # seconds + ZIP_PENALTY = 2.0 # seconds + ZIP_RATE = 10000000.0 # bytes / second + TRANSFER_RATE = 2000000.0 # bytes / second + COMPRESSION_RATIO = 2.0 # unitless + + adb_call_time = ADB_CALL_PENALTY * adb_calls + adb_push_setup_time = ADB_PUSH_PENALTY * file_count + if is_zipping: + zip_time = ZIP_PENALTY + byte_count / ZIP_RATE + transfer_time = byte_count / (TRANSFER_RATE * COMPRESSION_RATIO) + else: + zip_time = 0 + transfer_time = byte_count / TRANSFER_RATE + return adb_call_time + adb_push_setup_time + zip_time + transfer_time + + def _PushChangedFilesIndividually(self, files): + for h, d in files: + self.adb.Push(h, d) + + def _PushChangedFilesZipped(self, files, dirs): + with tempfile.NamedTemporaryFile(suffix='.zip') as zip_file: + zip_proc = multiprocessing.Process( + target=DeviceUtils._CreateDeviceZip, + args=(zip_file.name, files)) + zip_proc.start() + try: + # While it's zipping, ensure the unzip command exists on the device. + if not self._MaybeInstallCommands(): + zip_proc.terminate() + return False + + # Warm up NeedsSU cache while we're still zipping. + self.NeedsSU() + with device_temp_file.DeviceTempFile( + self.adb, suffix='.zip') as device_temp: + zip_proc.join() + self.adb.Push(zip_file.name, device_temp.name) + quoted_dirs = ' '.join(cmd_helper.SingleQuote(d) for d in dirs) + self.RunShellCommand( + 'unzip %s&&chmod -R 777 %s' % (device_temp.name, quoted_dirs), + shell=True, as_root=True, + env={'PATH': '%s:$PATH' % install_commands.BIN_DIR}, + check_return=True) + finally: + if zip_proc.is_alive(): + zip_proc.terminate() + return True + + @staticmethod + def _CreateDeviceZip(zip_path, host_device_tuples): + with zipfile.ZipFile(zip_path, 'w') as zip_file: + for host_path, device_path in host_device_tuples: + zip_utils.WriteToZipFile(zip_file, host_path, device_path) + + # TODO(nednguyen): remove this and migrate the callsite to PathExists(). + @decorators.WithTimeoutAndRetriesFromInstance() + def FileExists(self, device_path, timeout=None, retries=None): + """Checks whether the given file exists on the device. + + Arguments are the same as PathExists. + """ + return self.PathExists(device_path, timeout=timeout, retries=retries) + + @decorators.WithTimeoutAndRetriesFromInstance() + def PathExists(self, device_paths, as_root=False, timeout=None, retries=None): + """Checks whether the given path(s) exists on the device. + + Args: + device_path: A string containing the absolute path to the file on the + device, or an iterable of paths to check. + as_root: Whether root permissions should be use to check for the existence + of the given path(s). + timeout: timeout in seconds + retries: number of retries + + Returns: + True if the all given paths exist on the device, False otherwise. + + Raises: + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. + """ + paths = device_paths + if isinstance(paths, basestring): + paths = (paths,) + if not paths: + return True + cmd = ['test', '-e', paths[0]] + for p in paths[1:]: + cmd.extend(['-a', '-e', p]) + try: + self.RunShellCommand(cmd, as_root=as_root, check_return=True, + timeout=timeout, retries=retries) + return True + except device_errors.CommandFailedError: + return False + + @decorators.WithTimeoutAndRetriesFromInstance() + def RemovePath(self, device_path, force=False, recursive=False, + as_root=False, timeout=None, retries=None): + """Removes the given path(s) from the device. + + Args: + device_path: A string containing the absolute path to the file on the + device, or an iterable of paths to check. + force: Whether to remove the path(s) with force (-f). + recursive: Whether to remove any directories in the path(s) recursively. + as_root: Whether root permissions should be use to remove the given + path(s). + timeout: timeout in seconds + retries: number of retries + """ + args = ['rm'] + if force: + args.append('-f') + if recursive: + args.append('-r') + if isinstance(device_path, basestring): + args.append(device_path) + else: + args.extend(device_path) + self.RunShellCommand(args, as_root=as_root, check_return=True) + + + @decorators.WithTimeoutAndRetriesFromInstance() + def PullFile(self, device_path, host_path, timeout=None, retries=None): + """Pull a file from the device. + + Args: + device_path: A string containing the absolute path of the file to pull + from the device. + host_path: A string containing the absolute path of the destination on + the host. + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandFailedError on failure. + CommandTimeoutError on timeout. + """ + # Create the base dir if it doesn't exist already + dirname = os.path.dirname(host_path) + if dirname and not os.path.exists(dirname): + os.makedirs(dirname) + self.adb.Pull(device_path, host_path) + + def _ReadFileWithPull(self, device_path): + try: + d = tempfile.mkdtemp() + host_temp_path = os.path.join(d, 'tmp_ReadFileWithPull') + self.adb.Pull(device_path, host_temp_path) + with open(host_temp_path, 'r') as host_temp: + return host_temp.read() + finally: + if os.path.exists(d): + shutil.rmtree(d) + + @decorators.WithTimeoutAndRetriesFromInstance() + def ReadFile(self, device_path, as_root=False, force_pull=False, + timeout=None, retries=None): + """Reads the contents of a file from the device. + + Args: + device_path: A string containing the absolute path of the file to read + from the device. + as_root: A boolean indicating whether the read should be executed with + root privileges. + force_pull: A boolean indicating whether to force the operation to be + performed by pulling a file from the device. The default is, when the + contents are short, to retrieve the contents using cat instead. + timeout: timeout in seconds + retries: number of retries + + Returns: + The contents of |device_path| as a string. Contents are intepreted using + universal newlines, so the caller will see them encoded as '\n'. Also, + all lines will be terminated. + + Raises: + AdbCommandFailedError if the file can't be read. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. + """ + def get_size(path): + return self.FileSize(path, as_root=as_root) + + if (not force_pull + and 0 < get_size(device_path) <= self._MAX_ADB_OUTPUT_LENGTH): + return _JoinLines(self.RunShellCommand( + ['cat', device_path], as_root=as_root, check_return=True)) + elif as_root and self.NeedsSU(): + with device_temp_file.DeviceTempFile(self.adb) as device_temp: + cmd = 'SRC=%s DEST=%s;cp "$SRC" "$DEST" && chmod 666 "$DEST"' % ( + cmd_helper.SingleQuote(device_path), + cmd_helper.SingleQuote(device_temp.name)) + self.RunShellCommand(cmd, shell=True, as_root=True, check_return=True) + return self._ReadFileWithPull(device_temp.name) + else: + return self._ReadFileWithPull(device_path) + + def _WriteFileWithPush(self, device_path, contents): + with tempfile.NamedTemporaryFile() as host_temp: + host_temp.write(contents) + host_temp.flush() + self.adb.Push(host_temp.name, device_path) + + @decorators.WithTimeoutAndRetriesFromInstance() + def WriteFile(self, device_path, contents, as_root=False, force_push=False, + timeout=None, retries=None): + """Writes |contents| to a file on the device. + + Args: + device_path: A string containing the absolute path to the file to write + on the device. + contents: A string containing the data to write to the device. + as_root: A boolean indicating whether the write should be executed with + root privileges (if available). + force_push: A boolean indicating whether to force the operation to be + performed by pushing a file to the device. The default is, when the + contents are short, to pass the contents using a shell script instead. + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandFailedError if the file could not be written on the device. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. + """ + if not force_push and len(contents) < self._MAX_ADB_COMMAND_LENGTH: + # If the contents are small, for efficieny we write the contents with + # a shell command rather than pushing a file. + cmd = 'echo -n %s > %s' % (cmd_helper.SingleQuote(contents), + cmd_helper.SingleQuote(device_path)) + self.RunShellCommand(cmd, shell=True, as_root=as_root, check_return=True) + elif as_root and self.NeedsSU(): + # Adb does not allow to "push with su", so we first push to a temp file + # on a safe location, and then copy it to the desired location with su. + with device_temp_file.DeviceTempFile(self.adb) as device_temp: + self._WriteFileWithPush(device_temp.name, contents) + # Here we need 'cp' rather than 'mv' because the temp and + # destination files might be on different file systems (e.g. + # on internal storage and an external sd card). + self.RunShellCommand(['cp', device_temp.name, device_path], + as_root=True, check_return=True) + else: + # If root is not needed, we can push directly to the desired location. + self._WriteFileWithPush(device_path, contents) + + def _ParseLongLsOutput(self, device_path, as_root=False, **kwargs): + """Run and scrape the output of 'ls -a -l' on a device directory.""" + device_path = posixpath.join(device_path, '') # Force trailing '/'. + output = self.RunShellCommand( + ['ls', '-a', '-l', device_path], as_root=as_root, + check_return=True, env={'TZ': 'utc'}, **kwargs) + if output and output[0].startswith('total '): + output.pop(0) # pylint: disable=maybe-no-member + + entries = [] + for line in output: + m = _LONG_LS_OUTPUT_RE.match(line) + if m: + if m.group('filename') not in ['.', '..']: + entries.append(m.groupdict()) + else: + logger.info('Skipping: %s', line) + + return entries + + def ListDirectory(self, device_path, as_root=False, **kwargs): + """List all files on a device directory. + + Mirroring os.listdir (and most client expectations) the resulting list + does not include the special entries '.' and '..' even if they are present + in the directory. + + Args: + device_path: A string containing the path of the directory on the device + to list. + as_root: A boolean indicating whether the to use root privileges to list + the directory contents. + timeout: timeout in seconds + retries: number of retries + + Returns: + A list of filenames for all entries contained in the directory. + + Raises: + AdbCommandFailedError if |device_path| does not specify a valid and + accessible directory in the device. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. + """ + entries = self._ParseLongLsOutput(device_path, as_root=as_root, **kwargs) + return [d['filename'] for d in entries] + + def StatDirectory(self, device_path, as_root=False, **kwargs): + """List file and stat info for all entries on a device directory. + + Implementation notes: this is currently implemented by parsing the output + of 'ls -a -l' on the device. Whether possible and convenient, we attempt to + make parsing strict and return values mirroring those of the standard |os| + and |stat| Python modules. + + Mirroring os.listdir (and most client expectations) the resulting list + does not include the special entries '.' and '..' even if they are present + in the directory. + + Args: + device_path: A string containing the path of the directory on the device + to list. + as_root: A boolean indicating whether the to use root privileges to list + the directory contents. + timeout: timeout in seconds + retries: number of retries + + Returns: + A list of dictionaries, each containing the following keys: + filename: A string with the file name. + st_mode: File permissions, use the stat module to interpret these. + st_nlink: Number of hard links (may be missing). + st_owner: A string with the user name of the owner. + st_group: A string with the group name of the owner. + st_rdev_pair: Device type as (major, minior) (only if inode device). + st_size: Size of file, in bytes (may be missing for non-regular files). + st_mtime: Time of most recent modification, in seconds since epoch + (although resolution is in minutes). + symbolic_link_to: If entry is a symbolic link, path where it points to; + missing otherwise. + + Raises: + AdbCommandFailedError if |device_path| does not specify a valid and + accessible directory in the device. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. + """ + entries = self._ParseLongLsOutput(device_path, as_root=as_root, **kwargs) + for d in entries: + for key, value in d.items(): + if value is None: + del d[key] # Remove missing fields. + d['st_mode'] = _ParseModeString(d['st_mode']) + d['st_mtime'] = calendar.timegm( + time.strptime(d['st_mtime'], _LS_DATE_FORMAT)) + for key in ['st_nlink', 'st_size', 'st_rdev_major', 'st_rdev_minor']: + if key in d: + d[key] = int(d[key]) + if 'st_rdev_major' in d and 'st_rdev_minor' in d: + d['st_rdev_pair'] = (d.pop('st_rdev_major'), d.pop('st_rdev_minor')) + return entries + + def StatPath(self, device_path, as_root=False, **kwargs): + """Get the stat attributes of a file or directory on the device. + + Args: + device_path: A string containing the path of a file or directory from + which to get attributes. + as_root: A boolean indicating whether the to use root privileges to + access the file information. + timeout: timeout in seconds + retries: number of retries + + Returns: + A dictionary with the stat info collected; see StatDirectory for details. + + Raises: + CommandFailedError if device_path cannot be found on the device. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. + """ + dirname, filename = posixpath.split(posixpath.normpath(device_path)) + for entry in self.StatDirectory(dirname, as_root=as_root, **kwargs): + if entry['filename'] == filename: + return entry + raise device_errors.CommandFailedError( + 'Cannot find file or directory: %r' % device_path, str(self)) + + def FileSize(self, device_path, as_root=False, **kwargs): + """Get the size of a file on the device. + + Note: This is implemented by parsing the output of the 'ls' command on + the device. On some Android versions, when passing a directory or special + file, the size is *not* reported and this function will throw an exception. + + Args: + device_path: A string containing the path of a file on the device. + as_root: A boolean indicating whether the to use root privileges to + access the file information. + timeout: timeout in seconds + retries: number of retries + + Returns: + The size of the file in bytes. + + Raises: + CommandFailedError if device_path cannot be found on the device, or + its size cannot be determited for some reason. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. + """ + entry = self.StatPath(device_path, as_root=as_root, **kwargs) + try: + return entry['st_size'] + except KeyError: + raise device_errors.CommandFailedError( + 'Could not determine the size of: %s' % device_path, str(self)) + + @decorators.WithTimeoutAndRetriesFromInstance() + def SetJavaAsserts(self, enabled, timeout=None, retries=None): + """Enables or disables Java asserts. + + Args: + enabled: A boolean indicating whether Java asserts should be enabled + or disabled. + timeout: timeout in seconds + retries: number of retries + + Returns: + True if the device-side property changed and a restart is required as a + result, False otherwise. + + Raises: + CommandTimeoutError on timeout. + """ + def find_property(lines, property_name): + for index, line in enumerate(lines): + if line.strip() == '': + continue + key_value = tuple(s.strip() for s in line.split('=', 1)) + if len(key_value) != 2: + continue + key, value = key_value + if key == property_name: + return index, value + return None, '' + + new_value = 'all' if enabled else '' + + # First ensure the desired property is persisted. + try: + properties = self.ReadFile(self.LOCAL_PROPERTIES_PATH).splitlines() + except device_errors.CommandFailedError: + properties = [] + index, value = find_property(properties, self.JAVA_ASSERT_PROPERTY) + if new_value != value: + if new_value: + new_line = '%s=%s' % (self.JAVA_ASSERT_PROPERTY, new_value) + if index is None: + properties.append(new_line) + else: + properties[index] = new_line + else: + assert index is not None # since new_value == '' and new_value != value + properties.pop(index) + self.WriteFile(self.LOCAL_PROPERTIES_PATH, _JoinLines(properties)) + + # Next, check the current runtime value is what we need, and + # if not, set it and report that a reboot is required. + value = self.GetProp(self.JAVA_ASSERT_PROPERTY) + if new_value != value: + self.SetProp(self.JAVA_ASSERT_PROPERTY, new_value) + return True + else: + return False + + def GetLanguage(self, cache=False): + """Returns the language setting on the device. + Args: + cache: Whether to use cached properties when available. + """ + return self.GetProp('persist.sys.language', cache=cache) + + def GetCountry(self, cache=False): + """Returns the country setting on the device. + + Args: + cache: Whether to use cached properties when available. + """ + return self.GetProp('persist.sys.country', cache=cache) + + @property + def screen_density(self): + """Returns the screen density of the device.""" + DPI_TO_DENSITY = { + 120: 'ldpi', + 160: 'mdpi', + 240: 'hdpi', + 320: 'xhdpi', + 480: 'xxhdpi', + 640: 'xxxhdpi', + } + return DPI_TO_DENSITY.get(self.pixel_density, 'tvdpi') + + @property + def pixel_density(self): + return int(self.GetProp('ro.sf.lcd_density', cache=True)) + + @property + def build_description(self): + """Returns the build description of the system. + + For example: + nakasi-user 4.4.4 KTU84P 1227136 release-keys + """ + return self.GetProp('ro.build.description', cache=True) + + @property + def build_fingerprint(self): + """Returns the build fingerprint of the system. + + For example: + google/nakasi/grouper:4.4.4/KTU84P/1227136:user/release-keys + """ + return self.GetProp('ro.build.fingerprint', cache=True) + + @property + def build_id(self): + """Returns the build ID of the system (e.g. 'KTU84P').""" + return self.GetProp('ro.build.id', cache=True) + + @property + def build_product(self): + """Returns the build product of the system (e.g. 'grouper').""" + return self.GetProp('ro.build.product', cache=True) + + @property + def build_type(self): + """Returns the build type of the system (e.g. 'user').""" + return self.GetProp('ro.build.type', cache=True) + + @property + def build_version_sdk(self): + """Returns the build version sdk of the system as a number (e.g. 19). + + For version code numbers see: + http://developer.android.com/reference/android/os/Build.VERSION_CODES.html + + For named constants see devil.android.sdk.version_codes + + Raises: + CommandFailedError if the build version sdk is not a number. + """ + value = self.GetProp('ro.build.version.sdk', cache=True) + try: + return int(value) + except ValueError: + raise device_errors.CommandFailedError( + 'Invalid build version sdk: %r' % value) + + @property + def product_cpu_abi(self): + """Returns the product cpu abi of the device (e.g. 'armeabi-v7a').""" + return self.GetProp('ro.product.cpu.abi', cache=True) + + @property + def product_model(self): + """Returns the name of the product model (e.g. 'Nexus 7').""" + return self.GetProp('ro.product.model', cache=True) + + @property + def product_name(self): + """Returns the product name of the device (e.g. 'nakasi').""" + return self.GetProp('ro.product.name', cache=True) + + @property + def product_board(self): + """Returns the product board name of the device (e.g. 'shamu').""" + return self.GetProp('ro.product.board', cache=True) + + def _EnsureCacheInitialized(self): + """Populates cache token, runs getprop and fetches $EXTERNAL_STORAGE.""" + if self._cache['token']: + return + with self._cache_lock: + if self._cache['token']: + return + # Change the token every time to ensure that it will match only the + # previously dumped cache. + token = str(uuid.uuid1()) + cmd = ( + 'c=/data/local/tmp/cache_token;' + 'echo $EXTERNAL_STORAGE;' + 'cat $c 2>/dev/null||echo;' + 'echo "%s">$c &&' % token + + 'getprop' + ) + output = self.RunShellCommand( + cmd, shell=True, check_return=True, large_output=True) + # Error-checking for this existing is done in GetExternalStoragePath(). + self._cache['external_storage'] = output[0] + self._cache['prev_token'] = output[1] + output = output[2:] + + prop_cache = self._cache['getprop'] + prop_cache.clear() + for key, value in _GETPROP_RE.findall(''.join(output)): + prop_cache[key] = value + self._cache['token'] = token + + @decorators.WithTimeoutAndRetriesFromInstance() + def GetProp(self, property_name, cache=False, timeout=None, retries=None): + """Gets a property from the device. + + Args: + property_name: A string containing the name of the property to get from + the device. + cache: Whether to use cached properties when available. + timeout: timeout in seconds + retries: number of retries + + Returns: + The value of the device's |property_name| property. + + Raises: + CommandTimeoutError on timeout. + """ + assert isinstance(property_name, basestring), ( + "property_name is not a string: %r" % property_name) + + if cache: + # It takes ~120ms to query a single property, and ~130ms to query all + # properties. So, when caching we always query all properties. + self._EnsureCacheInitialized() + else: + # timeout and retries are handled down at run shell, because we don't + # want to apply them in the other branch when reading from the cache + value = self.RunShellCommand( + ['getprop', property_name], single_line=True, check_return=True, + timeout=timeout, retries=retries) + self._cache['getprop'][property_name] = value + # Non-existent properties are treated as empty strings by getprop. + return self._cache['getprop'].get(property_name, '') + + @decorators.WithTimeoutAndRetriesFromInstance() + def SetProp(self, property_name, value, check=False, timeout=None, + retries=None): + """Sets a property on the device. + + Args: + property_name: A string containing the name of the property to set on + the device. + value: A string containing the value to set to the property on the + device. + check: A boolean indicating whether to check that the property was + successfully set on the device. + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandFailedError if check is true and the property was not correctly + set on the device (e.g. because it is not rooted). + CommandTimeoutError on timeout. + """ + assert isinstance(property_name, basestring), ( + "property_name is not a string: %r" % property_name) + assert isinstance(value, basestring), "value is not a string: %r" % value + + self.RunShellCommand(['setprop', property_name, value], check_return=True) + prop_cache = self._cache['getprop'] + if property_name in prop_cache: + del prop_cache[property_name] + # TODO(perezju) remove the option and make the check mandatory, but using a + # single shell script to both set- and getprop. + if check and value != self.GetProp(property_name, cache=False): + raise device_errors.CommandFailedError( + 'Unable to set property %r on the device to %r' + % (property_name, value), str(self)) + + @decorators.WithTimeoutAndRetriesFromInstance() + def GetABI(self, timeout=None, retries=None): + """Gets the device main ABI. + + Args: + timeout: timeout in seconds + retries: number of retries + + Returns: + The device's main ABI name. + + Raises: + CommandTimeoutError on timeout. + """ + return self.GetProp('ro.product.cpu.abi', cache=True) + + @decorators.WithTimeoutAndRetriesFromInstance() + def GetPids(self, process_name=None, timeout=None, retries=None): + """Returns the PIDs of processes containing the given name as substring. + + Note that the |process_name| is often the package name. + + Args: + process_name: A string containing the process name to get the PIDs for. + If missing returns PIDs for all processes. + timeout: timeout in seconds + retries: number of retries + + Returns: + A dict mapping process name to a list of PIDs for each process that + contained the provided |process_name|. + + Raises: + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. + """ + procs_pids = collections.defaultdict(list) + try: + ps_cmd = 'ps' + # ps behavior was changed in Android above N, http://crbug.com/686716 + if (self.build_version_sdk >= version_codes.NOUGAT_MR1 + and self.build_id[0] > 'N'): + ps_cmd = 'ps -e' + if process_name: + ps_output = self._RunPipedShellCommand( + '%s | grep -F %s' % (ps_cmd, cmd_helper.SingleQuote(process_name))) + else: + ps_output = self.RunShellCommand( + ps_cmd.split(), check_return=True, large_output=True) + except device_errors.AdbShellCommandFailedError as e: + if e.status and isinstance(e.status, list) and not e.status[0]: + # If ps succeeded but grep failed, there were no processes with the + # given name. + return procs_pids + else: + raise + + process_name = process_name or '' + for line in ps_output: + try: + ps_data = line.split() + pid, process = ps_data[1], ps_data[-1] + if process_name in process and pid != 'PID': + procs_pids[process].append(pid) + except IndexError: + pass + return procs_pids + + def GetApplicationPids(self, process_name, at_most_one=False, **kwargs): + """Returns the PID or PIDs of a given process name. + + Note that the |process_name|, often the package name, must match exactly. + + Args: + process_name: A string containing the process name to get the PIDs for. + at_most_one: A boolean indicating that at most one PID is expected to + be found. + timeout: timeout in seconds + retries: number of retries + + Returns: + A list of the PIDs for the named process. If at_most_one=True returns + the single PID found or None otherwise. + + Raises: + CommandFailedError if at_most_one=True and more than one PID is found + for the named process. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. + """ + pids = self.GetPids(process_name, **kwargs).get(process_name, []) + if at_most_one: + if len(pids) > 1: + raise device_errors.CommandFailedError( + 'Expected a single process but found PIDs: %s.' % ', '.join(pids), + device_serial=str(self)) + return pids[0] if pids else None + else: + return pids + + @decorators.WithTimeoutAndRetriesFromInstance() + def GetEnforce(self, timeout=None, retries=None): + """Get the current mode of SELinux. + + Args: + timeout: timeout in seconds + retries: number of retries + + Returns: + True (enforcing), False (permissive), or None (disabled). + + Raises: + CommandFailedError on failure. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. + """ + output = self.RunShellCommand( + ['getenforce'], check_return=True, single_line=True).lower() + if output not in _SELINUX_MODE: + raise device_errors.CommandFailedError( + 'Unexpected getenforce output: %s' % output) + return _SELINUX_MODE[output] + + @decorators.WithTimeoutAndRetriesFromInstance() + def SetEnforce(self, enabled, timeout=None, retries=None): + """Modify the mode SELinux is running in. + + Args: + enabled: a boolean indicating whether to put SELinux in encorcing mode + (if True), or permissive mode (otherwise). + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandFailedError on failure. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. + """ + self.RunShellCommand( + ['setenforce', '1' if int(enabled) else '0'], as_root=True, + check_return=True) + + @decorators.WithTimeoutAndRetriesFromInstance() + def TakeScreenshot(self, host_path=None, timeout=None, retries=None): + """Takes a screenshot of the device. + + Args: + host_path: A string containing the path on the host to save the + screenshot to. If None, a file name in the current + directory will be generated. + timeout: timeout in seconds + retries: number of retries + + Returns: + The name of the file on the host to which the screenshot was saved. + + Raises: + CommandFailedError on failure. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. + """ + if not host_path: + host_path = os.path.abspath('screenshot-%s-%s.png' % ( + self.serial, _GetTimeStamp())) + with device_temp_file.DeviceTempFile(self.adb, suffix='.png') as device_tmp: + self.RunShellCommand(['/system/bin/screencap', '-p', device_tmp.name], + check_return=True) + self.PullFile(device_tmp.name, host_path) + return host_path + + @decorators.WithTimeoutAndRetriesFromInstance() + def GetMemoryUsageForPid(self, pid, timeout=None, retries=None): + """Gets the memory usage for the given PID. + + Args: + pid: PID of the process. + timeout: timeout in seconds + retries: number of retries + + Returns: + A dict containing memory usage statistics for the PID. May include: + Size, Rss, Pss, Shared_Clean, Shared_Dirty, Private_Clean, + Private_Dirty, VmHWM + + Raises: + CommandTimeoutError on timeout. + """ + result = collections.defaultdict(int) + + try: + result.update(self._GetMemoryUsageForPidFromSmaps(pid)) + except device_errors.CommandFailedError: + logger.exception('Error getting memory usage from smaps') + + try: + result.update(self._GetMemoryUsageForPidFromStatus(pid)) + except device_errors.CommandFailedError: + logger.exception('Error getting memory usage from status') + + return result + + @decorators.WithTimeoutAndRetriesFromInstance() + def DismissCrashDialogIfNeeded(self, timeout=None, retries=None): + """Dismiss the error/ANR dialog if present. + + Returns: Name of the crashed package if a dialog is focused, + None otherwise. + """ + def _FindFocusedWindow(): + match = None + # TODO(jbudorick): Try to grep the output on the device instead of using + # large_output if/when DeviceUtils exposes a public interface for piped + # shell command handling. + for line in self.RunShellCommand(['dumpsys', 'window', 'windows'], + check_return=True, large_output=True): + match = re.match(_CURRENT_FOCUS_CRASH_RE, line) + if match: + break + return match + + match = _FindFocusedWindow() + if not match: + return None + package = match.group(2) + logger.warning('Trying to dismiss %s dialog for %s', *match.groups()) + self.SendKeyEvent(keyevent.KEYCODE_DPAD_RIGHT) + self.SendKeyEvent(keyevent.KEYCODE_DPAD_RIGHT) + self.SendKeyEvent(keyevent.KEYCODE_ENTER) + match = _FindFocusedWindow() + if match: + logger.error('Still showing a %s dialog for %s', *match.groups()) + return package + + def _GetMemoryUsageForPidFromSmaps(self, pid): + SMAPS_COLUMNS = ( + 'Size', 'Rss', 'Pss', 'Shared_Clean', 'Shared_Dirty', 'Private_Clean', + 'Private_Dirty') + + showmap_out = self._RunPipedShellCommand( + 'showmap %d | grep TOTAL' % int(pid), as_root=True) + + split_totals = showmap_out[-1].split() + if (not split_totals + or len(split_totals) != 9 + or split_totals[-1] != 'TOTAL'): + raise device_errors.CommandFailedError( + 'Invalid output from showmap: %s' % '\n'.join(showmap_out)) + + return dict(itertools.izip(SMAPS_COLUMNS, (int(n) for n in split_totals))) + + def _GetMemoryUsageForPidFromStatus(self, pid): + for line in self.ReadFile( + '/proc/%s/status' % str(pid), as_root=True).splitlines(): + if line.startswith('VmHWM:'): + return {'VmHWM': int(line.split()[1])} + raise device_errors.CommandFailedError( + 'Could not find memory peak value for pid %s', str(pid)) + + def GetLogcatMonitor(self, *args, **kwargs): + """Returns a new LogcatMonitor associated with this device. + + Parameters passed to this function are passed directly to + |logcat_monitor.LogcatMonitor| and are documented there. + """ + return logcat_monitor.LogcatMonitor(self.adb, *args, **kwargs) + + def GetClientCache(self, client_name): + """Returns client cache.""" + if client_name not in self._client_caches: + self._client_caches[client_name] = {} + return self._client_caches[client_name] + + def _ClearCache(self): + """Clears all caches.""" + for client in self._client_caches: + self._client_caches[client].clear() + self._cache = { + # Map of packageId -> list of on-device .apk paths + 'package_apk_paths': {}, + # Set of packageId that were loaded from LoadCacheData and not yet + # verified. + 'package_apk_paths_to_verify': set(), + # Map of packageId -> set of on-device .apk checksums + 'package_apk_checksums': {}, + # Map of property_name -> value + 'getprop': {}, + # Map of device_path -> [ignore_other_files, map of path->checksum] + 'device_path_checksums': {}, + # Location of sdcard ($EXTERNAL_STORAGE). + 'external_storage': None, + # Token used to detect when LoadCacheData is stale. + 'token': None, + 'prev_token': None, + } + + @decorators.WithTimeoutAndRetriesFromInstance() + def LoadCacheData(self, data, timeout=None, retries=None): + """Initializes the cache from data created using DumpCacheData. + + The cache is used only if its token matches the one found on the device. + This prevents a stale cache from being used (which can happen when sharing + devices). + + Args: + data: A previously serialized cache (string). + timeout: timeout in seconds + retries: number of retries + + Returns: + Whether the cache was loaded. + """ + obj = json.loads(data) + self._EnsureCacheInitialized() + given_token = obj.get('token') + if not given_token or self._cache['prev_token'] != given_token: + logger.warning('Stale cache detected. Not using it.') + return False + + self._cache['package_apk_paths'] = obj.get('package_apk_paths', {}) + # When using a cache across script invokations, verify that apps have + # not been uninstalled. + self._cache['package_apk_paths_to_verify'] = set( + self._cache['package_apk_paths'].iterkeys()) + + package_apk_checksums = obj.get('package_apk_checksums', {}) + for k, v in package_apk_checksums.iteritems(): + package_apk_checksums[k] = set(v) + self._cache['package_apk_checksums'] = package_apk_checksums + device_path_checksums = obj.get('device_path_checksums', {}) + self._cache['device_path_checksums'] = device_path_checksums + return True + + @decorators.WithTimeoutAndRetriesFromInstance() + def DumpCacheData(self, timeout=None, retries=None): + """Dumps the current cache state to a string. + + Args: + timeout: timeout in seconds + retries: number of retries + + Returns: + A serialized cache as a string. + """ + self._EnsureCacheInitialized() + obj = {} + obj['token'] = self._cache['token'] + obj['package_apk_paths'] = self._cache['package_apk_paths'] + obj['package_apk_checksums'] = self._cache['package_apk_checksums'] + # JSON can't handle sets. + for k, v in obj['package_apk_checksums'].iteritems(): + obj['package_apk_checksums'][k] = list(v) + obj['device_path_checksums'] = self._cache['device_path_checksums'] + return json.dumps(obj, separators=(',', ':')) + + @classmethod + def parallel(cls, devices, async=False): + """Creates a Parallelizer to operate over the provided list of devices. + + Args: + devices: A list of either DeviceUtils instances or objects from + from which DeviceUtils instances can be constructed. If None, + all attached devices will be used. + async: If true, returns a Parallelizer that runs operations + asynchronously. + + Returns: + A Parallelizer operating over |devices|. + """ + devices = [d if isinstance(d, cls) else cls(d) for d in devices] + if async: + return parallelizer.Parallelizer(devices) + else: + return parallelizer.SyncParallelizer(devices) + + @classmethod + def HealthyDevices(cls, blacklist=None, device_arg='default', **kwargs): + """Returns a list of DeviceUtils instances. + + Returns a list of DeviceUtils instances that are attached, not blacklisted, + and optionally filtered by --device flags or ANDROID_SERIAL environment + variable. + + Args: + blacklist: A DeviceBlacklist instance (optional). Device serials in this + blacklist will never be returned, but a warning will be logged if they + otherwise would have been. + device_arg: The value of the --device flag. This can be: + 'default' -> Same as [], but returns an empty list rather than raise a + NoDevicesError. + [] -> Returns all devices, unless $ANDROID_SERIAL is set. + None -> Use $ANDROID_SERIAL if set, otherwise looks for a single + attached device. Raises an exception if multiple devices are + attached. + 'serial' -> Returns an instance for the given serial, if not + blacklisted. + ['A', 'B', ...] -> Returns instances for the subset that is not + blacklisted. + A device serial, or a list of device serials (optional). + + Returns: + A list of DeviceUtils instances. + + Raises: + NoDevicesError: Raised when no non-blacklisted devices exist and + device_arg is passed. + MultipleDevicesError: Raise when multiple devices exist, but |device_arg| + is None. + """ + allow_no_devices = False + if device_arg == 'default': + allow_no_devices = True + device_arg = () + + select_multiple = True + if not (isinstance(device_arg, tuple) or isinstance(device_arg, list)): + select_multiple = False + if device_arg: + device_arg = (device_arg,) + + blacklisted_devices = blacklist.Read() if blacklist else [] + + # adb looks for ANDROID_SERIAL, so support it as well. + android_serial = os.environ.get('ANDROID_SERIAL') + if not device_arg and android_serial: + device_arg = (android_serial,) + + def blacklisted(serial): + if serial in blacklisted_devices: + logger.warning('Device %s is blacklisted.', serial) + return True + return False + + if device_arg: + devices = [cls(x, **kwargs) for x in device_arg if not blacklisted(x)] + else: + devices = [] + for adb in adb_wrapper.AdbWrapper.Devices(): + if not blacklisted(adb.GetDeviceSerial()): + devices.append(cls(_CreateAdbWrapper(adb), **kwargs)) + + if len(devices) == 0 and not allow_no_devices: + raise device_errors.NoDevicesError() + if len(devices) > 1 and not select_multiple: + raise device_errors.MultipleDevicesError(devices) + return sorted(devices) + + @decorators.WithTimeoutAndRetriesFromInstance() + def RestartAdbd(self, timeout=None, retries=None): + logger.info('Restarting adbd on device.') + with device_temp_file.DeviceTempFile(self.adb, suffix='.sh') as script: + self.WriteFile(script.name, _RESTART_ADBD_SCRIPT) + self.RunShellCommand( + ['source', script.name], check_return=True, as_root=True) + self.adb.WaitForDevice() + + @decorators.WithTimeoutAndRetriesFromInstance() + def GrantPermissions(self, package, permissions, timeout=None, retries=None): + # Permissions only need to be set on M and above because of the changes to + # the permission model. + if not permissions or self.build_version_sdk < version_codes.MARSHMALLOW: + return + logger.info('Setting permissions for %s.', package) + permissions = [p for p in permissions if p not in _PERMISSIONS_BLACKLIST] + if ('android.permission.WRITE_EXTERNAL_STORAGE' in permissions + and 'android.permission.READ_EXTERNAL_STORAGE' not in permissions): + permissions.append('android.permission.READ_EXTERNAL_STORAGE') + cmd = '&&'.join('pm grant %s %s' % (package, p) for p in permissions) + if cmd: + output = self.RunShellCommand(cmd, shell=True, check_return=True) + if output: + logger.warning('Possible problem when granting permissions. Blacklist ' + 'may need to be updated.') + for line in output: + logger.warning(' %s', line) + + @decorators.WithTimeoutAndRetriesFromInstance() + def IsScreenOn(self, timeout=None, retries=None): + """Determines if screen is on. + + Dumpsys input_method exposes screen on/off state. Below is an explination of + the states. + + Pre-L: + On: mScreenOn=true + Off: mScreenOn=false + L+: + On: mInteractive=true + Off: mInteractive=false + + Returns: + True if screen is on, false if it is off. + + Raises: + device_errors.CommandFailedError: If screen state cannot be found. + """ + if self.build_version_sdk < version_codes.LOLLIPOP: + input_check = 'mScreenOn' + check_value = 'mScreenOn=true' + else: + input_check = 'mInteractive' + check_value = 'mInteractive=true' + dumpsys_out = self._RunPipedShellCommand( + 'dumpsys input_method | grep %s' % input_check) + if not dumpsys_out: + raise device_errors.CommandFailedError( + 'Unable to detect screen state', str(self)) + return check_value in dumpsys_out[0] + + @decorators.WithTimeoutAndRetriesFromInstance() + def SetScreen(self, on, timeout=None, retries=None): + """Turns screen on and off. + + Args: + on: bool to decide state to switch to. True = on False = off. + """ + def screen_test(): + return self.IsScreenOn() == on + + if screen_test(): + logger.info('Screen already in expected state.') + return + self.SendKeyEvent(keyevent.KEYCODE_POWER) + timeout_retry.WaitFor(screen_test, wait_period=1) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_utils_devicetest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_utils_devicetest.py new file mode 100644 index 0000000..932e278 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_utils_devicetest.py @@ -0,0 +1,238 @@ +#!/usr/bin/env python +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +""" +Unit tests for the contents of device_utils.py (mostly DeviceUtils). +The test will invoke real devices +""" + +import os +import posixpath +import sys +import tempfile +import unittest + +if __name__ == '__main__': + sys.path.append( + os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', ))) + +from devil.android import device_test_case +from devil.android import device_utils +from devil.android.sdk import adb_wrapper +from devil.utils import cmd_helper + +_OLD_CONTENTS = "foo" +_NEW_CONTENTS = "bar" +_DEVICE_DIR = "/data/local/tmp/device_utils_test" +_SUB_DIR = "sub" +_SUB_DIR1 = "sub1" +_SUB_DIR2 = "sub2" + + +class DeviceUtilsPushDeleteFilesTest(device_test_case.DeviceTestCase): + + def setUp(self): + super(DeviceUtilsPushDeleteFilesTest, self).setUp() + self.adb = adb_wrapper.AdbWrapper(self.serial) + self.adb.WaitForDevice() + self.device = device_utils.DeviceUtils( + self.adb, default_timeout=10, default_retries=0) + + @staticmethod + def _MakeTempFile(contents): + """Make a temporary file with the given contents. + + Args: + contents: string to write to the temporary file. + + Returns: + the tuple contains the absolute path to the file and the file name + """ + fi, path = tempfile.mkstemp(text=True) + with os.fdopen(fi, 'w') as f: + f.write(contents) + file_name = os.path.basename(path) + return (path, file_name) + + @staticmethod + def _MakeTempFileGivenDir(directory, contents): + """Make a temporary file under the given directory + with the given contents + + Args: + directory: the temp directory to create the file + contents: string to write to the temp file + + Returns: + the list contains the absolute path to the file and the file name + """ + fi, path = tempfile.mkstemp(dir=directory, text=True) + with os.fdopen(fi, 'w') as f: + f.write(contents) + file_name = os.path.basename(path) + return (path, file_name) + + @staticmethod + def _ChangeTempFile(path, contents): + with os.open(path, 'w') as f: + f.write(contents) + + @staticmethod + def _DeleteTempFile(path): + os.remove(path) + + def testPushChangedFiles_noFileChange(self): + (host_file_path, file_name) = self._MakeTempFile(_OLD_CONTENTS) + device_file_path = "%s/%s" % (_DEVICE_DIR, file_name) + self.adb.Push(host_file_path, device_file_path) + self.device.PushChangedFiles([(host_file_path, device_file_path)]) + result = self.device.RunShellCommand( + ['cat', device_file_path], check_return=True, single_line=True) + self.assertEqual(_OLD_CONTENTS, result) + + cmd_helper.RunCmd(['rm', host_file_path]) + self.device.RemovePath(_DEVICE_DIR, recursive=True, force=True) + + def testPushChangedFiles_singleFileChange(self): + (host_file_path, file_name) = self._MakeTempFile(_OLD_CONTENTS) + device_file_path = "%s/%s" % (_DEVICE_DIR, file_name) + self.adb.Push(host_file_path, device_file_path) + + with open(host_file_path, 'w') as f: + f.write(_NEW_CONTENTS) + self.device.PushChangedFiles([(host_file_path, device_file_path)]) + result = self.device.RunShellCommand( + ['cat', device_file_path], check_return=True, single_line=True) + self.assertEqual(_NEW_CONTENTS, result) + + cmd_helper.RunCmd(['rm', host_file_path]) + self.device.RemovePath(_DEVICE_DIR, recursive=True, force=True) + + def testDeleteFiles(self): + host_tmp_dir = tempfile.mkdtemp() + (host_file_path, file_name) = self._MakeTempFileGivenDir( + host_tmp_dir, _OLD_CONTENTS) + + device_file_path = "%s/%s" % (_DEVICE_DIR, file_name) + self.adb.Push(host_file_path, device_file_path) + + cmd_helper.RunCmd(['rm', host_file_path]) + self.device.PushChangedFiles([(host_tmp_dir, _DEVICE_DIR)], + delete_device_stale=True) + filenames = self.device.ListDirectory(_DEVICE_DIR) + self.assertEqual([], filenames) + + cmd_helper.RunCmd(['rm', '-rf', host_tmp_dir]) + self.device.RemovePath(_DEVICE_DIR, recursive=True, force=True) + + def testPushAndDeleteFiles_noSubDir(self): + host_tmp_dir = tempfile.mkdtemp() + (host_file_path1, file_name1) = self._MakeTempFileGivenDir( + host_tmp_dir, _OLD_CONTENTS) + (host_file_path2, file_name2) = self._MakeTempFileGivenDir( + host_tmp_dir, _OLD_CONTENTS) + + device_file_path1 = "%s/%s" % (_DEVICE_DIR, file_name1) + device_file_path2 = "%s/%s" % (_DEVICE_DIR, file_name2) + self.adb.Push(host_file_path1, device_file_path1) + self.adb.Push(host_file_path2, device_file_path2) + + with open(host_file_path1, 'w') as f: + f.write(_NEW_CONTENTS) + cmd_helper.RunCmd(['rm', host_file_path2]) + + self.device.PushChangedFiles([(host_tmp_dir, _DEVICE_DIR)], + delete_device_stale=True) + result = self.device.RunShellCommand( + ['cat', device_file_path1], check_return=True, single_line=True) + self.assertEqual(_NEW_CONTENTS, result) + + filenames = self.device.ListDirectory(_DEVICE_DIR) + self.assertEqual([file_name1], filenames) + + cmd_helper.RunCmd(['rm', '-rf', host_tmp_dir]) + self.device.RemovePath(_DEVICE_DIR, recursive=True, force=True) + + def testPushAndDeleteFiles_SubDir(self): + host_tmp_dir = tempfile.mkdtemp() + host_sub_dir1 = "%s/%s" % (host_tmp_dir, _SUB_DIR1) + host_sub_dir2 = "%s/%s/%s" % (host_tmp_dir, _SUB_DIR, _SUB_DIR2) + cmd_helper.RunCmd(['mkdir', '-p', host_sub_dir1]) + cmd_helper.RunCmd(['mkdir', '-p', host_sub_dir2]) + + (host_file_path1, file_name1) = self._MakeTempFileGivenDir( + host_tmp_dir, _OLD_CONTENTS) + (host_file_path2, file_name2) = self._MakeTempFileGivenDir( + host_tmp_dir, _OLD_CONTENTS) + (host_file_path3, file_name3) = self._MakeTempFileGivenDir( + host_sub_dir1, _OLD_CONTENTS) + (host_file_path4, file_name4) = self._MakeTempFileGivenDir( + host_sub_dir2, _OLD_CONTENTS) + + device_file_path1 = "%s/%s" % (_DEVICE_DIR, file_name1) + device_file_path2 = "%s/%s" % (_DEVICE_DIR, file_name2) + device_file_path3 = "%s/%s/%s" % (_DEVICE_DIR, _SUB_DIR1, file_name3) + device_file_path4 = "%s/%s/%s/%s" % (_DEVICE_DIR, _SUB_DIR, + _SUB_DIR2, file_name4) + + self.adb.Push(host_file_path1, device_file_path1) + self.adb.Push(host_file_path2, device_file_path2) + self.adb.Push(host_file_path3, device_file_path3) + self.adb.Push(host_file_path4, device_file_path4) + + with open(host_file_path1, 'w') as f: + f.write(_NEW_CONTENTS) + cmd_helper.RunCmd(['rm', host_file_path2]) + cmd_helper.RunCmd(['rm', host_file_path4]) + + self.device.PushChangedFiles([(host_tmp_dir, _DEVICE_DIR)], + delete_device_stale=True) + result = self.device.RunShellCommand( + ['cat', device_file_path1], check_return=True, single_line=True) + self.assertEqual(_NEW_CONTENTS, result) + + filenames = self.device.ListDirectory(_DEVICE_DIR) + self.assertIn(file_name1, filenames) + self.assertIn(_SUB_DIR1, filenames) + self.assertIn(_SUB_DIR, filenames) + self.assertEqual(3, len(filenames)) + + result = self.device.RunShellCommand( + ['cat', device_file_path3], check_return=True, single_line=True) + self.assertEqual(_OLD_CONTENTS, result) + + filenames = self.device.ListDirectory( + posixpath.join(_DEVICE_DIR, _SUB_DIR, _SUB_DIR2)) + self.assertEqual([], filenames) + + cmd_helper.RunCmd(['rm', '-rf', host_tmp_dir]) + self.device.RemovePath(_DEVICE_DIR, recursive=True, force=True) + + def testRestartAdbd(self): + def get_adbd_pid(): + # TODO(catapult:#3215): Migrate to device.GetPids(). + ps_output = self.device.RunShellCommand(['ps'], check_return=True) + for ps_line in ps_output: + if 'adbd' in ps_line: + return ps_line.split()[1] + self.fail('Unable to find adbd') + + old_adbd_pid = get_adbd_pid() + self.device.RestartAdbd() + new_adbd_pid = get_adbd_pid() + self.assertNotEqual(old_adbd_pid, new_adbd_pid) + + def testEnableRoot(self): + self.device.SetProp('service.adb.root', '0') + self.device.RestartAdbd() + self.assertFalse(self.device.HasRoot()) + self.assertIn(self.device.GetProp('service.adb.root'), ('', '0')) + self.device.EnableRoot() + self.assertTrue(self.device.HasRoot()) + self.assertEquals(self.device.GetProp('service.adb.root'), '1') + + +if __name__ == '__main__': + unittest.main() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_utils_test.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_utils_test.py new file mode 100644 index 0000000..ebd3c62 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/device_utils_test.py @@ -0,0 +1,2908 @@ +#!/usr/bin/env python +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +""" +Unit tests for the contents of device_utils.py (mostly DeviceUtils). +""" + +# pylint: disable=protected-access +# pylint: disable=unused-argument + +import json +import logging +import os +import stat +import unittest + +from devil import devil_env +from devil.android import device_errors +from devil.android import device_signal +from devil.android import device_utils +from devil.android.sdk import adb_wrapper +from devil.android.sdk import intent +from devil.android.sdk import keyevent +from devil.android.sdk import version_codes +from devil.utils import cmd_helper +from devil.utils import mock_calls + +with devil_env.SysPath(devil_env.PYMOCK_PATH): + import mock # pylint: disable=import-error + + +class AnyStringWith(object): + def __init__(self, value): + self._value = value + + def __eq__(self, other): + return self._value in other + + def __repr__(self): + return '<AnyStringWith: %s>' % self._value + + +class _MockApkHelper(object): + + def __init__(self, path, package_name, perms=None): + self.path = path + self.package_name = package_name + self.perms = perms + + def GetPackageName(self): + return self.package_name + + def GetPermissions(self): + return self.perms + + +class _MockMultipleDevicesError(Exception): + pass + + +class DeviceUtilsInitTest(unittest.TestCase): + + def testInitWithStr(self): + serial_as_str = str('0123456789abcdef') + d = device_utils.DeviceUtils('0123456789abcdef') + self.assertEqual(serial_as_str, d.adb.GetDeviceSerial()) + + def testInitWithUnicode(self): + serial_as_unicode = unicode('fedcba9876543210') + d = device_utils.DeviceUtils(serial_as_unicode) + self.assertEqual(serial_as_unicode, d.adb.GetDeviceSerial()) + + def testInitWithAdbWrapper(self): + serial = '123456789abcdef0' + a = adb_wrapper.AdbWrapper(serial) + d = device_utils.DeviceUtils(a) + self.assertEqual(serial, d.adb.GetDeviceSerial()) + + def testInitWithMissing_fails(self): + with self.assertRaises(ValueError): + device_utils.DeviceUtils(None) + with self.assertRaises(ValueError): + device_utils.DeviceUtils('') + + +class DeviceUtilsGetAVDsTest(mock_calls.TestCase): + + def testGetAVDs(self): + mocked_attrs = { + 'android_sdk': '/my/sdk/path' + } + with mock.patch('devil.devil_env._Environment.LocalPath', + mock.Mock(side_effect=lambda a: mocked_attrs[a])): + with self.assertCall( + mock.call.devil.utils.cmd_helper.GetCmdOutput( + [mock.ANY, 'list', 'avd']), + 'Available Android Virtual Devices:\n' + ' Name: my_android5.0\n' + ' Path: /some/path/to/.android/avd/my_android5.0.avd\n' + ' Target: Android 5.0 (API level 21)\n' + ' Tag/ABI: default/x86\n' + ' Skin: WVGA800\n'): + self.assertEquals(['my_android5.0'], device_utils.GetAVDs()) + + +class DeviceUtilsRestartServerTest(mock_calls.TestCase): + + @mock.patch('time.sleep', mock.Mock()) + def testRestartServer_succeeds(self): + with self.assertCalls( + mock.call.devil.android.sdk.adb_wrapper.AdbWrapper.KillServer(), + (mock.call.devil.utils.cmd_helper.GetCmdStatusAndOutput( + ['pgrep', 'adb']), + (1, '')), + mock.call.devil.android.sdk.adb_wrapper.AdbWrapper.StartServer(), + (mock.call.devil.utils.cmd_helper.GetCmdStatusAndOutput( + ['pgrep', 'adb']), + (1, '')), + (mock.call.devil.utils.cmd_helper.GetCmdStatusAndOutput( + ['pgrep', 'adb']), + (0, '123\n'))): + device_utils.RestartServer() + + +class MockTempFile(object): + + def __init__(self, name='/tmp/some/file'): + self.file = mock.MagicMock(spec=file) + self.file.name = name + self.file.name_quoted = cmd_helper.SingleQuote(name) + + def __enter__(self): + return self.file + + def __exit__(self, exc_type, exc_val, exc_tb): + pass + + @property + def name(self): + return self.file.name + + +class _PatchedFunction(object): + + def __init__(self, patched=None, mocked=None): + self.patched = patched + self.mocked = mocked + + +def _AdbWrapperMock(test_serial, is_ready=True): + adb = mock.Mock(spec=adb_wrapper.AdbWrapper) + adb.__str__ = mock.Mock(return_value=test_serial) + adb.GetDeviceSerial.return_value = test_serial + adb.is_ready = is_ready + return adb + + +class DeviceUtilsTest(mock_calls.TestCase): + + def setUp(self): + self.adb = _AdbWrapperMock('0123456789abcdef') + self.device = device_utils.DeviceUtils( + self.adb, default_timeout=10, default_retries=0) + self.watchMethodCalls(self.call.adb, ignore=['GetDeviceSerial']) + + def AdbCommandError(self, args=None, output=None, status=None, msg=None): + if args is None: + args = ['[unspecified]'] + return mock.Mock(side_effect=device_errors.AdbCommandFailedError( + args, output, status, msg, str(self.device))) + + def CommandError(self, msg=None): + if msg is None: + msg = 'Command failed' + return mock.Mock(side_effect=device_errors.CommandFailedError( + msg, str(self.device))) + + def ShellError(self, output=None, status=1): + def action(cmd, *args, **kwargs): + raise device_errors.AdbShellCommandFailedError( + cmd, output, status, str(self.device)) + if output is None: + output = 'Permission denied\n' + return action + + def TimeoutError(self, msg=None): + if msg is None: + msg = 'Operation timed out' + return mock.Mock(side_effect=device_errors.CommandTimeoutError( + msg, str(self.device))) + + def EnsureCacheInitialized(self, props=None, sdcard='/sdcard'): + props = props or [] + ret = [sdcard, 'TOKEN'] + props + return (self.call.device.RunShellCommand( + AnyStringWith('getprop'), + shell=True, check_return=True, large_output=True), ret) + + +class DeviceUtilsEqTest(DeviceUtilsTest): + + def testEq_equal_deviceUtils(self): + other = device_utils.DeviceUtils(_AdbWrapperMock('0123456789abcdef')) + self.assertTrue(self.device == other) + self.assertTrue(other == self.device) + + def testEq_equal_adbWrapper(self): + other = adb_wrapper.AdbWrapper('0123456789abcdef') + self.assertTrue(self.device == other) + self.assertTrue(other == self.device) + + def testEq_equal_string(self): + other = '0123456789abcdef' + self.assertTrue(self.device == other) + self.assertTrue(other == self.device) + + def testEq_devicesNotEqual(self): + other = device_utils.DeviceUtils(_AdbWrapperMock('0123456789abcdee')) + self.assertFalse(self.device == other) + self.assertFalse(other == self.device) + + def testEq_identity(self): + self.assertTrue(self.device == self.device) + + def testEq_serialInList(self): + devices = [self.device] + self.assertTrue('0123456789abcdef' in devices) + + +class DeviceUtilsLtTest(DeviceUtilsTest): + + def testLt_lessThan(self): + other = device_utils.DeviceUtils(_AdbWrapperMock('ffffffffffffffff')) + self.assertTrue(self.device < other) + self.assertTrue(other > self.device) + + def testLt_greaterThan_lhs(self): + other = device_utils.DeviceUtils(_AdbWrapperMock('0000000000000000')) + self.assertFalse(self.device < other) + self.assertFalse(other > self.device) + + def testLt_equal(self): + other = device_utils.DeviceUtils(_AdbWrapperMock('0123456789abcdef')) + self.assertFalse(self.device < other) + self.assertFalse(other > self.device) + + def testLt_sorted(self): + devices = [ + device_utils.DeviceUtils(_AdbWrapperMock('ffffffffffffffff')), + device_utils.DeviceUtils(_AdbWrapperMock('0000000000000000')), + ] + sorted_devices = sorted(devices) + self.assertEquals('0000000000000000', + sorted_devices[0].adb.GetDeviceSerial()) + self.assertEquals('ffffffffffffffff', + sorted_devices[1].adb.GetDeviceSerial()) + + +class DeviceUtilsStrTest(DeviceUtilsTest): + + def testStr_returnsSerial(self): + with self.assertCalls( + (self.call.adb.GetDeviceSerial(), '0123456789abcdef')): + self.assertEqual('0123456789abcdef', str(self.device)) + + +class DeviceUtilsIsOnlineTest(DeviceUtilsTest): + + def testIsOnline_true(self): + with self.assertCall(self.call.adb.GetState(), 'device'): + self.assertTrue(self.device.IsOnline()) + + def testIsOnline_false(self): + with self.assertCall(self.call.adb.GetState(), 'offline'): + self.assertFalse(self.device.IsOnline()) + + def testIsOnline_error(self): + with self.assertCall(self.call.adb.GetState(), self.CommandError()): + self.assertFalse(self.device.IsOnline()) + + +class DeviceUtilsHasRootTest(DeviceUtilsTest): + + def testHasRoot_true(self): + with self.patch_call(self.call.device.product_name, + return_value='notasailfish'), ( + self.assertCall(self.call.adb.Shell('ls /root'), 'foo\n')): + self.assertTrue(self.device.HasRoot()) + + def testhasRootSpecial_true(self): + with self.patch_call(self.call.device.product_name, + return_value='sailfish'), ( + self.assertCall(self.call.adb.Shell('getprop service.adb.root'), + '1\n')): + self.assertTrue(self.device.HasRoot()) + + def testHasRoot_false(self): + with self.patch_call(self.call.device.product_name, + return_value='notasailfish'), ( + self.assertCall(self.call.adb.Shell('ls /root'), + self.ShellError())): + self.assertFalse(self.device.HasRoot()) + + def testHasRootSpecial_false(self): + with self.patch_call(self.call.device.product_name, + return_value='sailfish'), ( + self.assertCall(self.call.adb.Shell('getprop service.adb.root'), + '\n')): + self.assertFalse(self.device.HasRoot()) + + +class DeviceUtilsEnableRootTest(DeviceUtilsTest): + + def testEnableRoot_succeeds(self): + with self.assertCalls( + self.call.adb.Root(), + self.call.adb.WaitForDevice(), + (self.call.device.GetProp('service.adb.root', cache=False), '1')): + self.device.EnableRoot() + + def testEnableRoot_userBuild(self): + with self.assertCalls( + (self.call.adb.Root(), self.AdbCommandError()), + (self.call.device.IsUserBuild(), True)): + with self.assertRaises(device_errors.CommandFailedError): + self.device.EnableRoot() + + def testEnableRoot_rootFails(self): + with self.assertCalls( + (self.call.adb.Root(), self.AdbCommandError()), + (self.call.device.IsUserBuild(), False)): + with self.assertRaises(device_errors.AdbCommandFailedError): + self.device.EnableRoot() + + +class DeviceUtilsIsUserBuildTest(DeviceUtilsTest): + + def testIsUserBuild_yes(self): + with self.assertCall( + self.call.device.GetProp('ro.build.type', cache=True), 'user'): + self.assertTrue(self.device.IsUserBuild()) + + def testIsUserBuild_no(self): + with self.assertCall( + self.call.device.GetProp('ro.build.type', cache=True), 'userdebug'): + self.assertFalse(self.device.IsUserBuild()) + + +class DeviceUtilsGetExternalStoragePathTest(DeviceUtilsTest): + + def testGetExternalStoragePath_succeeds(self): + with self.assertCalls( + self.EnsureCacheInitialized(sdcard='/fake/storage/path')): + self.assertEquals('/fake/storage/path', + self.device.GetExternalStoragePath()) + + def testGetExternalStoragePath_fails(self): + with self.assertCalls( + self.EnsureCacheInitialized(sdcard='')): + with self.assertRaises(device_errors.CommandFailedError): + self.device.GetExternalStoragePath() + + +class DeviceUtilsGetApplicationPathsInternalTest(DeviceUtilsTest): + + def testGetApplicationPathsInternal_exists(self): + with self.assertCalls( + (self.call.device.GetProp('ro.build.version.sdk', cache=True), '19'), + (self.call.device.RunShellCommand( + ['pm', 'path', 'android'], check_return=True), + ['package:/path/to/android.apk'])): + self.assertEquals(['/path/to/android.apk'], + self.device._GetApplicationPathsInternal('android')) + + def testGetApplicationPathsInternal_notExists(self): + with self.assertCalls( + (self.call.device.GetProp('ro.build.version.sdk', cache=True), '19'), + (self.call.device.RunShellCommand( + ['pm', 'path', 'not.installed.app'], check_return=True), + '')): + self.assertEquals([], + self.device._GetApplicationPathsInternal('not.installed.app')) + + def testGetApplicationPathsInternal_garbageFirstLine(self): + with self.assertCalls( + (self.call.device.GetProp('ro.build.version.sdk', cache=True), '19'), + (self.call.device.RunShellCommand( + ['pm', 'path', 'android'], check_return=True), + ['garbage first line'])): + with self.assertRaises(device_errors.CommandFailedError): + self.device._GetApplicationPathsInternal('android') + + def testGetApplicationPathsInternal_fails(self): + with self.assertCalls( + (self.call.device.GetProp('ro.build.version.sdk', cache=True), '19'), + (self.call.device.RunShellCommand( + ['pm', 'path', 'android'], check_return=True), + self.CommandError('ERROR. Is package manager running?\n'))): + with self.assertRaises(device_errors.CommandFailedError): + self.device._GetApplicationPathsInternal('android') + + +class DeviceUtils_GetApplicationVersionTest(DeviceUtilsTest): + + def test_GetApplicationVersion_exists(self): + with self.assertCalls( + (self.call.adb.Shell('dumpsys package com.android.chrome'), + 'Packages:\n' + ' Package [com.android.chrome] (3901ecfb):\n' + ' userId=1234 gids=[123, 456, 789]\n' + ' pkg=Package{1fecf634 com.android.chrome}\n' + ' versionName=45.0.1234.7\n')): + self.assertEquals('45.0.1234.7', + self.device.GetApplicationVersion('com.android.chrome')) + + def test_GetApplicationVersion_notExists(self): + with self.assertCalls( + (self.call.adb.Shell('dumpsys package com.android.chrome'), '')): + self.assertEquals(None, + self.device.GetApplicationVersion('com.android.chrome')) + + def test_GetApplicationVersion_fails(self): + with self.assertCalls( + (self.call.adb.Shell('dumpsys package com.android.chrome'), + 'Packages:\n' + ' Package [com.android.chrome] (3901ecfb):\n' + ' userId=1234 gids=[123, 456, 789]\n' + ' pkg=Package{1fecf634 com.android.chrome}\n')): + with self.assertRaises(device_errors.CommandFailedError): + self.device.GetApplicationVersion('com.android.chrome') + + +class DeviceUtilsGetApplicationDataDirectoryTest(DeviceUtilsTest): + + def testGetApplicationDataDirectory_exists(self): + with self.assertCall( + self.call.device._RunPipedShellCommand( + 'pm dump foo.bar.baz | grep dataDir='), + ['dataDir=/data/data/foo.bar.baz']): + self.assertEquals( + '/data/data/foo.bar.baz', + self.device.GetApplicationDataDirectory('foo.bar.baz')) + + def testGetApplicationDataDirectory_notExists(self): + with self.assertCall( + self.call.device._RunPipedShellCommand( + 'pm dump foo.bar.baz | grep dataDir='), + self.ShellError()): + with self.assertRaises(device_errors.CommandFailedError): + self.device.GetApplicationDataDirectory('foo.bar.baz') + + +@mock.patch('time.sleep', mock.Mock()) +class DeviceUtilsWaitUntilFullyBootedTest(DeviceUtilsTest): + + def testWaitUntilFullyBooted_succeedsNoWifi(self): + with self.assertCalls( + self.call.adb.WaitForDevice(), + # sd_card_ready + (self.call.device.GetExternalStoragePath(), '/fake/storage/path'), + (self.call.adb.Shell('test -d /fake/storage/path'), ''), + # pm_ready + (self.call.device._GetApplicationPathsInternal('android', + skip_cache=True), + ['package:/some/fake/path']), + # boot_completed + (self.call.device.GetProp('sys.boot_completed', cache=False), '1')): + self.device.WaitUntilFullyBooted(wifi=False) + + def testWaitUntilFullyBooted_succeedsWithWifi(self): + with self.assertCalls( + self.call.adb.WaitForDevice(), + # sd_card_ready + (self.call.device.GetExternalStoragePath(), '/fake/storage/path'), + (self.call.adb.Shell('test -d /fake/storage/path'), ''), + # pm_ready + (self.call.device._GetApplicationPathsInternal('android', + skip_cache=True), + ['package:/some/fake/path']), + # boot_completed + (self.call.device.GetProp('sys.boot_completed', cache=False), '1'), + # wifi_enabled + (self.call.adb.Shell('dumpsys wifi'), + 'stuff\nWi-Fi is enabled\nmore stuff\n')): + self.device.WaitUntilFullyBooted(wifi=True) + + def testWaitUntilFullyBooted_deviceNotInitiallyAvailable(self): + with self.assertCalls( + self.call.adb.WaitForDevice(), + # sd_card_ready + (self.call.device.GetExternalStoragePath(), self.AdbCommandError()), + # sd_card_ready + (self.call.device.GetExternalStoragePath(), self.AdbCommandError()), + # sd_card_ready + (self.call.device.GetExternalStoragePath(), self.AdbCommandError()), + # sd_card_ready + (self.call.device.GetExternalStoragePath(), self.AdbCommandError()), + # sd_card_ready + (self.call.device.GetExternalStoragePath(), '/fake/storage/path'), + (self.call.adb.Shell('test -d /fake/storage/path'), ''), + # pm_ready + (self.call.device._GetApplicationPathsInternal('android', + skip_cache=True), + ['package:/some/fake/path']), + # boot_completed + (self.call.device.GetProp('sys.boot_completed', cache=False), '1')): + self.device.WaitUntilFullyBooted(wifi=False) + + def testWaitUntilFullyBooted_deviceBrieflyOffline(self): + with self.assertCalls( + self.call.adb.WaitForDevice(), + # sd_card_ready + (self.call.device.GetExternalStoragePath(), '/fake/storage/path'), + (self.call.adb.Shell('test -d /fake/storage/path'), ''), + # pm_ready + (self.call.device._GetApplicationPathsInternal('android', + skip_cache=True), + ['package:/some/fake/path']), + # boot_completed + (self.call.device.GetProp('sys.boot_completed', cache=False), + self.AdbCommandError()), + # boot_completed + (self.call.device.GetProp('sys.boot_completed', cache=False), '1')): + self.device.WaitUntilFullyBooted(wifi=False) + + def testWaitUntilFullyBooted_sdCardReadyFails_noPath(self): + with self.assertCalls( + self.call.adb.WaitForDevice(), + # sd_card_ready + (self.call.device.GetExternalStoragePath(), self.CommandError())): + with self.assertRaises(device_errors.CommandFailedError): + self.device.WaitUntilFullyBooted(wifi=False) + + def testWaitUntilFullyBooted_sdCardReadyFails_notExists(self): + with self.assertCalls( + self.call.adb.WaitForDevice(), + # sd_card_ready + (self.call.device.GetExternalStoragePath(), '/fake/storage/path'), + (self.call.adb.Shell('test -d /fake/storage/path'), self.ShellError()), + # sd_card_ready + (self.call.device.GetExternalStoragePath(), '/fake/storage/path'), + (self.call.adb.Shell('test -d /fake/storage/path'), self.ShellError()), + # sd_card_ready + (self.call.device.GetExternalStoragePath(), '/fake/storage/path'), + (self.call.adb.Shell('test -d /fake/storage/path'), + self.TimeoutError())): + with self.assertRaises(device_errors.CommandTimeoutError): + self.device.WaitUntilFullyBooted(wifi=False) + + def testWaitUntilFullyBooted_devicePmFails(self): + with self.assertCalls( + self.call.adb.WaitForDevice(), + # sd_card_ready + (self.call.device.GetExternalStoragePath(), '/fake/storage/path'), + (self.call.adb.Shell('test -d /fake/storage/path'), ''), + # pm_ready + (self.call.device._GetApplicationPathsInternal('android', + skip_cache=True), + self.CommandError()), + # pm_ready + (self.call.device._GetApplicationPathsInternal('android', + skip_cache=True), + self.CommandError()), + # pm_ready + (self.call.device._GetApplicationPathsInternal('android', + skip_cache=True), + self.TimeoutError())): + with self.assertRaises(device_errors.CommandTimeoutError): + self.device.WaitUntilFullyBooted(wifi=False) + + def testWaitUntilFullyBooted_bootFails(self): + with self.assertCalls( + self.call.adb.WaitForDevice(), + # sd_card_ready + (self.call.device.GetExternalStoragePath(), '/fake/storage/path'), + (self.call.adb.Shell('test -d /fake/storage/path'), ''), + # pm_ready + (self.call.device._GetApplicationPathsInternal('android', + skip_cache=True), + ['package:/some/fake/path']), + # boot_completed + (self.call.device.GetProp('sys.boot_completed', cache=False), '0'), + # boot_completed + (self.call.device.GetProp('sys.boot_completed', cache=False), '0'), + # boot_completed + (self.call.device.GetProp('sys.boot_completed', cache=False), + self.TimeoutError())): + with self.assertRaises(device_errors.CommandTimeoutError): + self.device.WaitUntilFullyBooted(wifi=False) + + def testWaitUntilFullyBooted_wifiFails(self): + with self.assertCalls( + self.call.adb.WaitForDevice(), + # sd_card_ready + (self.call.device.GetExternalStoragePath(), '/fake/storage/path'), + (self.call.adb.Shell('test -d /fake/storage/path'), ''), + # pm_ready + (self.call.device._GetApplicationPathsInternal('android', + skip_cache=True), + ['package:/some/fake/path']), + # boot_completed + (self.call.device.GetProp('sys.boot_completed', cache=False), '1'), + # wifi_enabled + (self.call.adb.Shell('dumpsys wifi'), 'stuff\nmore stuff\n'), + # wifi_enabled + (self.call.adb.Shell('dumpsys wifi'), 'stuff\nmore stuff\n'), + # wifi_enabled + (self.call.adb.Shell('dumpsys wifi'), self.TimeoutError())): + with self.assertRaises(device_errors.CommandTimeoutError): + self.device.WaitUntilFullyBooted(wifi=True) + + +@mock.patch('time.sleep', mock.Mock()) +class DeviceUtilsRebootTest(DeviceUtilsTest): + + def testReboot_nonBlocking(self): + with self.assertCalls( + self.call.adb.Reboot(), + (self.call.device.IsOnline(), True), + (self.call.device.IsOnline(), False)): + self.device.Reboot(block=False) + + def testReboot_blocking(self): + with self.assertCalls( + self.call.adb.Reboot(), + (self.call.device.IsOnline(), True), + (self.call.device.IsOnline(), False), + self.call.device.WaitUntilFullyBooted(wifi=False)): + self.device.Reboot(block=True) + + def testReboot_blockUntilWifi(self): + with self.assertCalls( + self.call.adb.Reboot(), + (self.call.device.IsOnline(), True), + (self.call.device.IsOnline(), False), + self.call.device.WaitUntilFullyBooted(wifi=True)): + self.device.Reboot(block=True, wifi=True) + + +class DeviceUtilsInstallTest(DeviceUtilsTest): + + mock_apk = _MockApkHelper('/fake/test/app.apk', 'test.package', ['p1']) + + def testInstall_noPriorInstall(self): + with self.patch_call(self.call.device.build_version_sdk, return_value=23): + with self.assertCalls( + (mock.call.os.path.exists('/fake/test/app.apk'), True), + (self.call.device._GetApplicationPathsInternal('test.package'), []), + self.call.adb.Install('/fake/test/app.apk', reinstall=False, + allow_downgrade=False), + (self.call.device.GrantPermissions('test.package', ['p1']), [])): + self.device.Install(DeviceUtilsInstallTest.mock_apk, retries=0) + + def testInstall_permissionsPreM(self): + with self.patch_call(self.call.device.build_version_sdk, return_value=20): + with self.assertCalls( + (mock.call.os.path.exists('/fake/test/app.apk'), True), + (self.call.device._GetApplicationPathsInternal('test.package'), []), + (self.call.adb.Install('/fake/test/app.apk', reinstall=False, + allow_downgrade=False))): + self.device.Install(DeviceUtilsInstallTest.mock_apk, retries=0) + + def testInstall_findPermissions(self): + with self.patch_call(self.call.device.build_version_sdk, return_value=23): + with self.assertCalls( + (mock.call.os.path.exists('/fake/test/app.apk'), True), + (self.call.device._GetApplicationPathsInternal('test.package'), []), + (self.call.adb.Install('/fake/test/app.apk', reinstall=False, + allow_downgrade=False)), + (self.call.device.GrantPermissions('test.package', ['p1']), [])): + self.device.Install(DeviceUtilsInstallTest.mock_apk, retries=0) + + def testInstall_passPermissions(self): + with self.assertCalls( + (mock.call.os.path.exists('/fake/test/app.apk'), True), + (self.call.device._GetApplicationPathsInternal('test.package'), []), + (self.call.adb.Install('/fake/test/app.apk', reinstall=False, + allow_downgrade=False)), + (self.call.device.GrantPermissions('test.package', ['p1', 'p2']), [])): + self.device.Install(DeviceUtilsInstallTest.mock_apk, retries=0, + permissions=['p1', 'p2']) + + def testInstall_differentPriorInstall(self): + with self.assertCalls( + (mock.call.os.path.exists('/fake/test/app.apk'), True), + (self.call.device._GetApplicationPathsInternal('test.package'), + ['/fake/data/app/test.package.apk']), + (self.call.device._ComputeStaleApks('test.package', + ['/fake/test/app.apk']), + (['/fake/test/app.apk'], None)), + self.call.device.Uninstall('test.package'), + self.call.adb.Install('/fake/test/app.apk', reinstall=False, + allow_downgrade=False)): + self.device.Install(DeviceUtilsInstallTest.mock_apk, retries=0, + permissions=[]) + + def testInstall_differentPriorInstall_reinstall(self): + with self.assertCalls( + (mock.call.os.path.exists('/fake/test/app.apk'), True), + (self.call.device._GetApplicationPathsInternal('test.package'), + ['/fake/data/app/test.package.apk']), + (self.call.device._ComputeStaleApks('test.package', + ['/fake/test/app.apk']), + (['/fake/test/app.apk'], None)), + self.call.adb.Install('/fake/test/app.apk', reinstall=True, + allow_downgrade=False)): + self.device.Install(DeviceUtilsInstallTest.mock_apk, + reinstall=True, retries=0, permissions=[]) + + def testInstall_identicalPriorInstall_reinstall(self): + with self.assertCalls( + (mock.call.os.path.exists('/fake/test/app.apk'), True), + (self.call.device._GetApplicationPathsInternal('test.package'), + ['/fake/data/app/test.package.apk']), + (self.call.device._ComputeStaleApks('test.package', + ['/fake/test/app.apk']), + ([], None)), + (self.call.device.ForceStop('test.package'))): + self.device.Install(DeviceUtilsInstallTest.mock_apk, + reinstall=True, retries=0, permissions=[]) + + def testInstall_missingApk(self): + with self.assertCalls( + (mock.call.os.path.exists('/fake/test/app.apk'), False)): + with self.assertRaises(device_errors.CommandFailedError): + self.device.Install(DeviceUtilsInstallTest.mock_apk, retries=0) + + def testInstall_fails(self): + with self.assertCalls( + (mock.call.os.path.exists('/fake/test/app.apk'), True), + (self.call.device._GetApplicationPathsInternal('test.package'), []), + (self.call.adb.Install('/fake/test/app.apk', reinstall=False, + allow_downgrade=False), + self.CommandError('Failure\r\n'))): + with self.assertRaises(device_errors.CommandFailedError): + self.device.Install(DeviceUtilsInstallTest.mock_apk, retries=0) + + def testInstall_downgrade(self): + with self.assertCalls( + (mock.call.os.path.exists('/fake/test/app.apk'), True), + (self.call.device._GetApplicationPathsInternal('test.package'), + ['/fake/data/app/test.package.apk']), + (self.call.device._ComputeStaleApks('test.package', + ['/fake/test/app.apk']), + (['/fake/test/app.apk'], None)), + self.call.adb.Install('/fake/test/app.apk', reinstall=True, + allow_downgrade=True)): + self.device.Install(DeviceUtilsInstallTest.mock_apk, + reinstall=True, retries=0, permissions=[], allow_downgrade=True) + + +class DeviceUtilsInstallSplitApkTest(DeviceUtilsTest): + + mock_apk = _MockApkHelper('base.apk', 'test.package', ['p1']) + + def testInstallSplitApk_noPriorInstall(self): + with self.assertCalls( + (self.call.device._CheckSdkLevel(21)), + (mock.call.devil.android.sdk.split_select.SelectSplits( + self.device, 'base.apk', + ['split1.apk', 'split2.apk', 'split3.apk'], + allow_cached_props=False), + ['split2.apk']), + (mock.call.os.path.exists('base.apk'), True), + (mock.call.os.path.exists('split2.apk'), True), + (self.call.device._GetApplicationPathsInternal('test.package'), []), + (self.call.adb.InstallMultiple( + ['base.apk', 'split2.apk'], partial=None, reinstall=False, + allow_downgrade=False))): + self.device.InstallSplitApk(DeviceUtilsInstallSplitApkTest.mock_apk, + ['split1.apk', 'split2.apk', 'split3.apk'], permissions=[], retries=0) + + def testInstallSplitApk_partialInstall(self): + with self.assertCalls( + (self.call.device._CheckSdkLevel(21)), + (mock.call.devil.android.sdk.split_select.SelectSplits( + self.device, 'base.apk', + ['split1.apk', 'split2.apk', 'split3.apk'], + allow_cached_props=False), + ['split2.apk']), + (mock.call.os.path.exists('base.apk'), True), + (mock.call.os.path.exists('split2.apk'), True), + (self.call.device._GetApplicationPathsInternal('test.package'), + ['base-on-device.apk', 'split2-on-device.apk']), + (self.call.device._ComputeStaleApks('test.package', + ['base.apk', 'split2.apk']), + (['split2.apk'], None)), + (self.call.adb.InstallMultiple( + ['split2.apk'], partial='test.package', reinstall=True, + allow_downgrade=False))): + self.device.InstallSplitApk(DeviceUtilsInstallSplitApkTest.mock_apk, + ['split1.apk', 'split2.apk', 'split3.apk'], + reinstall=True, permissions=[], retries=0) + + def testInstallSplitApk_downgrade(self): + with self.assertCalls( + (self.call.device._CheckSdkLevel(21)), + (mock.call.devil.android.sdk.split_select.SelectSplits( + self.device, 'base.apk', + ['split1.apk', 'split2.apk', 'split3.apk'], + allow_cached_props=False), + ['split2.apk']), + (mock.call.os.path.exists('base.apk'), True), + (mock.call.os.path.exists('split2.apk'), True), + (self.call.device._GetApplicationPathsInternal('test.package'), + ['base-on-device.apk', 'split2-on-device.apk']), + (self.call.device._ComputeStaleApks('test.package', + ['base.apk', 'split2.apk']), + (['split2.apk'], None)), + (self.call.adb.InstallMultiple( + ['split2.apk'], partial='test.package', reinstall=True, + allow_downgrade=True))): + self.device.InstallSplitApk(DeviceUtilsInstallSplitApkTest.mock_apk, + ['split1.apk', 'split2.apk', 'split3.apk'], + reinstall=True, permissions=[], retries=0, + allow_downgrade=True) + + def testInstallSplitApk_missingSplit(self): + with self.assertCalls( + (self.call.device._CheckSdkLevel(21)), + (mock.call.devil.android.sdk.split_select.SelectSplits( + self.device, 'base.apk', + ['split1.apk', 'split2.apk', 'split3.apk'], + allow_cached_props=False), + ['split2.apk']), + (mock.call.os.path.exists('base.apk'), True), + (mock.call.os.path.exists('split2.apk'), False)): + with self.assertRaises(device_errors.CommandFailedError): + self.device.InstallSplitApk(DeviceUtilsInstallSplitApkTest.mock_apk, + ['split1.apk', 'split2.apk', 'split3.apk'], permissions=[], + retries=0) + + +class DeviceUtilsUninstallTest(DeviceUtilsTest): + + def testUninstall_callsThrough(self): + with self.assertCalls( + (self.call.device._GetApplicationPathsInternal('test.package'), + ['/path.apk']), + self.call.adb.Uninstall('test.package', True)): + self.device.Uninstall('test.package', True) + + def testUninstall_noop(self): + with self.assertCalls( + (self.call.device._GetApplicationPathsInternal('test.package'), [])): + self.device.Uninstall('test.package', True) + + +class DeviceUtilsSuTest(DeviceUtilsTest): + + def testSu_preM(self): + with self.patch_call( + self.call.device.build_version_sdk, + return_value=version_codes.LOLLIPOP_MR1): + self.assertEquals('su -c foo', self.device._Su('foo')) + + def testSu_mAndAbove(self): + with self.patch_call( + self.call.device.build_version_sdk, + return_value=version_codes.MARSHMALLOW): + self.assertEquals('su 0 foo', self.device._Su('foo')) + + +class DeviceUtilsRunShellCommandTest(DeviceUtilsTest): + + def setUp(self): + super(DeviceUtilsRunShellCommandTest, self).setUp() + self.device.NeedsSU = mock.Mock(return_value=False) + + def testRunShellCommand_commandAsList(self): + with self.assertCall(self.call.adb.Shell('pm list packages'), ''): + self.device.RunShellCommand( + ['pm', 'list', 'packages'], check_return=True) + + def testRunShellCommand_commandAsListQuoted(self): + with self.assertCall(self.call.adb.Shell("echo 'hello world' '$10'"), ''): + self.device.RunShellCommand( + ['echo', 'hello world', '$10'], check_return=True) + + def testRunShellCommand_commandAsString(self): + with self.assertCall(self.call.adb.Shell('echo "$VAR"'), ''): + self.device.RunShellCommand( + 'echo "$VAR"', shell=True, check_return=True) + + def testNewRunShellImpl_withEnv(self): + with self.assertCall( + self.call.adb.Shell('VAR=some_string echo "$VAR"'), ''): + self.device.RunShellCommand( + 'echo "$VAR"', shell=True, check_return=True, + env={'VAR': 'some_string'}) + + def testNewRunShellImpl_withEnvQuoted(self): + with self.assertCall( + self.call.adb.Shell('PATH="$PATH:/other/path" run_this'), ''): + self.device.RunShellCommand( + ['run_this'], check_return=True, env={'PATH': '$PATH:/other/path'}) + + def testNewRunShellImpl_withEnv_failure(self): + with self.assertRaises(KeyError): + self.device.RunShellCommand( + ['some_cmd'], check_return=True, env={'INVALID NAME': 'value'}) + + def testNewRunShellImpl_withCwd(self): + with self.assertCall(self.call.adb.Shell('cd /some/test/path && ls'), ''): + self.device.RunShellCommand( + ['ls'], check_return=True, cwd='/some/test/path') + + def testNewRunShellImpl_withCwdQuoted(self): + with self.assertCall( + self.call.adb.Shell("cd '/some test/path with/spaces' && ls"), ''): + self.device.RunShellCommand( + ['ls'], check_return=True, cwd='/some test/path with/spaces') + + def testRunShellCommand_withHugeCmd(self): + payload = 'hi! ' * 1024 + expected_cmd = "echo '%s'" % payload + with self.assertCalls( + (mock.call.devil.android.device_temp_file.DeviceTempFile( + self.adb, suffix='.sh'), MockTempFile('/sdcard/temp-123.sh')), + self.call.device._WriteFileWithPush('/sdcard/temp-123.sh', expected_cmd), + (self.call.adb.Shell('sh /sdcard/temp-123.sh'), payload + '\n')): + self.assertEquals( + [payload], + self.device.RunShellCommand(['echo', payload], check_return=True)) + + def testRunShellCommand_withHugeCmdAndSu(self): + payload = 'hi! ' * 1024 + expected_cmd_without_su = """sh -c 'echo '"'"'%s'"'"''""" % payload + expected_cmd = 'su -c %s' % expected_cmd_without_su + with self.assertCalls( + (self.call.device.NeedsSU(), True), + (self.call.device._Su(expected_cmd_without_su), expected_cmd), + (mock.call.devil.android.device_temp_file.DeviceTempFile( + self.adb, suffix='.sh'), MockTempFile('/sdcard/temp-123.sh')), + self.call.device._WriteFileWithPush('/sdcard/temp-123.sh', expected_cmd), + (self.call.adb.Shell('sh /sdcard/temp-123.sh'), payload + '\n')): + self.assertEquals( + [payload], + self.device.RunShellCommand( + ['echo', payload], check_return=True, as_root=True)) + + def testRunShellCommand_withSu(self): + expected_cmd_without_su = "sh -c 'setprop service.adb.root 0'" + expected_cmd = 'su -c %s' % expected_cmd_without_su + with self.assertCalls( + (self.call.device.NeedsSU(), True), + (self.call.device._Su(expected_cmd_without_su), expected_cmd), + (self.call.adb.Shell(expected_cmd), '')): + self.device.RunShellCommand( + ['setprop', 'service.adb.root', '0'], + check_return=True, as_root=True) + + def testRunShellCommand_withRunAs(self): + expected_cmd_without_run_as = "sh -c 'mkdir -p files'" + expected_cmd = ( + 'run-as org.devil.test_package %s' % expected_cmd_without_run_as) + with self.assertCall(self.call.adb.Shell(expected_cmd), ''): + self.device.RunShellCommand( + ['mkdir', '-p', 'files'], + check_return=True, run_as='org.devil.test_package') + + def testRunShellCommand_withRunAsAndSu(self): + expected_cmd_with_nothing = "sh -c 'mkdir -p files'" + expected_cmd_with_run_as = ( + 'run-as org.devil.test_package %s' % expected_cmd_with_nothing) + expected_cmd_without_su = ( + 'sh -c %s' % cmd_helper.SingleQuote(expected_cmd_with_run_as)) + expected_cmd = 'su -c %s' % expected_cmd_without_su + with self.assertCalls( + (self.call.device.NeedsSU(), True), + (self.call.device._Su(expected_cmd_without_su), expected_cmd), + (self.call.adb.Shell(expected_cmd), '')): + self.device.RunShellCommand( + ['mkdir', '-p', 'files'], + check_return=True, run_as='org.devil.test_package', + as_root=True) + + def testRunShellCommand_manyLines(self): + cmd = 'ls /some/path' + with self.assertCall(self.call.adb.Shell(cmd), 'file1\nfile2\nfile3\n'): + self.assertEquals( + ['file1', 'file2', 'file3'], + self.device.RunShellCommand(cmd.split(), check_return=True)) + + def testRunShellCommand_manyLinesRawOutput(self): + cmd = 'ls /some/path' + with self.assertCall(self.call.adb.Shell(cmd), '\rfile1\nfile2\r\nfile3\n'): + self.assertEquals( + '\rfile1\nfile2\r\nfile3\n', + self.device.RunShellCommand( + cmd.split(), check_return=True, raw_output=True)) + + def testRunShellCommand_singleLine_success(self): + cmd = 'echo $VALUE' + with self.assertCall(self.call.adb.Shell(cmd), 'some value\n'): + self.assertEquals( + 'some value', + self.device.RunShellCommand( + cmd, shell=True, check_return=True, single_line=True)) + + def testRunShellCommand_singleLine_successEmptyLine(self): + cmd = 'echo $VALUE' + with self.assertCall(self.call.adb.Shell(cmd), '\n'): + self.assertEquals( + '', + self.device.RunShellCommand( + cmd, shell=True, check_return=True, single_line=True)) + + def testRunShellCommand_singleLine_successWithoutEndLine(self): + cmd = 'echo -n $VALUE' + with self.assertCall(self.call.adb.Shell(cmd), 'some value'): + self.assertEquals( + 'some value', + self.device.RunShellCommand( + cmd, shell=True, check_return=True, single_line=True)) + + def testRunShellCommand_singleLine_successNoOutput(self): + cmd = 'echo -n $VALUE' + with self.assertCall(self.call.adb.Shell(cmd), ''): + self.assertEquals( + '', + self.device.RunShellCommand( + cmd, shell=True, check_return=True, single_line=True)) + + def testRunShellCommand_singleLine_failTooManyLines(self): + cmd = 'echo $VALUE' + with self.assertCall(self.call.adb.Shell(cmd), + 'some value\nanother value\n'): + with self.assertRaises(device_errors.CommandFailedError): + self.device.RunShellCommand( + cmd, shell=True, check_return=True, single_line=True) + + def testRunShellCommand_checkReturn_success(self): + cmd = 'echo $ANDROID_DATA' + output = '/data\n' + with self.assertCall(self.call.adb.Shell(cmd), output): + self.assertEquals( + [output.rstrip()], + self.device.RunShellCommand(cmd, shell=True, check_return=True)) + + def testRunShellCommand_checkReturn_failure(self): + cmd = 'ls /root' + output = 'opendir failed, Permission denied\n' + with self.assertCall(self.call.adb.Shell(cmd), self.ShellError(output)): + with self.assertRaises(device_errors.AdbCommandFailedError): + self.device.RunShellCommand(cmd.split(), check_return=True) + + def testRunShellCommand_checkReturn_disabled(self): + cmd = 'ls /root' + output = 'opendir failed, Permission denied\n' + with self.assertCall(self.call.adb.Shell(cmd), self.ShellError(output)): + self.assertEquals( + [output.rstrip()], + self.device.RunShellCommand(cmd.split(), check_return=False)) + + def testRunShellCommand_largeOutput_enabled(self): + cmd = 'echo $VALUE' + temp_file = MockTempFile('/sdcard/temp-123') + cmd_redirect = '( %s )>%s' % (cmd, temp_file.name) + with self.assertCalls( + (mock.call.devil.android.device_temp_file.DeviceTempFile(self.adb), + temp_file), + (self.call.adb.Shell(cmd_redirect)), + (self.call.device.ReadFile(temp_file.name, force_pull=True), + 'something')): + self.assertEquals( + ['something'], + self.device.RunShellCommand( + cmd, shell=True, large_output=True, check_return=True)) + + def testRunShellCommand_largeOutput_disabledNoTrigger(self): + cmd = 'something' + with self.assertCall(self.call.adb.Shell(cmd), self.ShellError('')): + with self.assertRaises(device_errors.AdbCommandFailedError): + self.device.RunShellCommand([cmd], check_return=True) + + def testRunShellCommand_largeOutput_disabledTrigger(self): + cmd = 'echo $VALUE' + temp_file = MockTempFile('/sdcard/temp-123') + cmd_redirect = '( %s )>%s' % (cmd, temp_file.name) + with self.assertCalls( + (self.call.adb.Shell(cmd), self.ShellError('', None)), + (mock.call.devil.android.device_temp_file.DeviceTempFile(self.adb), + temp_file), + (self.call.adb.Shell(cmd_redirect)), + (self.call.device.ReadFile(mock.ANY, force_pull=True), + 'something')): + self.assertEquals( + ['something'], + self.device.RunShellCommand(cmd, shell=True, check_return=True)) + + +class DeviceUtilsRunPipedShellCommandTest(DeviceUtilsTest): + + def testRunPipedShellCommand_success(self): + with self.assertCall( + self.call.device.RunShellCommand( + 'ps | grep foo; echo "PIPESTATUS: ${PIPESTATUS[@]}"', + shell=True, check_return=True), + ['This line contains foo', 'PIPESTATUS: 0 0']): + self.assertEquals(['This line contains foo'], + self.device._RunPipedShellCommand('ps | grep foo')) + + def testRunPipedShellCommand_firstCommandFails(self): + with self.assertCall( + self.call.device.RunShellCommand( + 'ps | grep foo; echo "PIPESTATUS: ${PIPESTATUS[@]}"', + shell=True, check_return=True), + ['PIPESTATUS: 1 0']): + with self.assertRaises(device_errors.AdbShellCommandFailedError) as ec: + self.device._RunPipedShellCommand('ps | grep foo') + self.assertEquals([1, 0], ec.exception.status) + + def testRunPipedShellCommand_secondCommandFails(self): + with self.assertCall( + self.call.device.RunShellCommand( + 'ps | grep foo; echo "PIPESTATUS: ${PIPESTATUS[@]}"', + shell=True, check_return=True), + ['PIPESTATUS: 0 1']): + with self.assertRaises(device_errors.AdbShellCommandFailedError) as ec: + self.device._RunPipedShellCommand('ps | grep foo') + self.assertEquals([0, 1], ec.exception.status) + + def testRunPipedShellCommand_outputCutOff(self): + with self.assertCall( + self.call.device.RunShellCommand( + 'ps | grep foo; echo "PIPESTATUS: ${PIPESTATUS[@]}"', + shell=True, check_return=True), + ['foo.bar'] * 256 + ['foo.ba']): + with self.assertRaises(device_errors.AdbShellCommandFailedError) as ec: + self.device._RunPipedShellCommand('ps | grep foo') + self.assertIs(None, ec.exception.status) + + +@mock.patch('time.sleep', mock.Mock()) +class DeviceUtilsKillAllTest(DeviceUtilsTest): + + def testKillAll_noMatchingProcessesFailure(self): + with self.assertCall(self.call.device.GetPids('test_process'), {}): + with self.assertRaises(device_errors.CommandFailedError): + self.device.KillAll('test_process') + + def testKillAll_noMatchingProcessesQuiet(self): + with self.assertCall(self.call.device.GetPids('test_process'), {}): + self.assertEqual(0, self.device.KillAll('test_process', quiet=True)) + + def testKillAll_nonblocking(self): + with self.assertCalls( + (self.call.device.GetPids('some.process'), + {'some.process': ['1234'], 'some.processing.thing': ['5678']}), + (self.call.adb.Shell('kill -9 1234 5678'), '')): + self.assertEquals( + 2, self.device.KillAll('some.process', blocking=False)) + + def testKillAll_blocking(self): + with self.assertCalls( + (self.call.device.GetPids('some.process'), + {'some.process': ['1234'], 'some.processing.thing': ['5678']}), + (self.call.adb.Shell('kill -9 1234 5678'), ''), + (self.call.device.GetPids('some.process'), + {'some.processing.thing': ['5678']}), + (self.call.device.GetPids('some.process'), + {'some.process': ['1111']})): # Other instance with different pid. + self.assertEquals( + 2, self.device.KillAll('some.process', blocking=True)) + + def testKillAll_exactNonblocking(self): + with self.assertCalls( + (self.call.device.GetPids('some.process'), + {'some.process': ['1234'], 'some.processing.thing': ['5678']}), + (self.call.adb.Shell('kill -9 1234'), '')): + self.assertEquals( + 1, self.device.KillAll('some.process', exact=True, blocking=False)) + + def testKillAll_exactBlocking(self): + with self.assertCalls( + (self.call.device.GetPids('some.process'), + {'some.process': ['1234'], 'some.processing.thing': ['5678']}), + (self.call.adb.Shell('kill -9 1234'), ''), + (self.call.device.GetPids('some.process'), + {'some.process': ['1234'], 'some.processing.thing': ['5678']}), + (self.call.device.GetPids('some.process'), + {'some.processing.thing': ['5678']})): + self.assertEquals( + 1, self.device.KillAll('some.process', exact=True, blocking=True)) + + def testKillAll_root(self): + with self.assertCalls( + (self.call.device.GetPids('some.process'), {'some.process': ['1234']}), + (self.call.device.NeedsSU(), True), + (self.call.device._Su("sh -c 'kill -9 1234'"), + "su -c sh -c 'kill -9 1234'"), + (self.call.adb.Shell("su -c sh -c 'kill -9 1234'"), '')): + self.assertEquals( + 1, self.device.KillAll('some.process', as_root=True)) + + def testKillAll_sigterm(self): + with self.assertCalls( + (self.call.device.GetPids('some.process'), + {'some.process': ['1234']}), + (self.call.adb.Shell('kill -15 1234'), '')): + self.assertEquals( + 1, self.device.KillAll('some.process', signum=device_signal.SIGTERM)) + + def testKillAll_multipleInstances(self): + with self.assertCalls( + (self.call.device.GetPids('some.process'), + {'some.process': ['1234', '4567']}), + (self.call.adb.Shell('kill -15 1234 4567'), '')): + self.assertEquals( + 2, self.device.KillAll('some.process', signum=device_signal.SIGTERM)) + + +class DeviceUtilsStartActivityTest(DeviceUtilsTest): + + def testStartActivity_actionOnly(self): + test_intent = intent.Intent(action='android.intent.action.VIEW') + with self.assertCall( + self.call.adb.Shell('am start ' + '-a android.intent.action.VIEW'), + 'Starting: Intent { act=android.intent.action.VIEW }'): + self.device.StartActivity(test_intent) + + def testStartActivity_success(self): + test_intent = intent.Intent(action='android.intent.action.VIEW', + package='test.package', + activity='.Main') + with self.assertCall( + self.call.adb.Shell('am start ' + '-a android.intent.action.VIEW ' + '-n test.package/.Main'), + 'Starting: Intent { act=android.intent.action.VIEW }'): + self.device.StartActivity(test_intent) + + def testStartActivity_failure(self): + test_intent = intent.Intent(action='android.intent.action.VIEW', + package='test.package', + activity='.Main') + with self.assertCall( + self.call.adb.Shell('am start ' + '-a android.intent.action.VIEW ' + '-n test.package/.Main'), + 'Error: Failed to start test activity'): + with self.assertRaises(device_errors.CommandFailedError): + self.device.StartActivity(test_intent) + + def testStartActivity_blocking(self): + test_intent = intent.Intent(action='android.intent.action.VIEW', + package='test.package', + activity='.Main') + with self.assertCall( + self.call.adb.Shell('am start ' + '-W ' + '-a android.intent.action.VIEW ' + '-n test.package/.Main'), + 'Starting: Intent { act=android.intent.action.VIEW }'): + self.device.StartActivity(test_intent, blocking=True) + + def testStartActivity_withCategory(self): + test_intent = intent.Intent(action='android.intent.action.VIEW', + package='test.package', + activity='.Main', + category='android.intent.category.HOME') + with self.assertCall( + self.call.adb.Shell('am start ' + '-a android.intent.action.VIEW ' + '-c android.intent.category.HOME ' + '-n test.package/.Main'), + 'Starting: Intent { act=android.intent.action.VIEW }'): + self.device.StartActivity(test_intent) + + def testStartActivity_withMultipleCategories(self): + test_intent = intent.Intent(action='android.intent.action.VIEW', + package='test.package', + activity='.Main', + category=['android.intent.category.HOME', + 'android.intent.category.BROWSABLE']) + with self.assertCall( + self.call.adb.Shell('am start ' + '-a android.intent.action.VIEW ' + '-c android.intent.category.HOME ' + '-c android.intent.category.BROWSABLE ' + '-n test.package/.Main'), + 'Starting: Intent { act=android.intent.action.VIEW }'): + self.device.StartActivity(test_intent) + + def testStartActivity_withData(self): + test_intent = intent.Intent(action='android.intent.action.VIEW', + package='test.package', + activity='.Main', + data='http://www.google.com/') + with self.assertCall( + self.call.adb.Shell('am start ' + '-a android.intent.action.VIEW ' + '-d http://www.google.com/ ' + '-n test.package/.Main'), + 'Starting: Intent { act=android.intent.action.VIEW }'): + self.device.StartActivity(test_intent) + + def testStartActivity_withStringExtra(self): + test_intent = intent.Intent(action='android.intent.action.VIEW', + package='test.package', + activity='.Main', + extras={'foo': 'test'}) + with self.assertCall( + self.call.adb.Shell('am start ' + '-a android.intent.action.VIEW ' + '-n test.package/.Main ' + '--es foo test'), + 'Starting: Intent { act=android.intent.action.VIEW }'): + self.device.StartActivity(test_intent) + + def testStartActivity_withBoolExtra(self): + test_intent = intent.Intent(action='android.intent.action.VIEW', + package='test.package', + activity='.Main', + extras={'foo': True}) + with self.assertCall( + self.call.adb.Shell('am start ' + '-a android.intent.action.VIEW ' + '-n test.package/.Main ' + '--ez foo True'), + 'Starting: Intent { act=android.intent.action.VIEW }'): + self.device.StartActivity(test_intent) + + def testStartActivity_withIntExtra(self): + test_intent = intent.Intent(action='android.intent.action.VIEW', + package='test.package', + activity='.Main', + extras={'foo': 123}) + with self.assertCall( + self.call.adb.Shell('am start ' + '-a android.intent.action.VIEW ' + '-n test.package/.Main ' + '--ei foo 123'), + 'Starting: Intent { act=android.intent.action.VIEW }'): + self.device.StartActivity(test_intent) + + def testStartActivity_withTraceFile(self): + test_intent = intent.Intent(action='android.intent.action.VIEW', + package='test.package', + activity='.Main') + with self.assertCall( + self.call.adb.Shell('am start ' + '--start-profiler test_trace_file.out ' + '-a android.intent.action.VIEW ' + '-n test.package/.Main'), + 'Starting: Intent { act=android.intent.action.VIEW }'): + self.device.StartActivity(test_intent, + trace_file_name='test_trace_file.out') + + def testStartActivity_withForceStop(self): + test_intent = intent.Intent(action='android.intent.action.VIEW', + package='test.package', + activity='.Main') + with self.assertCall( + self.call.adb.Shell('am start ' + '-S ' + '-a android.intent.action.VIEW ' + '-n test.package/.Main'), + 'Starting: Intent { act=android.intent.action.VIEW }'): + self.device.StartActivity(test_intent, force_stop=True) + + def testStartActivity_withFlags(self): + test_intent = intent.Intent(action='android.intent.action.VIEW', + package='test.package', + activity='.Main', + flags=[ + intent.FLAG_ACTIVITY_NEW_TASK, + intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED + ]) + with self.assertCall( + self.call.adb.Shell('am start ' + '-a android.intent.action.VIEW ' + '-n test.package/.Main ' + '-f 0x10200000'), + 'Starting: Intent { act=android.intent.action.VIEW }'): + self.device.StartActivity(test_intent) + + +class DeviceUtilsStartInstrumentationTest(DeviceUtilsTest): + + def testStartInstrumentation_nothing(self): + with self.assertCalls( + self.call.device.RunShellCommand( + 'p=test.package;am instrument "$p"/.TestInstrumentation', + shell=True, check_return=True, large_output=True)): + self.device.StartInstrumentation( + 'test.package/.TestInstrumentation', + finish=False, raw=False, extras=None) + + def testStartInstrumentation_finish(self): + with self.assertCalls( + (self.call.device.RunShellCommand( + 'p=test.package;am instrument -w "$p"/.TestInstrumentation', + shell=True, check_return=True, large_output=True), + ['OK (1 test)'])): + output = self.device.StartInstrumentation( + 'test.package/.TestInstrumentation', + finish=True, raw=False, extras=None) + self.assertEquals(['OK (1 test)'], output) + + def testStartInstrumentation_raw(self): + with self.assertCalls( + self.call.device.RunShellCommand( + 'p=test.package;am instrument -r "$p"/.TestInstrumentation', + shell=True, check_return=True, large_output=True)): + self.device.StartInstrumentation( + 'test.package/.TestInstrumentation', + finish=False, raw=True, extras=None) + + def testStartInstrumentation_extras(self): + with self.assertCalls( + self.call.device.RunShellCommand( + 'p=test.package;am instrument -e "$p".foo Foo -e bar \'Val \'"$p" ' + '"$p"/.TestInstrumentation', + shell=True, check_return=True, large_output=True)): + self.device.StartInstrumentation( + 'test.package/.TestInstrumentation', + finish=False, raw=False, extras={'test.package.foo': 'Foo', + 'bar': 'Val test.package'}) + + +class DeviceUtilsBroadcastIntentTest(DeviceUtilsTest): + + def testBroadcastIntent_noExtras(self): + test_intent = intent.Intent(action='test.package.with.an.INTENT') + with self.assertCall( + self.call.adb.Shell('am broadcast -a test.package.with.an.INTENT'), + 'Broadcasting: Intent { act=test.package.with.an.INTENT } '): + self.device.BroadcastIntent(test_intent) + + def testBroadcastIntent_withExtra(self): + test_intent = intent.Intent(action='test.package.with.an.INTENT', + extras={'foo': 'bar value'}) + with self.assertCall( + self.call.adb.Shell( + "am broadcast -a test.package.with.an.INTENT --es foo 'bar value'"), + 'Broadcasting: Intent { act=test.package.with.an.INTENT } '): + self.device.BroadcastIntent(test_intent) + + def testBroadcastIntent_withExtra_noValue(self): + test_intent = intent.Intent(action='test.package.with.an.INTENT', + extras={'foo': None}) + with self.assertCall( + self.call.adb.Shell( + 'am broadcast -a test.package.with.an.INTENT --esn foo'), + 'Broadcasting: Intent { act=test.package.with.an.INTENT } '): + self.device.BroadcastIntent(test_intent) + + +class DeviceUtilsGoHomeTest(DeviceUtilsTest): + + def testGoHome_popupsExist(self): + with self.assertCalls( + (self.call.device.RunShellCommand( + ['dumpsys', 'window', 'windows'], check_return=True, + large_output=True), []), + (self.call.device.RunShellCommand( + ['am', 'start', '-W', '-a', 'android.intent.action.MAIN', + '-c', 'android.intent.category.HOME'], check_return=True), + 'Starting: Intent { act=android.intent.action.MAIN }\r\n'''), + (self.call.device.RunShellCommand( + ['dumpsys', 'window', 'windows'], check_return=True, + large_output=True), []), + (self.call.device.RunShellCommand( + ['input', 'keyevent', '66'], check_return=True)), + (self.call.device.RunShellCommand( + ['input', 'keyevent', '4'], check_return=True)), + (self.call.device.RunShellCommand( + ['dumpsys', 'window', 'windows'], check_return=True, + large_output=True), + ['mCurrentFocus Launcher'])): + self.device.GoHome() + + def testGoHome_willRetry(self): + with self.assertCalls( + (self.call.device.RunShellCommand( + ['dumpsys', 'window', 'windows'], check_return=True, + large_output=True), []), + (self.call.device.RunShellCommand( + ['am', 'start', '-W', '-a', 'android.intent.action.MAIN', + '-c', 'android.intent.category.HOME'], check_return=True), + 'Starting: Intent { act=android.intent.action.MAIN }\r\n'''), + (self.call.device.RunShellCommand( + ['dumpsys', 'window', 'windows'], check_return=True, + large_output=True), []), + (self.call.device.RunShellCommand( + ['input', 'keyevent', '66'], check_return=True,)), + (self.call.device.RunShellCommand( + ['input', 'keyevent', '4'], check_return=True)), + (self.call.device.RunShellCommand( + ['dumpsys', 'window', 'windows'], check_return=True, + large_output=True), []), + (self.call.device.RunShellCommand( + ['input', 'keyevent', '66'], check_return=True)), + (self.call.device.RunShellCommand( + ['input', 'keyevent', '4'], check_return=True)), + (self.call.device.RunShellCommand( + ['dumpsys', 'window', 'windows'], check_return=True, + large_output=True), + self.TimeoutError())): + with self.assertRaises(device_errors.CommandTimeoutError): + self.device.GoHome() + + def testGoHome_alreadyFocused(self): + with self.assertCall( + self.call.device.RunShellCommand( + ['dumpsys', 'window', 'windows'], check_return=True, + large_output=True), + ['mCurrentFocus Launcher']): + self.device.GoHome() + + def testGoHome_alreadyFocusedAlternateCase(self): + with self.assertCall( + self.call.device.RunShellCommand( + ['dumpsys', 'window', 'windows'], check_return=True, + large_output=True), + [' mCurrentFocus .launcher/.']): + self.device.GoHome() + + def testGoHome_obtainsFocusAfterGoingHome(self): + with self.assertCalls( + (self.call.device.RunShellCommand( + ['dumpsys', 'window', 'windows'], check_return=True, + large_output=True), []), + (self.call.device.RunShellCommand( + ['am', 'start', '-W', '-a', 'android.intent.action.MAIN', + '-c', 'android.intent.category.HOME'], check_return=True), + 'Starting: Intent { act=android.intent.action.MAIN }\r\n'''), + (self.call.device.RunShellCommand( + ['dumpsys', 'window', 'windows'], check_return=True, + large_output=True), + ['mCurrentFocus Launcher'])): + self.device.GoHome() + + +class DeviceUtilsForceStopTest(DeviceUtilsTest): + + def testForceStop(self): + with self.assertCalls( + (self.call.device.GetPids('test.package'), {'test.package': [1111]}), + (self.call.device.RunShellCommand( + ['am', 'force-stop', 'test.package'], + check_return=True), + ['Success'])): + self.device.ForceStop('test.package') + + def testForceStop_NoProcessFound(self): + with self.assertCall( + self.call.device.GetPids('test.package'), {}): + self.device.ForceStop('test.package') + + +class DeviceUtilsClearApplicationStateTest(DeviceUtilsTest): + + def testClearApplicationState_setPermissions(self): + with self.assertCalls( + (self.call.device.GetProp('ro.build.version.sdk', cache=True), '17'), + (self.call.device._GetApplicationPathsInternal('this.package.exists'), + ['/data/app/this.package.exists.apk']), + (self.call.device.RunShellCommand( + ['pm', 'clear', 'this.package.exists'], + check_return=True), + ['Success']), + (self.call.device.GrantPermissions( + 'this.package.exists', ['p1']), [])): + self.device.ClearApplicationState( + 'this.package.exists', permissions=['p1']) + + def testClearApplicationState_packageDoesntExist(self): + with self.assertCalls( + (self.call.device.GetProp('ro.build.version.sdk', cache=True), '11'), + (self.call.device._GetApplicationPathsInternal('does.not.exist'), + [])): + self.device.ClearApplicationState('does.not.exist') + + def testClearApplicationState_packageDoesntExistOnAndroidJBMR2OrAbove(self): + with self.assertCalls( + (self.call.device.GetProp('ro.build.version.sdk', cache=True), '18'), + (self.call.device.RunShellCommand( + ['pm', 'clear', 'this.package.does.not.exist'], + check_return=True), + ['Failed'])): + self.device.ClearApplicationState('this.package.does.not.exist') + + def testClearApplicationState_packageExists(self): + with self.assertCalls( + (self.call.device.GetProp('ro.build.version.sdk', cache=True), '17'), + (self.call.device._GetApplicationPathsInternal('this.package.exists'), + ['/data/app/this.package.exists.apk']), + (self.call.device.RunShellCommand( + ['pm', 'clear', 'this.package.exists'], + check_return=True), + ['Success'])): + self.device.ClearApplicationState('this.package.exists') + + def testClearApplicationState_packageExistsOnAndroidJBMR2OrAbove(self): + with self.assertCalls( + (self.call.device.GetProp('ro.build.version.sdk', cache=True), '18'), + (self.call.device.RunShellCommand( + ['pm', 'clear', 'this.package.exists'], + check_return=True), + ['Success'])): + self.device.ClearApplicationState('this.package.exists') + + +class DeviceUtilsSendKeyEventTest(DeviceUtilsTest): + + def testSendKeyEvent(self): + with self.assertCall(self.call.adb.Shell('input keyevent 66'), ''): + self.device.SendKeyEvent(66) + + +class DeviceUtilsPushChangedFilesIndividuallyTest(DeviceUtilsTest): + + def testPushChangedFilesIndividually_empty(self): + test_files = [] + with self.assertCalls(): + self.device._PushChangedFilesIndividually(test_files) + + def testPushChangedFilesIndividually_single(self): + test_files = [('/test/host/path', '/test/device/path')] + with self.assertCalls(self.call.adb.Push(*test_files[0])): + self.device._PushChangedFilesIndividually(test_files) + + def testPushChangedFilesIndividually_multiple(self): + test_files = [ + ('/test/host/path/file1', '/test/device/path/file1'), + ('/test/host/path/file2', '/test/device/path/file2')] + with self.assertCalls( + self.call.adb.Push(*test_files[0]), + self.call.adb.Push(*test_files[1])): + self.device._PushChangedFilesIndividually(test_files) + + +class DeviceUtilsPushChangedFilesZippedTest(DeviceUtilsTest): + + def testPushChangedFilesZipped_noUnzipCommand(self): + test_files = [('/test/host/path/file1', '/test/device/path/file1')] + mock_zip_temp = mock.mock_open() + mock_zip_temp.return_value.name = '/test/temp/file/tmp.zip' + with self.assertCalls( + (mock.call.tempfile.NamedTemporaryFile(suffix='.zip'), mock_zip_temp), + (mock.call.multiprocessing.Process( + target=device_utils.DeviceUtils._CreateDeviceZip, + args=('/test/temp/file/tmp.zip', test_files)), mock.Mock()), + (self.call.device._MaybeInstallCommands(), False)): + self.assertFalse(self.device._PushChangedFilesZipped(test_files, + ['/test/dir'])) + + def _testPushChangedFilesZipped_spec(self, test_files): + mock_zip_temp = mock.mock_open() + mock_zip_temp.return_value.name = '/test/temp/file/tmp.zip' + with self.assertCalls( + (mock.call.tempfile.NamedTemporaryFile(suffix='.zip'), mock_zip_temp), + (mock.call.multiprocessing.Process( + target=device_utils.DeviceUtils._CreateDeviceZip, + args=('/test/temp/file/tmp.zip', test_files)), mock.Mock()), + (self.call.device._MaybeInstallCommands(), True), + (self.call.device.NeedsSU(), True), + (mock.call.devil.android.device_temp_file.DeviceTempFile(self.adb, + suffix='.zip'), + MockTempFile('/test/sdcard/foo123.zip')), + self.call.adb.Push( + '/test/temp/file/tmp.zip', '/test/sdcard/foo123.zip'), + self.call.device.RunShellCommand( + 'unzip /test/sdcard/foo123.zip&&chmod -R 777 /test/dir', + shell=True, as_root=True, + env={'PATH': '/data/local/tmp/bin:$PATH'}, + check_return=True)): + self.assertTrue(self.device._PushChangedFilesZipped(test_files, + ['/test/dir'])) + + def testPushChangedFilesZipped_single(self): + self._testPushChangedFilesZipped_spec( + [('/test/host/path/file1', '/test/device/path/file1')]) + + def testPushChangedFilesZipped_multiple(self): + self._testPushChangedFilesZipped_spec( + [('/test/host/path/file1', '/test/device/path/file1'), + ('/test/host/path/file2', '/test/device/path/file2')]) + + +class DeviceUtilsPathExistsTest(DeviceUtilsTest): + + def testPathExists_pathExists(self): + with self.assertCall( + self.call.device.RunShellCommand( + ['test', '-e', '/path/file exists'], + as_root=False, check_return=True, timeout=10, retries=0), + []): + self.assertTrue(self.device.PathExists('/path/file exists')) + + def testPathExists_multiplePathExists(self): + with self.assertCall( + self.call.device.RunShellCommand( + ['test', '-e', '/path 1', '-a', '-e', '/path2'], + as_root=False, check_return=True, timeout=10, retries=0), + []): + self.assertTrue(self.device.PathExists(('/path 1', '/path2'))) + + def testPathExists_pathDoesntExist(self): + with self.assertCall( + self.call.device.RunShellCommand( + ['test', '-e', '/path/file.not.exists'], + as_root=False, check_return=True, timeout=10, retries=0), + self.ShellError()): + self.assertFalse(self.device.PathExists('/path/file.not.exists')) + + def testPathExists_asRoot(self): + with self.assertCall( + self.call.device.RunShellCommand( + ['test', '-e', '/root/path/exists'], + as_root=True, check_return=True, timeout=10, retries=0), + self.ShellError()): + self.assertFalse( + self.device.PathExists('/root/path/exists', as_root=True)) + + def testFileExists_pathDoesntExist(self): + with self.assertCall( + self.call.device.RunShellCommand( + ['test', '-e', '/path/file.not.exists'], + as_root=False, check_return=True, timeout=10, retries=0), + self.ShellError()): + self.assertFalse(self.device.FileExists('/path/file.not.exists')) + + +class DeviceUtilsRemovePathTest(DeviceUtilsTest): + + def testRemovePath_regular(self): + with self.assertCall( + self.call.device.RunShellCommand( + ['rm', 'some file'], as_root=False, check_return=True), + []): + self.device.RemovePath('some file') + + def testRemovePath_withForce(self): + with self.assertCall( + self.call.device.RunShellCommand( + ['rm', '-f', 'some file'], as_root=False, check_return=True), + []): + self.device.RemovePath('some file', force=True) + + def testRemovePath_recursively(self): + with self.assertCall( + self.call.device.RunShellCommand( + ['rm', '-r', '/remove/this/dir'], as_root=False, check_return=True), + []): + self.device.RemovePath('/remove/this/dir', recursive=True) + + def testRemovePath_withRoot(self): + with self.assertCall( + self.call.device.RunShellCommand( + ['rm', 'some file'], as_root=True, check_return=True), + []): + self.device.RemovePath('some file', as_root=True) + + def testRemovePath_manyPaths(self): + with self.assertCall( + self.call.device.RunShellCommand( + ['rm', 'eeny', 'meeny', 'miny', 'moe'], + as_root=False, check_return=True), + []): + self.device.RemovePath(['eeny', 'meeny', 'miny', 'moe']) + + +class DeviceUtilsPullFileTest(DeviceUtilsTest): + + def testPullFile_existsOnDevice(self): + with mock.patch('os.path.exists', return_value=True): + with self.assertCall( + self.call.adb.Pull('/data/app/test.file.exists', + '/test/file/host/path')): + self.device.PullFile('/data/app/test.file.exists', + '/test/file/host/path') + + def testPullFile_doesntExistOnDevice(self): + with mock.patch('os.path.exists', return_value=True): + with self.assertCall( + self.call.adb.Pull('/data/app/test.file.does.not.exist', + '/test/file/host/path'), + self.CommandError('remote object does not exist')): + with self.assertRaises(device_errors.CommandFailedError): + self.device.PullFile('/data/app/test.file.does.not.exist', + '/test/file/host/path') + + +class DeviceUtilsReadFileTest(DeviceUtilsTest): + + def testReadFileWithPull_success(self): + tmp_host_dir = '/tmp/dir/on.host/' + tmp_host = MockTempFile('/tmp/dir/on.host/tmp_ReadFileWithPull') + tmp_host.file.read.return_value = 'some interesting contents' + with self.assertCalls( + (mock.call.tempfile.mkdtemp(), tmp_host_dir), + (self.call.adb.Pull('/path/to/device/file', mock.ANY)), + (mock.call.__builtin__.open(mock.ANY, 'r'), tmp_host), + (mock.call.os.path.exists(tmp_host_dir), True), + (mock.call.shutil.rmtree(tmp_host_dir), None)): + self.assertEquals('some interesting contents', + self.device._ReadFileWithPull('/path/to/device/file')) + tmp_host.file.read.assert_called_once_with() + + def testReadFileWithPull_rejected(self): + tmp_host_dir = '/tmp/dir/on.host/' + with self.assertCalls( + (mock.call.tempfile.mkdtemp(), tmp_host_dir), + (self.call.adb.Pull('/path/to/device/file', mock.ANY), + self.CommandError()), + (mock.call.os.path.exists(tmp_host_dir), True), + (mock.call.shutil.rmtree(tmp_host_dir), None)): + with self.assertRaises(device_errors.CommandFailedError): + self.device._ReadFileWithPull('/path/to/device/file') + + def testReadFile_exists(self): + with self.assertCalls( + (self.call.device.FileSize('/read/this/test/file', as_root=False), 256), + (self.call.device.RunShellCommand( + ['cat', '/read/this/test/file'], + as_root=False, check_return=True), + ['this is a test file'])): + self.assertEqual('this is a test file\n', + self.device.ReadFile('/read/this/test/file')) + + def testReadFile_exists2(self): + # Same as testReadFile_exists, but uses Android N ls output. + with self.assertCalls( + (self.call.device.FileSize('/read/this/test/file', as_root=False), 256), + (self.call.device.RunShellCommand( + ['cat', '/read/this/test/file'], + as_root=False, check_return=True), + ['this is a test file'])): + self.assertEqual('this is a test file\n', + self.device.ReadFile('/read/this/test/file')) + + def testReadFile_doesNotExist(self): + with self.assertCall( + self.call.device.FileSize('/this/file/does.not.exist', as_root=False), + self.CommandError('File does not exist')): + with self.assertRaises(device_errors.CommandFailedError): + self.device.ReadFile('/this/file/does.not.exist') + + def testReadFile_zeroSize(self): + with self.assertCalls( + (self.call.device.FileSize('/this/file/has/zero/size', as_root=False), + 0), + (self.call.device._ReadFileWithPull('/this/file/has/zero/size'), + 'but it has contents\n')): + self.assertEqual('but it has contents\n', + self.device.ReadFile('/this/file/has/zero/size')) + + def testReadFile_withSU(self): + with self.assertCalls( + (self.call.device.FileSize( + '/this/file/can.be.read.with.su', as_root=True), 256), + (self.call.device.RunShellCommand( + ['cat', '/this/file/can.be.read.with.su'], + as_root=True, check_return=True), + ['this is a test file', 'read with su'])): + self.assertEqual( + 'this is a test file\nread with su\n', + self.device.ReadFile('/this/file/can.be.read.with.su', + as_root=True)) + + def testReadFile_withPull(self): + contents = 'a' * 123456 + with self.assertCalls( + (self.call.device.FileSize('/read/this/big/test/file', as_root=False), + 123456), + (self.call.device._ReadFileWithPull('/read/this/big/test/file'), + contents)): + self.assertEqual( + contents, self.device.ReadFile('/read/this/big/test/file')) + + def testReadFile_withPullAndSU(self): + contents = 'b' * 123456 + with self.assertCalls( + (self.call.device.FileSize( + '/this/big/file/can.be.read.with.su', as_root=True), 123456), + (self.call.device.NeedsSU(), True), + (mock.call.devil.android.device_temp_file.DeviceTempFile(self.adb), + MockTempFile('/sdcard/tmp/on.device')), + self.call.device.RunShellCommand( + 'SRC=/this/big/file/can.be.read.with.su DEST=/sdcard/tmp/on.device;' + 'cp "$SRC" "$DEST" && chmod 666 "$DEST"', + shell=True, as_root=True, check_return=True), + (self.call.device._ReadFileWithPull('/sdcard/tmp/on.device'), + contents)): + self.assertEqual( + contents, + self.device.ReadFile('/this/big/file/can.be.read.with.su', + as_root=True)) + + def testReadFile_forcePull(self): + contents = 'a' * 123456 + with self.assertCall( + self.call.device._ReadFileWithPull('/read/this/big/test/file'), + contents): + self.assertEqual( + contents, + self.device.ReadFile('/read/this/big/test/file', force_pull=True)) + + +class DeviceUtilsWriteFileTest(DeviceUtilsTest): + + def testWriteFileWithPush_success(self): + tmp_host = MockTempFile('/tmp/file/on.host') + contents = 'some interesting contents' + with self.assertCalls( + (mock.call.tempfile.NamedTemporaryFile(), tmp_host), + self.call.adb.Push('/tmp/file/on.host', '/path/to/device/file')): + self.device._WriteFileWithPush('/path/to/device/file', contents) + tmp_host.file.write.assert_called_once_with(contents) + + def testWriteFileWithPush_rejected(self): + tmp_host = MockTempFile('/tmp/file/on.host') + contents = 'some interesting contents' + with self.assertCalls( + (mock.call.tempfile.NamedTemporaryFile(), tmp_host), + (self.call.adb.Push('/tmp/file/on.host', '/path/to/device/file'), + self.CommandError())): + with self.assertRaises(device_errors.CommandFailedError): + self.device._WriteFileWithPush('/path/to/device/file', contents) + + def testWriteFile_withPush(self): + contents = 'some large contents ' * 26 # 20 * 26 = 520 chars + with self.assertCalls( + self.call.device._WriteFileWithPush('/path/to/device/file', contents)): + self.device.WriteFile('/path/to/device/file', contents) + + def testWriteFile_withPushForced(self): + contents = 'tiny contents' + with self.assertCalls( + self.call.device._WriteFileWithPush('/path/to/device/file', contents)): + self.device.WriteFile('/path/to/device/file', contents, force_push=True) + + def testWriteFile_withPushAndSU(self): + contents = 'some large contents ' * 26 # 20 * 26 = 520 chars + with self.assertCalls( + (self.call.device.NeedsSU(), True), + (mock.call.devil.android.device_temp_file.DeviceTempFile(self.adb), + MockTempFile('/sdcard/tmp/on.device')), + self.call.device._WriteFileWithPush('/sdcard/tmp/on.device', contents), + self.call.device.RunShellCommand( + ['cp', '/sdcard/tmp/on.device', '/path/to/device/file'], + as_root=True, check_return=True)): + self.device.WriteFile('/path/to/device/file', contents, as_root=True) + + def testWriteFile_withEcho(self): + with self.assertCall(self.call.adb.Shell( + "echo -n the.contents > /test/file/to.write"), ''): + self.device.WriteFile('/test/file/to.write', 'the.contents') + + def testWriteFile_withEchoAndQuotes(self): + with self.assertCall(self.call.adb.Shell( + "echo -n 'the contents' > '/test/file/to write'"), ''): + self.device.WriteFile('/test/file/to write', 'the contents') + + def testWriteFile_withEchoAndSU(self): + expected_cmd_without_su = "sh -c 'echo -n contents > /test/file'" + expected_cmd = 'su -c %s' % expected_cmd_without_su + with self.assertCalls( + (self.call.device.NeedsSU(), True), + (self.call.device._Su(expected_cmd_without_su), expected_cmd), + (self.call.adb.Shell(expected_cmd), + '')): + self.device.WriteFile('/test/file', 'contents', as_root=True) + + +class DeviceUtilsStatDirectoryTest(DeviceUtilsTest): + # Note: Also tests ListDirectory in testStatDirectory_fileList. + + EXAMPLE_LS_OUTPUT = [ + 'total 12345', + 'drwxr-xr-x 19 root root 0 1970-04-06 18:03 .', + 'drwxr-xr-x 19 root root 0 1970-04-06 18:03 ..', + 'drwxr-xr-x 6 root root 1970-01-01 00:00 some_dir', + '-rw-r--r-- 1 root root 723 1971-01-01 07:04 some_file', + '-rw-r----- 1 root root 327 2009-02-13 23:30 My Music File', + # Older Android versions do not print st_nlink + 'lrwxrwxrwx root root 1970-01-01 00:00 lnk -> /some/path', + 'srwxrwx--- system system 2016-05-31 17:25 a_socket1', + 'drwxrwxrwt system misc 1970-11-23 02:25 tmp', + 'drwxr-s--- system shell 1970-11-23 02:24 my_cmd', + 'cr--r----- root system 10, 183 1971-01-01 07:04 random', + 'brw------- root root 7, 0 1971-01-01 07:04 block_dev', + '-rwS------ root shell 157404 2015-04-13 15:44 silly', + ] + + FILENAMES = [ + 'some_dir', 'some_file', 'My Music File', 'lnk', 'a_socket1', + 'tmp', 'my_cmd', 'random', 'block_dev', 'silly'] + + def getStatEntries(self, path_given='/', path_listed='/'): + with self.assertCall( + self.call.device.RunShellCommand( + ['ls', '-a', '-l', path_listed], + check_return=True, as_root=False, env={'TZ': 'utc'}), + self.EXAMPLE_LS_OUTPUT): + entries = self.device.StatDirectory(path_given) + return {f['filename']: f for f in entries} + + def getListEntries(self): + with self.assertCall( + self.call.device.RunShellCommand( + ['ls', '-a', '-l', '/'], + check_return=True, as_root=False, env={'TZ': 'utc'}), + self.EXAMPLE_LS_OUTPUT): + return self.device.ListDirectory('/') + + def testStatDirectory_forceTrailingSlash(self): + self.getStatEntries(path_given='/foo/bar/', path_listed='/foo/bar/') + self.getStatEntries(path_given='/foo/bar', path_listed='/foo/bar/') + + def testStatDirectory_fileList(self): + self.assertItemsEqual(self.getStatEntries().keys(), self.FILENAMES) + self.assertItemsEqual(self.getListEntries(), self.FILENAMES) + + def testStatDirectory_fileModes(self): + expected_modes = ( + ('some_dir', stat.S_ISDIR), + ('some_file', stat.S_ISREG), + ('lnk', stat.S_ISLNK), + ('a_socket1', stat.S_ISSOCK), + ('block_dev', stat.S_ISBLK), + ('random', stat.S_ISCHR), + ) + entries = self.getStatEntries() + for filename, check in expected_modes: + self.assertTrue(check(entries[filename]['st_mode'])) + + def testStatDirectory_filePermissions(self): + should_have = ( + ('some_file', stat.S_IWUSR), # Owner can write. + ('tmp', stat.S_IXOTH), # Others can execute. + ('tmp', stat.S_ISVTX), # Has sticky bit. + ('my_cmd', stat.S_ISGID), # Has set-group-ID bit. + ('silly', stat.S_ISUID), # Has set UID bit. + ) + should_not_have = ( + ('some_file', stat.S_IWOTH), # Others can't write. + ('block_dev', stat.S_IRGRP), # Group can't read. + ('silly', stat.S_IXUSR), # Owner can't execute. + ) + entries = self.getStatEntries() + for filename, bit in should_have: + self.assertTrue(entries[filename]['st_mode'] & bit) + for filename, bit in should_not_have: + self.assertFalse(entries[filename]['st_mode'] & bit) + + def testStatDirectory_numHardLinks(self): + entries = self.getStatEntries() + self.assertEqual(entries['some_dir']['st_nlink'], 6) + self.assertEqual(entries['some_file']['st_nlink'], 1) + self.assertFalse('st_nlink' in entries['tmp']) + + def testStatDirectory_fileOwners(self): + entries = self.getStatEntries() + self.assertEqual(entries['some_dir']['st_owner'], 'root') + self.assertEqual(entries['my_cmd']['st_owner'], 'system') + self.assertEqual(entries['my_cmd']['st_group'], 'shell') + self.assertEqual(entries['tmp']['st_group'], 'misc') + + def testStatDirectory_fileSize(self): + entries = self.getStatEntries() + self.assertEqual(entries['some_file']['st_size'], 723) + self.assertEqual(entries['My Music File']['st_size'], 327) + # Sizes are sometimes not reported for non-regular files, don't try to + # guess the size in those cases. + self.assertFalse('st_size' in entries['some_dir']) + + def testStatDirectory_fileDateTime(self): + entries = self.getStatEntries() + self.assertEqual(entries['some_dir']['st_mtime'], 0) # Epoch! + self.assertEqual(entries['My Music File']['st_mtime'], 1234567800) + + def testStatDirectory_deviceType(self): + entries = self.getStatEntries() + self.assertEqual(entries['random']['st_rdev_pair'], (10, 183)) + self.assertEqual(entries['block_dev']['st_rdev_pair'], (7, 0)) + + def testStatDirectory_symbolicLinks(self): + entries = self.getStatEntries() + self.assertEqual(entries['lnk']['symbolic_link_to'], '/some/path') + for d in entries.itervalues(): + self.assertEqual('symbolic_link_to' in d, stat.S_ISLNK(d['st_mode'])) + + +class DeviceUtilsStatPathTest(DeviceUtilsTest): + + EXAMPLE_DIRECTORY = [ + {'filename': 'foo.txt', 'st_size': 123, 'st_time': 456}, + {'filename': 'some_dir', 'st_time': 0} + ] + INDEX = {e['filename']: e for e in EXAMPLE_DIRECTORY} + + def testStatPath_file(self): + with self.assertCall( + self.call.device.StatDirectory('/data/local/tmp', as_root=False), + self.EXAMPLE_DIRECTORY): + self.assertEquals(self.INDEX['foo.txt'], + self.device.StatPath('/data/local/tmp/foo.txt')) + + def testStatPath_directory(self): + with self.assertCall( + self.call.device.StatDirectory('/data/local/tmp', as_root=False), + self.EXAMPLE_DIRECTORY): + self.assertEquals(self.INDEX['some_dir'], + self.device.StatPath('/data/local/tmp/some_dir')) + + def testStatPath_directoryWithTrailingSlash(self): + with self.assertCall( + self.call.device.StatDirectory('/data/local/tmp', as_root=False), + self.EXAMPLE_DIRECTORY): + self.assertEquals(self.INDEX['some_dir'], + self.device.StatPath('/data/local/tmp/some_dir/')) + + def testStatPath_doesNotExist(self): + with self.assertCall( + self.call.device.StatDirectory('/data/local/tmp', as_root=False), + self.EXAMPLE_DIRECTORY): + with self.assertRaises(device_errors.CommandFailedError): + self.device.StatPath('/data/local/tmp/does.not.exist.txt') + + +class DeviceUtilsFileSizeTest(DeviceUtilsTest): + + EXAMPLE_DIRECTORY = [ + {'filename': 'foo.txt', 'st_size': 123, 'st_mtime': 456}, + {'filename': 'some_dir', 'st_mtime': 0} + ] + + def testFileSize_file(self): + with self.assertCall( + self.call.device.StatDirectory('/data/local/tmp', as_root=False), + self.EXAMPLE_DIRECTORY): + self.assertEquals(123, + self.device.FileSize('/data/local/tmp/foo.txt')) + + def testFileSize_doesNotExist(self): + with self.assertCall( + self.call.device.StatDirectory('/data/local/tmp', as_root=False), + self.EXAMPLE_DIRECTORY): + with self.assertRaises(device_errors.CommandFailedError): + self.device.FileSize('/data/local/tmp/does.not.exist.txt') + + def testFileSize_directoryWithNoSize(self): + with self.assertCall( + self.call.device.StatDirectory('/data/local/tmp', as_root=False), + self.EXAMPLE_DIRECTORY): + with self.assertRaises(device_errors.CommandFailedError): + self.device.FileSize('/data/local/tmp/some_dir') + + +class DeviceUtilsSetJavaAssertsTest(DeviceUtilsTest): + + def testSetJavaAsserts_enable(self): + with self.assertCalls( + (self.call.device.ReadFile(self.device.LOCAL_PROPERTIES_PATH), + 'some.example.prop=with an example value\n' + 'some.other.prop=value_ok\n'), + self.call.device.WriteFile( + self.device.LOCAL_PROPERTIES_PATH, + 'some.example.prop=with an example value\n' + 'some.other.prop=value_ok\n' + 'dalvik.vm.enableassertions=all\n'), + (self.call.device.GetProp('dalvik.vm.enableassertions'), ''), + self.call.device.SetProp('dalvik.vm.enableassertions', 'all')): + self.assertTrue(self.device.SetJavaAsserts(True)) + + def testSetJavaAsserts_disable(self): + with self.assertCalls( + (self.call.device.ReadFile(self.device.LOCAL_PROPERTIES_PATH), + 'some.example.prop=with an example value\n' + 'dalvik.vm.enableassertions=all\n' + 'some.other.prop=value_ok\n'), + self.call.device.WriteFile( + self.device.LOCAL_PROPERTIES_PATH, + 'some.example.prop=with an example value\n' + 'some.other.prop=value_ok\n'), + (self.call.device.GetProp('dalvik.vm.enableassertions'), 'all'), + self.call.device.SetProp('dalvik.vm.enableassertions', '')): + self.assertTrue(self.device.SetJavaAsserts(False)) + + def testSetJavaAsserts_alreadyEnabled(self): + with self.assertCalls( + (self.call.device.ReadFile(self.device.LOCAL_PROPERTIES_PATH), + 'some.example.prop=with an example value\n' + 'dalvik.vm.enableassertions=all\n' + 'some.other.prop=value_ok\n'), + (self.call.device.GetProp('dalvik.vm.enableassertions'), 'all')): + self.assertFalse(self.device.SetJavaAsserts(True)) + + def testSetJavaAsserts_malformedLocalProp(self): + with self.assertCalls( + (self.call.device.ReadFile(self.device.LOCAL_PROPERTIES_PATH), + 'some.example.prop=with an example value\n' + 'malformed_property\n' + 'dalvik.vm.enableassertions=all\n' + 'some.other.prop=value_ok\n'), + (self.call.device.GetProp('dalvik.vm.enableassertions'), 'all')): + self.assertFalse(self.device.SetJavaAsserts(True)) + + +class DeviceUtilsEnsureCacheInitializedTest(DeviceUtilsTest): + + def testEnsureCacheInitialized_noCache_success(self): + self.assertIsNone(self.device._cache['token']) + with self.assertCall( + self.call.device.RunShellCommand( + AnyStringWith('getprop'), + shell=True, check_return=True, large_output=True), + ['/sdcard', 'TOKEN']): + self.device._EnsureCacheInitialized() + self.assertIsNotNone(self.device._cache['token']) + + def testEnsureCacheInitialized_noCache_failure(self): + self.assertIsNone(self.device._cache['token']) + with self.assertCall( + self.call.device.RunShellCommand( + AnyStringWith('getprop'), + shell=True, check_return=True, large_output=True), + self.TimeoutError()): + with self.assertRaises(device_errors.CommandTimeoutError): + self.device._EnsureCacheInitialized() + self.assertIsNone(self.device._cache['token']) + + def testEnsureCacheInitialized_cache(self): + self.device._cache['token'] = 'TOKEN' + with self.assertCalls(): + self.device._EnsureCacheInitialized() + self.assertIsNotNone(self.device._cache['token']) + + +class DeviceUtilsGetPropTest(DeviceUtilsTest): + + def testGetProp_exists(self): + with self.assertCall( + self.call.device.RunShellCommand( + ['getprop', 'test.property'], check_return=True, single_line=True, + timeout=self.device._default_timeout, + retries=self.device._default_retries), + 'property_value'): + self.assertEqual('property_value', + self.device.GetProp('test.property')) + + def testGetProp_doesNotExist(self): + with self.assertCall( + self.call.device.RunShellCommand( + ['getprop', 'property.does.not.exist'], + check_return=True, single_line=True, + timeout=self.device._default_timeout, + retries=self.device._default_retries), + ''): + self.assertEqual('', self.device.GetProp('property.does.not.exist')) + + def testGetProp_cachedRoProp(self): + with self.assertCalls( + self.EnsureCacheInitialized(props=['[ro.build.type]: [userdebug]'])): + self.assertEqual('userdebug', + self.device.GetProp('ro.build.type', cache=True)) + self.assertEqual('userdebug', + self.device.GetProp('ro.build.type', cache=True)) + + +class DeviceUtilsSetPropTest(DeviceUtilsTest): + + def testSetProp(self): + with self.assertCall( + self.call.device.RunShellCommand( + ['setprop', 'test.property', 'test value'], check_return=True)): + self.device.SetProp('test.property', 'test value') + + def testSetProp_check_succeeds(self): + with self.assertCalls( + (self.call.device.RunShellCommand( + ['setprop', 'test.property', 'new_value'], check_return=True)), + (self.call.device.GetProp('test.property', cache=False), 'new_value')): + self.device.SetProp('test.property', 'new_value', check=True) + + def testSetProp_check_fails(self): + with self.assertCalls( + (self.call.device.RunShellCommand( + ['setprop', 'test.property', 'new_value'], check_return=True)), + (self.call.device.GetProp('test.property', cache=False), 'old_value')): + with self.assertRaises(device_errors.CommandFailedError): + self.device.SetProp('test.property', 'new_value', check=True) + + +class DeviceUtilsGetPidsTest(DeviceUtilsTest): + def setUp(self): + super(DeviceUtilsGetPidsTest, self).setUp() + self.sample_output = [ + 'USER PID PPID VSIZE RSS WCHAN PC NAME', + 'user 1001 100 1024 1024 ffffffff 00000000 one.match', + 'user 1002 100 1024 1024 ffffffff 00000000 two.match', + 'user 1003 100 1024 1024 ffffffff 00000000 three.match', + 'user 1234 100 1024 1024 ffffffff 00000000 my$process', + 'user 1000 100 1024 1024 ffffffff 00000000 foo', + 'user 1236 100 1024 1024 ffffffff 00000000 foo', + ] + + def _grepOutput(self, substring): + return [line for line in self.sample_output if substring in line] + + def testGetPids_sdkGreaterThanNougatMR1(self): + with self.patch_call(self.call.device.build_version_sdk, + return_value=(version_codes.NOUGAT_MR1 + 1)): + with self.patch_call(self.call.device.build_id, + return_value='ZZZ99Z'): + with self.assertCall( + self.call.device._RunPipedShellCommand( + 'ps -e | grep -F example.process'), []): + self.device.GetPids('example.process') + + def testGetPids_noMatches(self): + with self.patch_call(self.call.device.build_version_sdk, + return_value=version_codes.LOLLIPOP): + with self.assertCall( + self.call.device._RunPipedShellCommand('ps | grep -F does.not.match'), + self._grepOutput('does.not.match')): + self.assertEqual({}, self.device.GetPids('does.not.match')) + + def testGetPids_oneMatch(self): + with self.patch_call(self.call.device.build_version_sdk, + return_value=version_codes.LOLLIPOP): + with self.assertCall( + self.call.device._RunPipedShellCommand('ps | grep -F one.match'), + self._grepOutput('one.match')): + self.assertEqual( + {'one.match': ['1001']}, + self.device.GetPids('one.match')) + + def testGetPids_multipleMatches(self): + with self.patch_call(self.call.device.build_version_sdk, + return_value=version_codes.LOLLIPOP): + with self.assertCall( + self.call.device._RunPipedShellCommand('ps | grep -F match'), + self._grepOutput('match')): + self.assertEqual( + {'one.match': ['1001'], + 'two.match': ['1002'], + 'three.match': ['1003']}, + self.device.GetPids('match')) + + def testGetPids_quotable(self): + with self.patch_call(self.call.device.build_version_sdk, + return_value=version_codes.LOLLIPOP): + with self.assertCall( + self.call.device._RunPipedShellCommand("ps | grep -F 'my$process'"), + self._grepOutput('my$process')): + self.assertEqual( + {'my$process': ['1234']}, self.device.GetPids('my$process')) + + def testGetPids_multipleInstances(self): + with self.patch_call(self.call.device.build_version_sdk, + return_value=version_codes.LOLLIPOP): + with self.assertCall( + self.call.device._RunPipedShellCommand('ps | grep -F foo'), + self._grepOutput('foo')): + self.assertEqual( + {'foo': ['1000', '1236']}, + self.device.GetPids('foo')) + + def testGetPids_allProcesses(self): + with self.patch_call(self.call.device.build_version_sdk, + return_value=version_codes.LOLLIPOP): + with self.assertCall( + self.call.device.RunShellCommand( + ['ps'], check_return=True, large_output=True), + self.sample_output): + self.assertEqual( + {'one.match': ['1001'], + 'two.match': ['1002'], + 'three.match': ['1003'], + 'my$process': ['1234'], + 'foo': ['1000', '1236']}, + self.device.GetPids()) + + def testGetApplicationPids_notFound(self): + with self.patch_call(self.call.device.build_version_sdk, + return_value=version_codes.LOLLIPOP): + with self.assertCall( + self.call.device._RunPipedShellCommand('ps | grep -F match'), + self._grepOutput('match')): + # No PIDs found, process name should be exact match. + self.assertEqual([], self.device.GetApplicationPids('match')) + + def testGetApplicationPids_foundOne(self): + with self.patch_call(self.call.device.build_version_sdk, + return_value=version_codes.LOLLIPOP): + with self.assertCall( + self.call.device._RunPipedShellCommand('ps | grep -F one.match'), + self._grepOutput('one.match')): + self.assertEqual(['1001'], self.device.GetApplicationPids('one.match')) + + def testGetApplicationPids_foundMany(self): + with self.patch_call(self.call.device.build_version_sdk, + return_value=version_codes.LOLLIPOP): + with self.assertCall( + self.call.device._RunPipedShellCommand('ps | grep -F foo'), + self._grepOutput('foo')): + self.assertEqual( + ['1000', '1236'], + self.device.GetApplicationPids('foo')) + + def testGetApplicationPids_atMostOneNotFound(self): + with self.patch_call(self.call.device.build_version_sdk, + return_value=version_codes.LOLLIPOP): + with self.assertCall( + self.call.device._RunPipedShellCommand('ps | grep -F match'), + self._grepOutput('match')): + # No PIDs found, process name should be exact match. + self.assertEqual( + None, + self.device.GetApplicationPids('match', at_most_one=True)) + + def testGetApplicationPids_atMostOneFound(self): + with self.patch_call(self.call.device.build_version_sdk, + return_value=version_codes.LOLLIPOP): + with self.assertCall( + self.call.device._RunPipedShellCommand('ps | grep -F one.match'), + self._grepOutput('one.match')): + self.assertEqual( + '1001', + self.device.GetApplicationPids('one.match', at_most_one=True)) + + def testGetApplicationPids_atMostOneFoundTooMany(self): + with self.patch_call(self.call.device.build_version_sdk, + return_value=version_codes.LOLLIPOP): + with self.assertRaises(device_errors.CommandFailedError): + with self.assertCall( + self.call.device._RunPipedShellCommand('ps | grep -F foo'), + self._grepOutput('foo')): + self.device.GetApplicationPids('foo', at_most_one=True) + + +class DeviceUtilsGetSetEnforce(DeviceUtilsTest): + + def testGetEnforce_Enforcing(self): + with self.assertCall(self.call.adb.Shell('getenforce'), 'Enforcing'): + self.assertEqual(True, self.device.GetEnforce()) + + def testGetEnforce_Permissive(self): + with self.assertCall(self.call.adb.Shell('getenforce'), 'Permissive'): + self.assertEqual(False, self.device.GetEnforce()) + + def testGetEnforce_Disabled(self): + with self.assertCall(self.call.adb.Shell('getenforce'), 'Disabled'): + self.assertEqual(None, self.device.GetEnforce()) + + def testSetEnforce_Enforcing(self): + with self.assertCalls( + (self.call.device.NeedsSU(), False), + (self.call.adb.Shell('setenforce 1'), '')): + self.device.SetEnforce(enabled=True) + + def testSetEnforce_Permissive(self): + with self.assertCalls( + (self.call.device.NeedsSU(), False), + (self.call.adb.Shell('setenforce 0'), '')): + self.device.SetEnforce(enabled=False) + + def testSetEnforce_EnforcingWithInt(self): + with self.assertCalls( + (self.call.device.NeedsSU(), False), + (self.call.adb.Shell('setenforce 1'), '')): + self.device.SetEnforce(enabled=1) + + def testSetEnforce_PermissiveWithInt(self): + with self.assertCalls( + (self.call.device.NeedsSU(), False), + (self.call.adb.Shell('setenforce 0'), '')): + self.device.SetEnforce(enabled=0) + + def testSetEnforce_EnforcingWithStr(self): + with self.assertCalls( + (self.call.device.NeedsSU(), False), + (self.call.adb.Shell('setenforce 1'), '')): + self.device.SetEnforce(enabled='1') + + def testSetEnforce_PermissiveWithStr(self): + with self.assertCalls( + (self.call.device.NeedsSU(), False), + (self.call.adb.Shell('setenforce 0'), '')): + self.device.SetEnforce(enabled='0') # Not recommended but it works! + + +class DeviceUtilsTakeScreenshotTest(DeviceUtilsTest): + + def testTakeScreenshot_fileNameProvided(self): + with self.assertCalls( + (mock.call.devil.android.device_temp_file.DeviceTempFile( + self.adb, suffix='.png'), + MockTempFile('/tmp/path/temp-123.png')), + (self.call.adb.Shell('/system/bin/screencap -p /tmp/path/temp-123.png'), + ''), + self.call.device.PullFile('/tmp/path/temp-123.png', + '/test/host/screenshot.png')): + self.device.TakeScreenshot('/test/host/screenshot.png') + + +class DeviceUtilsGetMemoryUsageForPidTest(DeviceUtilsTest): + + def setUp(self): + super(DeviceUtilsGetMemoryUsageForPidTest, self).setUp() + + def testGetMemoryUsageForPid_validPid(self): + with self.assertCalls( + (self.call.device._RunPipedShellCommand( + 'showmap 1234 | grep TOTAL', as_root=True), + ['100 101 102 103 104 105 106 107 TOTAL']), + (self.call.device.ReadFile('/proc/1234/status', as_root=True), + 'VmHWM: 1024 kB\n')): + self.assertEqual( + { + 'Size': 100, + 'Rss': 101, + 'Pss': 102, + 'Shared_Clean': 103, + 'Shared_Dirty': 104, + 'Private_Clean': 105, + 'Private_Dirty': 106, + 'VmHWM': 1024 + }, + self.device.GetMemoryUsageForPid(1234)) + + def testGetMemoryUsageForPid_noSmaps(self): + with self.assertCalls( + (self.call.device._RunPipedShellCommand( + 'showmap 4321 | grep TOTAL', as_root=True), + ['cannot open /proc/4321/smaps: No such file or directory']), + (self.call.device.ReadFile('/proc/4321/status', as_root=True), + 'VmHWM: 1024 kb\n')): + self.assertEquals({'VmHWM': 1024}, self.device.GetMemoryUsageForPid(4321)) + + def testGetMemoryUsageForPid_noStatus(self): + with self.assertCalls( + (self.call.device._RunPipedShellCommand( + 'showmap 4321 | grep TOTAL', as_root=True), + ['100 101 102 103 104 105 106 107 TOTAL']), + (self.call.device.ReadFile('/proc/4321/status', as_root=True), + self.CommandError())): + self.assertEquals( + { + 'Size': 100, + 'Rss': 101, + 'Pss': 102, + 'Shared_Clean': 103, + 'Shared_Dirty': 104, + 'Private_Clean': 105, + 'Private_Dirty': 106, + }, + self.device.GetMemoryUsageForPid(4321)) + + +class DeviceUtilsDismissCrashDialogIfNeededTest(DeviceUtilsTest): + + def testDismissCrashDialogIfNeeded_crashedPageckageNotFound(self): + sample_dumpsys_output = ''' +WINDOW MANAGER WINDOWS (dumpsys window windows) + Window #11 Window{f8b647a u0 SearchPanel}: + mDisplayId=0 mSession=Session{8 94:122} mClient=android.os.BinderProxy@1ba5 + mOwnerUid=100 mShowToOwnerOnly=false package=com.android.systemui appop=NONE + mAttrs=WM.LayoutParams{(0,0)(fillxfill) gr=#53 sim=#31 ty=2024 fl=100 + Requested w=1080 h=1920 mLayoutSeq=426 + mBaseLayer=211000 mSubLayer=0 mAnimLayer=211000+0=211000 mLastLayer=211000 +''' + with self.assertCalls( + (self.call.device.RunShellCommand( + ['dumpsys', 'window', 'windows'], check_return=True, + large_output=True), sample_dumpsys_output.split('\n'))): + package_name = self.device.DismissCrashDialogIfNeeded() + self.assertIsNone(package_name) + + def testDismissCrashDialogIfNeeded_crashedPageckageFound(self): + sample_dumpsys_output = ''' +WINDOW MANAGER WINDOWS (dumpsys window windows) + Window #11 Window{f8b647a u0 SearchPanel}: + mDisplayId=0 mSession=Session{8 94:122} mClient=android.os.BinderProxy@1ba5 + mOwnerUid=102 mShowToOwnerOnly=false package=com.android.systemui appop=NONE + mAttrs=WM.LayoutParams{(0,0)(fillxfill) gr=#53 sim=#31 ty=2024 fl=100 + Requested w=1080 h=1920 mLayoutSeq=426 + mBaseLayer=211000 mSubLayer=0 mAnimLayer=211000+0=211000 mLastLayer=211000 + mHasPermanentDpad=false + mCurrentFocus=Window{3a27740f u0 Application Error: com.android.chrome} + mFocusedApp=AppWindowToken{470af6f token=Token{272ec24e ActivityRecord{t894}}} +''' + with self.assertCalls( + (self.call.device.RunShellCommand( + ['dumpsys', 'window', 'windows'], check_return=True, + large_output=True), sample_dumpsys_output.split('\n')), + (self.call.device.RunShellCommand( + ['input', 'keyevent', '22'], check_return=True)), + (self.call.device.RunShellCommand( + ['input', 'keyevent', '22'], check_return=True)), + (self.call.device.RunShellCommand( + ['input', 'keyevent', '66'], check_return=True)), + (self.call.device.RunShellCommand( + ['dumpsys', 'window', 'windows'], check_return=True, + large_output=True), [])): + package_name = self.device.DismissCrashDialogIfNeeded() + self.assertEqual(package_name, 'com.android.chrome') + + +class DeviceUtilsClientCache(DeviceUtilsTest): + + def testClientCache_twoCaches(self): + self.device._cache['test'] = 0 + client_cache_one = self.device.GetClientCache('ClientOne') + client_cache_one['test'] = 1 + client_cache_two = self.device.GetClientCache('ClientTwo') + client_cache_two['test'] = 2 + self.assertEqual(self.device._cache['test'], 0) + self.assertEqual(client_cache_one, {'test': 1}) + self.assertEqual(client_cache_two, {'test': 2}) + self.device._ClearCache() + self.assertTrue('test' not in self.device._cache) + self.assertEqual(client_cache_one, {}) + self.assertEqual(client_cache_two, {}) + + def testClientCache_multipleInstances(self): + client_cache_one = self.device.GetClientCache('ClientOne') + client_cache_one['test'] = 1 + client_cache_two = self.device.GetClientCache('ClientOne') + self.assertEqual(client_cache_one, {'test': 1}) + self.assertEqual(client_cache_two, {'test': 1}) + self.device._ClearCache() + self.assertEqual(client_cache_one, {}) + self.assertEqual(client_cache_two, {}) + + +class DeviceUtilsHealthyDevicesTest(mock_calls.TestCase): + + def testHealthyDevices_emptyBlacklist_defaultDeviceArg(self): + test_serials = ['0123456789abcdef', 'fedcba9876543210'] + with self.assertCalls( + (mock.call.devil.android.sdk.adb_wrapper.AdbWrapper.Devices(), + [_AdbWrapperMock(s) for s in test_serials])): + blacklist = mock.NonCallableMock(**{'Read.return_value': []}) + devices = device_utils.DeviceUtils.HealthyDevices(blacklist) + for serial, device in zip(test_serials, devices): + self.assertTrue(isinstance(device, device_utils.DeviceUtils)) + self.assertEquals(serial, device.adb.GetDeviceSerial()) + + def testHealthyDevices_blacklist_defaultDeviceArg(self): + test_serials = ['0123456789abcdef', 'fedcba9876543210'] + with self.assertCalls( + (mock.call.devil.android.sdk.adb_wrapper.AdbWrapper.Devices(), + [_AdbWrapperMock(s) for s in test_serials])): + blacklist = mock.NonCallableMock( + **{'Read.return_value': ['fedcba9876543210']}) + devices = device_utils.DeviceUtils.HealthyDevices(blacklist) + self.assertEquals(1, len(devices)) + self.assertTrue(isinstance(devices[0], device_utils.DeviceUtils)) + self.assertEquals('0123456789abcdef', devices[0].adb.GetDeviceSerial()) + + def testHealthyDevices_noneDeviceArg_multiple_attached(self): + test_serials = ['0123456789abcdef', 'fedcba9876543210'] + with self.assertCalls( + (mock.call.devil.android.sdk.adb_wrapper.AdbWrapper.Devices(), + [_AdbWrapperMock(s) for s in test_serials]), + (mock.call.devil.android.device_errors.MultipleDevicesError(mock.ANY), + _MockMultipleDevicesError())): + with self.assertRaises(_MockMultipleDevicesError): + device_utils.DeviceUtils.HealthyDevices(device_arg=None) + + def testHealthyDevices_noneDeviceArg_one_attached(self): + test_serials = ['0123456789abcdef'] + with self.assertCalls( + (mock.call.devil.android.sdk.adb_wrapper.AdbWrapper.Devices(), + [_AdbWrapperMock(s) for s in test_serials])): + devices = device_utils.DeviceUtils.HealthyDevices(device_arg=None) + self.assertEquals(1, len(devices)) + + def testHealthyDevices_noneDeviceArg_no_attached(self): + test_serials = [] + with self.assertCalls( + (mock.call.devil.android.sdk.adb_wrapper.AdbWrapper.Devices(), + [_AdbWrapperMock(s) for s in test_serials])): + with self.assertRaises(device_errors.NoDevicesError): + device_utils.DeviceUtils.HealthyDevices(device_arg=None) + + def testHealthyDevices_noneDeviceArg_multiple_attached_ANDROID_SERIAL(self): + try: + os.environ['ANDROID_SERIAL'] = '0123456789abcdef' + with self.assertCalls(): # Should skip adb devices when device is known. + device_utils.DeviceUtils.HealthyDevices(device_arg=None) + finally: + del os.environ['ANDROID_SERIAL'] + + def testHealthyDevices_stringDeviceArg(self): + with self.assertCalls(): # Should skip adb devices when device is known. + devices = device_utils.DeviceUtils.HealthyDevices( + device_arg='0123456789abcdef') + self.assertEquals(1, len(devices)) + + def testHealthyDevices_EmptyListDeviceArg_multiple_attached(self): + test_serials = ['0123456789abcdef', 'fedcba9876543210'] + with self.assertCalls( + (mock.call.devil.android.sdk.adb_wrapper.AdbWrapper.Devices(), + [_AdbWrapperMock(s) for s in test_serials])): + devices = device_utils.DeviceUtils.HealthyDevices(device_arg=()) + self.assertEquals(2, len(devices)) + + def testHealthyDevices_EmptyListDeviceArg_ANDROID_SERIAL(self): + try: + os.environ['ANDROID_SERIAL'] = '0123456789abcdef' + with self.assertCalls(): # Should skip adb devices when device is known. + devices = device_utils.DeviceUtils.HealthyDevices(device_arg=()) + finally: + del os.environ['ANDROID_SERIAL'] + self.assertEquals(1, len(devices)) + + def testHealthyDevices_EmptyListDeviceArg_no_attached(self): + test_serials = [] + with self.assertCalls( + (mock.call.devil.android.sdk.adb_wrapper.AdbWrapper.Devices(), + [_AdbWrapperMock(s) for s in test_serials])): + with self.assertRaises(device_errors.NoDevicesError): + device_utils.DeviceUtils.HealthyDevices(device_arg=[]) + + def testHealthyDevices_ListDeviceArg(self): + device_arg = ['0123456789abcdef', 'fedcba9876543210'] + try: + os.environ['ANDROID_SERIAL'] = 'should-not-apply' + with self.assertCalls(): # Should skip adb devices when device is known. + devices = device_utils.DeviceUtils.HealthyDevices(device_arg=device_arg) + finally: + del os.environ['ANDROID_SERIAL'] + self.assertEquals(2, len(devices)) + + +class DeviceUtilsRestartAdbdTest(DeviceUtilsTest): + + def testAdbdRestart(self): + mock_temp_file = '/sdcard/temp-123.sh' + with self.assertCalls( + (mock.call.devil.android.device_temp_file.DeviceTempFile( + self.adb, suffix='.sh'), MockTempFile(mock_temp_file)), + self.call.device.WriteFile(mock.ANY, mock.ANY), + (self.call.device.RunShellCommand( + ['source', mock_temp_file], check_return=True, as_root=True)), + self.call.adb.WaitForDevice()): + self.device.RestartAdbd() + + +class DeviceUtilsGrantPermissionsTest(DeviceUtilsTest): + + def testGrantPermissions_none(self): + self.device.GrantPermissions('package', []) + + def testGrantPermissions_underM(self): + with self.patch_call(self.call.device.build_version_sdk, + return_value=version_codes.LOLLIPOP): + self.device.GrantPermissions('package', ['p1']) + + def testGrantPermissions_one(self): + permissions_cmd = 'pm grant package p1' + with self.patch_call(self.call.device.build_version_sdk, + return_value=version_codes.MARSHMALLOW): + with self.assertCalls( + (self.call.device.RunShellCommand( + permissions_cmd, shell=True, check_return=True), [])): + self.device.GrantPermissions('package', ['p1']) + + def testGrantPermissions_multiple(self): + permissions_cmd = 'pm grant package p1&&pm grant package p2' + with self.patch_call(self.call.device.build_version_sdk, + return_value=version_codes.MARSHMALLOW): + with self.assertCalls( + (self.call.device.RunShellCommand( + permissions_cmd, shell=True, check_return=True), [])): + self.device.GrantPermissions('package', ['p1', 'p2']) + + def testGrantPermissions_WriteExtrnalStorage(self): + permissions_cmd = ( + 'pm grant package android.permission.WRITE_EXTERNAL_STORAGE&&' + 'pm grant package android.permission.READ_EXTERNAL_STORAGE') + with self.patch_call(self.call.device.build_version_sdk, + return_value=version_codes.MARSHMALLOW): + with self.assertCalls( + (self.call.device.RunShellCommand( + permissions_cmd, shell=True, check_return=True), [])): + self.device.GrantPermissions( + 'package', ['android.permission.WRITE_EXTERNAL_STORAGE']) + + def testGrantPermissions_BlackList(self): + with self.patch_call(self.call.device.build_version_sdk, + return_value=version_codes.MARSHMALLOW): + self.device.GrantPermissions( + 'package', ['android.permission.ACCESS_MOCK_LOCATION']) + + +class DeviecUtilsIsScreenOn(DeviceUtilsTest): + + _L_SCREEN_ON = ['test=test mInteractive=true'] + _K_SCREEN_ON = ['test=test mScreenOn=true'] + _L_SCREEN_OFF = ['mInteractive=false'] + _K_SCREEN_OFF = ['mScreenOn=false'] + + def testIsScreenOn_onPreL(self): + with self.patch_call(self.call.device.build_version_sdk, + return_value=version_codes.KITKAT): + with self.assertCalls( + (self.call.device._RunPipedShellCommand( + 'dumpsys input_method | grep mScreenOn'), self._K_SCREEN_ON)): + self.assertTrue(self.device.IsScreenOn()) + + def testIsScreenOn_onL(self): + with self.patch_call(self.call.device.build_version_sdk, + return_value=version_codes.LOLLIPOP): + with self.assertCalls( + (self.call.device._RunPipedShellCommand( + 'dumpsys input_method | grep mInteractive'), self._L_SCREEN_ON)): + self.assertTrue(self.device.IsScreenOn()) + + def testIsScreenOn_offPreL(self): + with self.patch_call(self.call.device.build_version_sdk, + return_value=version_codes.KITKAT): + with self.assertCalls( + (self.call.device._RunPipedShellCommand( + 'dumpsys input_method | grep mScreenOn'), self._K_SCREEN_OFF)): + self.assertFalse(self.device.IsScreenOn()) + + def testIsScreenOn_offL(self): + with self.patch_call(self.call.device.build_version_sdk, + return_value=version_codes.LOLLIPOP): + with self.assertCalls( + (self.call.device._RunPipedShellCommand( + 'dumpsys input_method | grep mInteractive'), self._L_SCREEN_OFF)): + self.assertFalse(self.device.IsScreenOn()) + + def testIsScreenOn_noOutput(self): + with self.patch_call(self.call.device.build_version_sdk, + return_value=version_codes.LOLLIPOP): + with self.assertCalls( + (self.call.device._RunPipedShellCommand( + 'dumpsys input_method | grep mInteractive'), [])): + with self.assertRaises(device_errors.CommandFailedError): + self.device.IsScreenOn() + + +class DeviecUtilsSetScreen(DeviceUtilsTest): + + @mock.patch('time.sleep', mock.Mock()) + def testSetScren_alreadySet(self): + with self.assertCalls( + (self.call.device.IsScreenOn(), False)): + self.device.SetScreen(False) + + @mock.patch('time.sleep', mock.Mock()) + def testSetScreen_on(self): + with self.assertCalls( + (self.call.device.IsScreenOn(), False), + (self.call.device.SendKeyEvent(keyevent.KEYCODE_POWER), None), + (self.call.device.IsScreenOn(), True)): + self.device.SetScreen(True) + + @mock.patch('time.sleep', mock.Mock()) + def testSetScreen_off(self): + with self.assertCalls( + (self.call.device.IsScreenOn(), True), + (self.call.device.SendKeyEvent(keyevent.KEYCODE_POWER), None), + (self.call.device.IsScreenOn(), False)): + self.device.SetScreen(False) + + @mock.patch('time.sleep', mock.Mock()) + def testSetScreen_slow(self): + with self.assertCalls( + (self.call.device.IsScreenOn(), True), + (self.call.device.SendKeyEvent(keyevent.KEYCODE_POWER), None), + (self.call.device.IsScreenOn(), True), + (self.call.device.IsScreenOn(), True), + (self.call.device.IsScreenOn(), False)): + self.device.SetScreen(False) + +class DeviecUtilsLoadCacheData(DeviceUtilsTest): + + def testTokenMissing(self): + with self.assertCalls( + self.EnsureCacheInitialized()): + self.assertFalse(self.device.LoadCacheData('{}')) + + def testTokenStale(self): + with self.assertCalls( + self.EnsureCacheInitialized()): + self.assertFalse(self.device.LoadCacheData('{"token":"foo"}')) + + def testTokenMatches(self): + with self.assertCalls( + self.EnsureCacheInitialized()): + self.assertTrue(self.device.LoadCacheData('{"token":"TOKEN"}')) + + def testDumpThenLoad(self): + with self.assertCalls( + self.EnsureCacheInitialized()): + data = json.loads(self.device.DumpCacheData()) + data['token'] = 'TOKEN' + self.assertTrue(self.device.LoadCacheData(json.dumps(data))) + + +if __name__ == '__main__': + logging.getLogger().setLevel(logging.DEBUG) + unittest.main(verbosity=2) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/fastboot_utils.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/fastboot_utils.py new file mode 100644 index 0000000..3bd3ee8 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/fastboot_utils.py @@ -0,0 +1,256 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Provides a variety of device interactions based on fastboot.""" +# pylint: disable=unused-argument + +import collections +import contextlib +import fnmatch +import logging +import os +import re + +from devil.android import decorators +from devil.android import device_errors +from devil.android.sdk import fastboot +from devil.utils import timeout_retry + +logger = logging.getLogger(__name__) + +_DEFAULT_TIMEOUT = 30 +_DEFAULT_RETRIES = 3 +_FASTBOOT_REBOOT_TIMEOUT = 10 * _DEFAULT_TIMEOUT +_KNOWN_PARTITIONS = collections.OrderedDict([ + ('bootloader', {'image': 'bootloader*.img', 'restart': True}), + ('radio', {'image': 'radio*.img', 'restart': True}), + ('boot', {'image': 'boot.img'}), + ('recovery', {'image': 'recovery.img'}), + ('system', {'image': 'system.img'}), + ('userdata', {'image': 'userdata.img', 'wipe_only': True}), + ('cache', {'image': 'cache.img', 'wipe_only': True}), + ('vendor', {'image': 'vendor*.img', 'optional': True}), + ]) +ALL_PARTITIONS = _KNOWN_PARTITIONS.keys() + + +def _FindAndVerifyPartitionsAndImages(partitions, directory): + """Validate partitions and images. + + Validate all partition names and partition directories. Cannot stop mid + flash so its important to validate everything first. + + Args: + Partitions: partitions to be tested. + directory: directory containing the images. + + Returns: + Dictionary with exact partition, image name mapping. + """ + + files = os.listdir(directory) + return_dict = collections.OrderedDict() + + def find_file(pattern): + for filename in files: + if fnmatch.fnmatch(filename, pattern): + return os.path.join(directory, filename) + return None + for partition in partitions: + partition_info = _KNOWN_PARTITIONS[partition] + image_file = find_file(partition_info['image']) + if image_file: + return_dict[partition] = image_file + elif not partition_info.get('optional'): + raise device_errors.FastbootCommandFailedError( + 'Failed to flash device. Could not find image for %s.', + partition_info['image']) + return return_dict + + +class FastbootUtils(object): + + _FASTBOOT_WAIT_TIME = 1 + _BOARD_VERIFICATION_FILE = 'android-info.txt' + + def __init__(self, device, fastbooter=None, default_timeout=_DEFAULT_TIMEOUT, + default_retries=_DEFAULT_RETRIES): + """FastbootUtils constructor. + + Example Usage to flash a device: + fastboot = fastboot_utils.FastbootUtils(device) + fastboot.FlashDevice('/path/to/build/directory') + + Args: + device: A DeviceUtils instance. + fastbooter: Optional fastboot object. If none is passed, one will + be created. + default_timeout: An integer containing the default number of seconds to + wait for an operation to complete if no explicit value is provided. + default_retries: An integer containing the default number or times an + operation should be retried on failure if no explicit value is provided. + """ + self._device = device + self._board = device.product_board + self._serial = str(device) + self._default_timeout = default_timeout + self._default_retries = default_retries + if fastbooter: + self.fastboot = fastbooter + else: + self.fastboot = fastboot.Fastboot(self._serial) + + @decorators.WithTimeoutAndRetriesFromInstance() + def WaitForFastbootMode(self, timeout=None, retries=None): + """Wait for device to boot into fastboot mode. + + This waits for the device serial to show up in fastboot devices output. + """ + def fastboot_mode(): + return self._serial in self.fastboot.Devices() + + timeout_retry.WaitFor(fastboot_mode, wait_period=self._FASTBOOT_WAIT_TIME) + + @decorators.WithTimeoutAndRetriesFromInstance( + min_default_timeout=_FASTBOOT_REBOOT_TIMEOUT) + def EnableFastbootMode(self, timeout=None, retries=None): + """Reboots phone into fastboot mode. + + Roots phone if needed, then reboots phone into fastboot mode and waits. + """ + self._device.EnableRoot() + self._device.adb.Reboot(to_bootloader=True) + self.WaitForFastbootMode() + + @decorators.WithTimeoutAndRetriesFromInstance( + min_default_timeout=_FASTBOOT_REBOOT_TIMEOUT) + def Reboot( + self, bootloader=False, wait_for_reboot=True, timeout=None, retries=None): + """Reboots out of fastboot mode. + + It reboots the phone either back into fastboot, or to a regular boot. It + then blocks until the device is ready. + + Args: + bootloader: If set to True, reboots back into bootloader. + """ + if bootloader: + self.fastboot.RebootBootloader() + self.WaitForFastbootMode() + else: + self.fastboot.Reboot() + if wait_for_reboot: + self._device.WaitUntilFullyBooted(timeout=_FASTBOOT_REBOOT_TIMEOUT) + + def _VerifyBoard(self, directory): + """Validate as best as possible that the android build matches the device. + + Goes through build files and checks if the board name is mentioned in the + |self._BOARD_VERIFICATION_FILE| or in the build archive. + + Args: + directory: directory where build files are located. + """ + files = os.listdir(directory) + board_regex = re.compile(r'require board=(\w+)') + if self._BOARD_VERIFICATION_FILE in files: + with open(os.path.join(directory, self._BOARD_VERIFICATION_FILE)) as f: + for line in f: + m = board_regex.match(line) + if m: + board_name = m.group(1) + if board_name == self._board: + return True + elif board_name: + return False + else: + logger.warning('No board type found in %s.', + self._BOARD_VERIFICATION_FILE) + else: + logger.warning('%s not found. Unable to use it to verify device.', + self._BOARD_VERIFICATION_FILE) + + zip_regex = re.compile(r'.*%s.*\.zip' % re.escape(self._board)) + for f in files: + if zip_regex.match(f): + return True + + return False + + def _FlashPartitions(self, partitions, directory, wipe=False, force=False): + """Flashes all given partiitons with all given images. + + Args: + partitions: List of partitions to flash. + directory: Directory where all partitions can be found. + wipe: If set to true, will automatically detect if cache and userdata + partitions are sent, and if so ignore them. + force: boolean to decide to ignore board name safety checks. + + Raises: + device_errors.CommandFailedError(): If image cannot be found or if bad + partition name is give. + """ + if not self._VerifyBoard(directory): + if force: + logger.warning('Could not verify build is meant to be installed on ' + 'the current device type, but force flag is set. ' + 'Flashing device. Possibly dangerous operation.') + else: + raise device_errors.CommandFailedError( + 'Could not verify build is meant to be installed on the current ' + 'device type. Run again with force=True to force flashing with an ' + 'unverified board.') + + flash_image_files = _FindAndVerifyPartitionsAndImages(partitions, directory) + partitions = flash_image_files.keys() + for partition in partitions: + if _KNOWN_PARTITIONS[partition].get('wipe_only') and not wipe: + logger.info( + 'Not flashing in wipe mode. Skipping partition %s.', partition) + else: + logger.info( + 'Flashing %s with %s', partition, flash_image_files[partition]) + self.fastboot.Flash(partition, flash_image_files[partition]) + if _KNOWN_PARTITIONS[partition].get('restart', False): + self.Reboot(bootloader=True) + + @contextlib.contextmanager + def FastbootMode(self, wait_for_reboot=True, timeout=None, retries=None): + """Context manager that enables fastboot mode, and reboots after. + + Example usage: + with FastbootMode(): + Flash Device + # Anything that runs after flashing. + """ + self.EnableFastbootMode() + self.fastboot.SetOemOffModeCharge(False) + try: + yield self + finally: + self.fastboot.SetOemOffModeCharge(True) + self.Reboot(wait_for_reboot=wait_for_reboot) + + def FlashDevice(self, directory, partitions=None, wipe=False): + """Flash device with build in |directory|. + + Directory must contain bootloader, radio, boot, recovery, system, userdata, + and cache .img files from an android build. This is a dangerous operation so + use with care. + + Args: + fastboot: A FastbootUtils instance. + directory: Directory with build files. + wipe: Wipes cache and userdata if set to true. + partitions: List of partitions to flash. Defaults to all. + """ + if partitions is None: + partitions = ALL_PARTITIONS + # If a device is wiped, then it will no longer have adb keys so it cannot be + # communicated with to verify that it is rebooted. It is up to the user of + # this script to ensure that the adb keys are set on the device after using + # this to wipe a device. + with self.FastbootMode(wait_for_reboot=not wipe): + self._FlashPartitions(partitions, directory, wipe=wipe) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/fastboot_utils_test.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/fastboot_utils_test.py new file mode 100644 index 0000000..0562974 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/fastboot_utils_test.py @@ -0,0 +1,375 @@ +#!/usr/bin/env python +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +""" +Unit tests for the contents of fastboot_utils.py +""" + +# pylint: disable=protected-access,unused-argument + +import collections +import io +import logging +import unittest + +from devil import devil_env +from devil.android import device_errors +from devil.android import device_utils +from devil.android import fastboot_utils +from devil.android.sdk import fastboot +from devil.utils import mock_calls + +with devil_env.SysPath(devil_env.PYMOCK_PATH): + import mock # pylint: disable=import-error + +_BOARD = 'board_type' +_SERIAL = '0123456789abcdef' +_PARTITIONS = [ + 'bootloader', 'radio', 'boot', 'recovery', 'system', 'userdata', 'cache'] +_IMAGES = collections.OrderedDict([ + ('bootloader', 'bootloader.img'), + ('radio', 'radio.img'), + ('boot', 'boot.img'), + ('recovery', 'recovery.img'), + ('system', 'system.img'), + ('userdata', 'userdata.img'), + ('cache', 'cache.img') +]) +_VALID_FILES = [_BOARD + '.zip', 'android-info.txt'] +_INVALID_FILES = ['test.zip', 'android-info.txt'] + + +class MockFile(object): + + def __init__(self, name='/tmp/some/file'): + self.file = mock.MagicMock(spec=file) + self.file.name = name + + def __enter__(self): + return self.file + + def __exit__(self, exc_type, exc_val, exc_tb): + pass + + @property + def name(self): + return self.file.name + + +def _FastbootWrapperMock(test_serial): + fastbooter = mock.Mock(spec=fastboot.Fastboot) + fastbooter.__str__ = mock.Mock(return_value=test_serial) + fastbooter.Devices.return_value = [test_serial] + return fastbooter + + +def _DeviceUtilsMock(test_serial): + device = mock.Mock(spec=device_utils.DeviceUtils) + device.__str__ = mock.Mock(return_value=test_serial) + device.product_board = mock.Mock(return_value=_BOARD) + device.adb = mock.Mock() + return device + + +class FastbootUtilsTest(mock_calls.TestCase): + + def setUp(self): + self.device_utils_mock = _DeviceUtilsMock(_SERIAL) + self.fastboot_wrapper = _FastbootWrapperMock(_SERIAL) + self.fastboot = fastboot_utils.FastbootUtils( + self.device_utils_mock, fastbooter=self.fastboot_wrapper, + default_timeout=2, default_retries=0) + self.fastboot._board = _BOARD + + +class FastbootUtilsInitTest(FastbootUtilsTest): + + def testInitWithDeviceUtil(self): + f = fastboot_utils.FastbootUtils(self.device_utils_mock) + self.assertEqual(str(self.device_utils_mock), str(f._device)) + + def testInitWithMissing_fails(self): + with self.assertRaises(AttributeError): + fastboot_utils.FastbootUtils(None) + with self.assertRaises(AttributeError): + fastboot_utils.FastbootUtils('') + + def testPartitionOrdering(self): + parts = ['bootloader', 'radio', 'boot', 'recovery', 'system', 'userdata', + 'cache', 'vendor'] + self.assertListEqual(fastboot_utils.ALL_PARTITIONS, parts) + + +class FastbootUtilsWaitForFastbootMode(FastbootUtilsTest): + + # If this test fails by timing out after 1 second. + @mock.patch('time.sleep', mock.Mock()) + def testWaitForFastbootMode(self): + self.fastboot.WaitForFastbootMode() + + +class FastbootUtilsEnableFastbootMode(FastbootUtilsTest): + + def testEnableFastbootMode(self): + with self.assertCalls( + self.call.fastboot._device.EnableRoot(), + self.call.fastboot._device.adb.Reboot(to_bootloader=True), + self.call.fastboot.WaitForFastbootMode()): + self.fastboot.EnableFastbootMode() + + +class FastbootUtilsReboot(FastbootUtilsTest): + + def testReboot_bootloader(self): + with self.assertCalls( + self.call.fastboot.fastboot.RebootBootloader(), + self.call.fastboot.WaitForFastbootMode()): + self.fastboot.Reboot(bootloader=True) + + def testReboot_normal(self): + with self.assertCalls( + self.call.fastboot.fastboot.Reboot(), + self.call.fastboot._device.WaitUntilFullyBooted(timeout=mock.ANY)): + self.fastboot.Reboot() + + +class FastbootUtilsFlashPartitions(FastbootUtilsTest): + + def testFlashPartitions_wipe(self): + with self.assertCalls( + (self.call.fastboot._VerifyBoard('test'), True), + (mock.call.devil.android.fastboot_utils. + _FindAndVerifyPartitionsAndImages(_PARTITIONS, 'test'), _IMAGES), + (self.call.fastboot.fastboot.Flash('bootloader', 'bootloader.img')), + (self.call.fastboot.Reboot(bootloader=True)), + (self.call.fastboot.fastboot.Flash('radio', 'radio.img')), + (self.call.fastboot.Reboot(bootloader=True)), + (self.call.fastboot.fastboot.Flash('boot', 'boot.img')), + (self.call.fastboot.fastboot.Flash('recovery', 'recovery.img')), + (self.call.fastboot.fastboot.Flash('system', 'system.img')), + (self.call.fastboot.fastboot.Flash('userdata', 'userdata.img')), + (self.call.fastboot.fastboot.Flash('cache', 'cache.img'))): + self.fastboot._FlashPartitions(_PARTITIONS, 'test', wipe=True) + + def testFlashPartitions_noWipe(self): + with self.assertCalls( + (self.call.fastboot._VerifyBoard('test'), True), + (mock.call.devil.android.fastboot_utils. + _FindAndVerifyPartitionsAndImages(_PARTITIONS, 'test'), _IMAGES), + (self.call.fastboot.fastboot.Flash('bootloader', 'bootloader.img')), + (self.call.fastboot.Reboot(bootloader=True)), + (self.call.fastboot.fastboot.Flash('radio', 'radio.img')), + (self.call.fastboot.Reboot(bootloader=True)), + (self.call.fastboot.fastboot.Flash('boot', 'boot.img')), + (self.call.fastboot.fastboot.Flash('recovery', 'recovery.img')), + (self.call.fastboot.fastboot.Flash('system', 'system.img'))): + self.fastboot._FlashPartitions(_PARTITIONS, 'test') + + +class FastbootUtilsFastbootMode(FastbootUtilsTest): + + def testFastbootMode_goodWait(self): + with self.assertCalls( + self.call.fastboot.EnableFastbootMode(), + self.call.fastboot.fastboot.SetOemOffModeCharge(False), + self.call.fastboot.fastboot.SetOemOffModeCharge(True), + self.call.fastboot.Reboot(wait_for_reboot=True)): + with self.fastboot.FastbootMode() as fbm: + self.assertEqual(self.fastboot, fbm) + + def testFastbootMode_goodNoWait(self): + with self.assertCalls( + self.call.fastboot.EnableFastbootMode(), + self.call.fastboot.fastboot.SetOemOffModeCharge(False), + self.call.fastboot.fastboot.SetOemOffModeCharge(True), + self.call.fastboot.Reboot(wait_for_reboot=False)): + with self.fastboot.FastbootMode(wait_for_reboot=False) as fbm: + self.assertEqual(self.fastboot, fbm) + + def testFastbootMode_exception(self): + with self.assertCalls( + self.call.fastboot.EnableFastbootMode(), + self.call.fastboot.fastboot.SetOemOffModeCharge(False), + self.call.fastboot.fastboot.SetOemOffModeCharge(True), + self.call.fastboot.Reboot(wait_for_reboot=True)): + with self.assertRaises(NotImplementedError): + with self.fastboot.FastbootMode() as fbm: + self.assertEqual(self.fastboot, fbm) + raise NotImplementedError + + def testFastbootMode_exceptionInEnableFastboot(self): + self.fastboot.EnableFastbootMode = mock.Mock() + self.fastboot.EnableFastbootMode.side_effect = NotImplementedError + with self.assertRaises(NotImplementedError): + with self.fastboot.FastbootMode(): + pass + + +class FastbootUtilsVerifyBoard(FastbootUtilsTest): + + def testVerifyBoard_bothValid(self): + mock_file = io.StringIO(u'require board=%s\n' % _BOARD) + with mock.patch('__builtin__.open', return_value=mock_file, create=True): + with mock.patch('os.listdir', return_value=_VALID_FILES): + self.assertTrue(self.fastboot._VerifyBoard('test')) + + def testVerifyBoard_BothNotValid(self): + mock_file = io.StringIO(u'abc') + with mock.patch('__builtin__.open', return_value=mock_file, create=True): + with mock.patch('os.listdir', return_value=_INVALID_FILES): + self.assertFalse(self.assertFalse(self.fastboot._VerifyBoard('test'))) + + def testVerifyBoard_FileNotFoundZipValid(self): + with mock.patch('os.listdir', return_value=[_BOARD + '.zip']): + self.assertTrue(self.fastboot._VerifyBoard('test')) + + def testVerifyBoard_ZipNotFoundFileValid(self): + mock_file = io.StringIO(u'require board=%s\n' % _BOARD) + with mock.patch('__builtin__.open', return_value=mock_file, create=True): + with mock.patch('os.listdir', return_value=['android-info.txt']): + self.assertTrue(self.fastboot._VerifyBoard('test')) + + def testVerifyBoard_zipNotValidFileIs(self): + mock_file = io.StringIO(u'require board=%s\n' % _BOARD) + with mock.patch('__builtin__.open', return_value=mock_file, create=True): + with mock.patch('os.listdir', return_value=_INVALID_FILES): + self.assertTrue(self.fastboot._VerifyBoard('test')) + + def testVerifyBoard_fileNotValidZipIs(self): + mock_file = io.StringIO(u'require board=WrongBoard') + with mock.patch('__builtin__.open', return_value=mock_file, create=True): + with mock.patch('os.listdir', return_value=_VALID_FILES): + self.assertFalse(self.fastboot._VerifyBoard('test')) + + def testVerifyBoard_noBoardInFileValidZip(self): + mock_file = io.StringIO(u'Regex wont match') + with mock.patch('__builtin__.open', return_value=mock_file, create=True): + with mock.patch('os.listdir', return_value=_VALID_FILES): + self.assertTrue(self.fastboot._VerifyBoard('test')) + + def testVerifyBoard_noBoardInFileInvalidZip(self): + mock_file = io.StringIO(u'Regex wont match') + with mock.patch('__builtin__.open', return_value=mock_file, create=True): + with mock.patch('os.listdir', return_value=_INVALID_FILES): + self.assertFalse(self.fastboot._VerifyBoard('test')) + + +class FastbootUtilsFindAndVerifyPartitionsAndImages(FastbootUtilsTest): + + def testFindAndVerifyPartitionsAndImages_validNoVendor(self): + PARTITIONS = [ + 'bootloader', 'radio', 'boot', 'recovery', 'system', 'userdata', + 'cache', 'vendor' + ] + files = [ + 'bootloader-test-.img', + 'radio123.img', + 'boot.img', + 'recovery.img', + 'system.img', + 'userdata.img', + 'cache.img' + ] + img_check = collections.OrderedDict([ + ('bootloader', 'test/bootloader-test-.img'), + ('radio', 'test/radio123.img'), + ('boot', 'test/boot.img'), + ('recovery', 'test/recovery.img'), + ('system', 'test/system.img'), + ('userdata', 'test/userdata.img'), + ('cache', 'test/cache.img'), + ]) + parts_check = [ + 'bootloader', 'radio', 'boot', 'recovery', 'system', 'userdata', + 'cache' + ] + with mock.patch('os.listdir', return_value=files): + imgs = fastboot_utils._FindAndVerifyPartitionsAndImages( + PARTITIONS, 'test') + parts = imgs.keys() + self.assertDictEqual(imgs, img_check) + self.assertListEqual(parts, parts_check) + + def testFindAndVerifyPartitionsAndImages_validVendor(self): + PARTITIONS = [ + 'bootloader', 'radio', 'boot', 'recovery', 'system', 'userdata', + 'cache', 'vendor' + ] + files = [ + 'bootloader-test-.img', + 'radio123.img', + 'boot.img', + 'recovery.img', + 'system.img', + 'userdata.img', + 'cache.img', + 'vendor.img' + ] + img_check = { + 'bootloader': 'test/bootloader-test-.img', + 'radio': 'test/radio123.img', + 'boot': 'test/boot.img', + 'recovery': 'test/recovery.img', + 'system': 'test/system.img', + 'userdata': 'test/userdata.img', + 'cache': 'test/cache.img', + 'vendor': 'test/vendor.img', + } + parts_check = [ + 'bootloader', 'radio', 'boot', 'recovery', 'system', 'userdata', + 'cache', 'vendor' + ] + + with mock.patch('os.listdir', return_value=files): + imgs = fastboot_utils._FindAndVerifyPartitionsAndImages( + PARTITIONS, 'test') + parts = imgs.keys() + self.assertDictEqual(imgs, img_check) + self.assertListEqual(parts, parts_check) + + def testFindAndVerifyPartitionsAndImages_badPartition(self): + with mock.patch('os.listdir', return_value=['test']): + with self.assertRaises(KeyError): + fastboot_utils._FindAndVerifyPartitionsAndImages(['test'], 'test') + + def testFindAndVerifyPartitionsAndImages_noFile(self): + with mock.patch('os.listdir', return_value=['test']): + with self.assertRaises(device_errors.FastbootCommandFailedError): + fastboot_utils._FindAndVerifyPartitionsAndImages(['cache'], 'test') + + +class FastbootUtilsFlashDevice(FastbootUtilsTest): + + def testFlashDevice_wipe(self): + with self.assertCalls( + self.call.fastboot.EnableFastbootMode(), + self.call.fastboot.fastboot.SetOemOffModeCharge(False), + self.call.fastboot._FlashPartitions(mock.ANY, 'test', wipe=True), + self.call.fastboot.fastboot.SetOemOffModeCharge(True), + self.call.fastboot.Reboot(wait_for_reboot=False)): + self.fastboot.FlashDevice('test', wipe=True) + + def testFlashDevice_noWipe(self): + with self.assertCalls( + self.call.fastboot.EnableFastbootMode(), + self.call.fastboot.fastboot.SetOemOffModeCharge(False), + self.call.fastboot._FlashPartitions(mock.ANY, 'test', wipe=False), + self.call.fastboot.fastboot.SetOemOffModeCharge(True), + self.call.fastboot.Reboot(wait_for_reboot=True)): + self.fastboot.FlashDevice('test', wipe=False) + + def testFlashDevice_partitions(self): + with self.assertCalls( + self.call.fastboot.EnableFastbootMode(), + self.call.fastboot.fastboot.SetOemOffModeCharge(False), + self.call.fastboot._FlashPartitions(['boot'], 'test', wipe=False), + self.call.fastboot.fastboot.SetOemOffModeCharge(True), + self.call.fastboot.Reboot(wait_for_reboot=True)): + self.fastboot.FlashDevice('test', partitions=['boot'], wipe=False) + + +if __name__ == '__main__': + logging.getLogger().setLevel(logging.DEBUG) + unittest.main(verbosity=2) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/flag_changer.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/flag_changer.py new file mode 100644 index 0000000..b2ee8b1 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/flag_changer.py @@ -0,0 +1,300 @@ +# Copyright (c) 2012 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import contextlib +import logging +import posixpath +import re + +from devil.android.sdk import version_codes + + +logger = logging.getLogger(__name__) + + +_CMDLINE_DIR = '/data/local/tmp' +_CMDLINE_DIR_LEGACY = '/data/local' +_RE_NEEDS_QUOTING = re.compile(r'[^\w-]') # Not in: alphanumeric or hyphens. +_QUOTES = '"\'' # Either a single or a double quote. +_ESCAPE = '\\' # A backslash. + + +@contextlib.contextmanager +def CustomCommandLineFlags(device, cmdline_name, flags): + """Context manager to change Chrome's command line temporarily. + + Example: + + with flag_changer.TemporaryCommandLineFlags(device, name, flags): + # Launching Chrome will use the provided flags. + + # Previous set of flags on the device is now restored. + + Args: + device: A DeviceUtils instance. + cmdline_name: Name of the command line file where to store flags. + flags: A sequence of command line flags to set. + """ + # On Android N and above, we need to temporarily set SELinux to permissive + # so that Chrome is allowed to read the command line file. + # TODO(crbug.com/699082): Remove when a solution to avoid this is implemented. + needs_permissive = ( + device.build_version_sdk >= version_codes.NOUGAT and + device.GetEnforce()) + if needs_permissive: + device.SetEnforce(enabled=False) + try: + changer = FlagChanger(device, cmdline_name) + try: + changer.ReplaceFlags(flags) + yield + finally: + changer.Restore() + finally: + if needs_permissive: + device.SetEnforce(enabled=True) + + +class FlagChanger(object): + """Changes the flags Chrome runs with. + + Flags can be temporarily set for a particular set of unit tests. These + tests should call Restore() to revert the flags to their original state + once the tests have completed. + """ + + def __init__(self, device, cmdline_file): + """Initializes the FlagChanger and records the original arguments. + + Args: + device: A DeviceUtils instance. + cmdline_file: Name of the command line file where to store flags. + """ + self._device = device + + if posixpath.sep in cmdline_file: + raise ValueError( + 'cmdline_file should be a file name only, do not include path' + ' separators in: %s' % cmdline_file) + self._cmdline_path = posixpath.join(_CMDLINE_DIR, cmdline_file) + + cmdline_path_legacy = posixpath.join(_CMDLINE_DIR_LEGACY, cmdline_file) + if self._device.PathExists(cmdline_path_legacy): + logging.warning( + 'Removing legacy command line file %r.', cmdline_path_legacy) + self._device.RemovePath(cmdline_path_legacy, as_root=True) + + self._state_stack = [None] # Actual state is set by GetCurrentFlags(). + self.GetCurrentFlags() + + def GetCurrentFlags(self): + """Read the current flags currently stored in the device. + + Also updates the internal state of the flag_changer. + + Returns: + A list of flags. + """ + if self._device.PathExists(self._cmdline_path): + command_line = self._device.ReadFile(self._cmdline_path).strip() + else: + command_line = '' + flags = _ParseFlags(command_line) + + # Store the flags as a set to facilitate adding and removing flags. + self._state_stack[-1] = set(flags) + return flags + + def ReplaceFlags(self, flags): + """Replaces the flags in the command line with the ones provided. + Saves the current flags state on the stack, so a call to Restore will + change the state back to the one preceeding the call to ReplaceFlags. + + Args: + flags: A sequence of command line flags to set, eg. ['--single-process']. + Note: this should include flags only, not the name of a command + to run (ie. there is no need to start the sequence with 'chrome'). + + Returns: + A list with the flags now stored on the device. + """ + new_flags = set(flags) + self._state_stack.append(new_flags) + return self._UpdateCommandLineFile() + + def AddFlags(self, flags): + """Appends flags to the command line if they aren't already there. + Saves the current flags state on the stack, so a call to Restore will + change the state back to the one preceeding the call to AddFlags. + + Args: + flags: A sequence of flags to add on, eg. ['--single-process']. + + Returns: + A list with the flags now stored on the device. + """ + return self.PushFlags(add=flags) + + def RemoveFlags(self, flags): + """Removes flags from the command line, if they exist. + Saves the current flags state on the stack, so a call to Restore will + change the state back to the one preceeding the call to RemoveFlags. + + Note that calling RemoveFlags after AddFlags will result in having + two nested states. + + Args: + flags: A sequence of flags to remove, eg. ['--single-process']. Note + that we expect a complete match when removing flags; if you want + to remove a switch with a value, you must use the exact string + used to add it in the first place. + + Returns: + A list with the flags now stored on the device. + """ + return self.PushFlags(remove=flags) + + def PushFlags(self, add=None, remove=None): + """Appends and removes flags to/from the command line if they aren't already + there. Saves the current flags state on the stack, so a call to Restore + will change the state back to the one preceeding the call to PushFlags. + + Args: + add: A list of flags to add on, eg. ['--single-process']. + remove: A list of flags to remove, eg. ['--single-process']. Note that we + expect a complete match when removing flags; if you want to remove + a switch with a value, you must use the exact string used to add + it in the first place. + + Returns: + A list with the flags now stored on the device. + """ + new_flags = self._state_stack[-1].copy() + if add: + new_flags.update(add) + if remove: + new_flags.difference_update(remove) + return self.ReplaceFlags(new_flags) + + def Restore(self): + """Restores the flags to their state prior to the last AddFlags or + RemoveFlags call. + + Returns: + A list with the flags now stored on the device. + """ + # The initial state must always remain on the stack. + assert len(self._state_stack) > 1, ( + "Mismatch between calls to Add/RemoveFlags and Restore") + self._state_stack.pop() + return self._UpdateCommandLineFile() + + def _UpdateCommandLineFile(self): + """Writes out the command line to the file, or removes it if empty. + + Returns: + A list with the flags now stored on the device. + """ + command_line = _SerializeFlags(self._state_stack[-1]) + if command_line is not None: + self._device.WriteFile(self._cmdline_path, command_line) + else: + self._device.RemovePath(self._cmdline_path, force=True) + + current_flags = self.GetCurrentFlags() + logger.info('Flags now set on the device: %s', current_flags) + return current_flags + + +def _ParseFlags(line): + """Parse the string containing the command line into a list of flags. + + It's a direct port of CommandLine.java::tokenizeQuotedArguments. + + The first token is assumed to be the (unused) program name and stripped off + from the list of flags. + + Args: + line: A string containing the entire command line. The first token is + assumed to be the program name. + + Returns: + A list of flags, with quoting removed. + """ + flags = [] + current_quote = None + current_flag = None + + for c in line: + # Detect start or end of quote block. + if (current_quote is None and c in _QUOTES) or c == current_quote: + if current_flag is not None and current_flag[-1] == _ESCAPE: + # Last char was a backslash; pop it, and treat c as a literal. + current_flag = current_flag[:-1] + c + else: + current_quote = c if current_quote is None else None + elif current_quote is None and c.isspace(): + if current_flag is not None: + flags.append(current_flag) + current_flag = None + else: + if current_flag is None: + current_flag = '' + current_flag += c + + if current_flag is not None: + if current_quote is not None: + logger.warning('Unterminated quoted argument: ' + current_flag) + flags.append(current_flag) + + # Return everything but the program name. + return flags[1:] + + +def _SerializeFlags(flags): + """Serialize a sequence of flags into a command line string. + + Args: + flags: A sequence of strings with individual flags. + + Returns: + A line with the command line contents to save; or None if the sequence of + flags is empty. + """ + if flags: + # The first command line argument doesn't matter as we are not actually + # launching the chrome executable using this command line. + args = ['_'] + args.extend(_QuoteFlag(f) for f in flags) + return ' '.join(args) + else: + return None + + +def _QuoteFlag(flag): + """Validate and quote a single flag. + + Args: + A string with the flag to quote. + + Returns: + A string with the flag quoted so that it can be parsed by the algorithm + in _ParseFlags; or None if the flag does not appear to be valid. + """ + if '=' in flag: + key, value = flag.split('=', 1) + else: + key, value = flag, None + + if not flag or _RE_NEEDS_QUOTING.search(key): + # Probably not a valid flag, but quote the whole thing so it can be + # parsed back correctly. + return '"%s"' % flag.replace('"', r'\"') + + if value is None: + return key + + if _RE_NEEDS_QUOTING.search(value): + value = '"%s"' % value.replace('"', r'\"') + return '='.join([key, value]) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/flag_changer_devicetest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/flag_changer_devicetest.py new file mode 100644 index 0000000..b75504b --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/flag_changer_devicetest.py @@ -0,0 +1,88 @@ +#!/usr/bin/env python +# Copyright 2017 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +""" +Unit tests for the contents of flag_changer.py. +The test will invoke real devices +""" + +import os +import posixpath +import sys +import unittest + +if __name__ == '__main__': + sys.path.append( + os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', ))) + +from devil.android import device_test_case +from devil.android import device_utils +from devil.android import flag_changer +from devil.android.sdk import adb_wrapper + + +_CMDLINE_FILE = 'dummy-command-line' + + +class FlagChangerTest(device_test_case.DeviceTestCase): + + def setUp(self): + super(FlagChangerTest, self).setUp() + self.adb = adb_wrapper.AdbWrapper(self.serial) + self.adb.WaitForDevice() + self.device = device_utils.DeviceUtils( + self.adb, default_timeout=10, default_retries=0) + # pylint: disable=protected-access + self.cmdline_path = posixpath.join(flag_changer._CMDLINE_DIR, _CMDLINE_FILE) + self.cmdline_path_legacy = posixpath.join( + flag_changer._CMDLINE_DIR_LEGACY, _CMDLINE_FILE) + + def tearDown(self): + super(FlagChangerTest, self).tearDown() + self.device.RemovePath( + [self.cmdline_path, self.cmdline_path_legacy], force=True, as_root=True) + + def testFlagChanger_restoreFlags(self): + if not self.device.HasRoot(): + self.skipTest('Test needs a rooted device') + + # Write some custom chrome command line flags. + self.device.WriteFile( + self.cmdline_path, 'chrome --some --old --flags') + + # Write some more flags on a command line file in the legacy location. + self.device.WriteFile( + self.cmdline_path_legacy, 'some --stray --flags', as_root=True) + self.assertTrue(self.device.PathExists(self.cmdline_path_legacy)) + + changer = flag_changer.FlagChanger(self.device, _CMDLINE_FILE) + + # Legacy command line file is removed, ensuring Chrome picks up the + # right file. + self.assertFalse(self.device.PathExists(self.cmdline_path_legacy)) + + # Write some new files, and check they are set. + new_flags = ['--my', '--new', '--flags=with special value'] + self.assertItemsEqual( + changer.ReplaceFlags(new_flags), + new_flags) + + # Restore and go back to the old flags. + self.assertItemsEqual( + changer.Restore(), + ['--some', '--old', '--flags']) + + def testFlagChanger_removeFlags(self): + self.device.RemovePath(self.cmdline_path, force=True) + self.assertFalse(self.device.PathExists(self.cmdline_path)) + + with flag_changer.CustomCommandLineFlags( + self.device, _CMDLINE_FILE, ['--some', '--flags']): + self.assertTrue(self.device.PathExists(self.cmdline_path)) + + self.assertFalse(self.device.PathExists(self.cmdline_path)) + + +if __name__ == '__main__': + unittest.main() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/flag_changer_test.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/flag_changer_test.py new file mode 100644 index 0000000..5342cf4 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/flag_changer_test.py @@ -0,0 +1,135 @@ +#!/usr/bin/env python +# Copyright 2017 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import posixpath +import unittest + +from devil.android import flag_changer + + +_CMDLINE_FILE = 'chrome-command-line' + + +class _FakeDevice(object): + def __init__(self): + self.build_type = 'user' + self.has_root = True + self.file_system = {} + + def HasRoot(self): + return self.has_root + + def PathExists(self, filepath): + return filepath in self.file_system + + def RemovePath(self, path, **_kwargs): + self.file_system.pop(path) + + def WriteFile(self, path, contents, **_kwargs): + self.file_system[path] = contents + + def ReadFile(self, path, **_kwargs): + return self.file_system[path] + + +class FlagChangerTest(unittest.TestCase): + def setUp(self): + self.device = _FakeDevice() + # pylint: disable=protected-access + self.cmdline_path = posixpath.join(flag_changer._CMDLINE_DIR, _CMDLINE_FILE) + self.cmdline_path_legacy = posixpath.join( + flag_changer._CMDLINE_DIR_LEGACY, _CMDLINE_FILE) + + def testFlagChanger_removeLegacyCmdLine(self): + self.device.WriteFile(self.cmdline_path_legacy, 'chrome --old --stuff') + self.assertTrue(self.device.PathExists(self.cmdline_path_legacy)) + + changer = flag_changer.FlagChanger(self.device, 'chrome-command-line') + self.assertEquals( + changer._cmdline_path, # pylint: disable=protected-access + self.cmdline_path) + self.assertFalse(self.device.PathExists(self.cmdline_path_legacy)) + + def testFlagChanger_mustBeFileName(self): + with self.assertRaises(ValueError): + flag_changer.FlagChanger(self.device, '/data/local/chrome-command-line') + + +class ParseSerializeFlagsTest(unittest.TestCase): + def _testQuoteFlag(self, flag, expected_quoted_flag): + # Start with an unquoted flag, check that it's quoted as expected. + # pylint: disable=protected-access + quoted_flag = flag_changer._QuoteFlag(flag) + self.assertEqual(quoted_flag, expected_quoted_flag) + # Check that it survives a round-trip. + parsed_flags = flag_changer._ParseFlags('_ %s' % quoted_flag) + self.assertEqual(len(parsed_flags), 1) + self.assertEqual(flag, parsed_flags[0]) + + def testQuoteFlag_simple(self): + self._testQuoteFlag('--simple-flag', '--simple-flag') + + def testQuoteFlag_withSimpleValue(self): + self._testQuoteFlag('--key=value', '--key=value') + + def testQuoteFlag_withQuotedValue1(self): + self._testQuoteFlag('--key=valueA valueB', '--key="valueA valueB"') + + def testQuoteFlag_withQuotedValue2(self): + self._testQuoteFlag( + '--key=this "should" work', r'--key="this \"should\" work"') + + def testQuoteFlag_withQuotedValue3(self): + self._testQuoteFlag( + "--key=this is 'fine' too", '''--key="this is 'fine' too"''') + + def testQuoteFlag_withQuotedValue4(self): + self._testQuoteFlag( + "--key='I really want to keep these quotes'", + '''--key="'I really want to keep these quotes'"''') + + def testQuoteFlag_withQuotedValue5(self): + self._testQuoteFlag( + "--this is a strange=flag", '"--this is a strange=flag"') + + def testQuoteFlag_withEmptyValue(self): + self._testQuoteFlag('--some-flag=', '--some-flag=') + + def _testParseCmdLine(self, command_line, expected_flags): + # Start with a command line, check that flags are parsed as expected. + # pylint: disable=protected-access + flags = flag_changer._ParseFlags(command_line) + self.assertItemsEqual(flags, expected_flags) + + # Check that flags survive a round-trip. + # Note: Although new_command_line and command_line may not match, they + # should describe the same set of flags. + new_command_line = flag_changer._SerializeFlags(flags) + new_flags = flag_changer._ParseFlags(new_command_line) + self.assertItemsEqual(new_flags, expected_flags) + + def testParseCmdLine_simple(self): + self._testParseCmdLine( + 'chrome --foo --bar="a b" --baz=true --fine="ok"', + ['--foo', '--bar=a b', '--baz=true', '--fine=ok']) + + def testParseCmdLine_withFancyQuotes(self): + self._testParseCmdLine( + r'''_ --foo="this 'is' ok" + --bar='this \'is\' too' + --baz="this \'is\' tricky" + ''', + ["--foo=this 'is' ok", + "--bar=this 'is' too", + r"--baz=this \'is\' tricky"]) + + def testParseCmdLine_withUnterminatedQuote(self): + self._testParseCmdLine( + '_ --foo --bar="I forgot something', + ['--foo', '--bar=I forgot something']) + + +if __name__ == '__main__': + unittest.main(verbosity=2) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/forwarder.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/forwarder.py new file mode 100644 index 0000000..76c56ec --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/forwarder.py @@ -0,0 +1,467 @@ +# Copyright (c) 2012 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# pylint: disable=W0212 + +import fcntl +import logging +import os +import psutil + +from devil import base_error +from devil import devil_env +from devil.android import device_errors +from devil.android.constants import file_system +from devil.android.sdk import adb_wrapper +from devil.android.valgrind_tools import base_tool +from devil.utils import cmd_helper + +logger = logging.getLogger(__name__) + +# If passed as the device port, this will tell the forwarder to allocate +# a dynamic port on the device. The actual port can then be retrieved with +# Forwarder.DevicePortForHostPort. +DYNAMIC_DEVICE_PORT = 0 + + +def _GetProcessStartTime(pid): + return psutil.Process(pid).create_time + + +def _LogMapFailureDiagnostics(device): + # The host forwarder daemon logs to /tmp/host_forwarder_log, so print the end + # of that. + try: + with open('/tmp/host_forwarder_log') as host_forwarder_log: + logger.info('Last 50 lines of the host forwarder daemon log:') + for line in host_forwarder_log.read().splitlines()[-50:]: + logger.info(' %s', line) + except Exception: # pylint: disable=broad-except + # Grabbing the host forwarder log is best-effort. Ignore all errors. + logger.warning('Failed to get the contents of host_forwarder_log.') + + # The device forwarder daemon logs to the logcat, so print the end of that. + try: + logger.info('Last 50 lines of logcat:') + for logcat_line in device.adb.Logcat(dump=True)[-50:]: + logger.info(' %s', logcat_line) + except (device_errors.CommandFailedError, + device_errors.DeviceUnreachableError): + # Grabbing the device forwarder log is also best-effort. Ignore all errors. + logger.warning('Failed to get the contents of the logcat.') + + # Log alive device forwarders. + try: + ps_out = device.RunShellCommand(['ps'], check_return=True) + logger.info('Currently running device_forwarders:') + for line in ps_out: + if 'device_forwarder' in line: + logger.info(' %s', line) + except (device_errors.CommandFailedError, + device_errors.DeviceUnreachableError): + logger.warning('Failed to list currently running device_forwarder ' + 'instances.') + + +class _FileLock(object): + """With statement-aware implementation of a file lock. + + File locks are needed for cross-process synchronization when the + multiprocessing Python module is used. + """ + + def __init__(self, path): + self._fd = -1 + self._path = path + + def __enter__(self): + self._fd = os.open(self._path, os.O_RDONLY | os.O_CREAT) + if self._fd < 0: + raise Exception('Could not open file %s for reading' % self._path) + fcntl.flock(self._fd, fcntl.LOCK_EX) + + def __exit__(self, _exception_type, _exception_value, traceback): + fcntl.flock(self._fd, fcntl.LOCK_UN) + os.close(self._fd) + + +class HostForwarderError(base_error.BaseError): + """Exception for failures involving host_forwarder.""" + + def __init__(self, message): + super(HostForwarderError, self).__init__(message) + + +class Forwarder(object): + """Thread-safe class to manage port forwards from the device to the host.""" + + _DEVICE_FORWARDER_FOLDER = (file_system.TEST_EXECUTABLE_DIR + + '/forwarder/') + _DEVICE_FORWARDER_PATH = (file_system.TEST_EXECUTABLE_DIR + + '/forwarder/device_forwarder') + _LOCK_PATH = '/tmp/chrome.forwarder.lock' + # Defined in host_forwarder_main.cc + _HOST_FORWARDER_LOG = '/tmp/host_forwarder_log' + + _TIMEOUT = 60 # seconds + + _instance = None + + @staticmethod + def Map(port_pairs, device, tool=None): + """Runs the forwarder. + + Args: + port_pairs: A list of tuples (device_port, host_port) to forward. Note + that you can specify 0 as a device_port, in which case a + port will by dynamically assigned on the device. You can + get the number of the assigned port using the + DevicePortForHostPort method. + device: A DeviceUtils instance. + tool: Tool class to use to get wrapper, if necessary, for executing the + forwarder (see valgrind_tools.py). + + Raises: + Exception on failure to forward the port. + """ + if not tool: + tool = base_tool.BaseTool() + with _FileLock(Forwarder._LOCK_PATH): + instance = Forwarder._GetInstanceLocked(tool) + instance._InitDeviceLocked(device, tool) + + device_serial = str(device) + map_arg_lists = [ + ['--adb=' + adb_wrapper.AdbWrapper.GetAdbPath(), + '--serial-id=' + device_serial, + '--map', str(device_port), str(host_port)] + for device_port, host_port in port_pairs] + logger.info('Forwarding using commands: %s', map_arg_lists) + + for map_arg_list in map_arg_lists: + try: + map_cmd = [instance._host_forwarder_path] + map_arg_list + (exit_code, output) = cmd_helper.GetCmdStatusAndOutputWithTimeout( + map_cmd, Forwarder._TIMEOUT) + except cmd_helper.TimeoutError as e: + raise HostForwarderError( + '`%s` timed out:\n%s' % (' '.join(map_cmd), e.output)) + except OSError as e: + if e.errno == 2: + raise HostForwarderError( + 'Unable to start host forwarder. ' + 'Make sure you have built host_forwarder.') + else: raise + if exit_code != 0: + try: + instance._KillDeviceLocked(device, tool) + except (device_errors.CommandFailedError, + device_errors.DeviceUnreachableError): + # We don't want the failure to kill the device forwarder to + # supersede the original failure to map. + logging.warning( + 'Failed to kill the device forwarder after map failure: %s', + str(e)) + _LogMapFailureDiagnostics(device) + formatted_output = ('\n'.join(output) if isinstance(output, list) + else output) + raise HostForwarderError( + '`%s` exited with %d:\n%s' % ( + ' '.join(map_cmd), + exit_code, + formatted_output)) + tokens = output.split(':') + if len(tokens) != 2: + raise HostForwarderError( + 'Unexpected host forwarder output "%s", ' + 'expected "device_port:host_port"' % output) + device_port = int(tokens[0]) + host_port = int(tokens[1]) + serial_with_port = (device_serial, device_port) + instance._device_to_host_port_map[serial_with_port] = host_port + instance._host_to_device_port_map[host_port] = serial_with_port + logger.info('Forwarding device port: %d to host port: %d.', + device_port, host_port) + + @staticmethod + def UnmapDevicePort(device_port, device): + """Unmaps a previously forwarded device port. + + Args: + device: A DeviceUtils instance. + device_port: A previously forwarded port (through Map()). + """ + with _FileLock(Forwarder._LOCK_PATH): + Forwarder._UnmapDevicePortLocked(device_port, device) + + @staticmethod + def UnmapAllDevicePorts(device): + """Unmaps all the previously forwarded ports for the provided device. + + Args: + device: A DeviceUtils instance. + port_pairs: A list of tuples (device_port, host_port) to unmap. + """ + with _FileLock(Forwarder._LOCK_PATH): + instance = Forwarder._GetInstanceLocked(None) + unmap_all_cmd = [ + instance._host_forwarder_path, + '--adb=%s' % adb_wrapper.AdbWrapper.GetAdbPath(), + '--serial-id=%s' % device.serial, + '--unmap-all' + ] + try: + exit_code, output = cmd_helper.GetCmdStatusAndOutputWithTimeout( + unmap_all_cmd, Forwarder._TIMEOUT) + except cmd_helper.TimeoutError as e: + raise HostForwarderError( + '`%s` timed out:\n%s' % (' '.join(unmap_all_cmd), e.output)) + if exit_code != 0: + error_msg = [ + '`%s` exited with %d' % (' '.join(unmap_all_cmd), exit_code)] + if isinstance(output, list): + error_msg += output + else: + error_msg += [output] + raise HostForwarderError('\n'.join(error_msg)) + + # Clean out any entries from the device & host map. + device_map = instance._device_to_host_port_map + host_map = instance._host_to_device_port_map + for device_serial_and_port, host_port in device_map.items(): + device_serial = device_serial_and_port[0] + if device_serial == device.serial: + del device_map[device_serial_and_port] + del host_map[host_port] + + # Kill the device forwarder. + tool = base_tool.BaseTool() + instance._KillDeviceLocked(device, tool) + + @staticmethod + def DevicePortForHostPort(host_port): + """Returns the device port that corresponds to a given host port.""" + with _FileLock(Forwarder._LOCK_PATH): + serial_and_port = Forwarder._GetInstanceLocked( + None)._host_to_device_port_map.get(host_port) + return serial_and_port[1] if serial_and_port else None + + @staticmethod + def RemoveHostLog(): + if os.path.exists(Forwarder._HOST_FORWARDER_LOG): + os.unlink(Forwarder._HOST_FORWARDER_LOG) + + @staticmethod + def GetHostLog(): + if not os.path.exists(Forwarder._HOST_FORWARDER_LOG): + return '' + with file(Forwarder._HOST_FORWARDER_LOG, 'r') as f: + return f.read() + + @staticmethod + def _GetInstanceLocked(tool): + """Returns the singleton instance. + + Note that the global lock must be acquired before calling this method. + + Args: + tool: Tool class to use to get wrapper, if necessary, for executing the + forwarder (see valgrind_tools.py). + """ + if not Forwarder._instance: + Forwarder._instance = Forwarder(tool) + return Forwarder._instance + + def __init__(self, tool): + """Constructs a new instance of Forwarder. + + Note that Forwarder is a singleton therefore this constructor should be + called only once. + + Args: + tool: Tool class to use to get wrapper, if necessary, for executing the + forwarder (see valgrind_tools.py). + """ + assert not Forwarder._instance + self._tool = tool + self._initialized_devices = set() + self._device_to_host_port_map = dict() + self._host_to_device_port_map = dict() + self._host_forwarder_path = devil_env.config.FetchPath('forwarder_host') + assert os.path.exists(self._host_forwarder_path), 'Please build forwarder2' + self._InitHostLocked() + + @staticmethod + def _UnmapDevicePortLocked(device_port, device): + """Internal method used by UnmapDevicePort(). + + Note that the global lock must be acquired before calling this method. + """ + instance = Forwarder._GetInstanceLocked(None) + serial = str(device) + serial_with_port = (serial, device_port) + if not serial_with_port in instance._device_to_host_port_map: + logger.error('Trying to unmap non-forwarded port %d', device_port) + return + + host_port = instance._device_to_host_port_map[serial_with_port] + del instance._device_to_host_port_map[serial_with_port] + del instance._host_to_device_port_map[host_port] + + unmap_cmd = [ + instance._host_forwarder_path, + '--adb=%s' % adb_wrapper.AdbWrapper.GetAdbPath(), + '--serial-id=%s' % serial, + '--unmap', str(device_port) + ] + try: + (exit_code, output) = cmd_helper.GetCmdStatusAndOutputWithTimeout( + unmap_cmd, Forwarder._TIMEOUT) + except cmd_helper.TimeoutError as e: + raise HostForwarderError( + '`%s` timed out:\n%s' % (' '.join(unmap_cmd), e.output)) + if exit_code != 0: + logger.error( + '`%s` exited with %d:\n%s', + ' '.join(unmap_cmd), + exit_code, + '\n'.join(output) if isinstance(output, list) else output) + + @staticmethod + def _GetPidForLock(): + """Returns the PID used for host_forwarder initialization. + + The PID of the "sharder" is used to handle multiprocessing. The "sharder" + is the initial process that forks that is the parent process. + """ + return os.getpgrp() + + def _InitHostLocked(self): + """Initializes the host forwarder daemon. + + Note that the global lock must be acquired before calling this method. This + method kills any existing host_forwarder process that could be stale. + """ + # See if the host_forwarder daemon was already initialized by a concurrent + # process or thread (in case multi-process sharding is not used). + pid_for_lock = Forwarder._GetPidForLock() + fd = os.open(Forwarder._LOCK_PATH, os.O_RDWR | os.O_CREAT) + with os.fdopen(fd, 'r+') as pid_file: + pid_with_start_time = pid_file.readline() + if pid_with_start_time: + (pid, process_start_time) = pid_with_start_time.split(':') + if pid == str(pid_for_lock): + if process_start_time == str(_GetProcessStartTime(pid_for_lock)): + return + self._KillHostLocked() + pid_file.seek(0) + pid_file.write( + '%s:%s' % (pid_for_lock, str(_GetProcessStartTime(pid_for_lock)))) + pid_file.truncate() + + def _InitDeviceLocked(self, device, tool): + """Initializes the device_forwarder daemon for a specific device (once). + + Note that the global lock must be acquired before calling this method. This + method kills any existing device_forwarder daemon on the device that could + be stale, pushes the latest version of the daemon (to the device) and starts + it. + + Args: + device: A DeviceUtils instance. + tool: Tool class to use to get wrapper, if necessary, for executing the + forwarder (see valgrind_tools.py). + """ + device_serial = str(device) + if device_serial in self._initialized_devices: + return + try: + self._KillDeviceLocked(device, tool) + except device_errors.CommandFailedError: + logger.warning('Failed to kill device forwarder. Rebooting.') + device.Reboot() + forwarder_device_path_on_host = devil_env.config.FetchPath( + 'forwarder_device', device=device) + forwarder_device_path_on_device = ( + Forwarder._DEVICE_FORWARDER_FOLDER + if os.path.isdir(forwarder_device_path_on_host) + else Forwarder._DEVICE_FORWARDER_PATH) + device.PushChangedFiles([( + forwarder_device_path_on_host, + forwarder_device_path_on_device)]) + + cmd = [Forwarder._DEVICE_FORWARDER_PATH] + wrapper = tool.GetUtilWrapper() + if wrapper: + cmd.insert(0, wrapper) + device.RunShellCommand( + cmd, env={'LD_LIBRARY_PATH': Forwarder._DEVICE_FORWARDER_FOLDER}, + check_return=True) + self._initialized_devices.add(device_serial) + + @staticmethod + def KillHost(): + """Kills the forwarder process running on the host.""" + with _FileLock(Forwarder._LOCK_PATH): + Forwarder._GetInstanceLocked(None)._KillHostLocked() + + def _KillHostLocked(self): + """Kills the forwarder process running on the host. + + Note that the global lock must be acquired before calling this method. + """ + logger.info('Killing host_forwarder.') + try: + kill_cmd = [self._host_forwarder_path, '--kill-server'] + (exit_code, _o) = cmd_helper.GetCmdStatusAndOutputWithTimeout( + kill_cmd, Forwarder._TIMEOUT) + if exit_code != 0: + kill_cmd = ['pkill', '-9', 'host_forwarder'] + (exit_code, output) = cmd_helper.GetCmdStatusAndOutputWithTimeout( + kill_cmd, Forwarder._TIMEOUT) + if exit_code != 0: + raise HostForwarderError( + '%s exited with %d:\n%s' % ( + self._host_forwarder_path, + exit_code, + '\n'.join(output) if isinstance(output, list) else output)) + except cmd_helper.TimeoutError as e: + raise HostForwarderError( + '`%s` timed out:\n%s' % (' '.join(kill_cmd), e.output)) + + @staticmethod + def KillDevice(device, tool=None): + """Kills the forwarder process running on the device. + + Args: + device: Instance of DeviceUtils for talking to the device. + tool: Wrapper tool (e.g. valgrind) that can be used to execute the device + forwarder (see valgrind_tools.py). + """ + with _FileLock(Forwarder._LOCK_PATH): + Forwarder._GetInstanceLocked(None)._KillDeviceLocked( + device, tool or base_tool.BaseTool()) + + def _KillDeviceLocked(self, device, tool): + """Kills the forwarder process running on the device. + + Note that the global lock must be acquired before calling this method. + + Args: + device: Instance of DeviceUtils for talking to the device. + tool: Wrapper tool (e.g. valgrind) that can be used to execute the device + forwarder (see valgrind_tools.py). + """ + logger.info('Killing device_forwarder.') + self._initialized_devices.discard(device.serial) + if not device.FileExists(Forwarder._DEVICE_FORWARDER_PATH): + return + + cmd = [Forwarder._DEVICE_FORWARDER_PATH, '--kill-server'] + wrapper = tool.GetUtilWrapper() + if wrapper: + cmd.insert(0, wrapper) + device.RunShellCommand( + cmd, env={'LD_LIBRARY_PATH': Forwarder._DEVICE_FORWARDER_FOLDER}, + check_return=True) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/install_commands.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/install_commands.py new file mode 100644 index 0000000..c8da869 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/install_commands.py @@ -0,0 +1,57 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import posixpath + +from devil import devil_env +from devil.android import device_errors +from devil.android.constants import file_system + +BIN_DIR = '%s/bin' % file_system.TEST_EXECUTABLE_DIR +_FRAMEWORK_DIR = '%s/framework' % file_system.TEST_EXECUTABLE_DIR + +_COMMANDS = { + 'unzip': 'org.chromium.android.commands.unzip.Unzip', +} + +_SHELL_COMMAND_FORMAT = ( +"""#!/system/bin/sh +base=%s +export CLASSPATH=$base/framework/chromium_commands.jar +exec app_process $base/bin %s $@ +""") + + +def Installed(device): + paths = [posixpath.join(BIN_DIR, c) for c in _COMMANDS] + paths.append(posixpath.join(_FRAMEWORK_DIR, 'chromium_commands.jar')) + return device.PathExists(paths) + + +def InstallCommands(device): + if device.IsUserBuild(): + raise device_errors.CommandFailedError( + 'chromium_commands currently requires a userdebug build.', + device_serial=device.adb.GetDeviceSerial()) + + chromium_commands_jar_path = devil_env.config.FetchPath('chromium_commands') + if not os.path.exists(chromium_commands_jar_path): + raise device_errors.CommandFailedError( + '%s not found. Please build chromium_commands.' + % chromium_commands_jar_path) + + device.RunShellCommand( + ['mkdir', '-p', BIN_DIR, _FRAMEWORK_DIR], check_return=True) + for command, main_class in _COMMANDS.iteritems(): + shell_command = _SHELL_COMMAND_FORMAT % ( + file_system.TEST_EXECUTABLE_DIR, main_class) + shell_file = '%s/%s' % (BIN_DIR, command) + device.WriteFile(shell_file, shell_command) + device.RunShellCommand( + ['chmod', '755', shell_file], check_return=True) + + device.adb.Push( + chromium_commands_jar_path, + '%s/chromium_commands.jar' % _FRAMEWORK_DIR) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/logcat_monitor.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/logcat_monitor.py new file mode 100644 index 0000000..0aece87 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/logcat_monitor.py @@ -0,0 +1,255 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# pylint: disable=unused-argument + +import errno +import logging +import os +import re +import shutil +import tempfile +import threading +import time + +from devil.android import decorators +from devil.android import device_errors +from devil.android.sdk import adb_wrapper +from devil.utils import reraiser_thread + +logger = logging.getLogger(__name__) + + +class LogcatMonitor(object): + + _RECORD_ITER_TIMEOUT = 2.0 + _RECORD_THREAD_JOIN_WAIT = 5.0 + _WAIT_TIME = 0.2 + _THREADTIME_RE_FORMAT = ( + r'(?P<date>\S*) +(?P<time>\S*) +(?P<proc_id>%s) +(?P<thread_id>%s) +' + r'(?P<log_level>%s) +(?P<component>%s) *: +(?P<message>%s)$') + + def __init__(self, adb, clear=True, filter_specs=None, output_file=None): + """Create a LogcatMonitor instance. + + Args: + adb: An instance of adb_wrapper.AdbWrapper. + clear: If True, clear the logcat when monitoring starts. + filter_specs: An optional list of '<tag>[:priority]' strings. + output_file: File path to save recorded logcat. + """ + if isinstance(adb, adb_wrapper.AdbWrapper): + self._adb = adb + else: + raise ValueError('Unsupported type passed for argument "device"') + self._clear = clear + self._filter_specs = filter_specs + self._output_file = output_file + self._record_file = None + self._record_file_lock = threading.Lock() + self._record_thread = None + self._stop_recording_event = threading.Event() + + @property + def output_file(self): + return self._output_file + + @decorators.WithTimeoutAndRetriesDefaults(10, 0) + def WaitFor(self, success_regex, failure_regex=None, timeout=None, + retries=None): + """Wait for a matching logcat line or until a timeout occurs. + + This will attempt to match lines in the logcat against both |success_regex| + and |failure_regex| (if provided). Note that this calls re.search on each + logcat line, not re.match, so the provided regular expressions don't have + to match an entire line. + + Args: + success_regex: The regular expression to search for. + failure_regex: An optional regular expression that, if hit, causes this + to stop looking for a match. Can be None. + timeout: timeout in seconds + retries: number of retries + + Returns: + A match object if |success_regex| matches a part of a logcat line, or + None if |failure_regex| matches a part of a logcat line. + Raises: + CommandFailedError on logcat failure (NOT on a |failure_regex| match). + CommandTimeoutError if no logcat line matching either |success_regex| or + |failure_regex| is found in |timeout| seconds. + DeviceUnreachableError if the device becomes unreachable. + LogcatMonitorCommandError when calling |WaitFor| while not recording + logcat. + """ + if self._record_thread is None: + raise LogcatMonitorCommandError( + 'Must be recording logcat when calling |WaitFor|', + device_serial=str(self._adb)) + if isinstance(success_regex, basestring): + success_regex = re.compile(success_regex) + if isinstance(failure_regex, basestring): + failure_regex = re.compile(failure_regex) + + logger.debug('Waiting %d seconds for "%s"', timeout, success_regex.pattern) + + # NOTE This will continue looping until: + # - success_regex matches a line, in which case the match object is + # returned. + # - failure_regex matches a line, in which case None is returned + # - the timeout is hit, in which case a CommandTimeoutError is raised. + with open(self._record_file.name, 'r') as f: + while True: + line = f.readline() + if line: + m = success_regex.search(line) + if m: + return m + if failure_regex and failure_regex.search(line): + return None + else: + time.sleep(self._WAIT_TIME) + + def FindAll(self, message_regex, proc_id=None, thread_id=None, log_level=None, + component=None): + """Finds all lines in the logcat that match the provided constraints. + + Args: + message_regex: The regular expression that the <message> section must + match. + proc_id: The process ID to match. If None, matches any process ID. + thread_id: The thread ID to match. If None, matches any thread ID. + log_level: The log level to match. If None, matches any log level. + component: The component to match. If None, matches any component. + + Raises: + LogcatMonitorCommandError when calling |FindAll| before recording logcat. + + Yields: + A match object for each matching line in the logcat. The match object + will always contain, in addition to groups defined in |message_regex|, + the following named groups: 'date', 'time', 'proc_id', 'thread_id', + 'log_level', 'component', and 'message'. + """ + if self._record_file is None: + raise LogcatMonitorCommandError( + 'Must have recorded or be recording a logcat to call |FindAll|', + device_serial=str(self._adb)) + if proc_id is None: + proc_id = r'\d+' + if thread_id is None: + thread_id = r'\d+' + if log_level is None: + log_level = r'[VDIWEF]' + if component is None: + component = r'[^\s:]+' + # pylint: disable=protected-access + threadtime_re = re.compile( + type(self)._THREADTIME_RE_FORMAT % ( + proc_id, thread_id, log_level, component, message_regex)) + + with open(self._record_file.name, 'r') as f: + for line in f: + m = re.match(threadtime_re, line) + if m: + yield m + + def _StartRecording(self): + """Starts recording logcat to file. + + Function spawns a thread that records logcat to file and will not die + until |StopRecording| is called. + """ + def record_to_file(): + # Write the log with line buffering so the consumer sees each individual + # line. + for data in self._adb.Logcat(filter_specs=self._filter_specs, + logcat_format='threadtime', + iter_timeout=self._RECORD_ITER_TIMEOUT): + if self._stop_recording_event.isSet(): + return + + if data is None: + # Logcat can yield None if the iter_timeout is hit. + continue + + with self._record_file_lock: + if self._record_file and not self._record_file.closed: + self._record_file.write(data + '\n') + + self._stop_recording_event.clear() + if not self._record_thread: + self._record_thread = reraiser_thread.ReraiserThread(record_to_file) + self._record_thread.start() + + def _StopRecording(self): + """Finish recording logcat.""" + if self._record_thread: + self._stop_recording_event.set() + self._record_thread.join(timeout=self._RECORD_THREAD_JOIN_WAIT) + self._record_thread.ReraiseIfException() + self._record_thread = None + + def Start(self): + """Starts the logcat monitor. + + Clears the logcat if |clear| was set in |__init__|. + """ + if self._clear: + self._adb.Logcat(clear=True) + if not self._record_file: + self._record_file = tempfile.NamedTemporaryFile(mode='a', bufsize=1) + self._StartRecording() + + def Stop(self): + """Stops the logcat monitor. + + Stops recording the logcat. Copies currently recorded logcat to + |self._output_file|. + """ + self._StopRecording() + with self._record_file_lock: + if self._record_file and self._output_file: + try: + os.makedirs(os.path.dirname(self._output_file)) + except OSError as e: + if e.errno != errno.EEXIST: + raise + shutil.copy(self._record_file.name, self._output_file) + + def Close(self): + """Closes logcat recording file. + + Should be called when finished using the logcat monitor. + """ + with self._record_file_lock: + if self._record_file: + self._record_file.close() + self._record_file = None + + def __enter__(self): + """Starts the logcat monitor.""" + self.Start() + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + """Stops the logcat monitor.""" + self.Stop() + + def __del__(self): + """Closes logcat recording file in case |Close| was never called.""" + with self._record_file_lock: + if self._record_file: + logger.warning( + 'Need to call |Close| on the logcat monitor when done!') + self._record_file.close() + + @property + def adb(self): + return self._adb + + +class LogcatMonitorCommandError(device_errors.CommandFailedError): + """Exception for errors with logcat monitor commands.""" + pass diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/logcat_monitor_test.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/logcat_monitor_test.py new file mode 100644 index 0000000..8fb4d74 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/logcat_monitor_test.py @@ -0,0 +1,230 @@ +#!/usr/bin/env python +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# pylint: disable=protected-access + +import itertools +import threading +import unittest + +from devil import devil_env +from devil.android import logcat_monitor +from devil.android.sdk import adb_wrapper + +with devil_env.SysPath(devil_env.PYMOCK_PATH): + import mock # pylint: disable=import-error + + +def _CreateTestLog(raw_logcat=None): + test_adb = adb_wrapper.AdbWrapper('0123456789abcdef') + test_adb.Logcat = mock.Mock(return_value=(l for l in raw_logcat)) + test_log = logcat_monitor.LogcatMonitor(test_adb, clear=False) + return test_log + + +class LogcatMonitorTest(unittest.TestCase): + + _TEST_THREADTIME_LOGCAT_DATA = [ + '01-01 01:02:03.456 7890 0987 V LogcatMonitorTest: ' + 'verbose logcat monitor test message 1', + '01-01 01:02:03.457 8901 1098 D LogcatMonitorTest: ' + 'debug logcat monitor test message 2', + '01-01 01:02:03.458 9012 2109 I LogcatMonitorTest: ' + 'info logcat monitor test message 3', + '01-01 01:02:03.459 0123 3210 W LogcatMonitorTest: ' + 'warning logcat monitor test message 4', + '01-01 01:02:03.460 1234 4321 E LogcatMonitorTest: ' + 'error logcat monitor test message 5', + '01-01 01:02:03.461 2345 5432 F LogcatMonitorTest: ' + 'fatal logcat monitor test message 6', + '01-01 01:02:03.462 3456 6543 D LogcatMonitorTest: ' + 'last line' + ] + + def assertIterEqual(self, expected_iter, actual_iter): + for expected, actual in itertools.izip_longest(expected_iter, actual_iter): + self.assertIsNotNone( + expected, + msg='actual has unexpected elements starting with %s' % str(actual)) + self.assertIsNotNone( + actual, + msg='actual is missing elements starting with %s' % str(expected)) + self.assertEqual(actual.group('proc_id'), expected[0]) + self.assertEqual(actual.group('thread_id'), expected[1]) + self.assertEqual(actual.group('log_level'), expected[2]) + self.assertEqual(actual.group('component'), expected[3]) + self.assertEqual(actual.group('message'), expected[4]) + + with self.assertRaises(StopIteration): + next(actual_iter) + with self.assertRaises(StopIteration): + next(expected_iter) + + @mock.patch('time.sleep', mock.Mock()) + def testWaitFor_success(self): + test_log = _CreateTestLog( + raw_logcat=type(self)._TEST_THREADTIME_LOGCAT_DATA) + test_log.Start() + actual_match = test_log.WaitFor(r'.*(fatal|error) logcat monitor.*', None) + self.assertTrue(actual_match) + self.assertEqual( + '01-01 01:02:03.460 1234 4321 E LogcatMonitorTest: ' + 'error logcat monitor test message 5', + actual_match.group(0)) + self.assertEqual('error', actual_match.group(1)) + test_log.Stop() + test_log.Close() + + @mock.patch('time.sleep', mock.Mock()) + def testWaitFor_failure(self): + test_log = _CreateTestLog( + raw_logcat=type(self)._TEST_THREADTIME_LOGCAT_DATA) + test_log.Start() + actual_match = test_log.WaitFor( + r'.*My Success Regex.*', r'.*(fatal|error) logcat monitor.*') + self.assertIsNone(actual_match) + test_log.Stop() + test_log.Close() + + @mock.patch('time.sleep', mock.Mock()) + def testWaitFor_buffering(self): + # Simulate an adb log stream which does not complete until the test tells it + # to. This checks that the log matcher can receive individual lines from the + # log reader thread even if adb is not producing enough output to fill an + # entire file io buffer. + finished_lock = threading.Lock() + finished_lock.acquire() + + def LogGenerator(): + for line in type(self)._TEST_THREADTIME_LOGCAT_DATA: + yield line + finished_lock.acquire() + + test_adb = adb_wrapper.AdbWrapper('0123456789abcdef') + test_adb.Logcat = mock.Mock(return_value=LogGenerator()) + test_log = logcat_monitor.LogcatMonitor(test_adb, clear=False) + test_log.Start() + + actual_match = test_log.WaitFor(r'.*last line.*', None) + finished_lock.release() + self.assertTrue(actual_match) + test_log.Stop() + test_log.Close() + + @mock.patch('time.sleep', mock.Mock()) + def testFindAll_defaults(self): + test_log = _CreateTestLog( + raw_logcat=type(self)._TEST_THREADTIME_LOGCAT_DATA) + test_log.Start() + test_log.WaitFor(r'.*last line.*', None) + test_log.Stop() + expected_results = [ + ('7890', '0987', 'V', 'LogcatMonitorTest', + 'verbose logcat monitor test message 1'), + ('8901', '1098', 'D', 'LogcatMonitorTest', + 'debug logcat monitor test message 2'), + ('9012', '2109', 'I', 'LogcatMonitorTest', + 'info logcat monitor test message 3'), + ('0123', '3210', 'W', 'LogcatMonitorTest', + 'warning logcat monitor test message 4'), + ('1234', '4321', 'E', 'LogcatMonitorTest', + 'error logcat monitor test message 5'), + ('2345', '5432', 'F', 'LogcatMonitorTest', + 'fatal logcat monitor test message 6')] + actual_results = test_log.FindAll(r'\S* logcat monitor test message \d') + self.assertIterEqual(iter(expected_results), actual_results) + test_log.Close() + + @mock.patch('time.sleep', mock.Mock()) + def testFindAll_defaults_miss(self): + test_log = _CreateTestLog( + raw_logcat=type(self)._TEST_THREADTIME_LOGCAT_DATA) + test_log.Start() + test_log.WaitFor(r'.*last line.*', None) + test_log.Stop() + expected_results = [] + actual_results = test_log.FindAll(r'\S* nothing should match this \d') + self.assertIterEqual(iter(expected_results), actual_results) + test_log.Close() + + @mock.patch('time.sleep', mock.Mock()) + def testFindAll_filterProcId(self): + test_log = _CreateTestLog( + raw_logcat=type(self)._TEST_THREADTIME_LOGCAT_DATA) + test_log.Start() + test_log.WaitFor(r'.*last line.*', None) + test_log.Stop() + actual_results = test_log.FindAll( + r'\S* logcat monitor test message \d', proc_id=1234) + expected_results = [ + ('1234', '4321', 'E', 'LogcatMonitorTest', + 'error logcat monitor test message 5')] + self.assertIterEqual(iter(expected_results), actual_results) + test_log.Close() + + @mock.patch('time.sleep', mock.Mock()) + def testFindAll_filterThreadId(self): + test_log = _CreateTestLog( + raw_logcat=type(self)._TEST_THREADTIME_LOGCAT_DATA) + test_log.Start() + test_log.WaitFor(r'.*last line.*', None) + test_log.Stop() + actual_results = test_log.FindAll( + r'\S* logcat monitor test message \d', thread_id=2109) + expected_results = [ + ('9012', '2109', 'I', 'LogcatMonitorTest', + 'info logcat monitor test message 3')] + self.assertIterEqual(iter(expected_results), actual_results) + test_log.Close() + + @mock.patch('time.sleep', mock.Mock()) + def testFindAll_filterLogLevel(self): + test_log = _CreateTestLog( + raw_logcat=type(self)._TEST_THREADTIME_LOGCAT_DATA) + test_log.Start() + test_log.WaitFor(r'.*last line.*', None) + test_log.Stop() + actual_results = test_log.FindAll( + r'\S* logcat monitor test message \d', log_level=r'[DW]') + expected_results = [ + ('8901', '1098', 'D', 'LogcatMonitorTest', + 'debug logcat monitor test message 2'), + ('0123', '3210', 'W', 'LogcatMonitorTest', + 'warning logcat monitor test message 4') + ] + self.assertIterEqual(iter(expected_results), actual_results) + test_log.Close() + + @mock.patch('time.sleep', mock.Mock()) + def testFindAll_filterComponent(self): + test_log = _CreateTestLog( + raw_logcat=type(self)._TEST_THREADTIME_LOGCAT_DATA) + test_log.Start() + test_log.WaitFor(r'.*last line.*', None) + test_log.Stop() + actual_results = test_log.FindAll(r'.*', component='LogcatMonitorTest') + expected_results = [ + ('7890', '0987', 'V', 'LogcatMonitorTest', + 'verbose logcat monitor test message 1'), + ('8901', '1098', 'D', 'LogcatMonitorTest', + 'debug logcat monitor test message 2'), + ('9012', '2109', 'I', 'LogcatMonitorTest', + 'info logcat monitor test message 3'), + ('0123', '3210', 'W', 'LogcatMonitorTest', + 'warning logcat monitor test message 4'), + ('1234', '4321', 'E', 'LogcatMonitorTest', + 'error logcat monitor test message 5'), + ('2345', '5432', 'F', 'LogcatMonitorTest', + 'fatal logcat monitor test message 6'), + ('3456', '6543', 'D', 'LogcatMonitorTest', + 'last line') + ] + self.assertIterEqual(iter(expected_results), actual_results) + test_log.Close() + + +if __name__ == '__main__': + unittest.main(verbosity=2) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/md5sum.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/md5sum.py new file mode 100644 index 0000000..6dece9e --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/md5sum.py @@ -0,0 +1,120 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import posixpath +import re + +from devil import devil_env +from devil.android import device_errors +from devil.utils import cmd_helper + +MD5SUM_DEVICE_LIB_PATH = '/data/local/tmp/md5sum' +MD5SUM_DEVICE_BIN_PATH = MD5SUM_DEVICE_LIB_PATH + '/md5sum_bin' + +_STARTS_WITH_CHECKSUM_RE = re.compile(r'^\s*[0-9a-fA-F]{32}\s+') + + +def CalculateHostMd5Sums(paths): + """Calculates the MD5 sum value for all items in |paths|. + + Directories are traversed recursively and the MD5 sum of each file found is + reported in the result. + + Args: + paths: A list of host paths to md5sum. + Returns: + A dict mapping file paths to their respective md5sum checksums. + """ + if isinstance(paths, basestring): + paths = [paths] + + md5sum_bin_host_path = devil_env.config.FetchPath('md5sum_host') + if not os.path.exists(md5sum_bin_host_path): + raise IOError('File not built: %s' % md5sum_bin_host_path) + out = cmd_helper.GetCmdOutput( + [md5sum_bin_host_path] + [os.path.realpath(p) for p in paths]) + + return _ParseMd5SumOutput(out.splitlines()) + + +def CalculateDeviceMd5Sums(paths, device): + """Calculates the MD5 sum value for all items in |paths|. + + Directories are traversed recursively and the MD5 sum of each file found is + reported in the result. + + Args: + paths: A list of device paths to md5sum. + Returns: + A dict mapping file paths to their respective md5sum checksums. + """ + if not paths: + return {} + + if isinstance(paths, basestring): + paths = [paths] + # Allow generators + paths = list(paths) + + md5sum_dist_path = devil_env.config.FetchPath('md5sum_device', device=device) + + if os.path.isdir(md5sum_dist_path): + md5sum_dist_bin_path = os.path.join(md5sum_dist_path, 'md5sum_bin') + else: + md5sum_dist_bin_path = md5sum_dist_path + + if not os.path.exists(md5sum_dist_path): + raise IOError('File not built: %s' % md5sum_dist_path) + md5sum_file_size = os.path.getsize(md5sum_dist_bin_path) + + # For better performance, make the script as small as possible to try and + # avoid needing to write to an intermediary file (which RunShellCommand will + # do if necessary). + md5sum_script = 'a=%s;' % MD5SUM_DEVICE_BIN_PATH + # Check if the binary is missing or has changed (using its file size as an + # indicator), and trigger a (re-)push via the exit code. + md5sum_script += '! [[ $(ls -l $a) = *%d* ]]&&exit 2;' % md5sum_file_size + # Make sure it can find libbase.so + md5sum_script += 'export LD_LIBRARY_PATH=%s;' % MD5SUM_DEVICE_LIB_PATH + if len(paths) > 1: + prefix = posixpath.commonprefix(paths) + if len(prefix) > 4: + md5sum_script += 'p="%s";' % prefix + paths = ['$p"%s"' % p[len(prefix):] for p in paths] + + md5sum_script += ';'.join('$a %s' % p for p in paths) + # Don't fail the script if the last md5sum fails (due to file not found) + # Note: ":" is equivalent to "true". + md5sum_script += ';:' + try: + out = device.RunShellCommand(md5sum_script, shell=True, check_return=True) + except device_errors.AdbShellCommandFailedError as e: + # Push the binary only if it is found to not exist + # (faster than checking up-front). + if e.status == 2: + # If files were previously pushed as root (adbd running as root), trying + # to re-push as non-root causes the push command to report success, but + # actually fail. So, wipe the directory first. + device.RunShellCommand(['rm', '-rf', MD5SUM_DEVICE_LIB_PATH], + as_root=True, check_return=True) + if os.path.isdir(md5sum_dist_path): + device.adb.Push(md5sum_dist_path, MD5SUM_DEVICE_LIB_PATH) + else: + mkdir_cmd = 'a=%s;[[ -e $a ]] || mkdir $a' % MD5SUM_DEVICE_LIB_PATH + device.RunShellCommand(mkdir_cmd, shell=True, check_return=True) + device.adb.Push(md5sum_dist_bin_path, MD5SUM_DEVICE_BIN_PATH) + + out = device.RunShellCommand(md5sum_script, shell=True, check_return=True) + else: + raise + + return _ParseMd5SumOutput(out) + + +def _ParseMd5SumOutput(out): + hash_and_path = (l.split(None, 1) for l in out + if l and _STARTS_WITH_CHECKSUM_RE.match(l)) + return dict((p, h) for h, p in hash_and_path) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/md5sum_test.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/md5sum_test.py new file mode 100644 index 0000000..c9b4954 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/md5sum_test.py @@ -0,0 +1,237 @@ +#!/usr/bin/env python +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import unittest + +from devil import devil_env +from devil.android import device_errors +from devil.android import md5sum + +with devil_env.SysPath(devil_env.PYMOCK_PATH): + import mock # pylint: disable=import-error + +TEST_OUT_DIR = os.path.join('test', 'out', 'directory') +HOST_MD5_EXECUTABLE = os.path.join(TEST_OUT_DIR, 'md5sum_bin_host') +MD5_DIST = os.path.join(TEST_OUT_DIR, 'md5sum_dist') + + +class Md5SumTest(unittest.TestCase): + + def setUp(self): + mocked_attrs = { + 'md5sum_host': HOST_MD5_EXECUTABLE, + 'md5sum_device': MD5_DIST, + } + self._patchers = [ + mock.patch('devil.devil_env._Environment.FetchPath', + mock.Mock(side_effect=lambda a, device=None: mocked_attrs[a])), + mock.patch('os.path.exists', + new=mock.Mock(return_value=True)), + ] + for p in self._patchers: + p.start() + + def tearDown(self): + for p in self._patchers: + p.stop() + + def testCalculateHostMd5Sums_singlePath(self): + test_path = '/test/host/file.dat' + mock_get_cmd_output = mock.Mock( + return_value='0123456789abcdeffedcba9876543210 /test/host/file.dat') + with mock.patch('devil.utils.cmd_helper.GetCmdOutput', + new=mock_get_cmd_output): + out = md5sum.CalculateHostMd5Sums(test_path) + self.assertEquals(1, len(out)) + self.assertTrue('/test/host/file.dat' in out) + self.assertEquals('0123456789abcdeffedcba9876543210', + out['/test/host/file.dat']) + mock_get_cmd_output.assert_called_once_with( + [HOST_MD5_EXECUTABLE, '/test/host/file.dat']) + + def testCalculateHostMd5Sums_list(self): + test_paths = ['/test/host/file0.dat', '/test/host/file1.dat'] + mock_get_cmd_output = mock.Mock( + return_value='0123456789abcdeffedcba9876543210 /test/host/file0.dat\n' + '123456789abcdef00fedcba987654321 /test/host/file1.dat\n') + with mock.patch('devil.utils.cmd_helper.GetCmdOutput', + new=mock_get_cmd_output): + out = md5sum.CalculateHostMd5Sums(test_paths) + self.assertEquals(2, len(out)) + self.assertTrue('/test/host/file0.dat' in out) + self.assertEquals('0123456789abcdeffedcba9876543210', + out['/test/host/file0.dat']) + self.assertTrue('/test/host/file1.dat' in out) + self.assertEquals('123456789abcdef00fedcba987654321', + out['/test/host/file1.dat']) + mock_get_cmd_output.assert_called_once_with( + [HOST_MD5_EXECUTABLE, '/test/host/file0.dat', + '/test/host/file1.dat']) + + def testCalculateHostMd5Sums_generator(self): + test_paths = ('/test/host/' + p for p in ['file0.dat', 'file1.dat']) + mock_get_cmd_output = mock.Mock( + return_value='0123456789abcdeffedcba9876543210 /test/host/file0.dat\n' + '123456789abcdef00fedcba987654321 /test/host/file1.dat\n') + with mock.patch('devil.utils.cmd_helper.GetCmdOutput', + new=mock_get_cmd_output): + out = md5sum.CalculateHostMd5Sums(test_paths) + self.assertEquals(2, len(out)) + self.assertTrue('/test/host/file0.dat' in out) + self.assertEquals('0123456789abcdeffedcba9876543210', + out['/test/host/file0.dat']) + self.assertTrue('/test/host/file1.dat' in out) + self.assertEquals('123456789abcdef00fedcba987654321', + out['/test/host/file1.dat']) + mock_get_cmd_output.assert_called_once_with( + [HOST_MD5_EXECUTABLE, '/test/host/file0.dat', '/test/host/file1.dat']) + + def testCalculateDeviceMd5Sums_noPaths(self): + device = mock.NonCallableMock() + device.RunShellCommand = mock.Mock(side_effect=Exception()) + + out = md5sum.CalculateDeviceMd5Sums([], device) + self.assertEquals(0, len(out)) + + def testCalculateDeviceMd5Sums_singlePath(self): + test_path = '/storage/emulated/legacy/test/file.dat' + + device = mock.NonCallableMock() + device_md5sum_output = [ + '0123456789abcdeffedcba9876543210 ' + '/storage/emulated/legacy/test/file.dat', + ] + device.RunShellCommand = mock.Mock(return_value=device_md5sum_output) + + with mock.patch('os.path.getsize', return_value=1337): + out = md5sum.CalculateDeviceMd5Sums(test_path, device) + self.assertEquals(1, len(out)) + self.assertTrue('/storage/emulated/legacy/test/file.dat' in out) + self.assertEquals('0123456789abcdeffedcba9876543210', + out['/storage/emulated/legacy/test/file.dat']) + self.assertEquals(1, len(device.RunShellCommand.call_args_list)) + + def testCalculateDeviceMd5Sums_list(self): + test_path = ['/storage/emulated/legacy/test/file0.dat', + '/storage/emulated/legacy/test/file1.dat'] + device = mock.NonCallableMock() + device_md5sum_output = [ + '0123456789abcdeffedcba9876543210 ' + '/storage/emulated/legacy/test/file0.dat', + '123456789abcdef00fedcba987654321 ' + '/storage/emulated/legacy/test/file1.dat', + ] + device.RunShellCommand = mock.Mock(return_value=device_md5sum_output) + + with mock.patch('os.path.getsize', return_value=1337): + out = md5sum.CalculateDeviceMd5Sums(test_path, device) + self.assertEquals(2, len(out)) + self.assertTrue('/storage/emulated/legacy/test/file0.dat' in out) + self.assertEquals('0123456789abcdeffedcba9876543210', + out['/storage/emulated/legacy/test/file0.dat']) + self.assertTrue('/storage/emulated/legacy/test/file1.dat' in out) + self.assertEquals('123456789abcdef00fedcba987654321', + out['/storage/emulated/legacy/test/file1.dat']) + self.assertEquals(1, len(device.RunShellCommand.call_args_list)) + + def testCalculateDeviceMd5Sums_generator(self): + test_path = ('/storage/emulated/legacy/test/file%d.dat' % n + for n in xrange(0, 2)) + + device = mock.NonCallableMock() + device_md5sum_output = [ + '0123456789abcdeffedcba9876543210 ' + '/storage/emulated/legacy/test/file0.dat', + '123456789abcdef00fedcba987654321 ' + '/storage/emulated/legacy/test/file1.dat', + ] + device.RunShellCommand = mock.Mock(return_value=device_md5sum_output) + + with mock.patch('os.path.getsize', return_value=1337): + out = md5sum.CalculateDeviceMd5Sums(test_path, device) + self.assertEquals(2, len(out)) + self.assertTrue('/storage/emulated/legacy/test/file0.dat' in out) + self.assertEquals('0123456789abcdeffedcba9876543210', + out['/storage/emulated/legacy/test/file0.dat']) + self.assertTrue('/storage/emulated/legacy/test/file1.dat' in out) + self.assertEquals('123456789abcdef00fedcba987654321', + out['/storage/emulated/legacy/test/file1.dat']) + self.assertEquals(1, len(device.RunShellCommand.call_args_list)) + + def testCalculateDeviceMd5Sums_singlePath_linkerWarning(self): + # See crbug/479966 + test_path = '/storage/emulated/legacy/test/file.dat' + + device = mock.NonCallableMock() + device_md5sum_output = [ + 'WARNING: linker: /data/local/tmp/md5sum/md5sum_bin: ' + 'unused DT entry: type 0x1d arg 0x15db', + 'THIS_IS_NOT_A_VALID_CHECKSUM_ZZZ some random text', + '0123456789abcdeffedcba9876543210 ' + '/storage/emulated/legacy/test/file.dat', + ] + device.RunShellCommand = mock.Mock(return_value=device_md5sum_output) + + with mock.patch('os.path.getsize', return_value=1337): + out = md5sum.CalculateDeviceMd5Sums(test_path, device) + self.assertEquals(1, len(out)) + self.assertTrue('/storage/emulated/legacy/test/file.dat' in out) + self.assertEquals('0123456789abcdeffedcba9876543210', + out['/storage/emulated/legacy/test/file.dat']) + self.assertEquals(1, len(device.RunShellCommand.call_args_list)) + + def testCalculateDeviceMd5Sums_list_fileMissing(self): + test_path = ['/storage/emulated/legacy/test/file0.dat', + '/storage/emulated/legacy/test/file1.dat'] + device = mock.NonCallableMock() + device_md5sum_output = [ + '0123456789abcdeffedcba9876543210 ' + '/storage/emulated/legacy/test/file0.dat', + '[0819/203513:ERROR:md5sum.cc(25)] Could not open file asdf', + '', + ] + device.RunShellCommand = mock.Mock(return_value=device_md5sum_output) + + with mock.patch('os.path.getsize', return_value=1337): + out = md5sum.CalculateDeviceMd5Sums(test_path, device) + self.assertEquals(1, len(out)) + self.assertTrue('/storage/emulated/legacy/test/file0.dat' in out) + self.assertEquals('0123456789abcdeffedcba9876543210', + out['/storage/emulated/legacy/test/file0.dat']) + self.assertEquals(1, len(device.RunShellCommand.call_args_list)) + + def testCalculateDeviceMd5Sums_requiresBinary(self): + test_path = '/storage/emulated/legacy/test/file.dat' + + device = mock.NonCallableMock() + device.adb = mock.NonCallableMock() + device.adb.Push = mock.Mock() + device_md5sum_output = [ + 'WARNING: linker: /data/local/tmp/md5sum/md5sum_bin: ' + 'unused DT entry: type 0x1d arg 0x15db', + 'THIS_IS_NOT_A_VALID_CHECKSUM_ZZZ some random text', + '0123456789abcdeffedcba9876543210 ' + '/storage/emulated/legacy/test/file.dat', + ] + error = device_errors.AdbShellCommandFailedError('cmd', 'out', 2) + device.RunShellCommand = mock.Mock( + side_effect=(error, '', device_md5sum_output)) + + with mock.patch('os.path.isdir', return_value=True), ( + mock.patch('os.path.getsize', return_value=1337)): + out = md5sum.CalculateDeviceMd5Sums(test_path, device) + self.assertEquals(1, len(out)) + self.assertTrue('/storage/emulated/legacy/test/file.dat' in out) + self.assertEquals('0123456789abcdeffedcba9876543210', + out['/storage/emulated/legacy/test/file.dat']) + self.assertEquals(3, len(device.RunShellCommand.call_args_list)) + device.adb.Push.assert_called_once_with( + 'test/out/directory/md5sum_dist', '/data/local/tmp/md5sum') + + +if __name__ == '__main__': + unittest.main(verbosity=2) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/perf/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/perf/__init__.py new file mode 100644 index 0000000..50b23df --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/perf/__init__.py @@ -0,0 +1,3 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/perf/cache_control.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/perf/cache_control.py new file mode 100644 index 0000000..27782b5 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/perf/cache_control.py @@ -0,0 +1,15 @@ +# Copyright 2013 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + + +class CacheControl(object): + _DROP_CACHES = '/proc/sys/vm/drop_caches' + + def __init__(self, device): + self._device = device + + def DropRamCaches(self): + """Drops the filesystem ram caches for performance testing.""" + self._device.RunShellCommand(['sync'], check_return=True, as_root=True) + self._device.WriteFile(CacheControl._DROP_CACHES, '3', as_root=True) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/perf/perf_control.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/perf/perf_control.py new file mode 100644 index 0000000..06a5db6 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/perf/perf_control.py @@ -0,0 +1,210 @@ +# Copyright 2013 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import atexit +import logging +import re + +from devil.android import device_errors + +logger = logging.getLogger(__name__) + + +class PerfControl(object): + """Provides methods for setting the performance mode of a device.""" + + _AVAILABLE_GOVERNORS_REL_PATH = 'cpufreq/scaling_available_governors' + _CPU_FILE_PATTERN = re.compile(r'^cpu\d+$') + _CPU_PATH = '/sys/devices/system/cpu' + _KERNEL_MAX = '/sys/devices/system/cpu/kernel_max' + + def __init__(self, device): + self._device = device + self._cpu_files = [ + filename + for filename in self._device.ListDirectory(self._CPU_PATH, as_root=True) + if self._CPU_FILE_PATTERN.match(filename)] + assert self._cpu_files, 'Failed to detect CPUs.' + self._cpu_file_list = ' '.join(self._cpu_files) + logger.info('CPUs found: %s', self._cpu_file_list) + + self._have_mpdecision = self._device.FileExists('/system/bin/mpdecision') + + raw = self._ReadEachCpuFile(self._AVAILABLE_GOVERNORS_REL_PATH) + self._available_governors = [ + (cpu, raw_governors.strip().split() if not exit_code else None) + for cpu, raw_governors, exit_code in raw] + + def SetHighPerfMode(self): + """Sets the highest stable performance mode for the device.""" + try: + self._device.EnableRoot() + except device_errors.CommandFailedError: + message = 'Need root for performance mode. Results may be NOISY!!' + logger.warning(message) + # Add an additional warning at exit, such that it's clear that any results + # may be different/noisy (due to the lack of intended performance mode). + atexit.register(logger.warning, message) + return + + product_model = self._device.product_model + # TODO(epenner): Enable on all devices (http://crbug.com/383566) + if 'Nexus 4' == product_model: + self._ForceAllCpusOnline(True) + if not self._AllCpusAreOnline(): + logger.warning('Failed to force CPUs online. Results may be NOISY!') + self.SetScalingGovernor('performance') + elif 'Nexus 5' == product_model: + self._ForceAllCpusOnline(True) + if not self._AllCpusAreOnline(): + logger.warning('Failed to force CPUs online. Results may be NOISY!') + self.SetScalingGovernor('performance') + self._SetScalingMaxFreq(1190400) + self._SetMaxGpuClock(200000000) + else: + self.SetScalingGovernor('performance') + + def SetPerfProfilingMode(self): + """Enables all cores for reliable perf profiling.""" + self._ForceAllCpusOnline(True) + self.SetScalingGovernor('performance') + if not self._AllCpusAreOnline(): + if not self._device.HasRoot(): + raise RuntimeError('Need root to force CPUs online.') + raise RuntimeError('Failed to force CPUs online.') + + def SetDefaultPerfMode(self): + """Sets the performance mode for the device to its default mode.""" + if not self._device.HasRoot(): + return + product_model = self._device.product_model + if 'Nexus 5' == product_model: + if self._AllCpusAreOnline(): + self._SetScalingMaxFreq(2265600) + self._SetMaxGpuClock(450000000) + + governor_mode = { + 'GT-I9300': 'pegasusq', + 'Galaxy Nexus': 'interactive', + 'Nexus 4': 'ondemand', + 'Nexus 5': 'ondemand', + 'Nexus 7': 'interactive', + 'Nexus 10': 'interactive' + }.get(product_model, 'ondemand') + self.SetScalingGovernor(governor_mode) + self._ForceAllCpusOnline(False) + + def GetCpuInfo(self): + online = (output.rstrip() == '1' and status == 0 + for (_, output, status) in self._ForEachCpu('cat "$CPU/online"')) + governor = (output.rstrip() if status == 0 else None + for (_, output, status) + in self._ForEachCpu('cat "$CPU/cpufreq/scaling_governor"')) + return zip(self._cpu_files, online, governor) + + def _ForEachCpu(self, cmd): + script = '; '.join([ + 'for CPU in %s' % self._cpu_file_list, + 'do %s' % cmd, + 'echo -n "%~%$?%~%"', + 'done' + ]) + output = self._device.RunShellCommand( + script, cwd=self._CPU_PATH, check_return=True, as_root=True, shell=True) + output = '\n'.join(output).split('%~%') + return zip(self._cpu_files, output[0::2], (int(c) for c in output[1::2])) + + def _WriteEachCpuFile(self, path, value): + self._ConditionallyWriteEachCpuFile(path, value, condition='true') + + def _ConditionallyWriteEachCpuFile(self, path, value, condition): + template = ( + '{condition} && test -e "$CPU/{path}" && echo {value} > "$CPU/{path}"') + results = self._ForEachCpu( + template.format(path=path, value=value, condition=condition)) + cpus = ' '.join(cpu for (cpu, _, status) in results if status == 0) + if cpus: + logger.info('Successfully set %s to %r on: %s', path, value, cpus) + else: + logger.warning('Failed to set %s to %r on any cpus', path, value) + + def _ReadEachCpuFile(self, path): + return self._ForEachCpu( + 'cat "$CPU/{path}"'.format(path=path)) + + def SetScalingGovernor(self, value): + """Sets the scaling governor to the given value on all possible CPUs. + + This does not attempt to set a governor to a value not reported as available + on the corresponding CPU. + + Args: + value: [string] The new governor value. + """ + condition = 'test -e "{path}" && grep -q {value} {path}'.format( + path=('${CPU}/%s' % self._AVAILABLE_GOVERNORS_REL_PATH), + value=value) + self._ConditionallyWriteEachCpuFile( + 'cpufreq/scaling_governor', value, condition) + + def GetScalingGovernor(self): + """Gets the currently set governor for each CPU. + + Returns: + An iterable of 2-tuples, each containing the cpu and the current + governor. + """ + raw = self._ReadEachCpuFile('cpufreq/scaling_governor') + return [ + (cpu, raw_governor.strip() if not exit_code else None) + for cpu, raw_governor, exit_code in raw] + + def ListAvailableGovernors(self): + """Returns the list of available governors for each CPU. + + Returns: + An iterable of 2-tuples, each containing the cpu and a list of available + governors for that cpu. + """ + return self._available_governors + + def _SetScalingMaxFreq(self, value): + self._WriteEachCpuFile('cpufreq/scaling_max_freq', '%d' % value) + + def _SetMaxGpuClock(self, value): + self._device.WriteFile('/sys/class/kgsl/kgsl-3d0/max_gpuclk', + str(value), + as_root=True) + + def _AllCpusAreOnline(self): + results = self._ForEachCpu('cat "$CPU/online"') + # TODO(epenner): Investigate why file may be missing + # (http://crbug.com/397118) + return all(output.rstrip() == '1' and status == 0 + for (cpu, output, status) in results + if cpu != 'cpu0') + + def _ForceAllCpusOnline(self, force_online): + """Enable all CPUs on a device. + + Some vendors (or only Qualcomm?) hot-plug their CPUs, which can add noise + to measurements: + - In perf, samples are only taken for the CPUs that are online when the + measurement is started. + - The scaling governor can't be set for an offline CPU and frequency scaling + on newly enabled CPUs adds noise to both perf and tracing measurements. + + It appears Qualcomm is the only vendor that hot-plugs CPUs, and on Qualcomm + this is done by "mpdecision". + + """ + if self._have_mpdecision: + cmd = ['stop', 'mpdecision'] if force_online else ['start', 'mpdecision'] + self._device.RunShellCommand(cmd, check_return=True, as_root=True) + + if not self._have_mpdecision and not self._AllCpusAreOnline(): + logger.warning('Unexpected cpu hot plugging detected.') + + if force_online: + self._ForEachCpu('echo 1 > "$CPU/online"') diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/perf/perf_control_devicetest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/perf/perf_control_devicetest.py new file mode 100644 index 0000000..b645803 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/perf/perf_control_devicetest.py @@ -0,0 +1,38 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +# pylint: disable=W0212 + +import os +import sys +import unittest + +sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..')) + +from devil.android import device_test_case +from devil.android import device_utils +from devil.android.perf import perf_control + + +class TestPerfControl(device_test_case.DeviceTestCase): + + def setUp(self): + super(TestPerfControl, self).setUp() + if not os.getenv('BUILDTYPE'): + os.environ['BUILDTYPE'] = 'Debug' + self._device = device_utils.DeviceUtils(self.serial) + + def testHighPerfMode(self): + perf = perf_control.PerfControl(self._device) + try: + perf.SetPerfProfilingMode() + cpu_info = perf.GetCpuInfo() + self.assertEquals(len(perf._cpu_files), len(cpu_info)) + for _, online, governor in cpu_info: + self.assertTrue(online) + self.assertEquals('performance', governor) + finally: + perf.SetDefaultPerfMode() + +if __name__ == '__main__': + unittest.main() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/perf/surface_stats_collector.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/perf/surface_stats_collector.py new file mode 100644 index 0000000..25079f3 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/perf/surface_stats_collector.py @@ -0,0 +1,186 @@ +# Copyright 2013 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import Queue +import threading + + +# Log marker containing SurfaceTexture timestamps. +_SURFACE_TEXTURE_TIMESTAMPS_MESSAGE = 'SurfaceTexture update timestamps' +_SURFACE_TEXTURE_TIMESTAMP_RE = r'\d+' + + +class SurfaceStatsCollector(object): + """Collects surface stats for a SurfaceView from the output of SurfaceFlinger. + + Args: + device: A DeviceUtils instance. + """ + + def __init__(self, device): + self._device = device + self._collector_thread = None + self._surface_before = None + self._get_data_event = None + self._data_queue = None + self._stop_event = None + self._warn_about_empty_data = True + + def DisableWarningAboutEmptyData(self): + self._warn_about_empty_data = False + + def Start(self): + assert not self._collector_thread + + if self._ClearSurfaceFlingerLatencyData(): + self._get_data_event = threading.Event() + self._stop_event = threading.Event() + self._data_queue = Queue.Queue() + self._collector_thread = threading.Thread(target=self._CollectorThread) + self._collector_thread.start() + else: + raise Exception('SurfaceFlinger not supported on this device.') + + def Stop(self): + assert self._collector_thread + (refresh_period, timestamps) = self._GetDataFromThread() + if self._collector_thread: + self._stop_event.set() + self._collector_thread.join() + self._collector_thread = None + return (refresh_period, timestamps) + + def _CollectorThread(self): + last_timestamp = 0 + timestamps = [] + retries = 0 + + while not self._stop_event.is_set(): + self._get_data_event.wait(1) + try: + refresh_period, new_timestamps = self._GetSurfaceFlingerFrameData() + if refresh_period is None or timestamps is None: + retries += 1 + if retries < 3: + continue + if last_timestamp: + # Some data has already been collected, but either the app + # was closed or there's no new data. Signal the main thread and + # wait. + self._data_queue.put((None, None)) + self._stop_event.wait() + break + raise Exception('Unable to get surface flinger latency data') + + timestamps += [timestamp for timestamp in new_timestamps + if timestamp > last_timestamp] + if len(timestamps): + last_timestamp = timestamps[-1] + + if self._get_data_event.is_set(): + self._get_data_event.clear() + self._data_queue.put((refresh_period, timestamps)) + timestamps = [] + except Exception as e: + # On any error, before aborting, put the exception into _data_queue to + # prevent the main thread from waiting at _data_queue.get() infinitely. + self._data_queue.put(e) + raise + + def _GetDataFromThread(self): + self._get_data_event.set() + ret = self._data_queue.get() + if isinstance(ret, Exception): + raise ret + return ret + + def _ClearSurfaceFlingerLatencyData(self): + """Clears the SurfaceFlinger latency data. + + Returns: + True if SurfaceFlinger latency is supported by the device, otherwise + False. + """ + # The command returns nothing if it is supported, otherwise returns many + # lines of result just like 'dumpsys SurfaceFlinger'. + results = self._device.RunShellCommand( + ['dumpsys', 'SurfaceFlinger', '--latency-clear', 'SurfaceView'], + check_return=True) + return not len(results) + + def GetSurfaceFlingerPid(self): + pids_dict = self._device.GetPids('surfaceflinger') + if not pids_dict: + raise Exception('Unable to get surface flinger process id') + # TODO(cataput:#3378): Do more strict checks in GetPids when possible. + # For now it just returns the first pid found of some matching process. + return pids_dict.popitem()[1][0] + + def _GetSurfaceFlingerFrameData(self): + """Returns collected SurfaceFlinger frame timing data. + + Returns: + A tuple containing: + - The display's nominal refresh period in milliseconds. + - A list of timestamps signifying frame presentation times in + milliseconds. + The return value may be (None, None) if there was no data collected (for + example, if the app was closed before the collector thread has finished). + """ + # adb shell dumpsys SurfaceFlinger --latency <window name> + # prints some information about the last 128 frames displayed in + # that window. + # The data returned looks like this: + # 16954612 + # 7657467895508 7657482691352 7657493499756 + # 7657484466553 7657499645964 7657511077881 + # 7657500793457 7657516600576 7657527404785 + # (...) + # + # The first line is the refresh period (here 16.95 ms), it is followed + # by 128 lines w/ 3 timestamps in nanosecond each: + # A) when the app started to draw + # B) the vsync immediately preceding SF submitting the frame to the h/w + # C) timestamp immediately after SF submitted that frame to the h/w + # + # The difference between the 1st and 3rd timestamp is the frame-latency. + # An interesting data is when the frame latency crosses a refresh period + # boundary, this can be calculated this way: + # + # ceil((C - A) / refresh-period) + # + # (each time the number above changes, we have a "jank"). + # If this happens a lot during an animation, the animation appears + # janky, even if it runs at 60 fps in average. + # + # We use the special "SurfaceView" window name because the statistics for + # the activity's main window are not updated when the main web content is + # composited into a SurfaceView. + results = self._device.RunShellCommand( + ['dumpsys', 'SurfaceFlinger', '--latency', 'SurfaceView'], + check_return=True) + if not len(results): + return (None, None) + + timestamps = [] + nanoseconds_per_millisecond = 1e6 + refresh_period = long(results[0]) / nanoseconds_per_millisecond + + # If a fence associated with a frame is still pending when we query the + # latency data, SurfaceFlinger gives the frame a timestamp of INT64_MAX. + # Since we only care about completed frames, we will ignore any timestamps + # with this value. + pending_fence_timestamp = (1 << 63) - 1 + + for line in results[1:]: + fields = line.split() + if len(fields) != 3: + continue + timestamp = long(fields[1]) + if timestamp == pending_fence_timestamp: + continue + timestamp /= nanoseconds_per_millisecond + timestamps.append(timestamp) + + return (refresh_period, timestamps) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/perf/thermal_throttle.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/perf/thermal_throttle.py new file mode 100644 index 0000000..546a92e --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/perf/thermal_throttle.py @@ -0,0 +1,135 @@ +# Copyright 2013 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import logging + +logger = logging.getLogger(__name__) + + +class OmapThrottlingDetector(object): + """Class to detect and track thermal throttling on an OMAP 4.""" + OMAP_TEMP_FILE = ('/sys/devices/platform/omap/omap_temp_sensor.0/' + 'temperature') + + @staticmethod + def IsSupported(device): + return device.FileExists(OmapThrottlingDetector.OMAP_TEMP_FILE) + + def __init__(self, device): + self._device = device + + @staticmethod + def BecameThrottled(log_line): + return 'omap_thermal_throttle' in log_line + + @staticmethod + def BecameUnthrottled(log_line): + return 'omap_thermal_unthrottle' in log_line + + @staticmethod + def GetThrottlingTemperature(log_line): + if 'throttle_delayed_work_fn' in log_line: + return float([s for s in log_line.split() if s.isdigit()][0]) / 1000.0 + + def GetCurrentTemperature(self): + tempdata = self._device.ReadFile(OmapThrottlingDetector.OMAP_TEMP_FILE) + return float(tempdata) / 1000.0 + + +class ExynosThrottlingDetector(object): + """Class to detect and track thermal throttling on an Exynos 5.""" + @staticmethod + def IsSupported(device): + return device.FileExists('/sys/bus/exynos5-core') + + def __init__(self, device): + pass + + @staticmethod + def BecameThrottled(log_line): + return 'exynos_tmu: Throttling interrupt' in log_line + + @staticmethod + def BecameUnthrottled(log_line): + return 'exynos_thermal_unthrottle: not throttling' in log_line + + @staticmethod + def GetThrottlingTemperature(_log_line): + return None + + @staticmethod + def GetCurrentTemperature(): + return None + + +class ThermalThrottle(object): + """Class to detect and track thermal throttling. + + Usage: + Wait for IsThrottled() to be False before running test + After running test call HasBeenThrottled() to find out if the + test run was affected by thermal throttling. + """ + + def __init__(self, device): + self._device = device + self._throttled = False + self._detector = None + if OmapThrottlingDetector.IsSupported(device): + self._detector = OmapThrottlingDetector(device) + elif ExynosThrottlingDetector.IsSupported(device): + self._detector = ExynosThrottlingDetector(device) + + def HasBeenThrottled(self): + """True if there has been any throttling since the last call to + HasBeenThrottled or IsThrottled. + """ + return self._ReadLog() + + def IsThrottled(self): + """True if currently throttled.""" + self._ReadLog() + return self._throttled + + def _ReadLog(self): + if not self._detector: + return False + has_been_throttled = False + serial_number = str(self._device) + log = self._device.RunShellCommand( + ['dmesg', '-c'], large_output=True, check_return=True) + degree_symbol = unichr(0x00B0) + for line in log: + if self._detector.BecameThrottled(line): + if not self._throttled: + logger.warning('>>> Device %s thermally throttled', serial_number) + self._throttled = True + has_been_throttled = True + elif self._detector.BecameUnthrottled(line): + if self._throttled: + logger.warning('>>> Device %s thermally unthrottled', serial_number) + self._throttled = False + has_been_throttled = True + temperature = self._detector.GetThrottlingTemperature(line) + if temperature is not None: + logger.info(u'Device %s thermally throttled at %3.1f%sC', + serial_number, temperature, degree_symbol) + + if logger.isEnabledFor(logging.DEBUG): + # Print current temperature of CPU SoC. + temperature = self._detector.GetCurrentTemperature() + if temperature is not None: + logger.debug(u'Current SoC temperature of %s = %3.1f%sC', + serial_number, temperature, degree_symbol) + + # Print temperature of battery, to give a system temperature + dumpsys_log = self._device.RunShellCommand( + ['dumpsys', 'battery'], check_return=True) + for line in dumpsys_log: + if 'temperature' in line: + btemp = float([s for s in line.split() if s.isdigit()][0]) / 10.0 + logger.debug(u'Current battery temperature of %s = %3.1f%sC', + serial_number, btemp, degree_symbol) + + return has_been_throttled diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/ports.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/ports.py new file mode 100644 index 0000000..1d4e5f2 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/ports.py @@ -0,0 +1,178 @@ +# Copyright (c) 2012 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Functions that deal with local and device ports.""" + +import contextlib +import fcntl +import httplib +import logging +import os +import socket +import traceback + +logger = logging.getLogger(__name__) + +# The net test server is started from port 10201. +_TEST_SERVER_PORT_FIRST = 10201 +_TEST_SERVER_PORT_LAST = 30000 +# A file to record next valid port of test server. +_TEST_SERVER_PORT_FILE = '/tmp/test_server_port' +_TEST_SERVER_PORT_LOCKFILE = '/tmp/test_server_port.lock' + + +# The following two methods are used to allocate the port source for various +# types of test servers. Because some net-related tests can be run on shards at +# same time, it's important to have a mechanism to allocate the port +# process-safe. In here, we implement the safe port allocation by leveraging +# flock. +def ResetTestServerPortAllocation(): + """Resets the port allocation to start from TEST_SERVER_PORT_FIRST. + + Returns: + Returns True if reset successes. Otherwise returns False. + """ + try: + with open(_TEST_SERVER_PORT_FILE, 'w') as fp: + fp.write('%d' % _TEST_SERVER_PORT_FIRST) + return True + except Exception: # pylint: disable=broad-except + logger.exception('Error while resetting port allocation') + return False + + +def AllocateTestServerPort(): + """Allocates a port incrementally. + + Returns: + Returns a valid port which should be in between TEST_SERVER_PORT_FIRST and + TEST_SERVER_PORT_LAST. Returning 0 means no more valid port can be used. + """ + port = 0 + ports_tried = [] + try: + fp_lock = open(_TEST_SERVER_PORT_LOCKFILE, 'w') + fcntl.flock(fp_lock, fcntl.LOCK_EX) + # Get current valid port and calculate next valid port. + if not os.path.exists(_TEST_SERVER_PORT_FILE): + ResetTestServerPortAllocation() + with open(_TEST_SERVER_PORT_FILE, 'r+') as fp: + port = int(fp.read()) + ports_tried.append(port) + while not IsHostPortAvailable(port): + port += 1 + ports_tried.append(port) + if (port > _TEST_SERVER_PORT_LAST or + port < _TEST_SERVER_PORT_FIRST): + port = 0 + else: + fp.seek(0, os.SEEK_SET) + fp.write('%d' % (port + 1)) + except Exception: # pylint: disable=broad-except + logger.exception('Error while allocating port') + finally: + if fp_lock: + fcntl.flock(fp_lock, fcntl.LOCK_UN) + fp_lock.close() + if port: + logger.info('Allocate port %d for test server.', port) + else: + logger.error('Could not allocate port for test server. ' + 'List of ports tried: %s', str(ports_tried)) + return port + + +def IsHostPortAvailable(host_port): + """Checks whether the specified host port is available. + + Args: + host_port: Port on host to check. + + Returns: + True if the port on host is available, otherwise returns False. + """ + s = socket.socket() + try: + s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + s.bind(('', host_port)) + s.close() + return True + except socket.error: + return False + + +def IsDevicePortUsed(device, device_port, state=''): + """Checks whether the specified device port is used or not. + + Args: + device: A DeviceUtils instance. + device_port: Port on device we want to check. + state: String of the specified state. Default is empty string, which + means any state. + + Returns: + True if the port on device is already used, otherwise returns False. + """ + base_urls = ('127.0.0.1:%d' % device_port, 'localhost:%d' % device_port) + netstat_results = device.RunShellCommand( + ['netstat', '-a'], check_return=True, large_output=True) + for single_connect in netstat_results: + # Column 3 is the local address which we want to check with. + connect_results = single_connect.split() + if connect_results[0] != 'tcp': + continue + if len(connect_results) < 6: + raise Exception('Unexpected format while parsing netstat line: ' + + single_connect) + is_state_match = connect_results[5] == state if state else True + if connect_results[3] in base_urls and is_state_match: + return True + return False + + +def IsHttpServerConnectable(host, port, tries=3, command='GET', path='/', + expected_read='', timeout=2): + """Checks whether the specified http server is ready to serve request or not. + + Args: + host: Host name of the HTTP server. + port: Port number of the HTTP server. + tries: How many times we want to test the connection. The default value is + 3. + command: The http command we use to connect to HTTP server. The default + command is 'GET'. + path: The path we use when connecting to HTTP server. The default path is + '/'. + expected_read: The content we expect to read from the response. The default + value is ''. + timeout: Timeout (in seconds) for each http connection. The default is 2s. + + Returns: + Tuple of (connect status, client error). connect status is a boolean value + to indicate whether the server is connectable. client_error is the error + message the server returns when connect status is false. + """ + assert tries >= 1 + for i in xrange(0, tries): + client_error = None + try: + with contextlib.closing(httplib.HTTPConnection( + host, port, timeout=timeout)) as http: + # Output some debug information when we have tried more than 2 times. + http.set_debuglevel(i >= 2) + http.request(command, path) + r = http.getresponse() + content = r.read() + if r.status == 200 and r.reason == 'OK' and content == expected_read: + return (True, '') + client_error = ('Bad response: %s %s version %s\n ' % + (r.status, r.reason, r.version) + + '\n '.join([': '.join(h) for h in r.getheaders()])) + except (httplib.HTTPException, socket.error) as e: + # Probably too quick connecting: try again. + exception_error_msgs = traceback.format_exception_only(type(e), e) + if exception_error_msgs: + client_error = ''.join(exception_error_msgs) + # Only returns last client_error. + return (False, client_error or 'Timeout') diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/__init__.py new file mode 100644 index 0000000..f95d3b2 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/__init__.py @@ -0,0 +1,6 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# This package is intended for modules that are very tightly coupled to +# tools or APIs from the Android SDK. diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/aapt.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/aapt.py new file mode 100644 index 0000000..7ae3a93 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/aapt.py @@ -0,0 +1,43 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""This module wraps the Android Asset Packaging Tool.""" + +from devil.android.sdk import build_tools +from devil.utils import cmd_helper +from devil.utils import lazy + + +_aapt_path = lazy.WeakConstant(lambda: build_tools.GetPath('aapt')) + + +def _RunAaptCmd(args): + """Runs an aapt command. + + Args: + args: A list of arguments for aapt. + + Returns: + The output of the command. + """ + cmd = [_aapt_path.read()] + args + status, output = cmd_helper.GetCmdStatusAndOutput(cmd) + if status != 0: + raise Exception('Failed running aapt command: "%s" with output "%s".' % + (' '.join(cmd), output)) + return output + + +def Dump(what, apk, assets=None): + """Returns the output of the aapt dump command. + + Args: + what: What you want to dump. + apk: Path to apk you want to dump information for. + assets: List of assets in apk you want to dump information for. + """ + assets = assets or [] + if isinstance(assets, basestring): + assets = [assets] + return _RunAaptCmd(['dump', what, apk] + assets).splitlines() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/adb_compatibility_devicetest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/adb_compatibility_devicetest.py new file mode 100644 index 0000000..cbe2a1b --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/adb_compatibility_devicetest.py @@ -0,0 +1,230 @@ +#!/usr/bin/env python +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import contextlib +import os +import posixpath +import random +import signal +import sys +import unittest + +_CATAPULT_BASE_DIR = os.path.abspath(os.path.join( + os.path.dirname(__file__), '..', '..', '..', '..')) + +sys.path.append(os.path.join(_CATAPULT_BASE_DIR, 'devil')) +from devil import devil_env +from devil.android import device_errors +from devil.android import device_test_case +from devil.android.sdk import adb_wrapper +from devil.utils import cmd_helper +from devil.utils import timeout_retry + + +_TEST_DATA_DIR = os.path.abspath(os.path.join( + os.path.dirname(__file__), 'test', 'data')) + + +def _hostAdbPids(): + ps_status, ps_output = cmd_helper.GetCmdStatusAndOutput( + ['pgrep', '-l', 'adb']) + if ps_status != 0: + return [] + + pids_and_names = (line.split() for line in ps_output.splitlines()) + return [int(pid) for pid, name in pids_and_names + if name == 'adb'] + + +class AdbCompatibilityTest(device_test_case.DeviceTestCase): + + @classmethod + def setUpClass(cls): + custom_adb_path = os.environ.get('ADB_PATH') + custom_deps = { + 'config_type': 'BaseConfig', + 'dependencies': {}, + } + if custom_adb_path: + custom_deps['dependencies']['adb'] = { + 'file_info': { + devil_env.GetPlatform(): { + 'local_paths': [custom_adb_path], + }, + }, + } + devil_env.config.Initialize(configs=[custom_deps]) + + def testStartServer(self): + # Manually kill off any instances of adb. + adb_pids = _hostAdbPids() + for p in adb_pids: + os.kill(p, signal.SIGKILL) + + self.assertIsNotNone( + timeout_retry.WaitFor( + lambda: not _hostAdbPids(), wait_period=0.1, max_tries=10)) + + # start the adb server + start_server_status, _ = cmd_helper.GetCmdStatusAndOutput( + [adb_wrapper.AdbWrapper.GetAdbPath(), 'start-server']) + + # verify that the server is now online + self.assertEquals(0, start_server_status) + self.assertIsNotNone( + timeout_retry.WaitFor( + lambda: bool(_hostAdbPids()), wait_period=0.1, max_tries=10)) + + def testKillServer(self): + adb_pids = _hostAdbPids() + if not adb_pids: + adb_wrapper.AdbWrapper.StartServer() + + adb_pids = _hostAdbPids() + self.assertGreaterEqual(len(adb_pids), 1) + + kill_server_status, _ = cmd_helper.GetCmdStatusAndOutput( + [adb_wrapper.AdbWrapper.GetAdbPath(), 'kill-server']) + self.assertEqual(0, kill_server_status) + + adb_pids = _hostAdbPids() + self.assertEqual(0, len(adb_pids)) + + def testDevices(self): + devices = adb_wrapper.AdbWrapper.Devices() + self.assertNotEqual(0, len(devices), 'No devices found.') + + def getTestInstance(self): + """Creates a real AdbWrapper instance for testing.""" + return adb_wrapper.AdbWrapper(self.serial) + + def testShell(self): + under_test = self.getTestInstance() + shell_ls_result = under_test.Shell('ls') + self.assertIsInstance(shell_ls_result, str) + self.assertTrue(bool(shell_ls_result)) + + def testShell_failed(self): + under_test = self.getTestInstance() + with self.assertRaises(device_errors.AdbShellCommandFailedError): + under_test.Shell('ls /foo/bar/baz') + + def testShell_externalStorageDefined(self): + under_test = self.getTestInstance() + external_storage = under_test.Shell('echo $EXTERNAL_STORAGE') + self.assertIsInstance(external_storage, str) + self.assertTrue(posixpath.isabs(external_storage)) + + @contextlib.contextmanager + def getTestPushDestination(self, under_test): + """Creates a temporary directory suitable for pushing to.""" + external_storage = under_test.Shell('echo $EXTERNAL_STORAGE').strip() + if not external_storage: + self.skipTest('External storage not available.') + while True: + random_hex = hex(random.randint(0, 2 ** 52))[2:] + name = 'tmp_push_test%s' % random_hex + path = posixpath.join(external_storage, name) + try: + under_test.Shell('ls %s' % path) + except device_errors.AdbShellCommandFailedError: + break + under_test.Shell('mkdir %s' % path) + try: + yield path + finally: + under_test.Shell('rm -rf %s' % path) + + def testPush_fileToFile(self): + under_test = self.getTestInstance() + with self.getTestPushDestination(under_test) as push_target_directory: + src = os.path.join(_TEST_DATA_DIR, 'push_file.txt') + dest = posixpath.join(push_target_directory, 'push_file.txt') + with self.assertRaises(device_errors.AdbShellCommandFailedError): + under_test.Shell('ls %s' % dest) + under_test.Push(src, dest) + self.assertEquals(dest, under_test.Shell('ls %s' % dest).strip()) + + def testPush_fileToDirectory(self): + under_test = self.getTestInstance() + with self.getTestPushDestination(under_test) as push_target_directory: + src = os.path.join(_TEST_DATA_DIR, 'push_file.txt') + dest = push_target_directory + resulting_file = posixpath.join(dest, 'push_file.txt') + with self.assertRaises(device_errors.AdbShellCommandFailedError): + under_test.Shell('ls %s' % resulting_file) + under_test.Push(src, dest) + self.assertEquals( + resulting_file, + under_test.Shell('ls %s' % resulting_file).strip()) + + def testPush_directoryToDirectory(self): + under_test = self.getTestInstance() + with self.getTestPushDestination(under_test) as push_target_directory: + src = os.path.join(_TEST_DATA_DIR, 'push_directory') + dest = posixpath.join(push_target_directory, 'push_directory') + with self.assertRaises(device_errors.AdbShellCommandFailedError): + under_test.Shell('ls %s' % dest) + under_test.Push(src, dest) + self.assertEquals( + sorted(os.listdir(src)), + sorted(under_test.Shell('ls %s' % dest).strip().split())) + + def testPush_directoryToExistingDirectory(self): + under_test = self.getTestInstance() + with self.getTestPushDestination(under_test) as push_target_directory: + src = os.path.join(_TEST_DATA_DIR, 'push_directory') + dest = push_target_directory + resulting_directory = posixpath.join(dest, 'push_directory') + with self.assertRaises(device_errors.AdbShellCommandFailedError): + under_test.Shell('ls %s' % resulting_directory) + under_test.Shell('mkdir %s' % resulting_directory) + under_test.Push(src, dest) + self.assertEquals( + sorted(os.listdir(src)), + sorted(under_test.Shell('ls %s' % resulting_directory).split())) + + # TODO(jbudorick): Implement tests for the following: + # taskset -c + # devices [-l] + # pull + # shell + # ls + # logcat [-c] [-d] [-v] [-b] + # forward [--remove] [--list] + # jdwp + # install [-l] [-r] [-s] [-d] + # install-multiple [-l] [-r] [-s] [-d] [-p] + # uninstall [-k] + # backup -f [-apk] [-shared] [-nosystem] [-all] + # restore + # wait-for-device + # get-state (BROKEN IN THE M SDK) + # get-devpath + # remount + # reboot + # reboot-bootloader + # root + # emu + + @classmethod + def tearDownClass(cls): + print + print + print 'tested %s' % adb_wrapper.AdbWrapper.GetAdbPath() + print ' %s' % adb_wrapper.AdbWrapper.Version() + print 'connected devices:' + try: + for d in adb_wrapper.AdbWrapper.Devices(): + print ' %s' % d + except device_errors.AdbCommandFailedError: + print ' <failed to list devices>' + raise + finally: + print + + +if __name__ == '__main__': + sys.exit(unittest.main()) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/adb_wrapper.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/adb_wrapper.py new file mode 100644 index 0000000..e2ca013 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/adb_wrapper.py @@ -0,0 +1,923 @@ +# Copyright 2013 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""This module wraps Android's adb tool. + +This is a thin wrapper around the adb interface. Any additional complexity +should be delegated to a higher level (ex. DeviceUtils). +""" + +import collections +import distutils.version +import errno +import logging +import os +import posixpath +import re +import subprocess + +from devil import devil_env +from devil.android import decorators +from devil.android import device_errors +from devil.utils import cmd_helper +from devil.utils import lazy +from devil.utils import timeout_retry + +with devil_env.SysPath(devil_env.DEPENDENCY_MANAGER_PATH): + import dependency_manager # pylint: disable=import-error + +logger = logging.getLogger(__name__) + + +ADB_KEYS_FILE = '/data/misc/adb/adb_keys' + +DEFAULT_TIMEOUT = 30 +DEFAULT_RETRIES = 2 + +_ADB_VERSION_RE = re.compile(r'Android Debug Bridge version (\d+\.\d+\.\d+)') +_EMULATOR_RE = re.compile(r'^emulator-[0-9]+$') +_DEVICE_NOT_FOUND_RE = re.compile(r"error: device '(?P<serial>.+)' not found") +_READY_STATE = 'device' +_VERITY_DISABLE_RE = re.compile(r'Verity (already )?disabled') +_VERITY_ENABLE_RE = re.compile(r'Verity (already )?enabled') + + +def VerifyLocalFileExists(path): + """Verifies a local file exists. + + Args: + path: Path to the local file. + + Raises: + IOError: If the file doesn't exist. + """ + if not os.path.exists(path): + raise IOError(errno.ENOENT, os.strerror(errno.ENOENT), path) + + +def _FindAdb(): + try: + return devil_env.config.LocalPath('adb') + except dependency_manager.NoPathFoundError: + pass + + try: + return os.path.join(devil_env.config.LocalPath('android_sdk'), + 'platform-tools', 'adb') + except dependency_manager.NoPathFoundError: + pass + + try: + return devil_env.config.FetchPath('adb') + except dependency_manager.NoPathFoundError: + raise device_errors.NoAdbError() + + +def _GetVersion(): + # pylint: disable=protected-access + raw_version = AdbWrapper._RunAdbCmd(['version'], timeout=2, retries=0) + for l in raw_version.splitlines(): + m = _ADB_VERSION_RE.search(l) + if m: + return m.group(1) + return None + + +def _ShouldRetryAdbCmd(exc): + return not isinstance(exc, device_errors.NoAdbError) + + +DeviceStat = collections.namedtuple('DeviceStat', + ['st_mode', 'st_size', 'st_time']) + + +def _IsExtraneousLine(line, send_cmd): + """Determine if a line read from stdout in persistent shell is extraneous. + + The results output to stdout by the persistent shell process + (in PersistentShell below) often include "extraneous" lines that are + not part of the output of the shell command. These "extraneous" lines + do not always appear and are of two forms: shell prompt lines and lines + that just duplicate what the input command was. This function + detects these extraneous lines. Since all these lines have the + original command in them, that is what it detects ror. + + Args: + line: Output line to check. + send_cmd: Command that was sent to adb persistent shell. + """ + return send_cmd.rstrip() in line + + +class AdbWrapper(object): + """A wrapper around a local Android Debug Bridge executable.""" + + _adb_path = lazy.WeakConstant(_FindAdb) + _adb_version = lazy.WeakConstant(_GetVersion) + + def __init__(self, device_serial): + """Initializes the AdbWrapper. + + Args: + device_serial: The device serial number as a string. + """ + if not device_serial: + raise ValueError('A device serial must be specified') + self._device_serial = str(device_serial) + + class PersistentShell(object): + '''Class to use persistent shell for ADB. + + This class allows a persistent ADB shell to be created, where multiple + commands can be passed into it. This avoids the overhead of starting + up a new ADB shell for each command. + + Example of use: + with PersistentShell('123456789') as pshell: + pshell.RunCommand('which ls') + pshell.RunCommand('echo TEST', close=True) + ''' + def __init__(self, serial): + """Initialization function: + + Args: + serial: Serial number of device. + """ + self._cmd = [AdbWrapper.GetAdbPath(), '-s', serial, 'shell'] + self._process = None + + def __enter__(self): + self.Start() + self.WaitForReady() + return self + + def __exit__(self, exc_type, exc_value, tb): + self.Stop() + + def Start(self): + """Start the shell.""" + if self._process is not None: + raise RuntimeError('Persistent shell already running.') + self._process = subprocess.Popen(self._cmd, + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + shell=False) + + def WaitForReady(self): + """Wait for the shell to be ready after starting. + + Sends an echo command, then waits until it gets a response. + """ + self._process.stdin.write('echo\n') + output_line = self._process.stdout.readline() + while output_line.rstrip() != '': + output_line = self._process.stdout.readline() + + def RunCommand(self, command, close=False): + """Runs an ADB command and returns the output. + + Note that there can be approximately 40 ms of additional latency + between sending the command and receiving the results if close=False + due to the use of Nagle's algorithm in the TCP socket between the + adb server and client. To avoid this extra latency, set close=True. + + Args: + command: Command to send. + Returns: + The command output, given as a list of lines, and the exit code + """ + + if close: + def run_cmd(cmd): + send_cmd = '( %s ); echo $?; exit;\n' % cmd.rstrip() + (output, _) = self._process.communicate(send_cmd) + self._process = None + for x in output.splitlines(): + yield x + + else: + def run_cmd(cmd): + send_cmd = '( %s ); echo DONE:$?;\n' % cmd.rstrip() + self._process.stdin.write(send_cmd) + while True: + output_line = self._process.stdout.readline().rstrip() + if output_line[:5] == 'DONE:': + yield output_line[5:] + break + yield output_line + + result = [line for line in run_cmd(command) + if not _IsExtraneousLine(line, command)] + + return (result[:-1], int(result[-1])) + + def Stop(self): + """Stops the ADB process if it is still running.""" + if self._process is not None: + self._process.stdin.write('exit\n') + self._process = None + + @classmethod + def GetAdbPath(cls): + return cls._adb_path.read() + + @classmethod + def Version(cls): + return cls._adb_version.read() + + @classmethod + def _BuildAdbCmd(cls, args, device_serial, cpu_affinity=None): + if cpu_affinity is not None: + cmd = ['taskset', '-c', str(cpu_affinity)] + else: + cmd = [] + cmd.append(cls.GetAdbPath()) + if device_serial is not None: + cmd.extend(['-s', device_serial]) + cmd.extend(args) + return cmd + + # pylint: disable=unused-argument + @classmethod + @decorators.WithTimeoutAndConditionalRetries(_ShouldRetryAdbCmd) + def _RunAdbCmd(cls, args, timeout=None, retries=None, device_serial=None, + check_error=True, cpu_affinity=None): + # pylint: disable=no-member + try: + status, output = cmd_helper.GetCmdStatusAndOutputWithTimeout( + cls._BuildAdbCmd(args, device_serial, cpu_affinity=cpu_affinity), + timeout_retry.CurrentTimeoutThreadGroup().GetRemainingTime()) + except OSError as e: + if e.errno in (errno.ENOENT, errno.ENOEXEC): + raise device_errors.NoAdbError(msg=str(e)) + else: + raise + + # Best effort to catch errors from adb; unfortunately adb is very + # inconsistent with error reporting so many command failures present + # differently. + if status != 0 or (check_error and output.startswith('error:')): + m = _DEVICE_NOT_FOUND_RE.match(output) + if m is not None and m.group('serial') == device_serial: + raise device_errors.DeviceUnreachableError(device_serial) + else: + raise device_errors.AdbCommandFailedError( + args, output, status, device_serial) + + return output + # pylint: enable=unused-argument + + def _RunDeviceAdbCmd(self, args, timeout, retries, check_error=True): + """Runs an adb command on the device associated with this object. + + Args: + args: A list of arguments to adb. + timeout: Timeout in seconds. + retries: Number of retries. + check_error: Check that the command doesn't return an error message. This + does NOT check the exit status of shell commands. + + Returns: + The output of the command. + """ + return self._RunAdbCmd(args, timeout=timeout, retries=retries, + device_serial=self._device_serial, + check_error=check_error) + + def _IterRunDeviceAdbCmd(self, args, iter_timeout, timeout): + """Runs an adb command and returns an iterator over its output lines. + + Args: + args: A list of arguments to adb. + iter_timeout: Timeout for each iteration in seconds. + timeout: Timeout for the entire command in seconds. + + Yields: + The output of the command line by line. + """ + return cmd_helper.IterCmdOutputLines( + self._BuildAdbCmd(args, self._device_serial), + iter_timeout=iter_timeout, + timeout=timeout) + + def __eq__(self, other): + """Consider instances equal if they refer to the same device. + + Args: + other: The instance to compare equality with. + + Returns: + True if the instances are considered equal, false otherwise. + """ + return self._device_serial == str(other) + + def __str__(self): + """The string representation of an instance. + + Returns: + The device serial number as a string. + """ + return self._device_serial + + def __repr__(self): + return '%s(\'%s\')' % (self.__class__.__name__, self) + + # pylint: disable=unused-argument + @classmethod + def IsServerOnline(cls): + status, output = cmd_helper.GetCmdStatusAndOutput(['pgrep', 'adb']) + output = [int(x) for x in output.split()] + logger.info('PIDs for adb found: %r', output) + return status == 0 + # pylint: enable=unused-argument + + @classmethod + def KillServer(cls, timeout=DEFAULT_TIMEOUT, retries=DEFAULT_RETRIES): + cls._RunAdbCmd(['kill-server'], timeout=timeout, retries=retries) + + @classmethod + def StartServer(cls, timeout=DEFAULT_TIMEOUT, retries=DEFAULT_RETRIES): + # CPU affinity is used to reduce adb instability http://crbug.com/268450 + cls._RunAdbCmd(['start-server'], timeout=timeout, retries=retries, + cpu_affinity=0) + + @classmethod + def GetDevices(cls, timeout=DEFAULT_TIMEOUT, retries=DEFAULT_RETRIES): + """DEPRECATED. Refer to Devices(...) below.""" + # TODO(jbudorick): Remove this function once no more clients are using it. + return cls.Devices(timeout=timeout, retries=retries) + + @classmethod + def Devices(cls, desired_state=_READY_STATE, long_list=False, + timeout=DEFAULT_TIMEOUT, retries=DEFAULT_RETRIES): + """Get the list of active attached devices. + + Args: + desired_state: If not None, limit the devices returned to only those + in the given state. + long_list: Whether to use the long listing format. + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. + + Yields: + AdbWrapper instances. + """ + lines = cls._RawDevices(long_list=long_list, timeout=timeout, + retries=retries) + if long_list: + return [ + [AdbWrapper(line[0])] + line[1:] + for line in lines + if (len(line) >= 2 and (not desired_state or line[1] == desired_state)) + ] + else: + return [ + AdbWrapper(line[0]) + for line in lines + if (len(line) == 2 and (not desired_state or line[1] == desired_state)) + ] + + @classmethod + def _RawDevices(cls, long_list=False, timeout=DEFAULT_TIMEOUT, + retries=DEFAULT_RETRIES): + cmd = ['devices'] + if long_list: + cmd.append('-l') + output = cls._RunAdbCmd(cmd, timeout=timeout, retries=retries) + return [line.split() for line in output.splitlines()[1:]] + + def GetDeviceSerial(self): + """Gets the device serial number associated with this object. + + Returns: + Device serial number as a string. + """ + return self._device_serial + + def Push(self, local, remote, timeout=60 * 5, retries=DEFAULT_RETRIES): + """Pushes a file from the host to the device. + + Args: + local: Path on the host filesystem. + remote: Path on the device filesystem. + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. + """ + VerifyLocalFileExists(local) + + if (distutils.version.LooseVersion(self.Version()) < + distutils.version.LooseVersion('1.0.36')): + + # Different versions of adb handle pushing a directory to an existing + # directory differently. + + # In the version packaged with the M SDK, 1.0.32, the following push: + # foo/bar -> /sdcard/foo/bar + # where bar is an existing directory both on the host and the device + # results in the contents of bar/ on the host being pushed to bar/ on + # the device, i.e. + # foo/bar/A -> /sdcard/foo/bar/A + # foo/bar/B -> /sdcard/foo/bar/B + # ... etc. + + # In the version packaged with the N SDK, 1.0.36, the same push under + # the same conditions results in a second bar/ directory being created + # underneath the first bar/ directory on the device, i.e. + # foo/bar/A -> /sdcard/foo/bar/bar/A + # foo/bar/B -> /sdcard/foo/bar/bar/B + # ... etc. + + # In order to provide a consistent interface to clients, we check whether + # the target is an existing directory on the device and, if so, modifies + # the target passed to adb to emulate the behavior on 1.0.36 and above. + + # Note that this behavior may have started before 1.0.36; that's simply + # the earliest version we've confirmed thus far. + + try: + self.Shell('test -d %s' % remote, timeout=timeout, retries=retries) + remote = posixpath.join(remote, posixpath.basename(local)) + except device_errors.AdbShellCommandFailedError: + # The target directory doesn't exist on the device, so we can use it + # without modification. + pass + + self._RunDeviceAdbCmd(['push', local, remote], timeout, retries) + + def Pull(self, remote, local, timeout=60 * 5, retries=DEFAULT_RETRIES): + """Pulls a file from the device to the host. + + Args: + remote: Path on the device filesystem. + local: Path on the host filesystem. + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. + """ + cmd = ['pull', remote, local] + self._RunDeviceAdbCmd(cmd, timeout, retries) + try: + VerifyLocalFileExists(local) + except IOError: + raise device_errors.AdbCommandFailedError( + cmd, + 'File pulled from the device did not arrive on the host: %s' % local, + device_serial=str(self)) + + def Shell(self, command, expect_status=0, timeout=DEFAULT_TIMEOUT, + retries=DEFAULT_RETRIES): + """Runs a shell command on the device. + + Args: + command: A string with the shell command to run. + expect_status: (optional) Check that the command's exit status matches + this value. Default is 0. If set to None the test is skipped. + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. + + Returns: + The output of the shell command as a string. + + Raises: + device_errors.AdbCommandFailedError: If the exit status doesn't match + |expect_status|. + """ + if expect_status is None: + args = ['shell', command] + else: + args = ['shell', '( %s );echo %%$?' % command.rstrip()] + output = self._RunDeviceAdbCmd(args, timeout, retries, check_error=False) + if expect_status is not None: + output_end = output.rfind('%') + if output_end < 0: + # causes the status string to become empty and raise a ValueError + output_end = len(output) + + try: + status = int(output[output_end + 1:]) + except ValueError: + logger.warning('exit status of shell command %r missing.', command) + raise device_errors.AdbShellCommandFailedError( + command, output, status=None, device_serial=self._device_serial) + output = output[:output_end] + if status != expect_status: + raise device_errors.AdbShellCommandFailedError( + command, output, status=status, device_serial=self._device_serial) + return output + + def IterShell(self, command, timeout): + """Runs a shell command and returns an iterator over its output lines. + + Args: + command: A string with the shell command to run. + timeout: Timeout in seconds. + + Yields: + The output of the command line by line. + """ + args = ['shell', command] + return cmd_helper.IterCmdOutputLines( + self._BuildAdbCmd(args, self._device_serial), timeout=timeout) + + def Ls(self, path, timeout=DEFAULT_TIMEOUT, retries=DEFAULT_RETRIES): + """List the contents of a directory on the device. + + Args: + path: Path on the device filesystem. + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. + + Returns: + A list of pairs (filename, stat) for each file found in the directory, + where the stat object has the properties: st_mode, st_size, and st_time. + + Raises: + AdbCommandFailedError if |path| does not specify a valid and accessible + directory in the device, or the output of "adb ls" command is less + than four columns + """ + def ParseLine(line, cmd): + cols = line.split(None, 3) + if len(cols) < 4: + raise device_errors.AdbCommandFailedError( + cmd, line, "the output should be 4 columns, but is only %d columns" + % len(cols), device_serial=self._device_serial) + filename = cols.pop() + stat = DeviceStat(*[int(num, base=16) for num in cols]) + return (filename, stat) + + cmd = ['ls', path] + lines = self._RunDeviceAdbCmd( + cmd, timeout=timeout, retries=retries).splitlines() + if lines: + return [ParseLine(line, cmd) for line in lines] + else: + raise device_errors.AdbCommandFailedError( + cmd, 'path does not specify an accessible directory in the device', + device_serial=self._device_serial) + + def Logcat(self, clear=False, dump=False, filter_specs=None, + logcat_format=None, ring_buffer=None, iter_timeout=None, + timeout=None, retries=DEFAULT_RETRIES): + """Get an iterable over the logcat output. + + Args: + clear: If true, clear the logcat. + dump: If true, dump the current logcat contents. + filter_specs: If set, a list of specs to filter the logcat. + logcat_format: If set, the format in which the logcat should be output. + Options include "brief", "process", "tag", "thread", "raw", "time", + "threadtime", and "long" + ring_buffer: If set, a list of alternate ring buffers to request. + Options include "main", "system", "radio", "events", "crash" or "all". + The default is equivalent to ["main", "system", "crash"]. + iter_timeout: If set and neither clear nor dump is set, the number of + seconds to wait between iterations. If no line is found before the + given number of seconds elapses, the iterable will yield None. + timeout: (optional) If set, timeout per try in seconds. If clear or dump + is set, defaults to DEFAULT_TIMEOUT. + retries: (optional) If clear or dump is set, the number of retries to + attempt. Otherwise, does nothing. + + Yields: + logcat output line by line. + """ + cmd = ['logcat'] + use_iter = True + if clear: + cmd.append('-c') + use_iter = False + if dump: + cmd.append('-d') + use_iter = False + if logcat_format: + cmd.extend(['-v', logcat_format]) + if ring_buffer: + for buffer_name in ring_buffer: + cmd.extend(['-b', buffer_name]) + if filter_specs: + cmd.extend(filter_specs) + + if use_iter: + return self._IterRunDeviceAdbCmd(cmd, iter_timeout, timeout) + else: + timeout = timeout if timeout is not None else DEFAULT_TIMEOUT + return self._RunDeviceAdbCmd(cmd, timeout, retries).splitlines() + + def Forward(self, local, remote, allow_rebind=False, + timeout=DEFAULT_TIMEOUT, retries=DEFAULT_RETRIES): + """Forward socket connections from the local socket to the remote socket. + + Sockets are specified by one of: + tcp:<port> + localabstract:<unix domain socket name> + localreserved:<unix domain socket name> + localfilesystem:<unix domain socket name> + dev:<character device name> + jdwp:<process pid> (remote only) + + Args: + local: The host socket. + remote: The device socket. + allow_rebind: A boolean indicating whether adb may rebind a local socket; + otherwise, the default, an exception is raised if the local socket is + already being forwarded. + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. + """ + cmd = ['forward'] + if not allow_rebind: + cmd.append('--no-rebind') + cmd.extend([str(local), str(remote)]) + output = self._RunDeviceAdbCmd(cmd, timeout, retries).strip() + if output: + logger.warning('Unexpected output from "adb forward": %s', output) + + def ForwardRemove(self, local, timeout=DEFAULT_TIMEOUT, + retries=DEFAULT_RETRIES): + """Remove a forward socket connection. + + Args: + local: The host socket. + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. + """ + self._RunDeviceAdbCmd(['forward', '--remove', str(local)], timeout, + retries) + + def ForwardList(self, timeout=DEFAULT_TIMEOUT, retries=DEFAULT_RETRIES): + """List all currently forwarded socket connections. + + Args: + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. + Returns: + The output of adb forward --list as a string. + """ + if (distutils.version.LooseVersion(self.Version()) >= + distutils.version.LooseVersion('1.0.36')): + # Starting in 1.0.36, this can occasionally fail with a protocol fault. + # As this interrupts all connections with all devices, we instead just + # return an empty list. This may give clients an inaccurate result, but + # that's usually better than crashing the adb server. + + # TODO(jbudorick): Determine an appropriate upper version bound for this + # once b/31811775 is fixed. + return '' + + return self._RunDeviceAdbCmd(['forward', '--list'], timeout, retries) + + def JDWP(self, timeout=DEFAULT_TIMEOUT, retries=DEFAULT_RETRIES): + """List of PIDs of processes hosting a JDWP transport. + + Args: + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. + + Returns: + A list of PIDs as strings. + """ + return [a.strip() for a in + self._RunDeviceAdbCmd(['jdwp'], timeout, retries).split('\n')] + + def Install(self, apk_path, forward_lock=False, allow_downgrade=False, + reinstall=False, sd_card=False, timeout=60 * 2, + retries=DEFAULT_RETRIES): + """Install an apk on the device. + + Args: + apk_path: Host path to the APK file. + forward_lock: (optional) If set forward-locks the app. + allow_downgrade: (optional) If set, allows for downgrades. + reinstall: (optional) If set reinstalls the app, keeping its data. + sd_card: (optional) If set installs on the SD card. + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. + """ + VerifyLocalFileExists(apk_path) + cmd = ['install'] + if forward_lock: + cmd.append('-l') + if reinstall: + cmd.append('-r') + if sd_card: + cmd.append('-s') + if allow_downgrade: + cmd.append('-d') + cmd.append(apk_path) + output = self._RunDeviceAdbCmd(cmd, timeout, retries) + if 'Success' not in output: + raise device_errors.AdbCommandFailedError( + cmd, output, device_serial=self._device_serial) + + def InstallMultiple(self, apk_paths, forward_lock=False, reinstall=False, + sd_card=False, allow_downgrade=False, partial=False, + timeout=60 * 2, retries=DEFAULT_RETRIES): + """Install an apk with splits on the device. + + Args: + apk_paths: Host path to the APK file. + forward_lock: (optional) If set forward-locks the app. + reinstall: (optional) If set reinstalls the app, keeping its data. + sd_card: (optional) If set installs on the SD card. + allow_downgrade: (optional) Allow versionCode downgrade. + partial: (optional) Package ID if apk_paths doesn't include all .apks. + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. + """ + for path in apk_paths: + VerifyLocalFileExists(path) + cmd = ['install-multiple'] + if forward_lock: + cmd.append('-l') + if reinstall: + cmd.append('-r') + if sd_card: + cmd.append('-s') + if allow_downgrade: + cmd.append('-d') + if partial: + cmd.extend(('-p', partial)) + cmd.extend(apk_paths) + output = self._RunDeviceAdbCmd(cmd, timeout, retries) + if 'Success' not in output: + raise device_errors.AdbCommandFailedError( + cmd, output, device_serial=self._device_serial) + + def Uninstall(self, package, keep_data=False, timeout=DEFAULT_TIMEOUT, + retries=DEFAULT_RETRIES): + """Remove the app |package| from the device. + + Args: + package: The package to uninstall. + keep_data: (optional) If set keep the data and cache directories. + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. + """ + cmd = ['uninstall'] + if keep_data: + cmd.append('-k') + cmd.append(package) + output = self._RunDeviceAdbCmd(cmd, timeout, retries) + if 'Failure' in output or 'Exception' in output: + raise device_errors.AdbCommandFailedError( + cmd, output, device_serial=self._device_serial) + + def Backup(self, path, packages=None, apk=False, shared=False, + nosystem=True, include_all=False, timeout=DEFAULT_TIMEOUT, + retries=DEFAULT_RETRIES): + """Write an archive of the device's data to |path|. + + Args: + path: Local path to store the backup file. + packages: List of to packages to be backed up. + apk: (optional) If set include the .apk files in the archive. + shared: (optional) If set buckup the device's SD card. + nosystem: (optional) If set exclude system applications. + include_all: (optional) If set back up all installed applications and + |packages| is optional. + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. + """ + cmd = ['backup', '-f', path] + if apk: + cmd.append('-apk') + if shared: + cmd.append('-shared') + if nosystem: + cmd.append('-nosystem') + if include_all: + cmd.append('-all') + if packages: + cmd.extend(packages) + assert bool(packages) ^ bool(include_all), ( + 'Provide \'packages\' or set \'include_all\' but not both.') + ret = self._RunDeviceAdbCmd(cmd, timeout, retries) + VerifyLocalFileExists(path) + return ret + + def Restore(self, path, timeout=DEFAULT_TIMEOUT, retries=DEFAULT_RETRIES): + """Restore device contents from the backup archive. + + Args: + path: Host path to the backup archive. + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. + """ + VerifyLocalFileExists(path) + self._RunDeviceAdbCmd(['restore'] + [path], timeout, retries) + + def WaitForDevice(self, timeout=60 * 5, retries=DEFAULT_RETRIES): + """Block until the device is online. + + Args: + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. + """ + self._RunDeviceAdbCmd(['wait-for-device'], timeout, retries) + + def GetState(self, timeout=DEFAULT_TIMEOUT, retries=DEFAULT_RETRIES): + """Get device state. + + Args: + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. + + Returns: + One of 'offline', 'bootloader', or 'device'. + """ + # TODO(jbudorick): Revert to using get-state once it doesn't cause a + # a protocol fault. + # return self._RunDeviceAdbCmd(['get-state'], timeout, retries).strip() + + lines = self._RawDevices(timeout=timeout, retries=retries) + for line in lines: + if len(line) >= 2 and line[0] == self._device_serial: + return line[1] + return 'offline' + + def GetDevPath(self, timeout=DEFAULT_TIMEOUT, retries=DEFAULT_RETRIES): + """Gets the device path. + + Args: + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. + + Returns: + The device path (e.g. usb:3-4) + """ + return self._RunDeviceAdbCmd(['get-devpath'], timeout, retries) + + def Remount(self, timeout=DEFAULT_TIMEOUT, retries=DEFAULT_RETRIES): + """Remounts the /system partition on the device read-write.""" + self._RunDeviceAdbCmd(['remount'], timeout, retries) + + def Reboot(self, to_bootloader=False, timeout=60 * 5, + retries=DEFAULT_RETRIES): + """Reboots the device. + + Args: + to_bootloader: (optional) If set reboots to the bootloader. + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. + """ + if to_bootloader: + cmd = ['reboot-bootloader'] + else: + cmd = ['reboot'] + self._RunDeviceAdbCmd(cmd, timeout, retries) + + def Root(self, timeout=DEFAULT_TIMEOUT, retries=DEFAULT_RETRIES): + """Restarts the adbd daemon with root permissions, if possible. + + Args: + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. + """ + output = self._RunDeviceAdbCmd(['root'], timeout, retries) + if 'cannot' in output: + raise device_errors.AdbCommandFailedError( + ['root'], output, device_serial=self._device_serial) + + def Emu(self, cmd, timeout=DEFAULT_TIMEOUT, + retries=DEFAULT_RETRIES): + """Runs an emulator console command. + + See http://developer.android.com/tools/devices/emulator.html#console + + Args: + cmd: The command to run on the emulator console. + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. + + Returns: + The output of the emulator console command. + """ + if isinstance(cmd, basestring): + cmd = [cmd] + return self._RunDeviceAdbCmd(['emu'] + cmd, timeout, retries) + + def DisableVerity(self, timeout=DEFAULT_TIMEOUT, retries=DEFAULT_RETRIES): + """Disable Marshmallow's Verity security feature""" + output = self._RunDeviceAdbCmd(['disable-verity'], timeout, retries) + if output and not _VERITY_DISABLE_RE.search(output): + raise device_errors.AdbCommandFailedError( + ['disable-verity'], output, device_serial=self._device_serial) + + def EnableVerity(self, timeout=DEFAULT_TIMEOUT, retries=DEFAULT_RETRIES): + """Enable Marshmallow's Verity security feature""" + output = self._RunDeviceAdbCmd(['enable-verity'], timeout, retries) + if output and not _VERITY_ENABLE_RE.search(output): + raise device_errors.AdbCommandFailedError( + ['enable-verity'], output, device_serial=self._device_serial) + + @property + def is_emulator(self): + return _EMULATOR_RE.match(self._device_serial) + + @property + def is_ready(self): + try: + return self.GetState() == _READY_STATE + except device_errors.CommandFailedError: + return False diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/adb_wrapper_devicetest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/adb_wrapper_devicetest.py new file mode 100644 index 0000000..b0ccb24 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/adb_wrapper_devicetest.py @@ -0,0 +1,122 @@ +#!/usr/bin/env python + +# Copyright 2013 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Tests for the AdbWrapper class.""" + +import os +import tempfile +import time +import unittest + +from devil.android import device_test_case +from devil.android import device_errors +from devil.android.sdk import adb_wrapper + + +class TestAdbWrapper(device_test_case.DeviceTestCase): + + def setUp(self): + super(TestAdbWrapper, self).setUp() + self._adb = adb_wrapper.AdbWrapper(self.serial) + self._adb.WaitForDevice() + + @staticmethod + def _MakeTempFile(contents): + """Make a temporary file with the given contents. + + Args: + contents: string to write to the temporary file. + + Returns: + The absolute path to the file. + """ + fi, path = tempfile.mkstemp() + with os.fdopen(fi, 'wb') as f: + f.write(contents) + return path + + def testDeviceUnreachable(self): + with self.assertRaises(device_errors.DeviceUnreachableError): + bad_adb = adb_wrapper.AdbWrapper('device_gone') + bad_adb.Shell('echo test') + + def testShell(self): + output = self._adb.Shell('echo test', expect_status=0) + self.assertEqual(output.strip(), 'test') + output = self._adb.Shell('echo test') + self.assertEqual(output.strip(), 'test') + with self.assertRaises(device_errors.AdbCommandFailedError): + self._adb.Shell('echo test', expect_status=1) + + def testPersistentShell(self): + # We need to access the device serial number here in order + # to create the persistent shell. + serial = self._adb.GetDeviceSerial() # pylint: disable=protected-access + with self._adb.PersistentShell(serial) as pshell: + (res1, code1) = pshell.RunCommand('echo TEST') + (res2, code2) = pshell.RunCommand('echo TEST2') + self.assertEqual(len(res1), 1) + self.assertEqual(res1[0], 'TEST') + self.assertEqual(res2[-1], 'TEST2') + self.assertEqual(code1, 0) + self.assertEqual(code2, 0) + + def testPushLsPull(self): + path = self._MakeTempFile('foo') + device_path = '/data/local/tmp/testfile.txt' + local_tmpdir = os.path.dirname(path) + self._adb.Push(path, device_path) + files = dict(self._adb.Ls('/data/local/tmp')) + self.assertTrue('testfile.txt' in files) + self.assertEquals(3, files['testfile.txt'].st_size) + self.assertEqual(self._adb.Shell('cat %s' % device_path), 'foo') + self._adb.Pull(device_path, local_tmpdir) + with open(os.path.join(local_tmpdir, 'testfile.txt'), 'r') as f: + self.assertEqual(f.read(), 'foo') + + def testInstall(self): + path = self._MakeTempFile('foo') + with self.assertRaises(device_errors.AdbCommandFailedError): + self._adb.Install(path) + + def testForward(self): + with self.assertRaises(device_errors.AdbCommandFailedError): + self._adb.Forward(0, 0) + + def testUninstall(self): + with self.assertRaises(device_errors.AdbCommandFailedError): + self._adb.Uninstall('some.nonexistant.package') + + def testRebootWaitForDevice(self): + self._adb.Reboot() + print 'waiting for device to reboot...' + while self._adb.GetState() == 'device': + time.sleep(1) + self._adb.WaitForDevice() + self.assertEqual(self._adb.GetState(), 'device') + print 'waiting for package manager...' + while True: + try: + android_path = self._adb.Shell('pm path android') + except device_errors.AdbShellCommandFailedError: + android_path = None + if android_path and 'package:' in android_path: + break + time.sleep(1) + + def testRootRemount(self): + self._adb.Root() + while True: + try: + self._adb.Shell('start') + break + except device_errors.DeviceUnreachableError: + time.sleep(1) + self._adb.Remount() + + +if __name__ == '__main__': + unittest.main() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/adb_wrapper_test.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/adb_wrapper_test.py new file mode 100644 index 0000000..ef08661 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/adb_wrapper_test.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python +# Copyright 2017 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +""" +Unit tests for some APIs with conditional logic in adb_wrapper.py +""" + +import unittest + +from devil import devil_env +from devil.android import device_errors +from devil.android.sdk import adb_wrapper + +with devil_env.SysPath(devil_env.PYMOCK_PATH): + import mock # pylint: disable=import-error + + +class AdbWrapperTest(unittest.TestCase): + def setUp(self): + self.adb = adb_wrapper.AdbWrapper('ABC12345678') + + def _MockRunDeviceAdbCmd(self, return_value): + return mock.patch.object( + self.adb, + '_RunDeviceAdbCmd', + mock.Mock(side_effect=None, return_value=return_value)) + + def testDisableVerityWhenDisabled(self): + with self._MockRunDeviceAdbCmd('Verity already disabled on /system'): + self.adb.DisableVerity() + + def testDisableVerityWhenEnabled(self): + with self._MockRunDeviceAdbCmd( + 'Verity disabled on /system\nNow reboot your device for settings to ' + 'take effect'): + self.adb.DisableVerity() + + def testEnableVerityWhenEnabled(self): + with self._MockRunDeviceAdbCmd('Verity already enabled on /system'): + self.adb.EnableVerity() + + def testEnableVerityWhenDisabled(self): + with self._MockRunDeviceAdbCmd( + 'Verity enabled on /system\nNow reboot your device for settings to ' + 'take effect'): + self.adb.EnableVerity() + + def testFailEnableVerity(self): + with self._MockRunDeviceAdbCmd('error: closed'): + self.assertRaises( + device_errors.AdbCommandFailedError, self.adb.EnableVerity) + + def testFailDisableVerity(self): + with self._MockRunDeviceAdbCmd('error: closed'): + self.assertRaises( + device_errors.AdbCommandFailedError, self.adb.DisableVerity) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/build_tools.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/build_tools.py new file mode 100644 index 0000000..99083d9 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/build_tools.py @@ -0,0 +1,51 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os + +from devil import devil_env +from devil.utils import lazy + +with devil_env.SysPath(devil_env.DEPENDENCY_MANAGER_PATH): + import dependency_manager # pylint: disable=import-error + + +def GetPath(build_tool): + try: + return devil_env.config.LocalPath(build_tool) + except dependency_manager.NoPathFoundError: + pass + + try: + return _PathInLocalSdk(build_tool) + except dependency_manager.NoPathFoundError: + pass + + return devil_env.config.FetchPath(build_tool) + + +def _PathInLocalSdk(build_tool): + build_tools_path = _build_tools_path.read() + return (os.path.join(build_tools_path, build_tool) if build_tools_path + else None) + + +def _FindBuildTools(): + android_sdk_path = devil_env.config.LocalPath('android_sdk') + if not android_sdk_path: + return None + + build_tools_contents = os.listdir( + os.path.join(android_sdk_path, 'build-tools')) + + if not build_tools_contents: + return None + else: + if len(build_tools_contents) > 1: + build_tools_contents.sort() + return os.path.join(android_sdk_path, 'build-tools', + build_tools_contents[-1]) + + +_build_tools_path = lazy.WeakConstant(_FindBuildTools) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/dexdump.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/dexdump.py new file mode 100644 index 0000000..992366e --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/dexdump.py @@ -0,0 +1,31 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +from devil.android.sdk import build_tools +from devil.utils import cmd_helper +from devil.utils import lazy + + +_dexdump_path = lazy.WeakConstant(lambda: build_tools.GetPath('dexdump')) + + +def DexDump(dexfiles, file_summary=False): + """A wrapper around the Android SDK's dexdump tool. + + Args: + dexfiles: The dexfile or list of dex files to dump. + file_summary: Display summary information from the file header. (-f) + + Returns: + An iterable over the output lines. + """ + # TODO(jbudorick): Add support for more options as necessary. + if isinstance(dexfiles, basestring): + dexfiles = [dexfiles] + args = [_dexdump_path.read()] + dexfiles + if file_summary: + args.append('-f') + + return cmd_helper.IterCmdOutputLines(args) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/fastboot.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/fastboot.py new file mode 100644 index 0000000..d7f9f62 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/fastboot.py @@ -0,0 +1,98 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""This module wraps Android's fastboot tool. + +This is a thin wrapper around the fastboot interface. Any additional complexity +should be delegated to a higher level (ex. FastbootUtils). +""" +# pylint: disable=unused-argument + +from devil import devil_env +from devil.android import decorators +from devil.android import device_errors +from devil.utils import cmd_helper +from devil.utils import lazy + +_DEFAULT_TIMEOUT = 30 +_DEFAULT_RETRIES = 3 +_FLASH_TIMEOUT = _DEFAULT_TIMEOUT * 10 + + +class Fastboot(object): + + _fastboot_path = lazy.WeakConstant( + lambda: devil_env.config.FetchPath('fastboot')) + + def __init__(self, device_serial, default_timeout=_DEFAULT_TIMEOUT, + default_retries=_DEFAULT_RETRIES): + """Initializes the FastbootWrapper. + + Args: + device_serial: The device serial number as a string. + """ + if not device_serial: + raise ValueError('A device serial must be specified') + self._device_serial = str(device_serial) + self._default_timeout = default_timeout + self._default_retries = default_retries + + def _RunFastbootCommand(self, cmd): + """Run a command line command using the fastboot android tool. + + Args: + cmd: Command to run. Must be list of args, the first one being the command + + Returns: + output of command. + + Raises: + TypeError: If cmd is not of type list. + """ + if type(cmd) == list: + cmd = [self._fastboot_path.read(), '-s', self._device_serial] + cmd + else: + raise TypeError( + 'Command for _RunFastbootCommand must be a list.') + status, output = cmd_helper.GetCmdStatusAndOutput(cmd) + if int(status) != 0: + raise device_errors.FastbootCommandFailedError( + cmd, output, status, self._device_serial) + return output + + @decorators.WithTimeoutAndRetriesDefaults(_FLASH_TIMEOUT, 0) + def Flash(self, partition, image, timeout=None, retries=None): + """Flash partition with img. + + Args: + partition: Partition to be flashed. + image: location of image to flash with. + """ + self._RunFastbootCommand(['flash', partition, image]) + + @decorators.WithTimeoutAndRetriesFromInstance() + def Devices(self, timeout=None, retries=None): + """Outputs list of devices in fastboot mode.""" + output = self._RunFastbootCommand(['devices']) + return [line.split()[0] for line in output.splitlines()] + + @decorators.WithTimeoutAndRetriesFromInstance() + def RebootBootloader(self, timeout=None, retries=None): + """Reboot from fastboot, into fastboot.""" + self._RunFastbootCommand(['reboot-bootloader']) + + @decorators.WithTimeoutAndRetriesDefaults(_FLASH_TIMEOUT, 0) + def Reboot(self, timeout=None, retries=None): + """Reboot from fastboot to normal usage""" + self._RunFastbootCommand(['reboot']) + + @decorators.WithTimeoutAndRetriesFromInstance() + def SetOemOffModeCharge(self, value, timeout=None, retries=None): + """Sets off mode charging + + Args: + value: boolean value to set off-mode-charging on or off. + """ + self._RunFastbootCommand( + ['oem', 'off-mode-charge', str(int(value))]) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/gce_adb_wrapper.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/gce_adb_wrapper.py new file mode 100644 index 0000000..71600f4 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/gce_adb_wrapper.py @@ -0,0 +1,154 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Provides a work around for various adb commands on android gce instances. + +Some adb commands don't work well when the device is a cloud vm, namely +'push' and 'pull'. With gce instances, moving files through adb can be +painfully slow and hit timeouts, so the methods here just use scp instead. +""" +# pylint: disable=unused-argument + +import logging +import os +import subprocess + +from devil.android import device_errors +from devil.android.sdk import adb_wrapper +from devil.utils import cmd_helper + +logger = logging.getLogger(__name__) + + +class GceAdbWrapper(adb_wrapper.AdbWrapper): + + def __init__(self, device_serial): + super(GceAdbWrapper, self).__init__(device_serial) + self._Connect() + self.Root() + self._instance_ip = self.Shell('getprop net.gce.ip').strip() + + def _Connect(self, timeout=adb_wrapper.DEFAULT_TIMEOUT, + retries=adb_wrapper.DEFAULT_RETRIES): + """Connects ADB to the android gce instance.""" + cmd = ['connect', self._device_serial] + output = self._RunAdbCmd(cmd, timeout=timeout, retries=retries) + if 'unable to connect' in output: + raise device_errors.AdbCommandFailedError(cmd, output) + self.WaitForDevice() + + # override + def Root(self, **kwargs): + super(GceAdbWrapper, self).Root() + self._Connect() + + # override + def Push(self, local, remote, **kwargs): + """Pushes an object from the host to the gce instance. + + Args: + local: Path on the host filesystem. + remote: Path on the instance filesystem. + """ + adb_wrapper.VerifyLocalFileExists(local) + if os.path.isdir(local): + self.Shell('mkdir -p %s' % cmd_helper.SingleQuote(remote)) + + # When the object to be pushed is a directory, adb merges the source dir + # with the destination dir. So if local is a dir, just scp its contents. + for f in os.listdir(local): + self._PushObject(os.path.join(local, f), os.path.join(remote, f)) + self.Shell('chmod 777 %s' % + cmd_helper.SingleQuote(os.path.join(remote, f))) + else: + parent_dir = remote[0:remote.rfind('/')] + if parent_dir: + self.Shell('mkdir -p %s' % cmd_helper.SingleQuote(parent_dir)) + self._PushObject(local, remote) + self.Shell('chmod 777 %s' % cmd_helper.SingleQuote(remote)) + + def _PushObject(self, local, remote): + """Copies an object from the host to the gce instance using scp. + + Args: + local: Path on the host filesystem. + remote: Path on the instance filesystem. + """ + cmd = [ + 'scp', + '-r', + '-o', 'UserKnownHostsFile=/dev/null', + '-o', 'StrictHostKeyChecking=no', + local, + 'root@%s:%s' % (self._instance_ip, remote) + ] + status, _ = cmd_helper.GetCmdStatusAndOutput(cmd) + if status: + raise device_errors.AdbCommandFailedError( + cmd, 'File not reachable on host: %s' % local, + device_serial=str(self)) + + # override + def Pull(self, remote, local, **kwargs): + """Pulls a file from the gce instance to the host. + + Args: + remote: Path on the instance filesystem. + local: Path on the host filesystem. + """ + cmd = [ + 'scp', + '-p', + '-r', + '-o', 'UserKnownHostsFile=/dev/null', + '-o', 'StrictHostKeyChecking=no', + 'root@%s:%s' % (self._instance_ip, remote), + local, + ] + status, _ = cmd_helper.GetCmdStatusAndOutput(cmd) + if status: + raise device_errors.AdbCommandFailedError( + cmd, 'File not reachable on host: %s' % local, + device_serial=str(self)) + + try: + adb_wrapper.VerifyLocalFileExists(local) + except (subprocess.CalledProcessError, IOError): + logger.exception('Error when pulling files from android instance.') + raise device_errors.AdbCommandFailedError( + cmd, 'File not reachable on host: %s' % local, + device_serial=str(self)) + + # override + def Install(self, apk_path, forward_lock=False, reinstall=False, + sd_card=False, **kwargs): + """Installs an apk on the gce instance + + Args: + apk_path: Host path to the APK file. + forward_lock: (optional) If set forward-locks the app. + reinstall: (optional) If set reinstalls the app, keeping its data. + sd_card: (optional) If set installs on the SD card. + """ + adb_wrapper.VerifyLocalFileExists(apk_path) + cmd = ['install'] + if forward_lock: + cmd.append('-l') + if reinstall: + cmd.append('-r') + if sd_card: + cmd.append('-s') + self.Push(apk_path, '/data/local/tmp/tmp.apk') + cmd = ['pm'] + cmd + cmd.append('/data/local/tmp/tmp.apk') + output = self.Shell(' '.join(cmd)) + self.Shell('rm /data/local/tmp/tmp.apk') + if 'Success' not in output: + raise device_errors.AdbCommandFailedError( + cmd, output, device_serial=self._device_serial) + + # override + @property + def is_emulator(self): + return True diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/intent.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/intent.py new file mode 100644 index 0000000..cdefb46 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/intent.py @@ -0,0 +1,129 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Manages intents and associated information. + +This is generally intended to be used with functions that calls Android's +Am command. +""" + +# Some common flag constants that can be used to construct intents. +# Full list: http://developer.android.com/reference/android/content/Intent.html +FLAG_ACTIVITY_CLEAR_TASK = 0x00008000 +FLAG_ACTIVITY_CLEAR_TOP = 0x04000000 +FLAG_ACTIVITY_NEW_TASK = 0x10000000 +FLAG_ACTIVITY_REORDER_TO_FRONT = 0x00020000 +FLAG_ACTIVITY_RESET_TASK_IF_NEEDED = 0x00200000 + + +def _bitwise_or(flags): + result = 0 + for flag in flags: + result |= flag + return result + + +class Intent(object): + + def __init__(self, action='android.intent.action.VIEW', activity=None, + category=None, component=None, data=None, extras=None, + flags=None, package=None): + """Creates an Intent. + + Args: + action: A string containing the action. + activity: A string that, with |package|, can be used to specify the + component. + category: A string or list containing any categories. + component: A string that specifies the component to send the intent to. + data: A string containing a data URI. + extras: A dict containing extra parameters to be passed along with the + intent. + flags: A sequence of flag constants to be passed with the intent. + package: A string that, with activity, can be used to specify the + component. + """ + self._action = action + self._activity = activity + if isinstance(category, list) or category is None: + self._category = category + else: + self._category = [category] + self._component = component + self._data = data + self._extras = extras + self._flags = '0x%0.8x' % _bitwise_or(flags) if flags else None + self._package = package + + if self._component and '/' in component: + self._package, self._activity = component.split('/', 1) + elif self._package and self._activity: + self._component = '%s/%s' % (package, activity) + + @property + def action(self): + return self._action + + @property + def activity(self): + return self._activity + + @property + def category(self): + return self._category + + @property + def component(self): + return self._component + + @property + def data(self): + return self._data + + @property + def extras(self): + return self._extras + + @property + def flags(self): + return self._flags + + @property + def package(self): + return self._package + + @property + def am_args(self): + """Returns the intent as a list of arguments for the activity manager. + + For details refer to the specification at: + - http://developer.android.com/tools/help/adb.html#IntentSpec + """ + args = [] + if self.action: + args.extend(['-a', self.action]) + if self.data: + args.extend(['-d', self.data]) + if self.category: + args.extend(arg for cat in self.category for arg in ('-c', cat)) + if self.component: + args.extend(['-n', self.component]) + if self.flags: + args.extend(['-f', self.flags]) + if self.extras: + for key, value in self.extras.iteritems(): + if value is None: + args.extend(['--esn', key]) + elif isinstance(value, str): + args.extend(['--es', key, value]) + elif isinstance(value, bool): + args.extend(['--ez', key, str(value)]) + elif isinstance(value, int): + args.extend(['--ei', key, str(value)]) + elif isinstance(value, float): + args.extend(['--ef', key, str(value)]) + else: + raise NotImplementedError( + 'Intent does not know how to pass %s extras' % type(value)) + return args diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/keyevent.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/keyevent.py new file mode 100644 index 0000000..657dc96 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/keyevent.py @@ -0,0 +1,63 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Android KeyEvent constants. + +http://developer.android.com/reference/android/view/KeyEvent.html +""" + +KEYCODE_BACK = 4 + +KEYCODE_0 = 7 +KEYCODE_1 = 8 +KEYCODE_2 = 9 +KEYCODE_3 = 10 +KEYCODE_4 = 11 +KEYCODE_5 = 12 +KEYCODE_6 = 13 +KEYCODE_7 = 14 +KEYCODE_8 = 15 +KEYCODE_9 = 16 + +KEYCODE_DPAD_RIGHT = 22 + +KEYCODE_POWER = 26 + +KEYCODE_A = 29 +KEYCODE_B = 30 +KEYCODE_C = 31 +KEYCODE_D = 32 +KEYCODE_E = 33 +KEYCODE_F = 34 +KEYCODE_G = 35 +KEYCODE_H = 36 +KEYCODE_I = 37 +KEYCODE_J = 38 +KEYCODE_K = 39 +KEYCODE_L = 40 +KEYCODE_M = 41 +KEYCODE_N = 42 +KEYCODE_O = 43 +KEYCODE_P = 44 +KEYCODE_Q = 45 +KEYCODE_R = 46 +KEYCODE_S = 47 +KEYCODE_T = 48 +KEYCODE_U = 49 +KEYCODE_V = 50 +KEYCODE_W = 51 +KEYCODE_X = 52 +KEYCODE_Y = 53 +KEYCODE_Z = 54 + +KEYCODE_PERIOD = 56 + +KEYCODE_SPACE = 62 + +KEYCODE_ENTER = 66 +KEYCODE_DEL = 67 + +KEYCODE_MENU = 82 + +KEYCODE_APP_SWITCH = 187 diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/shared_prefs.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/shared_prefs.py new file mode 100644 index 0000000..2fa2e6a --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/shared_prefs.py @@ -0,0 +1,420 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Helper object to read and modify Shared Preferences from Android apps. + +See e.g.: + http://developer.android.com/reference/android/content/SharedPreferences.html +""" + +import logging +import posixpath + +from devil.android import device_errors +from devil.android.sdk import version_codes +from xml.etree import ElementTree + +logger = logging.getLogger(__name__) + + +_XML_DECLARATION = "<?xml version='1.0' encoding='utf-8' standalone='yes' ?>\n" + + +class BasePref(object): + """Base class for getting/setting the value of a specific preference type. + + Should not be instantiated directly. The SharedPrefs collection will + instantiate the appropriate subclasses, which directly manipulate the + underlying xml document, to parse and serialize values according to their + type. + + Args: + elem: An xml ElementTree object holding the preference data. + + Properties: + tag_name: A string with the tag that must be used for this preference type. + """ + tag_name = None + + def __init__(self, elem): + if elem.tag != type(self).tag_name: + raise TypeError('Property %r has type %r, but trying to access as %r' % + (elem.get('name'), elem.tag, type(self).tag_name)) + self._elem = elem + + def __str__(self): + """Get the underlying xml element as a string.""" + return ElementTree.tostring(self._elem) + + def get(self): + """Get the value of this preference.""" + return self._elem.get('value') + + def set(self, value): + """Set from a value casted as a string.""" + self._elem.set('value', str(value)) + + @property + def has_value(self): + """Check whether the element has a value.""" + return self._elem.get('value') is not None + + +class BooleanPref(BasePref): + """Class for getting/setting a preference with a boolean value. + + The underlying xml element has the form, e.g.: + <boolean name="featureEnabled" value="false" /> + """ + tag_name = 'boolean' + VALUES = {'true': True, 'false': False} + + def get(self): + """Get the value as a Python bool.""" + return type(self).VALUES[super(BooleanPref, self).get()] + + def set(self, value): + """Set from a value casted as a bool.""" + super(BooleanPref, self).set('true' if value else 'false') + + +class FloatPref(BasePref): + """Class for getting/setting a preference with a float value. + + The underlying xml element has the form, e.g.: + <float name="someMetric" value="4.7" /> + """ + tag_name = 'float' + + def get(self): + """Get the value as a Python float.""" + return float(super(FloatPref, self).get()) + + +class IntPref(BasePref): + """Class for getting/setting a preference with an int value. + + The underlying xml element has the form, e.g.: + <int name="aCounter" value="1234" /> + """ + tag_name = 'int' + + def get(self): + """Get the value as a Python int.""" + return int(super(IntPref, self).get()) + + +class LongPref(IntPref): + """Class for getting/setting a preference with a long value. + + The underlying xml element has the form, e.g.: + <long name="aLongCounter" value="1234" /> + + We use the same implementation from IntPref. + """ + tag_name = 'long' + + +class StringPref(BasePref): + """Class for getting/setting a preference with a string value. + + The underlying xml element has the form, e.g.: + <string name="someHashValue">249b3e5af13d4db2</string> + """ + tag_name = 'string' + + def get(self): + """Get the value as a Python string.""" + return self._elem.text + + def set(self, value): + """Set from a value casted as a string.""" + self._elem.text = str(value) + + +class StringSetPref(StringPref): + """Class for getting/setting a preference with a set of string values. + + The underlying xml element has the form, e.g.: + <set name="managed_apps"> + <string>com.mine.app1</string> + <string>com.mine.app2</string> + <string>com.mine.app3</string> + </set> + """ + tag_name = 'set' + + def get(self): + """Get a list with the string values contained.""" + value = [] + for child in self._elem: + assert child.tag == 'string' + value.append(child.text) + return value + + def set(self, value): + """Set from a sequence of values, each casted as a string.""" + for child in list(self._elem): + self._elem.remove(child) + for item in value: + ElementTree.SubElement(self._elem, 'string').text = str(item) + + +_PREF_TYPES = {c.tag_name: c for c in [BooleanPref, FloatPref, IntPref, + LongPref, StringPref, StringSetPref]} + + +class SharedPrefs(object): + + def __init__(self, device, package, filename): + """Helper object to read and update "Shared Prefs" of Android apps. + + Such files typically look like, e.g.: + + <?xml version='1.0' encoding='utf-8' standalone='yes' ?> + <map> + <int name="databaseVersion" value="107" /> + <boolean name="featureEnabled" value="false" /> + <string name="someHashValue">249b3e5af13d4db2</string> + </map> + + Example usage: + + prefs = shared_prefs.SharedPrefs(device, 'com.my.app', 'my_prefs.xml') + prefs.Load() + prefs.GetString('someHashValue') # => '249b3e5af13d4db2' + prefs.SetInt('databaseVersion', 42) + prefs.Remove('featureEnabled') + prefs.Commit() + + The object may also be used as a context manager to automatically load and + commit, respectively, upon entering and leaving the context. + + Args: + device: A DeviceUtils object. + package: A string with the package name of the app that owns the shared + preferences file. + filename: A string with the name of the preferences file to read/write. + """ + self._device = device + self._xml = None + self._package = package + self._filename = filename + self._path = '/data/data/%s/shared_prefs/%s' % (package, filename) + self._changed = False + + def __repr__(self): + """Get a useful printable representation of the object.""" + return '<{cls} file {filename} for {package} on {device}>'.format( + cls=type(self).__name__, filename=self.filename, package=self.package, + device=str(self._device)) + + def __str__(self): + """Get the underlying xml document as a string.""" + return _XML_DECLARATION + ElementTree.tostring(self.xml) + + @property + def package(self): + """Get the package name of the app that owns the shared preferences.""" + return self._package + + @property + def filename(self): + """Get the filename of the shared preferences file.""" + return self._filename + + @property + def path(self): + """Get the full path to the shared preferences file on the device.""" + return self._path + + @property + def changed(self): + """True if properties have changed and a commit would be needed.""" + return self._changed + + @property + def xml(self): + """Get the underlying xml document as an ElementTree object.""" + if self._xml is None: + self._xml = ElementTree.Element('map') + return self._xml + + def Load(self): + """Load the shared preferences file from the device. + + A empty xml document, which may be modified and saved on |commit|, is + created if the file does not already exist. + """ + if self._device.FileExists(self.path): + self._xml = ElementTree.fromstring( + self._device.ReadFile(self.path, as_root=True)) + assert self._xml.tag == 'map' + else: + self._xml = None + self._changed = False + + def Clear(self): + """Clear all of the preferences contained in this object.""" + if self._xml is not None and len(self): # only clear if not already empty + self._xml = None + self._changed = True + + def Commit(self): + """Save the current set of preferences to the device. + + Only actually saves if some preferences have been modified. + """ + if not self.changed: + return + self._device.RunShellCommand( + ['mkdir', '-p', posixpath.dirname(self.path)], + as_root=True, check_return=True) + self._device.WriteFile(self.path, str(self), as_root=True) + # Creating the directory/file can cause issues with SELinux if they did + # not already exist. As a workaround, apply the package's security context + # to the shared_prefs directory, which mimics the behavior of a file + # created by the app itself + if self._device.build_version_sdk >= version_codes.MARSHMALLOW: + security_context = self._GetSecurityContext(self.package) + if security_context == None: + raise device_errors.CommandFailedError( + 'Failed to get security context for %s' % self.package) + self._device.RunShellCommand( + ['chcon', '-R', security_context, + '/data/data/%s/shared_prefs' % self.package], + as_root=True, check_return=True) + self._device.KillAll(self.package, exact=True, as_root=True, quiet=True) + self._changed = False + + def __len__(self): + """Get the number of preferences in this collection.""" + return len(self.xml) + + def PropertyType(self, key): + """Get the type (i.e. tag name) of a property in the collection.""" + return self._GetChild(key).tag + + def HasProperty(self, key): + try: + self._GetChild(key) + return True + except KeyError: + return False + + def GetBoolean(self, key): + """Get a boolean property.""" + return BooleanPref(self._GetChild(key)).get() + + def SetBoolean(self, key, value): + """Set a boolean property.""" + self._SetPrefValue(key, value, BooleanPref) + + def GetFloat(self, key): + """Get a float property.""" + return FloatPref(self._GetChild(key)).get() + + def SetFloat(self, key, value): + """Set a float property.""" + self._SetPrefValue(key, value, FloatPref) + + def GetInt(self, key): + """Get an int property.""" + return IntPref(self._GetChild(key)).get() + + def SetInt(self, key, value): + """Set an int property.""" + self._SetPrefValue(key, value, IntPref) + + def GetLong(self, key): + """Get a long property.""" + return LongPref(self._GetChild(key)).get() + + def SetLong(self, key, value): + """Set a long property.""" + self._SetPrefValue(key, value, LongPref) + + def GetString(self, key): + """Get a string property.""" + return StringPref(self._GetChild(key)).get() + + def SetString(self, key, value): + """Set a string property.""" + self._SetPrefValue(key, value, StringPref) + + def GetStringSet(self, key): + """Get a string set property.""" + return StringSetPref(self._GetChild(key)).get() + + def SetStringSet(self, key, value): + """Set a string set property.""" + self._SetPrefValue(key, value, StringSetPref) + + def Remove(self, key): + """Remove a preference from the collection.""" + self.xml.remove(self._GetChild(key)) + + def AsDict(self): + """Return the properties and their values as a dictionary.""" + d = {} + for child in self.xml: + pref = _PREF_TYPES[child.tag](child) + d[child.get('name')] = pref.get() + return d + + def __enter__(self): + """Load preferences file from the device when entering a context.""" + self.Load() + return self + + def __exit__(self, exc_type, _exc_value, _traceback): + """Save preferences file to the device when leaving a context.""" + if not exc_type: + self.Commit() + + def _GetChild(self, key): + """Get the underlying xml node that holds the property of a given key. + + Raises: + KeyError when the key is not found in the collection. + """ + for child in self.xml: + if child.get('name') == key: + return child + raise KeyError(key) + + def _SetPrefValue(self, key, value, pref_cls): + """Set the value of a property. + + Args: + key: The key of the property to set. + value: The new value of the property. + pref_cls: A subclass of BasePref used to access the property. + + Raises: + TypeError when the key already exists but with a different type. + """ + try: + pref = pref_cls(self._GetChild(key)) + old_value = pref.get() + except KeyError: + pref = pref_cls(ElementTree.SubElement( + self.xml, pref_cls.tag_name, {'name': key})) + old_value = None + if old_value != value: + pref.set(value) + self._changed = True + logger.info('Setting property: %s', pref) + + def _GetSecurityContext(self, package): + for line in self._device.RunShellCommand(['ls', '-Z', '/data/data/'], + as_root=True, check_return=True): + split_line = line.split() + # ls -Z output differs between Android versions, but the package is + # always last and the context always starts with "u:object" + if split_line[-1] == package: + for column in split_line: + if column.startswith('u:object'): + return column + return None diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/shared_prefs_test.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/shared_prefs_test.py new file mode 100644 index 0000000..4c31c56 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/shared_prefs_test.py @@ -0,0 +1,171 @@ +#!/usr/bin/env python +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +""" +Unit tests for the contents of shared_prefs.py (mostly SharedPrefs). +""" + +import logging +import unittest + +from devil import devil_env +from devil.android import device_utils +from devil.android.sdk import shared_prefs +from devil.android.sdk import version_codes + +with devil_env.SysPath(devil_env.PYMOCK_PATH): + import mock # pylint: disable=import-error + + +def MockDeviceWithFiles(files=None): + if files is None: + files = {} + + def file_exists(path): + return path in files + + def write_file(path, contents, **_kwargs): + files[path] = contents + + def read_file(path, **_kwargs): + return files[path] + + device = mock.MagicMock(spec=device_utils.DeviceUtils) + device.FileExists = mock.Mock(side_effect=file_exists) + device.WriteFile = mock.Mock(side_effect=write_file) + device.ReadFile = mock.Mock(side_effect=read_file) + return device + + +class SharedPrefsTest(unittest.TestCase): + + def setUp(self): + self.device = MockDeviceWithFiles({ + '/data/data/com.some.package/shared_prefs/prefs.xml': + "<?xml version='1.0' encoding='utf-8' standalone='yes' ?>\n" + '<map>\n' + ' <int name="databaseVersion" value="107" />\n' + ' <boolean name="featureEnabled" value="false" />\n' + ' <string name="someHashValue">249b3e5af13d4db2</string>\n' + '</map>'}) + self.expected_data = {'databaseVersion': 107, + 'featureEnabled': False, + 'someHashValue': '249b3e5af13d4db2'} + + def testPropertyLifetime(self): + prefs = shared_prefs.SharedPrefs( + self.device, 'com.some.package', 'prefs.xml') + self.assertEquals(len(prefs), 0) # collection is empty before loading + prefs.SetInt('myValue', 444) + self.assertEquals(len(prefs), 1) + self.assertEquals(prefs.GetInt('myValue'), 444) + self.assertTrue(prefs.HasProperty('myValue')) + prefs.Remove('myValue') + self.assertEquals(len(prefs), 0) + self.assertFalse(prefs.HasProperty('myValue')) + with self.assertRaises(KeyError): + prefs.GetInt('myValue') + + def testPropertyType(self): + prefs = shared_prefs.SharedPrefs( + self.device, 'com.some.package', 'prefs.xml') + prefs.SetInt('myValue', 444) + self.assertEquals(prefs.PropertyType('myValue'), 'int') + with self.assertRaises(TypeError): + prefs.GetString('myValue') + with self.assertRaises(TypeError): + prefs.SetString('myValue', 'hello') + + def testLoad(self): + prefs = shared_prefs.SharedPrefs( + self.device, 'com.some.package', 'prefs.xml') + self.assertEquals(len(prefs), 0) # collection is empty before loading + prefs.Load() + self.assertEquals(len(prefs), len(self.expected_data)) + self.assertEquals(prefs.AsDict(), self.expected_data) + self.assertFalse(prefs.changed) + + def testClear(self): + prefs = shared_prefs.SharedPrefs( + self.device, 'com.some.package', 'prefs.xml') + prefs.Load() + self.assertEquals(prefs.AsDict(), self.expected_data) + self.assertFalse(prefs.changed) + prefs.Clear() + self.assertEquals(len(prefs), 0) # collection is empty now + self.assertTrue(prefs.changed) + + def testCommit(self): + type(self.device).build_version_sdk = mock.PropertyMock( + return_value=version_codes.LOLLIPOP_MR1) + prefs = shared_prefs.SharedPrefs( + self.device, 'com.some.package', 'other_prefs.xml') + self.assertFalse(self.device.FileExists(prefs.path)) # file does not exist + prefs.Load() + self.assertEquals(len(prefs), 0) # file did not exist, collection is empty + prefs.SetInt('magicNumber', 42) + prefs.SetFloat('myMetric', 3.14) + prefs.SetLong('bigNumner', 6000000000) + prefs.SetStringSet('apps', ['gmail', 'chrome', 'music']) + self.assertFalse(self.device.FileExists(prefs.path)) # still does not exist + self.assertTrue(prefs.changed) + prefs.Commit() + self.assertTrue(self.device.FileExists(prefs.path)) # should exist now + self.device.KillAll.assert_called_once_with(prefs.package, exact=True, + as_root=True, quiet=True) + self.assertFalse(prefs.changed) + + prefs = shared_prefs.SharedPrefs( + self.device, 'com.some.package', 'other_prefs.xml') + self.assertEquals(len(prefs), 0) # collection is empty before loading + prefs.Load() + self.assertEquals(prefs.AsDict(), { + 'magicNumber': 42, + 'myMetric': 3.14, + 'bigNumner': 6000000000, + 'apps': ['gmail', 'chrome', 'music']}) # data survived roundtrip + + def testAsContextManager_onlyReads(self): + with shared_prefs.SharedPrefs( + self.device, 'com.some.package', 'prefs.xml') as prefs: + self.assertEquals(prefs.AsDict(), self.expected_data) # loaded and ready + self.assertEquals(self.device.WriteFile.call_args_list, []) # did not write + + def testAsContextManager_readAndWrite(self): + type(self.device).build_version_sdk = mock.PropertyMock( + return_value=version_codes.LOLLIPOP_MR1) + with shared_prefs.SharedPrefs( + self.device, 'com.some.package', 'prefs.xml') as prefs: + prefs.SetBoolean('featureEnabled', True) + prefs.Remove('someHashValue') + prefs.SetString('newString', 'hello') + + self.assertTrue(self.device.WriteFile.called) # did write + with shared_prefs.SharedPrefs( + self.device, 'com.some.package', 'prefs.xml') as prefs: + # changes persisted + self.assertTrue(prefs.GetBoolean('featureEnabled')) + self.assertFalse(prefs.HasProperty('someHashValue')) + self.assertEquals(prefs.GetString('newString'), 'hello') + self.assertTrue(prefs.HasProperty('databaseVersion')) # still there + + def testAsContextManager_commitAborted(self): + with self.assertRaises(TypeError): + with shared_prefs.SharedPrefs( + self.device, 'com.some.package', 'prefs.xml') as prefs: + prefs.SetBoolean('featureEnabled', True) + prefs.Remove('someHashValue') + prefs.SetString('newString', 'hello') + prefs.SetInt('newString', 123) # oops! + + self.assertEquals(self.device.WriteFile.call_args_list, []) # did not write + with shared_prefs.SharedPrefs( + self.device, 'com.some.package', 'prefs.xml') as prefs: + # contents were not modified + self.assertEquals(prefs.AsDict(), self.expected_data) + +if __name__ == '__main__': + logging.getLogger().setLevel(logging.DEBUG) + unittest.main(verbosity=2) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/split_select.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/split_select.py new file mode 100644 index 0000000..6c3d231 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/split_select.py @@ -0,0 +1,63 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""This module wraps Android's split-select tool.""" + +from devil.android.sdk import build_tools +from devil.utils import cmd_helper +from devil.utils import lazy + + +_split_select_path = lazy.WeakConstant( + lambda: build_tools.GetPath('split-select')) + + +def _RunSplitSelectCmd(args): + """Runs a split-select command. + + Args: + args: A list of arguments for split-select. + + Returns: + The output of the command. + """ + cmd = [_split_select_path.read()] + args + status, output = cmd_helper.GetCmdStatusAndOutput(cmd) + if status != 0: + raise Exception('Failed running command "%s" with output "%s".' % + (' '.join(cmd), output)) + return output + + +def _SplitConfig(device, allow_cached_props=False): + """Returns a config specifying which APK splits are required by the device. + + Args: + device: A DeviceUtils object. + allow_cached_props: Whether to use cached values for device properties. + """ + return ('%s-r%s-%s:%s' % + (device.GetLanguage(cache=allow_cached_props), + device.GetCountry(cache=allow_cached_props), + device.screen_density, + device.product_cpu_abi)) + + +def SelectSplits(device, base_apk, split_apks, allow_cached_props=False): + """Determines which APK splits the device requires. + + Args: + device: A DeviceUtils object. + base_apk: The path of the base APK. + split_apks: A list of paths of APK splits. + allow_cached_props: Whether to use cached values for device properties. + + Returns: + The list of APK splits that the device requires. + """ + config = _SplitConfig(device, allow_cached_props=allow_cached_props) + args = ['--target', config, '--base', base_apk] + for split in split_apks: + args.extend(['--split', split]) + return _RunSplitSelectCmd(args).splitlines() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/test/data/push_directory/push_directory_contents.txt b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/test/data/push_directory/push_directory_contents.txt new file mode 100644 index 0000000..573df2e --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/test/data/push_directory/push_directory_contents.txt @@ -0,0 +1 @@ +Goodnight, moon. diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/test/data/push_file.txt b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/test/data/push_file.txt new file mode 100644 index 0000000..af5626b --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/test/data/push_file.txt @@ -0,0 +1 @@ +Hello, world! diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/version_codes.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/version_codes.py new file mode 100644 index 0000000..3f03cba --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/sdk/version_codes.py @@ -0,0 +1,20 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Android SDK version codes. + +http://developer.android.com/reference/android/os/Build.VERSION_CODES.html +""" + +JELLY_BEAN = 16 +JELLY_BEAN_MR1 = 17 +JELLY_BEAN_MR2 = 18 +KITKAT = 19 +KITKAT_WATCH = 20 +LOLLIPOP = 21 +LOLLIPOP_MR1 = 22 +MARSHMALLOW = 23 +NOUGAT = 24 +NOUGAT_MR1 = 25 + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/settings.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/settings.py new file mode 100644 index 0000000..d053d2a --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/settings.py @@ -0,0 +1,283 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import logging + +logger = logging.getLogger(__name__) + +_LOCK_SCREEN_SETTINGS_PATH = '/data/system/locksettings.db' +_ALTERNATE_LOCK_SCREEN_SETTINGS_PATH = ( + '/data/data/com.android.providers.settings/databases/settings.db') +PASSWORD_QUALITY_UNSPECIFIED = '0' +_COMPATIBLE_BUILD_TYPES = ['userdebug', 'eng'] + + +ENABLE_LOCATION_SETTINGS = [ + # Note that setting these in this order is required in order for all of + # them to take and stick through a reboot. + ('com.google.settings/partner', [ + ('use_location_for_services', 1), + ]), + ('settings/secure', [ + # Ensure Geolocation is enabled and allowed for tests. + ('location_providers_allowed', 'gps,network'), + ]), + ('com.google.settings/partner', [ + ('network_location_opt_in', 1), + ]) +] + +DISABLE_LOCATION_SETTINGS = [ + ('com.google.settings/partner', [ + ('use_location_for_services', 0), + ]), + ('settings/secure', [ + # Ensure Geolocation is disabled. + ('location_providers_allowed', ''), + ]), +] + +ENABLE_MOCK_LOCATION_SETTINGS = [ + ('settings/secure', [ + ('mock_location', 1), + ]), +] + +DISABLE_MOCK_LOCATION_SETTINGS = [ + ('settings/secure', [ + ('mock_location', 0), + ]), +] + +DETERMINISTIC_DEVICE_SETTINGS = [ + ('settings/global', [ + ('assisted_gps_enabled', 0), + + # Disable "auto time" and "auto time zone" to avoid network-provided time + # to overwrite the device's datetime and timezone synchronized from host + # when running tests later. See b/6569849. + ('auto_time', 0), + ('auto_time_zone', 0), + + ('development_settings_enabled', 1), + + # Flag for allowing ActivityManagerService to send ACTION_APP_ERROR intents + # on application crashes and ANRs. If this is disabled, the crash/ANR dialog + # will never display the "Report" button. + # Type: int ( 0 = disallow, 1 = allow ) + ('send_action_app_error', 0), + + ('stay_on_while_plugged_in', 3), + + ('verifier_verify_adb_installs', 0), + ]), + ('settings/secure', [ + ('allowed_geolocation_origins', + 'http://www.google.co.uk http://www.google.com'), + + # Ensure that we never get random dialogs like "Unfortunately the process + # android.process.acore has stopped", which steal the focus, and make our + # automation fail (because the dialog steals the focus then mistakenly + # receives the injected user input events). + ('anr_show_background', 0), + + ('lockscreen.disabled', 1), + + ('screensaver_enabled', 0), + + ('skip_first_use_hints', 1), + ]), + ('settings/system', [ + # Don't want devices to accidentally rotate the screen as that could + # affect performance measurements. + ('accelerometer_rotation', 0), + + ('lockscreen.disabled', 1), + + # Turn down brightness and disable auto-adjust so that devices run cooler. + ('screen_brightness', 5), + ('screen_brightness_mode', 0), + + ('user_rotation', 0), + ]), +] + +NETWORK_DISABLED_SETTINGS = [ + ('settings/global', [ + ('airplane_mode_on', 1), + ('wifi_on', 0), + ]), +] + + +class ContentSettings(dict): + + """A dict interface to interact with device content settings. + + System properties are key/value pairs as exposed by adb shell content. + """ + + def __init__(self, table, device): + super(ContentSettings, self).__init__() + self._table = table + self._device = device + + @staticmethod + def _GetTypeBinding(value): + if isinstance(value, bool): + return 'b' + if isinstance(value, float): + return 'f' + if isinstance(value, int): + return 'i' + if isinstance(value, long): + return 'l' + if isinstance(value, str): + return 's' + raise ValueError('Unsupported type %s' % type(value)) + + def iteritems(self): + for row in self._device.RunShellCommand( + ['content', 'query', '--uri', 'content://%s' % self._table], + check_return=True, as_root=True): + key, value = _ParseContentRow(row) + if not key: + continue + yield key, value + + def __getitem__(self, key): + query_row = self._device.RunShellCommand( + ['content', 'query', '--uri', 'content://%s' % self._table, + '--where', "name='%s'" % key], + check_return=True, as_root=True, single_line=True) + parsed_key, parsed_value = _ParseContentRow(query_row) + if parsed_key is None: + raise KeyError('key=%s not found' % key) + if parsed_key != key: + raise KeyError('Expected key=%s, but got key=%s' % (key, parsed_key)) + return parsed_value + + def __setitem__(self, key, value): + if key in self: + self._device.RunShellCommand( + ['content', 'update', '--uri', 'content://%s' % self._table, + '--bind', 'value:%s:%s' % (self._GetTypeBinding(value), value), + '--where', "name='%s'" % key], + check_return=True, as_root=True) + else: + self._device.RunShellCommand( + ['content', 'insert', '--uri', 'content://%s' % self._table, + '--bind', 'name:%s:%s' % (self._GetTypeBinding(key), key), + '--bind', 'value:%s:%s' % (self._GetTypeBinding(value), value)], + check_return=True, as_root=True) + + def __delitem__(self, key): + self._device.RunShellCommand( + ['content', 'delete', '--uri', 'content://%s' % self._table, + '--bind', 'name:%s:%s' % (self._GetTypeBinding(key), key)], + check_return=True, as_root=True) + + +def ConfigureContentSettings(device, desired_settings): + """Configures device content setings from a list. + + Many settings are documented at: + http://developer.android.com/reference/android/provider/Settings.Global.html + http://developer.android.com/reference/android/provider/Settings.Secure.html + http://developer.android.com/reference/android/provider/Settings.System.html + + Many others are undocumented. + + Args: + device: A DeviceUtils instance for the device to configure. + desired_settings: A list of (table, [(key: value), ...]) for all + settings to configure. + """ + for table, key_value in desired_settings: + settings = ContentSettings(table, device) + for key, value in key_value: + settings[key] = value + logger.info('\n%s %s', table, (80 - len(table)) * '-') + for key, value in sorted(settings.iteritems()): + logger.info('\t%s: %s', key, value) + + +def SetLockScreenSettings(device): + """Sets lock screen settings on the device. + + On certain device/Android configurations we need to disable the lock screen in + a different database. Additionally, the password type must be set to + DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED. + Lock screen settings are stored in sqlite on the device in: + /data/system/locksettings.db + + IMPORTANT: The first column is used as a primary key so that all rows with the + same value for that column are removed from the table prior to inserting the + new values. + + Args: + device: A DeviceUtils instance for the device to configure. + + Raises: + Exception if the setting was not properly set. + """ + if device.build_type not in _COMPATIBLE_BUILD_TYPES: + logger.warning('Unable to disable lockscreen on %s builds.', + device.build_type) + return + + def get_lock_settings(table): + return [(table, 'lockscreen.disabled', '1'), + (table, 'lockscreen.password_type', PASSWORD_QUALITY_UNSPECIFIED), + (table, 'lockscreen.password_type_alternate', + PASSWORD_QUALITY_UNSPECIFIED)] + + if device.FileExists(_LOCK_SCREEN_SETTINGS_PATH): + db = _LOCK_SCREEN_SETTINGS_PATH + locksettings = get_lock_settings('locksettings') + columns = ['name', 'user', 'value'] + generate_values = lambda k, v: [k, '0', v] + elif device.FileExists(_ALTERNATE_LOCK_SCREEN_SETTINGS_PATH): + db = _ALTERNATE_LOCK_SCREEN_SETTINGS_PATH + locksettings = get_lock_settings('secure') + get_lock_settings('system') + columns = ['name', 'value'] + generate_values = lambda k, v: [k, v] + else: + logger.warning('Unable to find database file to set lock screen settings.') + return + + for table, key, value in locksettings: + # Set the lockscreen setting for default user '0' + values = generate_values(key, value) + + cmd = """begin transaction; +delete from '%(table)s' where %(primary_key)s='%(primary_value)s'; +insert into '%(table)s' (%(columns)s) values (%(values)s); +commit transaction;""" % { + 'table': table, + 'primary_key': columns[0], + 'primary_value': values[0], + 'columns': ', '.join(columns), + 'values': ', '.join(["'%s'" % value for value in values]) + } + output_msg = device.RunShellCommand( + ['sqlite3', db, cmd], check_return=True, as_root=True) + if output_msg: + logger.info(' '.join(output_msg)) + + +def _ParseContentRow(row): + """Parse key, value entries from a row string.""" + # Example row: + # 'Row: 0 _id=13, name=logging_id2, value=-1fccbaa546705b05' + fields = row.split(', ') + key = None + value = '' + for field in fields: + k, _, v = field.partition('=') + if k == 'name': + key = v + elif k == 'value': + value = v + return key, value diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/__init__.py new file mode 100644 index 0000000..50b23df --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/__init__.py @@ -0,0 +1,3 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/adb_run_shell_cmd.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/adb_run_shell_cmd.py new file mode 100644 index 0000000..77b67e8 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/adb_run_shell_cmd.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import argparse +import json +import os +import sys + +if __name__ == '__main__': + sys.path.append( + os.path.abspath(os.path.join(os.path.dirname(__file__), + '..', '..', '..'))) + +from devil.android import device_blacklist +from devil.android import device_utils +from devil.utils import run_tests_helper + + +def main(): + parser = argparse.ArgumentParser( + 'Run an adb shell command on selected devices') + parser.add_argument('cmd', help='Adb shell command to run.', nargs="+") + parser.add_argument('-d', '--device', action='append', dest='devices', + default=[], + help='Device to run cmd on. Runs on all devices if not ' + 'specified. Set multiple times for multiple devices') + parser.add_argument('-v', '--verbose', default=0, action='count', + help='Verbose level (multiple times for more)') + parser.add_argument('--blacklist-file', help='Device blacklist file.') + parser.add_argument('--as-root', action='store_true', help='Run as root.') + parser.add_argument('--json-output', + help='File to dump json output to.') + args = parser.parse_args() + run_tests_helper.SetLogLevel(args.verbose) + + args.blacklist_file = device_blacklist.Blacklist( + args.blacklist_file) if args.blacklist_file else None + devices = device_utils.DeviceUtils.HealthyDevices( + blacklist=args.blacklist_file, device_arg=args.devices) + + p_out = (device_utils.DeviceUtils.parallel(devices).RunShellCommand( + args.cmd, large_output=True, as_root=args.as_root, check_return=True) + .pGet(None)) + + data = {} + for device, output in zip(devices, p_out): + for line in output: + print '%s: %s' % (device, line) + data[str(device)] = output + + if args.json_output: + with open(args.json_output, 'w') as f: + json.dump(data, f) + + return 0 + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/cpufreq.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/cpufreq.py new file mode 100644 index 0000000..97deaf0 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/cpufreq.py @@ -0,0 +1,87 @@ +#! /usr/bin/env python +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""A script to manipulate device CPU frequency.""" + +import argparse +import os +import pprint +import sys + +if __name__ == '__main__': + sys.path.append( + os.path.abspath(os.path.join(os.path.dirname(__file__), + '..', '..', '..'))) + +from devil import devil_env +from devil.android import device_utils +from devil.android.perf import perf_control +from devil.utils import run_tests_helper + + +def SetScalingGovernor(device, args): + p = perf_control.PerfControl(device) + p.SetScalingGovernor(args.governor) + + +def GetScalingGovernor(device, _args): + p = perf_control.PerfControl(device) + for cpu, governor in p.GetScalingGovernor(): + print '%s %s: %s' % (str(device), cpu, governor) + + +def ListAvailableGovernors(device, _args): + p = perf_control.PerfControl(device) + for cpu, governors in p.ListAvailableGovernors(): + print '%s %s: %s' % (str(device), cpu, pprint.pformat(governors)) + + +def main(raw_args): + parser = argparse.ArgumentParser() + parser.add_argument( + '--adb-path', + help='ADB binary path.') + parser.add_argument( + '--device', dest='devices', action='append', default=[], + help='Devices for which the governor should be set. Defaults to all.') + parser.add_argument( + '-v', '--verbose', action='count', + help='Log more.') + + subparsers = parser.add_subparsers() + + set_governor = subparsers.add_parser('set-governor') + set_governor.add_argument( + 'governor', + help='Desired CPU governor.') + set_governor.set_defaults(func=SetScalingGovernor) + + get_governor = subparsers.add_parser('get-governor') + get_governor.set_defaults(func=GetScalingGovernor) + + list_governors = subparsers.add_parser('list-governors') + list_governors.set_defaults(func=ListAvailableGovernors) + + args = parser.parse_args(raw_args) + + run_tests_helper.SetLogLevel(args.verbose) + + devil_dynamic_config = devil_env.EmptyConfig() + if args.adb_path: + devil_dynamic_config['dependencies'].update( + devil_env.LocalConfigItem( + 'adb', devil_env.GetPlatform(), args.adb_path)) + devil_env.config.Initialize(configs=[devil_dynamic_config]) + + devices = device_utils.DeviceUtils.HealthyDevices(device_arg=args.devices) + + parallel_devices = device_utils.DeviceUtils.parallel(devices) + parallel_devices.pMap(args.func, args) + + return 0 + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1:])) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/device_monitor.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/device_monitor.py new file mode 100644 index 0000000..d0f7521 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/device_monitor.py @@ -0,0 +1,232 @@ +#!/usr/bin/env python +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Launches a daemon to monitor android device temperatures & status. + +This script will repeatedly poll the given devices for their temperatures and +status every 60 seconds and dump the stats to file on the host. +""" + +import argparse +import collections +import json +import logging +import logging.handlers +import os +import re +import socket +import sys +import time + +if __name__ == '__main__': + sys.path.append( + os.path.abspath(os.path.join(os.path.dirname(__file__), + '..', '..', '..'))) + +from devil import devil_env +from devil.android import battery_utils +from devil.android import device_blacklist +from devil.android import device_errors +from devil.android import device_utils + + +# Various names of sensors used to measure cpu temp +CPU_TEMP_SENSORS = [ + # most nexus devices + 'tsens_tz_sensor0', + # android one + 'mtktscpu', + # nexus 9 + 'CPU-therm', +] + +DEVICE_FILE_VERSION = 1 +DEVICE_FILE = os.path.join( + os.path.expanduser('~'), '.android', + '%s__android_device_status.json' % socket.gethostname().split('.')[0]) + +MEM_INFO_REGEX = re.compile(r'.*?\:\s*(\d+)\s*kB') # ex: 'MemTotal: 185735 kB' + + +def get_device_status_unsafe(device): + """Polls the given device for various info. + + Returns: A dict of the following format: + { + 'battery': { + 'level': 100, + 'temperature': 123 + }, + 'build': { + 'build.id': 'ABC12D', + 'product.device': 'chickenofthesea' + }, + 'mem': { + 'avail': 1000000, + 'total': 1234567, + }, + 'processes': 123, + 'state': 'good', + 'temp': { + 'some_sensor': 30 + }, + 'uptime': 1234.56, + } + """ + status = collections.defaultdict(dict) + + # Battery + battery = battery_utils.BatteryUtils(device) + battery_info = battery.GetBatteryInfo() + try: + level = int(battery_info.get('level')) + except (KeyError, TypeError, ValueError): + level = None + if level and level >= 0 and level <= 100: + status['battery']['level'] = level + try: + temperature = int(battery_info.get('temperature')) + except (KeyError, TypeError, ValueError): + temperature = None + if temperature: + status['battery']['temperature'] = temperature + + # Build + status['build']['build.id'] = device.build_id + status['build']['product.device'] = device.build_product + + # Memory + mem_info = '' + try: + mem_info = device.ReadFile('/proc/meminfo') + except device_errors.AdbShellCommandFailedError: + logging.exception('Unable to read /proc/meminfo') + for line in mem_info.splitlines(): + match = MEM_INFO_REGEX.match(line) + if match: + try: + value = int(match.group(1)) + except ValueError: + continue + key = line.split(':')[0].strip() + if 'MemTotal' == key: + status['mem']['total'] = value + elif 'MemFree' == key: + status['mem']['free'] = value + + # Process + try: + # TODO(catapult:#3215): Migrate to device.GetPids() + lines = device.RunShellCommand(['ps'], check_return=True) + status['processes'] = len(lines) - 1 # Ignore the header row. + except device_errors.AdbShellCommandFailedError: + logging.exception('Unable to count process list.') + + # CPU Temps + # Find a thermal sensor that matches one in CPU_TEMP_SENSORS and read its + # temperature. + files = [] + try: + files = device.RunShellCommand( + 'grep -lE "%s" /sys/class/thermal/thermal_zone*/type' % '|'.join( + CPU_TEMP_SENSORS), shell=True, check_return=True) + except device_errors.AdbShellCommandFailedError: + logging.exception('Unable to list thermal sensors.') + for f in files: + try: + sensor_name = device.ReadFile(f).strip() + temp = float(device.ReadFile(f[:-4] + 'temp').strip()) # s/type^/temp + status['temp'][sensor_name] = temp + except (device_errors.AdbShellCommandFailedError, ValueError): + logging.exception('Unable to read thermal sensor %s', f) + + # Uptime + try: + uptimes = device.ReadFile('/proc/uptime').split() + status['uptime'] = float(uptimes[0]) # Take the first field (actual uptime) + except (device_errors.AdbShellCommandFailedError, ValueError): + logging.exception('Unable to read /proc/uptime') + + status['state'] = 'available' + return status + + +def get_device_status(device): + try: + status = get_device_status_unsafe(device) + except device_errors.DeviceUnreachableError: + status = {'state': 'offline'} + return status + + +def get_all_status(blacklist): + status_dict = { + 'version': DEVICE_FILE_VERSION, + 'devices': {}, + } + + healthy_devices = device_utils.DeviceUtils.HealthyDevices(blacklist) + parallel_devices = device_utils.DeviceUtils.parallel(healthy_devices) + results = parallel_devices.pMap(get_device_status).pGet(None) + + status_dict['devices'] = { + device.serial: result for device, result in zip(healthy_devices, results) + } + + if blacklist: + for device, reason in blacklist.Read().iteritems(): + status_dict['devices'][device] = { + 'state': reason.get('reason', 'blacklisted')} + + status_dict['timestamp'] = time.time() + return status_dict + + +def main(argv): + """Launches the device monitor. + + Polls the devices for their battery and cpu temperatures and scans the + blacklist file every 60 seconds and dumps the data to DEVICE_FILE. + """ + + parser = argparse.ArgumentParser( + description='Launches the device monitor.') + parser.add_argument('--adb-path', help='Path to adb binary.') + parser.add_argument('--blacklist-file', help='Path to device blacklist file.') + args = parser.parse_args(argv) + + logger = logging.getLogger() + logger.setLevel(logging.DEBUG) + handler = logging.handlers.RotatingFileHandler( + '/tmp/device_monitor.log', maxBytes=10 * 1024 * 1024, backupCount=5) + fmt = logging.Formatter('%(asctime)s %(levelname)s %(message)s', + datefmt='%y%m%d %H:%M:%S') + handler.setFormatter(fmt) + logger.addHandler(handler) + + devil_dynamic_config = devil_env.EmptyConfig() + if args.adb_path: + devil_dynamic_config['dependencies'].update( + devil_env.LocalConfigItem( + 'adb', devil_env.GetPlatform(), args.adb_path)) + + devil_env.config.Initialize(configs=[devil_dynamic_config]) + + blacklist = (device_blacklist.Blacklist(args.blacklist_file) + if args.blacklist_file else None) + + logging.info('Device monitor running with pid %d, adb: %s, blacklist: %s', + os.getpid(), args.adb_path, args.blacklist_file) + while True: + start = time.time() + status_dict = get_all_status(blacklist) + with open(DEVICE_FILE, 'wb') as f: + json.dump(status_dict, f, indent=2, sort_keys=True) + logging.info('Got status of all devices in %.2fs.', time.time() - start) + time.sleep(60) + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1:])) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/device_monitor_test.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/device_monitor_test.py new file mode 100644 index 0000000..e39e324 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/device_monitor_test.py @@ -0,0 +1,168 @@ +#!/usr/bin/env python +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import sys +import unittest + +if __name__ == '__main__': + sys.path.append( + os.path.abspath(os.path.join(os.path.dirname(__file__), + '..', '..', '..'))) + +from devil import devil_env +from devil.android import device_errors +from devil.android import device_utils +from devil.android.tools import device_monitor + +with devil_env.SysPath(devil_env.PYMOCK_PATH): + import mock # pylint: disable=import-error + + +class DeviceMonitorTest(unittest.TestCase): + + def setUp(self): + self.device = mock.Mock(spec=device_utils.DeviceUtils, + serial='device_cereal', build_id='abc123', build_product='clownfish') + self.file_contents = { + '/proc/meminfo': """ + MemTotal: 1234567 kB + MemFree: 1000000 kB + MemUsed: 234567 kB + """, + '/sys/class/thermal/thermal_zone0/type': 'CPU-therm', + '/sys/class/thermal/thermal_zone0/temp': '30', + '/proc/uptime': '12345 99999', + } + self.device.ReadFile = mock.MagicMock( + side_effect=lambda file_name: self.file_contents[file_name]) + + self.cmd_outputs = { + 'ps': ['headers', 'p1', 'p2', 'p3', 'p4', 'p5'], + 'grep': ['/sys/class/thermal/thermal_zone0/type'], + } + + def mock_run_shell(cmd, **_kwargs): + args = cmd.split() if isinstance(cmd, basestring) else cmd + try: + return self.cmd_outputs[args[0]] + except KeyError: + raise device_errors.AdbShellCommandFailedError(cmd, None, None) + + self.device.RunShellCommand = mock.MagicMock(side_effect=mock_run_shell) + + self.battery = mock.Mock() + self.battery.GetBatteryInfo = mock.MagicMock( + return_value={'level': '80', 'temperature': '123'}) + + self.expected_status = { + 'device_cereal': { + 'processes': 5, + 'temp': { + 'CPU-therm': 30.0 + }, + 'battery': { + 'temperature': 123, + 'level': 80 + }, + 'uptime': 12345.0, + 'mem': { + 'total': 1234567, + 'free': 1000000 + }, + 'build': { + 'build.id': 'abc123', + 'product.device': 'clownfish', + }, + 'state': 'available', + } + } + + @mock.patch('devil.android.battery_utils.BatteryUtils') + @mock.patch('devil.android.device_utils.DeviceUtils.HealthyDevices') + def test_getStats(self, get_devices, get_battery): + get_devices.return_value = [self.device] + get_battery.return_value = self.battery + + status = device_monitor.get_all_status(None) + self.assertEquals(self.expected_status, status['devices']) + + @mock.patch('devil.android.battery_utils.BatteryUtils') + @mock.patch('devil.android.device_utils.DeviceUtils.HealthyDevices') + def test_getStatsNoBattery(self, get_devices, get_battery): + get_devices.return_value = [self.device] + get_battery.return_value = self.battery + broken_battery_info = mock.Mock() + broken_battery_info.GetBatteryInfo = mock.MagicMock( + return_value={'level': '-1', 'temperature': 'not_a_number'}) + get_battery.return_value = broken_battery_info + + # Should be same status dict but without battery stats. + expected_status_no_battery = self.expected_status.copy() + expected_status_no_battery['device_cereal'].pop('battery') + + status = device_monitor.get_all_status(None) + self.assertEquals(expected_status_no_battery, status['devices']) + + @mock.patch('devil.android.battery_utils.BatteryUtils') + @mock.patch('devil.android.device_utils.DeviceUtils.HealthyDevices') + def test_getStatsNoPs(self, get_devices, get_battery): + get_devices.return_value = [self.device] + get_battery.return_value = self.battery + del self.cmd_outputs['ps'] # Throw exception on run shell ps command. + + # Should be same status dict but without process stats. + expected_status_no_ps = self.expected_status.copy() + expected_status_no_ps['device_cereal'].pop('processes') + + status = device_monitor.get_all_status(None) + self.assertEquals(expected_status_no_ps, status['devices']) + + @mock.patch('devil.android.battery_utils.BatteryUtils') + @mock.patch('devil.android.device_utils.DeviceUtils.HealthyDevices') + def test_getStatsNoSensors(self, get_devices, get_battery): + get_devices.return_value = [self.device] + get_battery.return_value = self.battery + del self.cmd_outputs['grep'] # Throw exception on run shell grep command. + + # Should be same status dict but without temp stats. + expected_status_no_temp = self.expected_status.copy() + expected_status_no_temp['device_cereal'].pop('temp') + + status = device_monitor.get_all_status(None) + self.assertEquals(expected_status_no_temp, status['devices']) + + @mock.patch('devil.android.battery_utils.BatteryUtils') + @mock.patch('devil.android.device_utils.DeviceUtils.HealthyDevices') + def test_getStatsWithBlacklist(self, get_devices, get_battery): + get_devices.return_value = [self.device] + get_battery.return_value = self.battery + blacklist = mock.Mock() + blacklist.Read = mock.MagicMock( + return_value={'bad_device': {'reason': 'offline'}}) + + # Should be same status dict but with extra blacklisted device. + expected_status = self.expected_status.copy() + expected_status['bad_device'] = {'state': 'offline'} + + status = device_monitor.get_all_status(blacklist) + self.assertEquals(expected_status, status['devices']) + + @mock.patch('devil.android.battery_utils.BatteryUtils') + @mock.patch('devil.android.device_utils.DeviceUtils.HealthyDevices') + def test_brokenTempValue(self, get_devices, get_battery): + self.file_contents['/sys/class/thermal/thermal_zone0/temp'] = 'n0t a numb3r' + get_devices.return_value = [self.device] + get_battery.return_value = self.battery + + expected_status_no_temp = self.expected_status.copy() + expected_status_no_temp['device_cereal'].pop('temp') + + status = device_monitor.get_all_status(None) + self.assertEquals(self.expected_status, status['devices']) + + +if __name__ == '__main__': + sys.exit(unittest.main()) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/device_recovery.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/device_recovery.py new file mode 100644 index 0000000..80c78d2 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/device_recovery.py @@ -0,0 +1,211 @@ +#!/usr/bin/env python +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""A script to recover devices in a known bad state.""" + +import argparse +import logging +import os +import psutil +import signal +import sys + +if __name__ == '__main__': + sys.path.append( + os.path.abspath(os.path.join(os.path.dirname(__file__), + '..', '..', '..'))) +from devil import devil_env +from devil.android import device_blacklist +from devil.android import device_errors +from devil.android import device_utils +from devil.android.tools import device_status +from devil.utils import lsusb +# TODO(jbudorick): Resolve this after experimenting w/ disabling the USB reset. +from devil.utils import reset_usb # pylint: disable=unused-import +from devil.utils import run_tests_helper + +logger = logging.getLogger(__name__) + + +def KillAllAdb(): + def get_all_adb(): + for p in psutil.process_iter(): + try: + if 'adb' in p.name: + yield p + except (psutil.NoSuchProcess, psutil.AccessDenied): + pass + + for sig in [signal.SIGTERM, signal.SIGQUIT, signal.SIGKILL]: + for p in get_all_adb(): + try: + logger.info('kill %d %d (%s [%s])', sig, p.pid, p.name, + ' '.join(p.cmdline)) + p.send_signal(sig) + except (psutil.NoSuchProcess, psutil.AccessDenied): + pass + for p in get_all_adb(): + try: + logger.error('Unable to kill %d (%s [%s])', p.pid, p.name, + ' '.join(p.cmdline)) + except (psutil.NoSuchProcess, psutil.AccessDenied): + pass + + +def RecoverDevice(device, blacklist, should_reboot=lambda device: True): + if device_status.IsBlacklisted(device.adb.GetDeviceSerial(), + blacklist): + logger.debug('%s is blacklisted, skipping recovery.', str(device)) + return + + if should_reboot(device): + try: + device.WaitUntilFullyBooted(retries=0) + except (device_errors.CommandTimeoutError, + device_errors.CommandFailedError, + device_errors.DeviceUnreachableError): + logger.exception('Failure while waiting for %s. ' + 'Attempting to recover.', str(device)) + try: + try: + device.Reboot(block=False, timeout=5, retries=0) + except device_errors.CommandTimeoutError: + logger.warning('Timed out while attempting to reboot %s normally.' + 'Attempting alternative reboot.', str(device)) + # The device drops offline before we can grab the exit code, so + # we don't check for status. + try: + device.adb.Root() + finally: + # We are already in a failure mode, attempt to reboot regardless of + # what device.adb.Root() returns. If the sysrq reboot fails an + # exception willbe thrown at that level. + device.adb.Shell('echo b > /proc/sysrq-trigger', expect_status=None, + timeout=5, retries=0) + except (device_errors.CommandFailedError, + device_errors.DeviceUnreachableError): + logger.exception('Failed to reboot %s.', str(device)) + if blacklist: + blacklist.Extend([device.adb.GetDeviceSerial()], + reason='reboot_failure') + except device_errors.CommandTimeoutError: + logger.exception('Timed out while rebooting %s.', str(device)) + if blacklist: + blacklist.Extend([device.adb.GetDeviceSerial()], + reason='reboot_timeout') + + try: + device.WaitUntilFullyBooted( + retries=0, timeout=device.REBOOT_DEFAULT_TIMEOUT) + except (device_errors.CommandFailedError, + device_errors.DeviceUnreachableError): + logger.exception('Failure while waiting for %s.', str(device)) + if blacklist: + blacklist.Extend([device.adb.GetDeviceSerial()], + reason='reboot_failure') + except device_errors.CommandTimeoutError: + logger.exception('Timed out while waiting for %s.', str(device)) + if blacklist: + blacklist.Extend([device.adb.GetDeviceSerial()], + reason='reboot_timeout') + + +def RecoverDevices(devices, blacklist, enable_usb_reset=False): + """Attempts to recover any inoperable devices in the provided list. + + Args: + devices: The list of devices to attempt to recover. + blacklist: The current device blacklist, which will be used then + reset. + """ + + statuses = device_status.DeviceStatus(devices, blacklist) + + should_restart_usb = set( + status['serial'] for status in statuses + if (not status['usb_status'] + or status['adb_status'] in ('offline', 'missing'))) + should_restart_adb = should_restart_usb.union(set( + status['serial'] for status in statuses + if status['adb_status'] == 'unauthorized')) + should_reboot_device = should_restart_adb.union(set( + status['serial'] for status in statuses + if status['blacklisted'])) + + logger.debug('Should restart USB for:') + for d in should_restart_usb: + logger.debug(' %s', d) + logger.debug('Should restart ADB for:') + for d in should_restart_adb: + logger.debug(' %s', d) + logger.debug('Should reboot:') + for d in should_reboot_device: + logger.debug(' %s', d) + + if blacklist: + blacklist.Reset() + + if should_restart_adb: + KillAllAdb() + for serial in should_restart_usb: + try: + # TODO(crbug.com/642194): Resetting may be causing more harm + # (specifically, kernel panics) than it does good. + if enable_usb_reset: + reset_usb.reset_android_usb(serial) + else: + logger.warning('USB reset disabled for %s (crbug.com/642914)', + serial) + except IOError: + logger.exception('Unable to reset USB for %s.', serial) + if blacklist: + blacklist.Extend([serial], reason='USB failure') + except device_errors.DeviceUnreachableError: + logger.exception('Unable to reset USB for %s.', serial) + if blacklist: + blacklist.Extend([serial], reason='offline') + + device_utils.DeviceUtils.parallel(devices).pMap( + RecoverDevice, blacklist, + should_reboot=lambda device: device.serial in should_reboot_device) + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument('--adb-path', + help='Absolute path to the adb binary to use.') + parser.add_argument('--blacklist-file', help='Device blacklist JSON file.') + parser.add_argument('--known-devices-file', action='append', default=[], + dest='known_devices_files', + help='Path to known device lists.') + parser.add_argument('--enable-usb-reset', action='store_true', + help='Reset USB if necessary.') + parser.add_argument('-v', '--verbose', action='count', default=1, + help='Log more information.') + + args = parser.parse_args() + run_tests_helper.SetLogLevel(args.verbose) + + devil_dynamic_config = devil_env.EmptyConfig() + if args.adb_path: + devil_dynamic_config['dependencies'].update( + devil_env.LocalConfigItem( + 'adb', devil_env.GetPlatform(), args.adb_path)) + devil_env.config.Initialize(configs=[devil_dynamic_config]) + + blacklist = (device_blacklist.Blacklist(args.blacklist_file) + if args.blacklist_file + else None) + + expected_devices = device_status.GetExpectedDevices(args.known_devices_files) + usb_devices = set(lsusb.get_android_devices()) + devices = [device_utils.DeviceUtils(s) + for s in expected_devices.union(usb_devices)] + + RecoverDevices(devices, blacklist, enable_usb_reset=args.enable_usb_reset) + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/device_status.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/device_status.py new file mode 100644 index 0000000..159c6c5 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/device_status.py @@ -0,0 +1,316 @@ +#!/usr/bin/env python +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""A script to keep track of devices across builds and report state.""" + +import argparse +import json +import logging +import os +import re +import sys + +if __name__ == '__main__': + sys.path.append( + os.path.abspath(os.path.join(os.path.dirname(__file__), + '..', '..', '..'))) +from devil import devil_env +from devil.android import battery_utils +from devil.android import device_blacklist +from devil.android import device_errors +from devil.android import device_list +from devil.android import device_utils +from devil.android.sdk import adb_wrapper +from devil.constants import exit_codes +from devil.utils import lsusb +from devil.utils import run_tests_helper + +logger = logging.getLogger(__name__) + +_RE_DEVICE_ID = re.compile(r'Device ID = (\d+)') + + +def IsBlacklisted(serial, blacklist): + return blacklist and serial in blacklist.Read() + + +def _BatteryStatus(device, blacklist): + battery_info = {} + try: + battery = battery_utils.BatteryUtils(device) + battery_info = battery.GetBatteryInfo(timeout=5) + battery_level = int(battery_info.get('level', 100)) + + if battery_level < 15: + logger.error('Critically low battery level (%d)', battery_level) + battery = battery_utils.BatteryUtils(device) + if not battery.GetCharging(): + battery.SetCharging(True) + if blacklist: + blacklist.Extend([device.adb.GetDeviceSerial()], reason='low_battery') + + except (device_errors.CommandFailedError, + device_errors.DeviceUnreachableError): + logger.exception('Failed to get battery information for %s', + str(device)) + + return battery_info + + +def _IMEISlice(device): + imei_slice = '' + try: + for l in device.RunShellCommand(['dumpsys', 'iphonesubinfo'], + check_return=True, timeout=5): + m = _RE_DEVICE_ID.match(l) + if m: + imei_slice = m.group(1)[-6:] + except (device_errors.CommandFailedError, + device_errors.DeviceUnreachableError): + logger.exception('Failed to get IMEI slice for %s', str(device)) + + return imei_slice + + +def DeviceStatus(devices, blacklist): + """Generates status information for the given devices. + + Args: + devices: The devices to generate status for. + blacklist: The current device blacklist. + Returns: + A dict of the following form: + { + '<serial>': { + 'serial': '<serial>', + 'adb_status': str, + 'usb_status': bool, + 'blacklisted': bool, + # only if the device is connected and not blacklisted + 'type': ro.build.product, + 'build': ro.build.id, + 'build_detail': ro.build.fingerprint, + 'battery': { + ... + }, + 'imei_slice': str, + 'wifi_ip': str, + }, + ... + } + """ + adb_devices = { + a[0].GetDeviceSerial(): a + for a in adb_wrapper.AdbWrapper.Devices(desired_state=None, long_list=True) + } + usb_devices = set(lsusb.get_android_devices()) + + def blacklisting_device_status(device): + serial = device.adb.GetDeviceSerial() + adb_status = ( + adb_devices[serial][1] if serial in adb_devices + else 'missing') + usb_status = bool(serial in usb_devices) + + device_status = { + 'serial': serial, + 'adb_status': adb_status, + 'usb_status': usb_status, + } + + if not IsBlacklisted(serial, blacklist): + if adb_status == 'device': + try: + build_product = device.build_product + build_id = device.build_id + build_fingerprint = device.build_fingerprint + build_description = device.build_description + wifi_ip = device.GetProp('dhcp.wlan0.ipaddress') + battery_info = _BatteryStatus(device, blacklist) + imei_slice = _IMEISlice(device) + + if (device.product_name == 'mantaray' and + battery_info.get('AC powered', None) != 'true'): + logger.error('Mantaray device not connected to AC power.') + + device_status.update({ + 'ro.build.product': build_product, + 'ro.build.id': build_id, + 'ro.build.fingerprint': build_fingerprint, + 'ro.build.description': build_description, + 'battery': battery_info, + 'imei_slice': imei_slice, + 'wifi_ip': wifi_ip, + }) + + except (device_errors.CommandFailedError, + device_errors.DeviceUnreachableError): + logger.exception('Failure while getting device status for %s.', + str(device)) + if blacklist: + blacklist.Extend([serial], reason='status_check_failure') + + except device_errors.CommandTimeoutError: + logger.exception('Timeout while getting device status for %s.', + str(device)) + if blacklist: + blacklist.Extend([serial], reason='status_check_timeout') + + elif blacklist: + blacklist.Extend([serial], + reason=adb_status if usb_status else 'offline') + + device_status['blacklisted'] = IsBlacklisted(serial, blacklist) + + return device_status + + parallel_devices = device_utils.DeviceUtils.parallel(devices) + statuses = parallel_devices.pMap(blacklisting_device_status).pGet(None) + return statuses + + +def _LogStatuses(statuses): + # Log the state of all devices. + for status in statuses: + logger.info(status['serial']) + adb_status = status.get('adb_status') + blacklisted = status.get('blacklisted') + logger.info(' USB status: %s', + 'online' if status.get('usb_status') else 'offline') + logger.info(' ADB status: %s', adb_status) + logger.info(' Blacklisted: %s', str(blacklisted)) + if adb_status == 'device' and not blacklisted: + logger.info(' Device type: %s', status.get('ro.build.product')) + logger.info(' OS build: %s', status.get('ro.build.id')) + logger.info(' OS build fingerprint: %s', + status.get('ro.build.fingerprint')) + logger.info(' Battery state:') + for k, v in status.get('battery', {}).iteritems(): + logger.info(' %s: %s', k, v) + logger.info(' IMEI slice: %s', status.get('imei_slice')) + logger.info(' WiFi IP: %s', status.get('wifi_ip')) + + +def _WriteBuildbotFile(file_path, statuses): + buildbot_path, _ = os.path.split(file_path) + if os.path.exists(buildbot_path): + with open(file_path, 'w') as f: + for status in statuses: + try: + if status['adb_status'] == 'device': + f.write('{serial} {adb_status} {build_product} {build_id} ' + '{temperature:.1f}C {level}%\n'.format( + serial=status['serial'], + adb_status=status['adb_status'], + build_product=status['type'], + build_id=status['build'], + temperature=float(status['battery']['temperature']) / 10, + level=status['battery']['level'] + )) + elif status.get('usb_status', False): + f.write('{serial} {adb_status}\n'.format( + serial=status['serial'], + adb_status=status['adb_status'] + )) + else: + f.write('{serial} offline\n'.format( + serial=status['serial'] + )) + except Exception: # pylint: disable=broad-except + pass + + +def GetExpectedDevices(known_devices_files): + expected_devices = set() + try: + for path in known_devices_files: + if os.path.exists(path): + expected_devices.update(device_list.GetPersistentDeviceList(path)) + else: + logger.warning('Could not find known devices file: %s', path) + except IOError: + logger.warning('Problem reading %s, skipping.', path) + + logger.info('Expected devices:') + for device in expected_devices: + logger.info(' %s', device) + return expected_devices + + +def AddArguments(parser): + parser.add_argument('--json-output', + help='Output JSON information into a specified file.') + parser.add_argument('--adb-path', + help='Absolute path to the adb binary to use.') + parser.add_argument('--blacklist-file', help='Device blacklist JSON file.') + parser.add_argument('--known-devices-file', action='append', default=[], + dest='known_devices_files', + help='Path to known device lists.') + parser.add_argument('--buildbot-path', '-b', + default='/home/chrome-bot/.adb_device_info', + help='Absolute path to buildbot file location') + parser.add_argument('-v', '--verbose', action='count', default=1, + help='Log more information.') + parser.add_argument('-w', '--overwrite-known-devices-files', + action='store_true', + help='If set, overwrites known devices files wiht new ' + 'values.') + +def main(): + parser = argparse.ArgumentParser() + AddArguments(parser) + args = parser.parse_args() + + run_tests_helper.SetLogLevel(args.verbose) + + devil_dynamic_config = devil_env.EmptyConfig() + + if args.adb_path: + devil_dynamic_config['dependencies'].update( + devil_env.LocalConfigItem( + 'adb', devil_env.GetPlatform(), args.adb_path)) + devil_env.config.Initialize(configs=[devil_dynamic_config]) + + blacklist = (device_blacklist.Blacklist(args.blacklist_file) + if args.blacklist_file + else None) + + expected_devices = GetExpectedDevices(args.known_devices_files) + usb_devices = set(lsusb.get_android_devices()) + devices = [device_utils.DeviceUtils(s) + for s in expected_devices.union(usb_devices)] + + statuses = DeviceStatus(devices, blacklist) + + # Log the state of all devices. + _LogStatuses(statuses) + + # Update the last devices file(s). + if args.overwrite_known_devices_files: + for path in args.known_devices_files: + device_list.WritePersistentDeviceList( + path, [status['serial'] for status in statuses]) + + # Write device info to file for buildbot info display. + _WriteBuildbotFile(args.buildbot_path, statuses) + + # Dump the device statuses to JSON. + if args.json_output: + with open(args.json_output, 'wb') as f: + f.write(json.dumps( + statuses, indent=4, sort_keys=True, separators=(',', ': '))) + + live_devices = [status['serial'] for status in statuses + if (status['adb_status'] == 'device' + and not IsBlacklisted(status['serial'], blacklist))] + + # If all devices failed, or if there are no devices, it's an infra error. + if not live_devices: + logger.error('No available devices.') + return 0 if live_devices else exit_codes.INFRA + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/flash_device.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/flash_device.py new file mode 100644 index 0000000..d13c1df --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/flash_device.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import argparse +import logging +import os +import sys + +if __name__ == '__main__': + sys.path.append(os.path.abspath(os.path.join( + os.path.dirname(__file__), '..', '..', '..'))) +from devil.android import device_blacklist +from devil.android import device_utils +from devil.android import fastboot_utils +from devil.android.tools import script_common +from devil.constants import exit_codes +from devil.utils import run_tests_helper + +logger = logging.getLogger(__name__) + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument('build_path', help='Path to android build.') + parser.add_argument('-d', '--device', dest='devices', action='append', + help='Device(s) to flash.') + parser.add_argument('-v', '--verbose', default=0, action='count', + help='Verbose level (multiple times for more)') + parser.add_argument('-w', '--wipe', action='store_true', + help='If set, wipes user data') + parser.add_argument('--blacklist-file', help='Device blacklist file.') + args = parser.parse_args() + run_tests_helper.SetLogLevel(args.verbose) + + if args.blacklist_file: + blacklist = device_blacklist.Blacklist(args.blacklist_file).Read() + if blacklist: + logger.critical('Device(s) in blacklist, not flashing devices:') + for key in blacklist: + logger.critical(' %s', key) + return exit_codes.INFRA + + flashed_devices = [] + failed_devices = [] + + def flash(device): + fastboot = fastboot_utils.FastbootUtils(device) + try: + fastboot.FlashDevice(args.build_path, wipe=args.wipe) + flashed_devices.append(device) + except Exception: # pylint: disable=broad-except + logger.exception('Device %s failed to flash.', str(device)) + failed_devices.append(device) + + devices = script_common.GetDevices(args.devices, args.blacklist_file) + device_utils.DeviceUtils.parallel(devices).pMap(flash) + + if flashed_devices: + logger.info('The following devices were flashed:') + logger.info(' %s', ' '.join(str(d) for d in flashed_devices)) + if failed_devices: + logger.critical('The following devices failed to flash:') + logger.critical(' %s', ' '.join(str(d) for d in failed_devices)) + return exit_codes.INFRA + return 0 + +if __name__ == '__main__': + sys.exit(main()) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/keyboard.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/keyboard.py new file mode 100644 index 0000000..31daf59 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/keyboard.py @@ -0,0 +1,129 @@ +#!/usr/bin/env python +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Use your keyboard as your phone's keyboard. Experimental.""" + +import argparse +import copy +import os +import sys +import termios +import tty + +if __name__ == '__main__': + sys.path.append( + os.path.abspath(os.path.join(os.path.dirname(__file__), + '..', '..', '..'))) +from devil import base_error +from devil.android.sdk import keyevent +from devil.android.tools import script_common +from devil.utils import run_tests_helper + + +_KEY_MAPPING = { + '\x08': keyevent.KEYCODE_DEL, + '\x0a': keyevent.KEYCODE_ENTER, + ' ': keyevent.KEYCODE_SPACE, + '.': keyevent.KEYCODE_PERIOD, + '0': keyevent.KEYCODE_0, + '1': keyevent.KEYCODE_1, + '2': keyevent.KEYCODE_2, + '3': keyevent.KEYCODE_3, + '4': keyevent.KEYCODE_4, + '5': keyevent.KEYCODE_5, + '6': keyevent.KEYCODE_6, + '7': keyevent.KEYCODE_7, + '8': keyevent.KEYCODE_8, + '9': keyevent.KEYCODE_9, + 'a': keyevent.KEYCODE_A, + 'b': keyevent.KEYCODE_B, + 'c': keyevent.KEYCODE_C, + 'd': keyevent.KEYCODE_D, + 'e': keyevent.KEYCODE_E, + 'f': keyevent.KEYCODE_F, + 'g': keyevent.KEYCODE_G, + 'h': keyevent.KEYCODE_H, + 'i': keyevent.KEYCODE_I, + 'j': keyevent.KEYCODE_J, + 'k': keyevent.KEYCODE_K, + 'l': keyevent.KEYCODE_L, + 'm': keyevent.KEYCODE_M, + 'n': keyevent.KEYCODE_N, + 'o': keyevent.KEYCODE_O, + 'p': keyevent.KEYCODE_P, + 'q': keyevent.KEYCODE_Q, + 'r': keyevent.KEYCODE_R, + 's': keyevent.KEYCODE_S, + 't': keyevent.KEYCODE_T, + 'u': keyevent.KEYCODE_U, + 'v': keyevent.KEYCODE_V, + 'w': keyevent.KEYCODE_W, + 'x': keyevent.KEYCODE_X, + 'y': keyevent.KEYCODE_Y, + 'z': keyevent.KEYCODE_Z, + '\x7f': keyevent.KEYCODE_DEL, +} + + +def Keyboard(device, stream_itr): + try: + for c in stream_itr: + k = _KEY_MAPPING.get(c) + if k: + device.SendKeyEvent(k) + else: + print + print '(No mapping for character 0x%x)' % ord(c) + except KeyboardInterrupt: + pass + + +def AddArguments(parser): + parser.add_argument('-d', '--device', action='append', dest='devices', + metavar='DEVICE', help='device serial') + parser.add_argument('-v', '--verbose', action='count', help='print more') + + +class MultipleDevicesError(base_error.BaseError): + def __init__(self, devices): + super(MultipleDevicesError, self).__init__( + 'More than one device found: %s' % ', '.join(str(d) for d in devices)) + + +def main(raw_args): + parser = argparse.ArgumentParser( + description="Use your keyboard as your phone's keyboard.") + AddArguments(parser) + args = parser.parse_args(raw_args) + + run_tests_helper.SetLogLevel(args.verbose) + + devices = script_common.GetDevices(args.devices, None) + if len(devices) > 1: + raise MultipleDevicesError(devices) + + def next_char(): + while True: + yield sys.stdin.read(1) + + try: + fd = sys.stdin.fileno() + + # See man 3 termios for more info on what this is doing. + old_attrs = termios.tcgetattr(fd) + new_attrs = copy.deepcopy(old_attrs) + new_attrs[tty.LFLAG] = new_attrs[tty.LFLAG] & ~(termios.ICANON) + new_attrs[tty.CC][tty.VMIN] = 1 + new_attrs[tty.CC][tty.VTIME] = 0 + termios.tcsetattr(fd, termios.TCSAFLUSH, new_attrs) + + Keyboard(devices[0], next_char()) + finally: + termios.tcsetattr(fd, termios.TCSAFLUSH, old_attrs) + return 0 + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1:])) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/provision_devices.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/provision_devices.py new file mode 100644 index 0000000..9359f11 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/provision_devices.py @@ -0,0 +1,663 @@ +#!/usr/bin/env python +# +# Copyright (c) 2013 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Provisions Android devices with settings required for bots. + +Usage: + ./provision_devices.py [-d <device serial number>] +""" + +import argparse +import datetime +import json +import logging +import os +import posixpath +import re +import sys +import time + +# Import _strptime before threaded code. datetime.datetime.strptime is +# threadsafe except for the initial import of the _strptime module. +# See crbug.com/584730 and https://bugs.python.org/issue7980. +import _strptime # pylint: disable=unused-import + +if __name__ == '__main__': + sys.path.append( + os.path.abspath(os.path.join(os.path.dirname(__file__), + '..', '..', '..'))) + +from devil import devil_env +from devil.android import battery_utils +from devil.android import device_blacklist +from devil.android import device_errors +from devil.android import device_temp_file +from devil.android import device_utils +from devil.android import settings +from devil.android.sdk import adb_wrapper +from devil.android.sdk import intent +from devil.android.sdk import keyevent +from devil.android.sdk import version_codes +from devil.android.tools import script_common +from devil.constants import exit_codes +from devil.utils import run_tests_helper +from devil.utils import timeout_retry + +logger = logging.getLogger(__name__) + +_SYSTEM_APP_DIRECTORIES = ['/system/app/', '/system/priv-app/'] +_SYSTEM_WEBVIEW_NAMES = ['webview', 'WebViewGoogle'] +_CHROME_PACKAGE_REGEX = re.compile('.*chrom.*') +_TOMBSTONE_REGEX = re.compile('tombstone.*') + + +class _DEFAULT_TIMEOUTS(object): + # L can take a while to reboot after a wipe. + LOLLIPOP = 600 + PRE_LOLLIPOP = 180 + + HELP_TEXT = '{}s on L, {}s on pre-L'.format(LOLLIPOP, PRE_LOLLIPOP) + + +class ProvisionStep(object): + + def __init__(self, cmd, reboot=False): + self.cmd = cmd + self.reboot = reboot + + +def ProvisionDevices( + devices, + blacklist_file, + adb_key_files=None, + disable_location=False, + disable_mock_location=False, + disable_network=False, + disable_system_chrome=False, + emulators=False, + enable_java_debug=False, + max_battery_temp=None, + min_battery_level=None, + output_device_blacklist=None, + reboot_timeout=None, + remove_system_webview=False, + system_app_remove_list=None, + system_package_remove_list=None, + wipe=True): + blacklist = (device_blacklist.Blacklist(blacklist_file) + if blacklist_file + else None) + system_app_remove_list = system_app_remove_list or [] + system_package_remove_list = system_package_remove_list or [] + try: + devices = script_common.GetDevices(devices, blacklist) + except device_errors.NoDevicesError: + logging.error('No available devices to provision.') + if blacklist: + logging.error('Local device blacklist: %s', blacklist.Read()) + raise + devices = [d for d in devices + if not emulators or d.adb.is_emulator] + parallel_devices = device_utils.DeviceUtils.parallel(devices) + + steps = [] + if wipe: + steps += [ProvisionStep(lambda d: Wipe(d, adb_key_files), reboot=True)] + steps += [ProvisionStep( + lambda d: SetProperties(d, enable_java_debug, disable_location, + disable_mock_location), + reboot=not emulators)] + + if disable_network: + steps.append(ProvisionStep(DisableNetwork)) + + if disable_system_chrome: + steps.append(ProvisionStep(DisableSystemChrome)) + + if max_battery_temp: + steps.append(ProvisionStep( + lambda d: WaitForBatteryTemperature(d, max_battery_temp))) + + if min_battery_level: + steps.append(ProvisionStep( + lambda d: WaitForCharge(d, min_battery_level))) + + if remove_system_webview: + system_app_remove_list.extend(_SYSTEM_WEBVIEW_NAMES) + + if system_app_remove_list or system_package_remove_list: + steps.append(ProvisionStep( + lambda d: RemoveSystemApps( + d, system_app_remove_list, system_package_remove_list))) + + steps.append(ProvisionStep(SetDate)) + steps.append(ProvisionStep(CheckExternalStorage)) + + parallel_devices.pMap(ProvisionDevice, steps, blacklist, reboot_timeout) + + blacklisted_devices = blacklist.Read() if blacklist else [] + if output_device_blacklist: + with open(output_device_blacklist, 'w') as f: + json.dump(blacklisted_devices, f) + if all(d in blacklisted_devices for d in devices): + raise device_errors.NoDevicesError + return 0 + + +def ProvisionDevice(device, steps, blacklist, reboot_timeout=None): + try: + if not reboot_timeout: + if device.build_version_sdk >= version_codes.LOLLIPOP: + reboot_timeout = _DEFAULT_TIMEOUTS.LOLLIPOP + else: + reboot_timeout = _DEFAULT_TIMEOUTS.PRE_LOLLIPOP + + for step in steps: + try: + device.WaitUntilFullyBooted(timeout=reboot_timeout, retries=0) + except device_errors.CommandTimeoutError: + logger.error('Device did not finish booting. Will try to reboot.') + device.Reboot(timeout=reboot_timeout) + step.cmd(device) + if step.reboot: + device.Reboot(False, retries=0) + device.adb.WaitForDevice() + + except device_errors.CommandTimeoutError: + logger.exception('Timed out waiting for device %s. Adding to blacklist.', + str(device)) + if blacklist: + blacklist.Extend([str(device)], reason='provision_timeout') + + except (device_errors.CommandFailedError, + device_errors.DeviceUnreachableError): + logger.exception('Failed to provision device %s. Adding to blacklist.', + str(device)) + if blacklist: + blacklist.Extend([str(device)], reason='provision_failure') + + +def Wipe(device, adb_key_files=None): + if (device.IsUserBuild() or + device.build_version_sdk >= version_codes.MARSHMALLOW): + WipeChromeData(device) + + package = 'com.google.android.gms' + if device.GetApplicationPaths(package): + version_name = device.GetApplicationVersion(package) + logger.info('Version name for %s is %s', package, version_name) + else: + logger.info('Package %s is not installed', package) + else: + WipeDevice(device, adb_key_files) + + +def WipeChromeData(device): + """Wipes chrome specific data from device + + (1) uninstall any app whose name matches *chrom*, except + com.android.chrome, which is the chrome stable package. Doing so also + removes the corresponding dirs under /data/data/ and /data/app/ + (2) remove any dir under /data/app-lib/ whose name matches *chrom* + (3) remove any files under /data/tombstones/ whose name matches "tombstone*" + (4) remove /data/local.prop if there is any + (5) remove /data/local/chrome-command-line if there is any + (6) remove anything under /data/local/.config/ if the dir exists + (this is telemetry related) + (7) remove anything under /data/local/tmp/ + + Arguments: + device: the device to wipe + """ + try: + if device.IsUserBuild(): + _UninstallIfMatch(device, _CHROME_PACKAGE_REGEX) + device.RunShellCommand('rm -rf %s/*' % device.GetExternalStoragePath(), + shell=True, check_return=True) + device.RunShellCommand('rm -rf /data/local/tmp/*', + shell=True, check_return=True) + else: + device.EnableRoot() + _UninstallIfMatch(device, _CHROME_PACKAGE_REGEX) + _WipeUnderDirIfMatch(device, '/data/app-lib/', _CHROME_PACKAGE_REGEX) + _WipeUnderDirIfMatch(device, '/data/tombstones/', _TOMBSTONE_REGEX) + + _WipeFileOrDir(device, '/data/local.prop') + _WipeFileOrDir(device, '/data/local/chrome-command-line') + _WipeFileOrDir(device, '/data/local/.config/') + _WipeFileOrDir(device, '/data/local/tmp/') + device.RunShellCommand('rm -rf %s/*' % device.GetExternalStoragePath(), + shell=True, check_return=True) + except device_errors.CommandFailedError: + logger.exception('Possible failure while wiping the device. ' + 'Attempting to continue.') + + +def _UninstallIfMatch(device, pattern): + installed_packages = device.RunShellCommand( + ['pm', 'list', 'packages'], check_return=True) + installed_system_packages = [ + pkg.split(':')[1] for pkg in device.RunShellCommand( + ['pm', 'list', 'packages', '-s'], check_return=True)] + for package_output in installed_packages: + package = package_output.split(":")[1] + if pattern.match(package) and package not in installed_system_packages: + device.Uninstall(package) + + +def _WipeUnderDirIfMatch(device, path, pattern): + for filename in device.ListDirectory(path): + if pattern.match(filename): + _WipeFileOrDir(device, posixpath.join(path, filename)) + + +def _WipeFileOrDir(device, path): + if device.PathExists(path): + device.RunShellCommand(['rm', '-rf', path], check_return=True) + + +def WipeDevice(device, adb_key_files): + """Wipes data from device, keeping only the adb_keys for authorization. + + After wiping data on a device that has been authorized, adb can still + communicate with the device, but after reboot the device will need to be + re-authorized because the adb keys file is stored in /data/misc/adb/. + Thus, adb_keys file is rewritten so the device does not need to be + re-authorized. + + Arguments: + device: the device to wipe + """ + try: + device.EnableRoot() + device_authorized = device.FileExists(adb_wrapper.ADB_KEYS_FILE) + if device_authorized: + adb_keys = device.ReadFile(adb_wrapper.ADB_KEYS_FILE, + as_root=True).splitlines() + device.RunShellCommand(['wipe', 'data'], + as_root=True, check_return=True) + device.adb.WaitForDevice() + + if device_authorized: + adb_keys_set = set(adb_keys) + for adb_key_file in adb_key_files or []: + try: + with open(adb_key_file, 'r') as f: + adb_public_keys = f.readlines() + adb_keys_set.update(adb_public_keys) + except IOError: + logger.warning('Unable to find adb keys file %s.', adb_key_file) + _WriteAdbKeysFile(device, '\n'.join(adb_keys_set)) + except device_errors.CommandFailedError: + logger.exception('Possible failure while wiping the device. ' + 'Attempting to continue.') + + +def _WriteAdbKeysFile(device, adb_keys_string): + dir_path = posixpath.dirname(adb_wrapper.ADB_KEYS_FILE) + device.RunShellCommand(['mkdir', '-p', dir_path], + as_root=True, check_return=True) + device.RunShellCommand(['restorecon', dir_path], + as_root=True, check_return=True) + device.WriteFile(adb_wrapper.ADB_KEYS_FILE, adb_keys_string, as_root=True) + device.RunShellCommand(['restorecon', adb_wrapper.ADB_KEYS_FILE], + as_root=True, check_return=True) + + +def SetProperties(device, enable_java_debug, disable_location, + disable_mock_location): + try: + device.EnableRoot() + except device_errors.CommandFailedError as e: + logger.warning(str(e)) + + if not device.IsUserBuild(): + _ConfigureLocalProperties(device, enable_java_debug) + else: + logger.warning('Cannot configure properties in user builds.') + settings.ConfigureContentSettings( + device, settings.DETERMINISTIC_DEVICE_SETTINGS) + if disable_location: + settings.ConfigureContentSettings( + device, settings.DISABLE_LOCATION_SETTINGS) + else: + settings.ConfigureContentSettings( + device, settings.ENABLE_LOCATION_SETTINGS) + + if disable_mock_location: + settings.ConfigureContentSettings( + device, settings.DISABLE_MOCK_LOCATION_SETTINGS) + else: + settings.ConfigureContentSettings( + device, settings.ENABLE_MOCK_LOCATION_SETTINGS) + + settings.SetLockScreenSettings(device) + + # Some device types can momentarily disappear after setting properties. + device.adb.WaitForDevice() + + +def DisableNetwork(device): + settings.ConfigureContentSettings( + device, settings.NETWORK_DISABLED_SETTINGS) + if device.build_version_sdk >= version_codes.MARSHMALLOW: + # Ensure that NFC is also switched off. + device.RunShellCommand(['svc', 'nfc', 'disable'], + as_root=True, check_return=True) + + +def DisableSystemChrome(device): + # The system chrome version on the device interferes with some tests. + device.RunShellCommand(['pm', 'disable', 'com.android.chrome'], + as_root=True, check_return=True) + + +def _FindSystemPackagePaths(device, system_package_list): + found_paths = [] + for system_package in system_package_list: + found_paths.extend(device.GetApplicationPaths(system_package)) + return [p for p in found_paths if p.startswith('/system/')] + + +def _FindSystemAppPaths(device, system_app_list): + found_paths = [] + for system_app in system_app_list: + for directory in _SYSTEM_APP_DIRECTORIES: + path = os.path.join(directory, system_app) + if device.PathExists(path): + found_paths.append(path) + return found_paths + + +def RemoveSystemApps( + device, system_app_remove_list, system_package_remove_list): + """Attempts to remove the provided system apps from the given device. + + Arguments: + device: The device to remove the system apps from. + system_app_remove_list: A list of app names to remove, e.g. + ['WebViewGoogle', 'GoogleVrCore'] + system_package_remove_list: A list of app packages to remove, e.g. + ['com.google.android.webview'] + """ + device.EnableRoot() + if device.HasRoot(): + system_app_paths = ( + _FindSystemAppPaths(device, system_app_remove_list) + + _FindSystemPackagePaths(device, system_package_remove_list)) + if system_app_paths: + # Disable Marshmallow's Verity security feature + if device.build_version_sdk >= version_codes.MARSHMALLOW: + logger.info('Disabling Verity on %s', device.serial) + device.adb.DisableVerity() + device.Reboot() + device.WaitUntilFullyBooted() + device.EnableRoot() + + device.adb.Remount() + device.RunShellCommand(['stop'], check_return=True) + device.RemovePath(system_app_paths, force=True, recursive=True) + device.RunShellCommand(['start'], check_return=True) + else: + raise device_errors.CommandFailedError( + 'Failed to remove system apps from non-rooted device', str(device)) + + +def _ConfigureLocalProperties(device, java_debug=True): + """Set standard readonly testing device properties prior to reboot.""" + local_props = [ + 'persist.sys.usb.config=adb', + 'ro.monkey=1', + 'ro.test_harness=1', + 'ro.audio.silent=1', + 'ro.setupwizard.mode=DISABLED', + ] + if java_debug: + local_props.append( + '%s=all' % device_utils.DeviceUtils.JAVA_ASSERT_PROPERTY) + local_props.append('debug.checkjni=1') + try: + device.WriteFile( + device.LOCAL_PROPERTIES_PATH, + '\n'.join(local_props), as_root=True) + # Android will not respect the local props file if it is world writable. + device.RunShellCommand( + ['chmod', '644', device.LOCAL_PROPERTIES_PATH], + as_root=True, check_return=True) + except device_errors.CommandFailedError: + logger.exception('Failed to configure local properties.') + + +def FinishProvisioning(device): + # The lockscreen can't be disabled on user builds, so send a keyevent + # to unlock it. + if device.IsUserBuild(): + device.SendKeyEvent(keyevent.KEYCODE_MENU) + + +def WaitForCharge(device, min_battery_level): + battery = battery_utils.BatteryUtils(device) + try: + battery.ChargeDeviceToLevel(min_battery_level) + except device_errors.DeviceChargingError: + device.Reboot() + battery.ChargeDeviceToLevel(min_battery_level) + + +def WaitForBatteryTemperature(device, max_battery_temp): + try: + battery = battery_utils.BatteryUtils(device) + battery.LetBatteryCoolToTemperature(max_battery_temp) + except device_errors.CommandFailedError: + logger.exception('Unable to let battery cool to specified temperature.') + + +def SetDate(device): + def _set_and_verify_date(): + if device.build_version_sdk >= version_codes.MARSHMALLOW: + date_format = '%m%d%H%M%Y.%S' + set_date_command = ['date', '-u'] + get_date_command = ['date', '-u'] + else: + date_format = '%Y%m%d.%H%M%S' + set_date_command = ['date', '-s'] + get_date_command = ['date'] + + # TODO(jbudorick): This is wrong on pre-M devices -- get/set are + # dealing in local time, but we're setting based on GMT. + strgmtime = time.strftime(date_format, time.gmtime()) + set_date_command.append(strgmtime) + device.RunShellCommand(set_date_command, as_root=True, check_return=True) + + get_date_command.append('+"%Y%m%d.%H%M%S"') + device_time = device.RunShellCommand( + get_date_command, check_return=True, + as_root=True, single_line=True).replace('"', '') + device_time = datetime.datetime.strptime(device_time, "%Y%m%d.%H%M%S") + correct_time = datetime.datetime.strptime(strgmtime, date_format) + tdelta = (correct_time - device_time).seconds + if tdelta <= 1: + logger.info('Date/time successfully set on %s', device) + return True + else: + logger.error('Date mismatch. Device: %s Correct: %s', + device_time.isoformat(), correct_time.isoformat()) + return False + + # Sometimes the date is not set correctly on the devices. Retry on failure. + if device.IsUserBuild(): + # TODO(bpastene): Figure out how to set the date & time on user builds. + pass + else: + if not timeout_retry.WaitFor( + _set_and_verify_date, wait_period=1, max_tries=2): + raise device_errors.CommandFailedError( + 'Failed to set date & time.', device_serial=str(device)) + device.EnableRoot() + # The following intent can take a bit to complete when ran shortly after + # device boot-up. + device.BroadcastIntent( + intent.Intent(action='android.intent.action.TIME_SET'), + timeout=180) + + +def LogDeviceProperties(device): + props = device.RunShellCommand(['getprop'], check_return=True) + for prop in props: + logger.info(' %s', prop) + + +def CheckExternalStorage(device): + """Checks that storage is writable and if not makes it writable. + + Arguments: + device: The device to check. + """ + try: + with device_temp_file.DeviceTempFile( + device.adb, suffix='.sh', dir=device.GetExternalStoragePath()) as f: + device.WriteFile(f.name, 'test') + except device_errors.CommandFailedError: + logger.info('External storage not writable. Remounting / as RW') + device.RunShellCommand(['mount', '-o', 'remount,rw', '/'], + check_return=True, as_root=True) + device.EnableRoot() + with device_temp_file.DeviceTempFile( + device.adb, suffix='.sh', dir=device.GetExternalStoragePath()) as f: + device.WriteFile(f.name, 'test') + + +def main(raw_args): + # Recommended options on perf bots: + # --disable-network + # TODO(tonyg): We eventually want network on. However, currently radios + # can cause perfbots to drain faster than they charge. + # --min-battery-level 95 + # Some perf bots run benchmarks with USB charging disabled which leads + # to gradual draining of the battery. We must wait for a full charge + # before starting a run in order to keep the devices online. + + parser = argparse.ArgumentParser( + description='Provision Android devices with settings required for bots.') + parser.add_argument( + '--adb-key-files', type=str, nargs='+', + help='list of adb keys to push to device') + parser.add_argument( + '--adb-path', + help='Absolute path to the adb binary to use.') + parser.add_argument('--blacklist-file', help='Device blacklist JSON file.') + parser.add_argument( + '-d', '--device', metavar='SERIAL', action='append', dest='devices', + help='the serial number of the device to be provisioned ' + '(the default is to provision all devices attached)') + parser.add_argument( + '--disable-location', action='store_true', + help='disable Google location services on devices') + parser.add_argument( + '--disable-mock-location', action='store_true', default=False, + help='Set ALLOW_MOCK_LOCATION to false') + parser.add_argument( + '--disable-network', action='store_true', + help='disable network access on devices') + parser.add_argument( + '--disable-java-debug', action='store_false', + dest='enable_java_debug', default=True, + help='disable Java property asserts and JNI checking') + parser.add_argument( + '--disable-system-chrome', action='store_true', + help='DEPRECATED: use --remove-system-packages com.android.google ' + 'Disable the system chrome from devices.') + parser.add_argument( + '--emulators', action='store_true', + help='provision only emulators and ignore usb devices ' + '(this will not wipe emulators)') + parser.add_argument( + '--max-battery-temp', type=int, metavar='NUM', + help='Wait for the battery to have this temp or lower.') + parser.add_argument( + '--min-battery-level', type=int, metavar='NUM', + help='wait for the device to reach this minimum battery' + ' level before trying to continue') + parser.add_argument( + '--output-device-blacklist', + help='Json file to output the device blacklist.') + parser.add_argument( + '--reboot-timeout', metavar='SECS', type=int, + help='when wiping the device, max number of seconds to' + ' wait after each reboot ' + '(default: %s)' % _DEFAULT_TIMEOUTS.HELP_TEXT) + parser.add_argument( + '--remove-system-apps', nargs='*', dest='system_app_remove_list', + help='DEPRECATED: use --remove-system-packages instead. ' + 'The names of system apps to remove. ') + parser.add_argument( + '--remove-system-packages', nargs='*', dest='system_package_remove_list', + help='The names of system packages to remove.') + parser.add_argument( + '--remove-system-webview', action='store_true', + help='DEPRECATED: use --remove-system-packages ' + 'com.google.android.webview com.android.webview ' + 'Remove the system webview from devices.') + parser.add_argument( + '--skip-wipe', action='store_true', default=False, + help='do not wipe device data during provisioning') + parser.add_argument( + '-v', '--verbose', action='count', default=1, + help='Log more information.') + + # No-op arguments for compatibility with build/android/provision_devices.py. + # TODO(jbudorick): Remove these once all callers have stopped using them. + parser.add_argument( + '--chrome-specific-wipe', action='store_true', + help=argparse.SUPPRESS) + parser.add_argument( + '--phase', action='append', + help=argparse.SUPPRESS) + parser.add_argument( + '-r', '--auto-reconnect', action='store_true', + help=argparse.SUPPRESS) + parser.add_argument( + '-t', '--target', + help=argparse.SUPPRESS) + + args = parser.parse_args(raw_args) + + run_tests_helper.SetLogLevel(args.verbose) + + devil_dynamic_config = devil_env.EmptyConfig() + if args.adb_path: + devil_dynamic_config['dependencies'].update( + devil_env.LocalConfigItem( + 'adb', devil_env.GetPlatform(), args.adb_path)) + + devil_env.config.Initialize(configs=[devil_dynamic_config]) + + try: + return ProvisionDevices( + args.devices, + args.blacklist_file, + adb_key_files=args.adb_key_files, + disable_location=args.disable_location, + disable_mock_location=args.disable_mock_location, + disable_network=args.disable_network, + disable_system_chrome=args.disable_system_chrome, + emulators=args.emulators, + enable_java_debug=args.enable_java_debug, + max_battery_temp=args.max_battery_temp, + min_battery_level=args.min_battery_level, + output_device_blacklist=args.output_device_blacklist, + reboot_timeout=args.reboot_timeout, + remove_system_webview=args.remove_system_webview, + system_app_remove_list=args.system_app_remove_list, + system_package_remove_list=args.system_package_remove_list, + wipe=not args.skip_wipe and not args.emulators) + except (device_errors.DeviceUnreachableError, device_errors.NoDevicesError): + logging.exception('Unable to provision local devices.') + return exit_codes.INFRA + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1:])) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/screenshot.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/screenshot.py new file mode 100644 index 0000000..a264c4f --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/screenshot.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Takes a screenshot from an Android device.""" + +import argparse +import logging +import os +import sys + +if __name__ == '__main__': + sys.path.append(os.path.abspath(os.path.join( + os.path.dirname(__file__), '..', '..', '..'))) +from devil.android import device_utils +from devil.android.tools import script_common + +logger = logging.getLogger(__name__) + + +def main(): + # Parse options. + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('-d', '--device', dest='devices', action='append', + help='Serial number of Android device to use.') + parser.add_argument('--blacklist-file', help='Device blacklist JSON file.') + parser.add_argument('-f', '--file', metavar='FILE', + help='Save result to file instead of generating a ' + 'timestamped file name.') + parser.add_argument('-v', '--verbose', action='store_true', + help='Verbose logging.') + parser.add_argument('host_file', nargs='?', + help='File to which the screenshot will be saved.') + + args = parser.parse_args() + + host_file = args.host_file or args.file + + if args.verbose: + logging.getLogger().setLevel(logging.DEBUG) + + devices = script_common.GetDevices(args.devices, args.blacklist_file) + + def screenshot(device): + f = None + if host_file: + root, ext = os.path.splitext(host_file) + f = '%s_%s%s' % (root, str(device), ext) + f = device.TakeScreenshot(f) + print 'Screenshot for device %s written to %s' % ( + str(device), os.path.abspath(f)) + + device_utils.DeviceUtils.parallel(devices).pMap(screenshot) + return 0 + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/script_common.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/script_common.py new file mode 100644 index 0000000..f91ad5e --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/script_common.py @@ -0,0 +1,29 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +from devil.android import device_blacklist +from devil.android import device_errors +from devil.android import device_utils + + +def GetDevices(requested_devices, blacklist_file): + if not isinstance(blacklist_file, device_blacklist.Blacklist): + blacklist_file = (device_blacklist.Blacklist(blacklist_file) + if blacklist_file + else None) + + devices = device_utils.DeviceUtils.HealthyDevices(blacklist_file) + if not devices: + raise device_errors.NoDevicesError() + elif requested_devices: + requested = set(requested_devices) + available = set(str(d) for d in devices) + missing = requested.difference(available) + if missing: + raise device_errors.DeviceUnreachableError(next(iter(missing))) + return sorted(device_utils.DeviceUtils(d) + for d in available.intersection(requested)) + else: + return devices + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/script_common_test.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/script_common_test.py new file mode 100644 index 0000000..a226764 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/script_common_test.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + + +import sys +import unittest + +from devil import devil_env +from devil.android import device_errors +from devil.android import device_utils +from devil.android.tools import script_common + +with devil_env.SysPath(devil_env.PYMOCK_PATH): + import mock # pylint: disable=import-error + + +class ScriptCommonTest(unittest.TestCase): + + def testGetDevices_noSpecs(self): + devices = [ + device_utils.DeviceUtils('123'), + device_utils.DeviceUtils('456'), + ] + with mock.patch('devil.android.device_utils.DeviceUtils.HealthyDevices', + return_value=devices): + self.assertEquals( + devices, + script_common.GetDevices(None, None)) + + def testGetDevices_withDevices(self): + devices = [ + device_utils.DeviceUtils('123'), + device_utils.DeviceUtils('456'), + ] + with mock.patch('devil.android.device_utils.DeviceUtils.HealthyDevices', + return_value=devices): + self.assertEquals( + [device_utils.DeviceUtils('456')], + script_common.GetDevices(['456'], None)) + + def testGetDevices_missingDevice(self): + with mock.patch('devil.android.device_utils.DeviceUtils.HealthyDevices', + return_value=[device_utils.DeviceUtils('123')]): + with self.assertRaises(device_errors.DeviceUnreachableError): + script_common.GetDevices(['456'], None) + + def testGetDevices_noDevices(self): + with mock.patch('devil.android.device_utils.DeviceUtils.HealthyDevices', + return_value=[]): + with self.assertRaises(device_errors.NoDevicesError): + script_common.GetDevices(None, None) + + +if __name__ == '__main__': + sys.exit(unittest.main()) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/video_recorder.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/video_recorder.py new file mode 100644 index 0000000..a91e649 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/video_recorder.py @@ -0,0 +1,175 @@ +#!/usr/bin/env python +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Captures a video from an Android device.""" + +import argparse +import logging +import os +import threading +import time +import sys + +if __name__ == '__main__': + sys.path.append(os.path.abspath(os.path.join( + os.path.dirname(__file__), '..', '..', '..'))) +from devil.android import device_signal +from devil.android import device_utils +from devil.android.tools import script_common +from devil.utils import cmd_helper +from devil.utils import reraiser_thread +from devil.utils import timeout_retry + +logger = logging.getLogger(__name__) + + +class VideoRecorder(object): + """Records a screen capture video from an Android Device (KitKat or newer).""" + + def __init__(self, device, megabits_per_second=4, size=None, + rotate=False): + """Creates a VideoRecorder instance. + + Args: + device: DeviceUtils instance. + host_file: Path to the video file to store on the host. + megabits_per_second: Video bitrate in megabits per second. Allowed range + from 0.1 to 100 mbps. + size: Video frame size tuple (width, height) or None to use the device + default. + rotate: If True, the video will be rotated 90 degrees. + """ + self._bit_rate = megabits_per_second * 1000 * 1000 + self._device = device + self._device_file = ( + '%s/screen-recording.mp4' % device.GetExternalStoragePath()) + self._recorder_thread = None + self._rotate = rotate + self._size = size + self._started = threading.Event() + + def __enter__(self): + self.Start() + + def Start(self, timeout=None): + """Start recording video.""" + def screenrecord_started(): + return bool(self._device.GetPids('screenrecord')) + + if screenrecord_started(): + raise Exception("Can't run multiple concurrent video captures.") + + self._started.clear() + self._recorder_thread = reraiser_thread.ReraiserThread(self._Record) + self._recorder_thread.start() + timeout_retry.WaitFor( + screenrecord_started, wait_period=1, max_tries=timeout) + self._started.wait(timeout) + + def _Record(self): + cmd = ['screenrecord', '--verbose', '--bit-rate', str(self._bit_rate)] + if self._rotate: + cmd += ['--rotate'] + if self._size: + cmd += ['--size', '%dx%d' % self._size] + cmd += [self._device_file] + for line in self._device.adb.IterShell( + ' '.join(cmd_helper.SingleQuote(i) for i in cmd), None): + if line.startswith('Content area is '): + self._started.set() + + def __exit__(self, _exc_type, _exc_value, _traceback): + self.Stop() + + def Stop(self): + """Stop recording video.""" + if not self._device.KillAll('screenrecord', signum=device_signal.SIGINT, + quiet=True): + logger.warning('Nothing to kill: screenrecord was not running') + self._recorder_thread.join() + + def Pull(self, host_file=None): + """Pull resulting video file from the device. + + Args: + host_file: Path to the video file to store on the host. + Returns: + Output video file name on the host. + """ + # TODO(jbudorick): Merge filename generation with the logic for doing so in + # DeviceUtils. + host_file_name = ( + host_file + or 'screen-recording-%s-%s.mp4' % ( + str(self._device), + time.strftime('%Y%m%dT%H%M%S', time.localtime()))) + host_file_name = os.path.abspath(host_file_name) + self._device.PullFile(self._device_file, host_file_name) + self._device.RemovePath(self._device_file, force=True) + return host_file_name + + +def main(): + # Parse options. + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('-d', '--device', dest='devices', action='append', + help='Serial number of Android device to use.') + parser.add_argument('--blacklist-file', help='Device blacklist JSON file.') + parser.add_argument('-f', '--file', metavar='FILE', + help='Save result to file instead of generating a ' + 'timestamped file name.') + parser.add_argument('-v', '--verbose', action='store_true', + help='Verbose logging.') + parser.add_argument('-b', '--bitrate', default=4, type=float, + help='Bitrate in megabits/s, from 0.1 to 100 mbps, ' + '%default mbps by default.') + parser.add_argument('-r', '--rotate', action='store_true', + help='Rotate video by 90 degrees.') + parser.add_argument('-s', '--size', metavar='WIDTHxHEIGHT', + help='Frame size to use instead of the device ' + 'screen size.') + parser.add_argument('host_file', nargs='?', + help='File to which the video capture will be written.') + + args = parser.parse_args() + + host_file = args.host_file or args.file + + if args.verbose: + logging.getLogger().setLevel(logging.DEBUG) + + size = (tuple(int(i) for i in args.size.split('x')) + if args.size + else None) + + def record_video(device, stop_recording): + recorder = VideoRecorder( + device, megabits_per_second=args.bitrate, size=size, rotate=args.rotate) + with recorder: + stop_recording.wait() + + f = None + if host_file: + root, ext = os.path.splitext(host_file) + f = '%s_%s%s' % (root, str(device), ext) + f = recorder.Pull(f) + print 'Video written to %s' % os.path.abspath(f) + + parallel_devices = device_utils.DeviceUtils.parallel( + script_common.GetDevices(args.devices, args.blacklist_file), + async=True) + stop_recording = threading.Event() + running_recording = parallel_devices.pMap(record_video, stop_recording) + print 'Recording. Press Enter to stop.', + sys.stdout.flush() + raw_input() + stop_recording.set() + + running_recording.pGet(None) + return 0 + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/wait_for_devices.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/wait_for_devices.py new file mode 100644 index 0000000..4bde2cd --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/tools/wait_for_devices.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Waits for the given devices to be available.""" + +import argparse +import os +import sys + +if __name__ == '__main__': + sys.path.append( + os.path.abspath(os.path.join(os.path.dirname(__file__), + '..', '..', '..'))) + +from devil import devil_env +from devil.android import device_utils +from devil.utils import run_tests_helper + + +def main(raw_args): + parser = argparse.ArgumentParser() + parser.add_argument('-v', '--verbose', action='count', help='Log more.') + parser.add_argument('-t', '--timeout', default=30, type=int, + help='Seconds to wait for the devices.') + parser.add_argument('--adb-path', help='ADB binary to use.') + parser.add_argument('device_serials', nargs='*', metavar='SERIAL', + help='Serials of the devices to wait for.') + + args = parser.parse_args(raw_args) + + run_tests_helper.SetLogLevel(args.verbose) + + devil_dynamic_config = devil_env.EmptyConfig() + if args.adb_path: + devil_dynamic_config['dependencies'].update( + devil_env.LocalConfigItem( + 'adb', devil_env.GetPlatform(), args.adb_path)) + devil_env.config.Initialize(configs=[devil_dynamic_config]) + + devices = device_utils.DeviceUtils.HealthyDevices( + device_arg=args.device_serials) + parallel_devices = device_utils.DeviceUtils.parallel(devices) + parallel_devices.WaitUntilFullyBooted(timeout=args.timeout) + return 0 + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1:])) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/valgrind_tools/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/valgrind_tools/__init__.py new file mode 100644 index 0000000..0182d4c --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/valgrind_tools/__init__.py @@ -0,0 +1,21 @@ +# Copyright (c) 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +""" +Classes in this package define additional actions that need to be taken to run a +test under some kind of runtime error detection tool. + +The interface is intended to be used as follows. + +1. For tests that simply run a native process (i.e. no activity is spawned): + +Call tool.CopyFiles(device). +Prepend test command line with tool.GetTestWrapper(). + +2. For tests that spawn an activity: + +Call tool.CopyFiles(device). +Call tool.SetupEnvironment(). +Run the test as usual. +Call tool.CleanUpEnvironment(). +""" diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/valgrind_tools/base_tool.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/valgrind_tools/base_tool.py new file mode 100644 index 0000000..2e6e9af --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/android/valgrind_tools/base_tool.py @@ -0,0 +1,53 @@ +# Copyright (c) 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + + +class BaseTool(object): + """A tool that does nothing.""" + # pylint: disable=R0201 + + def __init__(self): + """Does nothing.""" + pass + + def GetTestWrapper(self): + """Returns a string that is to be prepended to the test command line.""" + return '' + + def GetUtilWrapper(self): + """Returns the wrapper name for the utilities. + + Returns: + A string that is to be prepended to the command line of utility + processes (forwarder, etc.). + """ + return '' + + @classmethod + def CopyFiles(cls, device): + """Copies tool-specific files to the device, create directories, etc.""" + pass + + def SetupEnvironment(self): + """Sets up the system environment for a test. + + This is a good place to set system properties. + """ + pass + + def CleanUpEnvironment(self): + """Cleans up environment.""" + pass + + def GetTimeoutScale(self): + """Returns a multiplier that should be applied to timeout values.""" + return 1.0 + + def NeedsDebugInfo(self): + """Whether this tool requires debug info. + + Returns: + True if this tool can not work with stripped binaries. + """ + return False diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/base_error.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/base_error.py new file mode 100644 index 0000000..4b89661 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/base_error.py @@ -0,0 +1,24 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + + +class BaseError(Exception): + """Base error for all test runner errors.""" + + def __init__(self, message, is_infra_error=False): + super(BaseError, self).__init__(message) + self._is_infra_error = is_infra_error + + def __eq__(self, other): + return (self.message == other.message + and self.is_infra_error == other.is_infra_error) + + def __ne__(self, other): + return not self == other + + @property + def is_infra_error(self): + """Property to indicate if error was caused by an infrastructure issue.""" + return self._is_infra_error + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/constants/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/constants/__init__.py new file mode 100644 index 0000000..50b23df --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/constants/__init__.py @@ -0,0 +1,3 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/constants/exit_codes.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/constants/exit_codes.py new file mode 100644 index 0000000..aaeca4a --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/constants/exit_codes.py @@ -0,0 +1,9 @@ +# Copyright (c) 2012 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Common exit codes used by devil.""" + +ERROR = 1 +INFRA = 87 +WARNING = 88 diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/devil_dependencies.json b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/devil_dependencies.json new file mode 100644 index 0000000..bed6fe1 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/devil_dependencies.json @@ -0,0 +1,127 @@ +{ + "config_type": "BaseConfig", + "dependencies": { + "aapt": { + "cloud_storage_base_folder": "binary_dependencies", + "cloud_storage_bucket": "chromium-telemetry", + "file_info": { + "linux2_x86_64": { + "cloud_storage_hash": "16ba3180141a2489d7ec99b39fd6e3434a9a373f", + "download_path": "../bin/deps/linux2/x86_64/bin/aapt" + } + } + }, + "adb": { + "cloud_storage_base_folder": "binary_dependencies", + "cloud_storage_bucket": "chromium-telemetry", + "file_info": { + "linux2_x86_64": { + "cloud_storage_hash": "8bd43e3930f6eec643d5dc64cab9e5bb4ddf4909", + "download_path": "../bin/deps/linux2/x86_64/bin/adb" + } + } + }, + "android_build_tools_libc++": { + "cloud_storage_base_folder": "binary_dependencies", + "cloud_storage_bucket": "chromium-telemetry", + "file_info": { + "linux2_x86_64": { + "cloud_storage_hash": "91cdce1e3bd81b2ac1fd380013896d0e2cdb40a0", + "download_path": "../bin/deps/linux2/x86_64/lib/libc++.so" + } + } + }, + "chromium_commands": { + "cloud_storage_base_folder": "binary_dependencies", + "cloud_storage_bucket": "chromium-telemetry", + "file_info": { + "linux2_x86_64": { + "cloud_storage_hash": "4e22f641e4757309510e8d9f933f5aa504574ab6", + "download_path": "../bin/deps/linux2/x86_64/lib.java/chromium_commands.dex.jar" + } + } + }, + "dexdump": { + "cloud_storage_base_folder": "binary_dependencies", + "cloud_storage_bucket": "chromium-telemetry", + "file_info": { + "linux2_x86_64": { + "cloud_storage_hash": "acfb10f7a868baf9bcf446a2d9f8ed6b5d52c3c6", + "download_path": "../bin/deps/linux2/x86_64/bin/dexdump" + } + } + }, + "fastboot": { + "cloud_storage_base_folder": "binary_dependencies", + "cloud_storage_bucket": "chromium-telemetry", + "file_info": { + "linux2_x86_64": { + "cloud_storage_hash": "db9728166f182800eb9d09e9f036d56e105e8235", + "download_path": "../bin/deps/linux2/x86_64/bin/fastboot" + } + } + }, + "forwarder_device": { + "cloud_storage_base_folder": "binary_dependencies", + "cloud_storage_bucket": "chromium-telemetry", + "file_info": { + "android_arm64-v8a": { + "cloud_storage_hash": "f222268d8442979240d1b18de00911a49e548daa", + "download_path": "../bin/deps/android/arm64-v8a/bin/forwarder_device" + }, + "android_armeabi-v7a": { + "cloud_storage_hash": "c15267bf01c26eb0aea4f61c780bbba460c5c981", + "download_path": "../bin/deps/android/armeabi-v7a/bin/forwarder_device" + } + } + }, + "forwarder_host": { + "cloud_storage_base_folder": "binary_dependencies", + "cloud_storage_bucket": "chromium-telemetry", + "file_info": { + "linux2_x86_64": { + "cloud_storage_hash": "8fe69994b670f028484eed475dbffc838c8a57f7", + "download_path": "../bin/deps/linux2/x86_64/forwarder_host" + } + } + }, + "md5sum_device": { + "cloud_storage_base_folder": "binary_dependencies", + "cloud_storage_bucket": "chromium-telemetry", + "file_info": { + "android_arm64-v8a": { + "cloud_storage_hash": "4e7d2dedd9c6321fdc152b06869e09a3c5817904", + "download_path": "../bin/deps/android/arm64-v8a/bin/md5sum_device" + }, + "android_armeabi-v7a": { + "cloud_storage_hash": "39fd90af0f8828202b687f7128393759181c5e2e", + "download_path": "../bin/deps/android/armeabi-v7a/bin/md5sum_device" + }, + "android_x86": { + "cloud_storage_hash": "d5cf42ab5986a69c31c0177b0df499d6bf708df6", + "download_path": "../bin/deps/android/x86/bin/md5sum_device" + } + } + }, + "md5sum_host": { + "cloud_storage_base_folder": "binary_dependencies", + "cloud_storage_bucket": "chromium-telemetry", + "file_info": { + "linux2_x86_64": { + "cloud_storage_hash": "4db5bd5e9bea8880d8bf2caa59d0efb0acc19f74", + "download_path": "../bin/deps/linux2/x86_64/bin/md5sum_host" + } + } + }, + "split-select": { + "cloud_storage_base_folder": "binary_dependencies", + "cloud_storage_bucket": "chromium-telemetry", + "file_info": { + "linux2_x86_64": { + "cloud_storage_hash": "abb9753a8d3efeea4144e328933931729e01571c", + "download_path": "../bin/deps/linux2/x86_64/bin/split-select" + } + } + } + } +} \ No newline at end of file diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/devil_env.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/devil_env.py new file mode 100644 index 0000000..aa4fe1e --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/devil_env.py @@ -0,0 +1,194 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import contextlib +import json +import logging +import os +import platform +import sys +import tempfile +import threading + +CATAPULT_ROOT_PATH = os.path.abspath(os.path.join( + os.path.dirname(__file__), '..', '..')) +DEPENDENCY_MANAGER_PATH = os.path.join( + CATAPULT_ROOT_PATH, 'dependency_manager') +PYMOCK_PATH = os.path.join( + CATAPULT_ROOT_PATH, 'third_party', 'mock') + + +@contextlib.contextmanager +def SysPath(path): + sys.path.append(path) + yield + if sys.path[-1] != path: + sys.path.remove(path) + else: + sys.path.pop() + +with SysPath(DEPENDENCY_MANAGER_PATH): + import dependency_manager # pylint: disable=import-error + +_ANDROID_BUILD_TOOLS = {'aapt', 'dexdump', 'split-select'} + +_DEVIL_DEFAULT_CONFIG = os.path.abspath(os.path.join( + os.path.dirname(__file__), 'devil_dependencies.json')) + +_LEGACY_ENVIRONMENT_VARIABLES = { + 'ADB_PATH': { + 'dependency_name': 'adb', + 'platform': 'linux2_x86_64', + }, + 'ANDROID_SDK_ROOT': { + 'dependency_name': 'android_sdk', + 'platform': 'linux2_x86_64', + }, +} + + +def EmptyConfig(): + return { + 'config_type': 'BaseConfig', + 'dependencies': {} + } + + +def LocalConfigItem(dependency_name, dependency_platform, dependency_path): + if isinstance(dependency_path, basestring): + dependency_path = [dependency_path] + return { + dependency_name: { + 'file_info': { + dependency_platform: { + 'local_paths': dependency_path + }, + }, + }, + } + + +def _GetEnvironmentVariableConfig(): + env_config = EmptyConfig() + path_config = ( + (os.environ.get(k), v) + for k, v in _LEGACY_ENVIRONMENT_VARIABLES.iteritems()) + path_config = ((p, c) for p, c in path_config if p) + for p, c in path_config: + env_config['dependencies'].update( + LocalConfigItem(c['dependency_name'], c['platform'], p)) + return env_config + + +class _Environment(object): + + def __init__(self): + self._dm_init_lock = threading.Lock() + self._dm = None + self._logging_init_lock = threading.Lock() + self._logging_initialized = False + + def Initialize(self, configs=None, config_files=None): + """Initialize devil's environment from configuration files. + + This uses all configurations provided via |configs| and |config_files| + to determine the locations of devil's dependencies. Configurations should + all take the form described by py_utils.dependency_manager.BaseConfig. + If no configurations are provided, a default one will be used if available. + + Args: + configs: An optional list of dict configurations. + config_files: An optional list of files to load + """ + + # Make sure we only initialize self._dm once. + with self._dm_init_lock: + if self._dm is None: + if configs is None: + configs = [] + + env_config = _GetEnvironmentVariableConfig() + if env_config: + configs.insert(0, env_config) + self._InitializeRecursive( + configs=configs, + config_files=config_files) + assert self._dm is not None, 'Failed to create dependency manager.' + + def _InitializeRecursive(self, configs=None, config_files=None): + # This recurses through configs to create temporary files for each and + # take advantage of context managers to appropriately close those files. + # TODO(jbudorick): Remove this recursion if/when dependency_manager + # supports loading configurations directly from a dict. + if configs: + with tempfile.NamedTemporaryFile(delete=False) as next_config_file: + try: + next_config_file.write(json.dumps(configs[0])) + next_config_file.close() + self._InitializeRecursive( + configs=configs[1:], + config_files=[next_config_file.name] + (config_files or [])) + finally: + if os.path.exists(next_config_file.name): + os.remove(next_config_file.name) + else: + config_files = config_files or [] + if 'DEVIL_ENV_CONFIG' in os.environ: + config_files.append(os.environ.get('DEVIL_ENV_CONFIG')) + config_files.append(_DEVIL_DEFAULT_CONFIG) + + self._dm = dependency_manager.DependencyManager( + [dependency_manager.BaseConfig(c) for c in config_files]) + + def InitializeLogging(self, log_level, formatter=None, handler=None): + if self._logging_initialized: + return + + with self._logging_init_lock: + if self._logging_initialized: + return + + formatter = formatter or logging.Formatter( + '%(threadName)-4s %(message)s') + handler = handler or logging.StreamHandler(sys.stdout) + handler.setFormatter(formatter) + + devil_logger = logging.getLogger('devil') + devil_logger.setLevel(log_level) + devil_logger.propagate = False + devil_logger.addHandler(handler) + + import py_utils.cloud_storage + lock_logger = py_utils.cloud_storage.logger + lock_logger.setLevel(log_level) + lock_logger.propagate = False + lock_logger.addHandler(handler) + + self._logging_initialized = True + + def FetchPath(self, dependency, arch=None, device=None): + if self._dm is None: + self.Initialize() + if dependency in _ANDROID_BUILD_TOOLS: + self.FetchPath('android_build_tools_libc++', arch=arch, device=device) + return self._dm.FetchPath(dependency, GetPlatform(arch, device)) + + def LocalPath(self, dependency, arch=None, device=None): + if self._dm is None: + self.Initialize() + return self._dm.LocalPath(dependency, GetPlatform(arch, device)) + + def PrefetchPaths(self, dependencies=None, arch=None, device=None): + return self._dm.PrefetchPaths( + GetPlatform(arch, device), dependencies=dependencies) + + +def GetPlatform(arch=None, device=None): + if arch or device: + return 'android_%s' % (arch or device.product_cpu_abi) + return '%s_%s' % (sys.platform, platform.machine()) + + +config = _Environment() + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/devil_env_test.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/devil_env_test.py new file mode 100644 index 0000000..e78221a --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/devil_env_test.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# pylint: disable=protected-access + +import logging +import sys +import unittest + +from devil import devil_env + +_sys_path_before = list(sys.path) +with devil_env.SysPath(devil_env.PYMOCK_PATH): + _sys_path_with_pymock = list(sys.path) + import mock # pylint: disable=import-error +_sys_path_after = list(sys.path) + + +class DevilEnvTest(unittest.TestCase): + + def testSysPath(self): + self.assertEquals(_sys_path_before, _sys_path_after) + self.assertEquals( + _sys_path_before + [devil_env.PYMOCK_PATH], + _sys_path_with_pymock) + + def testGetEnvironmentVariableConfig_configType(self): + with mock.patch('os.environ.get', + mock.Mock(side_effect=lambda _env_var: None)): + env_config = devil_env._GetEnvironmentVariableConfig() + self.assertEquals('BaseConfig', env_config.get('config_type')) + + def testGetEnvironmentVariableConfig_noEnv(self): + with mock.patch('os.environ.get', + mock.Mock(side_effect=lambda _env_var: None)): + env_config = devil_env._GetEnvironmentVariableConfig() + self.assertEquals({}, env_config.get('dependencies')) + + def testGetEnvironmentVariableConfig_adbPath(self): + def mock_environment(env_var): + return '/my/fake/adb/path' if env_var == 'ADB_PATH' else None + + with mock.patch('os.environ.get', + mock.Mock(side_effect=mock_environment)): + env_config = devil_env._GetEnvironmentVariableConfig() + self.assertEquals( + { + 'adb': { + 'file_info': { + 'linux2_x86_64': { + 'local_paths': ['/my/fake/adb/path'], + }, + }, + }, + }, + env_config.get('dependencies')) + + +if __name__ == '__main__': + logging.getLogger().setLevel(logging.DEBUG) + unittest.main(verbosity=2) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/__init__.py new file mode 100644 index 0000000..ff84988 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/__init__.py @@ -0,0 +1,23 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import sys + +def _JoinPath(*path_parts): + return os.path.abspath(os.path.join(*path_parts)) + + +def _AddDirToPythonPath(*path_parts): + path = _JoinPath(*path_parts) + if os.path.isdir(path) and path not in sys.path: + # Some call sites that use Telemetry assume that sys.path[0] is the + # directory containing the script, so we add these extra paths to right + # after sys.path[0]. + sys.path.insert(1, path) + +_CATAPULT_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), + os.path.pardir, os.path.pardir, os.path.pardir) + +_AddDirToPythonPath(_CATAPULT_DIR, 'common', 'battor') diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/battor_device_mapping.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/battor_device_mapping.py new file mode 100644 index 0000000..8cabb83 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/battor_device_mapping.py @@ -0,0 +1,309 @@ +#!/usr/bin/python +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + + +''' +This script provides tools to map BattOrs to phones. + +Phones are identified by the following string: + +"Phone serial number" - Serial number of the phone. This can be +obtained via 'adb devices' or 'usb-devices', and is not expected +to change for a given phone. + +BattOrs are identified by the following two strings: + +"BattOr serial number" - Serial number of the BattOr. This can be +obtained via 'usb-devices', and is not expected to change for +a given BattOr. + +"BattOr path" - The path of the form '/dev/ttyUSB*' that is used +to communicate with the BattOr (the battor_agent binary takes +this BattOr path as a parameter). The BattOr path is frequently +reassigned by the OS, most often when the device is disconnected +and then reconnected. Thus, the BattOr path cannot be expected +to be stable. + +In a typical application, the user will require the BattOr path +for the BattOr that is plugged into a given phone. For instance, +the user will be running tracing on a particular phone, and will +need to know which BattOr path to use to communicate with the BattOr +to get the corresponding power trace. + +Getting this mapping requires two steps: (1) determining the +mapping between phone serial numbers and BattOr serial numbers, and +(2) getting the BattOr path corresponding to a given BattOr serial +number. + +For step (1), we generate a JSON file giving this mapping. This +JSON file consists of a list of items of the following form: +[{'phone': <phone serial 1>, 'battor': <battor serial 1>}, +{'phone': <phone serial 2>, 'battor': <battor serial 2>}, ...] + +The default way to generate this JSON file is using the function +GenerateSerialMapFile, which generates a mapping based on assuming +that the system has two identical USB hubs connected to it, and +the phone plugged into physical port number 1 on one hub corresponds +to the BattOr plugged into physical port number 1 on the other hub, +and similarly with physical port numbers 2, 3, etc. This generates +the map file based on the structure at the time GenerateSerialMapFile called. +Note that after the map file is generated, port numbers are no longer used; +the user could move around the devices in the ports without affecting +which phone goes with which BattOr. (Thus, if the user wanted to update the +mapping to match the new port connections, the user would have to +re-generate this file.) + +The script update_mapping.py will do this updating from the command line. + +If the user wanted to specify a custom mapping, the user could instead +create the JSON file manually. (In this case, hubs would not be necessary +and the physical ports connected would be irrelevant.) + +Step (2) is conducted through the function GetBattOrPathFromPhoneSerial, +which takes a serial number mapping generated via step (1) and a phone +serial number, then gets the corresponding BattOr serial number from the +map and determines its BattOr path (e.g. /dev/ttyUSB0). Since BattOr paths +can change if devices are connected and disconnected (even if connected +or disconnected via the same port) this function should be called to +determine the BattOr path every time before connecting to the BattOr. + +Note that if there is only one BattOr connected to the system, then +GetBattOrPathFromPhoneSerial will always return that BattOr and will ignore +the mapping file. Thus, if the user never has more than one BattOr connected +to the system, the user will not need to generate mapping files. +''' + + +import json +import collections + +from battor import battor_error +from devil.utils import find_usb_devices +from devil.utils import usb_hubs + + +def GetBattOrList(device_tree_map): + return [x for x in find_usb_devices.GetTTYList() + if IsBattOr(x, device_tree_map)] + + +def IsBattOr(tty_string, device_tree_map): + (bus, device) = find_usb_devices.GetBusDeviceFromTTY(tty_string) + node = device_tree_map[bus].FindDeviceNumber(device) + return '0403:6001' in node.desc + + +def GetBattOrSerialNumbers(device_tree_map): + for x in find_usb_devices.GetTTYList(): + if IsBattOr(x, device_tree_map): + (bus, device) = find_usb_devices.GetBusDeviceFromTTY(x) + devnode = device_tree_map[bus].FindDeviceNumber(device) + yield devnode.serial + + +def ReadSerialMapFile(filename): + """Reads JSON file giving phone-to-battor serial number map. + + Parses a JSON file consisting of a list of items of the following form: + [{'phone': <phone serial 1>, 'battor': <battor serial 1>}, + {'phone': <phone serial 2>, 'battor': <battor serial 2>}, ...] + + indicating which phone serial numbers should be matched with + which BattOr serial numbers. Returns dictionary of the form: + + {<phone serial 1>: <BattOr serial 1>, + <phone serial 2>: <BattOr serial 2>} + + Args: + filename: Name of file to read. + """ + result = {} + with open(filename, 'r') as infile: + in_dict = json.load(infile) + for x in in_dict: + result[x['phone']] = x['battor'] + return result + +def WriteSerialMapFile(filename, serial_map): + """Writes a map of phone serial numbers to BattOr serial numbers to file. + + Writes a JSON file consisting of a list of items of the following form: + [{'phone': <phone serial 1>, 'battor': <battor serial 1>}, + {'phone': <phone serial 2>, 'battor': <battor serial 2>}, ...] + + indicating which phone serial numbers should be matched with + which BattOr serial numbers. Mapping is based on the physical port numbers + of the hubs that the BattOrs and phones are connected to. + + Args: + filename: Name of file to write. + serial_map: Serial map {phone: battor} + """ + result = [] + for (phone, battor) in serial_map.iteritems(): + result.append({'phone': phone, 'battor': battor}) + with open(filename, 'w') as outfile: + json.dump(result, outfile) + +def GenerateSerialMap(hub_types=None): + """Generates a map of phone serial numbers to BattOr serial numbers. + + Generates a dict of: + {<phone serial 1>: <battor serial 1>, + <phone serial 2>: <battor serial 2>} + indicating which phone serial numbers should be matched with + which BattOr serial numbers. Mapping is based on the physical port numbers + of the hubs that the BattOrs and phones are connected to. + + Args: + hub_types: List of hub types to check for. If not specified, checks + for all defined hub types. (see usb_hubs.py for details) + """ + if hub_types: + hub_types = [usb_hubs.GetHubType(x) for x in hub_types] + else: + hub_types = usb_hubs.ALL_HUBS + + devtree = find_usb_devices.GetBusNumberToDeviceTreeMap() + + # List of serial numbers in the system that represent BattOrs. + battor_serials = list(GetBattOrSerialNumbers(devtree)) + + # If there's only one BattOr in the system, then a serial number ma + # is not necessary. + if len(battor_serials) == 1: + return {} + + # List of dictionaries, one for each hub, that maps the physical + # port number to the serial number of that hub. For instance, in a 2 + # hub system, this could return [{1:'ab', 2:'cd'}, {1:'jkl', 2:'xyz'}] + # where 'ab' and 'cd' are the phone serial numbers and 'jkl' and 'xyz' + # are the BattOr serial numbers. + port_to_serial = find_usb_devices.GetAllPhysicalPortToSerialMaps( + hub_types, device_tree_map=devtree) + + class serials(object): + def __init__(self): + self.phone = None + self.battor = None + + # Map of {physical port number: [phone serial #, BattOr serial #]. This + # map is populated by executing the code below. For instance, in the above + # example, after the code below is executed, port_to_devices would equal + # {1: ['ab', 'jkl'], 2: ['cd', 'xyz']} + port_to_devices = collections.defaultdict(serials) + for hub in port_to_serial: + for (port, serial) in hub.iteritems(): + if serial in battor_serials: + if port_to_devices[port].battor is not None: + raise battor_error.BattOrError('Multiple BattOrs on same port number') + else: + port_to_devices[port].battor = serial + else: + if port_to_devices[port].phone is not None: + raise battor_error.BattOrError('Multiple phones on same port number') + else: + port_to_devices[port].phone = serial + + # Turn the port_to_devices map into a map of the form + # {phone serial number: BattOr serial number}. + result = {} + for pair in port_to_devices.values(): + if pair.phone is None: + continue + if pair.battor is None: + raise battor_error.BattOrError( + 'Phone detected with no corresponding BattOr') + result[pair.phone] = pair.battor + return result + +def GenerateSerialMapFile(filename, hub_types=None): + """Generates a serial map file and writes it.""" + WriteSerialMapFile(filename, GenerateSerialMap(hub_types)) + +def _PhoneToPathMap(serial, serial_map, devtree): + """Maps phone serial number to TTY path, assuming serial map is provided.""" + try: + battor_serial = serial_map[serial] + except KeyError: + raise battor_error.BattOrError('Serial number not found in serial map.') + for tree in devtree.values(): + for node in tree.AllNodes(): + if isinstance(node, find_usb_devices.USBDeviceNode): + if node.serial == battor_serial: + bus_device_to_tty = find_usb_devices.GetBusDeviceToTTYMap() + bus_device = (node.bus_num, node.device_num) + try: + return bus_device_to_tty[bus_device] + except KeyError: + raise battor_error.BattOrError( + 'Device with given serial number not a BattOr ' + '(does not have TTY path)') + + +def GetBattOrPathFromPhoneSerial(serial, serial_map=None, + serial_map_file=None): + """Gets the TTY path (e.g. '/dev/ttyUSB0') to communicate with the BattOr. + + (1) If serial_map is given, it is treated as a dictionary mapping + phone serial numbers to BattOr serial numbers. This function will get the + TTY path for the given BattOr serial number. + + (2) If serial_map_file is given, it is treated as the name of a + phone-to-BattOr mapping file (generated with GenerateSerialMapFile) + and this will be loaded and used as the dict to map port numbers to + BattOr serial numbers. + + You can only give one of serial_map and serial_map_file. + + Args: + serial: Serial number of phone connected on the same physical port that + the BattOr is connected to. + serial_map: Map of phone serial numbers to BattOr serial numbers, given + as a dictionary. + serial_map_file: Map of phone serial numbers to BattOr serial numbers, + given as a file. + hub_types: List of hub types to check for. Used only if serial_map_file + is None. + + Returns: + Device string used to communicate with device. + + Raises: + ValueError: If serial number is not given. + BattOrError: If BattOr not found or unexpected USB topology. + """ + # If there's only one BattOr connected to the system, just use that one. + # This allows for use on, e.g., a developer's workstation with no hubs. + devtree = find_usb_devices.GetBusNumberToDeviceTreeMap() + all_battors = GetBattOrList(devtree) + if len(all_battors) == 1: + return '/dev/' + all_battors[0] + + if not serial: + raise battor_error.BattOrError( + 'Two or more BattOrs connected, no serial provided') + + if serial_map and serial_map_file: + raise ValueError('Cannot specify both serial_map and serial_map_file') + + if serial_map_file: + serial_map = ReadSerialMapFile(serial_map_file) + + tty_string = _PhoneToPathMap(serial, serial_map, devtree) + + if not tty_string: + raise battor_error.BattOrError( + 'No device with given serial number detected.') + + if IsBattOr(tty_string, devtree): + return '/dev/' + tty_string + else: + raise battor_error.BattOrError( + 'Device with given serial number is not a BattOr.') + +if __name__ == '__main__': + # Main function for testing purposes + print GenerateSerialMap() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/cmd_helper.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/cmd_helper.py new file mode 100644 index 0000000..0b6ccd9 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/cmd_helper.py @@ -0,0 +1,451 @@ +# Copyright (c) 2012 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""A wrapper for subprocess to make calling shell commands easier.""" + +import logging +import os +import pipes +import select +import signal +import string +import StringIO +import subprocess +import sys +import time + + +logger = logging.getLogger(__name__) + +_SafeShellChars = frozenset(string.ascii_letters + string.digits + '@%_-+=:,./') + + +def SingleQuote(s): + """Return an shell-escaped version of the string using single quotes. + + Reliably quote a string which may contain unsafe characters (e.g. space, + quote, or other special characters such as '$'). + + The returned value can be used in a shell command line as one token that gets + to be interpreted literally. + + Args: + s: The string to quote. + + Return: + The string quoted using single quotes. + """ + return pipes.quote(s) + + +def DoubleQuote(s): + """Return an shell-escaped version of the string using double quotes. + + Reliably quote a string which may contain unsafe characters (e.g. space + or quote characters), while retaining some shell features such as variable + interpolation. + + The returned value can be used in a shell command line as one token that gets + to be further interpreted by the shell. + + The set of characters that retain their special meaning may depend on the + shell implementation. This set usually includes: '$', '`', '\', '!', '*', + and '@'. + + Args: + s: The string to quote. + + Return: + The string quoted using double quotes. + """ + if not s: + return '""' + elif all(c in _SafeShellChars for c in s): + return s + else: + return '"' + s.replace('"', '\\"') + '"' + + +def ShrinkToSnippet(cmd_parts, var_name, var_value): + """Constructs a shell snippet for a command using a variable to shrink it. + + Takes into account all quoting that needs to happen. + + Args: + cmd_parts: A list of command arguments. + var_name: The variable that holds var_value. + var_value: The string to replace in cmd_parts with $var_name + + Returns: + A shell snippet that does not include setting the variable. + """ + def shrink(value): + parts = (x and SingleQuote(x) for x in value.split(var_value)) + with_substitutions = ('"$%s"' % var_name).join(parts) + return with_substitutions or "''" + + return ' '.join(shrink(part) for part in cmd_parts) + + +def Popen(args, stdout=None, stderr=None, shell=None, cwd=None, env=None): + # preexec_fn isn't supported on windows. + if sys.platform == 'win32': + close_fds = (stdout is None and stderr is None) + preexec_fn = None + else: + close_fds = True + preexec_fn = lambda: signal.signal(signal.SIGPIPE, signal.SIG_DFL) + + return subprocess.Popen( + args=args, cwd=cwd, stdout=stdout, stderr=stderr, + shell=shell, close_fds=close_fds, env=env, preexec_fn=preexec_fn) + + +def Call(args, stdout=None, stderr=None, shell=None, cwd=None, env=None): + pipe = Popen(args, stdout=stdout, stderr=stderr, shell=shell, cwd=cwd, + env=env) + pipe.communicate() + return pipe.wait() + + +def RunCmd(args, cwd=None): + """Opens a subprocess to execute a program and returns its return value. + + Args: + args: A string or a sequence of program arguments. The program to execute is + the string or the first item in the args sequence. + cwd: If not None, the subprocess's current directory will be changed to + |cwd| before it's executed. + + Returns: + Return code from the command execution. + """ + logger.info(str(args) + ' ' + (cwd or '')) + return Call(args, cwd=cwd) + + +def GetCmdOutput(args, cwd=None, shell=False): + """Open a subprocess to execute a program and returns its output. + + Args: + args: A string or a sequence of program arguments. The program to execute is + the string or the first item in the args sequence. + cwd: If not None, the subprocess's current directory will be changed to + |cwd| before it's executed. + shell: Whether to execute args as a shell command. + + Returns: + Captures and returns the command's stdout. + Prints the command's stderr to logger (which defaults to stdout). + """ + (_, output) = GetCmdStatusAndOutput(args, cwd, shell) + return output + + +def _ValidateAndLogCommand(args, cwd, shell): + if isinstance(args, basestring): + if not shell: + raise Exception('string args must be run with shell=True') + else: + if shell: + raise Exception('array args must be run with shell=False') + args = ' '.join(SingleQuote(c) for c in args) + if cwd is None: + cwd = '' + else: + cwd = ':' + cwd + logger.info('[host]%s> %s', cwd, args) + return args + + +def GetCmdStatusAndOutput(args, cwd=None, shell=False): + """Executes a subprocess and returns its exit code and output. + + Args: + args: A string or a sequence of program arguments. The program to execute is + the string or the first item in the args sequence. + cwd: If not None, the subprocess's current directory will be changed to + |cwd| before it's executed. + shell: Whether to execute args as a shell command. Must be True if args + is a string and False if args is a sequence. + + Returns: + The 2-tuple (exit code, output). + """ + status, stdout, stderr = GetCmdStatusOutputAndError( + args, cwd=cwd, shell=shell) + + if stderr: + logger.critical('STDERR: %s', stderr) + logger.debug('STDOUT: %s%s', stdout[:4096].rstrip(), + '<truncated>' if len(stdout) > 4096 else '') + return (status, stdout) + + +def GetCmdStatusOutputAndError(args, cwd=None, shell=False): + """Executes a subprocess and returns its exit code, output, and errors. + + Args: + args: A string or a sequence of program arguments. The program to execute is + the string or the first item in the args sequence. + cwd: If not None, the subprocess's current directory will be changed to + |cwd| before it's executed. + shell: Whether to execute args as a shell command. Must be True if args + is a string and False if args is a sequence. + + Returns: + The 2-tuple (exit code, output). + """ + _ValidateAndLogCommand(args, cwd, shell) + pipe = Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, + shell=shell, cwd=cwd) + stdout, stderr = pipe.communicate() + return (pipe.returncode, stdout, stderr) + + +class TimeoutError(Exception): + """Module-specific timeout exception.""" + + def __init__(self, output=None): + super(TimeoutError, self).__init__() + self._output = output + + @property + def output(self): + return self._output + + +def _IterProcessStdoutFcntl( + process, iter_timeout=None, timeout=None, buffer_size=4096, + poll_interval=1): + """An fcntl-based implementation of _IterProcessStdout.""" + import fcntl + try: + # Enable non-blocking reads from the child's stdout. + child_fd = process.stdout.fileno() + fl = fcntl.fcntl(child_fd, fcntl.F_GETFL) + fcntl.fcntl(child_fd, fcntl.F_SETFL, fl | os.O_NONBLOCK) + + end_time = (time.time() + timeout) if timeout else None + iter_end_time = (time.time() + iter_timeout) if iter_timeout else None + + while True: + if end_time and time.time() > end_time: + raise TimeoutError() + if iter_end_time and time.time() > iter_end_time: + yield None + iter_end_time = time.time() + iter_timeout + + if iter_end_time: + iter_aware_poll_interval = min( + poll_interval, + max(0, iter_end_time - time.time())) + else: + iter_aware_poll_interval = poll_interval + + read_fds, _, _ = select.select( + [child_fd], [], [], iter_aware_poll_interval) + if child_fd in read_fds: + data = os.read(child_fd, buffer_size) + if not data: + break + yield data + if process.poll() is not None: + break + finally: + try: + if process.returncode is None: + # Make sure the process doesn't stick around if we fail with an + # exception. + process.kill() + except OSError: + pass + process.wait() + + +def _IterProcessStdoutQueue( + process, iter_timeout=None, timeout=None, buffer_size=4096, + poll_interval=1): + """A Queue.Queue-based implementation of _IterProcessStdout. + + TODO(jbudorick): Evaluate whether this is a suitable replacement for + _IterProcessStdoutFcntl on all platforms. + """ + # pylint: disable=unused-argument + import Queue + import threading + + stdout_queue = Queue.Queue() + + def read_process_stdout(): + # TODO(jbudorick): Pick an appropriate read size here. + while True: + try: + output_chunk = os.read(process.stdout.fileno(), buffer_size) + except IOError: + break + stdout_queue.put(output_chunk, True) + if not output_chunk and process.poll() is not None: + break + + reader_thread = threading.Thread(target=read_process_stdout) + reader_thread.start() + + end_time = (time.time() + timeout) if timeout else None + + try: + while True: + if end_time and time.time() > end_time: + raise TimeoutError() + try: + s = stdout_queue.get(True, iter_timeout) + if not s: + break + yield s + except Queue.Empty: + yield None + finally: + try: + if process.returncode is None: + # Make sure the process doesn't stick around if we fail with an + # exception. + process.kill() + except OSError: + pass + process.wait() + reader_thread.join() + + +_IterProcessStdout = ( + _IterProcessStdoutQueue + if sys.platform == 'win32' + else _IterProcessStdoutFcntl) +"""Iterate over a process's stdout. + +This is intentionally not public. + +Args: + process: The process in question. + iter_timeout: An optional length of time, in seconds, to wait in + between each iteration. If no output is received in the given + time, this generator will yield None. + timeout: An optional length of time, in seconds, during which + the process must finish. If it fails to do so, a TimeoutError + will be raised. + buffer_size: The maximum number of bytes to read (and thus yield) at once. + poll_interval: The length of time to wait in calls to `select.select`. + If iter_timeout is set, the remaining length of time in the iteration + may take precedence. +Raises: + TimeoutError: if timeout is set and the process does not complete. +Yields: + basestrings of data or None. +""" + + +def GetCmdStatusAndOutputWithTimeout(args, timeout, cwd=None, shell=False, + logfile=None): + """Executes a subprocess with a timeout. + + Args: + args: List of arguments to the program, the program to execute is the first + element. + timeout: the timeout in seconds or None to wait forever. + cwd: If not None, the subprocess's current directory will be changed to + |cwd| before it's executed. + shell: Whether to execute args as a shell command. Must be True if args + is a string and False if args is a sequence. + logfile: Optional file-like object that will receive output from the + command as it is running. + + Returns: + The 2-tuple (exit code, output). + Raises: + TimeoutError on timeout. + """ + _ValidateAndLogCommand(args, cwd, shell) + output = StringIO.StringIO() + process = Popen(args, cwd=cwd, shell=shell, stdout=subprocess.PIPE, + stderr=subprocess.STDOUT) + try: + for data in _IterProcessStdout(process, timeout=timeout): + if logfile: + logfile.write(data) + output.write(data) + except TimeoutError: + raise TimeoutError(output.getvalue()) + + str_output = output.getvalue() + logger.debug('STDOUT+STDERR: %s%s', str_output[:4096].rstrip(), + '<truncated>' if len(str_output) > 4096 else '') + return process.returncode, str_output + + +def IterCmdOutputLines(args, iter_timeout=None, timeout=None, cwd=None, + shell=False, check_status=True): + """Executes a subprocess and continuously yields lines from its output. + + Args: + args: List of arguments to the program, the program to execute is the first + element. + iter_timeout: Timeout for each iteration, in seconds. + timeout: Timeout for the entire command, in seconds. + cwd: If not None, the subprocess's current directory will be changed to + |cwd| before it's executed. + shell: Whether to execute args as a shell command. Must be True if args + is a string and False if args is a sequence. + check_status: A boolean indicating whether to check the exit status of the + process after all output has been read. + Yields: + The output of the subprocess, line by line. + + Raises: + CalledProcessError if check_status is True and the process exited with a + non-zero exit status. + """ + cmd = _ValidateAndLogCommand(args, cwd, shell) + process = Popen(args, cwd=cwd, shell=shell, stdout=subprocess.PIPE, + stderr=subprocess.STDOUT) + return _IterCmdOutputLines( + process, cmd, iter_timeout=iter_timeout, timeout=timeout, + check_status=check_status) + +def _IterCmdOutputLines(process, cmd, iter_timeout=None, timeout=None, + check_status=True): + buffer_output = '' + + iter_end = None + cur_iter_timeout = None + if iter_timeout: + iter_end = time.time() + iter_timeout + cur_iter_timeout = iter_timeout + + for data in _IterProcessStdout(process, iter_timeout=cur_iter_timeout, + timeout=timeout): + if iter_timeout: + # Check whether the current iteration has timed out. + cur_iter_timeout = iter_end - time.time() + if data is None or cur_iter_timeout < 0: + yield None + iter_end = time.time() + iter_timeout + continue + else: + assert data is not None, ( + 'Iteration received no data despite no iter_timeout being set. ' + 'cmd: %s' % cmd) + + # Construct lines to yield from raw data. + buffer_output += data + has_incomplete_line = buffer_output[-1] not in '\r\n' + lines = buffer_output.splitlines() + buffer_output = lines.pop() if has_incomplete_line else '' + for line in lines: + yield line + if iter_timeout: + iter_end = time.time() + iter_timeout + + if buffer_output: + yield buffer_output + if check_status and process.returncode: + raise subprocess.CalledProcessError(process.returncode, cmd) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/cmd_helper_test.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/cmd_helper_test.py new file mode 100644 index 0000000..b7fc8ee --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/cmd_helper_test.py @@ -0,0 +1,264 @@ +#!/usr/bin/env python +# Copyright 2013 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Tests for the cmd_helper module.""" + +import unittest +import subprocess +import sys +import time + +from devil import devil_env +from devil.utils import cmd_helper + +with devil_env.SysPath(devil_env.PYMOCK_PATH): + import mock # pylint: disable=import-error + + +class CmdHelperSingleQuoteTest(unittest.TestCase): + + def testSingleQuote_basic(self): + self.assertEquals('hello', + cmd_helper.SingleQuote('hello')) + + def testSingleQuote_withSpaces(self): + self.assertEquals("'hello world'", + cmd_helper.SingleQuote('hello world')) + + def testSingleQuote_withUnsafeChars(self): + self.assertEquals("""'hello'"'"'; rm -rf /'""", + cmd_helper.SingleQuote("hello'; rm -rf /")) + + def testSingleQuote_dontExpand(self): + test_string = 'hello $TEST_VAR' + cmd = 'TEST_VAR=world; echo %s' % cmd_helper.SingleQuote(test_string) + self.assertEquals(test_string, + cmd_helper.GetCmdOutput(cmd, shell=True).rstrip()) + + +class CmdHelperDoubleQuoteTest(unittest.TestCase): + + def testDoubleQuote_basic(self): + self.assertEquals('hello', + cmd_helper.DoubleQuote('hello')) + + def testDoubleQuote_withSpaces(self): + self.assertEquals('"hello world"', + cmd_helper.DoubleQuote('hello world')) + + def testDoubleQuote_withUnsafeChars(self): + self.assertEquals('''"hello\\"; rm -rf /"''', + cmd_helper.DoubleQuote('hello"; rm -rf /')) + + def testSingleQuote_doExpand(self): + test_string = 'hello $TEST_VAR' + cmd = 'TEST_VAR=world; echo %s' % cmd_helper.DoubleQuote(test_string) + self.assertEquals('hello world', + cmd_helper.GetCmdOutput(cmd, shell=True).rstrip()) + + +class CmdHelperShinkToSnippetTest(unittest.TestCase): + + def testShrinkToSnippet_noArgs(self): + self.assertEquals('foo', + cmd_helper.ShrinkToSnippet(['foo'], 'a', 'bar')) + self.assertEquals("'foo foo'", + cmd_helper.ShrinkToSnippet(['foo foo'], 'a', 'bar')) + self.assertEquals('"$a"\' bar\'', + cmd_helper.ShrinkToSnippet(['foo bar'], 'a', 'foo')) + self.assertEquals('\'foo \'"$a"', + cmd_helper.ShrinkToSnippet(['foo bar'], 'a', 'bar')) + self.assertEquals('foo"$a"', + cmd_helper.ShrinkToSnippet(['foobar'], 'a', 'bar')) + + def testShrinkToSnippet_singleArg(self): + self.assertEquals("foo ''", + cmd_helper.ShrinkToSnippet(['foo', ''], 'a', 'bar')) + self.assertEquals("foo foo", + cmd_helper.ShrinkToSnippet(['foo', 'foo'], 'a', 'bar')) + self.assertEquals('"$a" "$a"', + cmd_helper.ShrinkToSnippet(['foo', 'foo'], 'a', 'foo')) + self.assertEquals('foo "$a""$a"', + cmd_helper.ShrinkToSnippet(['foo', 'barbar'], 'a', 'bar')) + self.assertEquals('foo "$a"\' \'"$a"', + cmd_helper.ShrinkToSnippet(['foo', 'bar bar'], 'a', 'bar')) + self.assertEquals('foo "$a""$a"\' \'', + cmd_helper.ShrinkToSnippet(['foo', 'barbar '], 'a', 'bar')) + self.assertEquals('foo \' \'"$a""$a"\' \'', + cmd_helper.ShrinkToSnippet(['foo', ' barbar '], 'a', 'bar')) + + +_DEFAULT = 'DEFAULT' + + +class _ProcessOutputEvent(object): + + def __init__(self, select_fds=_DEFAULT, read_contents=None, ts=_DEFAULT): + self.select_fds = select_fds + self.read_contents = read_contents + self.ts = ts + + +class _MockProcess(object): + + def __init__(self, output_sequence=None, return_value=0): + + # Arbitrary. + fake_stdout_fileno = 25 + + self.mock_proc = mock.MagicMock(spec=subprocess.Popen) + self.mock_proc.stdout = mock.MagicMock() + self.mock_proc.stdout.fileno = mock.MagicMock( + return_value=fake_stdout_fileno) + self.mock_proc.returncode = None + + self._return_value = return_value + + # This links the behavior of os.read, select.select, time.time, and + # <process>.poll. The output sequence can be thought of as a list of + # return values for select.select with corresponding return values for + # the other calls at any time between that select call and the following + # one. We iterate through the sequence only on calls to select.select. + # + # os.read is a special case, though, where we only return a given chunk + # of data *once* after a given call to select. + + if not output_sequence: + output_sequence = [] + + # Use an leading element to make the iteration logic work. + initial_seq_element = _ProcessOutputEvent( + _DEFAULT, '', + output_sequence[0].ts if output_sequence else _DEFAULT) + output_sequence.insert(0, initial_seq_element) + + for o in output_sequence: + if o.select_fds == _DEFAULT: + if o.read_contents is None: + o.select_fds = [] + else: + o.select_fds = [fake_stdout_fileno] + if o.ts == _DEFAULT: + o.ts = time.time() + self._output_sequence = output_sequence + + self._output_seq_index = 0 + self._read_flags = [False] * len(output_sequence) + + def read_side_effect(*_args, **_kwargs): + if self._read_flags[self._output_seq_index]: + return None + self._read_flags[self._output_seq_index] = True + return self._output_sequence[self._output_seq_index].read_contents + + def select_side_effect(*_args, **_kwargs): + if self._output_seq_index is None: + self._output_seq_index = 0 + else: + self._output_seq_index += 1 + return (self._output_sequence[self._output_seq_index].select_fds, + None, None) + + def time_side_effect(*_args, **_kwargs): + return self._output_sequence[self._output_seq_index].ts + + def poll_side_effect(*_args, **_kwargs): + if self._output_seq_index >= len(self._output_sequence) - 1: + self.mock_proc.returncode = self._return_value + return self.mock_proc.returncode + + mock_read = mock.MagicMock(side_effect=read_side_effect) + mock_select = mock.MagicMock(side_effect=select_side_effect) + mock_time = mock.MagicMock(side_effect=time_side_effect) + self.mock_proc.poll = mock.MagicMock(side_effect=poll_side_effect) + + # Set up but *do not start* the mocks. + self._mocks = [ + mock.patch('os.read', new=mock_read), + mock.patch('select.select', new=mock_select), + mock.patch('time.time', new=mock_time), + ] + if sys.platform != 'win32': + self._mocks.append(mock.patch('fcntl.fcntl')) + + def __enter__(self): + for m in self._mocks: + m.__enter__() + return self.mock_proc + + def __exit__(self, exc_type, exc_val, exc_tb): + for m in reversed(self._mocks): + m.__exit__(exc_type, exc_val, exc_tb) + + +class CmdHelperIterCmdOutputLinesTest(unittest.TestCase): + """Test IterCmdOutputLines with some calls to the unix 'seq' command.""" + + # This calls _IterCmdOutputLines rather than IterCmdOutputLines s.t. it + # can mock the process. + # pylint: disable=protected-access + + _SIMPLE_OUTPUT_SEQUENCE = [ + _ProcessOutputEvent(read_contents='1\n2\n'), + ] + + def testIterCmdOutputLines_success(self): + with _MockProcess( + output_sequence=self._SIMPLE_OUTPUT_SEQUENCE) as mock_proc: + for num, line in enumerate( + cmd_helper._IterCmdOutputLines(mock_proc, 'mock_proc'), 1): + self.assertEquals(num, int(line)) + + def testIterCmdOutputLines_exitStatusFail(self): + with self.assertRaises(subprocess.CalledProcessError): + with _MockProcess(output_sequence=self._SIMPLE_OUTPUT_SEQUENCE, + return_value=1) as mock_proc: + for num, line in enumerate( + cmd_helper._IterCmdOutputLines(mock_proc, 'mock_proc'), 1): + self.assertEquals(num, int(line)) + # after reading all the output we get an exit status of 1 + + def testIterCmdOutputLines_exitStatusIgnored(self): + with _MockProcess(output_sequence=self._SIMPLE_OUTPUT_SEQUENCE, + return_value=1) as mock_proc: + for num, line in enumerate( + cmd_helper._IterCmdOutputLines( + mock_proc, 'mock_proc', check_status=False), + 1): + self.assertEquals(num, int(line)) + + def testIterCmdOutputLines_exitStatusSkipped(self): + with _MockProcess(output_sequence=self._SIMPLE_OUTPUT_SEQUENCE, + return_value=1) as mock_proc: + for num, line in enumerate( + cmd_helper._IterCmdOutputLines(mock_proc, 'mock_proc'), 1): + self.assertEquals(num, int(line)) + # no exception will be raised because we don't attempt to read past + # the end of the output and, thus, the status never gets checked + if num == 2: + break + + def testIterCmdOutputLines_delay(self): + output_sequence = [ + _ProcessOutputEvent(read_contents='1\n2\n', ts=1), + _ProcessOutputEvent(read_contents=None, ts=2), + _ProcessOutputEvent(read_contents='Awake', ts=10), + ] + with _MockProcess(output_sequence=output_sequence) as mock_proc: + for num, line in enumerate( + cmd_helper._IterCmdOutputLines(mock_proc, 'mock_proc', + iter_timeout=5), 1): + if num <= 2: + self.assertEquals(num, int(line)) + elif num == 3: + self.assertEquals(None, line) + elif num == 4: + self.assertEquals('Awake', line) + else: + self.fail() + + +if __name__ == '__main__': + unittest.main() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/file_utils.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/file_utils.py new file mode 100644 index 0000000..dc5a9ef --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/file_utils.py @@ -0,0 +1,31 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os + + +def MergeFiles(dest_file, source_files): + """Merge list of files into single destination file. + + Args: + dest_file: File to be written to. + source_files: List of files to be merged. Will be merged in the order they + appear in the list. + """ + if not os.path.exists(os.path.dirname(dest_file)): + os.makedirs(os.path.dirname(dest_file)) + try: + with open(dest_file, 'w') as dest_f: + for source_file in source_files: + with open(source_file, 'r') as source_f: + dest_f.write(source_f.read()) + except Exception as e: # pylint: disable=broad-except + # Something went wrong when creating dest_file. Cleaning up. + try: + os.remove(dest_file) + except OSError: + pass + raise e + + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/find_usb_devices.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/find_usb_devices.py new file mode 100644 index 0000000..28a2eb8 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/find_usb_devices.py @@ -0,0 +1,538 @@ +#!/usr/bin/python +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import argparse +import os +import re +import sys + +if __name__ == '__main__': + sys.path.append( + os.path.abspath(os.path.join(os.path.dirname(__file__), + '..', '..'))) + +from devil.utils import cmd_helper +from devil.utils import usb_hubs +from devil.utils import lsusb + +# Note: In the documentation below, "virtual port" refers to the port number +# as observed by the system (e.g. by usb-devices) and "physical port" refers +# to the physical numerical label on the physical port e.g. on a USB hub. +# The mapping between virtual and physical ports is not always the identity +# (e.g. the port labeled "1" on a USB hub does not always show up as "port 1" +# when you plug something into it) but, as far as we are aware, the mapping +# between virtual and physical ports is always the same for a given +# model of USB hub. When "port number" is referenced without specifying, it +# means the virtual port number. + + +# Wrapper functions for system commands to get output. These are in wrapper +# functions so that they can be more easily mocked-out for tests. +def _GetParsedLSUSBOutput(): + return lsusb.lsusb() + + +def _GetUSBDevicesOutput(): + return cmd_helper.GetCmdOutput(['usb-devices']) + + +def _GetTtyUSBInfo(tty_string): + cmd = ['udevadm', 'info', '--name=/dev/' + tty_string, '--attribute-walk'] + return cmd_helper.GetCmdOutput(cmd) + + +def _GetCommList(): + return cmd_helper.GetCmdOutput('ls /dev', shell=True) + + +def GetTTYList(): + return [x for x in _GetCommList().splitlines() if 'ttyUSB' in x] + + +# Class to identify nodes in the USB topology. USB topology is organized as +# a tree. +class USBNode(object): + def __init__(self): + self._port_to_node = {} + + @property + def desc(self): + raise NotImplementedError + + @property + def info(self): + raise NotImplementedError + + @property + def device_num(self): + raise NotImplementedError + + @property + def bus_num(self): + raise NotImplementedError + + def HasPort(self, port): + """Determines if this device has a device connected to the given port.""" + return port in self._port_to_node + + def PortToDevice(self, port): + """Gets the device connected to the given port on this device.""" + return self._port_to_node[port] + + def Display(self, port_chain='', info=False): + """Displays information about this node and its descendants. + + Output format is, e.g. 1:3:3:Device 42 (ID 1234:5678 Some Device) + meaning that from the bus, if you look at the device connected + to port 1, then the device connected to port 3 of that, + then the device connected to port 3 of that, you get the device + assigned device number 42, which is Some Device. Note that device + numbers will be reassigned whenever a connected device is powercycled + or reinserted, but port numbers stay the same as long as the device + is reinserted back into the same physical port. + + Args: + port_chain: [string] Chain of ports from bus to this node (e.g. '2:4:') + info: [bool] Whether to display detailed info as well. + """ + raise NotImplementedError + + def AddChild(self, port, device): + """Adds child to the device tree. + + Args: + port: [int] Port number of the device. + device: [USBDeviceNode] Device to add. + + Raises: + ValueError: If device already has a child at the given port. + """ + if self.HasPort(port): + raise ValueError('Duplicate port number') + else: + self._port_to_node[port] = device + + def AllNodes(self): + """Generator that yields this node and all of its descendants. + + Yields: + [USBNode] First this node, then each of its descendants (recursively) + """ + yield self + for child_node in self._port_to_node.values(): + for descendant_node in child_node.AllNodes(): + yield descendant_node + + def FindDeviceNumber(self, findnum): + """Find device with given number in tree + + Searches the portion of the device tree rooted at this node for + a device with the given device number. + + Args: + findnum: [int] Device number to search for. + + Returns: + [USBDeviceNode] Node that is found. + """ + for node in self.AllNodes(): + if node.device_num == findnum: + return node + return None + + +class USBDeviceNode(USBNode): + def __init__(self, bus_num=0, device_num=0, serial=None, info=None): + """Class that represents a device in USB tree. + + Args: + bus_num: [int] Bus number that this node is attached to. + device_num: [int] Device number of this device (or 0, if this is a bus) + serial: [string] Serial number. + info: [dict] Map giving detailed device info. + """ + super(USBDeviceNode, self).__init__() + self._bus_num = bus_num + self._device_num = device_num + self._serial = serial + self._info = {} if info is None else info + + #override + @property + def desc(self): + return self._info.get('desc') + + #override + @property + def info(self): + return self._info + + #override + @property + def device_num(self): + return self._device_num + + #override + @property + def bus_num(self): + return self._bus_num + + @property + def serial(self): + return self._serial + + @serial.setter + def serial(self, serial): + self._serial = serial + + #override + def Display(self, port_chain='', info=False): + print '%s Device %d (%s)' % (port_chain, self.device_num, self.desc) + if info: + print self.info + for (port, device) in self._port_to_node.iteritems(): + device.Display('%s%d:' % (port_chain, port), info=info) + + +class USBBusNode(USBNode): + def __init__(self, bus_num=0): + """Class that represents a node (either a bus or device) in USB tree. + + Args: + is_bus: [bool] If true, node is bus; if not, node is device. + bus_num: [int] Bus number that this node is attached to. + device_num: [int] Device number of this device (or 0, if this is a bus) + desc: [string] Short description of device. + serial: [string] Serial number. + info: [dict] Map giving detailed device info. + port_to_dev: [dict(int:USBDeviceNode)] + Maps port # to device connected to port. + """ + super(USBBusNode, self).__init__() + self._bus_num = bus_num + + #override + @property + def desc(self): + return 'BUS %d' % self._bus_num + + #override + @property + def info(self): + return {} + + #override + @property + def device_num(self): + return -1 + + #override + @property + def bus_num(self): + return self._bus_num + + #override + def Display(self, port_chain='', info=False): + print "=== %s ===" % self.desc + for (port, device) in self._port_to_node.iteritems(): + device.Display('%s%d:' % (port_chain, port), info=info) + + +_T_LINE_REGEX = re.compile(r'T: Bus=(?P<bus>\d{2}) Lev=(?P<lev>\d{2}) ' + r'Prnt=(?P<prnt>\d{2,3}) Port=(?P<port>\d{2}) ' + r'Cnt=(?P<cnt>\d{2}) Dev#=(?P<dev>.{3}) .*') + +_S_LINE_REGEX = re.compile(r'S: SerialNumber=(?P<serial>.*)') +_LSUSB_BUS_DEVICE_RE = re.compile(r'^Bus (\d{3}) Device (\d{3}): (.*)') + + +def GetBusNumberToDeviceTreeMap(fast=True): + """Gets devices currently attached. + + Args: + fast [bool]: whether to do it fast (only get description, not + the whole dictionary, from lsusb) + + Returns: + map of {bus number: bus object} + where the bus object has all the devices attached to it in a tree. + """ + if fast: + info_map = {} + for line in lsusb.raw_lsusb().splitlines(): + match = _LSUSB_BUS_DEVICE_RE.match(line) + if match: + info_map[(int(match.group(1)), int(match.group(2)))] = ( + {'desc':match.group(3)}) + else: + info_map = {((int(line['bus']), int(line['device']))): line + for line in _GetParsedLSUSBOutput()} + + + tree = {} + bus_num = -1 + for line in _GetUSBDevicesOutput().splitlines(): + match = _T_LINE_REGEX.match(line) + if match: + bus_num = int(match.group('bus')) + parent_num = int(match.group('prnt')) + # usb-devices starts counting ports from 0, so add 1 + port_num = int(match.group('port')) + 1 + device_num = int(match.group('dev')) + + # create new bus if necessary + if bus_num not in tree: + tree[bus_num] = USBBusNode(bus_num=bus_num) + + # create the new device + new_device = USBDeviceNode(bus_num=bus_num, + device_num=device_num, + info=info_map.get((bus_num, device_num), + {'desc': 'NOT AVAILABLE'})) + + # add device to bus + if parent_num != 0: + tree[bus_num].FindDeviceNumber(parent_num).AddChild( + port_num, new_device) + else: + tree[bus_num].AddChild(port_num, new_device) + + match = _S_LINE_REGEX.match(line) + if match: + if bus_num == -1: + raise ValueError('S line appears before T line in input file') + # put the serial number in the device + tree[bus_num].FindDeviceNumber(device_num).serial = match.group('serial') + + return tree + + +def GetHubsOnBus(bus, hub_types): + """Scans for all hubs on a bus of given hub types. + + Args: + bus: [USBNode] Bus object. + hub_types: [iterable(usb_hubs.HubType)] Possible types of hubs. + + Yields: + Sequence of tuples representing (hub, type of hub) + """ + for device in bus.AllNodes(): + for hub_type in hub_types: + if hub_type.IsType(device): + yield (device, hub_type) + + +def GetPhysicalPortToNodeMap(hub, hub_type): + """Gets physical-port:node mapping for a given hub. + Args: + hub: [USBNode] Hub to get map for. + hub_type: [usb_hubs.HubType] Which type of hub it is. + + Returns: + Dict of {physical port: node} + """ + port_device = hub_type.GetPhysicalPortToNodeTuples(hub) + return {port: device for (port, device) in port_device} + + +def GetPhysicalPortToBusDeviceMap(hub, hub_type): + """Gets physical-port:(bus#, device#) mapping for a given hub. + Args: + hub: [USBNode] Hub to get map for. + hub_type: [usb_hubs.HubType] Which type of hub it is. + + Returns: + Dict of {physical port: (bus number, device number)} + """ + port_device = hub_type.GetPhysicalPortToNodeTuples(hub) + return {port: (device.bus_num, device.device_num) + for (port, device) in port_device} + + +def GetPhysicalPortToSerialMap(hub, hub_type): + """Gets physical-port:serial# mapping for a given hub. + + Args: + hub: [USBNode] Hub to get map for. + hub_type: [usb_hubs.HubType] Which type of hub it is. + + Returns: + Dict of {physical port: serial number)} + """ + port_device = hub_type.GetPhysicalPortToNodeTuples(hub) + return {port: device.serial + for (port, device) in port_device + if device.serial} + + +def GetPhysicalPortToTTYMap(device, hub_type): + """Gets physical-port:tty-string mapping for a given hub. + Args: + hub: [USBNode] Hub to get map for. + hub_type: [usb_hubs.HubType] Which type of hub it is. + + Returns: + Dict of {physical port: tty-string)} + """ + port_device = hub_type.GetPhysicalPortToNodeTuples(device) + bus_device_to_tty = GetBusDeviceToTTYMap() + return {port: bus_device_to_tty[(device.bus_num, device.device_num)] + for (port, device) in port_device + if (device.bus_num, device.device_num) in bus_device_to_tty} + + +def CollectHubMaps(hub_types, map_func, device_tree_map=None, fast=False): + """Runs a function on all hubs in the system and collects their output. + + Args: + hub_types: [usb_hubs.HubType] List of possible hub types. + map_func: [string] Function to run on each hub. + device_tree: Previously constructed device tree map, if any. + fast: Whether to construct device tree fast, if not already provided + + Yields: + Sequence of dicts of {physical port: device} where the type of + device depends on the ident keyword. Each dict is a separate hub. + """ + if device_tree_map is None: + device_tree_map = GetBusNumberToDeviceTreeMap(fast=fast) + for bus in device_tree_map.values(): + for (hub, hub_type) in GetHubsOnBus(bus, hub_types): + yield map_func(hub, hub_type) + + +def GetAllPhysicalPortToNodeMaps(hub_types, **kwargs): + return CollectHubMaps(hub_types, GetPhysicalPortToNodeMap, **kwargs) + + +def GetAllPhysicalPortToBusDeviceMaps(hub_types, **kwargs): + return CollectHubMaps(hub_types, GetPhysicalPortToBusDeviceMap, **kwargs) + + +def GetAllPhysicalPortToSerialMaps(hub_types, **kwargs): + return CollectHubMaps(hub_types, GetPhysicalPortToSerialMap, **kwargs) + + +def GetAllPhysicalPortToTTYMaps(hub_types, **kwargs): + return CollectHubMaps(hub_types, GetPhysicalPortToTTYMap, **kwargs) + + +_BUS_NUM_REGEX = re.compile(r'.*ATTRS{busnum}=="(\d*)".*') +_DEVICE_NUM_REGEX = re.compile(r'.*ATTRS{devnum}=="(\d*)".*') + + +def GetBusDeviceFromTTY(tty_string): + """Gets bus and device number connected to a ttyUSB port. + + Args: + tty_string: [String] Identifier for ttyUSB (e.g. 'ttyUSB0') + + Returns: + Tuple (bus, device) giving device connected to that ttyUSB. + + Raises: + ValueError: If bus and device information could not be found. + """ + bus_num = None + device_num = None + # Expected output of GetCmdOutput should be something like: + # looking at device /devices/something/.../.../... + # KERNELS="ttyUSB0" + # SUBSYSTEMS=... + # DRIVERS=... + # ATTRS{foo}=... + # ATTRS{bar}=... + # ... + for line in _GetTtyUSBInfo(tty_string).splitlines(): + bus_match = _BUS_NUM_REGEX.match(line) + device_match = _DEVICE_NUM_REGEX.match(line) + if bus_match and bus_num == None: + bus_num = int(bus_match.group(1)) + if device_match and device_num == None: + device_num = int(device_match.group(1)) + if bus_num is None or device_num is None: + raise ValueError('Info not found') + return (bus_num, device_num) + + +def GetBusDeviceToTTYMap(): + """Gets all mappings from (bus, device) to ttyUSB string. + + Gets mapping from (bus, device) to ttyUSB string (e.g. 'ttyUSB0'), + for all ttyUSB strings currently active. + + Returns: + [dict] Dict that maps (bus, device) to ttyUSB string + """ + result = {} + for tty in GetTTYList(): + result[GetBusDeviceFromTTY(tty)] = tty + return result + + +# This dictionary described the mapping between physical and +# virtual ports on a Plugable 7-Port Hub (model USB2-HUB7BC). +# Keys are the virtual ports, values are the physical port. +# The entry 4:{1:4, 2:3, 3:2, 4:1} indicates that virtual port +# 4 connects to another 'virtual' hub that itself has the +# virtual-to-physical port mapping {1:4, 2:3, 3:2, 4:1}. + + +def TestUSBTopologyScript(): + """Test display and hub identification.""" + # Identification criteria for Plugable 7-Port Hub + print '==== USB TOPOLOGY SCRIPT TEST ====' + + # Display devices + print '==== DEVICE DISPLAY ====' + device_trees = GetBusNumberToDeviceTreeMap() + for device_tree in device_trees.values(): + device_tree.Display() + print + + # Display TTY information about devices plugged into hubs. + print '==== TTY INFORMATION ====' + for port_map in GetAllPhysicalPortToTTYMaps( + usb_hubs.ALL_HUBS, device_tree_map=device_trees): + print port_map + print + + # Display serial number information about devices plugged into hubs. + print '==== SERIAL NUMBER INFORMATION ====' + for port_map in GetAllPhysicalPortToSerialMaps( + usb_hubs.ALL_HUBS, device_tree_map=device_trees): + print port_map + + + return 0 + + +def parse_options(argv): + """Parses and checks the command-line options. + + Returns: + A tuple containing the options structure and a list of categories to + be traced. + """ + USAGE = '''./find_usb_devices [--help] + This script shows the mapping between USB devices and port numbers. + Clients are not intended to call this script from the command line. + Clients are intended to call the functions in this script directly. + For instance, GetAllPhysicalPortToSerialMaps(...) + Running this script with --help will display this message. + Running this script without --help will display information about + devices attached, TTY mapping, and serial number mapping, + for testing purposes. See design document for API documentation. + ''' + parser = argparse.ArgumentParser(usage=USAGE) + return parser.parse_args(argv[1:]) + +def main(): + parse_options(sys.argv) + TestUSBTopologyScript() + +if __name__ == "__main__": + sys.exit(main()) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/find_usb_devices_test.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/find_usb_devices_test.py new file mode 100644 index 0000000..e8b00c8 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/find_usb_devices_test.py @@ -0,0 +1,379 @@ +#!/usr/bin/env python +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# pylint: disable=protected-access + +""" +Unit tests for the contents of find_usb_devices.py. + +Device tree for these tests is as follows: +Bus 001: +1: Device 011 "foo" +2: Device 012 "bar" +3: Device 013 "baz" + +Bus 002: +1: Device 011 "quux" +2: Device 020 "My Test HUB" #hub 1 +2:1: Device 021 "battor_p7_h1_t0" #physical port 7 on hub 1, on ttyUSB0 +2:3: Device 022 "battor_p5_h1_t1" #physical port 5 on hub 1, on ttyUSB1 +2:4: Device 023 "My Test Internal HUB" #internal section of hub 1 +2:4:2: Device 024 "battor_p3_h1_t2" #physical port 3 on hub 1, on ttyUSB2 +2:4:3: Device 026 "Not a Battery Monitor" #physical port 1 on hub 1, on ttyUSB3 +2:4:4: Device 025 "battor_p1_h1_t3" #physical port 1 on hub 1, on ttyUSB3 +3: Device 100 "My Test HUB" #hub 2 +3:4: Device 101 "My Test Internal HUB" #internal section of hub 2 +3:4:4: Device 102 "battor_p1_h2_t4" #physical port 1 on hub 2, on ttyusb4 +""" + +import logging +import os +import unittest + +from devil import devil_env +from devil.utils import battor_device_mapping +from devil.utils import find_usb_devices +from devil.utils import lsusb +from devil.utils import usb_hubs + +with devil_env.SysPath(devil_env.PYMOCK_PATH): + import mock # pylint: disable=import-error + +# Output of lsusb.lsusb(). +# We just test that the dictionary is working by creating an +# "ID number" equal to (bus_num*1000)+device_num and seeing if +# it is picked up correctly. Also we test the description + +DEVLIST = [(1, 11, 'foo'), + (1, 12, 'bar'), + (1, 13, 'baz'), + (2, 11, 'quux'), + (2, 20, 'My Test HUB'), + (2, 21, 'ID 0403:6001 battor_p7_h1_t0'), + (2, 22, 'ID 0403:6001 battor_p5_h1_t1'), + (2, 23, 'My Test Internal HUB'), + (2, 24, 'ID 0403:6001 battor_p3_h1_t2'), + (2, 25, 'ID 0403:6001 battor_p1_h1_t3'), + (2, 26, 'Not a Battery Monitor'), + (2, 100, 'My Test HUB'), + (2, 101, 'My Test Internal HUB'), + (2, 102, 'ID 0403:6001 battor_p1_h1_t4')] + +LSUSB_OUTPUT = [ + {'bus': b, 'device': d, 'desc': t, 'id': (1000*b)+d} + for (b, d, t) in DEVLIST] + + +# Note: "Lev", "Cnt", "Spd", and "MxCh" are not used by parser, +# so we just leave them as zeros here. Also note that the port +# numbers reported here start at 0, so they're 1 less than the +# port numbers reported elsewhere. +USB_DEVICES_OUTPUT = ''' +T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 11 Spd=000 MxCh=00 +S: SerialNumber=FooSerial +T: Bus=01 Lev=00 Prnt=00 Port=01 Cnt=00 Dev#= 12 Spd=000 MxCh=00 +S: SerialNumber=BarSerial +T: Bus=01 Lev=00 Prnt=00 Port=02 Cnt=00 Dev#= 13 Spd=000 MxCh=00 +S: SerialNumber=BazSerial + +T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 11 Spd=000 MxCh=00 + +T: Bus=02 Lev=00 Prnt=00 Port=01 Cnt=00 Dev#= 20 Spd=000 MxCh=00 +T: Bus=02 Lev=00 Prnt=20 Port=00 Cnt=00 Dev#= 21 Spd=000 MxCh=00 +S: SerialNumber=BattOr0 +T: Bus=02 Lev=00 Prnt=20 Port=02 Cnt=00 Dev#= 22 Spd=000 MxCh=00 +S: SerialNumber=BattOr1 +T: Bus=02 Lev=00 Prnt=20 Port=03 Cnt=00 Dev#= 23 Spd=000 MxCh=00 +T: Bus=02 Lev=00 Prnt=23 Port=01 Cnt=00 Dev#= 24 Spd=000 MxCh=00 +S: SerialNumber=BattOr2 +T: Bus=02 Lev=00 Prnt=23 Port=03 Cnt=00 Dev#= 25 Spd=000 MxCh=00 +S: SerialNumber=BattOr3 +T: Bus=02 Lev=00 Prnt=23 Port=02 Cnt=00 Dev#= 26 Spd=000 MxCh=00 + +T: Bus=02 Lev=00 Prnt=00 Port=02 Cnt=00 Dev#=100 Spd=000 MxCh=00 +T: Bus=02 Lev=00 Prnt=100 Port=03 Cnt=00 Dev#=101 Spd=000 MxCh=00 +T: Bus=02 Lev=00 Prnt=101 Port=03 Cnt=00 Dev#=102 Spd=000 MxCh=00 +''' + +RAW_LSUSB_OUTPUT = ''' +Bus 001 Device 011: FAST foo +Bus 001 Device 012: FAST bar +Bus 001 Device 013: baz +Bus 002 Device 011: quux +Bus 002 Device 020: My Test HUB +Bus 002 Device 021: ID 0403:6001 battor_p7_h1_t0 +Bus 002 Device 022: ID 0403:6001 battor_p5_h1_t1 +Bus 002 Device 023: My Test Internal HUB +Bus 002 Device 024: ID 0403:6001 battor_p3_h1_t2 +Bus 002 Device 025: ID 0403:6001 battor_p1_h1_t3 +Bus 002 Device 026: Not a Battery Monitor +Bus 002 Device 100: My Test HUB +Bus 002 Device 101: My Test Internal HUB +Bus 002 Device 102: ID 0403:6001 battor_p1_h1_t4 +''' + +LIST_TTY_OUTPUT = ''' +ttyUSB0 +Something-else-0 +ttyUSB1 +ttyUSB2 +Something-else-1 +ttyUSB3 +ttyUSB4 +Something-else-2 +ttyUSB5 +''' + +# Note: The real output will have multiple lines with +# ATTRS{busnum} and ATTRS{devnum}, but only the first +# one counts. Thus the test output duplicates this. +UDEVADM_USBTTY0_OUTPUT = ''' +ATTRS{busnum}=="2" +ATTRS{devnum}=="21" +ATTRS{busnum}=="0" +ATTRS{devnum}=="0" +''' + +UDEVADM_USBTTY1_OUTPUT = ''' +ATTRS{busnum}=="2" +ATTRS{devnum}=="22" +ATTRS{busnum}=="0" +ATTRS{devnum}=="0" +''' + +UDEVADM_USBTTY2_OUTPUT = ''' +ATTRS{busnum}=="2" +ATTRS{devnum}=="24" +ATTRS{busnum}=="0" +ATTRS{devnum}=="0" +''' + +UDEVADM_USBTTY3_OUTPUT = ''' +ATTRS{busnum}=="2" +ATTRS{devnum}=="25" +ATTRS{busnum}=="0" +ATTRS{devnum}=="0" +''' + +UDEVADM_USBTTY4_OUTPUT = ''' +ATTRS{busnum}=="2" +ATTRS{devnum}=="102" +ATTRS{busnum}=="0" +ATTRS{devnum}=="0" +''' + +UDEVADM_USBTTY5_OUTPUT = ''' +ATTRS{busnum}=="2" +ATTRS{devnum}=="26" +ATTRS{busnum}=="0" +ATTRS{devnum}=="0" +''' + +UDEVADM_OUTPUT_DICT = { + 'ttyUSB0': UDEVADM_USBTTY0_OUTPUT, + 'ttyUSB1': UDEVADM_USBTTY1_OUTPUT, + 'ttyUSB2': UDEVADM_USBTTY2_OUTPUT, + 'ttyUSB3': UDEVADM_USBTTY3_OUTPUT, + 'ttyUSB4': UDEVADM_USBTTY4_OUTPUT, + 'ttyUSB5': UDEVADM_USBTTY5_OUTPUT} + +# Identification criteria for Plugable 7-Port Hub +def isTestHub(node): + """Check if a node is a Plugable 7-Port Hub + (Model USB2-HUB7BC) + The topology of this device is a 4-port hub, + with another 4-port hub connected on port 4. + """ + if not isinstance(node, find_usb_devices.USBDeviceNode): + return False + if 'Test HUB' not in node.desc: + return False + if not node.HasPort(4): + return False + return 'Test Internal HUB' in node.PortToDevice(4).desc + +TEST_HUB = usb_hubs.HubType(isTestHub, + {1:7, + 2:6, + 3:5, + 4:{1:4, 2:3, 3:2, 4:1}}) + +class USBScriptTest(unittest.TestCase): + def setUp(self): + find_usb_devices._GetTtyUSBInfo = mock.Mock( + side_effect=lambda x: UDEVADM_OUTPUT_DICT[x]) + find_usb_devices._GetParsedLSUSBOutput = mock.Mock( + return_value=LSUSB_OUTPUT) + find_usb_devices._GetUSBDevicesOutput = mock.Mock( + return_value=USB_DEVICES_OUTPUT) + find_usb_devices._GetCommList = mock.Mock( + return_value=LIST_TTY_OUTPUT) + lsusb.raw_lsusb = mock.Mock( + return_value=RAW_LSUSB_OUTPUT) + + def testIsBattOr(self): + bd = find_usb_devices.GetBusNumberToDeviceTreeMap() + self.assertTrue(battor_device_mapping.IsBattOr('ttyUSB3', bd)) + self.assertFalse(battor_device_mapping.IsBattOr('ttyUSB5', bd)) + + def testGetBattOrs(self): + bd = find_usb_devices.GetBusNumberToDeviceTreeMap() + self.assertEquals(battor_device_mapping.GetBattOrList(bd), + ['ttyUSB0', 'ttyUSB1', 'ttyUSB2', + 'ttyUSB3', 'ttyUSB4']) + + def testGetTTYDevices(self): + pp = find_usb_devices.GetAllPhysicalPortToTTYMaps([TEST_HUB]) + result = list(pp) + self.assertEquals(result[0], {7:'ttyUSB0', + 5:'ttyUSB1', + 3:'ttyUSB2', + 2:'ttyUSB5', + 1:'ttyUSB3'}) + self.assertEquals(result[1], {1:'ttyUSB4'}) + + def testGetPortDeviceMapping(self): + pp = find_usb_devices.GetAllPhysicalPortToBusDeviceMaps([TEST_HUB]) + result = list(pp) + self.assertEquals(result[0], {7:(2, 21), + 5:(2, 22), + 3:(2, 24), + 2:(2, 26), + 1:(2, 25)}) + self.assertEquals(result[1], {1:(2, 102)}) + + def testGetSerialMapping(self): + pp = find_usb_devices.GetAllPhysicalPortToSerialMaps([TEST_HUB]) + result = list(pp) + self.assertEquals(result[0], {7:'BattOr0', + 5:'BattOr1', + 3:'BattOr2', + 1:'BattOr3'}) + self.assertEquals(result[1], {}) + + def testFastDeviceDescriptions(self): + bd = find_usb_devices.GetBusNumberToDeviceTreeMap() + dev_foo = bd[1].FindDeviceNumber(11) + dev_bar = bd[1].FindDeviceNumber(12) + dev_battor_p7_h1_t0 = bd[2].FindDeviceNumber(21) + self.assertEquals(dev_foo.desc, 'FAST foo') + self.assertEquals(dev_bar.desc, 'FAST bar') + self.assertEquals(dev_battor_p7_h1_t0.desc, + 'ID 0403:6001 battor_p7_h1_t0') + + def testDeviceDescriptions(self): + bd = find_usb_devices.GetBusNumberToDeviceTreeMap(fast=False) + dev_foo = bd[1].FindDeviceNumber(11) + dev_bar = bd[1].FindDeviceNumber(12) + dev_battor_p7_h1_t0 = bd[2].FindDeviceNumber(21) + self.assertEquals(dev_foo.desc, 'foo') + self.assertEquals(dev_bar.desc, 'bar') + self.assertEquals(dev_battor_p7_h1_t0.desc, + 'ID 0403:6001 battor_p7_h1_t0') + + def testDeviceInformation(self): + bd = find_usb_devices.GetBusNumberToDeviceTreeMap(fast=False) + dev_foo = bd[1].FindDeviceNumber(11) + dev_bar = bd[1].FindDeviceNumber(12) + dev_battor_p7_h1_t0 = bd[2].FindDeviceNumber(21) + self.assertEquals(dev_foo.info['id'], 1011) + self.assertEquals(dev_bar.info['id'], 1012) + self.assertEquals(dev_battor_p7_h1_t0.info['id'], 2021) + + def testSerialNumber(self): + bd = find_usb_devices.GetBusNumberToDeviceTreeMap(fast=False) + dev_foo = bd[1].FindDeviceNumber(11) + dev_bar = bd[1].FindDeviceNumber(12) + dev_battor_p7_h1_t0 = bd[2].FindDeviceNumber(21) + self.assertEquals(dev_foo.serial, 'FooSerial') + self.assertEquals(dev_bar.serial, 'BarSerial') + self.assertEquals(dev_battor_p7_h1_t0.serial, 'BattOr0') + + def testBattOrDictMapping(self): + map_dict = {'Phone1':'BattOr1', 'Phone2':'BattOr2', 'Phone3':'BattOr3'} + a1 = battor_device_mapping.GetBattOrPathFromPhoneSerial( + 'Phone1', serial_map=map_dict) + a2 = battor_device_mapping.GetBattOrPathFromPhoneSerial( + 'Phone2', serial_map=map_dict) + a3 = battor_device_mapping.GetBattOrPathFromPhoneSerial( + 'Phone3', serial_map=map_dict) + self.assertEquals(a1, '/dev/ttyUSB1') + self.assertEquals(a2, '/dev/ttyUSB2') + self.assertEquals(a3, '/dev/ttyUSB3') + + def testBattOrDictFromFileMapping(self): + try: + map_dict = {'Phone1':'BattOr1', 'Phone2':'BattOr2', 'Phone3':'BattOr3'} + curr_dir = os.path.dirname(os.path.realpath(__file__)) + filename = os.path.join(curr_dir, 'test', 'data', 'test_write_map.json') + battor_device_mapping.WriteSerialMapFile(filename, map_dict) + a1 = battor_device_mapping.GetBattOrPathFromPhoneSerial( + 'Phone1', serial_map_file=filename) + a2 = battor_device_mapping.GetBattOrPathFromPhoneSerial( + 'Phone2', serial_map_file=filename) + a3 = battor_device_mapping.GetBattOrPathFromPhoneSerial( + 'Phone3', serial_map_file=filename) + finally: + os.remove(filename) + self.assertEquals(a1, '/dev/ttyUSB1') + self.assertEquals(a2, '/dev/ttyUSB2') + self.assertEquals(a3, '/dev/ttyUSB3') + + def testReadSerialMapFile(self): + curr_dir = os.path.dirname(os.path.realpath(__file__)) + map_dict = battor_device_mapping.ReadSerialMapFile( + os.path.join(curr_dir, 'test', 'data', 'test_serial_map.json')) + self.assertEquals(len(map_dict.keys()), 3) + self.assertEquals(map_dict['Phone1'], 'BattOr1') + self.assertEquals(map_dict['Phone2'], 'BattOr2') + self.assertEquals(map_dict['Phone3'], 'BattOr3') + +original_PPTSM = find_usb_devices.GetAllPhysicalPortToSerialMaps +original_PPTTM = find_usb_devices.GetAllPhysicalPortToTTYMaps +original_GBL = battor_device_mapping.GetBattOrList +original_GBNDM = find_usb_devices.GetBusNumberToDeviceTreeMap +original_IB = battor_device_mapping.IsBattOr +original_GBSM = battor_device_mapping.GetBattOrSerialNumbers + +def setup_battor_test(serial, tty, battor, bser=None): + serial_mapper = mock.Mock(return_value=serial) + tty_mapper = mock.Mock(return_value=tty) + battor_lister = mock.Mock(return_value=battor) + devtree = mock.Mock(return_value=None) + is_battor = mock.Mock(side_effect=lambda x, y: x in battor) + battor_serials = mock.Mock(return_value=bser) + find_usb_devices.GetAllPhysicalPortToSerialMaps = serial_mapper + find_usb_devices.GetAllPhysicalPortToTTYMaps = tty_mapper + battor_device_mapping.GetBattOrList = battor_lister + find_usb_devices.GetBusNumberToDeviceTreeMap = devtree + battor_device_mapping.IsBattOr = is_battor + battor_device_mapping.GetBattOrSerialNumbers = battor_serials + +class BattOrMappingTest(unittest.TestCase): + def tearDown(self): + find_usb_devices.GetAllPhysicalPortToSerialMaps = original_PPTSM + find_usb_devices.GetAllPhysicalPortToTTYMaps = original_PPTTM + battor_device_mapping.GetBattOrList = original_GBL + find_usb_devices.GetBusNumberToDeviceTreeMap = original_GBNDM + battor_device_mapping.IsBattOr = original_IB + battor_device_mapping.GetBattOrSerialNumbers = original_GBSM + + def test_generate_serial_map(self): + setup_battor_test([{1:'Phn1', 2:'Phn2', 3:'Phn3'}, + {1:'Bat1', 2:'Bat2', 3:'Bat3'}], + [{}, + {1:'ttyUSB0', 2:'ttyUSB1', 3:'ttyUSB2'}], + ['ttyUSB0', 'ttyUSB1', 'ttyUSB2'], + ['Bat1', 'Bat2', 'Bat3']) + result = battor_device_mapping.GenerateSerialMap() + self.assertEqual(len(result), 3) + self.assertEqual(result['Phn1'], 'Bat1') + self.assertEqual(result['Phn2'], 'Bat2') + self.assertEqual(result['Phn3'], 'Bat3') + + +if __name__ == "__main__": + logging.getLogger().setLevel(logging.DEBUG) + unittest.main(verbosity=2) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/geometry.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/geometry.py new file mode 100644 index 0000000..da21770 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/geometry.py @@ -0,0 +1,75 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Objects for convenient manipulation of points and other surface areas.""" + +import collections + + +class Point(collections.namedtuple('Point', ['x', 'y'])): + """Object to represent an (x, y) point on a surface. + + Args: + x, y: Two numeric coordinates that define the point. + """ + __slots__ = () + + def __str__(self): + """Get a useful string representation of the object.""" + return '(%s, %s)' % (self.x, self.y) + + def __add__(self, other): + """Sum of two points, e.g. p + q.""" + if isinstance(other, Point): + return Point(self.x + other.x, self.y + other.y) + else: + return NotImplemented + + def __mul__(self, factor): + """Multiplication on the right is not implemented.""" + # This overrides the default behaviour of a tuple multiplied by a constant + # on the right, which does not make sense for a Point. + return NotImplemented + + def __rmul__(self, factor): + """Multiply a point by a scalar factor on the left, e.g. 2 * p.""" + return Point(factor * self.x, factor * self.y) + + +class Rectangle( + collections.namedtuple('Rectangle', ['top_left', 'bottom_right'])): + """Object to represent a rectangle on a surface. + + Args: + top_left: A pair of (left, top) coordinates. Might be given as a Point + or as a two-element sequence (list, tuple, etc.). + bottom_right: A pair (right, bottom) coordinates. + """ + __slots__ = () + + def __new__(cls, top_left, bottom_right): + if not isinstance(top_left, Point): + top_left = Point(*top_left) + if not isinstance(bottom_right, Point): + bottom_right = Point(*bottom_right) + return super(Rectangle, cls).__new__(cls, top_left, bottom_right) + + def __str__(self): + """Get a useful string representation of the object.""" + return '[%s, %s]' % (self.top_left, self.bottom_right) + + @property + def center(self): + """Get the point at the center of the rectangle.""" + return 0.5 * (self.top_left + self.bottom_right) + + @classmethod + def FromDict(cls, d): + """Create a rectangle object from a dictionary. + + Args: + d: A dictionary (or mapping) of the form, e.g., {'top': 0, 'left': 0, + 'bottom': 1, 'right': 1}. + """ + return cls(Point(d['left'], d['top']), Point(d['right'], d['bottom'])) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/geometry_test.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/geometry_test.py new file mode 100644 index 0000000..af69442 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/geometry_test.py @@ -0,0 +1,61 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Tests for the geometry module.""" + +import unittest + +from devil.utils import geometry as g + + +class PointTest(unittest.TestCase): + + def testStr(self): + p = g.Point(1, 2) + self.assertEquals(str(p), '(1, 2)') + + def testAdd(self): + p = g.Point(1, 2) + q = g.Point(3, 4) + r = g.Point(4, 6) + self.assertEquals(p + q, r) + + def testAdd_TypeErrorWithInvalidOperands(self): + # pylint: disable=pointless-statement + p = g.Point(1, 2) + with self.assertRaises(TypeError): + p + 4 # Can't add point and scalar. + with self.assertRaises(TypeError): + 4 + p # Can't add scalar and point. + + def testMult(self): + p = g.Point(1, 2) + r = g.Point(2, 4) + self.assertEquals(2 * p, r) # Multiply by scalar on the left. + + def testMult_TypeErrorWithInvalidOperands(self): + # pylint: disable=pointless-statement + p = g.Point(1, 2) + q = g.Point(2, 4) + with self.assertRaises(TypeError): + p * q # Can't multiply points. + with self.assertRaises(TypeError): + p * 4 # Can't multiply by a scalar on the right. + + +class RectangleTest(unittest.TestCase): + + def testStr(self): + r = g.Rectangle(g.Point(0, 1), g.Point(2, 3)) + self.assertEquals(str(r), '[(0, 1), (2, 3)]') + + def testCenter(self): + r = g.Rectangle(g.Point(0, 1), g.Point(2, 3)) + c = g.Point(1, 2) + self.assertEquals(r.center, c) + + def testFromJson(self): + r1 = g.Rectangle(g.Point(0, 1), g.Point(2, 3)) + r2 = g.Rectangle.FromDict({'top': 1, 'left': 0, 'bottom': 3, 'right': 2}) + self.assertEquals(r1, r2) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/host_utils.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/host_utils.py new file mode 100644 index 0000000..580721f --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/host_utils.py @@ -0,0 +1,16 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os + + +def GetRecursiveDiskUsage(path): + """Returns the disk usage in bytes of |path|. Similar to `du -sb |path|`.""" + running_size = os.path.getsize(path) + if os.path.isdir(path): + for root, dirs, files in os.walk(path): + running_size += sum([os.path.getsize(os.path.join(root, f)) + for f in files + dirs]) + return running_size + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/lazy/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/lazy/__init__.py new file mode 100644 index 0000000..3cc56c0 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/lazy/__init__.py @@ -0,0 +1,5 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +from devil.utils.lazy.weak_constant import WeakConstant diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/lazy/weak_constant.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/lazy/weak_constant.py new file mode 100644 index 0000000..3558f29 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/lazy/weak_constant.py @@ -0,0 +1,29 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import threading + + +class WeakConstant(object): + """A thread-safe, lazily initialized object. + + This does not support modification after initialization. The intended + constant nature of the object is not enforced, though, hence the "weak". + """ + + def __init__(self, initializer): + self._initialized = False + self._initializer = initializer + self._lock = threading.Lock() + self._val = None + + def read(self): + """Get the object, creating it if necessary.""" + if self._initialized: + return self._val + with self._lock: + if not self._initialized: + self._val = self._initializer() + self._initialized = True + return self._val diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/lsusb.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/lsusb.py new file mode 100644 index 0000000..6cbf256 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/lsusb.py @@ -0,0 +1,174 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import logging +import re + +from devil.utils import cmd_helper + +logger = logging.getLogger(__name__) + +_COULDNT_OPEN_ERROR_RE = re.compile(r'Couldn\'t open device.*') +_INDENTATION_RE = re.compile(r'^( *)') +_LSUSB_BUS_DEVICE_RE = re.compile(r'^Bus (\d{3}) Device (\d{3}): (.*)') +_LSUSB_ENTRY_RE = re.compile(r'^ *([^ ]+) +([^ ]+) *([^ ].*)?$') +_LSUSB_GROUP_RE = re.compile(r'^ *([^ ]+.*):$') + + +def _lsusbv_on_device(bus_id, dev_id): + """Calls lsusb -v on device.""" + _, raw_output = cmd_helper.GetCmdStatusAndOutputWithTimeout( + ['lsusb', '-v', '-s', '%s:%s' % (bus_id, dev_id)], timeout=10) + + device = {'bus': bus_id, 'device': dev_id} + depth_stack = [device] + + # This builds a nested dict -- a tree, basically -- that corresponds + # to the lsusb output. It looks first for a line containing + # + # "Bus <bus number> Device <device number>: ..." + # + # and uses that to create the root node. It then parses all remaining + # lines as a tree, with the indentation level determining the + # depth of the new node. + # + # This expects two kinds of lines: + # - "groups", which take the form + # "<Group name>:" + # and typically have children, and + # - "entries", which take the form + # "<entry name> <entry value> <possible entry description>" + # and typically do not have children (but can). + # + # This maintains a stack containing all current ancestor nodes in + # order to add new nodes to the proper place in the tree. + # The stack is added to when a new node is parsed. Nodes are removed + # from the stack when they are either at the same indentation level as + # or a deeper indentation level than the current line. + # + # e.g. the following lsusb output: + # + # Bus 123 Device 456: School bus + # Device Descriptor: + # bDeviceClass 5 Actual School Bus + # Configuration Descriptor: + # bLength 20 Rows + # + # would produce the following dict: + # + # { + # 'bus': 123, + # 'device': 456, + # 'desc': 'School bus', + # 'Device Descriptor': { + # 'bDeviceClass': { + # '_value': '5', + # '_desc': 'Actual School Bus', + # }, + # 'Configuration Descriptor': { + # 'bLength': { + # '_value': '20', + # '_desc': 'Rows', + # }, + # }, + # } + # } + for line in raw_output.splitlines(): + # Ignore blank lines. + if not line: + continue + # Filter out error mesage about opening device. + if _COULDNT_OPEN_ERROR_RE.match(line): + continue + # Find start of device information. + m = _LSUSB_BUS_DEVICE_RE.match(line) + if m: + if m.group(1) != bus_id: + logger.warning( + 'Expected bus_id value: %r, seen %r', bus_id, m.group(1)) + if m.group(2) != dev_id: + logger.warning( + 'Expected dev_id value: %r, seen %r', dev_id, m.group(2)) + device['desc'] = m.group(3) + continue + + # Skip any lines that aren't indented, as they're not part of the + # device descriptor. + indent_match = _INDENTATION_RE.match(line) + if not indent_match: + continue + + # Determine the indentation depth. + depth = 1 + len(indent_match.group(1)) / 2 + if depth > len(depth_stack): + logger.error( + 'lsusb parsing error: unexpected indentation: "%s"', line) + continue + + # Pop everything off the depth stack that isn't a parent of + # this element. + while depth < len(depth_stack): + depth_stack.pop() + + cur = depth_stack[-1] + + m = _LSUSB_GROUP_RE.match(line) + if m: + new_group = {} + cur[m.group(1)] = new_group + depth_stack.append(new_group) + continue + + m = _LSUSB_ENTRY_RE.match(line) + if m: + new_entry = { + '_value': m.group(2), + '_desc': m.group(3), + } + cur[m.group(1)] = new_entry + depth_stack.append(new_entry) + continue + + logger.error('lsusb parsing error: unrecognized line: "%s"', line) + + return device + +def lsusb(): + """Call lsusb and return the parsed output.""" + _, lsusb_list_output = cmd_helper.GetCmdStatusAndOutputWithTimeout( + ['lsusb'], timeout=10) + devices = [] + for line in lsusb_list_output.splitlines(): + m = _LSUSB_BUS_DEVICE_RE.match(line) + if m: + bus_num = m.group(1) + dev_num = m.group(2) + try: + devices.append(_lsusbv_on_device(bus_num, dev_num)) + except cmd_helper.TimeoutError: + # Will be blacklisted if it is in expected device file, but times out. + logger.info('lsusb -v %s:%s timed out.', bus_num, dev_num) + return devices + +def raw_lsusb(): + return cmd_helper.GetCmdOutput(['lsusb']) + +def get_lsusb_serial(device): + try: + return device['Device Descriptor']['iSerial']['_desc'] + except KeyError: + return None + +def _is_android_device(device): + try: + # Hubs are not android devices. + if device['Device Descriptor']['bDeviceClass']['_value'] == '9': + return False + except KeyError: + pass + return get_lsusb_serial(device) is not None + +def get_android_devices(): + android_devices = (d for d in lsusb() if _is_android_device(d)) + return [get_lsusb_serial(d) for d in android_devices] diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/lsusb_test.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/lsusb_test.py new file mode 100644 index 0000000..f381e72 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/lsusb_test.py @@ -0,0 +1,250 @@ +#!/usr/bin/env python +# Copyright 2013 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Tests for the cmd_helper module.""" + +import unittest + +from devil import devil_env +from devil.utils import lsusb +from devil.utils import mock_calls + +with devil_env.SysPath(devil_env.PYMOCK_PATH): + import mock # pylint: disable=import-error + +RAW_OUTPUT = """ +Bus 003 Device 007: ID 18d1:4ee2 Google Inc. Nexus 4 (debug) +Device Descriptor: + bLength 18 + bDescriptorType 1 + bcdUSB 2.00 + bDeviceClass 0 (Defined at Interface level) + bDeviceSubClass 0 + bDeviceProtocol 0 + bMaxPacketSize0 64 + idVendor 0x18d1 Google Inc. + idProduct 0x4ee2 Nexus 4 (debug) + bcdDevice 2.28 + iManufacturer 1 LGE + iProduct 2 Nexus 4 + iSerial 3 01d2450ea194a93b + bNumConfigurations 1 + Configuration Descriptor: + bLength 9 + bDescriptorType 2 + wTotalLength 62 + bNumInterfaces 2 + bConfigurationValue 1 + iConfiguration 0 + bmAttributes 0x80 + (Bus Powered) + MaxPower 500mA + Interface Descriptor: + bLength 9 + bDescriptorType 4 + bInterfaceNumber 0 + bAlternateSetting 0 + bNumEndpoints 3 + bInterfaceClass 255 Vendor Specific Class + bInterfaceSubClass 255 Vendor Specific Subclass + bInterfaceProtocol 0 + iInterface 4 MTP + Endpoint Descriptor: + bLength 7 + bDescriptorType 5 + bEndpointAddress 0x81 EP 1 IN + bmAttributes 2 + Transfer Type Bulk + Synch Type None + Usage Type Data + wMaxPacketSize 0x0040 1x 64 bytes + bInterval 0 + Endpoint Descriptor: + bLength 7 + bDescriptorType 5 + bEndpointAddress 0x01 EP 1 OUT + bmAttributes 2 + Transfer Type Bulk + Synch Type None + Usage Type Data + wMaxPacketSize 0x0040 1x 64 bytes + bInterval 0 + Endpoint Descriptor: + bLength 7 + bDescriptorType 5 + bEndpointAddress 0x82 EP 2 IN + bmAttributes 3 + Transfer Type Interrupt + Synch Type None + Usage Type Data + wMaxPacketSize 0x001c 1x 28 bytes + bInterval 6 + Interface Descriptor: + bLength 9 + bDescriptorType 4 + bInterfaceNumber 1 + bAlternateSetting 0 + bNumEndpoints 2 + bInterfaceClass 255 Vendor Specific Class + bInterfaceSubClass 66 + bInterfaceProtocol 1 + iInterface 0 + Endpoint Descriptor: + bLength 7 + bDescriptorType 5 + bEndpointAddress 0x83 EP 3 IN + bmAttributes 2 + Transfer Type Bulk + Synch Type None + Usage Type Data + wMaxPacketSize 0x0040 1x 64 bytes + bInterval 0 + Endpoint Descriptor: + bLength 7 + bDescriptorType 5 + bEndpointAddress 0x02 EP 2 OUT + bmAttributes 2 + Transfer Type Bulk + Synch Type None + Usage Type Data + wMaxPacketSize 0x0040 1x 64 bytes + bInterval 0 +Device Qualifier (for other device speed): + bLength 10 + bDescriptorType 6 + bcdUSB 2.00 + bDeviceClass 0 (Defined at Interface level) + bDeviceSubClass 0 + bDeviceProtocol 0 + bMaxPacketSize0 64 + bNumConfigurations 1 +Device Status: 0x0000 + (Bus Powered) +""" +DEVICE_LIST = 'Bus 003 Device 007: ID 18d1:4ee2 Google Inc. Nexus 4 (debug)' + +EXPECTED_RESULT = { + 'device': '007', + 'bus': '003', + 'desc': 'ID 18d1:4ee2 Google Inc. Nexus 4 (debug)', + 'Device': { + '_value': 'Status:', + '_desc': '0x0000', + '(Bus': { + '_value': 'Powered)', + '_desc': None + } + }, + 'Device Descriptor': { + 'bLength': {'_value': '18', '_desc': None}, + 'bcdDevice': {'_value': '2.28', '_desc': None}, + 'bDeviceSubClass': {'_value': '0', '_desc': None}, + 'idVendor': {'_value': '0x18d1', '_desc': 'Google Inc.'}, + 'bcdUSB': {'_value': '2.00', '_desc': None}, + 'bDeviceProtocol': {'_value': '0', '_desc': None}, + 'bDescriptorType': {'_value': '1', '_desc': None}, + 'Configuration Descriptor': { + 'bLength': {'_value': '9', '_desc': None}, + 'wTotalLength': {'_value': '62', '_desc': None}, + 'bConfigurationValue': {'_value': '1', '_desc': None}, + 'Interface Descriptor': { + 'bLength': {'_value': '9', '_desc': None}, + 'bAlternateSetting': {'_value': '0', '_desc': None}, + 'bInterfaceNumber': {'_value': '1', '_desc': None}, + 'bNumEndpoints': {'_value': '2', '_desc': None}, + 'bDescriptorType': {'_value': '4', '_desc': None}, + 'bInterfaceSubClass': {'_value': '66', '_desc': None}, + 'bInterfaceClass': { + '_value': '255', + '_desc': 'Vendor Specific Class' + }, + 'bInterfaceProtocol': {'_value': '1', '_desc': None}, + 'Endpoint Descriptor': { + 'bLength': {'_value': '7', '_desc': None}, + 'bEndpointAddress': {'_value': '0x02', '_desc': 'EP 2 OUT'}, + 'bInterval': {'_value': '0', '_desc': None}, + 'bDescriptorType': {'_value': '5', '_desc': None}, + 'bmAttributes': { + '_value': '2', + 'Transfer': {'_value': 'Type', '_desc': 'Bulk'}, + 'Usage': {'_value': 'Type', '_desc': 'Data'}, + '_desc': None, + 'Synch': {'_value': 'Type', '_desc': 'None'} + }, + 'wMaxPacketSize': { + '_value': '0x0040', + '_desc': '1x 64 bytes' + } + }, + 'iInterface': {'_value': '0', '_desc': None} + }, + 'bDescriptorType': {'_value': '2', '_desc': None}, + 'iConfiguration': {'_value': '0', '_desc': None}, + 'bmAttributes': { + '_value': '0x80', + '_desc': None, + '(Bus': {'_value': 'Powered)', '_desc': None} + }, + 'bNumInterfaces': {'_value': '2', '_desc': None}, + 'MaxPower': {'_value': '500mA', '_desc': None} + }, + 'iSerial': {'_value': '3', '_desc': '01d2450ea194a93b'}, + 'idProduct': {'_value': '0x4ee2', '_desc': 'Nexus 4 (debug)'}, + 'iManufacturer': {'_value': '1', '_desc': 'LGE'}, + 'bDeviceClass': { + '_value': '0', + '_desc': '(Defined at Interface level)' + }, + 'iProduct': {'_value': '2', '_desc': 'Nexus 4'}, + 'bMaxPacketSize0': {'_value': '64', '_desc': None}, + 'bNumConfigurations': {'_value': '1', '_desc': None} + }, + 'Device Qualifier (for other device speed)': { + 'bLength': {'_value': '10', '_desc': None}, + 'bNumConfigurations': {'_value': '1', '_desc': None}, + 'bDeviceSubClass': {'_value': '0', '_desc': None}, + 'bcdUSB': {'_value': '2.00', '_desc': None}, + 'bDeviceProtocol': {'_value': '0', '_desc': None}, + 'bDescriptorType': {'_value': '6', '_desc': None}, + 'bDeviceClass': { + '_value': '0', + '_desc': '(Defined at Interface level)' + }, + 'bMaxPacketSize0': {'_value': '64', '_desc': None} + } +} + + +class LsusbTest(mock_calls.TestCase): + """Test Lsusb parsing.""" + + def testLsusb(self): + with self.assertCalls( + (mock.call.devil.utils.cmd_helper.GetCmdStatusAndOutputWithTimeout( + ['lsusb'], timeout=10), (None, DEVICE_LIST)), + (mock.call.devil.utils.cmd_helper.GetCmdStatusAndOutputWithTimeout( + ['lsusb', '-v', '-s', '003:007'], timeout=10), (None, RAW_OUTPUT))): + self.assertDictEqual(lsusb.lsusb().pop(), EXPECTED_RESULT) + + def testGetSerial(self): + with self.assertCalls( + (mock.call.devil.utils.cmd_helper.GetCmdStatusAndOutputWithTimeout( + ['lsusb'], timeout=10), (None, DEVICE_LIST)), + (mock.call.devil.utils.cmd_helper.GetCmdStatusAndOutputWithTimeout( + ['lsusb', '-v', '-s', '003:007'], timeout=10), (None, RAW_OUTPUT))): + self.assertEqual(lsusb.get_android_devices(), ['01d2450ea194a93b']) + + def testGetLsusbSerial(self): + with self.assertCalls( + (mock.call.devil.utils.cmd_helper.GetCmdStatusAndOutputWithTimeout( + ['lsusb'], timeout=10), (None, DEVICE_LIST)), + (mock.call.devil.utils.cmd_helper.GetCmdStatusAndOutputWithTimeout( + ['lsusb', '-v', '-s', '003:007'], timeout=10), (None, RAW_OUTPUT))): + out = lsusb.lsusb().pop() + self.assertEqual(lsusb.get_lsusb_serial(out), '01d2450ea194a93b') + + +if __name__ == '__main__': + unittest.main() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/markdown.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/markdown.py new file mode 100644 index 0000000..54e7ed5 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/markdown.py @@ -0,0 +1,320 @@ +#! /usr/bin/env python +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import argparse +import imp +import os +import re +import sys +import textwrap +import types + +# A markdown code block template: https://goo.gl/9EsyRi +_CODE_BLOCK_FORMAT = '''```{language} +{code} +``` +''' + +_DEVIL_ROOT = os.path.abspath(os.path.join( + os.path.dirname(__file__), '..', '..')) + + +def md_bold(raw_text): + """Returns markdown-formatted bold text.""" + return '**%s**' % md_escape(raw_text, characters='*') + + +def md_code(raw_text, language): + """Returns a markdown-formatted code block in the given language.""" + return _CODE_BLOCK_FORMAT.format( + language=language or '', + code=md_escape(raw_text, characters='`')) + + +def md_escape(raw_text, characters='*_'): + """Escapes * and _.""" + def escape_char(m): + return '\\%s' % m.group(0) + pattern = '[%s]' % re.escape(characters) + return re.sub(pattern, escape_char, raw_text) + + +def md_heading(raw_text, level): + """Returns markdown-formatted heading.""" + adjusted_level = min(max(level, 0), 6) + return '%s%s%s' % ( + '#' * adjusted_level, ' ' if adjusted_level > 0 else '', raw_text) + + +def md_inline_code(raw_text): + """Returns markdown-formatted inline code.""" + return '`%s`' % md_escape(raw_text, characters='`') + + +def md_italic(raw_text): + """Returns markdown-formatted italic text.""" + return '*%s*' % md_escape(raw_text, characters='*') + + +def md_link(link_text, link_target): + """returns a markdown-formatted link.""" + return '[%s](%s)' % ( + md_escape(link_text, characters=']'), + md_escape(link_target, characters=')')) + + +class MarkdownHelpFormatter(argparse.HelpFormatter): + """A really bare-bones argparse help formatter that generates valid markdown. + + This will generate something like: + + usage + + # **section heading**: + + ## **--argument-one** + + ``` + argument-one help text + ``` + + """ + + #override + def _format_usage(self, usage, actions, groups, prefix): + usage_text = super(MarkdownHelpFormatter, self)._format_usage( + usage, actions, groups, prefix) + return md_code(usage_text, language=None) + + #override + def format_help(self): + self._root_section.heading = md_heading(self._prog, level=1) + return super(MarkdownHelpFormatter, self).format_help() + + #override + def start_section(self, heading): + super(MarkdownHelpFormatter, self).start_section( + md_heading(heading, level=2)) + + #override + def _format_action(self, action): + lines = [] + action_header = self._format_action_invocation(action) + lines.append(md_heading(action_header, level=3)) + if action.help: + lines.append(md_code(self._expand_help(action), language=None)) + lines.extend(['', '']) + return '\n'.join(lines) + + +class MarkdownHelpAction(argparse.Action): + def __init__(self, option_strings, + dest=argparse.SUPPRESS, default=argparse.SUPPRESS, + **kwargs): + super(MarkdownHelpAction, self).__init__( + option_strings=option_strings, + dest=dest, + default=default, + nargs=0, + **kwargs) + + def __call__(self, parser, namespace, values, option_string=None): + parser.formatter_class = MarkdownHelpFormatter + parser.print_help() + parser.exit() + + +def add_md_help_argument(parser): + """Adds --md-help to the given argparse.ArgumentParser. + + Running a script with --md-help will print the help text for that script + as valid markdown. + + Args: + parser: The ArgumentParser to which --md-help should be added. + """ + parser.add_argument('--md-help', action=MarkdownHelpAction, + help='print Markdown-formatted help text and exit.') + + +def load_module_from_path(module_path): + """Load a module given only the path name. + + Also loads package modules as necessary. + + Args: + module_path: An absolute path to a python module. + Returns: + The module object for the given path. + """ + module_names = [os.path.splitext(os.path.basename(module_path))[0]] + d = os.path.dirname(module_path) + + while os.path.exists(os.path.join(d, '__init__.py')): + module_names.append(os.path.basename(d)) + d = os.path.dirname(d) + + d = [d] + + module = None + full_module_name = '' + for package_name in reversed(module_names): + if module: + d = module.__path__ + full_module_name += '.' + r = imp.find_module(package_name, d) + full_module_name += package_name + module = imp.load_module(full_module_name, *r) + return module + + +def md_module(module_obj, module_path=None, module_link=None): + """Write markdown documentation for a class. + + Documents public classes and functions. + + Args: + class_obj: a types.TypeType object for the class that should be + documented. + Returns: + A list of markdown-formatted lines. + """ + def should_doc(name): + return (type(module_obj.__dict__[name]) != types.ModuleType + and not name.startswith('_')) + + stuff_to_doc = sorted( + obj for name, obj in module_obj.__dict__.iteritems() + if should_doc(name)) + + classes_to_doc = [] + functions_to_doc = [] + + for s in stuff_to_doc: + if type(s) == types.TypeType: + classes_to_doc.append(s) + elif type(s) == types.FunctionType: + functions_to_doc.append(s) + + command = ['devil/utils/markdown.py'] + if module_link: + command.extend(['--module-link', module_link]) + if module_path: + command.append(os.path.relpath(module_path, _DEVIL_ROOT)) + + heading_text = module_obj.__name__ + if module_link: + heading_text = md_link(heading_text, module_link) + + content = [ + md_heading(heading_text, level=1), + '', + md_italic('This page was autogenerated by %s' + % md_inline_code(' '.join(command))), + '', + ] + + for c in classes_to_doc: + content += md_class(c) + for f in functions_to_doc: + content += md_function(f) + + print '\n'.join(content) + + return 0 + + +def md_class(class_obj): + """Write markdown documentation for a class. + + Documents public methods. Does not currently document subclasses. + + Args: + class_obj: a types.TypeType object for the class that should be + documented. + Returns: + A list of markdown-formatted lines. + """ + content = [md_heading(md_escape(class_obj.__name__), level=2)] + content.append('') + if class_obj.__doc__: + content.extend(md_docstring(class_obj.__doc__)) + + def should_doc(name, obj): + return (type(obj) == types.FunctionType + and (name.startswith('__') or not name.startswith('_'))) + + methods_to_doc = sorted( + obj for name, obj in class_obj.__dict__.iteritems() + if should_doc(name, obj)) + + for m in methods_to_doc: + content.extend(md_function(m, class_obj=class_obj)) + + return content + + +def md_docstring(docstring): + """Write a markdown-formatted docstring. + + Returns: + A list of markdown-formatted lines. + """ + content = [] + lines = textwrap.dedent(docstring).splitlines() + content.append(md_escape(lines[0])) + lines = lines[1:] + while lines and (not lines[0] or lines[0].isspace()): + lines = lines[1:] + + if not all(l.isspace() for l in lines): + content.append(md_code('\n'.join(lines), language=None)) + content.append('') + return content + + +def md_function(func_obj, class_obj=None): + """Write markdown documentation for a function. + + Args: + func_obj: a types.FunctionType object for the function that should be + documented. + Returns: + A list of markdown-formatted lines. + """ + if class_obj: + heading_text = '%s.%s' % (class_obj.__name__, func_obj.__name__) + else: + heading_text = func_obj.__name__ + content = [md_heading(md_escape(heading_text), level=3)] + content.append('') + + if func_obj.__doc__: + content.extend(md_docstring(func_obj.__doc__)) + + return content + + +def main(raw_args): + """Write markdown documentation for the module at the provided path. + + Args: + raw_args: the raw command-line args. Usually sys.argv[1:]. + Returns: + An integer exit code. 0 for success, non-zero for failure. + """ + parser = argparse.ArgumentParser() + parser.add_argument('--module-link') + parser.add_argument('module_path', type=os.path.realpath) + args = parser.parse_args(raw_args) + + return md_module( + load_module_from_path(args.module_path), + module_link=args.module_link) + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1:])) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/markdown_test.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/markdown_test.py new file mode 100644 index 0000000..323776c --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/markdown_test.py @@ -0,0 +1,121 @@ +#! /usr/bin/env python +# Copyright 2017 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import sys +import textwrap +import unittest + +if __name__ == '__main__': + sys.path.append( + os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..'))) + +from devil.utils import markdown + + +class MarkdownTest(unittest.TestCase): + + def testBold(self): + raw = 'foo' + self.assertEquals('**foo**', markdown.md_bold(raw)) + + def testBoldContainsStars(self): + raw = '*foo*' + self.assertEquals('**\\*foo\\***', markdown.md_bold(raw)) + + def testCode(self): + raw = textwrap.dedent("""\ + class MarkdownTest(unittest.TestCase): + def testCode(self): + pass""") + + expected = textwrap.dedent("""\ + ```python + class MarkdownTest(unittest.TestCase): + def testCode(self): + pass + ``` + """) + actual = markdown.md_code(raw, language='python') + self.assertEquals(expected, actual) + + def testCodeContainsTicks(self): + raw = textwrap.dedent("""\ + This is sample markdown. + ```c + // This is a sample code block. + int main(int argc, char** argv) { + return 0; + } + ```""") + + expected = textwrap.dedent("""\ + ``` + This is sample markdown. + \\`\\`\\`c + // This is a sample code block. + int main(int argc, char** argv) { + return 0; + } + \\`\\`\\` + ``` + """) + actual = markdown.md_code(raw, language=None) + self.assertEquals(expected, actual) + + def testEscape(self): + raw = 'text_with_underscores *and stars*' + expected = 'text\\_with\\_underscores \\*and stars\\*' + actual = markdown.md_escape(raw) + self.assertEquals(expected, actual) + + def testHeading1(self): + raw = 'Heading 1' + self.assertEquals('# Heading 1', markdown.md_heading(raw, level=1)) + + def testHeading5(self): + raw = 'Heading 5' + self.assertEquals('##### Heading 5', markdown.md_heading(raw, level=5)) + + def testHeading10(self): + raw = 'Heading 10' + self.assertEquals('###### Heading 10', markdown.md_heading(raw, level=10)) + + def testInlineCode(self): + raw = 'devil.utils.markdown_test' + self.assertEquals( + '`devil.utils.markdown_test`', markdown.md_inline_code(raw)) + + def testInlineCodeContainsTicks(self): + raw = 'this contains `backticks`' + self.assertEquals( + '`this contains \\`backticks\\``', markdown.md_inline_code(raw)) + + def testItalic(self): + raw = 'bar' + self.assertEquals('*bar*', markdown.md_italic(raw)) + + def testItalicContainsStars(self): + raw = '*bar*' + self.assertEquals('*\\*bar\\**', markdown.md_italic(raw)) + + def testLink(self): + link_text = 'Devil home' + link_target = ( + 'https://github.com/catapult-project/catapult/tree/master/devil') + expected = ( + '[Devil home]' + '(https://github.com/catapult-project/catapult/tree/master/devil)') + self.assertEquals(expected, markdown.md_link(link_text, link_target)) + + def testLinkTextContainsBracket(self): + link_text = 'foo [] bar' + link_target = 'https://www.google.com' + expected = '[foo [\\] bar](https://www.google.com)' + self.assertEquals(expected, markdown.md_link(link_text, link_target)) + + +if __name__ == '__main__': + unittest.main(verbosity=2) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/mock_calls.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/mock_calls.py new file mode 100644 index 0000000..5ae951e --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/mock_calls.py @@ -0,0 +1,180 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +""" +A test facility to assert call sequences while mocking their behavior. +""" + +import unittest + +from devil import devil_env + +with devil_env.SysPath(devil_env.PYMOCK_PATH): + import mock # pylint: disable=import-error + + +class TestCase(unittest.TestCase): + """Adds assertCalls to TestCase objects.""" + class _AssertCalls(object): + + def __init__(self, test_case, expected_calls, watched): + def call_action(pair): + if isinstance(pair, type(mock.call)): + return (pair, None) + else: + return pair + + def do_check(call): + def side_effect(*args, **kwargs): + received_call = call(*args, **kwargs) + self._test_case.assertTrue( + self._expected_calls, + msg=('Unexpected call: %s' % str(received_call))) + expected_call, action = self._expected_calls.pop(0) + self._test_case.assertTrue( + received_call == expected_call, + msg=('Expected call mismatch:\n' + ' expected: %s\n' + ' received: %s\n' + % (str(expected_call), str(received_call)))) + if callable(action): + return action(*args, **kwargs) + else: + return action + return side_effect + + self._test_case = test_case + self._expected_calls = [call_action(pair) for pair in expected_calls] + watched = watched.copy() # do not pollute the caller's dict + watched.update((call.parent.name, call.parent) + for call, _ in self._expected_calls) + self._patched = [test_case.patch_call(call, side_effect=do_check(call)) + for call in watched.itervalues()] + + def __enter__(self): + for patch in self._patched: + patch.__enter__() + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + for patch in self._patched: + patch.__exit__(exc_type, exc_val, exc_tb) + if exc_type is None: + missing = ''.join(' expected: %s\n' % str(call) + for call, _ in self._expected_calls) + self._test_case.assertFalse( + missing, + msg='Expected calls not found:\n' + missing) + + def __init__(self, *args, **kwargs): + super(TestCase, self).__init__(*args, **kwargs) + self.call = mock.call.self + self._watched = {} + + def call_target(self, call): + """Resolve a self.call instance to the target it represents. + + Args: + call: a self.call instance, e.g. self.call.adb.Shell + + Returns: + The target object represented by the call, e.g. self.adb.Shell + + Raises: + ValueError if the path of the call does not start with "self", i.e. the + target of the call is external to the self object. + AttributeError if the path of the call does not specify a valid + chain of attributes (without any calls) starting from "self". + """ + path = call.name.split('.') + if path.pop(0) != 'self': + raise ValueError("Target %r outside of 'self' object" % call.name) + target = self + for attr in path: + target = getattr(target, attr) + return target + + def patch_call(self, call, **kwargs): + """Patch the target of a mock.call instance. + + Args: + call: a mock.call instance identifying a target to patch + Extra keyword arguments are processed by mock.patch + + Returns: + A context manager to mock/unmock the target of the call + """ + if call.name.startswith('self.'): + target = self.call_target(call.parent) + _, attribute = call.name.rsplit('.', 1) + if (hasattr(type(target), attribute) + and isinstance(getattr(type(target), attribute), property)): + return mock.patch.object( + type(target), attribute, new_callable=mock.PropertyMock, **kwargs) + else: + return mock.patch.object(target, attribute, **kwargs) + else: + return mock.patch(call.name, **kwargs) + + def watchCalls(self, calls): + """Add calls to the set of watched calls. + + Args: + calls: a sequence of mock.call instances identifying targets to watch + """ + self._watched.update((call.name, call) for call in calls) + + def watchMethodCalls(self, call, ignore=None): + """Watch all public methods of the target identified by a self.call. + + Args: + call: a self.call instance indetifying an object + ignore: a list of public methods to ignore when watching for calls + """ + target = self.call_target(call) + if ignore is None: + ignore = [] + self.watchCalls(getattr(call, method) + for method in dir(target.__class__) + if not method.startswith('_') and not method in ignore) + + def clearWatched(self): + """Clear the set of watched calls.""" + self._watched = {} + + def assertCalls(self, *calls): + """A context manager to assert that a sequence of calls is made. + + During the assertion, a number of functions and methods will be "watched", + and any calls made to them is expected to appear---in the exact same order, + and with the exact same arguments---as specified by the argument |calls|. + + By default, the targets of all expected calls are watched. Further targets + to watch may be added using watchCalls and watchMethodCalls. + + Optionaly, each call may be accompanied by an action. If the action is a + (non-callable) value, this value will be used as the return value given to + the caller when the matching call is found. Alternatively, if the action is + a callable, the action will be then called with the same arguments as the + intercepted call, so that it can provide a return value or perform other + side effects. If the action is missing, a return value of None is assumed. + + Note that mock.Mock objects are often convenient to use as a callable + action, e.g. to raise exceptions or return other objects which are + themselves callable. + + Args: + calls: each argument is either a pair (expected_call, action) or just an + expected_call, where expected_call is a mock.call instance. + + Raises: + AssertionError if the watched targets do not receive the exact sequence + of calls specified. Missing calls, extra calls, and calls with + mismatching arguments, all cause the assertion to fail. + """ + return self._AssertCalls(self, calls, self._watched) + + def assertCall(self, call, action=None): + return self.assertCalls((call, action)) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/mock_calls_test.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/mock_calls_test.py new file mode 100644 index 0000000..8eb4fc9 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/mock_calls_test.py @@ -0,0 +1,173 @@ +#!/usr/bin/env python +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +""" +Unit tests for the contents of mock_calls.py. +""" + +import logging +import os +import unittest + +from devil import devil_env +from devil.android.sdk import version_codes +from devil.utils import mock_calls + +with devil_env.SysPath(devil_env.PYMOCK_PATH): + import mock # pylint: disable=import-error + + +class _DummyAdb(object): + + def __str__(self): + return '0123456789abcdef' + + def Push(self, host_path, device_path): + logging.debug('(device %s) pushing %r to %r', self, host_path, device_path) + + def IsOnline(self): + logging.debug('(device %s) checking device online', self) + return True + + def Shell(self, cmd): + logging.debug('(device %s) running command %r', self, cmd) + return "nice output\n" + + def Reboot(self): + logging.debug('(device %s) rebooted!', self) + + @property + def build_version_sdk(self): + logging.debug('(device %s) getting build_version_sdk', self) + return version_codes.LOLLIPOP + + +class TestCaseWithAssertCallsTest(mock_calls.TestCase): + + def setUp(self): + self.adb = _DummyAdb() + + def ShellError(self): + def action(cmd): + raise ValueError('(device %s) command %r is not nice' % (self.adb, cmd)) + return action + + def get_answer(self): + logging.debug("called 'get_answer' of %r object", self) + return 42 + + def echo(self, thing): + logging.debug("called 'echo' of %r object", self) + return thing + + def testCallTarget_succeds(self): + self.assertEquals(self.adb.Shell, + self.call_target(self.call.adb.Shell)) + + def testCallTarget_failsExternal(self): + with self.assertRaises(ValueError): + self.call_target(mock.call.sys.getcwd) + + def testCallTarget_failsUnknownAttribute(self): + with self.assertRaises(AttributeError): + self.call_target(self.call.adb.Run) + + def testCallTarget_failsIntermediateCalls(self): + with self.assertRaises(AttributeError): + self.call_target(self.call.adb.RunShell('cmd').append) + + def testPatchCall_method(self): + self.assertEquals(42, self.get_answer()) + with self.patch_call(self.call.get_answer, return_value=123): + self.assertEquals(123, self.get_answer()) + self.assertEquals(42, self.get_answer()) + + def testPatchCall_attribute_method(self): + with self.patch_call(self.call.adb.Shell, return_value='hello'): + self.assertEquals('hello', self.adb.Shell('echo hello')) + + def testPatchCall_global(self): + with self.patch_call(mock.call.os.getcwd, return_value='/some/path'): + self.assertEquals('/some/path', os.getcwd()) + + def testPatchCall_withSideEffect(self): + with self.patch_call(self.call.adb.Shell, side_effect=ValueError): + with self.assertRaises(ValueError): + self.adb.Shell('echo hello') + + def testPatchCall_property(self): + self.assertEquals(version_codes.LOLLIPOP, self.adb.build_version_sdk) + with self.patch_call( + self.call.adb.build_version_sdk, + return_value=version_codes.KITKAT): + self.assertEquals(version_codes.KITKAT, self.adb.build_version_sdk) + self.assertEquals(version_codes.LOLLIPOP, self.adb.build_version_sdk) + + def testAssertCalls_succeeds_simple(self): + self.assertEquals(42, self.get_answer()) + with self.assertCall(self.call.get_answer(), 123): + self.assertEquals(123, self.get_answer()) + self.assertEquals(42, self.get_answer()) + + def testAssertCalls_succeeds_multiple(self): + with self.assertCalls( + (mock.call.os.getcwd(), '/some/path'), + (self.call.echo('hello'), 'hello'), + (self.call.get_answer(), 11), + self.call.adb.Push('this_file', 'that_file'), + (self.call.get_answer(), 12)): + self.assertEquals(os.getcwd(), '/some/path') + self.assertEquals('hello', self.echo('hello')) + self.assertEquals(11, self.get_answer()) + self.adb.Push('this_file', 'that_file') + self.assertEquals(12, self.get_answer()) + + def testAsserCalls_succeeds_withAction(self): + with self.assertCall( + self.call.adb.Shell('echo hello'), self.ShellError()): + with self.assertRaises(ValueError): + self.adb.Shell('echo hello') + + def testAssertCalls_fails_tooManyCalls(self): + with self.assertRaises(AssertionError): + with self.assertCalls(self.call.adb.IsOnline()): + self.adb.IsOnline() + self.adb.IsOnline() + + def testAssertCalls_fails_tooFewCalls(self): + with self.assertRaises(AssertionError): + with self.assertCalls(self.call.adb.IsOnline()): + pass + + def testAssertCalls_succeeds_extraCalls(self): + # we are not watching Reboot, so the assertion succeeds + with self.assertCalls(self.call.adb.IsOnline()): + self.adb.IsOnline() + self.adb.Reboot() + + def testAssertCalls_fails_extraCalls(self): + self.watchCalls([self.call.adb.Reboot]) + # this time we are also watching Reboot, so the assertion fails + with self.assertRaises(AssertionError): + with self.assertCalls(self.call.adb.IsOnline()): + self.adb.IsOnline() + self.adb.Reboot() + + def testAssertCalls_succeeds_NoCalls(self): + self.watchMethodCalls(self.call.adb) # we are watching all adb methods + with self.assertCalls(): + pass + + def testAssertCalls_fails_NoCalls(self): + self.watchMethodCalls(self.call.adb) + with self.assertRaises(AssertionError): + with self.assertCalls(): + self.adb.IsOnline() + + +if __name__ == '__main__': + logging.getLogger().setLevel(logging.DEBUG) + unittest.main(verbosity=2) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/parallelizer.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/parallelizer.py new file mode 100644 index 0000000..3599525 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/parallelizer.py @@ -0,0 +1,238 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +""" Wrapper that allows method execution in parallel. + +This class wraps a list of objects of the same type, emulates their +interface, and executes any functions called on the objects in parallel +in ReraiserThreads. + +This means that, given a list of objects: + + class Foo: + def __init__(self): + self.baz = Baz() + + def bar(self, my_param): + // do something + + list_of_foos = [Foo(1), Foo(2), Foo(3)] + +we can take a sequential operation on that list of objects: + + for f in list_of_foos: + f.bar('Hello') + +and run it in parallel across all of the objects: + + Parallelizer(list_of_foos).bar('Hello') + +It can also handle (non-method) attributes of objects, so that this: + + for f in list_of_foos: + f.baz.myBazMethod() + +can be run in parallel with: + + Parallelizer(list_of_foos).baz.myBazMethod() + +Because it emulates the interface of the wrapped objects, a Parallelizer +can be passed to a method or function that takes objects of that type: + + def DoesSomethingWithFoo(the_foo): + the_foo.bar('Hello') + the_foo.bar('world') + the_foo.baz.myBazMethod + + DoesSomethingWithFoo(Parallelizer(list_of_foos)) + +Note that this class spins up a thread for each object. Using this class +to parallelize operations that are already fast will incur a net performance +penalty. + +""" +# pylint: disable=protected-access + +from devil.utils import reraiser_thread +from devil.utils import watchdog_timer + +_DEFAULT_TIMEOUT = 30 +_DEFAULT_RETRIES = 3 + + +class Parallelizer(object): + """Allows parallel execution of method calls across a group of objects.""" + + def __init__(self, objs): + self._orig_objs = objs + self._objs = objs + + def __getattr__(self, name): + """Emulate getting the |name| attribute of |self|. + + Args: + name: The name of the attribute to retrieve. + Returns: + A Parallelizer emulating the |name| attribute of |self|. + """ + self.pGet(None) + + r = type(self)(self._orig_objs) + r._objs = [getattr(o, name) for o in self._objs] + return r + + def __getitem__(self, index): + """Emulate getting the value of |self| at |index|. + + Returns: + A Parallelizer emulating the value of |self| at |index|. + """ + self.pGet(None) + + r = type(self)(self._orig_objs) + r._objs = [o[index] for o in self._objs] + return r + + def __call__(self, *args, **kwargs): + """Emulate calling |self| with |args| and |kwargs|. + + Note that this call is asynchronous. Call pFinish on the return value to + block until the call finishes. + + Returns: + A Parallelizer wrapping the ReraiserThreadGroup running the call in + parallel. + Raises: + AttributeError if the wrapped objects aren't callable. + """ + self.pGet(None) + + for o in self._objs: + if not callable(o): + raise AttributeError("'%s' is not callable" % o.__name__) + + r = type(self)(self._orig_objs) + r._objs = reraiser_thread.ReraiserThreadGroup( + [reraiser_thread.ReraiserThread( + o, args=args, kwargs=kwargs, + name='%s.%s' % (str(d), o.__name__)) + for d, o in zip(self._orig_objs, self._objs)]) + r._objs.StartAll() # pylint: disable=W0212 + return r + + def pFinish(self, timeout): + """Finish any outstanding asynchronous operations. + + Args: + timeout: The maximum number of seconds to wait for an individual + result to return, or None to wait forever. + Returns: + self, now emulating the return values. + """ + self._assertNoShadow('pFinish') + if isinstance(self._objs, reraiser_thread.ReraiserThreadGroup): + self._objs.JoinAll() + self._objs = self._objs.GetAllReturnValues( + watchdog_timer.WatchdogTimer(timeout)) + return self + + def pGet(self, timeout): + """Get the current wrapped objects. + + Args: + timeout: Same as |pFinish|. + Returns: + A list of the results, in order of the provided devices. + Raises: + Any exception raised by any of the called functions. + """ + self._assertNoShadow('pGet') + self.pFinish(timeout) + return self._objs + + def pMap(self, f, *args, **kwargs): + """Map a function across the current wrapped objects in parallel. + + This calls f(o, *args, **kwargs) for each o in the set of wrapped objects. + + Note that this call is asynchronous. Call pFinish on the return value to + block until the call finishes. + + Args: + f: The function to call. + args: The positional args to pass to f. + kwargs: The keyword args to pass to f. + Returns: + A Parallelizer wrapping the ReraiserThreadGroup running the map in + parallel. + """ + self._assertNoShadow('pMap') + r = type(self)(self._orig_objs) + r._objs = reraiser_thread.ReraiserThreadGroup( + [reraiser_thread.ReraiserThread( + f, args=tuple([o] + list(args)), kwargs=kwargs, + name='%s(%s)' % (f.__name__, d)) + for d, o in zip(self._orig_objs, self._objs)]) + r._objs.StartAll() # pylint: disable=W0212 + return r + + def _assertNoShadow(self, attr_name): + """Ensures that |attr_name| isn't shadowing part of the wrapped obejcts. + + If the wrapped objects _do_ have an |attr_name| attribute, it will be + inaccessible to clients. + + Args: + attr_name: The attribute to check. + Raises: + AssertionError if the wrapped objects have an attribute named 'attr_name' + or '_assertNoShadow'. + """ + if isinstance(self._objs, reraiser_thread.ReraiserThreadGroup): + assert not hasattr(self._objs, '_assertNoShadow') + assert not hasattr(self._objs, attr_name) + else: + assert not any(hasattr(o, '_assertNoShadow') for o in self._objs) + assert not any(hasattr(o, attr_name) for o in self._objs) + + +class SyncParallelizer(Parallelizer): + """A Parallelizer that blocks on function calls.""" + + # override + def __call__(self, *args, **kwargs): + """Emulate calling |self| with |args| and |kwargs|. + + Note that this call is synchronous. + + Returns: + A Parallelizer emulating the value returned from calling |self| with + |args| and |kwargs|. + Raises: + AttributeError if the wrapped objects aren't callable. + """ + r = super(SyncParallelizer, self).__call__(*args, **kwargs) + r.pFinish(None) + return r + + # override + def pMap(self, f, *args, **kwargs): + """Map a function across the current wrapped objects in parallel. + + This calls f(o, *args, **kwargs) for each o in the set of wrapped objects. + + Note that this call is synchronous. + + Args: + f: The function to call. + args: The positional args to pass to f. + kwargs: The keyword args to pass to f. + Returns: + A Parallelizer wrapping the ReraiserThreadGroup running the map in + parallel. + """ + r = super(SyncParallelizer, self).pMap(f, *args, **kwargs) + r.pFinish(None) + return r + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/parallelizer_test.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/parallelizer_test.py new file mode 100644 index 0000000..32ff7ec --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/parallelizer_test.py @@ -0,0 +1,162 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Unit tests for the contents of parallelizer.py.""" + +# pylint: disable=W0212 +# pylint: disable=W0613 + +import os +import tempfile +import time +import unittest + +from devil.utils import parallelizer + + +class ParallelizerTestObject(object): + """Class used to test parallelizer.Parallelizer.""" + + parallel = parallelizer.Parallelizer + + def __init__(self, thing, completion_file_name=None): + self._thing = thing + self._completion_file_name = completion_file_name + self.helper = ParallelizerTestObjectHelper(thing) + + @staticmethod + def doReturn(what): + return what + + @classmethod + def doRaise(cls, what): + raise what + + def doSetTheThing(self, new_thing): + self._thing = new_thing + + def doReturnTheThing(self): + return self._thing + + def doRaiseTheThing(self): + raise self._thing + + def doRaiseIfExceptionElseSleepFor(self, sleep_duration): + if isinstance(self._thing, Exception): + raise self._thing + time.sleep(sleep_duration) + self._write_completion_file() + return self._thing + + def _write_completion_file(self): + if self._completion_file_name and len(self._completion_file_name): + with open(self._completion_file_name, 'w+b') as completion_file: + completion_file.write('complete') + + def __getitem__(self, index): + return self._thing[index] + + def __str__(self): + return type(self).__name__ + + +class ParallelizerTestObjectHelper(object): + + def __init__(self, thing): + self._thing = thing + + def doReturnStringThing(self): + return str(self._thing) + + +class ParallelizerTest(unittest.TestCase): + + def testInitEmptyList(self): + r = parallelizer.Parallelizer([]).replace('a', 'b').pGet(0.1) + self.assertEquals([], r) + + def testMethodCall(self): + test_data = ['abc_foo', 'def_foo', 'ghi_foo'] + expected = ['abc_bar', 'def_bar', 'ghi_bar'] + r = parallelizer.Parallelizer(test_data).replace('_foo', '_bar').pGet(0.1) + self.assertEquals(expected, r) + + def testMutate(self): + devices = [ParallelizerTestObject(True) for _ in xrange(0, 10)] + self.assertTrue(all(d.doReturnTheThing() for d in devices)) + ParallelizerTestObject.parallel(devices).doSetTheThing(False).pFinish(1) + self.assertTrue(not any(d.doReturnTheThing() for d in devices)) + + def testAllReturn(self): + devices = [ParallelizerTestObject(True) for _ in xrange(0, 10)] + results = ParallelizerTestObject.parallel( + devices).doReturnTheThing().pGet(1) + self.assertTrue(isinstance(results, list)) + self.assertEquals(10, len(results)) + self.assertTrue(all(results)) + + def testAllRaise(self): + devices = [ParallelizerTestObject(Exception('thing %d' % i)) + for i in xrange(0, 10)] + p = ParallelizerTestObject.parallel(devices).doRaiseTheThing() + with self.assertRaises(Exception): + p.pGet(1) + + def testOneFailOthersComplete(self): + parallel_device_count = 10 + exception_index = 7 + exception_msg = 'thing %d' % exception_index + + try: + completion_files = [tempfile.NamedTemporaryFile(delete=False) + for _ in xrange(0, parallel_device_count)] + devices = [ + ParallelizerTestObject( + i if i != exception_index else Exception(exception_msg), + completion_files[i].name) + for i in xrange(0, parallel_device_count)] + for f in completion_files: + f.close() + p = ParallelizerTestObject.parallel(devices) + with self.assertRaises(Exception) as e: + p.doRaiseIfExceptionElseSleepFor(2).pGet(3) + self.assertTrue(exception_msg in str(e.exception)) + for i in xrange(0, parallel_device_count): + with open(completion_files[i].name) as f: + if i == exception_index: + self.assertEquals('', f.read()) + else: + self.assertEquals('complete', f.read()) + finally: + for f in completion_files: + os.remove(f.name) + + def testReusable(self): + devices = [ParallelizerTestObject(True) for _ in xrange(0, 10)] + p = ParallelizerTestObject.parallel(devices) + results = p.doReturn(True).pGet(1) + self.assertTrue(all(results)) + results = p.doReturn(True).pGet(1) + self.assertTrue(all(results)) + with self.assertRaises(Exception): + results = p.doRaise(Exception('reusableTest')).pGet(1) + + def testContained(self): + devices = [ParallelizerTestObject(i) for i in xrange(0, 10)] + results = (ParallelizerTestObject.parallel(devices).helper + .doReturnStringThing().pGet(1)) + self.assertTrue(isinstance(results, list)) + self.assertEquals(10, len(results)) + for i in xrange(0, 10): + self.assertEquals(str(i), results[i]) + + def testGetItem(self): + devices = [ParallelizerTestObject(range(i, i + 10)) for i in xrange(0, 10)] + results = ParallelizerTestObject.parallel(devices)[9].pGet(1) + self.assertEquals(range(9, 19), results) + + +if __name__ == '__main__': + unittest.main(verbosity=2) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/reraiser_thread.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/reraiser_thread.py new file mode 100644 index 0000000..56d95f3 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/reraiser_thread.py @@ -0,0 +1,228 @@ +# Copyright 2013 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Thread and ThreadGroup that reraise exceptions on the main thread.""" +# pylint: disable=W0212 + +import logging +import sys +import threading +import time +import traceback + +from devil.utils import watchdog_timer + + +class TimeoutError(Exception): + """Module-specific timeout exception.""" + pass + + +def LogThreadStack(thread, error_log_func=logging.critical): + """Log the stack for the given thread. + + Args: + thread: a threading.Thread instance. + error_log_func: Logging function when logging errors. + """ + stack = sys._current_frames()[thread.ident] + error_log_func('*' * 80) + error_log_func('Stack dump for thread %r', thread.name) + error_log_func('*' * 80) + for filename, lineno, name, line in traceback.extract_stack(stack): + error_log_func('File: "%s", line %d, in %s', filename, lineno, name) + if line: + error_log_func(' %s', line.strip()) + error_log_func('*' * 80) + + +class ReraiserThread(threading.Thread): + """Thread class that can reraise exceptions.""" + + def __init__(self, func, args=None, kwargs=None, name=None): + """Initialize thread. + + Args: + func: callable to call on a new thread. + args: list of positional arguments for callable, defaults to empty. + kwargs: dictionary of keyword arguments for callable, defaults to empty. + name: thread name, defaults to Thread-N. + """ + if not name and func.__name__ != '<lambda>': + name = func.__name__ + super(ReraiserThread, self).__init__(name=name) + if not args: + args = [] + if not kwargs: + kwargs = {} + self.daemon = True + self._func = func + self._args = args + self._kwargs = kwargs + self._ret = None + self._exc_info = None + self._thread_group = None + + def ReraiseIfException(self): + """Reraise exception if an exception was raised in the thread.""" + if self._exc_info: + raise self._exc_info[0], self._exc_info[1], self._exc_info[2] + + def GetReturnValue(self): + """Reraise exception if present, otherwise get the return value.""" + self.ReraiseIfException() + return self._ret + + # override + def run(self): + """Overrides Thread.run() to add support for reraising exceptions.""" + try: + self._ret = self._func(*self._args, **self._kwargs) + except: # pylint: disable=W0702 + self._exc_info = sys.exc_info() + + +class ReraiserThreadGroup(object): + """A group of ReraiserThread objects.""" + + def __init__(self, threads=None): + """Initialize thread group. + + Args: + threads: a list of ReraiserThread objects; defaults to empty. + """ + self._threads = [] + # Set when a thread from one group has called JoinAll on another. It is used + # to detect when a there is a TimeoutRetryThread active that links to the + # current thread. + self.blocked_parent_thread_group = None + if threads: + for thread in threads: + self.Add(thread) + + def Add(self, thread): + """Add a thread to the group. + + Args: + thread: a ReraiserThread object. + """ + assert thread._thread_group is None + thread._thread_group = self + self._threads.append(thread) + + def StartAll(self, will_block=False): + """Start all threads. + + Args: + will_block: Whether the calling thread will subsequently block on this + thread group. Causes the active ReraiserThreadGroup (if there is one) + to be marked as blocking on this thread group. + """ + if will_block: + # Multiple threads blocking on the same outer thread should not happen in + # practice. + assert not self.blocked_parent_thread_group + self.blocked_parent_thread_group = CurrentThreadGroup() + for thread in self._threads: + thread.start() + + def _JoinAll(self, watcher=None, timeout=None): + """Join all threads without stack dumps. + + Reraises exceptions raised by the child threads and supports breaking + immediately on exceptions raised on the main thread. + + Args: + watcher: Watchdog object providing the thread timeout. If none is + provided, the thread will never be timed out. + timeout: An optional number of seconds to wait before timing out the join + operation. This will not time out the threads. + """ + if watcher is None: + watcher = watchdog_timer.WatchdogTimer(None) + alive_threads = self._threads[:] + end_time = (time.time() + timeout) if timeout else None + try: + while alive_threads and (end_time is None or end_time > time.time()): + for thread in alive_threads[:]: + if watcher.IsTimedOut(): + raise TimeoutError('Timed out waiting for %d of %d threads.' % + (len(alive_threads), len(self._threads))) + # Allow the main thread to periodically check for interrupts. + thread.join(0.1) + if not thread.isAlive(): + alive_threads.remove(thread) + # All threads are allowed to complete before reraising exceptions. + for thread in self._threads: + thread.ReraiseIfException() + finally: + self.blocked_parent_thread_group = None + + def IsAlive(self): + """Check whether any of the threads are still alive. + + Returns: + Whether any of the threads are still alive. + """ + return any(t.isAlive() for t in self._threads) + + def JoinAll(self, watcher=None, timeout=None, + error_log_func=logging.critical): + """Join all threads. + + Reraises exceptions raised by the child threads and supports breaking + immediately on exceptions raised on the main thread. Unfinished threads' + stacks will be logged on watchdog timeout. + + Args: + watcher: Watchdog object providing the thread timeout. If none is + provided, the thread will never be timed out. + timeout: An optional number of seconds to wait before timing out the join + operation. This will not time out the threads. + error_log_func: Logging function when logging errors. + """ + try: + self._JoinAll(watcher, timeout) + except TimeoutError: + error_log_func('Timed out. Dumping threads.') + for thread in (t for t in self._threads if t.isAlive()): + LogThreadStack(thread, error_log_func=error_log_func) + raise + + def GetAllReturnValues(self, watcher=None): + """Get all return values, joining all threads if necessary. + + Args: + watcher: same as in |JoinAll|. Only used if threads are alive. + """ + if any([t.isAlive() for t in self._threads]): + self.JoinAll(watcher) + return [t.GetReturnValue() for t in self._threads] + + +def CurrentThreadGroup(): + """Returns the ReraiserThreadGroup that owns the running thread. + + Returns: + The current thread group, otherwise None. + """ + current_thread = threading.current_thread() + if isinstance(current_thread, ReraiserThread): + return current_thread._thread_group # pylint: disable=no-member + return None + + +def RunAsync(funcs, watcher=None): + """Executes the given functions in parallel and returns their results. + + Args: + funcs: List of functions to perform on their own threads. + watcher: Watchdog object providing timeout, by default waits forever. + + Returns: + A list of return values in the order of the given functions. + """ + thread_group = ReraiserThreadGroup(ReraiserThread(f) for f in funcs) + thread_group.StartAll(will_block=True) + return thread_group.GetAllReturnValues(watcher=watcher) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/reraiser_thread_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/reraiser_thread_unittest.py new file mode 100644 index 0000000..e3c4e6b --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/reraiser_thread_unittest.py @@ -0,0 +1,117 @@ +# Copyright 2013 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Unittests for reraiser_thread.py.""" + +import threading +import unittest + +from devil.utils import reraiser_thread +from devil.utils import watchdog_timer + + +class TestException(Exception): + pass + + +class TestReraiserThread(unittest.TestCase): + """Tests for reraiser_thread.ReraiserThread.""" + + def testNominal(self): + result = [None, None] + + def f(a, b=None): + result[0] = a + result[1] = b + + thread = reraiser_thread.ReraiserThread(f, [1], {'b': 2}) + thread.start() + thread.join() + self.assertEqual(result[0], 1) + self.assertEqual(result[1], 2) + + def testRaise(self): + def f(): + raise TestException + + thread = reraiser_thread.ReraiserThread(f) + thread.start() + thread.join() + with self.assertRaises(TestException): + thread.ReraiseIfException() + + +class TestReraiserThreadGroup(unittest.TestCase): + """Tests for reraiser_thread.ReraiserThreadGroup.""" + + def testInit(self): + ran = [False] * 5 + + def f(i): + ran[i] = True + + group = reraiser_thread.ReraiserThreadGroup( + [reraiser_thread.ReraiserThread(f, args=[i]) for i in range(5)]) + group.StartAll() + group.JoinAll() + for v in ran: + self.assertTrue(v) + + def testAdd(self): + ran = [False] * 5 + + def f(i): + ran[i] = True + + group = reraiser_thread.ReraiserThreadGroup() + for i in xrange(5): + group.Add(reraiser_thread.ReraiserThread(f, args=[i])) + group.StartAll() + group.JoinAll() + for v in ran: + self.assertTrue(v) + + def testJoinRaise(self): + def f(): + raise TestException + group = reraiser_thread.ReraiserThreadGroup( + [reraiser_thread.ReraiserThread(f) for _ in xrange(5)]) + group.StartAll() + with self.assertRaises(TestException): + group.JoinAll() + + def testJoinTimeout(self): + def f(): + pass + event = threading.Event() + + def g(): + event.wait() + group = reraiser_thread.ReraiserThreadGroup( + [reraiser_thread.ReraiserThread(g), + reraiser_thread.ReraiserThread(f)]) + group.StartAll() + with self.assertRaises(reraiser_thread.TimeoutError): + group.JoinAll(watchdog_timer.WatchdogTimer(0.01)) + event.set() + + +class TestRunAsync(unittest.TestCase): + """Tests for reraiser_thread.RunAsync.""" + + def testNoArgs(self): + results = reraiser_thread.RunAsync([]) + self.assertEqual([], results) + + def testOneArg(self): + results = reraiser_thread.RunAsync([lambda: 1]) + self.assertEqual([1], results) + + def testTwoArgs(self): + a, b = reraiser_thread.RunAsync((lambda: 1, lambda: 2)) + self.assertEqual(1, a) + self.assertEqual(2, b) + +if __name__ == '__main__': + unittest.main() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/reset_usb.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/reset_usb.py new file mode 100644 index 0000000..0335227 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/reset_usb.py @@ -0,0 +1,111 @@ +#!/usr/bin/env python +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import argparse +import fcntl +import logging +import os +import re +import sys + +if __name__ == '__main__': + sys.path.append( + os.path.abspath(os.path.join(os.path.dirname(__file__), + '..', '..'))) + +from devil.android import device_errors +from devil.utils import lsusb +from devil.utils import run_tests_helper + +logger = logging.getLogger(__name__) + +_INDENTATION_RE = re.compile(r'^( *)') +_LSUSB_BUS_DEVICE_RE = re.compile(r'^Bus (\d{3}) Device (\d{3}):') +_LSUSB_ENTRY_RE = re.compile(r'^ *([^ ]+) +([^ ]+) *([^ ].*)?$') +_LSUSB_GROUP_RE = re.compile(r'^ *([^ ]+.*):$') + +_USBDEVFS_RESET = ord('U') << 8 | 20 + + +def reset_usb(bus, device): + """Reset the USB device with the given bus and device.""" + usb_file_path = '/dev/bus/usb/%03d/%03d' % (bus, device) + with open(usb_file_path, 'w') as usb_file: + logger.debug('fcntl.ioctl(%s, %d)', usb_file_path, _USBDEVFS_RESET) + fcntl.ioctl(usb_file, _USBDEVFS_RESET) + + +def reset_android_usb(serial): + """Reset the USB device for the given Android device.""" + lsusb_info = lsusb.lsusb() + + bus = None + device = None + for device_info in lsusb_info: + device_serial = lsusb.get_lsusb_serial(device_info) + if device_serial == serial: + bus = int(device_info.get('bus')) + device = int(device_info.get('device')) + + if bus and device: + reset_usb(bus, device) + else: + raise device_errors.DeviceUnreachableError( + 'Unable to determine bus(%s) or device(%s) for device %s' + % (bus, device, serial)) + + +def reset_all_android_devices(): + """Reset all USB devices that look like an Android device.""" + _reset_all_matching(lambda i: bool(lsusb.get_lsusb_serial(i))) + + +def _reset_all_matching(condition): + lsusb_info = lsusb.lsusb() + for device_info in lsusb_info: + if int(device_info.get('device')) != 1 and condition(device_info): + bus = int(device_info.get('bus')) + device = int(device_info.get('device')) + try: + reset_usb(bus, device) + serial = lsusb.get_lsusb_serial(device_info) + if serial: + logger.info( + 'Reset USB device (bus: %03d, device: %03d, serial: %s)', + bus, device, serial) + else: + logger.info( + 'Reset USB device (bus: %03d, device: %03d)', + bus, device) + except IOError: + logger.error( + 'Failed to reset USB device (bus: %03d, device: %03d)', + bus, device) + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument('-v', '--verbose', action='count') + parser.add_argument('-s', '--serial') + parser.add_argument('--bus', type=int) + parser.add_argument('--device', type=int) + args = parser.parse_args() + + run_tests_helper.SetLogLevel(args.verbose) + + if args.serial: + reset_android_usb(args.serial) + elif args.bus and args.device: + reset_usb(args.bus, args.device) + else: + parser.error('Unable to determine target. ' + 'Specify --serial or BOTH --bus and --device.') + + return 0 + + +if __name__ == '__main__': + sys.exit(main()) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/run_tests_helper.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/run_tests_helper.py new file mode 100644 index 0000000..7df2da6 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/run_tests_helper.py @@ -0,0 +1,44 @@ +# Copyright (c) 2012 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Helper functions common to native, java and host-driven test runners.""" + +import logging +import sys +import time + + +class CustomFormatter(logging.Formatter): + """Custom log formatter.""" + + # override + def __init__(self, fmt='%(threadName)-4s %(message)s'): + # Can't use super() because in older Python versions logging.Formatter does + # not inherit from object. + logging.Formatter.__init__(self, fmt=fmt) + self._creation_time = time.time() + + # override + def format(self, record): + # Can't use super() because in older Python versions logging.Formatter does + # not inherit from object. + msg = logging.Formatter.format(self, record) + if 'MainThread' in msg[:19]: + msg = msg.replace('MainThread', 'Main', 1) + timediff = time.time() - self._creation_time + return '%s %8.3fs %s' % (record.levelname[0], timediff, msg) + + +def SetLogLevel(verbose_count): + """Sets log level as |verbose_count|.""" + log_level = logging.WARNING # Default. + if verbose_count == 1: + log_level = logging.INFO + elif verbose_count >= 2: + log_level = logging.DEBUG + logger = logging.getLogger() + logger.setLevel(log_level) + custom_handler = logging.StreamHandler(sys.stdout) + custom_handler.setFormatter(CustomFormatter()) + logging.getLogger().addHandler(custom_handler) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/signal_handler.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/signal_handler.py new file mode 100644 index 0000000..1230f8d --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/signal_handler.py @@ -0,0 +1,48 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import contextlib +import signal + + +@contextlib.contextmanager +def SignalHandler(signalnum, handler): + """Sets the signal handler for the given signal in the wrapped context. + + Args: + signum: The signal for which a handler should be added. + additional_handler: The handler to add. + """ + existing_handler = signal.getsignal(signalnum) + + try: + signal.signal(signalnum, handler) + yield + finally: + signal.signal(signalnum, existing_handler) + + +@contextlib.contextmanager +def AddSignalHandler(signalnum, additional_handler): + """Adds a signal handler for the given signal in the wrapped context. + + This runs the new handler after any existing handler rather than + replacing the existing handler. + + Args: + signum: The signal for which a handler should be added. + additional_handler: The handler to add. + """ + existing_handler = signal.getsignal(signalnum) + + def handler(signum, frame): + if callable(existing_handler): + existing_handler(signum, frame) + additional_handler(signum, frame) + + try: + signal.signal(signalnum, handler) + yield + finally: + signal.signal(signalnum, existing_handler) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/test/data/test_serial_map.json b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/test/data/test_serial_map.json new file mode 100644 index 0000000..f068281 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/test/data/test_serial_map.json @@ -0,0 +1 @@ +[{"phone": "Phone1", "battor": "BattOr1"}, {"phone": "Phone2", "battor": "BattOr2"}, {"phone": "Phone3", "battor": "BattOr3"}] diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/timeout_retry.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/timeout_retry.py new file mode 100644 index 0000000..d230462 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/timeout_retry.py @@ -0,0 +1,175 @@ +# Copyright 2013 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""A utility to run functions with timeouts and retries.""" +# pylint: disable=W0702 + +import logging +import threading +import time + +from devil.utils import reraiser_thread +from devil.utils import watchdog_timer + +logger = logging.getLogger(__name__) + + +class TimeoutRetryThreadGroup(reraiser_thread.ReraiserThreadGroup): + + def __init__(self, timeout, threads=None): + super(TimeoutRetryThreadGroup, self).__init__(threads) + self._watcher = watchdog_timer.WatchdogTimer(timeout) + + def GetWatcher(self): + """Returns the watchdog keeping track of this thread's time.""" + return self._watcher + + def GetElapsedTime(self): + return self._watcher.GetElapsed() + + def GetRemainingTime(self, required=0, msg=None): + """Get the remaining time before the thread times out. + + Useful to send as the |timeout| parameter of async IO operations. + + Args: + required: minimum amount of time that will be required to complete, e.g., + some sleep or IO operation. + msg: error message to show if timing out. + + Returns: + The number of seconds remaining before the thread times out, or None + if the thread never times out. + + Raises: + reraiser_thread.TimeoutError if the remaining time is less than the + required time. + """ + remaining = self._watcher.GetRemaining() + if remaining is not None and remaining < required: + if msg is None: + msg = 'Timeout expired' + if remaining > 0: + msg += (', wait of %.1f secs required but only %.1f secs left' + % (required, remaining)) + raise reraiser_thread.TimeoutError(msg) + return remaining + + +def CurrentTimeoutThreadGroup(): + """Returns the thread group that owns or is blocked on the active thread. + + Returns: + Returns None if no TimeoutRetryThreadGroup is tracking the current thread. + """ + thread_group = reraiser_thread.CurrentThreadGroup() + while thread_group: + if isinstance(thread_group, TimeoutRetryThreadGroup): + return thread_group + thread_group = thread_group.blocked_parent_thread_group + return None + + +def WaitFor(condition, wait_period=5, max_tries=None): + """Wait for a condition to become true. + + Repeatedly call the function condition(), with no arguments, until it returns + a true value. + + If called within a TimeoutRetryThreadGroup, it cooperates nicely with it. + + Args: + condition: function with the condition to check + wait_period: number of seconds to wait before retrying to check the + condition + max_tries: maximum number of checks to make, the default tries forever + or until the TimeoutRetryThreadGroup expires. + + Returns: + The true value returned by the condition, or None if the condition was + not met after max_tries. + + Raises: + reraiser_thread.TimeoutError: if the current thread is a + TimeoutRetryThreadGroup and the timeout expires. + """ + condition_name = condition.__name__ + timeout_thread_group = CurrentTimeoutThreadGroup() + while max_tries is None or max_tries > 0: + result = condition() + if max_tries is not None: + max_tries -= 1 + msg = ['condition', repr(condition_name), 'met' if result else 'not met'] + if timeout_thread_group: + # pylint: disable=no-member + msg.append('(%.1fs)' % timeout_thread_group.GetElapsedTime()) + logger.info(' '.join(msg)) + if result: + return result + if timeout_thread_group: + # pylint: disable=no-member + timeout_thread_group.GetRemainingTime(wait_period, + msg='Timed out waiting for %r' % condition_name) + time.sleep(wait_period) + return None + + +def AlwaysRetry(_exception): + return True + + +def Run(func, timeout, retries, args=None, kwargs=None, desc=None, + error_log_func=logging.critical, retry_if_func=AlwaysRetry): + """Runs the passed function in a separate thread with timeouts and retries. + + Args: + func: the function to be wrapped. + timeout: the timeout in seconds for each try. + retries: the number of retries. + args: list of positional args to pass to |func|. + kwargs: dictionary of keyword args to pass to |func|. + desc: An optional description of |func| used in logging. If omitted, + |func.__name__| will be used. + error_log_func: Logging function when logging errors. + retry_if_func: Unary callable that takes an exception and returns + whether |func| should be retried. Defaults to always retrying. + + Returns: + The return value of func(*args, **kwargs). + """ + if not args: + args = [] + if not kwargs: + kwargs = {} + if not desc: + desc = func.__name__ + + num_try = 1 + while True: + thread_name = 'TimeoutThread-%d-for-%s' % (num_try, + threading.current_thread().name) + child_thread = reraiser_thread.ReraiserThread(lambda: func(*args, **kwargs), + name=thread_name) + try: + thread_group = TimeoutRetryThreadGroup(timeout, threads=[child_thread]) + thread_group.StartAll(will_block=True) + while True: + thread_group.JoinAll(watcher=thread_group.GetWatcher(), timeout=60, + error_log_func=error_log_func) + if thread_group.IsAlive(): + logger.info('Still working on %s', desc) + else: + return thread_group.GetAllReturnValues()[0] + except reraiser_thread.TimeoutError as e: + # Timeouts already get their stacks logged. + if num_try > retries or not retry_if_func(e): + raise + # Do not catch KeyboardInterrupt. + except Exception as e: # pylint: disable=broad-except + if num_try > retries or not retry_if_func(e): + raise + error_log_func( + '(%s) Exception on %s, attempt %d of %d: %r', + thread_name, desc, num_try, retries + 1, e) + num_try += 1 diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/timeout_retry_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/timeout_retry_unittest.py new file mode 100644 index 0000000..0eeb31a --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/timeout_retry_unittest.py @@ -0,0 +1,79 @@ +#!/usr/bin/python +# Copyright 2013 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Unittests for timeout_and_retry.py.""" + +import logging +import time +import unittest + +from devil.utils import reraiser_thread +from devil.utils import timeout_retry + + +_DEFAULT_TIMEOUT = .1 + + +class TestException(Exception): + pass + + +def _CountTries(tries): + tries[0] += 1 + raise TestException + + +class TestRun(unittest.TestCase): + """Tests for timeout_retry.Run.""" + + def testRun(self): + self.assertTrue(timeout_retry.Run( + lambda x: x, 30, 3, [True], {})) + + def testTimeout(self): + tries = [0] + + def _sleep(): + tries[0] += 1 + time.sleep(1) + + self.assertRaises( + reraiser_thread.TimeoutError, timeout_retry.Run, _sleep, .01, 1, + error_log_func=logging.debug) + self.assertEqual(tries[0], 2) + + def testRetries(self): + tries = [0] + self.assertRaises( + TestException, timeout_retry.Run, lambda: _CountTries(tries), + _DEFAULT_TIMEOUT, 3, error_log_func=logging.debug) + self.assertEqual(tries[0], 4) + + def testNoRetries(self): + tries = [0] + self.assertRaises( + TestException, timeout_retry.Run, lambda: _CountTries(tries), + _DEFAULT_TIMEOUT, 0, error_log_func=logging.debug) + self.assertEqual(tries[0], 1) + + def testReturnValue(self): + self.assertTrue(timeout_retry.Run(lambda: True, _DEFAULT_TIMEOUT, 3)) + + def testCurrentTimeoutThreadGroup(self): + def InnerFunc(): + current_thread_group = timeout_retry.CurrentTimeoutThreadGroup() + self.assertIsNotNone(current_thread_group) + + def InnerInnerFunc(): + self.assertEqual(current_thread_group, + timeout_retry.CurrentTimeoutThreadGroup()) + return True + return reraiser_thread.RunAsync((InnerInnerFunc,))[0] + + self.assertTrue(timeout_retry.Run(InnerFunc, _DEFAULT_TIMEOUT, 3)) + + +if __name__ == '__main__': + unittest.main() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/update_mapping.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/update_mapping.py new file mode 100644 index 0000000..6666b9b --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/update_mapping.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python + +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import argparse +import sys + +from devil.utils import battor_device_mapping + +def parse_options(): + """Parses and checks the command-line options. + + Returns: + A tuple containing the options structure. + """ + usage = 'Usage: ./update_mapping.py [options]' + desc = ('Example: ./update_mapping.py -o mapping.json.\n' + 'This script generates and stores a file that gives the\n' + 'mapping between phone serial numbers and BattOr serial numbers\n' + 'Mapping is based on which physical ports on the USB hubs the\n' + 'devices are plugged in to. For instance, if there are two hubs,\n' + 'the phone connected to port N on the first hub is mapped to the\n' + 'BattOr connected to port N on the second hub, for each N.') + parser = argparse.ArgumentParser(usage=usage, description=desc) + parser.add_argument('-o', '--output', dest='out_file', + default='mapping.json', type=str, + action='store', help='mapping file name') + parser.add_argument('-u', '--hub', dest='hub_types', + action='append', choices=['plugable_7port', + 'plugable_7port_usb3_part2', + 'plugable_7port_usb3_part3'], + help='USB hub types.') + options = parser.parse_args() + if not options.hub_types: + options.hub_types = ['plugable_7port', 'plugable_7port_usb3_part2', + 'plugable_7port_usb3_part3'] + return options + +def main(): + options = parse_options() + battor_device_mapping.GenerateSerialMapFile(options.out_file, + options.hub_types) + +if __name__ == "__main__": + sys.exit(main()) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/usb_hubs.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/usb_hubs.py new file mode 100644 index 0000000..b718694 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/usb_hubs.py @@ -0,0 +1,184 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +PLUGABLE_7PORT_LAYOUT = {1:7, + 2:6, + 3:5, + 4:{1:4, 2:3, 3:2, 4:1}} + +PLUGABLE_7PORT_USB3_LAYOUT = {1:{1:1, 2:2, 3:3, 4:4}, + 2:5, + 3:6, + 4:7} + +KEEDOX_LAYOUT = {1:1, + 2:2, + 3:3, + 4:{1:4, 2:5, 3:6, 4:7}} + +VIA_LAYOUT = {1:1, + 2:2, + 3:3, + 4:{1:4, 2:5, 3:6, 4:7}} + +class HubType(object): + def __init__(self, id_func, port_mapping): + """Defines a type of hub. + + Args: + id_func: [USBNode -> bool] is a function that can be run on a node + to determine if the node represents this type of hub. + port_mapping: [dict(int:(int|dict))] maps virtual to physical port + numbers. For instance, {3:1, 1:2, 2:3} means that virtual port 3 + corresponds to physical port 1, virtual port 1 corresponds to physical + port 2, and virtual port 2 corresponds to physical port 3. In the + case of hubs with "internal" topology, this is represented by nested + maps. For instance, {1:{1:1,2:2},2:{1:3,2:4}} means, e.g. that the + device plugged into physical port 3 will show up as being connected + to port 1, on a device which is connected to port 2 on the hub. + """ + self._id_func = id_func + # v2p = "virtual to physical" ports + self._v2p_port = port_mapping + + def IsType(self, node): + """Determines if the given Node is a hub of this type. + + Args: + node: [USBNode] Node to check. + """ + return self._id_func(node) + + def GetPhysicalPortToNodeTuples(self, node): + """Gets devices connected to the physical ports on a hub of this type. + + Args: + node: [USBNode] Node representing a hub of this type. + + Yields: + A series of (int, USBNode) tuples giving a physical port + and the USBNode connected to it. + + Raises: + ValueError: If the given node isn't a hub of this type. + """ + if self.IsType(node): + for res in self._GppHelper(node, self._v2p_port): + yield res + else: + raise ValueError('Node must be a hub of this type') + + def _GppHelper(self, node, mapping): + """Helper function for GetPhysicalPortToNodeMap. + + Gets devices connected to physical ports, based on device tree + rooted at the given node and the mapping between virtual and physical + ports. + + Args: + node: [USBNode] Root of tree to search for devices. + mapping: [dict] Mapping between virtual and physical ports. + + Yields: + A series of (int, USBNode) tuples giving a physical port + and the Node connected to it. + """ + for (virtual, physical) in mapping.iteritems(): + if node.HasPort(virtual): + if isinstance(physical, dict): + for res in self._GppHelper(node.PortToDevice(virtual), physical): + yield res + else: + yield (physical, node.PortToDevice(virtual)) + +def _is_plugable_7port_hub(node): + """Check if a node is a Plugable 7-Port Hub + (Model USB2-HUB7BC) + The topology of this device is a 4-port hub, + with another 4-port hub connected on port 4. + """ + if '1a40:0101' not in node.desc: + return False + if not node.HasPort(4): + return False + return '1a40:0101' in node.PortToDevice(4).desc + +# Plugable 7-Port USB-3 Hubs show up twice in the USB devices list; they have +# two different "branches", one which has USB2 devices and one which has +# USB3 devices. The "part2" is the "USB-2" branch of the hub, the +# "part3" is the "USB-3" branch of the hub. + +def _is_plugable_7port_usb3_part2_hub(node): + """Check if a node is the "USB2 branch" of + a Plugable 7-Port USB-3 Hub (Model USB3-HUB7BC) + The topology of this device is a 4-port hub, + with another 4-port hub connected on port 1. + """ + if '2109:2811' not in node.desc: + return False + if not node.HasPort(1): + return False + return '2109:2811' in node.PortToDevice(1).desc + +def _is_plugable_7port_usb3_part3_hub(node): + """Check if a node is the "USB3 branch" of + a Plugable 7-Port USB-3 Hub (Model USB3-HUB7BC) + The topology of this device is a 4-port hub, + with another 4-port hub connected on port 1. + """ + if '2109:8110' not in node.desc: + return False + if not node.HasPort(1): + return False + return '2109:8110' in node.PortToDevice(1).desc + +def _is_keedox_hub(node): + """Check if a node is a Keedox hub. + The topology of this device is a 4-port hub, + with another 4-port hub connected on port 4. + """ + if '0bda:5411' not in node.desc: + return False + if not node.HasPort(4): + return False + return '0bda:5411' in node.PortToDevice(4).desc + +def _is_via_hub(node): + """Check if a node is a Via Labs hub. + The topology of this device is a 4-port hub, + with another 4-port hub connected on port 4. + """ + if '2109:2812' not in node.desc: + return False + if not node.HasPort(4): + return False + return '2109:2812' in node.PortToDevice(4).desc + + +PLUGABLE_7PORT = HubType(_is_plugable_7port_hub, PLUGABLE_7PORT_LAYOUT) +PLUGABLE_7PORT_USB3_PART2 = HubType(_is_plugable_7port_usb3_part2_hub, + PLUGABLE_7PORT_USB3_LAYOUT) +PLUGABLE_7PORT_USB3_PART3 = HubType(_is_plugable_7port_usb3_part3_hub, + PLUGABLE_7PORT_USB3_LAYOUT) +KEEDOX = HubType(_is_keedox_hub, KEEDOX_LAYOUT) +VIA = HubType(_is_via_hub, VIA_LAYOUT) + +ALL_HUBS = [PLUGABLE_7PORT, + PLUGABLE_7PORT_USB3_PART2, + PLUGABLE_7PORT_USB3_PART3, + KEEDOX, + VIA] + +def GetHubType(type_name): + if type_name == 'plugable_7port': + return PLUGABLE_7PORT + elif type_name == 'plugable_7port_usb3_part2': + return PLUGABLE_7PORT_USB3_PART2 + elif type_name == 'plugable_7port_usb3_part3': + return PLUGABLE_7PORT_USB3_PART3 + elif type_name == 'keedox': + return KEEDOX + elif type_name == 'via': + return VIA + raise ValueError('Invalid hub type') diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/watchdog_timer.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/watchdog_timer.py new file mode 100644 index 0000000..2f4c464 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/watchdog_timer.py @@ -0,0 +1,47 @@ +# Copyright 2013 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""WatchdogTimer timeout objects.""" + +import time + + +class WatchdogTimer(object): + """A resetable timeout-based watchdog. + + This object is threadsafe. + """ + + def __init__(self, timeout): + """Initializes the watchdog. + + Args: + timeout: The timeout in seconds. If timeout is None it will never timeout. + """ + self._start_time = time.time() + self._timeout = timeout + + def Reset(self): + """Resets the timeout countdown.""" + self._start_time = time.time() + + def GetElapsed(self): + """Returns the elapsed time of the watchdog.""" + return time.time() - self._start_time + + def GetRemaining(self): + """Returns the remaining time of the watchdog.""" + if self._timeout: + return self._timeout - self.GetElapsed() + else: + return None + + def IsTimedOut(self): + """Whether the watchdog has timed out. + + Returns: + True if the watchdog has timed out, False otherwise. + """ + remaining = self.GetRemaining() + return remaining is not None and remaining < 0 diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/zip_utils.py b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/zip_utils.py new file mode 100644 index 0000000..eaa6a2d --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/devil/utils/zip_utils.py @@ -0,0 +1,33 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import logging +import os +import zipfile + +logger = logging.getLogger(__name__) + + +def WriteToZipFile(zip_file, path, arc_path): + """Recursively write |path| to |zip_file| as |arc_path|. + + zip_file: An open instance of zipfile.ZipFile. + path: An absolute path to the file or directory to be zipped. + arc_path: A relative path within the zip file to which the file or directory + located at |path| should be written. + """ + if os.path.isdir(path): + for dir_path, _, file_names in os.walk(path): + dir_arc_path = os.path.join(arc_path, os.path.relpath(dir_path, path)) + logger.debug('dir: %s -> %s', dir_path, dir_arc_path) + zip_file.write(dir_path, dir_arc_path, zipfile.ZIP_STORED) + for f in file_names: + file_path = os.path.join(dir_path, f) + file_arc_path = os.path.join(dir_arc_path, f) + logger.debug('file: %s -> %s', file_path, file_arc_path) + zip_file.write(file_path, file_arc_path, zipfile.ZIP_DEFLATED) + else: + logger.debug('file: %s -> %s', path, arc_path) + zip_file.write(path, arc_path, zipfile.ZIP_DEFLATED) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/docs/adb_wrapper.md b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/docs/adb_wrapper.md new file mode 100644 index 0000000..a8dc3b0 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/docs/adb_wrapper.md @@ -0,0 +1,388 @@ +# [devil.android.sdk.adb_wrapper](https://github.com/catapult-project/catapult/blob/master/devil/devil/android/sdk/adb_wrapper.py) + +*This page was autogenerated by `devil/utils/markdown.py --module-link https://github.com/catapult-project/catapult/blob/master/devil/devil/android/sdk/adb_wrapper.py`* + +## DeviceStat + +DeviceStat(st\_mode, st\_size, st\_time) +### DeviceStat.\_\_repr\_\_ + +Return a nicely formatted representation string +### DeviceStat.\_\_getnewargs\_\_ + +Return self as a plain tuple. Used by copy and pickle. +### DeviceStat.\_\_getstate\_\_ + +Exclude the OrderedDict from pickling +## AdbWrapper + +A wrapper around a local Android Debug Bridge executable. +### AdbWrapper.GetDeviceSerial + +Gets the device serial number associated with this object. +``` + Returns: + Device serial number as a string. +``` + + +### AdbWrapper.Push + +Pushes a file from the host to the device. +``` + Args: + local: Path on the host filesystem. + remote: Path on the device filesystem. + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. +``` + + +### AdbWrapper.Pull + +Pulls a file from the device to the host. +``` + Args: + remote: Path on the device filesystem. + local: Path on the host filesystem. + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. +``` + + +### AdbWrapper.Shell + +Runs a shell command on the device. +``` + Args: + command: A string with the shell command to run. + expect_status: (optional) Check that the command's exit status matches + this value. Default is 0. If set to None the test is skipped. + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. + + Returns: + The output of the shell command as a string. + + Raises: + device_errors.AdbCommandFailedError: If the exit status doesn't match + |expect_status|. +``` + + +### AdbWrapper.IterShell + +Runs a shell command and returns an iterator over its output lines. +``` + Args: + command: A string with the shell command to run. + timeout: Timeout in seconds. + + Yields: + The output of the command line by line. +``` + + +### AdbWrapper.Ls + +List the contents of a directory on the device. +``` + Args: + path: Path on the device filesystem. + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. + + Returns: + A list of pairs (filename, stat) for each file found in the directory, + where the stat object has the properties: st_mode, st_size, and st_time. + + Raises: + AdbCommandFailedError if |path| does not specify a valid and accessible + directory in the device, or the output of "adb ls" command is less + than four columns +``` + + +### AdbWrapper.Logcat + +Get an iterable over the logcat output. +``` + Args: + clear: If true, clear the logcat. + dump: If true, dump the current logcat contents. + filter_specs: If set, a list of specs to filter the logcat. + logcat_format: If set, the format in which the logcat should be output. + Options include "brief", "process", "tag", "thread", "raw", "time", + "threadtime", and "long" + ring_buffer: If set, a list of alternate ring buffers to request. + Options include "main", "system", "radio", "events", "crash" or "all". + The default is equivalent to ["main", "system", "crash"]. + iter_timeout: If set and neither clear nor dump is set, the number of + seconds to wait between iterations. If no line is found before the + given number of seconds elapses, the iterable will yield None. + timeout: (optional) If set, timeout per try in seconds. If clear or dump + is set, defaults to DEFAULT_TIMEOUT. + retries: (optional) If clear or dump is set, the number of retries to + attempt. Otherwise, does nothing. + + Yields: + logcat output line by line. +``` + + +### AdbWrapper.Forward + +Forward socket connections from the local socket to the remote socket. +``` + Sockets are specified by one of: + tcp:<port> + localabstract:<unix domain socket name> + localreserved:<unix domain socket name> + localfilesystem:<unix domain socket name> + dev:<character device name> + jdwp:<process pid> (remote only) + + Args: + local: The host socket. + remote: The device socket. + allow_rebind: A boolean indicating whether adb may rebind a local socket; + otherwise, the default, an exception is raised if the local socket is + already being forwarded. + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. +``` + + +### AdbWrapper.ForwardRemove + +Remove a forward socket connection. +``` + Args: + local: The host socket. + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. +``` + + +### AdbWrapper.ForwardList + +List all currently forwarded socket connections. +``` + Args: + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. + Returns: + The output of adb forward --list as a string. +``` + + +### AdbWrapper.JDWP + +List of PIDs of processes hosting a JDWP transport. +``` + Args: + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. + + Returns: + A list of PIDs as strings. +``` + + +### AdbWrapper.Install + +Install an apk on the device. +``` + Args: + apk_path: Host path to the APK file. + forward_lock: (optional) If set forward-locks the app. + allow_downgrade: (optional) If set, allows for downgrades. + reinstall: (optional) If set reinstalls the app, keeping its data. + sd_card: (optional) If set installs on the SD card. + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. +``` + + +### AdbWrapper.InstallMultiple + +Install an apk with splits on the device. +``` + Args: + apk_paths: Host path to the APK file. + forward_lock: (optional) If set forward-locks the app. + reinstall: (optional) If set reinstalls the app, keeping its data. + sd_card: (optional) If set installs on the SD card. + allow_downgrade: (optional) Allow versionCode downgrade. + partial: (optional) Package ID if apk_paths doesn't include all .apks. + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. +``` + + +### AdbWrapper.Uninstall + +Remove the app |package| from the device. +``` + Args: + package: The package to uninstall. + keep_data: (optional) If set keep the data and cache directories. + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. +``` + + +### AdbWrapper.Backup + +Write an archive of the device's data to |path|. +``` + Args: + path: Local path to store the backup file. + packages: List of to packages to be backed up. + apk: (optional) If set include the .apk files in the archive. + shared: (optional) If set buckup the device's SD card. + nosystem: (optional) If set exclude system applications. + include_all: (optional) If set back up all installed applications and + |packages| is optional. + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. +``` + + +### AdbWrapper.Restore + +Restore device contents from the backup archive. +``` + Args: + path: Host path to the backup archive. + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. +``` + + +### AdbWrapper.WaitForDevice + +Block until the device is online. +``` + Args: + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. +``` + + +### AdbWrapper.GetState + +Get device state. +``` + Args: + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. + + Returns: + One of 'offline', 'bootloader', or 'device'. +``` + + +### AdbWrapper.GetDevPath + +Gets the device path. +``` + Args: + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. + + Returns: + The device path (e.g. usb:3-4) +``` + + +### AdbWrapper.Remount + +Remounts the /system partition on the device read-write. +### AdbWrapper.Reboot + +Reboots the device. +``` + Args: + to_bootloader: (optional) If set reboots to the bootloader. + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. +``` + + +### AdbWrapper.Root + +Restarts the adbd daemon with root permissions, if possible. +``` + Args: + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. +``` + + +### AdbWrapper.Emu + +Runs an emulator console command. +``` + See http://developer.android.com/tools/devices/emulator.html#console + + Args: + cmd: The command to run on the emulator console. + timeout: (optional) Timeout per try in seconds. + retries: (optional) Number of retries to attempt. + + Returns: + The output of the emulator console command. +``` + + +### AdbWrapper.DisableVerity + +Disable Marshmallow's Verity security feature +### AdbWrapper.EnableVerity + +Enable Marshmallow's Verity security feature +### AdbWrapper.\_\_init\_\_ + +Initializes the AdbWrapper. +``` + Args: + device_serial: The device serial number as a string. +``` + + +### AdbWrapper.\_\_eq\_\_ + +Consider instances equal if they refer to the same device. +``` + Args: + other: The instance to compare equality with. + + Returns: + True if the instances are considered equal, false otherwise. +``` + + +### AdbWrapper.\_\_str\_\_ + +The string representation of an instance. +``` + Returns: + The device serial number as a string. +``` + + +### AdbWrapper.\_\_repr\_\_ + +### VerifyLocalFileExists + +Verifies a local file exists. +``` + Args: + path: Path to the local file. + + Raises: + IOError: If the file doesn't exist. +``` + + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/docs/device_blacklist.md b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/docs/device_blacklist.md new file mode 100644 index 0000000..c6eed51 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/docs/device_blacklist.md @@ -0,0 +1,59 @@ +<!-- Copyright 2016 The Chromium Authors. All rights reserved. + Use of this source code is governed by a BSD-style license that can be + found in the LICENSE file. +--> + +# Devil: Device Blacklist + +## What is it? + +The device blacklist is a per-run list of devices detected to be in a known bad +state along with the reason they are suspected of being in a bad state (offline, +not responding, etc). It is stored as a json file. This gets reset every run +during the device recovery step (currently part of `bb_device_status_check`). + +## Bots + +On bots, this is normally found at `//out/bad_devices.json`. If you are having +problems with blacklisted devices locally even though a device is in a good +state, you can safely delete this file. + +# Tools for interacting with device black list. + +You can interact with the device blacklist via [devil.android.device\_blacklist](https://cs.chromium.org/chromium/src/third_party/catapult/devil/devil/android/device_blacklist.py). +This allows for any interaction you would need with a device blacklist: + + - Reading + - Writing + - Extending + - Resetting + +An example usecase of this is: +```python +from devil.android import device_blacklist + +blacklist = device_blacklist.Blacklist(blacklist_path) +blacklisted_devices = blacklist.Read() +for device in blacklisted_devices: + print 'Device %s is blacklisted' % device +blacklist.Reset() +new_blacklist = {'device_id1': {'timestamp': ts, 'reason': reason}} +blacklist.Write(new_blacklist) +blacklist.Extend([device_2, device_3], reason='Reason for blacklisting') +``` + + +## Where it is used. + +The blacklist file path is passed directly to the following scripts in chromium: + + - [test\_runner.py](https://cs.chromium.org/chromium/src/build/android/test_runner.py) + - [provision\_devices.py](https://cs.chromium.org/chromium/src/build/android/provision_devices.py) + - [bb\_device\_status\_check.py](https://cs.chromium.org/chromium/src/build/android/buildbot/bb_device_status_check.py) + +The blacklist is also used in the following scripts: + + - [device\_status.py](https://cs.chromium.org/chromium/src/third_party/catapult/devil/devil/android/tools/device_status.py) + - [device\_recovery.py](https://cs.chromium.org/chromium/src/third_party/catapult/devil/devil/android/tools/device_recovery.py) + + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/docs/device_utils.md b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/docs/device_utils.md new file mode 100644 index 0000000..b281b26 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/docs/device_utils.md @@ -0,0 +1,1041 @@ +# [devil.android.device_utils](https://github.com/catapult-project/catapult/blob/master/devil/devil/android/device_utils.py) + +*This page was autogenerated by `devil/utils/markdown.py --module-link https://github.com/catapult-project/catapult/blob/master/devil/devil/android/device_utils.py`* + +## DeviceUtils + +### DeviceUtils.\_\_init\_\_ + +DeviceUtils constructor. +``` + Args: + device: Either a device serial, an existing AdbWrapper instance, or an + an existing AndroidCommands instance. + enable_device_files_cache: For PushChangedFiles(), cache checksums of + pushed files rather than recomputing them on a subsequent call. + default_timeout: An integer containing the default number of seconds to + wait for an operation to complete if no explicit value is provided. + default_retries: An integer containing the default number or times an + operation should be retried on failure if no explicit value is provided. +``` + + +### DeviceUtils.\_\_eq\_\_ + +Checks whether |other| refers to the same device as |self|. +``` + Args: + other: The object to compare to. This can be a basestring, an instance + of adb_wrapper.AdbWrapper, or an instance of DeviceUtils. + Returns: + Whether |other| refers to the same device as |self|. +``` + + +### DeviceUtils.\_\_lt\_\_ + +Compares two instances of DeviceUtils. +``` + This merely compares their serial numbers. + + Args: + other: The instance of DeviceUtils to compare to. + Returns: + Whether |self| is less than |other|. +``` + + +### DeviceUtils.\_\_str\_\_ + +Returns the device serial. +### DeviceUtils.NeedsSU + +Checks whether 'su' is needed to access protected resources. +``` + Args: + timeout: timeout in seconds + retries: number of retries + + Returns: + True if 'su' is available on the device and is needed to to access + protected resources; False otherwise if either 'su' is not available + (e.g. because the device has a user build), or not needed (because adbd + already has root privileges). + + Raises: + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. +``` + + +### DeviceUtils.IsOnline + +Checks whether the device is online. +``` + Args: + timeout: timeout in seconds + retries: number of retries + + Returns: + True if the device is online, False otherwise. + + Raises: + CommandTimeoutError on timeout. +``` + + +### DeviceUtils.HasRoot + +Checks whether or not adbd has root privileges. +``` + Args: + timeout: timeout in seconds + retries: number of retries + + Returns: + True if adbd has root privileges, False otherwise. + + Raises: + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. +``` + + +### DeviceUtils.EnableRoot + +Restarts adbd with root privileges. +``` + Args: + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandFailedError if root could not be enabled. + CommandTimeoutError on timeout. +``` + + +### DeviceUtils.IsUserBuild + +Checks whether or not the device is running a user build. +``` + Args: + timeout: timeout in seconds + retries: number of retries + + Returns: + True if the device is running a user build, False otherwise (i.e. if + it's running a userdebug build). + + Raises: + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. +``` + + +### DeviceUtils.GetExternalStoragePath + +Get the device's path to its SD card. +``` + Args: + timeout: timeout in seconds + retries: number of retries + + Returns: + The device's path to its SD card. + + Raises: + CommandFailedError if the external storage path could not be determined. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. +``` + + +### DeviceUtils.GetApplicationPaths + +Get the paths of the installed apks on the device for the given package. +``` + Args: + package: Name of the package. + + Returns: + List of paths to the apks on the device for the given package. +``` + + +### DeviceUtils.GetApplicationVersion + +Get the version name of a package installed on the device. +``` + Args: + package: Name of the package. + + Returns: + A string with the version name or None if the package is not found + on the device. +``` + + +### DeviceUtils.GetApplicationDataDirectory + +Get the data directory on the device for the given package. +``` + Args: + package: Name of the package. + + Returns: + The package's data directory. + Raises: + CommandFailedError if the package's data directory can't be found, + whether because it's not installed or otherwise. +``` + + +### DeviceUtils.WaitUntilFullyBooted + +Wait for the device to fully boot. +``` + This means waiting for the device to boot, the package manager to be + available, and the SD card to be ready. It can optionally mean waiting + for wifi to come up, too. + + Args: + wifi: A boolean indicating if we should wait for wifi to come up or not. + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandFailedError on failure. + CommandTimeoutError if one of the component waits times out. + DeviceUnreachableError if the device becomes unresponsive. +``` + + +### DeviceUtils.Reboot + +Reboot the device. +``` + Args: + block: A boolean indicating if we should wait for the reboot to complete. + wifi: A boolean indicating if we should wait for wifi to be enabled after + the reboot. The option has no effect unless |block| is also True. + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. +``` + + +### DeviceUtils.Install + +Install an APK. +``` + Noop if an identical APK is already installed. + + Args: + apk: An ApkHelper instance or string containing the path to the APK. + allow_downgrade: A boolean indicating if we should allow downgrades. + reinstall: A boolean indicating if we should keep any existing app data. + permissions: Set of permissions to set. If not set, finds permissions with + apk helper. To set no permissions, pass []. + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandFailedError if the installation fails. + CommandTimeoutError if the installation times out. + DeviceUnreachableError on missing device. +``` + + +### DeviceUtils.InstallSplitApk + +Install a split APK. +``` + Noop if all of the APK splits are already installed. + + Args: + base_apk: An ApkHelper instance or string containing the path to the base + APK. + split_apks: A list of strings of paths of all of the APK splits. + allow_downgrade: A boolean indicating if we should allow downgrades. + reinstall: A boolean indicating if we should keep any existing app data. + allow_cached_props: Whether to use cached values for device properties. + permissions: Set of permissions to set. If not set, finds permissions with + apk helper. To set no permissions, pass []. + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandFailedError if the installation fails. + CommandTimeoutError if the installation times out. + DeviceUnreachableError on missing device. + DeviceVersionError if device SDK is less than Android L. +``` + + +### DeviceUtils.Uninstall + +Remove the app |package\_name| from the device. +``` + This is a no-op if the app is not already installed. + + Args: + package_name: The package to uninstall. + keep_data: (optional) Whether to keep the data and cache directories. + timeout: Timeout in seconds. + retries: Number of retries. + + Raises: + CommandFailedError if the uninstallation fails. + CommandTimeoutError if the uninstallation times out. + DeviceUnreachableError on missing device. +``` + + +### DeviceUtils.RunShellCommand + +Run an ADB shell command. +``` + The command to run |cmd| should be a sequence of program arguments or else + a single string. + + When |cmd| is a sequence, it is assumed to contain the name of the command + to run followed by its arguments. In this case, arguments are passed to the + command exactly as given, without any further processing by the shell. This + allows to easily pass arguments containing spaces or special characters + without having to worry about getting quoting right. Whenever possible, it + is recomended to pass |cmd| as a sequence. + + When |cmd| is given as a string, it will be interpreted and run by the + shell on the device. + + This behaviour is consistent with that of command runners in cmd_helper as + well as Python's own subprocess.Popen. + + TODO(perezju) Change the default of |check_return| to True when callers + have switched to the new behaviour. + + Args: + cmd: A string with the full command to run on the device, or a sequence + containing the command and its arguments. + check_return: A boolean indicating whether or not the return code should + be checked. + cwd: The device directory in which the command should be run. + env: The environment variables with which the command should be run. + run_as: A string containing the package as which the command should be + run. + as_root: A boolean indicating whether the shell command should be run + with root privileges. + single_line: A boolean indicating if only a single line of output is + expected. + large_output: Uses a work-around for large shell command output. Without + this large output will be truncated. + raw_output: Whether to only return the raw output + (no splitting into lines). + timeout: timeout in seconds + retries: number of retries + + Returns: + If single_line is False, the output of the command as a list of lines, + otherwise, a string with the unique line of output emmited by the command + (with the optional newline at the end stripped). + + Raises: + AdbCommandFailedError if check_return is True and the exit code of + the command run on the device is non-zero. + CommandFailedError if single_line is True but the output contains two or + more lines. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. +``` + + +### DeviceUtils.KillAll + +Kill all processes with the given name on the device. +``` + Args: + process_name: A string containing the name of the process to kill. + exact: A boolean indicating whether to kill all processes matching + the string |process_name| exactly, or all of those which contain + |process_name| as a substring. Defaults to False. + signum: An integer containing the signal number to send to kill. Defaults + to SIGKILL (9). + as_root: A boolean indicating whether the kill should be executed with + root privileges. + blocking: A boolean indicating whether we should wait until all processes + with the given |process_name| are dead. + quiet: A boolean indicating whether to ignore the fact that no processes + to kill were found. + timeout: timeout in seconds + retries: number of retries + + Returns: + The number of processes attempted to kill. + + Raises: + CommandFailedError if no process was killed and |quiet| is False. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. +``` + + +### DeviceUtils.StartActivity + +Start package's activity on the device. +``` + Args: + intent_obj: An Intent object to send. + blocking: A boolean indicating whether we should wait for the activity to + finish launching. + trace_file_name: If present, a string that both indicates that we want to + profile the activity and contains the path to which the + trace should be saved. + force_stop: A boolean indicating whether we should stop the activity + before starting it. + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandFailedError if the activity could not be started. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. +``` + + +### DeviceUtils.StartInstrumentation + +### DeviceUtils.BroadcastIntent + +Send a broadcast intent. +``` + Args: + intent: An Intent to broadcast. + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. +``` + + +### DeviceUtils.GoHome + +Return to the home screen and obtain launcher focus. +``` + This command launches the home screen and attempts to obtain + launcher focus until the timeout is reached. + + Args: + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. +``` + + +### DeviceUtils.ForceStop + +Close the application. +``` + Args: + package: A string containing the name of the package to stop. + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. +``` + + +### DeviceUtils.ClearApplicationState + +Clear all state for the given package. +``` + Args: + package: A string containing the name of the package to stop. + permissions: List of permissions to set after clearing data. + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. +``` + + +### DeviceUtils.SendKeyEvent + +Sends a keycode to the device. +``` + See the devil.android.sdk.keyevent module for suitable keycode values. + + Args: + keycode: A integer keycode to send to the device. + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. +``` + + +### DeviceUtils.PushChangedFiles + +Push files to the device, skipping files that don't need updating. +``` + When a directory is pushed, it is traversed recursively on the host and + all files in it are pushed to the device as needed. + Additionally, if delete_device_stale option is True, + files that exist on the device but don't exist on the host are deleted. + + Args: + host_device_tuples: A list of (host_path, device_path) tuples, where + |host_path| is an absolute path of a file or directory on the host + that should be minimially pushed to the device, and |device_path| is + an absolute path of the destination on the device. + timeout: timeout in seconds + retries: number of retries + delete_device_stale: option to delete stale files on device + + Raises: + CommandFailedError on failure. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. +``` + + +### DeviceUtils.FileExists + +Checks whether the given file exists on the device. +``` + Arguments are the same as PathExists. +``` + + +### DeviceUtils.PathExists + +Checks whether the given path(s) exists on the device. +``` + Args: + device_path: A string containing the absolute path to the file on the + device, or an iterable of paths to check. + as_root: Whether root permissions should be use to check for the existence + of the given path(s). + timeout: timeout in seconds + retries: number of retries + + Returns: + True if the all given paths exist on the device, False otherwise. + + Raises: + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. +``` + + +### DeviceUtils.RemovePath + +Removes the given path(s) from the device. +``` + Args: + device_path: A string containing the absolute path to the file on the + device, or an iterable of paths to check. + force: Whether to remove the path(s) with force (-f). + recursive: Whether to remove any directories in the path(s) recursively. + as_root: Whether root permissions should be use to remove the given + path(s). + timeout: timeout in seconds + retries: number of retries +``` + + +### DeviceUtils.PullFile + +Pull a file from the device. +``` + Args: + device_path: A string containing the absolute path of the file to pull + from the device. + host_path: A string containing the absolute path of the destination on + the host. + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandFailedError on failure. + CommandTimeoutError on timeout. +``` + + +### DeviceUtils.ReadFile + +Reads the contents of a file from the device. +``` + Args: + device_path: A string containing the absolute path of the file to read + from the device. + as_root: A boolean indicating whether the read should be executed with + root privileges. + force_pull: A boolean indicating whether to force the operation to be + performed by pulling a file from the device. The default is, when the + contents are short, to retrieve the contents using cat instead. + timeout: timeout in seconds + retries: number of retries + + Returns: + The contents of |device_path| as a string. Contents are intepreted using + universal newlines, so the caller will see them encoded as ' +'. Also, + all lines will be terminated. + + Raises: + AdbCommandFailedError if the file can't be read. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. +``` + + +### DeviceUtils.WriteFile + +Writes |contents| to a file on the device. +``` + Args: + device_path: A string containing the absolute path to the file to write + on the device. + contents: A string containing the data to write to the device. + as_root: A boolean indicating whether the write should be executed with + root privileges (if available). + force_push: A boolean indicating whether to force the operation to be + performed by pushing a file to the device. The default is, when the + contents are short, to pass the contents using a shell script instead. + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandFailedError if the file could not be written on the device. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. +``` + + +### DeviceUtils.ListDirectory + +List all files on a device directory. +``` + Mirroring os.listdir (and most client expectations) the resulting list + does not include the special entries '.' and '..' even if they are present + in the directory. + + Args: + device_path: A string containing the path of the directory on the device + to list. + as_root: A boolean indicating whether the to use root privileges to list + the directory contents. + timeout: timeout in seconds + retries: number of retries + + Returns: + A list of filenames for all entries contained in the directory. + + Raises: + AdbCommandFailedError if |device_path| does not specify a valid and + accessible directory in the device. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. +``` + + +### DeviceUtils.StatDirectory + +List file and stat info for all entries on a device directory. +``` + Implementation notes: this is currently implemented by parsing the output + of 'ls -a -l' on the device. Whether possible and convenient, we attempt to + make parsing strict and return values mirroring those of the standard |os| + and |stat| Python modules. + + Mirroring os.listdir (and most client expectations) the resulting list + does not include the special entries '.' and '..' even if they are present + in the directory. + + Args: + device_path: A string containing the path of the directory on the device + to list. + as_root: A boolean indicating whether the to use root privileges to list + the directory contents. + timeout: timeout in seconds + retries: number of retries + + Returns: + A list of dictionaries, each containing the following keys: + filename: A string with the file name. + st_mode: File permissions, use the stat module to interpret these. + st_nlink: Number of hard links (may be missing). + st_owner: A string with the user name of the owner. + st_group: A string with the group name of the owner. + st_rdev_pair: Device type as (major, minior) (only if inode device). + st_size: Size of file, in bytes (may be missing for non-regular files). + st_mtime: Time of most recent modification, in seconds since epoch + (although resolution is in minutes). + symbolic_link_to: If entry is a symbolic link, path where it points to; + missing otherwise. + + Raises: + AdbCommandFailedError if |device_path| does not specify a valid and + accessible directory in the device. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. +``` + + +### DeviceUtils.StatPath + +Get the stat attributes of a file or directory on the device. +``` + Args: + device_path: A string containing the path of a file or directory from + which to get attributes. + as_root: A boolean indicating whether the to use root privileges to + access the file information. + timeout: timeout in seconds + retries: number of retries + + Returns: + A dictionary with the stat info collected; see StatDirectory for details. + + Raises: + CommandFailedError if device_path cannot be found on the device. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. +``` + + +### DeviceUtils.FileSize + +Get the size of a file on the device. +``` + Note: This is implemented by parsing the output of the 'ls' command on + the device. On some Android versions, when passing a directory or special + file, the size is *not* reported and this function will throw an exception. + + Args: + device_path: A string containing the path of a file on the device. + as_root: A boolean indicating whether the to use root privileges to + access the file information. + timeout: timeout in seconds + retries: number of retries + + Returns: + The size of the file in bytes. + + Raises: + CommandFailedError if device_path cannot be found on the device, or + its size cannot be determited for some reason. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. +``` + + +### DeviceUtils.GetLanguage + +Returns the language setting on the device. +``` + Args: + cache: Whether to use cached properties when available. +``` + + +### DeviceUtils.SetJavaAsserts + +Enables or disables Java asserts. +``` + Args: + enabled: A boolean indicating whether Java asserts should be enabled + or disabled. + timeout: timeout in seconds + retries: number of retries + + Returns: + True if the device-side property changed and a restart is required as a + result, False otherwise. + + Raises: + CommandTimeoutError on timeout. +``` + + +### DeviceUtils.GetCountry + +Returns the country setting on the device. +``` + Args: + cache: Whether to use cached properties when available. +``` + + +### DeviceUtils.GetProp + +Gets a property from the device. +``` + Args: + property_name: A string containing the name of the property to get from + the device. + cache: Whether to use cached properties when available. + timeout: timeout in seconds + retries: number of retries + + Returns: + The value of the device's |property_name| property. + + Raises: + CommandTimeoutError on timeout. +``` + + +### DeviceUtils.SetProp + +Sets a property on the device. +``` + Args: + property_name: A string containing the name of the property to set on + the device. + value: A string containing the value to set to the property on the + device. + check: A boolean indicating whether to check that the property was + successfully set on the device. + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandFailedError if check is true and the property was not correctly + set on the device (e.g. because it is not rooted). + CommandTimeoutError on timeout. +``` + + +### DeviceUtils.GetABI + +Gets the device main ABI. +``` + Args: + timeout: timeout in seconds + retries: number of retries + + Returns: + The device's main ABI name. + + Raises: + CommandTimeoutError on timeout. +``` + + +### DeviceUtils.GetPids + +Returns the PIDs of processes with the given name. +``` + Note that the |process_name| is often the package name. + + Args: + process_name: A string containing the process name to get the PIDs for. + timeout: timeout in seconds + retries: number of retries + + Returns: + A dict mapping process name to a list of PIDs for each process that + contained the provided |process_name|. + + Raises: + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. +``` + + +### DeviceUtils.GetEnforce + +Get the current mode of SELinux. +``` + Args: + timeout: timeout in seconds + retries: number of retries + + Returns: + True (enforcing), False (permissive), or None (disabled). + + Raises: + CommandFailedError on failure. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. +``` + + +### DeviceUtils.SetEnforce + +Modify the mode SELinux is running in. +``` + Args: + enabled: a boolean indicating whether to put SELinux in encorcing mode + (if True), or permissive mode (otherwise). + timeout: timeout in seconds + retries: number of retries + + Raises: + CommandFailedError on failure. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. +``` + + +### DeviceUtils.TakeScreenshot + +Takes a screenshot of the device. +``` + Args: + host_path: A string containing the path on the host to save the + screenshot to. If None, a file name in the current + directory will be generated. + timeout: timeout in seconds + retries: number of retries + + Returns: + The name of the file on the host to which the screenshot was saved. + + Raises: + CommandFailedError on failure. + CommandTimeoutError on timeout. + DeviceUnreachableError on missing device. +``` + + +### DeviceUtils.GetMemoryUsageForPid + +Gets the memory usage for the given PID. +``` + Args: + pid: PID of the process. + timeout: timeout in seconds + retries: number of retries + + Returns: + A dict containing memory usage statistics for the PID. May include: + Size, Rss, Pss, Shared_Clean, Shared_Dirty, Private_Clean, + Private_Dirty, VmHWM + + Raises: + CommandTimeoutError on timeout. +``` + + +### DeviceUtils.DismissCrashDialogIfNeeded + +Dismiss the error/ANR dialog if present. +``` + Returns: Name of the crashed package if a dialog is focused, + None otherwise. +``` + + +### DeviceUtils.GetLogcatMonitor + +Returns a new LogcatMonitor associated with this device. +``` + Parameters passed to this function are passed directly to + |logcat_monitor.LogcatMonitor| and are documented there. +``` + + +### DeviceUtils.GetClientCache + +Returns client cache. +### DeviceUtils.LoadCacheData + +Initializes the cache from data created using DumpCacheData. +``` + The cache is used only if its token matches the one found on the device. + This prevents a stale cache from being used (which can happen when sharing + devices). + + Args: + data: A previously serialized cache (string). + timeout: timeout in seconds + retries: number of retries + + Returns: + Whether the cache was loaded. +``` + + +### DeviceUtils.DumpCacheData + +Dumps the current cache state to a string. +``` + Args: + timeout: timeout in seconds + retries: number of retries + + Returns: + A serialized cache as a string. +``` + + +### DeviceUtils.RestartAdbd + +### DeviceUtils.GrantPermissions + +### DeviceUtils.IsScreenOn + +Determines if screen is on. +``` + Dumpsys input_method exposes screen on/off state. Below is an explination of + the states. + + Pre-L: + On: mScreenOn=true + Off: mScreenOn=false + L+: + On: mInteractive=true + Off: mInteractive=false + + Returns: + True if screen is on, false if it is off. + + Raises: + device_errors.CommandFailedError: If screen state cannot be found. +``` + + +### DeviceUtils.SetScreen + +Turns screen on and off. +``` + Args: + on: bool to decide state to switch to. True = on False = off. +``` + + +### GetAVDs + +Returns a list of Android Virtual Devices. +``` + Returns: + A list containing the configured AVDs. +``` + + +### RestartServer + +Restarts the adb server. +``` + Raises: + CommandFailedError if we fail to kill or restart the server. +``` + + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/docs/markdown.md b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/docs/markdown.md new file mode 100644 index 0000000..957dba7 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/docs/markdown.md @@ -0,0 +1,139 @@ +# [devil.utils.markdown](https://github.com/catapult-project/catapult/blob/master/devil/devil/utils/markdown.py) + +*This page was autogenerated by `devil/utils/markdown.py --module-link https://github.com/catapult-project/catapult/blob/master/devil/devil/utils/markdown.py`* + +## MarkdownHelpAction + +### MarkdownHelpAction.\_\_init\_\_ + +### MarkdownHelpAction.\_\_call\_\_ + +## MarkdownHelpFormatter + +A really bare-bones argparse help formatter that generates valid markdown. +``` + This will generate something like: + + usage + + # **section heading**: + + ## **--argument-one** + + \`\`\` + argument-one help text + \`\`\` + +``` + + +### MarkdownHelpFormatter.format\_help + +### MarkdownHelpFormatter.start\_section + +### md\_bold + +Returns markdown-formatted bold text. +### md\_code + +Returns a markdown-formatted code block in the given language. +### md\_escape + +Escapes \* and \_. +### md\_heading + +Returns markdown-formatted heading. +### md\_inline\_code + +Returns markdown-formatted inline code. +### md\_italic + +Returns markdown-formatted italic text. +### md\_link + +returns a markdown-formatted link. +### add\_md\_help\_argument + +Adds --md-help to the given argparse.ArgumentParser. +``` + Running a script with --md-help will print the help text for that script + as valid markdown. + + Args: + parser: The ArgumentParser to which --md-help should be added. +``` + + +### load\_module\_from\_path + +Load a module given only the path name. +``` + Also loads package modules as necessary. + + Args: + module_path: An absolute path to a python module. + Returns: + The module object for the given path. +``` + + +### md\_module + +Write markdown documentation for a class. +``` + Documents public classes and functions. + + Args: + class_obj: a types.TypeType object for the class that should be + documented. + Returns: + A list of markdown-formatted lines. +``` + + +### md\_class + +Write markdown documentation for a class. +``` + Documents public methods. Does not currently document subclasses. + + Args: + class_obj: a types.TypeType object for the class that should be + documented. + Returns: + A list of markdown-formatted lines. +``` + + +### md\_docstring + +Write a markdown-formatted docstring. +``` + Returns: + A list of markdown-formatted lines. +``` + + +### md\_function + +Write markdown documentation for a function. +``` + Args: + func_obj: a types.FunctionType object for the function that should be + documented. + Returns: + A list of markdown-formatted lines. +``` + + +### main + +Write markdown documentation for the module at the provided path. +``` + Args: + raw_args: the raw command-line args. Usually sys.argv[1:]. + Returns: + An integer exit code. 0 for success, non-zero for failure. +``` + + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/docs/persistent_device_list.md b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/docs/persistent_device_list.md new file mode 100644 index 0000000..d08d9a9 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/docs/persistent_device_list.md @@ -0,0 +1,41 @@ +<!-- Copyright 2016 The Chromium Authors. All rights reserved. + Use of this source code is governed by a BSD-style license that can be + found in the LICENSE file. +--> + +# Devil: Persistent Device List + +## What is it? + +A persistent device list that stores all expected devices between builds. It +is used by the perf test runner in order to properly shard tests by device +affinity. This is important because the same performance test can yield +meaningfully different results when run on different devices. + +## Bots + +The list is usually located at one of these locations: + + - `/b/build/site_config/.known_devices`. + - `~/.android`. + +Look at recipes listed below in order to find more up to date location. + +## Local Runs + +The persistent device list is unnecessary for local runs. It is only used on the +bots that upload data to the perf dashboard. + +## Where it is used + +The persistent device list is used in performance test recipes via +[api.chromium\_tests.steps.DynamicPerfTests](https://cs.chromium.org/chromium/build/scripts/slave/recipe_modules/chromium_tests/steps.py?q=DynamicPerfTests). +For example, the [android/perf](https://cs.chromium.org/chromium/build/scripts/slave/recipes/android/perf.py) recipe uses it like this: + +```python +dynamic_perf_tests = api.chromium_tests.steps.DynamicPerfTests( + builder['perf_id'], 'android', None, + known_devices_file=builder.get('known_devices_file', None)) +dynamic_perf_tests.run(api, None) +``` + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/devil/pylintrc b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/pylintrc new file mode 100644 index 0000000..7e024a2 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/devil/pylintrc @@ -0,0 +1,68 @@ +[MESSAGES CONTROL] + +# Disable the message, report, category or checker with the given id(s). +# TODO: Shrink this list to as small as possible. +disable= + design, + similarities, + + bad-continuation, + fixme, + import-error, + invalid-name, + locally-disabled, + locally-enabled, + missing-docstring, + star-args, + + +[REPORTS] + +# Don't write out full reports, just messages. +reports=no + + +[BASIC] + +# Regular expression which should only match correct function names. +function-rgx=^(?:(?P<exempt>setUp|tearDown|setUpModule|tearDownModule)|(?P<camel_case>_?[A-Z][a-zA-Z0-9]*))$ + +# Regular expression which should only match correct method names. +method-rgx=^(?:(?P<exempt>_[a-z0-9_]+__|get|post|runTest|setUp|tearDown|setUpTestCase|tearDownTestCase|setupSelf|tearDownClass|setUpClass)|(?P<camel_case>(_{0,2}|test|assert)[A-Z][a-zA-Z0-9_]*))$ + +# Regular expression which should only match correct argument names. +argument-rgx=^[a-z][a-z0-9_]*$ + +# Regular expression which should only match correct variable names. +variable-rgx=^[a-z][a-z0-9_]*$ + +# Good variable names which should always be accepted, separated by a comma. +good-names=main,_ + +# List of builtins function names that should not be used, separated by a comma. +bad-functions=apply,input,reduce + + +[VARIABLES] + +# Tells wether we should check for unused import in __init__ files. +init-import=no + +# A regular expression matching names used for dummy variables (i.e. not used). +dummy-variables-rgx=^_.*$|dummy + + +[TYPECHECK] + +# Tells wether missing members accessed in mixin class should be ignored. A +# mixin class is detected if its name ends with "mixin" (case insensitive). +ignore-mixin-members=yes + + +[FORMAT] + +# Maximum number of lines in a module. +max-module-lines=10000 + +# We use two spaces for indents, instead of the usual four spaces or tab. +indent-string=' ' diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/PRESUBMIT.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/PRESUBMIT.py new file mode 100644 index 0000000..1234a8d --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/PRESUBMIT.py @@ -0,0 +1,36 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + + +def CheckChangeOnUpload(input_api, output_api): + return _CommonChecks(input_api, output_api) + + +def CheckChangeOnCommit(input_api, output_api): + return _CommonChecks(input_api, output_api) + + +def _CommonChecks(input_api, output_api): + results = [] + results += input_api.RunTests(input_api.canned_checks.GetPylint( + input_api, output_api, extra_paths_list=_GetPathsToPrepend(input_api), + pylintrc='pylintrc')) + return results + + +def _GetPathsToPrepend(input_api): + project_dir = input_api.PresubmitLocalPath() + catapult_dir = input_api.os_path.join(project_dir, '..') + return [ + project_dir, + + input_api.os_path.join(catapult_dir, 'common', 'battor'), + input_api.os_path.join(catapult_dir, 'common', 'py_trace_event'), + input_api.os_path.join(catapult_dir, 'common', 'py_utils'), + input_api.os_path.join(catapult_dir, 'devil'), + input_api.os_path.join(catapult_dir, 'telemetry'), + input_api.os_path.join(catapult_dir, 'third_party', 'mock'), + input_api.os_path.join(catapult_dir, 'tracing'), + + ] diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/README.md b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/README.md new file mode 100644 index 0000000..3ca9249 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/README.md @@ -0,0 +1,10 @@ +<!-- Copyright 2015 The Chromium Authors. All rights reserved. + Use of this source code is governed by a BSD-style license that can be + found in the LICENSE file. +--> +Systrace +======== + +Systrace provides command-line tools to analyze the performance of your +application. It currently includes +[Android Systrace](http://developer.android.com/tools/help/systrace.html). diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/README.md b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/README.md new file mode 100644 index 0000000..b5fd651 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/README.md @@ -0,0 +1,29 @@ +<!-- Copyright 2017 The Chromium Authors. All rights reserved. + Use of this source code is governed by a BSD-style license that can be + found in the LICENSE file. +--> +atrace_helper is an optional binary which can be pushed onto the device running +systrace in order to enrich the traces with further details (memory, I/O, etc). + +Which problem is it solving? +--------------------------- +Some nice-to-have details are not present in the systrace, specifically: + - Memory snapshots of running processes (PSS/RSS). + - Periodic snapshotting of processes and thread names. + - File paths for filesystem events (today they report only inode numbers). + +How is it solving it? +--------------------- +atrace_helper is a small userspace binary which is meant to be pushed on the +device and run together with atrace by a dedicated tracing agent. When stopped, +the helper produces a JSON file which contains all the relevant details +(see --help). The JSON file is consumed by the TraceViewer importers and the +extra details are merged into the final model. + +Build instructions +------------------ +Building the binary requires the Android NDK to be installed. See +[Android NDK page](https://developer.android.com/ndk). +Once installed the binary can be just built as follows: +`$(NDK_HOME)/ndk-build` +The binary will be built in `libs/armeabi-v7a/` diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/Application.mk b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/Application.mk new file mode 100644 index 0000000..cc2eb67 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/Application.mk @@ -0,0 +1,7 @@ +# Copyright 2017 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +APP_ABI := armeabi-v7a +APP_PLATFORM := android-21 +APP_STL := c++_static diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/file_utils.cc b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/file_utils.cc new file mode 100644 index 0000000..9ebec2d --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/file_utils.cc @@ -0,0 +1,96 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "file_utils.h" + +#include <ctype.h> +#include <errno.h> +#include <fcntl.h> +#include <stdio.h> +#include <string.h> +#include <sys/stat.h> +#include <sys/types.h> + +namespace { + +bool IsNumeric(const char* str) { + if (!str[0]) + return false; + for (const char* c = str; *c; c++) { + if (!isdigit(*c)) + return false; + } + return true; +} + +} // namespace + +namespace file_utils { + +void ForEachPidInProcPath(const char* proc_path, + std::function<void(int)> predicate) { + DIR* root_dir = opendir(proc_path); + ScopedDir autoclose(root_dir); + struct dirent* child_dir; + while ((child_dir = readdir(root_dir))) { + if (child_dir->d_type != DT_DIR || !IsNumeric(child_dir->d_name)) + continue; + predicate(atoi(child_dir->d_name)); + } +} + +ssize_t ReadFile(const char* path, char* buf, size_t length) { + buf[0] = '\0'; + int fd = open(path, O_RDONLY); + if (fd < 0 && errno == ENOENT) + return -1; + ScopedFD autoclose(fd); + size_t tot_read = 0; + do { + ssize_t rsize = read(fd, buf + tot_read, length - tot_read); + if (rsize == 0) + break; + if (rsize == -1 && errno == EINTR) + continue; + else if (rsize < 0) + return -1; + tot_read += static_cast<size_t>(rsize); + } while (tot_read < length); + buf[tot_read < length ? tot_read : length - 1] = '\0'; + return tot_read; +} + +bool ReadFileTrimmed(const char* path, char* buf, size_t length) { + ssize_t rsize = ReadFile(path, buf, length); + if (rsize < 0) + return false; + for (ssize_t i = 0; i < rsize; i++) { + const char c = buf[i]; + if (c == '\0' || c == '\r' || c == '\n') { + buf[i] = '\0'; + break; + } + buf[i] = isprint(c) ? c : '?'; + } + return true; +} + +ssize_t ReadProcFile(int pid, const char* proc_file, char* buf, size_t length) { + char proc_path[128]; + snprintf(proc_path, sizeof(proc_path), "/proc/%d/%s", pid, proc_file); + return ReadFile(proc_path, buf, length); +} + +// Reads a single-line proc file, stripping out any \0, \r, \n and replacing +// non-printable charcters with '?'. +bool ReadProcFileTrimmed(int pid, + const char* proc_file, + char* buf, + size_t length) { + char proc_path[128]; + snprintf(proc_path, sizeof(proc_path), "/proc/%d/%s", pid, proc_file); + return ReadFileTrimmed(proc_path, buf, length); +} + +} // namespace file_utils diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/file_utils.h b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/file_utils.h new file mode 100644 index 0000000..c6a5527 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/file_utils.h @@ -0,0 +1,53 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef FILE_UTILS_H_ +#define FILE_UTILS_H_ + +#include <dirent.h> +#include <sys/types.h> +#include <unistd.h> + +#include <functional> +#include <map> +#include <memory> + +#include "logging.h" + +namespace file_utils { + +// RAII classes for auto-releasing fd/dirs. +template <typename RESOURCE_TYPE, int (*CLOSE_FN)(RESOURCE_TYPE)> +struct ScopedResource { + explicit ScopedResource(RESOURCE_TYPE r) : r_(r) { CHECK(r); } + ~ScopedResource() { CLOSE_FN(r_); } + RESOURCE_TYPE r_; +}; + +using ScopedFD = ScopedResource<int, close>; +using ScopedDir = ScopedResource<DIR*, closedir>; + +// Invokes predicate(pid) for each folder in |proc_path|/[0-9]+ which has +// a numeric name (typically pids and tids). +void ForEachPidInProcPath(const char* proc_path, + std::function<void(int)> predicate); + +// Reads the contents of |path| fully into |buf| up to |length| chars. +// |buf| is guaranteed to be null terminated. +ssize_t ReadFile(const char* path, char* buf, size_t length); + +// Reads a single-line file, stripping out any \0, \r, \n and replacing +// non-printable charcters with '?'. |buf| is guaranteed to be null terminated. +bool ReadFileTrimmed(int pid, const char* proc_file, char* buf, size_t length); + +// Convenience wrappers for /proc/|pid|/|proc_file| paths. +ssize_t ReadProcFile(int pid, const char* proc_file, char* buf, size_t length); +bool ReadProcFileTrimmed(int pid, + const char* proc_file, + char* buf, + size_t length); + +} // namespace file_utils + +#endif // FILE_UTILS_H_ diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/logging.h b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/logging.h new file mode 100644 index 0000000..7e130eb --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/logging.h @@ -0,0 +1,28 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef LOGGING_H_ +#define LOGGING_H_ + +#include <android/log.h> +#include <stdio.h> +#include <stdlib.h> + +#define CHECK_ARGS(COND, ERR) \ + "FAILED CHECK(%s) @ %s:%d (errno: %s)\n", #COND, __FILE__, __LINE__, \ + strerror(ERR) + +#define CHECK(x) \ + do { \ + if (!(x)) { \ + const int e = errno; \ + __android_log_print(ANDROID_LOG_FATAL, "atrace_helper", \ + CHECK_ARGS(x, e)); \ + fprintf(stderr, "\n" CHECK_ARGS(x, e)); \ + fflush(stderr); \ + abort(); \ + } \ + } while (0) + +#endif // LOGGING_H_ diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/main.cc b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/main.cc new file mode 100644 index 0000000..e6f1fe1 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/main.cc @@ -0,0 +1,198 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include <dirent.h> +#include <signal.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/time.h> +#include <sys/timerfd.h> +#include <sys/types.h> + +#include <limits> +#include <memory> + +#include "file_utils.h" +#include "logging.h" +#include "process_info.h" + +namespace { + +using ProcessMap = std::map<int, std::unique_ptr<ProcessInfo>>; + +int g_timer; + +std::unique_ptr<ProcessMap> CollectStatsForAllProcs(bool full_mem_stats) { + std::unique_ptr<ProcessMap> procs(new ProcessMap()); + file_utils::ForEachPidInProcPath("/proc", [&procs, full_mem_stats](int pid) { + if (!ProcessInfo::IsProcess(pid)) + return; + CHECK(procs->count(pid) == 0); + std::unique_ptr<ProcessInfo> pinfo(new ProcessInfo(pid)); + if (!(pinfo->ReadProcessName() && pinfo->ReadThreadNames() && + pinfo->ReadOOMStats() && pinfo->ReadPageFaultsAndCPUTimeStats())) + return; + + if (full_mem_stats) { + if (!pinfo->memory()->ReadFullStats()) + return; + } else { + if (!pinfo->memory()->ReadLightStats()) + return; + } + (*procs)[pid] = std::move(pinfo); + }); + return procs; +} + +void SerializeSnapshot(const ProcessMap& procs, + FILE* stream, + bool full_mem_stats) { + struct timespec ts = {}; + CHECK(clock_gettime(CLOCK_MONOTONIC_COARSE, &ts) == 0); + fprintf(stream, "{\n"); + fprintf(stream, " \"ts\": %lu,\n", + (ts.tv_sec * 1000 + ts.tv_nsec / 1000000ul)); + fprintf(stream, " \"processes\": [\n"); + for (auto it = procs.begin(); it != procs.end();) { + int pid = it->first; + const ProcessInfo& pinfo = *it->second; + fprintf(stream, " {\"pid\": %d, \"name\": \"%s\", \"exe\": \"%s\"", pid, + pinfo.name(), pinfo.exe()); + fprintf(stream, ", \"threads\": ["); + for (auto t = pinfo.threads()->begin(); t != pinfo.threads()->end();) { + fprintf(stream, "{\"tid\": %d, \"name\":\"%s\"", t->first, + t->second->name); + t++; + fprintf(stream, t != pinfo.threads()->end() ? "}, " : "}"); + } + fprintf(stream, "]"); + + const ProcessMemoryStats* mem_info = pinfo.memory(); + fprintf(stream, ", \"mem\": {\"vm\": %llu, \"rss\": %llu", + mem_info->virt_kb(), mem_info->rss_kb()); + if (full_mem_stats) { + fprintf(stream, + ", \"pss\": %llu, \"swp\": %llu, \"pc\": %llu, \"pd\": %llu, " + "\"sc\": %llu, \"sd\": %llu", + mem_info->rss_kb(), mem_info->swapped_kb(), + mem_info->private_clean_kb(), mem_info->private_dirty_kb(), + mem_info->shared_clean_kb(), mem_info->shared_dirty_kb()); + } + fprintf(stream, "}"); + + fprintf(stream, + ", \"oom\": {\"adj\": %d, \"score_adj\": %d, \"score\": %d}", + pinfo.oom_adj(), pinfo.oom_score_adj(), pinfo.oom_score()); + fprintf(stream, + ", \"stat\": {\"minflt\": %lu, \"majflt\": %lu, " + "\"utime\": %lu, \"stime\": %lu }", + pinfo.minflt(), pinfo.majflt(), pinfo.utime(), pinfo.stime()); + fprintf(stream, "}"); + it++; + fprintf(stream, it != procs.end() ? ",\n" : "\n"); + } + fprintf(stream, " ]\n"); + fprintf(stream, "}\n"); +} + +} // namespace + +int main(int argc, char** argv) { + bool background = false; + int dump_interval_ms = 5000; + char out_file[PATH_MAX] = {}; + bool dump_to_file = false; + bool full_mem_stats = false; + int count = std::numeric_limits<int>::max(); + int opt; + while ((opt = getopt(argc, argv, "bmt:o:c:")) != -1) { + switch (opt) { + case 'b': + background = true; + break; + case 'm': + full_mem_stats = true; + break; + case 't': + dump_interval_ms = atoi(optarg); + CHECK(dump_interval_ms > 0); + break; + case 'c': + count = atoi(optarg); + CHECK(count > 0); + break; + case 'o': + strncpy(out_file, optarg, sizeof(out_file)); + dump_to_file = true; + break; + default: + fprintf(stderr, + "Usage: %s [-b] [-t dump_interval_ms] [-c dumps_count] " + "[-o out.json]\n", + argv[0]); + exit(EXIT_FAILURE); + } + } + + if (geteuid()) { + fprintf(stderr, "Must run as root\n"); + exit(EXIT_FAILURE); + } + + FILE* out_stream = stdout; + char tmp_file[PATH_MAX]; + if (dump_to_file) { + unlink(out_file); + sprintf(tmp_file, "%s.tmp", out_file); + out_stream = fopen(tmp_file, "w"); + CHECK(out_stream); + } + + if (background) { + if (!dump_to_file) { + fprintf(stderr, "-b requires -o for output dump path\n"); + exit(EXIT_FAILURE); + } + printf("Continuing in background. kill -TERM to terminate the daemon.\n"); + CHECK(daemon(0 /* nochdir */, 0 /* noclose */) == 0); + } + + g_timer = timerfd_create(CLOCK_MONOTONIC, 0); + CHECK(g_timer >= 0); + struct itimerspec ts = {}; + ts.it_value.tv_nsec = 1; // Get the first snapshot immediately. + ts.it_interval.tv_nsec = (dump_interval_ms % 1000) * 1000000ul; + ts.it_interval.tv_sec = dump_interval_ms / 1000; + CHECK(timerfd_settime(g_timer, 0, &ts, nullptr) == 0); + + // Closing the g_timer fd on SIGINT/SIGTERM will cause the read() below to + // unblock and fail with EBADF, hence allowing the loop below to finalize + // the file and exit. + auto on_exit = [](int) { close(g_timer); }; + signal(SIGINT, on_exit); + signal(SIGTERM, on_exit); + + fprintf(out_stream, "{\"snapshots\": [\n"); + bool is_first_snapshot = true; + for (; count > 0; count--) { + uint64_t missed = 0; + int res = read(g_timer, &missed, sizeof(missed)); + if (res < 0 && errno == EBADF) + break; // Received SIGINT/SIGTERM signal. + CHECK(res > 0); + if (!is_first_snapshot) + fprintf(out_stream, ","); + is_first_snapshot = false; + + std::unique_ptr<ProcessMap> procs = CollectStatsForAllProcs(full_mem_stats); + SerializeSnapshot(*procs, out_stream, full_mem_stats); + fflush(out_stream); + } + fprintf(out_stream, "]}\n"); + fclose(out_stream); + if (dump_to_file) + rename(tmp_file, out_file); +} diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/process_info.cc b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/process_info.cc new file mode 100644 index 0000000..172217b --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/process_info.cc @@ -0,0 +1,102 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "process_info.h" + +#include <ctype.h> +#include <dirent.h> +#include <stdio.h> +#include <stdlib.h> +#include <sys/types.h> + +#include "file_utils.h" +#include "logging.h" + +ProcessInfo::ProcessInfo(int pid) : memory_(pid), pid_(pid) {} + +bool ProcessInfo::IsProcess(int pid) { + char buf[256]; + ssize_t rsize = file_utils::ReadProcFile(pid, "status", buf, sizeof(buf)); + if (rsize <= 0) + return false; + const char kTgid[] = "\nTgid:"; + const char* tgid_line = strstr(buf, kTgid); + CHECK(tgid_line); + int tgid = 0; + if (sscanf(tgid_line + strlen(kTgid), "%d", &tgid) != 1) + CHECK(false); + return tgid == pid; +} + +bool ProcessInfo::ReadProcessName() { + if (!file_utils::ReadProcFileTrimmed(pid_, "cmdline", name_, sizeof(name_))) + return false; + + // Fallback on "comm" for kernel threads. + if (strlen(name_) == 0) { + if (!file_utils::ReadProcFileTrimmed(pid_, "comm", name_, sizeof(name_))) + return false; + } + + // Get also the exe path, to distinguish system vs java apps and bitness. + char exe_path[64]; + sprintf(exe_path, "/proc/%d/exe", pid_); + exe_[0] = '\0'; + ssize_t res = readlink(exe_path, exe_, sizeof(exe_) - 1); + if (res >= 0) + exe_[res] = '\0'; + + return true; +} + +bool ProcessInfo::ReadThreadNames() { + char tasks_path[64]; + sprintf(tasks_path, "/proc/%d/task", pid_); + CHECK(threads_.empty()); + ThreadInfoMap* threads = &threads_; + const int pid = pid_; + file_utils::ForEachPidInProcPath(tasks_path, [pid, threads](int tid) { + char comm[64]; + std::unique_ptr<ThreadInfo> thread_info(new ThreadInfo()); + sprintf(comm, "task/%d/comm", tid); + if (!file_utils::ReadProcFileTrimmed(pid, comm, thread_info->name, + sizeof(thread_info->name))) { + return; + } + (*threads)[tid] = std::move(thread_info); + }); + return true; +} + +bool ProcessInfo::ReadOOMStats() { + char buf[512]; + if (file_utils::ReadProcFileTrimmed(pid_, "oom_adj", buf, sizeof(buf))) + oom_adj_ = atoi(buf); + else + return false; + + if (file_utils::ReadProcFileTrimmed(pid_, "oom_score", buf, sizeof(buf))) + oom_score_ = atoi(buf); + else + return false; + + if (file_utils::ReadProcFileTrimmed(pid_, "oom_score_adj", buf, sizeof(buf))) + oom_score_adj_ = atoi(buf); + else + return false; + + return true; +} + +bool ProcessInfo::ReadPageFaultsAndCPUTimeStats() { + char buf[512]; + if (!file_utils::ReadProcFileTrimmed(pid_, "stat", buf, sizeof(buf))) + return false; + int ret = sscanf(buf, + "%*d (%*[^)]) %*c %*d %*d %*d %*d %*d %*u %lu %*lu " + "%lu %*lu %lu %lu %*ld %*ld %*ld %*ld %*ld %*ld %llu", + &minflt_, &majflt_, &utime_, &stime_, &start_time_); + CHECK(ret == 5); + return true; +} diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/process_info.h b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/process_info.h new file mode 100644 index 0000000..ff05b33 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/process_info.h @@ -0,0 +1,71 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef PROCESS_INFO_H_ +#define PROCESS_INFO_H_ + +#include <map> +#include <memory> + +#include "process_memory_stats.h" + +// Reads various process stats and details from /proc/pid/. +class ProcessInfo { + public: + struct ThreadInfo { + char name[128] = {}; + }; + using ThreadInfoMap = std::map<int, std::unique_ptr<ThreadInfo>>; + + // Returns true if |pid| is a process (|pid| == TGID), false if it's just a + // thread of another process, or if |pid| doesn't exist at all. + static bool IsProcess(int pid); + + explicit ProcessInfo(int pid); + + bool ReadProcessName(); + bool ReadThreadNames(); + bool ReadOOMStats(); + bool ReadPageFaultsAndCPUTimeStats(); + + ProcessMemoryStats* memory() { return &memory_; } + const ProcessMemoryStats* memory() const { return &memory_; } + const ThreadInfoMap* threads() const { return &threads_; } + const char* name() const { return name_; } + const char* exe() const { return exe_; } + + int oom_adj() const { return oom_adj_; } + int oom_score_adj() const { return oom_score_adj_; } + int oom_score() const { return oom_score_; } + + unsigned long minflt() const { return minflt_; } + unsigned long majflt() const { return majflt_; } + unsigned long utime() const { return utime_; } + unsigned long stime() const { return stime_; } + unsigned long long start_time() const { return start_time_; } + + private: + ProcessInfo(const ProcessInfo&) = delete; + void operator=(const ProcessInfo&) = delete; + + ProcessMemoryStats memory_; + + ThreadInfoMap threads_; + char name_[128] = {}; + char exe_[128] = {}; + + int oom_adj_ = 0; + int oom_score_adj_ = 0; + int oom_score_ = 0; + + unsigned long minflt_ = 0; + unsigned long majflt_ = 0; + unsigned long utime_ = 0; // CPU time in user mode. + unsigned long stime_ = 0; // CPU time in kernel mode. + unsigned long long start_time_ = 0; // CPU time in kernel mode. + + const int pid_; +}; + +#endif // PROCESS_INFO_H_ diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/process_memory_stats.cc b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/process_memory_stats.cc new file mode 100644 index 0000000..516abea --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/process_memory_stats.cc @@ -0,0 +1,132 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "process_memory_stats.h" + +#include <stdio.h> +#include <stdlib.h> + +#include <memory> + +#include "file_utils.h" +#include "logging.h" + +namespace { +const int kKbPerPage = 4; + +// Takes a C string buffer and chunks it into lines without creating any +// copies. It modifies the original buffer, by replacing \n with \0. +class LineReader { + public: + LineReader(char* buf, size_t size) : ptr_(buf), end_(buf + size) {} + + const char* NextLine() { + if (ptr_ >= end_) + return nullptr; + const char* cur = ptr_; + char* next = strchr(ptr_, '\n'); + if (next) { + *next = '\0'; + ptr_ = next + 1; + } else { + ptr_ = end_; + } + return cur; + } + + private: + char* ptr_; + char* end_; +}; + +bool ReadSmapsMetric(const char* line, const char* metric, uint64_t* res) { + if (strncmp(line, metric, strlen(metric))) + return false; + line = strchr(line, ':'); + if (!line) + return false; + *res = strtoull(line + 1, nullptr, 10); + return true; +} + +} // namespace + +ProcessMemoryStats::ProcessMemoryStats(int pid) : pid_(pid) {} + +bool ProcessMemoryStats::ReadLightStats() { + char buf[64]; + if (file_utils::ReadProcFile(pid_, "statm", buf, sizeof(buf)) <= 0) + return false; + uint32_t vm_size_pages; + uint32_t rss_pages; + int res = sscanf(buf, "%u %u", &vm_size_pages, &rss_pages); + CHECK(res == 2); + rss_kb_ = rss_pages * kKbPerPage; + virt_kb_ = vm_size_pages * kKbPerPage; + return true; +} + +bool ProcessMemoryStats::ReadFullStats() { + const size_t kBufSize = 32u * 1024 * 1024; + std::unique_ptr<char[]> buf(new char[kBufSize]); + ssize_t rsize = file_utils::ReadProcFile(pid_, "smaps", &buf[0], kBufSize); + if (rsize <= 0) + return false; + MmapInfo* last_mmap_entry = nullptr; + std::unique_ptr<MmapInfo> new_mmap(new MmapInfo()); + CHECK(mmaps_.empty()); + CHECK(rss_kb_ == 0); + + // Iterate over all lines in /proc/PID/smaps. + LineReader rd(&buf[0], rsize); + for (const char* line = rd.NextLine(); line; line = rd.NextLine()) { + // Check if the current line is the beginning of a new mmaps entry, e.g.: + // be7f7000-be818000 rw-p 00000000 00:00 0 [stack] + // Note that the mapped file name ([stack]) is optional and won't be + // present + // on anonymous memory maps (hence res >= 3 below). + int res = sscanf( + line, "%llx-%llx %4s %*llx %*[:0-9a-f] %*[0-9a-f]%*[ \t]%128[^\n]", + &new_mmap->start_addr, &new_mmap->end_addr, new_mmap->prot_flags, + new_mmap->mapped_file); + if (res >= 3) { + last_mmap_entry = new_mmap.get(); + CHECK(new_mmap->end_addr >= new_mmap->start_addr); + new_mmap->virt_kb = (new_mmap->end_addr - new_mmap->start_addr) / 1024; + if (res == 3) + new_mmap->mapped_file[0] = '\0'; + virt_kb_ += new_mmap->virt_kb; + mmaps_[new_mmap->start_addr] = std::move(new_mmap); + new_mmap.reset(new MmapInfo()); + } else { + // The current line is a metrics line within a mmap entry, e.g.: + // Size: 4 kB + uint64_t size = 0; + CHECK(last_mmap_entry); + if (ReadSmapsMetric(line, "Rss:", &size)) { + last_mmap_entry->rss_kb = size; + rss_kb_ += size; + } else if (ReadSmapsMetric(line, "Pss:", &size)) { + last_mmap_entry->pss_kb = size; + pss_kb_ += size; + } else if (ReadSmapsMetric(line, "Swap:", &size)) { + last_mmap_entry->swapped_kb = size; + swapped_kb_ += size; + } else if (ReadSmapsMetric(line, "Shared_Clean:", &size)) { + last_mmap_entry->shared_clean_kb = size; + shared_clean_kb_ += size; + } else if (ReadSmapsMetric(line, "Shared_Dirty:", &size)) { + last_mmap_entry->shared_dirty_kb = size; + shared_dirty_kb_ += size; + } else if (ReadSmapsMetric(line, "Private_Clean:", &size)) { + last_mmap_entry->private_clean_kb = size; + private_clean_kb_ += size; + } else if (ReadSmapsMetric(line, "Private_Dirty:", &size)) { + last_mmap_entry->private_dirty_kb = size; + private_dirty_kb_ += size; + } + } + } + return true; +} diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/process_memory_stats.h b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/process_memory_stats.h new file mode 100644 index 0000000..180c41c --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/atrace_helper/jni/process_memory_stats.h @@ -0,0 +1,68 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef PROCESS_MEMORY_STATS_H_ +#define PROCESS_MEMORY_STATS_H_ + +#include <stdint.h> + +#include <map> +#include <memory> + +// Reads process memory stats from /proc/pid/{statm,smaps}. +class ProcessMemoryStats { + public: + struct MmapInfo { + char mapped_file[128] = {}; + char prot_flags[5] = {}; + uint64_t start_addr = 0; + uint64_t end_addr = 0; + uint64_t virt_kb = 0; + uint64_t pss_kb = 0; // Proportional Set Size. + uint64_t rss_kb = 0; // Resident Set Size. + uint64_t private_clean_kb = 0; + uint64_t private_dirty_kb = 0; + uint64_t shared_clean_kb = 0; + uint64_t shared_dirty_kb = 0; + uint64_t swapped_kb = 0; + }; + + explicit ProcessMemoryStats(int pid); + + bool ReadLightStats(); + bool ReadFullStats(); + + // Available after ReadLightStats(). + uint64_t virt_kb() const { return virt_kb_; } + uint64_t rss_kb() const { return rss_kb_; } + + // Available after ReadFullStats(). + uint64_t private_clean_kb() const { return private_clean_kb_; } + uint64_t private_dirty_kb() const { return private_dirty_kb_; } + uint64_t shared_clean_kb() const { return shared_clean_kb_; } + uint64_t shared_dirty_kb() const { return shared_dirty_kb_; } + uint64_t swapped_kb() const { return swapped_kb_; } + + private: + ProcessMemoryStats(const ProcessMemoryStats&) = delete; + void operator=(const ProcessMemoryStats&) = delete; + + const int pid_; + + // Light stats. + uint64_t virt_kb_ = 0; + uint64_t rss_kb_ = 0; + + // Full stats. + uint64_t pss_kb_ = 0; + uint64_t private_clean_kb_ = 0; + uint64_t private_dirty_kb_ = 0; + uint64_t shared_clean_kb_ = 0; + uint64_t shared_dirty_kb_ = 0; + uint64_t swapped_kb_ = 0; + + std::map<uintptr_t, std::unique_ptr<MmapInfo>> mmaps_; +}; + +#endif // PROCESS_MEMORY_STATS_H_ diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/__init__.py new file mode 100644 index 0000000..8257681 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/__init__.py @@ -0,0 +1,13 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import sys + + +_CATAPULT_DIR = os.path.join( + os.path.dirname(os.path.abspath(__file__)), '..', '..') +sys.path.append(os.path.join(_CATAPULT_DIR, 'devil')) +sys.path.append(os.path.join(_CATAPULT_DIR, 'systrace')) +sys.path.append(os.path.join(_CATAPULT_DIR, 'common', 'py_utils')) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/chrome_startup_tracing_agent.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/chrome_startup_tracing_agent.py new file mode 100644 index 0000000..a133a46 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/chrome_startup_tracing_agent.py @@ -0,0 +1,123 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import optparse +import os +import py_utils +import re + +from devil.android import flag_changer +from devil.android.perf import cache_control +from devil.android.sdk import intent + +from systrace import trace_result +from systrace import tracing_agents + + +class ChromeStartupTracingAgent(tracing_agents.TracingAgent): + def __init__(self, device, package_info, cold, url): + tracing_agents.TracingAgent.__init__(self) + self._device = device + self._package_info = package_info + self._cold = cold + self._logcat_monitor = self._device.GetLogcatMonitor() + self._url = url + self._trace_file = None + self._trace_finish_re = re.compile(r' Completed startup tracing to (.*)') + self._flag_changer = flag_changer.FlagChanger( + self._device, self._package_info.cmdline_file) + + def __repr__(self): + return 'Browser Startup Trace' + + def _SetupTracing(self): + # TODO(lizeb): Figure out how to clean up the command-line file when + # _TearDownTracing() is not executed in StopTracing(). + self._flag_changer.AddFlags(['--trace-startup']) + self._device.ForceStop(self._package_info.package) + if self._cold: + self._device.EnableRoot() + cache_control.CacheControl(self._device).DropRamCaches() + launch_intent = None + if self._url == '': + launch_intent = intent.Intent( + action='android.intent.action.MAIN', + package=self._package_info.package, + activity=self._package_info.activity) + else: + launch_intent = intent.Intent( + package=self._package_info.package, + activity=self._package_info.activity, + data=self._url, + extras={'create_new_tab': True}) + self._device.StartActivity(launch_intent, blocking=True) + + def _TearDownTracing(self): + self._flag_changer.Restore() + + @py_utils.Timeout(tracing_agents.START_STOP_TIMEOUT) + def StartAgentTracing(self, config, timeout=None): + self._SetupTracing() + self._logcat_monitor.Start() + return True + + @py_utils.Timeout(tracing_agents.START_STOP_TIMEOUT) + def StopAgentTracing(self, timeout=None): + try: + self._trace_file = self._logcat_monitor.WaitFor( + self._trace_finish_re).group(1) + finally: + self._TearDownTracing() + return True + + @py_utils.Timeout(tracing_agents.GET_RESULTS_TIMEOUT) + def GetResults(self, timeout=None): + with open(self._PullTrace(), 'r') as f: + trace_data = f.read() + return trace_result.TraceResult('traceEvents', trace_data) + + def _PullTrace(self): + trace_file = self._trace_file.replace('/storage/emulated/0/', '/sdcard/') + host_file = os.path.join(os.path.curdir, os.path.basename(trace_file)) + self._device.PullFile(trace_file, host_file) + return host_file + + def SupportsExplicitClockSync(self): + return False + + def RecordClockSyncMarker(self, sync_id, did_record_sync_marker_callback): + # pylint: disable=unused-argument + assert self.SupportsExplicitClockSync(), ('Clock sync marker cannot be ' + 'recorded since explicit clock sync is not supported.') + + +class ChromeStartupConfig(tracing_agents.TracingConfig): + def __init__(self, device, package_info, cold, url, chrome_categories): + tracing_agents.TracingConfig.__init__(self) + self.device = device + self.package_info = package_info + self.cold = cold + self.url = url + self.chrome_categories = chrome_categories + + +def try_create_agent(config): + return ChromeStartupTracingAgent(config.device, config.package_info, + config.cold, config.url) + +def add_options(parser): + options = optparse.OptionGroup(parser, 'Chrome startup tracing') + options.add_option('--url', help='URL to visit on startup. Default: ' + 'https://www.google.com. An empty URL launches Chrome ' + 'with a MAIN action instead of VIEW.', + default='https://www.google.com', metavar='URL') + options.add_option('--cold', help='Flush the OS page cache before starting ' + 'the browser. Note that this require a device with root ' + 'access.', default=False, action='store_true') + return options + +def get_config(options): + return ChromeStartupConfig(options.device, options.package_info, + options.cold, options.url, + options.chrome_categories) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/chrome_startup_tracing_agent_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/chrome_startup_tracing_agent_unittest.py new file mode 100644 index 0000000..289e52d --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/chrome_startup_tracing_agent_unittest.py @@ -0,0 +1,28 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import json + +from profile_chrome import chrome_startup_tracing_agent +from systrace import decorators +from systrace.tracing_agents import agents_unittest + + +class ChromeAgentTest(agents_unittest.BaseAgentTest): + # TODO(washingtonp): This test seems to fail on the version of Android + # currently on the Trybot servers (KTU84P), although it works on Android M. + # Either upgrade the version of Android on the Trybot servers or determine + # if there is a way to run this agent on Android KTU84P. + @decorators.Disabled + def testTracing(self): + agent = chrome_startup_tracing_agent.ChromeStartupTracingAgent( + self.device, self.package_info, False, 'https://www.google.com') + + try: + agent.StartAgentTracing(None) + finally: + agent.StopAgentTracing() + + result = agent.GetResults() + json.loads(result.raw_data) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/chrome_tracing_agent.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/chrome_tracing_agent.py new file mode 100644 index 0000000..1e8895b --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/chrome_tracing_agent.py @@ -0,0 +1,214 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import json +import optparse +import os +import py_utils +import re + +from devil.android import device_errors +from devil.android.sdk import intent +from systrace import trace_result +from systrace import tracing_agents + + +DEFAULT_CHROME_CATEGORIES = '_DEFAULT_CHROME_CATEGORIES' +_HEAP_PROFILE_MMAP_PROPERTY = 'heapprof.mmap' + + +class ChromeTracingAgent(tracing_agents.TracingAgent): + def __init__(self, device, package_info, ring_buffer, trace_memory=False): + tracing_agents.TracingAgent.__init__(self) + self._device = device + self._package_info = package_info + self._ring_buffer = ring_buffer + self._logcat_monitor = self._device.GetLogcatMonitor() + self._trace_file = None + self._trace_memory = trace_memory + self._is_tracing = False + self._trace_start_re = \ + re.compile(r'Logging performance trace to file') + self._trace_finish_re = \ + re.compile(r'Profiler finished[.] Results are in (.*)[.]') + self._categories = None + + def __repr__(self): + return 'chrome trace' + + @staticmethod + def GetCategories(device, package_info): + with device.GetLogcatMonitor() as logmon: + device.BroadcastIntent(intent.Intent( + action='%s.GPU_PROFILER_LIST_CATEGORIES' % package_info.package)) + try: + json_category_list = logmon.WaitFor( + re.compile(r'{"traceCategoriesList(.*)'), timeout=5).group(0) + except device_errors.CommandTimeoutError: + raise RuntimeError('Performance trace category list marker not found. ' + 'Is the correct version of the browser running?') + + record_categories = set() + disabled_by_default_categories = set() + json_data = json.loads(json_category_list)['traceCategoriesList'] + for item in json_data: + for category in item.split(','): + if category.startswith('disabled-by-default'): + disabled_by_default_categories.add(category) + else: + record_categories.add(category) + + return list(record_categories), list(disabled_by_default_categories) + + @py_utils.Timeout(tracing_agents.START_STOP_TIMEOUT) + def StartAgentTracing(self, config, timeout=None): + self._categories = _ComputeChromeCategories(config) + self._logcat_monitor.Start() + start_extras = {'categories': ','.join(self._categories)} + if self._ring_buffer: + start_extras['continuous'] = None + self._device.BroadcastIntent(intent.Intent( + action='%s.GPU_PROFILER_START' % self._package_info.package, + extras=start_extras)) + + if self._trace_memory: + self._device.EnableRoot() + self._device.SetProp(_HEAP_PROFILE_MMAP_PROPERTY, 1) + + # Chrome logs two different messages related to tracing: + # + # 1. "Logging performance trace to file" + # 2. "Profiler finished. Results are in [...]" + # + # The first one is printed when tracing starts and the second one indicates + # that the trace file is ready to be pulled. + try: + self._logcat_monitor.WaitFor(self._trace_start_re, timeout=5) + self._is_tracing = True + except device_errors.CommandTimeoutError: + raise RuntimeError( + 'Trace start marker not found. Possible causes: 1) Is the correct ' + 'version of the browser running? 2) Is the browser already launched?') + return True + + @py_utils.Timeout(tracing_agents.START_STOP_TIMEOUT) + def StopAgentTracing(self, timeout=None): + if self._is_tracing: + self._device.BroadcastIntent(intent.Intent( + action='%s.GPU_PROFILER_STOP' % self._package_info.package)) + self._trace_file = self._logcat_monitor.WaitFor( + self._trace_finish_re, timeout=120).group(1) + self._is_tracing = False + if self._trace_memory: + self._device.SetProp(_HEAP_PROFILE_MMAP_PROPERTY, 0) + return True + + @py_utils.Timeout(tracing_agents.GET_RESULTS_TIMEOUT) + def GetResults(self, timeout=None): + with open(self._PullTrace(), 'r') as f: + trace_data = f.read() + return trace_result.TraceResult('traceEvents', trace_data) + + def _PullTrace(self): + trace_file = self._trace_file.replace('/storage/emulated/0/', '/sdcard/') + host_file = os.path.join(os.path.curdir, os.path.basename(trace_file)) + try: + self._device.PullFile(trace_file, host_file) + except device_errors.AdbCommandFailedError: + raise RuntimeError( + 'Cannot pull the trace file. Have you granted Storage permission to ' + 'the browser? (Android Settings -> Apps -> [the browser app] -> ' + 'Permissions -> Storage)') + return host_file + + def SupportsExplicitClockSync(self): + return False + + def RecordClockSyncMarker(self, sync_id, did_record_sync_marker_callback): + # pylint: disable=unused-argument + assert self.SupportsExplicitClockSync(), ('Clock sync marker cannot be ' + 'recorded since explicit clock sync is not supported.') + + +class ChromeConfig(tracing_agents.TracingConfig): + def __init__(self, chrome_categories, trace_cc, trace_frame_viewer, + trace_ubercompositor, trace_gpu, trace_flow, trace_memory, + trace_scheduler, ring_buffer, device, package_info): + tracing_agents.TracingConfig.__init__(self) + self.chrome_categories = chrome_categories + self.trace_cc = trace_cc + self.trace_frame_viewer = trace_frame_viewer + self.trace_ubercompositor = trace_ubercompositor + self.trace_gpu = trace_gpu + self.trace_flow = trace_flow + self.trace_memory = trace_memory + self.trace_scheduler = trace_scheduler + self.ring_buffer = ring_buffer + self.device = device + self.package_info = package_info + + +def try_create_agent(config): + if config.chrome_categories: + return ChromeTracingAgent(config.device, config.package_info, + config.ring_buffer, config.trace_memory) + return None + +def add_options(parser): + chrome_opts = optparse.OptionGroup(parser, 'Chrome tracing options') + chrome_opts.add_option('-c', '--categories', help='Select Chrome tracing ' + 'categories with comma-delimited wildcards, ' + 'e.g., "*", "cat1*,-cat1a". Omit this option to trace ' + 'Chrome\'s default categories. Chrome tracing can be ' + 'disabled with "--categories=\'\'". Use "list" to ' + 'see the available categories.', + metavar='CHROME_CATEGORIES', dest='chrome_categories') + chrome_opts.add_option('--trace-cc', + help='Deprecated, use --trace-frame-viewer.', + action='store_true') + chrome_opts.add_option('--trace-frame-viewer', + help='Enable enough trace categories for ' + 'compositor frame viewing.', action='store_true') + chrome_opts.add_option('--trace-ubercompositor', + help='Enable enough trace categories for ' + 'ubercompositor frame data.', action='store_true') + chrome_opts.add_option('--trace-gpu', help='Enable extra trace categories ' + 'for GPU data.', action='store_true') + chrome_opts.add_option('--trace-flow', help='Enable extra trace categories ' + 'for IPC message flows.', action='store_true') + chrome_opts.add_option('--trace-memory', help='Enable extra trace categories ' + 'for memory profile. (tcmalloc required)', + action='store_true') + chrome_opts.add_option('--trace-scheduler', help='Enable extra trace ' + 'categories for scheduler state', + action='store_true') + return chrome_opts + +def get_config(options): + return ChromeConfig(options.chrome_categories, options.trace_cc, + options.trace_frame_viewer, options.trace_ubercompositor, + options.trace_gpu, options.trace_flow, + options.trace_memory, options.trace_scheduler, + options.ring_buffer, options.device, + options.package_info) + +def _ComputeChromeCategories(config): + categories = [] + if config.trace_frame_viewer: + categories.append('disabled-by-default-cc.debug') + if config.trace_ubercompositor: + categories.append('disabled-by-default-cc.debug*') + if config.trace_gpu: + categories.append('disabled-by-default-gpu.debug*') + if config.trace_flow: + categories.append('disabled-by-default-toplevel.flow') + if config.trace_memory: + categories.append('disabled-by-default-memory') + if config.trace_scheduler: + categories.append('disabled-by-default-blink.scheduler') + categories.append('disabled-by-default-cc.debug.scheduler') + categories.append('disabled-by-default-renderer.scheduler') + if config.chrome_categories: + categories += config.chrome_categories.split(',') + return categories diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/chrome_tracing_agent_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/chrome_tracing_agent_unittest.py new file mode 100644 index 0000000..25c701a --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/chrome_tracing_agent_unittest.py @@ -0,0 +1,51 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import json + +from profile_chrome import chrome_tracing_agent +from systrace import decorators +from systrace.tracing_agents import agents_unittest + + +class ChromeAgentTest(agents_unittest.BaseAgentTest): + # TODO(washingtonp): This test seems to fail on the version of Android + # currently on the Trybot servers (KTU84P), although it works on Android M. + # Either upgrade the version of Android on the Trybot servers or determine + # if there is a way to run this agent on Android KTU84P. + @decorators.Disabled + def testGetCategories(self): + curr_browser = self.GetChromeProcessID() + if curr_browser == None: + self.StartBrowser() + + categories = \ + chrome_tracing_agent.ChromeTracingAgent.GetCategories( + self.device, self.package_info) + + self.assertEquals(len(categories), 2) + self.assertTrue(categories[0]) + self.assertTrue(categories[1]) + + # TODO(washingtonp): This test is pretty flaky on the version of Android + # currently on the Trybot servers (KTU84P), although it works on Android M. + # Either upgrade the version of Android on the Trybot servers or determine + # if there is a way to run this agent on Android KTU84P. + @decorators.Disabled + def testTracing(self): + curr_browser = self.GetChromeProcessID() + if curr_browser == None: + self.StartBrowser() + + categories = '*' + ring_buffer = False + agent = chrome_tracing_agent.ChromeTracingAgent(self.device, + self.package_info, + ring_buffer) + agent.StartAgentTracing(chrome_tracing_agent.ChromeConfig(categories, None, + None, None, None, None, None, None, ring_buffer, self.device, + self.package_info)) + agent.StopAgentTracing() + result = agent.GetResults() + json.loads(result.raw_data) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/ddms_tracing_agent.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/ddms_tracing_agent.py new file mode 100644 index 0000000..9d041b9 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/ddms_tracing_agent.py @@ -0,0 +1,97 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import optparse +import os +import py_utils +import re + +from profile_chrome import util +from systrace import trace_result +from systrace import tracing_agents + + +_DDMS_SAMPLING_FREQUENCY_US = 100 + + +class DdmsAgent(tracing_agents.TracingAgent): + def __init__(self, device, package_info): + tracing_agents.TracingAgent.__init__(self) + self._device = device + self._package = package_info.package + self._output_file = None + self._supports_sampling = self._SupportsSampling() + + def __repr__(self): + return 'ddms profile' + + def _SupportsSampling(self): + for line in self._device.RunShellCommand( + ['am', '--help'], check_return=True): + if re.match(r'.*am profile start.*--sampling', line): + return True + return False + + @py_utils.Timeout(tracing_agents.START_STOP_TIMEOUT) + def StartAgentTracing(self, config, timeout=None): + self._output_file = ( + '/data/local/tmp/ddms-profile-%s' % util.GetTraceTimestamp()) + cmd = ['am', 'profile', 'start'] + if self._supports_sampling: + cmd.extend(['--sampling', str(_DDMS_SAMPLING_FREQUENCY_US)]) + cmd.extend([self._package, self._output_file]) + self._device.RunShellCommand(cmd, check_return=True) + return True + + @py_utils.Timeout(tracing_agents.START_STOP_TIMEOUT) + def StopAgentTracing(self, timeout=None): + self._device.RunShellCommand( + ['am', 'profile', 'stop', self._package], check_return=True) + return True + + @py_utils.Timeout(tracing_agents.GET_RESULTS_TIMEOUT) + def GetResults(self, timeout=None): + with open(self._PullTrace(), 'r') as f: + trace_data = f.read() + return trace_result.TraceResult('ddms', trace_data) + + def _PullTrace(self): + if not self._output_file: + return None + + host_file = os.path.join( + os.path.curdir, os.path.basename(self._output_file)) + self._device.PullFile(self._output_file, host_file) + return host_file + + def SupportsExplicitClockSync(self): + return False + + def RecordClockSyncMarker(self, sync_id, did_record_sync_marker_callback): + # pylint: disable=unused-argument + assert self.SupportsExplicitClockSync(), ('Clock sync marker cannot be ' + 'recorded since explicit clock sync is not supported.') + + +class DdmsConfig(tracing_agents.TracingConfig): + def __init__(self, device, package_info, ddms): + tracing_agents.TracingConfig.__init__(self) + self.device = device + self.package_info = package_info + self.ddms = ddms + + +def try_create_agent(config): + if config.ddms: + return DdmsAgent(config.device, config.package_info) + return None + +def add_options(parser): + options = optparse.OptionGroup(parser, 'Java tracing') + options.add_option('--ddms', help='Trace Java execution using DDMS ' + 'sampling.', action='store_true') + return options + +def get_config(options): + return DdmsConfig(options.device, options.package_info, options.ddms) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/ddms_tracing_agent_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/ddms_tracing_agent_unittest.py new file mode 100644 index 0000000..c7269bb --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/ddms_tracing_agent_unittest.py @@ -0,0 +1,24 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +from profile_chrome import ddms_tracing_agent +from systrace import decorators +from systrace.tracing_agents import agents_unittest + + +class DdmsAgentTest(agents_unittest.BaseAgentTest): + # TODO(washingtonp): The DDMS test is flaky on the Tryserver, but it + # consistently passes on Android M. Need to figure out why the result data + # does not start with '*version' and why the test is flaky. + @decorators.Disabled + def testTracing(self): + agent = ddms_tracing_agent.DdmsAgent(self.device, self.package_info) + + try: + agent.StartAgentTracing(None) + finally: + agent.StopAgentTracing() + + result = agent.GetResults() + self.assertTrue(result.raw_data.startswith('*version')) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/fake_agent_1.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/fake_agent_1.py new file mode 100644 index 0000000..62889f4 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/fake_agent_1.py @@ -0,0 +1,69 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import optparse +import tempfile + +from systrace import trace_result +from systrace import tracing_agents + + +class FakeAgent(object): + def __init__(self, contents='fake-contents'): + self.contents = contents + self.stopped = False + self.filename = None + self.config = None + self.timeout = None + + def StartAgentTracing(self, config, timeout=None): + self.config = config + self.timeout = timeout + return True + + # pylint: disable=unused-argument + def StopAgentTracing(self, timeout=None): + self.stopped = True + return True + + # pylint: disable=unused-argument + def GetResults(self, timeout=None): + trace_data = open(self._PullTrace()).read() + return trace_result.TraceResult('fakeData', trace_data) + + def _PullTrace(self): + with tempfile.NamedTemporaryFile(delete=False) as f: + self.filename = f.name + f.write(self.contents) + return f.name + + # pylint: disable=no-self-use + def SupportsExplicitClockSync(self): + return False + + # pylint: disable=unused-argument, no-self-use + def RecordClockSyncMarker(self, sync_id, did_record_sync_marker_callback): + print ('Clock sync marker cannot be recorded since explicit clock sync ' + 'is not supported.') + + def __repr__(self): + return 'faketrace' + + +class FakeConfig(tracing_agents.TracingConfig): + def __init__(self): + tracing_agents.TracingConfig.__init__(self) + + +# pylint: disable=unused-argument +def try_create_agent(config): + return FakeAgent() + +def add_options(parser): + options = optparse.OptionGroup(parser, 'Fake options.') + return options + +# pylint: disable=unused-argument +def get_config(options): + return FakeConfig() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/fake_agent_2.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/fake_agent_2.py new file mode 100644 index 0000000..477b6c7 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/fake_agent_2.py @@ -0,0 +1,68 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import optparse +import tempfile + +from systrace import trace_result +from systrace import tracing_agents + + +class FakeAgent2(object): + def __init__(self, contents='fake-contents'): + self.contents = contents + self.stopped = False + self.config = None + self.filename = None + + # pylint: disable=unused-argument + def StartAgentTracing(self, config, timeout=None): + self.config = config + return True + + # pylint: disable=unused-argument + def StopAgentTracing(self, timeout=None): + self.stopped = True + return True + + # pylint: disable=unused-argument + def GetResults(self, timeout=None): + trace_data = open(self._PullTrace()).read() + return trace_result.TraceResult('fakeDataTwo', trace_data) + + def _PullTrace(self): + with tempfile.NamedTemporaryFile(delete=False) as f: + self.filename = f.name + f.write(self.contents) + return f.name + + # pylint: disable=no-self-use + def SupportsExplicitClockSync(self): + return False + + # pylint: disable=unused-argument, no-self-use + def RecordClockSyncMarker(self, sync_id, did_record_sync_marker_callback): + print ('Clock sync marker cannot be recorded since explicit clock sync ' + 'is not supported.') + + def __repr__(self): + return 'faketracetwo' + + +class FakeConfig(tracing_agents.TracingConfig): + def __init__(self): + tracing_agents.TracingConfig.__init__(self) + + +# pylint: disable=unused-argument +def try_create_agent(config): + return FakeAgent2() + +def add_options(parser): + options = optparse.OptionGroup(parser, 'Fake options.') + return options + +# pylint: disable=unused-argument +def get_config(options): + return FakeConfig() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/flags.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/flags.py new file mode 100644 index 0000000..c951123 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/flags.py @@ -0,0 +1,16 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import optparse + + +def OutputOptions(parser): + output_options = optparse.OptionGroup(parser, 'Output options') + output_options.add_option('-o', '--output', dest='output_file', + help='Save trace output to file.') + output_options.add_option('--json', help='Save trace as raw JSON instead of ' + 'HTML.', dest='write_json') + output_options.add_option('--view', help='Open resulting trace file in a ' + 'browser.', action='store_true') + return output_options diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/main.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/main.py new file mode 100644 index 0000000..6cd815c --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/main.py @@ -0,0 +1,160 @@ +#!/usr/bin/env python +# +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import logging +import optparse +import os +import sys +import webbrowser + +from profile_chrome import chrome_tracing_agent +from profile_chrome import ddms_tracing_agent +from profile_chrome import flags +from profile_chrome import perf_tracing_agent +from profile_chrome import profiler +from profile_chrome import ui +from systrace import util +from systrace.tracing_agents import atrace_agent + +from devil.android import device_utils +from devil.android.sdk import adb_wrapper + + +_PROFILE_CHROME_AGENT_MODULES = [chrome_tracing_agent, ddms_tracing_agent, + perf_tracing_agent, atrace_agent] + + +def _CreateOptionParser(): + parser = optparse.OptionParser(description='Record about://tracing profiles ' + 'from Android browsers. See http://dev.' + 'chromium.org/developers/how-tos/trace-event-' + 'profiling-tool for detailed instructions for ' + 'profiling.', conflict_handler='resolve') + + parser = util.get_main_options(parser) + + timed_options = optparse.OptionGroup(parser, 'Timed tracing') + timed_options.add_option('-t', '--time', help='Profile for N seconds and ' + 'download the resulting trace.', metavar='N', + type='float', dest='trace_time') + parser.add_option_group(timed_options) + + cont_options = optparse.OptionGroup(parser, 'Continuous tracing') + cont_options.add_option('--continuous', help='Profile continuously until ' + 'stopped.', action='store_true') + cont_options.add_option('--ring-buffer', help='Use the trace buffer as a ' + 'ring buffer and save its contents when stopping ' + 'instead of appending events into one long trace.', + action='store_true') + parser.add_option_group(cont_options) + + parser.add_option_group(flags.OutputOptions(parser)) + + browsers = sorted(util.get_supported_browsers().keys()) + parser.add_option('-b', '--browser', help='Select among installed browsers. ' + 'One of ' + ', '.join(browsers) + ', "stable" is used by ' + 'default.', type='choice', choices=browsers, + default='stable') + parser.add_option('-v', '--verbose', help='Verbose logging.', + action='store_true') + parser.add_option('-z', '--compress', help='Compress the resulting trace ' + 'with gzip. ', action='store_true') + + # Add options from profile_chrome agents. + for module in _PROFILE_CHROME_AGENT_MODULES: + parser.add_option_group(module.add_options(parser)) + + return parser + + +def main(): + parser = _CreateOptionParser() + options, _args = parser.parse_args() # pylint: disable=unused-variable + if options.trace_cc: + parser.error("""--trace-cc is deprecated. + +For basic jank busting uses, use --trace-frame-viewer +For detailed study of ubercompositor, pass --trace-ubercompositor. + +When in doubt, just try out --trace-frame-viewer. +""") + + logging.basicConfig() + + if options.verbose: + logging.getLogger().setLevel(logging.DEBUG) + + if not options.device_serial_number: + devices = [a.GetDeviceSerial() for a in adb_wrapper.AdbWrapper.Devices()] + if len(devices) == 0: + raise RuntimeError('No ADB devices connected.') + elif len(devices) >= 2: + raise RuntimeError('Multiple devices connected, serial number required') + options.device_serial_number = devices[0] + device = device_utils.DeviceUtils.HealthyDevices(device_arg= + options.device_serial_number)[0] + package_info = util.get_supported_browsers()[options.browser] + + options.device = device + options.package_info = package_info + + # Include Chrome categories by default in profile_chrome. + if not options.chrome_categories: + options.chrome_categories = chrome_tracing_agent.DEFAULT_CHROME_CATEGORIES + + if options.chrome_categories in ['list', 'help']: + ui.PrintMessage('Collecting record categories list...', eol='') + record_categories = [] + disabled_by_default_categories = [] + record_categories, disabled_by_default_categories = \ + chrome_tracing_agent.ChromeTracingAgent.GetCategories( + device, package_info) + + ui.PrintMessage('done') + ui.PrintMessage('Record Categories:') + ui.PrintMessage('\n'.join('\t%s' % item \ + for item in sorted(record_categories))) + + ui.PrintMessage('\nDisabled by Default Categories:') + ui.PrintMessage('\n'.join('\t%s' % item \ + for item in sorted(disabled_by_default_categories))) + + return 0 + + if options.atrace_categories in ['list', 'help']: + atrace_agent.list_categories(atrace_agent.get_config(options)) + print '\n' + return 0 + + if (perf_tracing_agent.PerfProfilerAgent.IsSupported() and + options.perf_categories in ['list', 'help']): + ui.PrintMessage('\n'.join( + perf_tracing_agent.PerfProfilerAgent.GetCategories(device))) + return 0 + + if not options.trace_time and not options.continuous: + ui.PrintMessage('Time interval or continuous tracing should be specified.') + return 1 + + if (options.chrome_categories and options.atrace_categories and + 'webview' in options.atrace_categories): + logging.warning('Using the "webview" category in atrace together with ' + 'Chrome tracing results in duplicate trace events.') + + if options.output_file: + options.output_file = os.path.expanduser(options.output_file) + result = profiler.CaptureProfile( + options, + options.trace_time if not options.continuous else 0, + _PROFILE_CHROME_AGENT_MODULES, + output=options.output_file, + compress=options.compress, + write_json=options.write_json) + if options.view: + if sys.platform == 'darwin': + os.system('/usr/bin/open %s' % os.path.abspath(result)) + else: + webbrowser.open(result) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/perf_tracing_agent.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/perf_tracing_agent.py new file mode 100644 index 0000000..65831df --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/perf_tracing_agent.py @@ -0,0 +1,253 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import logging +import optparse +import os +import py_utils +import signal +import subprocess +import sys +import tempfile + +from devil.android import device_temp_file +from devil.android.perf import perf_control + +from profile_chrome import ui +from systrace import trace_result +from systrace import tracing_agents + +_CATAPULT_DIR = os.path.join( + os.path.dirname(os.path.abspath(__file__)), '..', '..') +sys.path.append(os.path.join(_CATAPULT_DIR, 'telemetry')) +try: + # pylint: disable=F0401 + from telemetry.internal.platform.profiler import android_profiling_helper + from telemetry.internal.util import binary_manager +except ImportError: + android_profiling_helper = None + binary_manager = None + + +_PERF_OPTIONS = [ + # Sample across all processes and CPUs to so that the current CPU gets + # recorded to each sample. + '--all-cpus', + # In perf 3.13 --call-graph requires an argument, so use the -g short-hand + # which does not. + '-g', + # Increase priority to avoid dropping samples. Requires root. + '--realtime', '80', + # Record raw samples to get CPU information. + '--raw-samples', + # Increase sampling frequency for better coverage. + '--freq', '2000', +] + + +class _PerfProfiler(object): + def __init__(self, device, perf_binary, categories): + self._device = device + self._output_file = device_temp_file.DeviceTempFile( + self._device.adb, prefix='perf_output') + self._log_file = tempfile.TemporaryFile() + + # TODO(jbudorick) Look at providing a way to unhandroll this once the + # adb rewrite has fully landed. + device_param = (['-s', str(self._device)] if str(self._device) else []) + cmd = ['adb'] + device_param + \ + ['shell', perf_binary, 'record', + '--output', self._output_file.name] + _PERF_OPTIONS + if categories: + cmd += ['--event', ','.join(categories)] + self._perf_control = perf_control.PerfControl(self._device) + self._perf_control.SetPerfProfilingMode() + self._perf_process = subprocess.Popen(cmd, + stdout=self._log_file, + stderr=subprocess.STDOUT) + + def SignalAndWait(self): + self._device.KillAll('perf', signum=signal.SIGINT) + self._perf_process.wait() + self._perf_control.SetDefaultPerfMode() + + def _FailWithLog(self, msg): + self._log_file.seek(0) + log = self._log_file.read() + raise RuntimeError('%s. Log output:\n%s' % (msg, log)) + + def PullResult(self, output_path): + if not self._device.FileExists(self._output_file.name): + self._FailWithLog('Perf recorded no data') + + perf_profile = os.path.join(output_path, + os.path.basename(self._output_file.name)) + self._device.PullFile(self._output_file.name, perf_profile) + if not os.stat(perf_profile).st_size: + os.remove(perf_profile) + self._FailWithLog('Perf recorded a zero-sized file') + + self._log_file.close() + self._output_file.close() + return perf_profile + + +class PerfProfilerAgent(tracing_agents.TracingAgent): + def __init__(self, device): + tracing_agents.TracingAgent.__init__(self) + self._device = device + self._perf_binary = self._PrepareDevice(device) + self._perf_instance = None + self._categories = None + + def __repr__(self): + return 'perf profile' + + @staticmethod + def IsSupported(): + return bool(android_profiling_helper) + + @staticmethod + def _PrepareDevice(device): + if not 'BUILDTYPE' in os.environ: + os.environ['BUILDTYPE'] = 'Release' + if binary_manager.NeedsInit(): + binary_manager.InitDependencyManager(None) + return android_profiling_helper.PrepareDeviceForPerf(device) + + @classmethod + def GetCategories(cls, device): + perf_binary = cls._PrepareDevice(device) + # Perf binary returns non-zero exit status on "list" command. + return device.RunShellCommand([perf_binary, 'list'], check_return=False) + + @py_utils.Timeout(tracing_agents.START_STOP_TIMEOUT) + def StartAgentTracing(self, config, timeout=None): + self._categories = _ComputePerfCategories(config) + self._perf_instance = _PerfProfiler(self._device, + self._perf_binary, + self._categories) + return True + + @py_utils.Timeout(tracing_agents.START_STOP_TIMEOUT) + def StopAgentTracing(self, timeout=None): + if not self._perf_instance: + return + self._perf_instance.SignalAndWait() + return True + + @py_utils.Timeout(tracing_agents.GET_RESULTS_TIMEOUT) + def GetResults(self, timeout=None): + with open(self._PullTrace(), 'r') as f: + trace_data = f.read() + return trace_result.TraceResult('perf', trace_data) + + @staticmethod + def _GetInteractivePerfCommand(perfhost_path, perf_profile, symfs_dir, + required_libs, kallsyms): + cmd = '%s report -n -i %s --symfs %s --kallsyms %s' % ( + os.path.relpath(perfhost_path, '.'), perf_profile, symfs_dir, kallsyms) + for lib in required_libs: + lib = os.path.join(symfs_dir, lib[1:]) + if not os.path.exists(lib): + continue + objdump_path = android_profiling_helper.GetToolchainBinaryPath( + lib, 'objdump') + if objdump_path: + cmd += ' --objdump %s' % os.path.relpath(objdump_path, '.') + break + return cmd + + def _PullTrace(self): + symfs_dir = os.path.join(tempfile.gettempdir(), + os.path.expandvars('$USER-perf-symfs')) + if not os.path.exists(symfs_dir): + os.makedirs(symfs_dir) + required_libs = set() + + # Download the recorded perf profile. + perf_profile = self._perf_instance.PullResult(symfs_dir) + required_libs = \ + android_profiling_helper.GetRequiredLibrariesForPerfProfile( + perf_profile) + if not required_libs: + logging.warning('No libraries required by perf trace. Most likely there ' + 'are no samples in the trace.') + + # Build a symfs with all the necessary libraries. + kallsyms = android_profiling_helper.CreateSymFs(self._device, + symfs_dir, + required_libs, + use_symlinks=False) + perfhost_path = binary_manager.FetchPath( + android_profiling_helper.GetPerfhostName(), 'x86_64', 'linux') + + ui.PrintMessage('\nNote: to view the profile in perf, run:') + ui.PrintMessage(' ' + self._GetInteractivePerfCommand(perfhost_path, + perf_profile, symfs_dir, required_libs, kallsyms)) + + # Convert the perf profile into JSON. + perf_script_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), + 'third_party', 'perf_to_tracing.py') + json_file_name = os.path.basename(perf_profile) + with open(os.devnull, 'w') as dev_null, \ + open(json_file_name, 'w') as json_file: + cmd = [perfhost_path, 'script', '-s', perf_script_path, '-i', + perf_profile, '--symfs', symfs_dir, '--kallsyms', kallsyms] + if subprocess.call(cmd, stdout=json_file, stderr=dev_null): + logging.warning('Perf data to JSON conversion failed. The result will ' + 'not contain any perf samples. You can still view the ' + 'perf data manually as shown above.') + return None + + return json_file_name + + def SupportsExplicitClockSync(self): + return False + + def RecordClockSyncMarker(self, sync_id, did_record_sync_marker_callback): + # pylint: disable=unused-argument + assert self.SupportsExplicitClockSync(), ('Clock sync marker cannot be ' + 'recorded since explicit clock sync is not supported.') + +def _OptionalValueCallback(default_value): + def callback(option, _, __, parser): # pylint: disable=unused-argument + value = default_value + if parser.rargs and not parser.rargs[0].startswith('-'): + value = parser.rargs.pop(0) + setattr(parser.values, option.dest, value) + return callback + + +class PerfConfig(tracing_agents.TracingConfig): + def __init__(self, perf_categories, device): + tracing_agents.TracingConfig.__init__(self) + self.perf_categories = perf_categories + self.device = device + + +def try_create_agent(config): + if config.perf_categories: + return PerfProfilerAgent(config.device) + return None + +def add_options(parser): + options = optparse.OptionGroup(parser, 'Perf profiling options') + options.add_option('-p', '--perf', help='Capture a perf profile with ' + 'the chosen comma-delimited event categories. ' + 'Samples CPU cycles by default. Use "list" to see ' + 'the available sample types.', action='callback', + default='', callback=_OptionalValueCallback('cycles'), + metavar='PERF_CATEGORIES', dest='perf_categories') + return options + +def get_config(options): + return PerfConfig(options.perf_categories, options.device) + +def _ComputePerfCategories(config): + if not PerfProfilerAgent.IsSupported(): + return [] + if not config.perf_categories: + return [] + return config.perf_categories.split(',') diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/perf_tracing_agent_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/perf_tracing_agent_unittest.py new file mode 100644 index 0000000..d8ebe3a --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/perf_tracing_agent_unittest.py @@ -0,0 +1,39 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import json + +from profile_chrome import perf_tracing_agent +from profile_chrome import ui +from systrace import decorators +from systrace.tracing_agents import agents_unittest + + +class PerfProfilerAgentTest(agents_unittest.BaseAgentTest): + @decorators.ClientOnlyTest + def testGetCategories(self): + if not perf_tracing_agent.PerfProfilerAgent.IsSupported(): + return + categories = \ + perf_tracing_agent.PerfProfilerAgent.GetCategories(self.device) + assert 'cycles' in ' '.join(categories) + + # TODO(washingtonp): Try enabling this test for the SimpleperfProfilerAgent, + # which will be added later. + @decorators.Disabled + def testTracing(self): + if not perf_tracing_agent.PerfProfilerAgent.IsSupported(): + return + ui.EnableTestMode() + categories = 'cycles' + agent = perf_tracing_agent.PerfProfilerAgent(self.device) + + try: + agent.StartAgentTracing(perf_tracing_agent.PerfConfig(categories, + self.device)) + finally: + agent.StopAgentTracing() + + result = agent.GetResults() + json.loads(result.raw_data) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/profiler.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/profiler.py new file mode 100644 index 0000000..1a4009c --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/profiler.py @@ -0,0 +1,108 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import time + +from profile_chrome import chrome_startup_tracing_agent +from profile_chrome import chrome_tracing_agent +from profile_chrome import ui +from profile_chrome import util +from systrace import output_generator +from systrace import tracing_controller + + +def _GetResults(trace_results, controller, output, compress, write_json, + interval): + ui.PrintMessage('Downloading...') + + # Wait for the trace file to get written. + time.sleep(1) + + for agent in controller.get_child_agents: + if isinstance(agent, chrome_tracing_agent.ChromeTracingAgent): + time.sleep(interval / 4) + + # Ignore the systraceController because it will not contain any results, + # instead being in charge of collecting results. + trace_results = [x for x in controller.all_results if not (x.source_name == + 'systraceController')] + + if not trace_results: + ui.PrintMessage('No results') + return '' + + result = None + trace_results = output_generator.MergeTraceResultsIfNeeded(trace_results) + if not write_json: + ui.PrintMessage('Writing trace HTML...') + html_file = trace_results[0].source_name + '.html' + result = output_generator.GenerateHTMLOutput(trace_results, html_file) + ui.PrintMessage('\nWrote file://%s' % result) + elif compress and len(trace_results) == 1: + result = output or trace_results[0].source_name + '.gz' + util.WriteDataToCompressedFile(trace_results[0].raw_data, result) + elif len(trace_results) > 1: + result = (output or 'chrome-combined-trace-%s.zip' % + util.GetTraceTimestamp()) + util.ArchiveData(trace_results, result) + elif output: + result = output + with open(result, 'wb') as f: + f.write(trace_results[0].raw_data) + else: + result = trace_results[0].source_name + with open(result, 'wb') as f: + f.write(trace_results[0].raw_data) + + return result + + +def CaptureProfile(options, interval, modules, output=None, + compress=False, write_json=False): + """Records a profiling trace saves the result to a file. + + Args: + options: Command line options. + interval: Time interval to capture in seconds. An interval of None (or 0) + continues tracing until stopped by the user. + modules: The list of modules to initialize the tracing controller with. + output: Output file name or None to use an automatically generated name. + compress: If True, the result will be compressed either with gzip or zip + depending on the number of captured subtraces. + write_json: If True, prefer JSON output over HTML. + + Returns: + Path to saved profile. + """ + agents_with_config = tracing_controller.CreateAgentsWithConfig(options, + modules) + if chrome_startup_tracing_agent in modules: + controller_config = tracing_controller.GetChromeStartupControllerConfig( + options) + else: + controller_config = tracing_controller.GetControllerConfig(options) + controller = tracing_controller.TracingController(agents_with_config, + controller_config) + try: + result = controller.StartTracing() + trace_type = controller.GetTraceType() + if not result: + ui.PrintMessage('Trace starting failed.') + if interval: + ui.PrintMessage(('Capturing %d-second %s. Press Enter to stop early...' % + (interval, trace_type)), eol='') + ui.WaitForEnter(interval) + else: + ui.PrintMessage('Capturing %s. Press Enter to stop...' % trace_type, + eol='') + raw_input() + + ui.PrintMessage('Stopping...') + all_results = controller.StopTracing() + finally: + if interval: + ui.PrintMessage('done') + + return _GetResults(all_results, controller, output, compress, write_json, + interval) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/profiler_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/profiler_unittest.py new file mode 100644 index 0000000..9b35753 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/profiler_unittest.py @@ -0,0 +1,58 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import unittest +import zipfile + +from profile_chrome import profiler +from profile_chrome import ui +from profile_chrome import fake_agent_1 +from profile_chrome import fake_agent_2 +from systrace import decorators +from systrace import tracing_controller + + +class ProfilerTest(unittest.TestCase): + def setUp(self): + ui.EnableTestMode() + self._tracing_options = tracing_controller.TracingControllerConfig(None, + None, None, None, None, None, None, None, None) + + @decorators.ClientOnlyTest + def testCaptureBasicProfile(self): + result = profiler.CaptureProfile(self._tracing_options, 1, [fake_agent_1]) + + try: + self.assertTrue(os.path.exists(result)) + self.assertTrue(result.endswith('.html')) + finally: + if os.path.exists(result): + os.remove(result) + + @decorators.ClientOnlyTest + def testCaptureJsonProfile(self): + result = profiler.CaptureProfile(self._tracing_options, 1, + [fake_agent_2], write_json=True) + + try: + self.assertFalse(result.endswith('.html')) + with open(result) as f: + self.assertEquals(f.read(), 'fake-contents') + finally: + if os.path.exists(result): + os.remove(result) + + @decorators.ClientOnlyTest + def testCaptureMultipleProfiles(self): + result = profiler.CaptureProfile(self._tracing_options, 1, + [fake_agent_1, fake_agent_2], + write_json=True) + + try: + self.assertTrue(result.endswith('.zip')) + self.assertTrue(zipfile.is_zipfile(result)) + finally: + if os.path.exists(result): + os.remove(result) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/run_tests b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/run_tests new file mode 100644 index 0000000..6ae1854 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/run_tests @@ -0,0 +1,3 @@ +#!/bin/sh +cd $(dirname $0)/../ +exec python -m unittest discover profile_chrome '*_unittest.py' $@ diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/third_party/COPYING b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/third_party/COPYING new file mode 100644 index 0000000..d159169 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/third_party/COPYING @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/third_party/README.chromium b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/third_party/README.chromium new file mode 100644 index 0000000..5f58a65 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/third_party/README.chromium @@ -0,0 +1,15 @@ +Name: Perf to JSON conversion script +Short Name: perf_to_json +URL: http://www.chromium.org +Version: 0 +Date: 21.7.2014 +Revision: 0 +License: GPL +License File: NOT_SHIPPED +Security Critical: No + +Description: +Script for converting perf script events into tracing JSON. + +Local Modifications: +None. diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/third_party/perf_to_tracing.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/third_party/perf_to_tracing.py new file mode 100644 index 0000000..280937a --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/third_party/perf_to_tracing.py @@ -0,0 +1,248 @@ +# Script for converting perf script events into tracing JSON. +# +# Generated by perf script -g python +# Licensed under the terms of the GNU GPL License version 2 + +import json +import os +import sys + +from collections import deque + + +# Categorize DSOs by component. +dso_to_comp = { + 'libdvm.so': 'Java', + 'libart.so': 'Java', + 'libjavacore.so': 'Java', + 'libandroid_runtime.so': 'Android', + 'libgui.so': 'Android', + 'libui.so': 'Android', + 'libbinder.so': 'Android', + 'libmemalloc.so': 'Android', + 'libcrypto.so': 'Android', + 'libcutils.so':'Android', + 'libutils.so': 'Android', + '[kernel.kallsyms]': 'Kernel', + 'libc.so': 'Standard Lib', + 'libstdc++.so': 'Standard Lib', + 'libm.so':'Standard Lib', + 'libGLESv2_adreno.so': 'GPU Driver', + 'libGLESv2_adreno200.so': 'GPU Driver', + 'libq3dtools_adreno200.so': 'GPU Driver', + 'libEGL_adreno.so': 'GPU Driver', + 'libEGL_adreno200.so': 'GPU Driver', + 'libEGL.so': 'GPU Driver', + 'libgsl.so': 'GPU Driver', + 'libGLESv2.so': 'GPU Driver', + 'libsc-a3xx.so': 'GPU Driver', + 'libadreno_utils.so': 'GPU Driver', + 'eglsubAndroid.so': 'GPU Driver', + 'gralloc.msm8960.so': 'GPU Driver', + 'libadreno_utils': 'GPU Driver', + 'libGLES_mali.so': 'GPU Driver', + 'libchromeview.so': 'Chrome', + '[unknown]': '<unknown>', + '[UNKNOWN]': '<unknown>', +} + + +def FilterSymbolModule(module): + m = dso_to_comp.get(module, None) + if m: + return m + if module.find('libchrome.') == 0: + return 'Chrome' + if module.find('dalvik') >= 0 or module.find('@') >= 0: + return 'Java' + return module + + +def FilterSymbolName(module, orign_module, name): + if module == 'Java': + return name + elif module == 'GPU Driver': + return name + if name == '': + return orign_module + ':unknown' + if name[0].isdigit() or name == '(nil)': + return orign_module + ':unknown' + return name + + +class StackFrameNode: + def __init__(self, stack_id, name, category): + self.stack_id = stack_id + self.parent_id = 0 + self.children = {} + self.category = category + self.name = name + self.samples = [] + self.total_weight = 0.0 + self.have_total_weight = False + self.parent = None + + def ToDict(self, out_dict): + if self.stack_id: + node_dict = {} + node_dict['name'] = self.name + node_dict['category'] = self.category + if self.parent_id: + node_dict['parent'] = self.parent_id + + out_dict[self.stack_id] = node_dict + + for child in self.children.values(): + child.ToDict(out_dict) + return out_dict + + def GetTotalWeight(self): + if self.have_total_weight: + return self.total_weight + else: + # Sum up self samples weight, and children's total weights. + for s in self.samples: + self.total_weight += s.weight + for c in self.children.values(): + self.total_weight += c.GetTotalWeight() + self.have_total_weight = True + return self.total_weight + + +class PerfSample: + def __init__(self, stack_id, ts, cpu, tid, weight, samp_type, comm): + self.stack_id = stack_id + self.ts = ts + self.cpu = cpu + self.tid = tid + self.weight = weight + self.type = samp_type + self.comm = comm + + def ToDict(self): + ret = {} + ret['ts'] = self.ts / 1000.0 # Timestamp in microseconds + ret['tid'] = self.tid # Thread id + ret['cpu'] = self.cpu # Sampled CPU + ret['weight'] = self.weight # Sample weight + ret['name'] = self.type # Sample type + ret['comm'] = self.comm # Sample type + assert self.stack_id != 0 + if self.stack_id: + ret['sf'] = self.stack_id # Stack frame id + return ret + + +samples = [] +root_chain = StackFrameNode(0, 'root', '[unknown]') +next_stack_id = 1 +tot_period = 0 +saved_period = 0 + + +def process_event(param_dict): + global next_stack_id + global saved_period + global tot_period + + samp_comm = param_dict['comm'] + samp_tid = param_dict['tid'] + samp_cpu = param_dict['cpu'] + samp_ts = param_dict['time'] + samp_period = param_dict['period'] + samp_type = param_dict['ev_name'] + tot_period += samp_period + + # Parse call chain. + seen_syms = set() + chain = deque() + for cs in param_dict['cs']: + cs_name = cs[0] + cs_dso = os.path.basename(cs[1]) + cs_category = FilterSymbolModule(cs_dso) + cs_name = FilterSymbolName(cs_category, cs_dso, cs_name) + + if cs_category != '<unknown>' or len(chain) == 0: + sym = (cs_name, cs_category) + if sym in seen_syms: + while chain[0] != sym: + seen_syms.remove(chain[0]) + chain.popleft() + else: + seen_syms.add(sym) + chain.appendleft(sym) + + # Discard garbage stacktrace before __pthread_start() + if cs_name == '__pthread_start(void*)': + break + + # Done reading call chain. Add to stack frame tree. + stack_frame = root_chain + for call in chain: + if call in stack_frame.children: + stack_frame = stack_frame.children[call] + else: + new_node = StackFrameNode(next_stack_id, call[0], call[1]) + next_stack_id += 1 + new_node.parent_id = stack_frame.stack_id + stack_frame.children[call] = new_node + stack_frame = new_node + + # Save sample. + sample = PerfSample(stack_frame.stack_id, + samp_ts, + samp_cpu, + samp_tid, + samp_period, + samp_type, + samp_comm) + samples.append(sample) + stack_frame.samples.append(sample) + saved_period += samp_period + + +def trace_begin(): + pass + + +def trace_end(): + # Return siblings of a call tree node. + def GetNodeSiblings(node): + if not node: + return [] + if not node.parent: + return [] + return node.parent.children.values() + + # Try to reduce misplaced stack leaves by moving them up into sibling nodes. + def FixCallTree(node, parent): + # Get siblings of node's parent. + node.parent = parent + parent_siblings = GetNodeSiblings(parent) + + # If parent's sibling has same node name, has no children and small weight, + # transplant sibling's samples into the current node. + for sibling in parent_siblings: + if sibling.name == node.name and \ + len(sibling.children) == 0 and \ + sibling.GetTotalWeight() <= node.GetTotalWeight() * 0.15: + + # Transplant samples from sibling to current node. + for samp in sibling.samples: + samp.stack_id = node.stack_id + node.samples.append(samp) + sibling.samples = [] + break + + # Recurse child nodes. + for c in node.children.values(): + FixCallTree(c, node) + + FixCallTree(root_chain, None) + + trace_dict = {} + trace_dict['samples'] = [s.ToDict() for s in samples] + trace_dict['stackFrames'] = root_chain.ToDict({}) + trace_dict['traceEvents'] = [] + + json.dump(trace_dict, sys.stdout, indent=1) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/ui.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/ui.py new file mode 100644 index 0000000..30ebd9b --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/ui.py @@ -0,0 +1,27 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import logging +import select +import sys + + +def PrintMessage(heading, eol='\n'): + sys.stdout.write('%s%s' % (heading, eol)) + sys.stdout.flush() + + +def WaitForEnter(timeout): + select.select([sys.stdin], [], [], timeout) + + +def EnableTestMode(): + def NoOp(*_, **__): # pylint: disable=unused-argument + pass + # pylint: disable=W0601 + global PrintMessage + global WaitForEnter + PrintMessage = NoOp + WaitForEnter = NoOp + logging.getLogger().disabled = True diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/util.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/util.py new file mode 100644 index 0000000..f5cb5bf --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/profile_chrome/util.py @@ -0,0 +1,35 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import gzip +import os +import time +import zipfile + + +def ArchiveFiles(host_files, output): + with zipfile.ZipFile(output, 'w', zipfile.ZIP_DEFLATED) as z: + for host_file in host_files: + z.write(host_file) + os.unlink(host_file) + +def CompressFile(host_file, output): + with gzip.open(output, 'wb') as out, open(host_file, 'rb') as input_file: + out.write(input_file.read()) + os.unlink(host_file) + +def ArchiveData(trace_results, output): + with zipfile.ZipFile(output, 'w', zipfile.ZIP_DEFLATED) as z: + for result in trace_results: + trace_file = result.source_name + GetTraceTimestamp() + WriteDataToCompressedFile(result.raw_data, trace_file) + z.write(trace_file) + os.unlink(trace_file) + +def WriteDataToCompressedFile(data, output): + with gzip.open(output, 'wb') as out: + out.write(data) + +def GetTraceTimestamp(): + return time.strftime('%Y-%m-%d-%H%M%S', time.localtime()) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/pylintrc b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/pylintrc new file mode 100644 index 0000000..eb051e6 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/pylintrc @@ -0,0 +1,67 @@ +[MESSAGES CONTROL] + +# Disable the message, report, category or checker with the given id(s). +# TODO: Shrink this list to as small as possible. +disable= + design, + similarities, + + abstract-class-not-used, + bad-builtin, + bad-continuation, + eval-used, + fixme, + invalid-name, + locally-disabled, + missing-docstring, + protected-access, + star-args, + + +[REPORTS] + +# Don't write out full reports, just messages. +reports=no + + +[BASIC] + +# Regular expression which should only match correct function names. +function-rgx=^(?:(?P<exempt>setUp|tearDown|setUpModule|tearDownModule)|(?P<camel_case>_?[A-Z][a-zA-Z0-9]*))$ + +# Regular expression which should only match correct method names. +method-rgx=^(?:(?P<exempt>_[a-z0-9_]+__|get|post|runTest|setUp|tearDown|setUpTestCase|tearDownTestCase|setupSelf|tearDownClass|setUpClass)|(?P<camel_case>(_{0,2}|test|assert)[A-Z][a-zA-Z0-9_]*))$ + +# Regular expression which should only match correct argument names. +argument-rgx=^[a-z][a-z0-9_]*$ + +# Regular expression which should only match correct variable names. +variable-rgx=^[a-z][a-z0-9_]*$ + +# Good variable names which should always be accepted, separated by a comma. +good-names=main,_ + +# List of builtins function names that should not be used, separated by a comma. +bad-functions=apply,input,reduce + + +[VARIABLES] + +# Tells wether we should check for unused import in __init__ files. +init-import=no + +# A regular expression matching names used for dummy variables (i.e. not used). +dummy-variables-rgx=^\*{0,2}(_$|unused_) + + +[TYPECHECK] + +# Tells wether missing members accessed in mixin class should be ignored. A +# mixin class is detected if its name ends with "mixin" (case insensitive). +ignore-mixin-members=yes + + +[FORMAT] + +# We use two spaces for indents, instead of the usual four spaces or tab. +indent-string=' ' diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/AUTHORS b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/AUTHORS new file mode 100644 index 0000000..5a7ed82 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/AUTHORS @@ -0,0 +1,12 @@ +# Names should be added to this file with this pattern: +# +# For individuals: +# Name <email address> +# +# For organizations: +# Organization <fnmatch pattern> +# +# See python fnmatch module documentation for more information. + +The Chromium Authors <*@chromium.org> +Google Inc. <*@google.com> diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/LICENSE b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/LICENSE new file mode 100644 index 0000000..8dc3504 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/LICENSE @@ -0,0 +1,27 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/README.md b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/README.md new file mode 100644 index 0000000..0e103a5 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/README.md @@ -0,0 +1,16 @@ +<!-- Copyright 2015 The Chromium Authors. All rights reserved. + Use of this source code is governed by a BSD-style license that can be + found in the LICENSE file. +--> +Systrace +======== + +Systrace relies on +[Trace-Viewer](https://github.com/catapult-project/catapult/blob/master/tracing/README.md) +to visualize the traces. The development of Trace-Viewer and Systrace is +decoupled by the systrace_trace_viewer.html file. +* The update_systrace_trace_viewer.py script generates +systrace_trace_viewer.html based on the Trace-Viewer code. +* Systrace visualizes the trace result based on systrace_trace_viewer.html. +* Systrace will auto update systrace_trace_viewer.html if +update_systrace_trace_viewer.py exists. diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/__init__.py new file mode 100644 index 0000000..831f774 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/__init__.py @@ -0,0 +1,28 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +import os +import sys + +def _JoinPath(*path_parts): + return os.path.abspath(os.path.join(*path_parts)) + + +def _AddDirToPythonPath(*path_parts): + path = _JoinPath(*path_parts) + if os.path.isdir(path) and path not in sys.path: + # Some call sites that use Telemetry assume that sys.path[0] is the + # directory containing the script, so we add these extra paths to right + # after sys.path[0]. + sys.path.insert(1, path) + +_CATAPULT_DIR = os.path.join( + os.path.dirname(os.path.abspath(__file__)), os.path.pardir, os.path.pardir) + +_AddDirToPythonPath(_CATAPULT_DIR, 'common', 'battor') +_AddDirToPythonPath(_CATAPULT_DIR, 'common', 'py_utils') +_AddDirToPythonPath(_CATAPULT_DIR, 'common', 'py_trace_event') +_AddDirToPythonPath(_CATAPULT_DIR, 'common', 'py_trace_event', 'py_trace_event') +_AddDirToPythonPath(_CATAPULT_DIR, 'devil') +_AddDirToPythonPath(_CATAPULT_DIR, 'systrace') +_AddDirToPythonPath(_CATAPULT_DIR, 'tracing') diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/decorators.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/decorators.py new file mode 100644 index 0000000..8545eaa --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/decorators.py @@ -0,0 +1,41 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + + +def HostOnlyTest(func): + """Decorator for running unit tests only on the host device. + + This will disable unit tests from running on Android devices. + """ + return _SkipTestDecoratorHelper(func, ['android']) + + +def ClientOnlyTest(func): + """Decorator for running unit tests only on client devices (Android). + """ + return _SkipTestDecoratorHelper(func, ['win', 'linux', 'mac']) + + +def Disabled(func): + """Decorator for not running a unit test on any Trybot platform. + """ + return _SkipTestDecoratorHelper(func, ['win', 'linux', 'mac', 'android']) + + +def LinuxMacTest(func): + return _SkipTestDecoratorHelper(func, ['win', 'android']) + + +def _SkipTestDecoratorHelper(func, disabled_strings): + if not hasattr(func, '_disabled_strings'): + setattr(func, '_disabled_strings', set(disabled_strings)) + return func + + +def ShouldSkip(test, device): + """Returns whether the test should be skipped and the reason for it.""" + if hasattr(test, '_disabled_strings'): + disabled_devices = getattr(test, '_disabled_strings') + return device in disabled_devices + return False diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/monitor_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/monitor_unittest.py new file mode 100644 index 0000000..65d63e1 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/monitor_unittest.py @@ -0,0 +1,52 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import unittest + +from systrace import decorators +from systrace import update_systrace_trace_viewer + +SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) +STABLE_VIEWER_PATH = os.path.join(SCRIPT_DIR, 'systrace_trace_viewer.html') + +# Tests presence and content of static HTML files used not only for Python +# systrace capture, but also Java-based capture in the android SDK tools. +# +# NOTE: changes to this file should typically be accompanied by changes to the +# Android SDK's method of systrace capture. +class MonitorTest(unittest.TestCase): + + @decorators.HostOnlyTest + def test_systrace_trace_viewer(self): + self.assertEqual(STABLE_VIEWER_PATH, + update_systrace_trace_viewer.SYSTRACE_TRACE_VIEWER_HTML_FILE) + + update_systrace_trace_viewer.update(force_update=True) + + with open(STABLE_VIEWER_PATH) as f: + content = f.read().strip() + + # expect big html file + self.assertGreater(5 * 1024 * 1024, len(content)) + self.assertEqual('<', content[0]) + os.remove(f.name) + + + @decorators.HostOnlyTest + def test_prefix(self): + with open(os.path.join(SCRIPT_DIR, 'prefix.html')) as f: + content = f.read().strip() + + self.assertTrue("<html>" in content) + self.assertTrue("<title>Android System Trace" in content) + self.assertTrue("{{SYSTRACE_TRACE_VIEWER_HTML}}" in content) + + + @decorators.HostOnlyTest + def test_suffix(self): + with open(os.path.join(SCRIPT_DIR, 'suffix.html')) as f: + content = f.read().strip() + + self.assertTrue("" in content) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/output_generator.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/output_generator.py new file mode 100644 index 0000000..553d5d4 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/output_generator.py @@ -0,0 +1,189 @@ +#!/usr/bin/env python + +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import base64 +import gzip +import json +import os +import StringIO + +from systrace import tracing_controller +from systrace import trace_result +from tracing.trace_data import trace_data + + +# TODO(alexandermont): Current version of trace viewer does not support +# the controller tracing agent output. Thus we use this variable to +# suppress this tracing agent's output. This should be removed once +# trace viewer is working again. +OUTPUT_CONTROLLER_TRACE_ = False +CONTROLLER_TRACE_DATA_KEY = 'controllerTraceDataKey' +_SYSTRACE_TO_TRACE_DATA_NAME_MAPPING = { + 'androidProcessDump': trace_data.ANDROID_PROCESS_DATA_PART, + 'systemTraceEvents': trace_data.ATRACE_PART, + 'powerTraceAsString': trace_data.BATTOR_TRACE_PART, + 'systraceController': trace_data.TELEMETRY_PART, + 'traceEvents': trace_data.CHROME_TRACE_PART, + 'waltTrace': trace_data.WALT_TRACE_PART, +} +_SYSTRACE_HEADER = 'Systrace' + + +def NewGenerateHTMLOutput(trace_results, output_file_name): + trace_data_builder = trace_data.TraceDataBuilder() + for trace in trace_results: + trace_data_part = _SYSTRACE_TO_TRACE_DATA_NAME_MAPPING.get( + trace.source_name) + trace_data_builder.AddTraceFor(trace_data_part, trace.raw_data) + trace_data_builder.AsData().Serialize(output_file_name, _SYSTRACE_HEADER) + + +def GenerateHTMLOutput(trace_results, output_file_name): + """Write the results of systrace to an HTML file. + + Args: + trace_results: A list of TraceResults. + output_file_name: The name of the HTML file that the trace viewer + results should be written to. + """ + def _ReadAsset(src_dir, filename): + return open(os.path.join(src_dir, filename)).read() + + # TODO(rnephew): The tracing output formatter is able to handle a single + # systrace trace just as well as it handles multiple traces. The obvious thing + # to do here would be to use it all for all systrace output: however, we want + # to continue using the legacy way of formatting systrace output when a single + # systrace and the tracing controller trace are present in order to match the + # Java verison of systrace. Java systrace is expected to be deleted at a later + # date. We should consolidate this logic when that happens. + + if len(trace_results) > 3: + NewGenerateHTMLOutput(trace_results, output_file_name) + return os.path.abspath(output_file_name) + + systrace_dir = os.path.abspath(os.path.dirname(__file__)) + + try: + from systrace import update_systrace_trace_viewer + except ImportError: + pass + else: + update_systrace_trace_viewer.update() + + trace_viewer_html = _ReadAsset(systrace_dir, 'systrace_trace_viewer.html') + + # Open the file in binary mode to prevent python from changing the + # line endings, then write the prefix. + systrace_dir = os.path.abspath(os.path.dirname(__file__)) + html_prefix = _ReadAsset(systrace_dir, 'prefix.html') + html_suffix = _ReadAsset(systrace_dir, 'suffix.html') + trace_viewer_html = _ReadAsset(systrace_dir, + 'systrace_trace_viewer.html') + + # Open the file in binary mode to prevent python from changing the + # line endings, then write the prefix. + html_file = open(output_file_name, 'wb') + html_file.write(html_prefix.replace('{{SYSTRACE_TRACE_VIEWER_HTML}}', + trace_viewer_html)) + + # Write the trace data itself. There is a separate section of the form + # + # for each tracing agent (including the controller tracing agent). + html_file.write('\n') + for result in trace_results: + html_file.write(' \n') + html_file.write('\n') + + # Write the suffix and finish. + html_file.write(html_suffix) + html_file.close() + + final_path = os.path.abspath(output_file_name) + return final_path + +def _ConvertToHtmlString(result): + """Convert a trace result to the format to be output into HTML. + + If the trace result is a dictionary or list, JSON-encode it. + If the trace result is a string, leave it unchanged. + """ + if isinstance(result, dict) or isinstance(result, list): + return json.dumps(result) + elif isinstance(result, str): + return result + else: + raise ValueError('Invalid trace result format for HTML output') + +def GenerateJSONOutput(trace_results, output_file_name): + """Write the results of systrace to a JSON file. + + Args: + trace_results: A list of TraceResults. + output_file_name: The name of the JSON file that the trace viewer + results should be written to. + """ + results = _ConvertTraceListToDictionary(trace_results) + results[CONTROLLER_TRACE_DATA_KEY] = ( + tracing_controller.TRACE_DATA_CONTROLLER_NAME) + with open(output_file_name, 'w') as json_file: + json.dump(results, json_file) + final_path = os.path.abspath(output_file_name) + return final_path + +def MergeTraceResultsIfNeeded(trace_results): + """Merge a list of trace data, if possible. This function can take any list + of trace data, but it will only merge the JSON data (since that's all + we can merge). + + Args: + trace_results: A list of TraceResults containing trace data. + """ + if len(trace_results) <= 1: + return trace_results + merge_candidates = [] + for result in trace_results: + # Try to detect a JSON file cheaply since that's all we can merge. + if result.raw_data[0] != '{': + continue + try: + json_data = json.loads(result.raw_data) + except ValueError: + continue + merge_candidates.append(trace_result.TraceResult(result.source_name, + json_data)) + + if len(merge_candidates) <= 1: + return trace_results + + other_results = [r for r in trace_results + if not r.source_name in + [c.source_name for c in merge_candidates]] + + merged_data = merge_candidates[0].raw_data + + for candidate in merge_candidates[1:]: + json_data = candidate.raw_data + for key, value in json_data.items(): + if not str(key) in merged_data or not merged_data[str(key)]: + merged_data[str(key)] = value + + return ([trace_result.TraceResult('merged-data', json.dumps(merged_data))] + + other_results) + +def _EncodeTraceData(trace_string): + compressed_trace = StringIO.StringIO() + with gzip.GzipFile(fileobj=compressed_trace, mode='w') as f: + f.write(trace_string) + b64_content = base64.b64encode(compressed_trace.getvalue()) + return b64_content + +def _ConvertTraceListToDictionary(trace_list): + trace_dict = {} + for trace in trace_list: + trace_dict[trace.source_name] = trace.raw_data + return trace_dict diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/output_generator_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/output_generator_unittest.py new file mode 100644 index 0000000..58e11ac --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/output_generator_unittest.py @@ -0,0 +1,123 @@ +#!/usr/bin/env python + +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import hashlib +import json +import os +import unittest + +from systrace import decorators +from systrace import output_generator +from systrace import trace_result +from systrace import update_systrace_trace_viewer +from systrace import util +from tracing.trace_data import trace_data as trace_data_module + + +TEST_DIR = os.path.join(os.path.dirname(__file__), 'test_data') +ATRACE_DATA = os.path.join(TEST_DIR, 'atrace_data') +BATTOR_DATA = os.path.join(TEST_DIR, 'battor_test_data.txt') +COMBINED_PROFILE_CHROME_DATA = os.path.join( + TEST_DIR, 'profile-chrome_systrace_perf_chrome_data') + + +class OutputGeneratorTest(unittest.TestCase): + + @decorators.HostOnlyTest + def testJsonTraceMerging(self): + update_systrace_trace_viewer.update(force_update=True) + self.assertTrue(os.path.exists( + update_systrace_trace_viewer.SYSTRACE_TRACE_VIEWER_HTML_FILE)) + t1 = "{'traceEvents': [{'ts': 123, 'ph': 'b'}]}" + t2 = "{'traceEvents': [], 'stackFrames': ['blah']}" + results = [trace_result.TraceResult('a', t1), + trace_result.TraceResult('b', t2)] + + merged_results = output_generator.MergeTraceResultsIfNeeded(results) + for r in merged_results: + if r.source_name == 'a': + self.assertEquals(r.raw_data, t1) + elif r.source_name == 'b': + self.assertEquals(r.raw_data, t2) + self.assertEquals(len(merged_results), len(results)) + os.remove(update_systrace_trace_viewer.SYSTRACE_TRACE_VIEWER_HTML_FILE) + + @decorators.HostOnlyTest + def testHtmlOutputGenerationFormatsSingleTrace(self): + update_systrace_trace_viewer.update(force_update=True) + self.assertTrue(os.path.exists( + update_systrace_trace_viewer.SYSTRACE_TRACE_VIEWER_HTML_FILE)) + with open(ATRACE_DATA) as f: + atrace_data = f.read().replace(" ", "").strip() + trace_results = [trace_result.TraceResult('systemTraceEvents', + atrace_data)] + output_file_name = util.generate_random_filename_for_test() + final_path = output_generator.GenerateHTMLOutput(trace_results, + output_file_name) + with open(output_file_name, 'r') as f: + output_generator.GenerateHTMLOutput(trace_results, f.name) + html_output = f.read() + trace_data = (html_output.split( + ''))[0].replace(" ", "").strip() + os.remove(final_path) + + # Ensure the trace data written in HTML is located within the + # correct place in the HTML document and that the data is not + # malformed. + self.assertEquals(trace_data, atrace_data) + os.remove(update_systrace_trace_viewer.SYSTRACE_TRACE_VIEWER_HTML_FILE) + + @decorators.HostOnlyTest + def testHtmlOutputGenerationFormatsMultipleTraces(self): + trace_results = [] + trace_data_builder = trace_data_module.TraceDataBuilder() + + with open(BATTOR_DATA) as fp: + battor_data = fp.read() + trace_results.append( + trace_result.TraceResult('powerTraceAsString', battor_data)) + trace_data_builder.AddTraceFor( + trace_data_module.BATTOR_TRACE_PART, battor_data) + + with open(ATRACE_DATA) as fp: + atrace_data = fp.read() + trace_results.append( + trace_result.TraceResult('systemTraceEvents', atrace_data)) + trace_data_builder.AddTraceFor(trace_data_module.ATRACE_PART, atrace_data) + + + with open(COMBINED_PROFILE_CHROME_DATA) as fp: + chrome_data = fp.read() + trace_results.append( + trace_result.TraceResult('traceEvents', json.loads(chrome_data))) + trace_data_builder.AddTraceFor( + trace_data_module.CHROME_TRACE_PART, json.loads(chrome_data)) + + trace_results.append( + trace_result.TraceResult('systraceController', str({}))) + trace_data_builder.AddTraceFor(trace_data_module.TELEMETRY_PART, {}) + + try: + data_builder_out = util.generate_random_filename_for_test() + output_generator_out = util.generate_random_filename_for_test() + output_generator.GenerateHTMLOutput(trace_results, output_generator_out) + trace_data_builder.AsData().Serialize(data_builder_out, 'Systrace') + + output_generator_md5sum = hashlib.md5( + open(output_generator_out, 'rb').read()).hexdigest() + data_builder_md5sum = hashlib.md5( + open(data_builder_out, 'rb').read()).hexdigest() + + self.assertEqual(output_generator_md5sum, data_builder_md5sum) + finally: + def del_if_exist(path): + try: + os.remove(path) + except IOError: + pass + del_if_exist(output_generator_out) + del_if_exist(data_builder_out) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/prefix.html b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/prefix.html new file mode 100644 index 0000000..828eef0 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/prefix.html @@ -0,0 +1,70 @@ + + + + + +Android System Trace + +{{SYSTRACE_TRACE_VIEWER_HTML}} + + + + + + + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/run_systrace.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/run_systrace.py new file mode 100644 index 0000000..78673bd --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/run_systrace.py @@ -0,0 +1,199 @@ +#!/usr/bin/env python + +# Copyright (c) 2011 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Android system-wide tracing utility. + +This is a tool for capturing a trace that includes data from both userland and +the kernel. It creates an HTML file for visualizing the trace. +""" + +# Make sure we're using a new enough version of Python. +# The flags= parameter of re.sub() is new in Python 2.7. And Systrace does not +# support Python 3 yet. + +import sys + +version = sys.version_info[:2] +if version != (2, 7): + sys.stderr.write('This script does not support Python %d.%d. ' + 'Please use Python 2.7.\n' % version) + sys.exit(1) + + +import optparse +import os +import time + +_SYSTRACE_DIR = os.path.abspath( + os.path.join(os.path.dirname(__file__), os.path.pardir)) +_CATAPULT_DIR = os.path.join( + os.path.dirname(os.path.abspath(__file__)), os.path.pardir, os.path.pardir) +_DEVIL_DIR = os.path.join(_CATAPULT_DIR, 'devil') +if _DEVIL_DIR not in sys.path: + sys.path.insert(0, _DEVIL_DIR) +if _SYSTRACE_DIR not in sys.path: + sys.path.insert(0, _SYSTRACE_DIR) + +from devil import devil_env +from devil.android.sdk import adb_wrapper +from systrace import systrace_runner +from systrace import util +from systrace.tracing_agents import atrace_agent +from systrace.tracing_agents import atrace_from_file_agent +from systrace.tracing_agents import battor_trace_agent +from systrace.tracing_agents import ftrace_agent +from systrace.tracing_agents import walt_agent + + +ALL_MODULES = [atrace_agent, atrace_from_file_agent, + battor_trace_agent, ftrace_agent, walt_agent] + + +def parse_options(argv): + """Parses and checks the command-line options. + + Returns: + A tuple containing the options structure and a list of categories to + be traced. + """ + usage = 'Usage: %prog [options] [category1 [category2 ...]]' + desc = 'Example: %prog -b 32768 -t 15 gfx input view sched freq' + parser = optparse.OptionParser(usage=usage, description=desc, + conflict_handler='resolve') + parser = util.get_main_options(parser) + + parser.add_option('-l', '--list-categories', dest='list_categories', + default=False, action='store_true', + help='list the available categories and exit') + + # Add the other agent parsing options to the parser. For Systrace on the + # command line, all agents are added. For Android, only the compatible agents + # will be added. + for module in ALL_MODULES: + option_group = module.add_options(parser) + if option_group: + parser.add_option_group(option_group) + + options, categories = parser.parse_args(argv[1:]) + + if options.output_file is None: + options.output_file = 'trace.json' if options.write_json else 'trace.html' + + if options.link_assets or options.asset_dir != 'trace-viewer': + parser.error('--link-assets and --asset-dir are deprecated.') + + if options.trace_time and options.trace_time < 0: + parser.error('the trace time must be a non-negative number') + + if (options.trace_buf_size is not None) and (options.trace_buf_size <= 0): + parser.error('the trace buffer size must be a positive number') + + return (options, categories) + +def find_adb(): + """Finds adb on the path. + + This method is provided to avoid the issue of diskutils.spawn's + find_executable which first searches the current directory before + searching $PATH. That behavior results in issues where systrace.py + uses a different adb than the one in the path. + """ + paths = os.environ['PATH'].split(os.pathsep) + executable = 'adb' + if sys.platform == 'win32': + executable = executable + '.exe' + for p in paths: + f = os.path.join(p, executable) + if os.path.isfile(f): + return f + return None + +def initialize_devil(): + """Initialize devil to use adb from $PATH""" + adb_path = find_adb() + if adb_path is None: + print >> sys.stderr, "Unable to find adb, is it in your path?" + sys.exit(1) + devil_dynamic_config = { + 'config_type': 'BaseConfig', + 'dependencies': { + 'adb': { + 'file_info': { + devil_env.GetPlatform(): { + 'local_paths': [os.path.abspath(adb_path)] + } + } + } + } + } + devil_env.config.Initialize(configs=[devil_dynamic_config]) + + +def main_impl(arguments): + # Parse the command line options. + options, categories = parse_options(arguments) + + # Override --atrace-categories and --ftrace-categories flags if command-line + # categories are provided. + if categories: + if options.target == 'android': + options.atrace_categories = categories + elif options.target == 'linux': + options.ftrace_categories = categories + else: + raise RuntimeError('Categories are only valid for atrace/ftrace. Target ' + 'platform must be either Android or Linux.') + + # Include atrace categories by default in Systrace. + if options.target == 'android' and not options.atrace_categories: + options.atrace_categories = atrace_agent.DEFAULT_CATEGORIES + + if options.target == 'android' and not options.from_file: + initialize_devil() + if not options.device_serial_number: + devices = [a.GetDeviceSerial() for a in adb_wrapper.AdbWrapper.Devices()] + if len(devices) == 0: + raise RuntimeError('No ADB devices connected.') + elif len(devices) >= 2: + raise RuntimeError('Multiple devices connected, serial number required') + options.device_serial_number = devices[0] + + # If list_categories is selected, just print the list of categories. + # In this case, use of the tracing controller is not necessary. + if options.list_categories: + if options.target == 'android': + atrace_agent.list_categories(options) + elif options.target == 'linux': + ftrace_agent.list_categories(options) + return + + # Set up the systrace runner and start tracing. + controller = systrace_runner.SystraceRunner( + os.path.dirname(os.path.abspath(__file__)), options) + controller.StartTracing() + + # Wait for the given number of seconds or until the user presses enter. + # pylint: disable=superfluous-parens + # (need the parens so no syntax error if trying to load with Python 3) + if options.from_file is not None: + print('Reading results from file.') + elif options.trace_time: + print('Starting tracing (%d seconds)' % options.trace_time) + time.sleep(options.trace_time) + else: + raw_input('Starting tracing (stop with enter)') + + # Stop tracing and collect the output. + print('Tracing completed. Collecting output...') + controller.StopTracing() + print('Outputting Systrace results...') + controller.OutputSystraceResults(write_json=options.write_json) + +def main(): + main_impl(sys.argv) + +if __name__ == '__main__' and __package__ is None: + main() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/suffix.html b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/suffix.html new file mode 100644 index 0000000..308b1d0 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/suffix.html @@ -0,0 +1,2 @@ + + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/systrace_runner.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/systrace_runner.py new file mode 100644 index 0000000..d8b9883 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/systrace_runner.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python + +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +'''Implementation of tracing controller for systrace. This class creates the +necessary tracing agents for systrace, runs them, and outputs the results +as an HTML or JSON file.''' + +from systrace import output_generator +from systrace import tracing_controller +from systrace.tracing_agents import android_process_data_agent +from systrace.tracing_agents import atrace_agent +from systrace.tracing_agents import atrace_from_file_agent +from systrace.tracing_agents import battor_trace_agent +from systrace.tracing_agents import ftrace_agent +from systrace.tracing_agents import walt_agent + +AGENT_MODULES = [android_process_data_agent, atrace_agent, + atrace_from_file_agent, battor_trace_agent, + ftrace_agent, walt_agent] + +class SystraceRunner(object): + def __init__(self, script_dir, options): + """Constructor. + + Args: + script_dir: Directory containing the trace viewer script + (systrace_trace_viewer.html) + options: Object containing command line options. + """ + # Parse command line arguments and create agents. + self._script_dir = script_dir + self._out_filename = options.output_file + agents_with_config = tracing_controller.CreateAgentsWithConfig( + options, AGENT_MODULES) + controller_config = tracing_controller.GetControllerConfig(options) + + # Set up tracing controller. + self._tracing_controller = tracing_controller.TracingController( + agents_with_config, controller_config) + + def StartTracing(self): + self._tracing_controller.StartTracing() + + def StopTracing(self): + self._tracing_controller.StopTracing() + + def OutputSystraceResults(self, write_json=False): + """Output the results of systrace to a file. + + If output is necessary, then write the results of systrace to either (a) + a standalone HTML file, or (b) a json file which can be read by the + trace viewer. + + Args: + write_json: Whether to output to a json file (if false, use HTML file) + """ + print 'Tracing complete, writing results' + if write_json: + result = output_generator.GenerateJSONOutput( + self._tracing_controller.all_results, + self._out_filename) + else: + result = output_generator.GenerateHTMLOutput( + self._tracing_controller.all_results, + self._out_filename) + print '\nWrote trace %s file: file://%s\n' % (('JSON' if write_json + else 'HTML'), result) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/systrace_trace_viewer.html b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/systrace_trace_viewer.html new file mode 100644 index 0000000..2b042be --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/systrace_trace_viewer.html @@ -0,0 +1,9630 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_data b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_data new file mode 100644 index 0000000..2aceb18 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_data @@ -0,0 +1,127 @@ +# tracer: nop +# +# entries-in-buffer/entries-written: 116/116 #P:1 +# +# _-----=> irqs-off +# / _----=> need-resched +# | / _---=> hardirq/softirq +# || / _--=> preempt-depth +# ||| / delay +# TASK-PID CPU# |||| TIMESTAMP FUNCTION +# | | | |||| | | +atrace-14446 [000] ...2 1212.465062: sched_switch: prev_comm=atrace prev_pid=14446 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1212.465074: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.465082: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 +ksoftirqd/0-3 [000] ...2 1212.465092: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1212.465102: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.465126: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 +ksoftirqd/0-3 [000] ...2 1212.465132: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1212.465139: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.465145: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 +ksoftirqd/0-3 [000] ...2 1212.465227: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h5 1212.465297: sched_wakeup: comm=adbd pid=212 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.465306: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=adbd next_pid=212 next_prio=120 +dsx_exp_workque-212 [000] d..4 1212.465329: sched_wakeup: comm=adbd pid=209 prio=120 success=1 target_cpu=000 +dsx_exp_workque-212 [000] ...2 1212.465348: sched_switch: prev_comm=adbd prev_pid=212 prev_prio=120 prev_state=S ==> next_comm=adbd next_pid=209 next_prio=120 +uether-209 [000] d..4 1212.465395: sched_wakeup: comm=adbd pid=211 prio=120 success=1 target_cpu=000 +uether-209 [000] ...2 1212.465441: sched_switch: prev_comm=adbd prev_pid=209 prev_prio=120 prev_state=S ==> next_comm=adbd next_pid=211 next_prio=120 +dsx_rebuild_wor-211 [000] ...2 1212.465448: sched_switch: prev_comm=adbd prev_pid=211 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h5 1212.574554: sched_wakeup: comm=sensors.qcom pid=292 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.574566: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=sensors.qcom next_pid=292 next_prio=120 +irq/363-ARM64 s-292 [000] ...2 1212.574665: sched_switch: prev_comm=sensors.qcom prev_pid=292 prev_prio=120 prev_state=S ==> next_comm=sensors.qcom next_pid=14447 next_prio=120 +sensors.qcom-14447 [000] d..4 1212.574797: sched_wakeup: comm=sensors.qcom pid=1593 prio=120 success=1 target_cpu=000 +sensors.qcom-14447 [000] ...2 1212.574802: sched_switch: prev_comm=sensors.qcom prev_pid=14447 prev_prio=120 prev_state=R+ ==> next_comm=sensors.qcom next_pid=1593 next_prio=120 +sensors.qcom-1593 [000] ...2 1212.574819: sched_switch: prev_comm=sensors.qcom prev_pid=1593 prev_prio=120 prev_state=D ==> next_comm=sensors.qcom next_pid=14447 next_prio=120 +sensors.qcom-14447 [000] d..3 1212.574823: sched_wakeup: comm=sensors.qcom pid=1593 prio=120 success=1 target_cpu=000 +sensors.qcom-14447 [000] ...2 1212.574827: sched_switch: prev_comm=sensors.qcom prev_pid=14447 prev_prio=120 prev_state=R+ ==> next_comm=sensors.qcom next_pid=1593 next_prio=120 +sensors.qcom-1593 [000] d..4 1212.574865: sched_wakeup: comm=sensors.qcom pid=760 prio=120 success=1 target_cpu=000 +sensors.qcom-1593 [000] ...2 1212.574876: sched_switch: prev_comm=sensors.qcom prev_pid=1593 prev_prio=120 prev_state=S ==> next_comm=sensors.qcom next_pid=760 next_prio=120 +sensors.qcom-760 [000] d..4 1212.574905: sched_wakeup: comm=system_server pid=782 prio=118 success=1 target_cpu=000 +sensors.qcom-760 [000] ...2 1212.574917: sched_switch: prev_comm=sensors.qcom prev_pid=760 prev_prio=120 prev_state=S ==> next_comm=system_server next_pid=782 next_prio=118 +system_server-782 [000] d..4 1212.574981: sched_wakeup: comm=system_server pid=785 prio=118 success=1 target_cpu=000 +system_server-782 [000] ...2 1212.575009: sched_switch: prev_comm=system_server prev_pid=782 prev_prio=118 prev_state=S ==> next_comm=system_server next_pid=785 next_prio=118 +system_server-785 [000] ...2 1212.575045: sched_switch: prev_comm=system_server prev_pid=785 prev_prio=118 prev_state=S ==> next_comm=sensors.qcom next_pid=14447 next_prio=120 +sensors.qcom-14447 [000] ...3 1212.575143: sched_switch: prev_comm=sensors.qcom prev_pid=14447 prev_prio=120 prev_state=x ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1212.575153: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.575159: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 +ksoftirqd/0-3 [000] ...2 1212.575167: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1212.575175: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.575181: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 +ksoftirqd/0-3 [000] ...2 1212.575188: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1212.575195: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.575201: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 +ksoftirqd/0-3 [000] ...2 1212.575211: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h4 1212.649601: sched_wakeup: comm=MMHandlerThread pid=7231 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.649614: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=MMHandlerThread next_pid=7231 next_prio=120 +MMHandlerThread-7231 [000] ...2 1212.649630: sched_switch: prev_comm=MMHandlerThread prev_pid=7231 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h6 1212.729539: sched_wakeup: comm=kworker/u:1 pid=21 prio=120 success=1 target_cpu=000 + -0 [000] dNs6 1212.729550: sched_wakeup: comm=kworker/0:2H pid=557 prio=100 success=1 target_cpu=000 + -0 [000] ...2 1212.729563: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=kworker/u:1 next_pid=21 next_prio=120 +kworker/u:1-21 [000] d..5 1212.729571: sched_wakeup: comm=mpdecision pid=2046 prio=113 success=1 target_cpu=000 +kworker/u:1-21 [000] ...2 1212.729578: sched_switch: prev_comm=kworker/u:1 prev_pid=21 prev_prio=120 prev_state=S ==> next_comm=kworker/0:2H next_pid=557 next_prio=100 +thermal-engine-557 [000] d..4 1212.729597: sched_wakeup: comm=kworker/0:1H pid=17 prio=100 success=1 target_cpu=000 +thermal-engine-557 [000] ...2 1212.729600: sched_switch: prev_comm=kworker/0:2H prev_pid=557 prev_prio=100 prev_state=D ==> next_comm=mpdecision next_pid=2046 next_prio=113 +mpdecision-2046 [000] ...2 1212.729801: sched_switch: prev_comm=mpdecision prev_pid=2046 prev_prio=113 prev_state=S ==> next_comm=kworker/0:1H next_pid=17 next_prio=100 +kworker/0:1H-17 [000] ...2 1212.730104: sched_switch: prev_comm=kworker/0:1H prev_pid=17 prev_prio=100 prev_state=D ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1212.730134: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.730154: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 +ksoftirqd/0-3 [000] ...2 1212.730176: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1212.730201: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.730220: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 +ksoftirqd/0-3 [000] ...2 1212.730241: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1212.730262: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.730280: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 +ksoftirqd/0-3 [000] ...2 1212.730303: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h6 1212.730638: sched_wakeup: comm=kworker/u:0H pid=7 prio=100 success=1 target_cpu=000 + -0 [000] ...2 1212.730669: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=kworker/u:0H next_pid=7 next_prio=100 +migration/0-7 [000] d..6 1212.730707: sched_wakeup: comm=kworker/0:1H pid=17 prio=100 success=1 target_cpu=000 +migration/0-7 [000] ...2 1212.730728: sched_switch: prev_comm=kworker/u:0H prev_pid=7 prev_prio=100 prev_state=D ==> next_comm=kworker/0:1H next_pid=17 next_prio=100 +kworker/0:1H-17 [000] ...2 1212.730916: sched_switch: prev_comm=kworker/0:1H prev_pid=17 prev_prio=100 prev_state=D ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h6 1212.731632: sched_wakeup: comm=kworker/u:0H pid=7 prio=100 success=1 target_cpu=000 + -0 [000] ...2 1212.731661: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=kworker/u:0H next_pid=7 next_prio=100 +migration/0-7 [000] d..6 1212.731702: sched_wakeup: comm=kworker/0:1H pid=17 prio=100 success=1 target_cpu=000 +migration/0-7 [000] ...2 1212.731722: sched_switch: prev_comm=kworker/u:0H prev_pid=7 prev_prio=100 prev_state=D ==> next_comm=kworker/0:1H next_pid=17 next_prio=100 +kworker/0:1H-17 [000] ...2 1212.731832: sched_switch: prev_comm=kworker/0:1H prev_pid=17 prev_prio=100 prev_state=D ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h6 1212.732685: sched_wakeup: comm=kworker/u:0H pid=7 prio=100 success=1 target_cpu=000 + -0 [000] ...2 1212.732714: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=kworker/u:0H next_pid=7 next_prio=100 +migration/0-7 [000] d..6 1212.732747: sched_wakeup: comm=kworker/0:1H pid=17 prio=100 success=1 target_cpu=000 +migration/0-7 [000] ...2 1212.732767: sched_switch: prev_comm=kworker/u:0H prev_pid=7 prev_prio=100 prev_state=D ==> next_comm=kworker/0:1H next_pid=17 next_prio=100 +kworker/0:1H-17 [000] d..4 1212.732810: sched_wakeup: comm=kworker/0:2H pid=557 prio=100 success=1 target_cpu=000 +kworker/0:1H-17 [000] ...2 1212.732829: sched_switch: prev_comm=kworker/0:1H prev_pid=17 prev_prio=100 prev_state=S ==> next_comm=kworker/0:2H next_pid=557 next_prio=100 +thermal-engine-557 [000] ...2 1212.732854: sched_switch: prev_comm=kworker/0:2H prev_pid=557 prev_prio=100 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h4 1212.876266: sched_wakeup: comm=RILSender0 pid=1365 prio=120 success=1 target_cpu=000 + -0 [000] dNh4 1212.876284: sched_wakeup: comm=MMHandlerThread pid=7231 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.876316: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=RILSender0 next_pid=1365 next_prio=120 +RILSender0-1365 [000] ...2 1212.876415: sched_switch: prev_comm=RILSender0 prev_pid=1365 prev_prio=120 prev_state=S ==> next_comm=MMHandlerThread next_pid=7231 next_prio=120 +MMHandlerThread-7231 [000] ...2 1212.876454: sched_switch: prev_comm=MMHandlerThread prev_pid=7231 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h4 1213.089569: sched_wakeup: comm=Thread-625 pid=5750 prio=120 success=1 target_cpu=000 + -0 [000] dNh4 1213.089587: sched_wakeup: comm=MMHandlerThread pid=7231 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1213.089622: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=Thread-625 next_pid=5750 next_prio=120 +AsyncTask #1-5750 [000] ...2 1213.089842: sched_switch: prev_comm=Thread-625 prev_pid=5750 prev_prio=120 prev_state=S ==> next_comm=MMHandlerThread next_pid=7231 next_prio=120 +MMHandlerThread-7231 [000] ...2 1213.089879: sched_switch: prev_comm=MMHandlerThread prev_pid=7231 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h4 1213.327439: sched_wakeup: comm=pandora.android pid=5395 prio=120 success=1 target_cpu=000 + -0 [000] dNh4 1213.327455: sched_wakeup: comm=MMHandlerThread pid=7231 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1213.327487: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=MMHandlerThread next_pid=7231 next_prio=120 +MMHandlerThread-7231 [000] ...2 1213.327518: sched_switch: prev_comm=MMHandlerThread prev_pid=7231 prev_prio=120 prev_state=S ==> next_comm=pandora.android next_pid=5395 next_prio=120 +pandora.android-5395 [000] d..4 1213.327718: sched_wakeup: comm=Binder_1 pid=780 prio=120 success=1 target_cpu=000 +pandora.android-5395 [000] ...2 1213.327739: sched_switch: prev_comm=pandora.android prev_pid=5395 prev_prio=120 prev_state=R+ ==> next_comm=Binder_1 next_pid=780 next_prio=120 +Binder_1-780 [000] ...2 1213.327763: sched_switch: prev_comm=Binder_1 prev_pid=780 prev_prio=120 prev_state=D ==> next_comm=pandora.android next_pid=5395 next_prio=120 +pandora.android-5395 [000] d..3 1213.327781: sched_wakeup: comm=Binder_1 pid=780 prio=120 success=1 target_cpu=000 +pandora.android-5395 [000] ...2 1213.327795: sched_switch: prev_comm=pandora.android prev_pid=5395 prev_prio=120 prev_state=R+ ==> next_comm=Binder_1 next_pid=780 next_prio=120 +Binder_1-780 [000] d..4 1213.328056: sched_wakeup: comm=Binder_1 pid=878 prio=120 success=1 target_cpu=000 +Binder_1-780 [000] ...2 1213.328095: sched_switch: prev_comm=Binder_1 prev_pid=780 prev_prio=120 prev_state=S ==> next_comm=Binder_1 next_pid=878 next_prio=120 +Binder_1-878 [000] d..4 1213.328263: sched_wakeup: comm=Binder_1 pid=780 prio=120 success=1 target_cpu=000 +Binder_1-878 [000] ...2 1213.328345: sched_switch: prev_comm=Binder_1 prev_pid=878 prev_prio=120 prev_state=S ==> next_comm=Binder_1 next_pid=780 next_prio=120 +Binder_1-780 [000] ...2 1213.328558: sched_switch: prev_comm=Binder_1 prev_pid=780 prev_prio=120 prev_state=S ==> next_comm=pandora.android next_pid=5395 next_prio=120 +pandora.android-5395 [000] ...2 1213.328743: sched_switch: prev_comm=pandora.android prev_pid=5395 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1213.328773: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1213.328793: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 +ksoftirqd/0-3 [000] ...2 1213.328821: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1213.328846: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1213.328866: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 +ksoftirqd/0-3 [000] ...2 1213.328891: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1213.328913: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1213.328931: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 +ksoftirqd/0-3 [000] ...2 1213.328964: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h4 1213.465138: sched_wakeup: comm=atrace pid=14446 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1213.465171: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=atrace next_pid=14446 next_prio=120 diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_data_raw b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_data_raw new file mode 100644 index 0000000..1c8e086 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_data_raw @@ -0,0 +1,128 @@ + +# tracer: nop +# +# entries-in-buffer/entries-written: 116/116 #P:1 +# +# _-----=> irqs-off +# / _----=> need-resched +# | / _---=> hardirq/softirq +# || / _--=> preempt-depth +# ||| / delay +# TASK-PID CPU# |||| TIMESTAMP FUNCTION +# | | | |||| | | + atrace-14446 [000] ...2 1212.465062: sched_switch: prev_comm=atrace prev_pid=14446 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1212.465074: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.465082: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 [000] ...2 1212.465092: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1212.465102: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.465126: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 [000] ...2 1212.465132: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1212.465139: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.465145: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 [000] ...2 1212.465227: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h5 1212.465297: sched_wakeup: comm=adbd pid=212 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.465306: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=adbd next_pid=212 next_prio=120 + adbd-212 [000] d..4 1212.465329: sched_wakeup: comm=adbd pid=209 prio=120 success=1 target_cpu=000 + adbd-212 [000] ...2 1212.465348: sched_switch: prev_comm=adbd prev_pid=212 prev_prio=120 prev_state=S ==> next_comm=adbd next_pid=209 next_prio=120 + adbd-209 [000] d..4 1212.465395: sched_wakeup: comm=adbd pid=211 prio=120 success=1 target_cpu=000 + adbd-209 [000] ...2 1212.465441: sched_switch: prev_comm=adbd prev_pid=209 prev_prio=120 prev_state=S ==> next_comm=adbd next_pid=211 next_prio=120 + adbd-211 [000] ...2 1212.465448: sched_switch: prev_comm=adbd prev_pid=211 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h5 1212.574554: sched_wakeup: comm=sensors.qcom pid=292 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.574566: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=sensors.qcom next_pid=292 next_prio=120 + sensors.qcom-292 [000] ...2 1212.574665: sched_switch: prev_comm=sensors.qcom prev_pid=292 prev_prio=120 prev_state=S ==> next_comm=sensors.qcom next_pid=14447 next_prio=120 + sensors.qcom-14447 [000] d..4 1212.574797: sched_wakeup: comm=sensors.qcom pid=1593 prio=120 success=1 target_cpu=000 + sensors.qcom-14447 [000] ...2 1212.574802: sched_switch: prev_comm=sensors.qcom prev_pid=14447 prev_prio=120 prev_state=R+ ==> next_comm=sensors.qcom next_pid=1593 next_prio=120 + sensors.qcom-1593 [000] ...2 1212.574819: sched_switch: prev_comm=sensors.qcom prev_pid=1593 prev_prio=120 prev_state=D ==> next_comm=sensors.qcom next_pid=14447 next_prio=120 + sensors.qcom-14447 [000] d..3 1212.574823: sched_wakeup: comm=sensors.qcom pid=1593 prio=120 success=1 target_cpu=000 + sensors.qcom-14447 [000] ...2 1212.574827: sched_switch: prev_comm=sensors.qcom prev_pid=14447 prev_prio=120 prev_state=R+ ==> next_comm=sensors.qcom next_pid=1593 next_prio=120 + sensors.qcom-1593 [000] d..4 1212.574865: sched_wakeup: comm=sensors.qcom pid=760 prio=120 success=1 target_cpu=000 + sensors.qcom-1593 [000] ...2 1212.574876: sched_switch: prev_comm=sensors.qcom prev_pid=1593 prev_prio=120 prev_state=S ==> next_comm=sensors.qcom next_pid=760 next_prio=120 + sensors.qcom-760 [000] d..4 1212.574905: sched_wakeup: comm=system_server pid=782 prio=118 success=1 target_cpu=000 + sensors.qcom-760 [000] ...2 1212.574917: sched_switch: prev_comm=sensors.qcom prev_pid=760 prev_prio=120 prev_state=S ==> next_comm=system_server next_pid=782 next_prio=118 + system_server-782 [000] d..4 1212.574981: sched_wakeup: comm=system_server pid=785 prio=118 success=1 target_cpu=000 + system_server-782 [000] ...2 1212.575009: sched_switch: prev_comm=system_server prev_pid=782 prev_prio=118 prev_state=S ==> next_comm=system_server next_pid=785 next_prio=118 + system_server-785 [000] ...2 1212.575045: sched_switch: prev_comm=system_server prev_pid=785 prev_prio=118 prev_state=S ==> next_comm=sensors.qcom next_pid=14447 next_prio=120 + sensors.qcom-14447 [000] ...3 1212.575143: sched_switch: prev_comm=sensors.qcom prev_pid=14447 prev_prio=120 prev_state=x ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1212.575153: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.575159: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 [000] ...2 1212.575167: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1212.575175: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.575181: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 [000] ...2 1212.575188: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1212.575195: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.575201: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 [000] ...2 1212.575211: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h4 1212.649601: sched_wakeup: comm=MMHandlerThread pid=7231 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.649614: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=MMHandlerThread next_pid=7231 next_prio=120 + MMHandlerThread-7231 [000] ...2 1212.649630: sched_switch: prev_comm=MMHandlerThread prev_pid=7231 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h6 1212.729539: sched_wakeup: comm=kworker/u:1 pid=21 prio=120 success=1 target_cpu=000 + -0 [000] dNs6 1212.729550: sched_wakeup: comm=kworker/0:2H pid=557 prio=100 success=1 target_cpu=000 + -0 [000] ...2 1212.729563: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=kworker/u:1 next_pid=21 next_prio=120 + kworker/u:1-21 [000] d..5 1212.729571: sched_wakeup: comm=mpdecision pid=2046 prio=113 success=1 target_cpu=000 + kworker/u:1-21 [000] ...2 1212.729578: sched_switch: prev_comm=kworker/u:1 prev_pid=21 prev_prio=120 prev_state=S ==> next_comm=kworker/0:2H next_pid=557 next_prio=100 + kworker/0:2H-557 [000] d..4 1212.729597: sched_wakeup: comm=kworker/0:1H pid=17 prio=100 success=1 target_cpu=000 + kworker/0:2H-557 [000] ...2 1212.729600: sched_switch: prev_comm=kworker/0:2H prev_pid=557 prev_prio=100 prev_state=D ==> next_comm=mpdecision next_pid=2046 next_prio=113 + mpdecision-2046 [000] ...2 1212.729801: sched_switch: prev_comm=mpdecision prev_pid=2046 prev_prio=113 prev_state=S ==> next_comm=kworker/0:1H next_pid=17 next_prio=100 + kworker/0:1H-17 [000] ...2 1212.730104: sched_switch: prev_comm=kworker/0:1H prev_pid=17 prev_prio=100 prev_state=D ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1212.730134: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.730154: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 [000] ...2 1212.730176: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1212.730201: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.730220: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 [000] ...2 1212.730241: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1212.730262: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.730280: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 [000] ...2 1212.730303: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h6 1212.730638: sched_wakeup: comm=kworker/u:0H pid=7 prio=100 success=1 target_cpu=000 + -0 [000] ...2 1212.730669: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=kworker/u:0H next_pid=7 next_prio=100 + kworker/u:0H-7 [000] d..6 1212.730707: sched_wakeup: comm=kworker/0:1H pid=17 prio=100 success=1 target_cpu=000 + kworker/u:0H-7 [000] ...2 1212.730728: sched_switch: prev_comm=kworker/u:0H prev_pid=7 prev_prio=100 prev_state=D ==> next_comm=kworker/0:1H next_pid=17 next_prio=100 + kworker/0:1H-17 [000] ...2 1212.730916: sched_switch: prev_comm=kworker/0:1H prev_pid=17 prev_prio=100 prev_state=D ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h6 1212.731632: sched_wakeup: comm=kworker/u:0H pid=7 prio=100 success=1 target_cpu=000 + -0 [000] ...2 1212.731661: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=kworker/u:0H next_pid=7 next_prio=100 + kworker/u:0H-7 [000] d..6 1212.731702: sched_wakeup: comm=kworker/0:1H pid=17 prio=100 success=1 target_cpu=000 + kworker/u:0H-7 [000] ...2 1212.731722: sched_switch: prev_comm=kworker/u:0H prev_pid=7 prev_prio=100 prev_state=D ==> next_comm=kworker/0:1H next_pid=17 next_prio=100 + kworker/0:1H-17 [000] ...2 1212.731832: sched_switch: prev_comm=kworker/0:1H prev_pid=17 prev_prio=100 prev_state=D ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h6 1212.732685: sched_wakeup: comm=kworker/u:0H pid=7 prio=100 success=1 target_cpu=000 + -0 [000] ...2 1212.732714: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=kworker/u:0H next_pid=7 next_prio=100 + kworker/u:0H-7 [000] d..6 1212.732747: sched_wakeup: comm=kworker/0:1H pid=17 prio=100 success=1 target_cpu=000 + kworker/u:0H-7 [000] ...2 1212.732767: sched_switch: prev_comm=kworker/u:0H prev_pid=7 prev_prio=100 prev_state=D ==> next_comm=kworker/0:1H next_pid=17 next_prio=100 + kworker/0:1H-17 [000] d..4 1212.732810: sched_wakeup: comm=kworker/0:2H pid=557 prio=100 success=1 target_cpu=000 + kworker/0:1H-17 [000] ...2 1212.732829: sched_switch: prev_comm=kworker/0:1H prev_pid=17 prev_prio=100 prev_state=S ==> next_comm=kworker/0:2H next_pid=557 next_prio=100 + kworker/0:2H-557 [000] ...2 1212.732854: sched_switch: prev_comm=kworker/0:2H prev_pid=557 prev_prio=100 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h4 1212.876266: sched_wakeup: comm=RILSender0 pid=1365 prio=120 success=1 target_cpu=000 + -0 [000] dNh4 1212.876284: sched_wakeup: comm=MMHandlerThread pid=7231 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.876316: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=RILSender0 next_pid=1365 next_prio=120 + RILSender0-1365 [000] ...2 1212.876415: sched_switch: prev_comm=RILSender0 prev_pid=1365 prev_prio=120 prev_state=S ==> next_comm=MMHandlerThread next_pid=7231 next_prio=120 + MMHandlerThread-7231 [000] ...2 1212.876454: sched_switch: prev_comm=MMHandlerThread prev_pid=7231 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h4 1213.089569: sched_wakeup: comm=Thread-625 pid=5750 prio=120 success=1 target_cpu=000 + -0 [000] dNh4 1213.089587: sched_wakeup: comm=MMHandlerThread pid=7231 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1213.089622: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=Thread-625 next_pid=5750 next_prio=120 + Thread-625-5750 [000] ...2 1213.089842: sched_switch: prev_comm=Thread-625 prev_pid=5750 prev_prio=120 prev_state=S ==> next_comm=MMHandlerThread next_pid=7231 next_prio=120 + MMHandlerThread-7231 [000] ...2 1213.089879: sched_switch: prev_comm=MMHandlerThread prev_pid=7231 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h4 1213.327439: sched_wakeup: comm=pandora.android pid=5395 prio=120 success=1 target_cpu=000 + -0 [000] dNh4 1213.327455: sched_wakeup: comm=MMHandlerThread pid=7231 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1213.327487: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=MMHandlerThread next_pid=7231 next_prio=120 + MMHandlerThread-7231 [000] ...2 1213.327518: sched_switch: prev_comm=MMHandlerThread prev_pid=7231 prev_prio=120 prev_state=S ==> next_comm=pandora.android next_pid=5395 next_prio=120 + pandora.android-5395 [000] d..4 1213.327718: sched_wakeup: comm=Binder_1 pid=780 prio=120 success=1 target_cpu=000 + pandora.android-5395 [000] ...2 1213.327739: sched_switch: prev_comm=pandora.android prev_pid=5395 prev_prio=120 prev_state=R+ ==> next_comm=Binder_1 next_pid=780 next_prio=120 + Binder_1-780 [000] ...2 1213.327763: sched_switch: prev_comm=Binder_1 prev_pid=780 prev_prio=120 prev_state=D ==> next_comm=pandora.android next_pid=5395 next_prio=120 + pandora.android-5395 [000] d..3 1213.327781: sched_wakeup: comm=Binder_1 pid=780 prio=120 success=1 target_cpu=000 + pandora.android-5395 [000] ...2 1213.327795: sched_switch: prev_comm=pandora.android prev_pid=5395 prev_prio=120 prev_state=R+ ==> next_comm=Binder_1 next_pid=780 next_prio=120 + Binder_1-780 [000] d..4 1213.328056: sched_wakeup: comm=Binder_1 pid=878 prio=120 success=1 target_cpu=000 + Binder_1-780 [000] ...2 1213.328095: sched_switch: prev_comm=Binder_1 prev_pid=780 prev_prio=120 prev_state=S ==> next_comm=Binder_1 next_pid=878 next_prio=120 + Binder_1-878 [000] d..4 1213.328263: sched_wakeup: comm=Binder_1 pid=780 prio=120 success=1 target_cpu=000 + Binder_1-878 [000] ...2 1213.328345: sched_switch: prev_comm=Binder_1 prev_pid=878 prev_prio=120 prev_state=S ==> next_comm=Binder_1 next_pid=780 next_prio=120 + Binder_1-780 [000] ...2 1213.328558: sched_switch: prev_comm=Binder_1 prev_pid=780 prev_prio=120 prev_state=S ==> next_comm=pandora.android next_pid=5395 next_prio=120 + pandora.android-5395 [000] ...2 1213.328743: sched_switch: prev_comm=pandora.android prev_pid=5395 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1213.328773: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1213.328793: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 [000] ...2 1213.328821: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1213.328846: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1213.328866: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 [000] ...2 1213.328891: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1213.328913: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1213.328931: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 [000] ...2 1213.328964: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h4 1213.465138: sched_wakeup: comm=atrace pid=14446 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1213.465171: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=atrace next_pid=14446 next_prio=120 diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_data_stripped b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_data_stripped new file mode 100644 index 0000000..3261ebf --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_data_stripped @@ -0,0 +1,127 @@ +# tracer: nop +# +# entries-in-buffer/entries-written: 116/116 #P:1 +# +# _-----=> irqs-off +# / _----=> need-resched +# | / _---=> hardirq/softirq +# || / _--=> preempt-depth +# ||| / delay +# TASK-PID CPU# |||| TIMESTAMP FUNCTION +# | | | |||| | | + atrace-14446 [000] ...2 1212.465062: sched_switch: prev_comm=atrace prev_pid=14446 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1212.465074: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.465082: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 [000] ...2 1212.465092: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1212.465102: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.465126: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 [000] ...2 1212.465132: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1212.465139: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.465145: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 [000] ...2 1212.465227: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h5 1212.465297: sched_wakeup: comm=adbd pid=212 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.465306: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=adbd next_pid=212 next_prio=120 + adbd-212 [000] d..4 1212.465329: sched_wakeup: comm=adbd pid=209 prio=120 success=1 target_cpu=000 + adbd-212 [000] ...2 1212.465348: sched_switch: prev_comm=adbd prev_pid=212 prev_prio=120 prev_state=S ==> next_comm=adbd next_pid=209 next_prio=120 + adbd-209 [000] d..4 1212.465395: sched_wakeup: comm=adbd pid=211 prio=120 success=1 target_cpu=000 + adbd-209 [000] ...2 1212.465441: sched_switch: prev_comm=adbd prev_pid=209 prev_prio=120 prev_state=S ==> next_comm=adbd next_pid=211 next_prio=120 + adbd-211 [000] ...2 1212.465448: sched_switch: prev_comm=adbd prev_pid=211 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h5 1212.574554: sched_wakeup: comm=sensors.qcom pid=292 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.574566: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=sensors.qcom next_pid=292 next_prio=120 + sensors.qcom-292 [000] ...2 1212.574665: sched_switch: prev_comm=sensors.qcom prev_pid=292 prev_prio=120 prev_state=S ==> next_comm=sensors.qcom next_pid=14447 next_prio=120 + sensors.qcom-14447 [000] d..4 1212.574797: sched_wakeup: comm=sensors.qcom pid=1593 prio=120 success=1 target_cpu=000 + sensors.qcom-14447 [000] ...2 1212.574802: sched_switch: prev_comm=sensors.qcom prev_pid=14447 prev_prio=120 prev_state=R+ ==> next_comm=sensors.qcom next_pid=1593 next_prio=120 + sensors.qcom-1593 [000] ...2 1212.574819: sched_switch: prev_comm=sensors.qcom prev_pid=1593 prev_prio=120 prev_state=D ==> next_comm=sensors.qcom next_pid=14447 next_prio=120 + sensors.qcom-14447 [000] d..3 1212.574823: sched_wakeup: comm=sensors.qcom pid=1593 prio=120 success=1 target_cpu=000 + sensors.qcom-14447 [000] ...2 1212.574827: sched_switch: prev_comm=sensors.qcom prev_pid=14447 prev_prio=120 prev_state=R+ ==> next_comm=sensors.qcom next_pid=1593 next_prio=120 + sensors.qcom-1593 [000] d..4 1212.574865: sched_wakeup: comm=sensors.qcom pid=760 prio=120 success=1 target_cpu=000 + sensors.qcom-1593 [000] ...2 1212.574876: sched_switch: prev_comm=sensors.qcom prev_pid=1593 prev_prio=120 prev_state=S ==> next_comm=sensors.qcom next_pid=760 next_prio=120 + sensors.qcom-760 [000] d..4 1212.574905: sched_wakeup: comm=system_server pid=782 prio=118 success=1 target_cpu=000 + sensors.qcom-760 [000] ...2 1212.574917: sched_switch: prev_comm=sensors.qcom prev_pid=760 prev_prio=120 prev_state=S ==> next_comm=system_server next_pid=782 next_prio=118 + system_server-782 [000] d..4 1212.574981: sched_wakeup: comm=system_server pid=785 prio=118 success=1 target_cpu=000 + system_server-782 [000] ...2 1212.575009: sched_switch: prev_comm=system_server prev_pid=782 prev_prio=118 prev_state=S ==> next_comm=system_server next_pid=785 next_prio=118 + system_server-785 [000] ...2 1212.575045: sched_switch: prev_comm=system_server prev_pid=785 prev_prio=118 prev_state=S ==> next_comm=sensors.qcom next_pid=14447 next_prio=120 + sensors.qcom-14447 [000] ...3 1212.575143: sched_switch: prev_comm=sensors.qcom prev_pid=14447 prev_prio=120 prev_state=x ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1212.575153: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.575159: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 [000] ...2 1212.575167: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1212.575175: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.575181: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 [000] ...2 1212.575188: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1212.575195: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.575201: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 [000] ...2 1212.575211: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h4 1212.649601: sched_wakeup: comm=MMHandlerThread pid=7231 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.649614: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=MMHandlerThread next_pid=7231 next_prio=120 + MMHandlerThread-7231 [000] ...2 1212.649630: sched_switch: prev_comm=MMHandlerThread prev_pid=7231 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h6 1212.729539: sched_wakeup: comm=kworker/u:1 pid=21 prio=120 success=1 target_cpu=000 + -0 [000] dNs6 1212.729550: sched_wakeup: comm=kworker/0:2H pid=557 prio=100 success=1 target_cpu=000 + -0 [000] ...2 1212.729563: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=kworker/u:1 next_pid=21 next_prio=120 + kworker/u:1-21 [000] d..5 1212.729571: sched_wakeup: comm=mpdecision pid=2046 prio=113 success=1 target_cpu=000 + kworker/u:1-21 [000] ...2 1212.729578: sched_switch: prev_comm=kworker/u:1 prev_pid=21 prev_prio=120 prev_state=S ==> next_comm=kworker/0:2H next_pid=557 next_prio=100 + kworker/0:2H-557 [000] d..4 1212.729597: sched_wakeup: comm=kworker/0:1H pid=17 prio=100 success=1 target_cpu=000 + kworker/0:2H-557 [000] ...2 1212.729600: sched_switch: prev_comm=kworker/0:2H prev_pid=557 prev_prio=100 prev_state=D ==> next_comm=mpdecision next_pid=2046 next_prio=113 + mpdecision-2046 [000] ...2 1212.729801: sched_switch: prev_comm=mpdecision prev_pid=2046 prev_prio=113 prev_state=S ==> next_comm=kworker/0:1H next_pid=17 next_prio=100 + kworker/0:1H-17 [000] ...2 1212.730104: sched_switch: prev_comm=kworker/0:1H prev_pid=17 prev_prio=100 prev_state=D ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1212.730134: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.730154: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 [000] ...2 1212.730176: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1212.730201: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.730220: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 [000] ...2 1212.730241: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1212.730262: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.730280: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 [000] ...2 1212.730303: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h6 1212.730638: sched_wakeup: comm=kworker/u:0H pid=7 prio=100 success=1 target_cpu=000 + -0 [000] ...2 1212.730669: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=kworker/u:0H next_pid=7 next_prio=100 + kworker/u:0H-7 [000] d..6 1212.730707: sched_wakeup: comm=kworker/0:1H pid=17 prio=100 success=1 target_cpu=000 + kworker/u:0H-7 [000] ...2 1212.730728: sched_switch: prev_comm=kworker/u:0H prev_pid=7 prev_prio=100 prev_state=D ==> next_comm=kworker/0:1H next_pid=17 next_prio=100 + kworker/0:1H-17 [000] ...2 1212.730916: sched_switch: prev_comm=kworker/0:1H prev_pid=17 prev_prio=100 prev_state=D ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h6 1212.731632: sched_wakeup: comm=kworker/u:0H pid=7 prio=100 success=1 target_cpu=000 + -0 [000] ...2 1212.731661: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=kworker/u:0H next_pid=7 next_prio=100 + kworker/u:0H-7 [000] d..6 1212.731702: sched_wakeup: comm=kworker/0:1H pid=17 prio=100 success=1 target_cpu=000 + kworker/u:0H-7 [000] ...2 1212.731722: sched_switch: prev_comm=kworker/u:0H prev_pid=7 prev_prio=100 prev_state=D ==> next_comm=kworker/0:1H next_pid=17 next_prio=100 + kworker/0:1H-17 [000] ...2 1212.731832: sched_switch: prev_comm=kworker/0:1H prev_pid=17 prev_prio=100 prev_state=D ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h6 1212.732685: sched_wakeup: comm=kworker/u:0H pid=7 prio=100 success=1 target_cpu=000 + -0 [000] ...2 1212.732714: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=kworker/u:0H next_pid=7 next_prio=100 + kworker/u:0H-7 [000] d..6 1212.732747: sched_wakeup: comm=kworker/0:1H pid=17 prio=100 success=1 target_cpu=000 + kworker/u:0H-7 [000] ...2 1212.732767: sched_switch: prev_comm=kworker/u:0H prev_pid=7 prev_prio=100 prev_state=D ==> next_comm=kworker/0:1H next_pid=17 next_prio=100 + kworker/0:1H-17 [000] d..4 1212.732810: sched_wakeup: comm=kworker/0:2H pid=557 prio=100 success=1 target_cpu=000 + kworker/0:1H-17 [000] ...2 1212.732829: sched_switch: prev_comm=kworker/0:1H prev_pid=17 prev_prio=100 prev_state=S ==> next_comm=kworker/0:2H next_pid=557 next_prio=100 + kworker/0:2H-557 [000] ...2 1212.732854: sched_switch: prev_comm=kworker/0:2H prev_pid=557 prev_prio=100 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h4 1212.876266: sched_wakeup: comm=RILSender0 pid=1365 prio=120 success=1 target_cpu=000 + -0 [000] dNh4 1212.876284: sched_wakeup: comm=MMHandlerThread pid=7231 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1212.876316: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=RILSender0 next_pid=1365 next_prio=120 + RILSender0-1365 [000] ...2 1212.876415: sched_switch: prev_comm=RILSender0 prev_pid=1365 prev_prio=120 prev_state=S ==> next_comm=MMHandlerThread next_pid=7231 next_prio=120 + MMHandlerThread-7231 [000] ...2 1212.876454: sched_switch: prev_comm=MMHandlerThread prev_pid=7231 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h4 1213.089569: sched_wakeup: comm=Thread-625 pid=5750 prio=120 success=1 target_cpu=000 + -0 [000] dNh4 1213.089587: sched_wakeup: comm=MMHandlerThread pid=7231 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1213.089622: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=Thread-625 next_pid=5750 next_prio=120 + Thread-625-5750 [000] ...2 1213.089842: sched_switch: prev_comm=Thread-625 prev_pid=5750 prev_prio=120 prev_state=S ==> next_comm=MMHandlerThread next_pid=7231 next_prio=120 + MMHandlerThread-7231 [000] ...2 1213.089879: sched_switch: prev_comm=MMHandlerThread prev_pid=7231 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h4 1213.327439: sched_wakeup: comm=pandora.android pid=5395 prio=120 success=1 target_cpu=000 + -0 [000] dNh4 1213.327455: sched_wakeup: comm=MMHandlerThread pid=7231 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1213.327487: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=MMHandlerThread next_pid=7231 next_prio=120 + MMHandlerThread-7231 [000] ...2 1213.327518: sched_switch: prev_comm=MMHandlerThread prev_pid=7231 prev_prio=120 prev_state=S ==> next_comm=pandora.android next_pid=5395 next_prio=120 + pandora.android-5395 [000] d..4 1213.327718: sched_wakeup: comm=Binder_1 pid=780 prio=120 success=1 target_cpu=000 + pandora.android-5395 [000] ...2 1213.327739: sched_switch: prev_comm=pandora.android prev_pid=5395 prev_prio=120 prev_state=R+ ==> next_comm=Binder_1 next_pid=780 next_prio=120 + Binder_1-780 [000] ...2 1213.327763: sched_switch: prev_comm=Binder_1 prev_pid=780 prev_prio=120 prev_state=D ==> next_comm=pandora.android next_pid=5395 next_prio=120 + pandora.android-5395 [000] d..3 1213.327781: sched_wakeup: comm=Binder_1 pid=780 prio=120 success=1 target_cpu=000 + pandora.android-5395 [000] ...2 1213.327795: sched_switch: prev_comm=pandora.android prev_pid=5395 prev_prio=120 prev_state=R+ ==> next_comm=Binder_1 next_pid=780 next_prio=120 + Binder_1-780 [000] d..4 1213.328056: sched_wakeup: comm=Binder_1 pid=878 prio=120 success=1 target_cpu=000 + Binder_1-780 [000] ...2 1213.328095: sched_switch: prev_comm=Binder_1 prev_pid=780 prev_prio=120 prev_state=S ==> next_comm=Binder_1 next_pid=878 next_prio=120 + Binder_1-878 [000] d..4 1213.328263: sched_wakeup: comm=Binder_1 pid=780 prio=120 success=1 target_cpu=000 + Binder_1-878 [000] ...2 1213.328345: sched_switch: prev_comm=Binder_1 prev_pid=878 prev_prio=120 prev_state=S ==> next_comm=Binder_1 next_pid=780 next_prio=120 + Binder_1-780 [000] ...2 1213.328558: sched_switch: prev_comm=Binder_1 prev_pid=780 prev_prio=120 prev_state=S ==> next_comm=pandora.android next_pid=5395 next_prio=120 + pandora.android-5395 [000] ...2 1213.328743: sched_switch: prev_comm=pandora.android prev_pid=5395 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1213.328773: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1213.328793: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 [000] ...2 1213.328821: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1213.328846: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1213.328866: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 [000] ...2 1213.328891: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d..4 1213.328913: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1213.328931: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 [000] ...2 1213.328964: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 [000] d.h4 1213.465138: sched_wakeup: comm=atrace pid=14446 prio=120 success=1 target_cpu=000 + -0 [000] ...2 1213.465171: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=atrace next_pid=14446 next_prio=120 diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_extracted_tgids b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_extracted_tgids new file mode 100644 index 0000000..1084fba --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_extracted_tgids @@ -0,0 +1 @@ +{'22503': '18089', '1868': '1772', '10458': '1772', '429': '429', '234': '234', '18956': '18949', '18957': '18949', '18954': '18949', '18955': '18949', '5980': '1370', '344': '344', '345': '345', '346': '346', '340': '340', '341': '341', '342': '342', '343': '343', '3723': '450', '22184': '1760', '349': '349', '411': '406', '2912': '1483', '2913': '1483', '1793': '1772', '1790': '1772', '1797': '1483', '1490': '1393', '1397': '1393', '1492': '1483', '1493': '1483', '1494': '1483', '1495': '1483', '1496': '858', '1497': '1483', '1498': '1483', '18686': '454', '24304': '24304', '1395': '1393', '1068': '1068', '422': '422', '1704': '1500', '5262': '1772', '425': '425', '6654': '1370', '25224': '25224', '424': '424', '868': '858', '1669': '1655', '1668': '1655', '1667': '1655', '1666': '1655', '294': '294', '295': '295', '1663': '1655', '2708': '2579', '1660': '1655', '1129': '1124', '1628': '1483', '3776': '858', '1081': '1079', '1080': '1079', '1124': '1124', '1127': '1124', '270': '270', '271': '271', '272': '272', '273': '273', '274': '274', '275': '275', '276': '276', '277': '277', '278': '278', '279': '279', '25115': '25115', '583': '444', '3386': '858', '11689': '8269', '2544': '1655', '2548': '1655', '524': '450', '525': '450', '526': '450', '527': '450', '520': '450', '521': '450', '522': '450', '523': '450', '1403': '1393', '1402': '1393', '1016': '445', '1017': '445', '1407': '1393', '1406': '1393', '1405': '1393', '1013': '445', '303': '303', '1339': '858', '7516': '858', '1232': '1124', '2445': '1760', '25227': '25227', '442': '442', '2761': '2761', '421': '421', '447': '447', '446': '446', '445': '445', '305': '305', '108': '108', '109': '109', '18101': '18089', '18100': '18089', '8280': '8269', '2102': '1772', '102': '102', '103': '103', '100': '100', '101': '101', '106': '106', '107': '107', '104': '104', '105': '105', '1849': '1500', '1848': '1500', '906': '906', '907': '907', '905': '905', '33': '33', '1842': '1500', '31': '31', '30': '30', '1847': '1500', '1536': '858', '1535': '1393', '246': '246', '1533': '1393', '1532': '1393', '1531': '1500', '21920': '1370', '24281': '24281', '437': '437', '434': '434', '1512': '1500', '2161': '1370', '1940': '1772', '1539': '1458', '2162': '1772', '2615': '1655', '2614': '1760', '2612': '1760', '2611': '2579', '423': '423', '335': '335', '337': '337', '18450': '18089', '331': '331', '19187': '1370', '333': '333', '332': '332', '5136': '1500', '23246': '23233', '2087': '1772', '23240': '23233', '23241': '23233', '23242': '23233', '23243': '23233', '854': '439', '850': '439', '851': '439', '852': '439', '853': '439', '858': '858', '88': '88', '1375': '858', '541': '442', '2688': '2579', '6': '6', '2684': '2579', '2685': '2579', '23398': '1124', '2683': '2579', '49': '49', '846': '439', '1374': '858', '3555': '858', '5424': '445', '99': '99', '98': '98', '2245': '858', '91': '91', '90': '90', '93': '93', '92': '92', '95': '95', '94': '94', '14143': '1760', '96': '96', '1623': '1471', '1622': '1483', '1621': '1483', '5181': '1500', '1627': '1483', '2578': '2558', '1625': '1483', '1624': '1483', '348': '348', '5189': '1500', '5427': '445', '4469': '442', '20228': '18649', '559': '442', '774': '405', '11180': '858', '22758': '18649', '18670': '18649', '238': '238', '239': '239', '24337': '1124', '235': '235', '22751': '18649', '22750': '18649', '236': '236', '22752': '18649', '22755': '18649', '231': '231', '232': '232', '22756': '18649', '1050': '858', '1051': '445', '1052': '858', '237': '237', '230': '230', '233': '233', '2705': '2579', '1692': '1370', '1693': '1500', '2704': '2579', '1754': '1655', '5928': '858', '502': '450', '1579': '1483', '614': '457', '12281': '1772', '4468': '442', '2565': '2558', '1887': '405', '1886': '1500', '1885': '1760', '1438': '445', '1882': '1772', '11048': '1370', '2123': '1370', '80': '80', '1491': '1471', '2082': '1370', '3116': '1772', '3114': '1370', '1288': '1124', '1028': '858', '1470': '1458', '1471': '1471', '1476': '1458', '1475': '1471', '1478': '1471', '1479': '1471', '680': '452', '23200': '23187', '23201': '23187', '2659': '2579', '2711': '2579', '2716': '2579', '1301': '1124', '23206': '23187', '2715': '2579', '2653': '2579', '2652': '2579', '2651': '2579', '2650': '2579', '2657': '2579', '2655': '2579', '873': '871', '23590': '453', '23591': '453', '23593': '453', '498': '450', '499': '436', '135': '135', '134': '134', '494': '450', '495': '450', '218': '218', '497': '450', '490': '450', '491': '450', '492': '450', '493': '450', '24': '24', '2037': '1772', '26': '26', '27': '27', '1836': '1655', '22': '22', '23': '23', '1838': '1655', '1839': '1772', '28': '28', '29': '29', '1370': '1370', '405': '405', '404': '404', '403': '403', '402': '402', '1377': '1370', '451': '451', '1378': '1370', '452': '452', '453': '453', '879': '877', '3': '3', '454': '454', '8298': '8269', '2450': '858', '11274': '8269', '9': '9', '1951': '1772', '456': '456', '2712': '2579', '9701': '858', '23370': '1124', '18969': '18089', '8290': '8269', '18964': '18949', '18962': '18949', '18961': '18949', '371': '364', '370': '364', '372': '372', '821': '442', '820': '442', '1314': '858', '1334': '858', '179': '179', '18665': '18649', '18660': '18649', '18661': '18649', '1483': '1483', '1482': '1471', '1481': '1471', '1480': '1471', '397': '397', '9011': '1772', '1485': '1471', '394': '366', '82': '82', '83': '83', '1489': '1483', '398': '398', '86': '86', '87': '87', '84': '84', '85': '85', '797': '442', '796': '442', '5250': '1500', '1710': '1655', '1716': '1655', '415': '405', '1718': '1655', '799': '442', '7': '7', '1655': '1655', '3214': '1760', '298': '298', '18690': '454', '1133': '1124', '1772': '1772', '1131': '1124', '299': '299', '1137': '1124', '1136': '1124', '1135': '1124', '1134': '1124', '245': '245', '244': '244', '247': '247', '18340': '18089', '241': '241', '3156': '1772', '243': '243', '19309': '1760', '249': '249', '248': '248', '1983': '1772', '1437': '1437', '201': '201', '1430': '1124', '2579': '2579', '2577': '1655', '3213': '1760', '2570': '2558', '519': '450', '518': '450', '1009': '445', '1008': '405', '511': '450', '510': '450', '513': '450', '512': '450', '515': '450', '514': '450', '517': '450', '516': '450', '2594': '2579', '459': '459', '1224': '1124', '2590': '2579', '2591': '2579', '53': '53', '450': '450', '5234': '1471', '2714': '2579', '8058': '1370', '2598': '2579', '1345': '1345', '2453': '1370', '457': '457', '3702': '450', '25228': '465', '8294': '8269', '1870': '1655', '178': '178', '177': '177', '176': '176', '175': '175', '174': '174', '173': '173', '172': '172', '171': '171', '170': '170', '2883': '2883', '3200': '858', '2886': '2883', '3775': '858', '2441': '858', '69': '69', '895': '858', '2888': '2883', '3774': '858', '4463': '442', '1500': '1500', '1501': '1483', '871': '871', '297': '297', '1509': '1500', '6367': '1772', '2626': '2579', '2625': '1760', '2628': '2579', '2629': '2579', '1919': '1500', '1911': '1772', '1910': '1772', '1913': '1772', '1912': '1772', '1915': '1500', '1914': '1772', '23237': '23233', '11': '11', '10': '10', '3086': '1370', '15': '15', '14': '14', '16': '16', '19': '19', '18': '18', '25214': '8269', '862': '858', '865': '858', '5712': '1772', '7568': '858', '866': '858', '18949': '18949', '2699': '2579', '2698': '2579', '2697': '2579', '2694': '2579', '883': '858', '882': '877', '881': '877', '880': '880', '887': '457', '886': '858', '885': '858', '884': '858', '889': '457', '888': '858', '3908': '442', '1972': '1370', '1607': '1483', '1970': '1772', '1011': '445', '11181': '858', '496': '450', '18685': '454', '3234': '1760', '1616': '1500', '1617': '1471', '1614': '1471', '1967': '1772', '1613': '1370', '322': '322', '323': '323', '320': '320', '321': '321', '326': '326', '327': '327', '324': '324', '325': '325', '433': '433', '328': '328', '329': '329', '18655': '18649', '18654': '18649', '18657': '18649', '18656': '18649', '205': '205', '204': '204', '207': '207', '772': '405', '209': '209', '208': '208', '18659': '18649', '18658': '18649', '1340': '858', '77': '77', '3354': '436', '75': '75', '74': '74', '73': '73', '72': '72', '71': '71', '70': '70', '79': '79', '78': '78', '2': '2', '23239': '23233', '20067': '1500', '1040': '858', '1047': '858', '1043': '858', '1045': '858', '1044': '858', '1048': '858', '2235': '1760', '12764': '1760', '3575': '442', '1768': '1760', '1769': '1760', '4122': '442', '1760': '1760', '1766': '1760', '1767': '1760', '1765': '1760', '216': '216', '1268': '1268', '2713': '2579', '1267': '858', '2710': '2579', '13400': '1655', '2096': '1760', '2090': '1772', '2093': '1471', '3170': '858', '4470': '442', '3656': '450', '23233': '23233', '8753': '8269', '2717': '2579', '2524': '1500', '1542': '1458', '2520': '1500', '2486': '1760', '2487': '1760', '2484': '1760', '2485': '1760', '2483': '1760', '1548': '1458', '1549': '1458', '4494': '442', '1469': '1458', '368': '364', '1465': '1458', '8': '8', '1467': '1458', '1466': '1458', '1461': '1458', '2718': '2579', '1463': '1458', '23604': '1760', '869': '858', '1315': '1124', '2719': '2579', '2709': '2579', '2461': '1772', '5148': '1471', '1024': '858', '5146': '1471', '18097': '18089', '2707': '2579', '2706': '2579', '2702': '2579', '1014': '445', '12': '12', '8272': '8269', '18095': '18089', '1015': '445', '13927': '1370', '219': '219', '25219': '25219', '25218': '858', '4230': '436', '777': '405', '5740': '5740', '25181': '25181', '1023': '858', '1825': '1760', '1010': '445', '1827': '1760', '1821': '1500', '1822': '1500', '414': '405', '2069': '1471', '416': '405', '410': '406', '1389': '1370', '412': '406', '413': '406', '1384': '1370', '1385': '1124', '1386': '1370', '361': '361', '1184': '1124', '1382': '1370', '1383': '1370', '319': '319', '318': '318', '18693': '454', '313': '313', '312': '312', '311': '311', '310': '310', '317': '317', '316': '316', '315': '315', '314': '314', '1921': '1772', '1922': '1772', '448': '448', '867': '858', '369': '364', '24678': '24678', '20693': '18089', '784': '784', '808': '442', '2666': '2579', '2667': '2579', '2589': '2579', '2665': '2579', '2662': '2579', '2663': '2579', '2660': '2579', '2661': '2579', '366': '366', '364': '364', '362': '362', '363': '363', '360': '360', '2669': '2579', '440': '440', '12042': '8269', '2664': '2579', '1331': '858', '22782': '1124', '97': '97', '380': '364', '381': '364', '406': '406', '5133': '445', '528': '450', '20': '20', '444': '444', '9009': '1370', '1770': '1760', '4758': '1483', '4759': '1483', '1647': '1483', '5248': '1471', '1725': '1655', '5242': '1471', '5979': '1370', '3610': '437', '1072': '858', '8281': '8269', '1042': '858', '60': '60', '775': '405', '4631': '1483', '259': '259', '64': '64', '65': '65', '66': '66', '67': '67', '252': '252', '253': '253', '250': '250', '251': '251', '256': '256', '257': '257', '254': '254', '255': '255', '2568': '2558', '24358': '1124', '1426': '1124', '1429': '858', '2560': '2558', '1580': '1483', '2562': '2558', '24357': '1124', '24356': '1124', '24355': '1124', '2566': '2558', '1038': '858', '18958': '18949', '508': '450', '509': '450', '506': '450', '507': '450', '504': '450', '505': '450', '23245': '23233', '503': '450', '500': '450', '2001': '1772', '2586': '1655', '1359': '1345', '2584': '2579', '469': '465', '468': '465', '785': '785', '465': '465', '464': '451', '467': '465', '466': '466', '461': '461', '1355': '1345', '1354': '1345', '1861': '1655', '901': '436', '168': '168', '169': '169', '280': '280', '164': '164', '165': '165', '166': '166', '167': '167', '160': '160', '161': '161', '162': '162', '163': '163', '8289': '8269', '1457': '858', '2898': '2883', '864': '858', '2895': '2883', '2894': '2883', '2897': '2883', '2891': '2883', '2890': '2883', '2893': '2883', '2892': '2883', '1454': '858', '529': '450', '2108': '1760', '1519': '1500', '1518': '1500', '32': '32', '2103': '1370', '1514': '1500', '2516': '1471', '286': '286', '1458': '1458', '2106': '1370', '1513': '1500', '2104': '1760', '10168': '8269', '2634': '2579', '8278': '8269', '2631': '2579', '2630': '2579', '2633': '2579', '1097': '858', '23187': '23187', '18765': '858', '1810': '1471', '1811': '1471', '878': '877', '1813': '1471', '876': '871', '877': '877', '874': '871', '875': '871', '872': '872', '6410': '858', '870': '858', '441': '441', '7777': '1655', '7776': '1655', '7775': '1655', '7773': '1655', '10769': '8269', '18764': '858', '890': '457', '891': '858', '892': '858', '893': '858', '894': '858', '438': '438', '896': '858', '897': '436', '899': '858', '439': '439', '3186': '858', '436': '436', '9768': '8269', '63': '63', '1609': '1471', '435': '435', '4155': '442', '18089': '18089', '4158': '442', '25094': '25094', '3220': '1760', '3223': '1760', '3222': '1760', '356': '356', '355': '355', '354': '354', '52': '52', '430': '430', '803': '803', '908': '436', '801': '442', '431': '431', '807': '442', '1788': '1772', '18099': '18089', '18098': '18089', '212': '212', '213': '213', '211': '211', '18093': '18089', '1781': '1772', '18763': '858', '1783': '1772', '1784': '1772', '18096': '18089', '1786': '1772', '18649': '18649', '463': '463', '3329': '1370', '1033': '858', '338': '338', '1775': '1760', '76': '76', '1776': '1772', '1771': '1760', '4702': '1483', '1078': '858', '1079': '1079', '1076': '858', '1077': '858', '1074': '858', '1075': '858', '1779': '1772', '1073': '858', '484': '450', '1071': '858', '289': '289', '288': '288', '3750': '858', '281': '281', '1675': '1655', '283': '283', '282': '282', '285': '285', '284': '284', '287': '287', '1673': '1655', '1094': '858', '1096': '858', '336': '336', '2498': '1772', '330': '330', '263': '263', '262': '262', '261': '261', '260': '260', '267': '267', '266': '266', '265': '265', '264': '264', '59': '59', '269': '269', '268': '268', '18368': '18089', '58': '58', '2550': '1655', '1550': '1393', '2552': '1655', '1552': '1124', '2554': '1655', '1554': '1124', '61': '61', '1559': '1483', '54': '54', '57': '57', '56': '56', '2495': '1772', '2494': '1772', '2497': '1772', '2496': '1772', '2558': '2558', '535': '450', '24912': '24912', '533': '450', '532': '450', '531': '450', '530': '450', '24918': '24918', '1412': '1393', '1415': '858', '539': '466', '538': '461', '1322': '1124', '1323': '1124', '2475': '1760', '2473': '1760', '1327': '1124', '200': '200', '5151': '1458', '5152': '1471', '203': '203', '50': '50', '68': '68', '776': '405', '111': '111', '110': '110', '1907': '1772', '771': '405', '5': '5', '9356': '8269', '1858': '1760', '1859': '1500', '25194': '25194', '5134': '445', '536': '450', '1850': '1500', '16865': '1370', '1852': '1500', '1853': '1500', '1854': '1500', '1857': '1772', '1524': '1500', '534': '450', '1398': '858', '2073': '1471', '2072': '1471', '2071': '1471', '2070': '1471', '1393': '1393', '1392': '1370', '427': '427', '426': '426', '308': '308', '309': '309', '2607': '1655', '2600': '1655', '2602': '2579', '300': '300', '301': '301', '302': '302', '19192': '1370', '304': '304', '2609': '2579', '306': '306', '778': '405', '23253': '23253', '1035': '858', '4114': '436', '4112': '436', '4113': '436', '22382': '22382', '458': '458', '847': '439', '3343': '435', '3462': '442', '296': '296', '55': '55', '18869': '1772', '849': '439', '848': '439', '2671': '2579', '2670': '1760', '2672': '2579', '1428': '858', '24767': '24767', '1581': '405', '7100': '858', '20230': '18649', '62': '62', '81': '81', '487': '450', '240': '240', '258': '258', '2567': '2558', '23400': '23400', '23401': '1124', '1585': '858', '485': '450', '1986': '1760', '1738': '1345', '3216': '1760', '3217': '1760', '1982': '1370', '3211': '1760', '18697': '18649', '1637': '1500', '5232': '1500', '3218': '1760', '3219': '1760', '1737': '1655', '482': '435', '1039': '858', '480': '480', '1046': '858', '3602': '450', '2811': '858', '3604': '437', '1036': '858', '3608': '437', '1041': '858', '242': '242', '2183': '1760', '229': '229', '228': '228', '227': '227', '226': '226', '225': '225', '224': '224', '223': '223', '222': '222', '221': '221', '220': '220', '1025': '858', '393': '393', '1027': '858', '1026': '858', '1021': '445', '2272': '858', '8269': '8269', '1333': '858', '5425': '445', '1187': '1124', '17951': '1760', '5426': '445', '1182': '1124', '3372': '436', '1037': '858', '89': '89', '1034': '858', '1746': '1483', '501': '450', '396': '366', '605': '605', '8172': '858', '2438': '1370', '155': '155', '395': '366', '157': '157', '156': '156', '159': '159', '158': '158', '2585': '1655', '2435': '858', '1898': '1760', '1899': '1500', '8279': '8269', '15349': '8269', '8277': '8269', '8276': '8269', '8275': '8269', '3733': '858', '399': '399', '1892': '1655', '2136': '1772', '2135': '1370', '2132': '1772', '48': '48', '2131': '1370', '46': '46', '47': '47', '44': '44', '45': '45', '42': '42', '40': '40', '41': '41', '1682': '1483', '1443': '1370', '1442': '1370', '1012': '445', '3201': '858', '1449': '858', '477': '450', '2727': '2579', '2649': '2579', '2725': '2579', '5164': '1471', '5165': '1500', '2720': '2579', '2640': '2579', '606': '606', '475': '437', '486': '463', '23198': '23187', '8060': '1772', '488': '450', '23194': '23187', '23195': '23187', '23196': '23187', '23197': '23187', '483': '463', '23191': '23187', '23589': '453', '11310': '1655', '1800': '1483', '3789': '450', '1809': '1471', '1364': '1345', '1365': '1345', '1363': '1345', '1360': '1345', '1851': '1500', '479': '450', '1368': '1345', '3198': '2579'} \ No newline at end of file diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_extracted_threads b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_extracted_threads new file mode 100644 index 0000000..b649fbf --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_extracted_threads @@ -0,0 +1 @@ +{1: '/init', 2: 'kthreadd', 3: 'ksoftirqd/0', 7: 'kworker/u:0H', 8: 'migration/0', 13: 'khelper', 14: 'netns'} diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_fixed_tgids b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_fixed_tgids new file mode 100644 index 0000000..92456d5 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_fixed_tgids @@ -0,0 +1,127 @@ +# tracer: nop +# +# entries-in-buffer/entries-written: 116/116 #P:1 +# +# _-----=> irqs-off +# / _----=> need-resched +# | / _---=> hardirq/softirq +# || / _--=> preempt-depth +# ||| / delay +# TASK-PID CPU# |||| TIMESTAMP FUNCTION +# | | | |||| | | + atrace-14446 (-----) [000] ...2 1212.465062: sched_switch: prev_comm=atrace prev_pid=14446 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d..4 1212.465074: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.465082: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 +ksoftirqd/0-3 ( 3) [000] ...2 1212.465092: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d..4 1212.465102: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.465126: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 +ksoftirqd/0-3 ( 3) [000] ...2 1212.465132: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d..4 1212.465139: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.465145: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 +ksoftirqd/0-3 ( 3) [000] ...2 1212.465227: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d.h5 1212.465297: sched_wakeup: comm=adbd pid=212 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.465306: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=adbd next_pid=212 next_prio=120 +adbd-212 ( 212) [000] d..4 1212.465329: sched_wakeup: comm=adbd pid=209 prio=120 success=1 target_cpu=000 +adbd-212 ( 212) [000] ...2 1212.465348: sched_switch: prev_comm=adbd prev_pid=212 prev_prio=120 prev_state=S ==> next_comm=adbd next_pid=209 next_prio=120 +adbd-209 ( 209) [000] d..4 1212.465395: sched_wakeup: comm=adbd pid=211 prio=120 success=1 target_cpu=000 +adbd-209 ( 209) [000] ...2 1212.465441: sched_switch: prev_comm=adbd prev_pid=209 prev_prio=120 prev_state=S ==> next_comm=adbd next_pid=211 next_prio=120 +adbd-211 ( 211) [000] ...2 1212.465448: sched_switch: prev_comm=adbd prev_pid=211 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d.h5 1212.574554: sched_wakeup: comm=sensors.qcom pid=292 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.574566: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=sensors.qcom next_pid=292 next_prio=120 + sensors.qcom-292 (-----) [000] ...2 1212.574665: sched_switch: prev_comm=sensors.qcom prev_pid=292 prev_prio=120 prev_state=S ==> next_comm=sensors.qcom next_pid=14447 next_prio=120 + sensors.qcom-14447 (-----) [000] d..4 1212.574797: sched_wakeup: comm=sensors.qcom pid=1593 prio=120 success=1 target_cpu=000 + sensors.qcom-14447 (-----) [000] ...2 1212.574802: sched_switch: prev_comm=sensors.qcom prev_pid=14447 prev_prio=120 prev_state=R+ ==> next_comm=sensors.qcom next_pid=1593 next_prio=120 + sensors.qcom-1593 (-----) [000] ...2 1212.574819: sched_switch: prev_comm=sensors.qcom prev_pid=1593 prev_prio=120 prev_state=D ==> next_comm=sensors.qcom next_pid=14447 next_prio=120 + sensors.qcom-14447 (-----) [000] d..3 1212.574823: sched_wakeup: comm=sensors.qcom pid=1593 prio=120 success=1 target_cpu=000 + sensors.qcom-14447 (-----) [000] ...2 1212.574827: sched_switch: prev_comm=sensors.qcom prev_pid=14447 prev_prio=120 prev_state=R+ ==> next_comm=sensors.qcom next_pid=1593 next_prio=120 + sensors.qcom-1593 (-----) [000] d..4 1212.574865: sched_wakeup: comm=sensors.qcom pid=760 prio=120 success=1 target_cpu=000 + sensors.qcom-1593 (-----) [000] ...2 1212.574876: sched_switch: prev_comm=sensors.qcom prev_pid=1593 prev_prio=120 prev_state=S ==> next_comm=sensors.qcom next_pid=760 next_prio=120 + sensors.qcom-760 (-----) [000] d..4 1212.574905: sched_wakeup: comm=system_server pid=782 prio=118 success=1 target_cpu=000 + sensors.qcom-760 (-----) [000] ...2 1212.574917: sched_switch: prev_comm=sensors.qcom prev_pid=760 prev_prio=120 prev_state=S ==> next_comm=system_server next_pid=782 next_prio=118 + system_server-782 (-----) [000] d..4 1212.574981: sched_wakeup: comm=system_server pid=785 prio=118 success=1 target_cpu=000 + system_server-782 (-----) [000] ...2 1212.575009: sched_switch: prev_comm=system_server prev_pid=782 prev_prio=118 prev_state=S ==> next_comm=system_server next_pid=785 next_prio=118 +system_server-785 ( 785) [000] ...2 1212.575045: sched_switch: prev_comm=system_server prev_pid=785 prev_prio=118 prev_state=S ==> next_comm=sensors.qcom next_pid=14447 next_prio=120 + sensors.qcom-14447 (-----) [000] ...3 1212.575143: sched_switch: prev_comm=sensors.qcom prev_pid=14447 prev_prio=120 prev_state=x ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d..4 1212.575153: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.575159: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 +ksoftirqd/0-3 ( 3) [000] ...2 1212.575167: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d..4 1212.575175: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.575181: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 +ksoftirqd/0-3 ( 3) [000] ...2 1212.575188: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d..4 1212.575195: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.575201: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 +ksoftirqd/0-3 ( 3) [000] ...2 1212.575211: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d.h4 1212.649601: sched_wakeup: comm=MMHandlerThread pid=7231 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.649614: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=MMHandlerThread next_pid=7231 next_prio=120 + MMHandlerThread-7231 (-----) [000] ...2 1212.649630: sched_switch: prev_comm=MMHandlerThread prev_pid=7231 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d.h6 1212.729539: sched_wakeup: comm=kworker/u:1 pid=21 prio=120 success=1 target_cpu=000 + -0 (-----) [000] dNs6 1212.729550: sched_wakeup: comm=kworker/0:2H pid=557 prio=100 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.729563: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=kworker/u:1 next_pid=21 next_prio=120 + kworker/u:1-21 (-----) [000] d..5 1212.729571: sched_wakeup: comm=mpdecision pid=2046 prio=113 success=1 target_cpu=000 + kworker/u:1-21 (-----) [000] ...2 1212.729578: sched_switch: prev_comm=kworker/u:1 prev_pid=21 prev_prio=120 prev_state=S ==> next_comm=kworker/0:2H next_pid=557 next_prio=100 + kworker/0:2H-557 (-----) [000] d..4 1212.729597: sched_wakeup: comm=kworker/0:1H pid=17 prio=100 success=1 target_cpu=000 + kworker/0:2H-557 (-----) [000] ...2 1212.729600: sched_switch: prev_comm=kworker/0:2H prev_pid=557 prev_prio=100 prev_state=D ==> next_comm=mpdecision next_pid=2046 next_prio=113 + mpdecision-2046 (-----) [000] ...2 1212.729801: sched_switch: prev_comm=mpdecision prev_pid=2046 prev_prio=113 prev_state=S ==> next_comm=kworker/0:1H next_pid=17 next_prio=100 + kworker/0:1H-17 (-----) [000] ...2 1212.730104: sched_switch: prev_comm=kworker/0:1H prev_pid=17 prev_prio=100 prev_state=D ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d..4 1212.730134: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.730154: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 +ksoftirqd/0-3 ( 3) [000] ...2 1212.730176: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d..4 1212.730201: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.730220: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 +ksoftirqd/0-3 ( 3) [000] ...2 1212.730241: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d..4 1212.730262: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.730280: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 +ksoftirqd/0-3 ( 3) [000] ...2 1212.730303: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d.h6 1212.730638: sched_wakeup: comm=kworker/u:0H pid=7 prio=100 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.730669: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=kworker/u:0H next_pid=7 next_prio=100 +kworker/u:0H-7 ( 7) [000] d..6 1212.730707: sched_wakeup: comm=kworker/0:1H pid=17 prio=100 success=1 target_cpu=000 +kworker/u:0H-7 ( 7) [000] ...2 1212.730728: sched_switch: prev_comm=kworker/u:0H prev_pid=7 prev_prio=100 prev_state=D ==> next_comm=kworker/0:1H next_pid=17 next_prio=100 + kworker/0:1H-17 (-----) [000] ...2 1212.730916: sched_switch: prev_comm=kworker/0:1H prev_pid=17 prev_prio=100 prev_state=D ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d.h6 1212.731632: sched_wakeup: comm=kworker/u:0H pid=7 prio=100 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.731661: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=kworker/u:0H next_pid=7 next_prio=100 +kworker/u:0H-7 ( 7) [000] d..6 1212.731702: sched_wakeup: comm=kworker/0:1H pid=17 prio=100 success=1 target_cpu=000 +kworker/u:0H-7 ( 7) [000] ...2 1212.731722: sched_switch: prev_comm=kworker/u:0H prev_pid=7 prev_prio=100 prev_state=D ==> next_comm=kworker/0:1H next_pid=17 next_prio=100 + kworker/0:1H-17 (-----) [000] ...2 1212.731832: sched_switch: prev_comm=kworker/0:1H prev_pid=17 prev_prio=100 prev_state=D ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d.h6 1212.732685: sched_wakeup: comm=kworker/u:0H pid=7 prio=100 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.732714: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=kworker/u:0H next_pid=7 next_prio=100 +kworker/u:0H-7 ( 7) [000] d..6 1212.732747: sched_wakeup: comm=kworker/0:1H pid=17 prio=100 success=1 target_cpu=000 +kworker/u:0H-7 ( 7) [000] ...2 1212.732767: sched_switch: prev_comm=kworker/u:0H prev_pid=7 prev_prio=100 prev_state=D ==> next_comm=kworker/0:1H next_pid=17 next_prio=100 + kworker/0:1H-17 (-----) [000] d..4 1212.732810: sched_wakeup: comm=kworker/0:2H pid=557 prio=100 success=1 target_cpu=000 + kworker/0:1H-17 (-----) [000] ...2 1212.732829: sched_switch: prev_comm=kworker/0:1H prev_pid=17 prev_prio=100 prev_state=S ==> next_comm=kworker/0:2H next_pid=557 next_prio=100 + kworker/0:2H-557 (-----) [000] ...2 1212.732854: sched_switch: prev_comm=kworker/0:2H prev_pid=557 prev_prio=100 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d.h4 1212.876266: sched_wakeup: comm=RILSender0 pid=1365 prio=120 success=1 target_cpu=000 + -0 (-----) [000] dNh4 1212.876284: sched_wakeup: comm=MMHandlerThread pid=7231 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.876316: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=RILSender0 next_pid=1365 next_prio=120 +RILSender0-1365 ( 1345) [000] ...2 1212.876415: sched_switch: prev_comm=RILSender0 prev_pid=1365 prev_prio=120 prev_state=S ==> next_comm=MMHandlerThread next_pid=7231 next_prio=120 + MMHandlerThread-7231 (-----) [000] ...2 1212.876454: sched_switch: prev_comm=MMHandlerThread prev_pid=7231 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d.h4 1213.089569: sched_wakeup: comm=Thread-625 pid=5750 prio=120 success=1 target_cpu=000 + -0 (-----) [000] dNh4 1213.089587: sched_wakeup: comm=MMHandlerThread pid=7231 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1213.089622: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=Thread-625 next_pid=5750 next_prio=120 + Thread-625-5750 (-----) [000] ...2 1213.089842: sched_switch: prev_comm=Thread-625 prev_pid=5750 prev_prio=120 prev_state=S ==> next_comm=MMHandlerThread next_pid=7231 next_prio=120 + MMHandlerThread-7231 (-----) [000] ...2 1213.089879: sched_switch: prev_comm=MMHandlerThread prev_pid=7231 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d.h4 1213.327439: sched_wakeup: comm=pandora.android pid=5395 prio=120 success=1 target_cpu=000 + -0 (-----) [000] dNh4 1213.327455: sched_wakeup: comm=MMHandlerThread pid=7231 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1213.327487: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=MMHandlerThread next_pid=7231 next_prio=120 + MMHandlerThread-7231 (-----) [000] ...2 1213.327518: sched_switch: prev_comm=MMHandlerThread prev_pid=7231 prev_prio=120 prev_state=S ==> next_comm=pandora.android next_pid=5395 next_prio=120 + pandora.android-5395 (-----) [000] d..4 1213.327718: sched_wakeup: comm=Binder_1 pid=780 prio=120 success=1 target_cpu=000 + pandora.android-5395 (-----) [000] ...2 1213.327739: sched_switch: prev_comm=pandora.android prev_pid=5395 prev_prio=120 prev_state=R+ ==> next_comm=Binder_1 next_pid=780 next_prio=120 + Binder_1-780 (-----) [000] ...2 1213.327763: sched_switch: prev_comm=Binder_1 prev_pid=780 prev_prio=120 prev_state=D ==> next_comm=pandora.android next_pid=5395 next_prio=120 + pandora.android-5395 (-----) [000] d..3 1213.327781: sched_wakeup: comm=Binder_1 pid=780 prio=120 success=1 target_cpu=000 + pandora.android-5395 (-----) [000] ...2 1213.327795: sched_switch: prev_comm=pandora.android prev_pid=5395 prev_prio=120 prev_state=R+ ==> next_comm=Binder_1 next_pid=780 next_prio=120 + Binder_1-780 (-----) [000] d..4 1213.328056: sched_wakeup: comm=Binder_1 pid=878 prio=120 success=1 target_cpu=000 + Binder_1-780 (-----) [000] ...2 1213.328095: sched_switch: prev_comm=Binder_1 prev_pid=780 prev_prio=120 prev_state=S ==> next_comm=Binder_1 next_pid=878 next_prio=120 +Binder_1-878 ( 877) [000] d..4 1213.328263: sched_wakeup: comm=Binder_1 pid=780 prio=120 success=1 target_cpu=000 +Binder_1-878 ( 877) [000] ...2 1213.328345: sched_switch: prev_comm=Binder_1 prev_pid=878 prev_prio=120 prev_state=S ==> next_comm=Binder_1 next_pid=780 next_prio=120 + Binder_1-780 (-----) [000] ...2 1213.328558: sched_switch: prev_comm=Binder_1 prev_pid=780 prev_prio=120 prev_state=S ==> next_comm=pandora.android next_pid=5395 next_prio=120 + pandora.android-5395 (-----) [000] ...2 1213.328743: sched_switch: prev_comm=pandora.android prev_pid=5395 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d..4 1213.328773: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1213.328793: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 +ksoftirqd/0-3 ( 3) [000] ...2 1213.328821: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d..4 1213.328846: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1213.328866: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 +ksoftirqd/0-3 ( 3) [000] ...2 1213.328891: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d..4 1213.328913: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1213.328931: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 +ksoftirqd/0-3 ( 3) [000] ...2 1213.328964: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d.h4 1213.465138: sched_wakeup: comm=atrace pid=14446 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1213.465171: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=atrace next_pid=14446 next_prio=120 diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_missing_tgids b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_missing_tgids new file mode 100644 index 0000000..c662482 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_missing_tgids @@ -0,0 +1,127 @@ +# tracer: nop +# +# entries-in-buffer/entries-written: 116/116 #P:1 +# +# _-----=> irqs-off +# / _----=> need-resched +# | / _---=> hardirq/softirq +# || / _--=> preempt-depth +# ||| / delay +# TASK-PID CPU# |||| TIMESTAMP FUNCTION +# | | | |||| | | + atrace-14446 (-----) [000] ...2 1212.465062: sched_switch: prev_comm=atrace prev_pid=14446 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d..4 1212.465074: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.465082: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 (-----) [000] ...2 1212.465092: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d..4 1212.465102: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.465126: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 (-----) [000] ...2 1212.465132: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d..4 1212.465139: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.465145: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 (-----) [000] ...2 1212.465227: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d.h5 1212.465297: sched_wakeup: comm=adbd pid=212 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.465306: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=adbd next_pid=212 next_prio=120 + adbd-212 (-----) [000] d..4 1212.465329: sched_wakeup: comm=adbd pid=209 prio=120 success=1 target_cpu=000 + adbd-212 (-----) [000] ...2 1212.465348: sched_switch: prev_comm=adbd prev_pid=212 prev_prio=120 prev_state=S ==> next_comm=adbd next_pid=209 next_prio=120 + adbd-209 (-----) [000] d..4 1212.465395: sched_wakeup: comm=adbd pid=211 prio=120 success=1 target_cpu=000 + adbd-209 (-----) [000] ...2 1212.465441: sched_switch: prev_comm=adbd prev_pid=209 prev_prio=120 prev_state=S ==> next_comm=adbd next_pid=211 next_prio=120 + adbd-211 (-----) [000] ...2 1212.465448: sched_switch: prev_comm=adbd prev_pid=211 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d.h5 1212.574554: sched_wakeup: comm=sensors.qcom pid=292 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.574566: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=sensors.qcom next_pid=292 next_prio=120 + sensors.qcom-292 (-----) [000] ...2 1212.574665: sched_switch: prev_comm=sensors.qcom prev_pid=292 prev_prio=120 prev_state=S ==> next_comm=sensors.qcom next_pid=14447 next_prio=120 + sensors.qcom-14447 (-----) [000] d..4 1212.574797: sched_wakeup: comm=sensors.qcom pid=1593 prio=120 success=1 target_cpu=000 + sensors.qcom-14447 (-----) [000] ...2 1212.574802: sched_switch: prev_comm=sensors.qcom prev_pid=14447 prev_prio=120 prev_state=R+ ==> next_comm=sensors.qcom next_pid=1593 next_prio=120 + sensors.qcom-1593 (-----) [000] ...2 1212.574819: sched_switch: prev_comm=sensors.qcom prev_pid=1593 prev_prio=120 prev_state=D ==> next_comm=sensors.qcom next_pid=14447 next_prio=120 + sensors.qcom-14447 (-----) [000] d..3 1212.574823: sched_wakeup: comm=sensors.qcom pid=1593 prio=120 success=1 target_cpu=000 + sensors.qcom-14447 (-----) [000] ...2 1212.574827: sched_switch: prev_comm=sensors.qcom prev_pid=14447 prev_prio=120 prev_state=R+ ==> next_comm=sensors.qcom next_pid=1593 next_prio=120 + sensors.qcom-1593 (-----) [000] d..4 1212.574865: sched_wakeup: comm=sensors.qcom pid=760 prio=120 success=1 target_cpu=000 + sensors.qcom-1593 (-----) [000] ...2 1212.574876: sched_switch: prev_comm=sensors.qcom prev_pid=1593 prev_prio=120 prev_state=S ==> next_comm=sensors.qcom next_pid=760 next_prio=120 + sensors.qcom-760 (-----) [000] d..4 1212.574905: sched_wakeup: comm=system_server pid=782 prio=118 success=1 target_cpu=000 + sensors.qcom-760 (-----) [000] ...2 1212.574917: sched_switch: prev_comm=sensors.qcom prev_pid=760 prev_prio=120 prev_state=S ==> next_comm=system_server next_pid=782 next_prio=118 + system_server-782 (-----) [000] d..4 1212.574981: sched_wakeup: comm=system_server pid=785 prio=118 success=1 target_cpu=000 + system_server-782 (-----) [000] ...2 1212.575009: sched_switch: prev_comm=system_server prev_pid=782 prev_prio=118 prev_state=S ==> next_comm=system_server next_pid=785 next_prio=118 + system_server-785 (-----) [000] ...2 1212.575045: sched_switch: prev_comm=system_server prev_pid=785 prev_prio=118 prev_state=S ==> next_comm=sensors.qcom next_pid=14447 next_prio=120 + sensors.qcom-14447 (-----) [000] ...3 1212.575143: sched_switch: prev_comm=sensors.qcom prev_pid=14447 prev_prio=120 prev_state=x ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d..4 1212.575153: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.575159: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 (-----) [000] ...2 1212.575167: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d..4 1212.575175: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.575181: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 (-----) [000] ...2 1212.575188: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d..4 1212.575195: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.575201: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 (-----) [000] ...2 1212.575211: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d.h4 1212.649601: sched_wakeup: comm=MMHandlerThread pid=7231 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.649614: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=MMHandlerThread next_pid=7231 next_prio=120 + MMHandlerThread-7231 (-----) [000] ...2 1212.649630: sched_switch: prev_comm=MMHandlerThread prev_pid=7231 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d.h6 1212.729539: sched_wakeup: comm=kworker/u:1 pid=21 prio=120 success=1 target_cpu=000 + -0 (-----) [000] dNs6 1212.729550: sched_wakeup: comm=kworker/0:2H pid=557 prio=100 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.729563: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=kworker/u:1 next_pid=21 next_prio=120 + kworker/u:1-21 (-----) [000] d..5 1212.729571: sched_wakeup: comm=mpdecision pid=2046 prio=113 success=1 target_cpu=000 + kworker/u:1-21 (-----) [000] ...2 1212.729578: sched_switch: prev_comm=kworker/u:1 prev_pid=21 prev_prio=120 prev_state=S ==> next_comm=kworker/0:2H next_pid=557 next_prio=100 + kworker/0:2H-557 (-----) [000] d..4 1212.729597: sched_wakeup: comm=kworker/0:1H pid=17 prio=100 success=1 target_cpu=000 + kworker/0:2H-557 (-----) [000] ...2 1212.729600: sched_switch: prev_comm=kworker/0:2H prev_pid=557 prev_prio=100 prev_state=D ==> next_comm=mpdecision next_pid=2046 next_prio=113 + mpdecision-2046 (-----) [000] ...2 1212.729801: sched_switch: prev_comm=mpdecision prev_pid=2046 prev_prio=113 prev_state=S ==> next_comm=kworker/0:1H next_pid=17 next_prio=100 + kworker/0:1H-17 (-----) [000] ...2 1212.730104: sched_switch: prev_comm=kworker/0:1H prev_pid=17 prev_prio=100 prev_state=D ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d..4 1212.730134: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.730154: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 (-----) [000] ...2 1212.730176: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d..4 1212.730201: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.730220: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 (-----) [000] ...2 1212.730241: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d..4 1212.730262: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.730280: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 (-----) [000] ...2 1212.730303: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d.h6 1212.730638: sched_wakeup: comm=kworker/u:0H pid=7 prio=100 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.730669: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=kworker/u:0H next_pid=7 next_prio=100 + kworker/u:0H-7 (-----) [000] d..6 1212.730707: sched_wakeup: comm=kworker/0:1H pid=17 prio=100 success=1 target_cpu=000 + kworker/u:0H-7 (-----) [000] ...2 1212.730728: sched_switch: prev_comm=kworker/u:0H prev_pid=7 prev_prio=100 prev_state=D ==> next_comm=kworker/0:1H next_pid=17 next_prio=100 + kworker/0:1H-17 (-----) [000] ...2 1212.730916: sched_switch: prev_comm=kworker/0:1H prev_pid=17 prev_prio=100 prev_state=D ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d.h6 1212.731632: sched_wakeup: comm=kworker/u:0H pid=7 prio=100 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.731661: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=kworker/u:0H next_pid=7 next_prio=100 + kworker/u:0H-7 (-----) [000] d..6 1212.731702: sched_wakeup: comm=kworker/0:1H pid=17 prio=100 success=1 target_cpu=000 + kworker/u:0H-7 (-----) [000] ...2 1212.731722: sched_switch: prev_comm=kworker/u:0H prev_pid=7 prev_prio=100 prev_state=D ==> next_comm=kworker/0:1H next_pid=17 next_prio=100 + kworker/0:1H-17 (-----) [000] ...2 1212.731832: sched_switch: prev_comm=kworker/0:1H prev_pid=17 prev_prio=100 prev_state=D ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d.h6 1212.732685: sched_wakeup: comm=kworker/u:0H pid=7 prio=100 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.732714: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=kworker/u:0H next_pid=7 next_prio=100 + kworker/u:0H-7 (-----) [000] d..6 1212.732747: sched_wakeup: comm=kworker/0:1H pid=17 prio=100 success=1 target_cpu=000 + kworker/u:0H-7 (-----) [000] ...2 1212.732767: sched_switch: prev_comm=kworker/u:0H prev_pid=7 prev_prio=100 prev_state=D ==> next_comm=kworker/0:1H next_pid=17 next_prio=100 + kworker/0:1H-17 (-----) [000] d..4 1212.732810: sched_wakeup: comm=kworker/0:2H pid=557 prio=100 success=1 target_cpu=000 + kworker/0:1H-17 (-----) [000] ...2 1212.732829: sched_switch: prev_comm=kworker/0:1H prev_pid=17 prev_prio=100 prev_state=S ==> next_comm=kworker/0:2H next_pid=557 next_prio=100 + kworker/0:2H-557 (-----) [000] ...2 1212.732854: sched_switch: prev_comm=kworker/0:2H prev_pid=557 prev_prio=100 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d.h4 1212.876266: sched_wakeup: comm=RILSender0 pid=1365 prio=120 success=1 target_cpu=000 + -0 (-----) [000] dNh4 1212.876284: sched_wakeup: comm=MMHandlerThread pid=7231 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1212.876316: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=RILSender0 next_pid=1365 next_prio=120 + RILSender0-1365 (-----) [000] ...2 1212.876415: sched_switch: prev_comm=RILSender0 prev_pid=1365 prev_prio=120 prev_state=S ==> next_comm=MMHandlerThread next_pid=7231 next_prio=120 + MMHandlerThread-7231 (-----) [000] ...2 1212.876454: sched_switch: prev_comm=MMHandlerThread prev_pid=7231 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d.h4 1213.089569: sched_wakeup: comm=Thread-625 pid=5750 prio=120 success=1 target_cpu=000 + -0 (-----) [000] dNh4 1213.089587: sched_wakeup: comm=MMHandlerThread pid=7231 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1213.089622: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=Thread-625 next_pid=5750 next_prio=120 + Thread-625-5750 (-----) [000] ...2 1213.089842: sched_switch: prev_comm=Thread-625 prev_pid=5750 prev_prio=120 prev_state=S ==> next_comm=MMHandlerThread next_pid=7231 next_prio=120 + MMHandlerThread-7231 (-----) [000] ...2 1213.089879: sched_switch: prev_comm=MMHandlerThread prev_pid=7231 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d.h4 1213.327439: sched_wakeup: comm=pandora.android pid=5395 prio=120 success=1 target_cpu=000 + -0 (-----) [000] dNh4 1213.327455: sched_wakeup: comm=MMHandlerThread pid=7231 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1213.327487: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=MMHandlerThread next_pid=7231 next_prio=120 + MMHandlerThread-7231 (-----) [000] ...2 1213.327518: sched_switch: prev_comm=MMHandlerThread prev_pid=7231 prev_prio=120 prev_state=S ==> next_comm=pandora.android next_pid=5395 next_prio=120 + pandora.android-5395 (-----) [000] d..4 1213.327718: sched_wakeup: comm=Binder_1 pid=780 prio=120 success=1 target_cpu=000 + pandora.android-5395 (-----) [000] ...2 1213.327739: sched_switch: prev_comm=pandora.android prev_pid=5395 prev_prio=120 prev_state=R+ ==> next_comm=Binder_1 next_pid=780 next_prio=120 + Binder_1-780 (-----) [000] ...2 1213.327763: sched_switch: prev_comm=Binder_1 prev_pid=780 prev_prio=120 prev_state=D ==> next_comm=pandora.android next_pid=5395 next_prio=120 + pandora.android-5395 (-----) [000] d..3 1213.327781: sched_wakeup: comm=Binder_1 pid=780 prio=120 success=1 target_cpu=000 + pandora.android-5395 (-----) [000] ...2 1213.327795: sched_switch: prev_comm=pandora.android prev_pid=5395 prev_prio=120 prev_state=R+ ==> next_comm=Binder_1 next_pid=780 next_prio=120 + Binder_1-780 (-----) [000] d..4 1213.328056: sched_wakeup: comm=Binder_1 pid=878 prio=120 success=1 target_cpu=000 + Binder_1-780 (-----) [000] ...2 1213.328095: sched_switch: prev_comm=Binder_1 prev_pid=780 prev_prio=120 prev_state=S ==> next_comm=Binder_1 next_pid=878 next_prio=120 + Binder_1-878 (-----) [000] d..4 1213.328263: sched_wakeup: comm=Binder_1 pid=780 prio=120 success=1 target_cpu=000 + Binder_1-878 (-----) [000] ...2 1213.328345: sched_switch: prev_comm=Binder_1 prev_pid=878 prev_prio=120 prev_state=S ==> next_comm=Binder_1 next_pid=780 next_prio=120 + Binder_1-780 (-----) [000] ...2 1213.328558: sched_switch: prev_comm=Binder_1 prev_pid=780 prev_prio=120 prev_state=S ==> next_comm=pandora.android next_pid=5395 next_prio=120 + pandora.android-5395 (-----) [000] ...2 1213.328743: sched_switch: prev_comm=pandora.android prev_pid=5395 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d..4 1213.328773: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1213.328793: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 (-----) [000] ...2 1213.328821: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d..4 1213.328846: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1213.328866: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 (-----) [000] ...2 1213.328891: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d..4 1213.328913: sched_wakeup: comm=ksoftirqd/0 pid=3 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1213.328931: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=120 + ksoftirqd/0-3 (-----) [000] ...2 1213.328964: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 + -0 (-----) [000] d.h4 1213.465138: sched_wakeup: comm=atrace pid=14446 prio=120 success=1 target_cpu=000 + -0 (-----) [000] ...2 1213.465171: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=atrace next_pid=14446 next_prio=120 diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_procfs_dump b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_procfs_dump new file mode 100644 index 0000000..f1f0c76 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/atrace_procfs_dump @@ -0,0 +1,1156 @@ +proc/1/task/1 +/proc/10/task/10 +/proc/100/task/100 +/proc/101/task/101 +/proc/102/task/102 +/proc/103/task/103 +/proc/104/task/104 +/proc/105/task/105 +/proc/106/task/106 +/proc/1068/task/1068 +/proc/107/task/107 +/proc/1079/task/1079 +/proc/1079/task/1080 +/proc/1079/task/1081 +/proc/108/task/108 +/proc/109/task/109 +/proc/11/task/11 +/proc/110/task/110 +/proc/111/task/111 +/proc/1124/task/1124 +/proc/1124/task/1127 +/proc/1124/task/1129 +/proc/1124/task/1131 +/proc/1124/task/1133 +/proc/1124/task/1134 +/proc/1124/task/1135 +/proc/1124/task/1136 +/proc/1124/task/1137 +/proc/1124/task/1182 +/proc/1124/task/1184 +/proc/1124/task/1187 +/proc/1124/task/1224 +/proc/1124/task/1232 +/proc/1124/task/1288 +/proc/1124/task/1301 +/proc/1124/task/1315 +/proc/1124/task/1322 +/proc/1124/task/1323 +/proc/1124/task/1327 +/proc/1124/task/1385 +/proc/1124/task/1426 +/proc/1124/task/1430 +/proc/1124/task/1552 +/proc/1124/task/1554 +/proc/1124/task/22782 +/proc/1124/task/23370 +/proc/1124/task/23398 +/proc/1124/task/23401 +/proc/1124/task/24337 +/proc/1124/task/24355 +/proc/1124/task/24356 +/proc/1124/task/24357 +/proc/1124/task/24358 +/proc/12/task/12 +/proc/1268/task/1268 +/proc/134/task/134 +/proc/1345/task/1345 +/proc/1345/task/1354 +/proc/1345/task/1355 +/proc/1345/task/1359 +/proc/1345/task/1360 +/proc/1345/task/1363 +/proc/1345/task/1364 +/proc/1345/task/1365 +/proc/1345/task/1368 +/proc/1345/task/1738 +/proc/135/task/135 +/proc/1370/task/11048 +/proc/1370/task/1370 +/proc/1370/task/1377 +/proc/1370/task/1378 +/proc/1370/task/1382 +/proc/1370/task/1383 +/proc/1370/task/1384 +/proc/1370/task/1386 +/proc/1370/task/1389 +/proc/1370/task/1392 +/proc/1370/task/13927 +/proc/1370/task/1442 +/proc/1370/task/1443 +/proc/1370/task/1613 +/proc/1370/task/16865 +/proc/1370/task/1692 +/proc/1370/task/19187 +/proc/1370/task/19192 +/proc/1370/task/1972 +/proc/1370/task/1982 +/proc/1370/task/2082 +/proc/1370/task/2103 +/proc/1370/task/2106 +/proc/1370/task/2123 +/proc/1370/task/2131 +/proc/1370/task/2135 +/proc/1370/task/2161 +/proc/1370/task/21920 +/proc/1370/task/2438 +/proc/1370/task/2453 +/proc/1370/task/3086 +/proc/1370/task/3114 +/proc/1370/task/3329 +/proc/1370/task/5979 +/proc/1370/task/5980 +/proc/1370/task/6654 +/proc/1370/task/8058 +/proc/1370/task/9009 +/proc/1393/task/1393 +/proc/1393/task/1395 +/proc/1393/task/1397 +/proc/1393/task/1402 +/proc/1393/task/1403 +/proc/1393/task/1405 +/proc/1393/task/1406 +/proc/1393/task/1407 +/proc/1393/task/1412 +/proc/1393/task/1490 +/proc/1393/task/1532 +/proc/1393/task/1533 +/proc/1393/task/1535 +/proc/1393/task/1550 +/proc/14/task/14 +/proc/1437/task/1437 +/proc/1458/task/1458 +/proc/1458/task/1461 +/proc/1458/task/1463 +/proc/1458/task/1465 +/proc/1458/task/1466 +/proc/1458/task/1467 +/proc/1458/task/1469 +/proc/1458/task/1470 +/proc/1458/task/1476 +/proc/1458/task/1539 +/proc/1458/task/1542 +/proc/1458/task/1548 +/proc/1458/task/1549 +/proc/1458/task/5151 +/proc/1471/task/1471 +/proc/1471/task/1475 +/proc/1471/task/1478 +/proc/1471/task/1479 +/proc/1471/task/1480 +/proc/1471/task/1481 +/proc/1471/task/1482 +/proc/1471/task/1485 +/proc/1471/task/1491 +/proc/1471/task/1609 +/proc/1471/task/1614 +/proc/1471/task/1617 +/proc/1471/task/1623 +/proc/1471/task/1809 +/proc/1471/task/1810 +/proc/1471/task/1811 +/proc/1471/task/1813 +/proc/1471/task/2069 +/proc/1471/task/2070 +/proc/1471/task/2071 +/proc/1471/task/2072 +/proc/1471/task/2073 +/proc/1471/task/2093 +/proc/1471/task/2516 +/proc/1471/task/5146 +/proc/1471/task/5148 +/proc/1471/task/5152 +/proc/1471/task/5164 +/proc/1471/task/5234 +/proc/1471/task/5242 +/proc/1471/task/5248 +/proc/1483/task/1483 +/proc/1483/task/1489 +/proc/1483/task/1492 +/proc/1483/task/1493 +/proc/1483/task/1494 +/proc/1483/task/1495 +/proc/1483/task/1497 +/proc/1483/task/1498 +/proc/1483/task/1501 +/proc/1483/task/1559 +/proc/1483/task/1579 +/proc/1483/task/1580 +/proc/1483/task/1607 +/proc/1483/task/1621 +/proc/1483/task/1622 +/proc/1483/task/1624 +/proc/1483/task/1625 +/proc/1483/task/1627 +/proc/1483/task/1628 +/proc/1483/task/1647 +/proc/1483/task/1682 +/proc/1483/task/1746 +/proc/1483/task/1797 +/proc/1483/task/1800 +/proc/1483/task/2912 +/proc/1483/task/2913 +/proc/1483/task/4631 +/proc/1483/task/4702 +/proc/1483/task/4758 +/proc/1483/task/4759 +/proc/15/task/15 +/proc/1500/task/1500 +/proc/1500/task/1509 +/proc/1500/task/1512 +/proc/1500/task/1513 +/proc/1500/task/1514 +/proc/1500/task/1518 +/proc/1500/task/1519 +/proc/1500/task/1524 +/proc/1500/task/1531 +/proc/1500/task/1616 +/proc/1500/task/1637 +/proc/1500/task/1693 +/proc/1500/task/1704 +/proc/1500/task/1821 +/proc/1500/task/1822 +/proc/1500/task/1842 +/proc/1500/task/1847 +/proc/1500/task/1848 +/proc/1500/task/1849 +/proc/1500/task/1850 +/proc/1500/task/1851 +/proc/1500/task/1852 +/proc/1500/task/1853 +/proc/1500/task/1854 +/proc/1500/task/1859 +/proc/1500/task/1886 +/proc/1500/task/1899 +/proc/1500/task/1915 +/proc/1500/task/1919 +/proc/1500/task/20067 +/proc/1500/task/2520 +/proc/1500/task/2524 +/proc/1500/task/5136 +/proc/1500/task/5165 +/proc/1500/task/5181 +/proc/1500/task/5189 +/proc/1500/task/5232 +/proc/1500/task/5250 +/proc/155/task/155 +/proc/156/task/156 +/proc/157/task/157 +/proc/158/task/158 +/proc/159/task/159 +/proc/16/task/16 +/proc/160/task/160 +/proc/161/task/161 +/proc/162/task/162 +/proc/163/task/163 +/proc/164/task/164 +/proc/165/task/165 +/proc/1655/task/11310 +/proc/1655/task/13400 +/proc/1655/task/1655 +/proc/1655/task/1660 +/proc/1655/task/1663 +/proc/1655/task/1666 +/proc/1655/task/1667 +/proc/1655/task/1668 +/proc/1655/task/1669 +/proc/1655/task/1673 +/proc/1655/task/1675 +/proc/1655/task/1710 +/proc/1655/task/1716 +/proc/1655/task/1718 +/proc/1655/task/1725 +/proc/1655/task/1737 +/proc/1655/task/1754 +/proc/1655/task/1836 +/proc/1655/task/1838 +/proc/1655/task/1861 +/proc/1655/task/1870 +/proc/1655/task/1892 +/proc/1655/task/2544 +/proc/1655/task/2548 +/proc/1655/task/2550 +/proc/1655/task/2552 +/proc/1655/task/2554 +/proc/1655/task/2577 +/proc/1655/task/2585 +/proc/1655/task/2586 +/proc/1655/task/2600 +/proc/1655/task/2607 +/proc/1655/task/2615 +/proc/1655/task/7773 +/proc/1655/task/7775 +/proc/1655/task/7776 +/proc/1655/task/7777 +/proc/166/task/166 +/proc/167/task/167 +/proc/168/task/168 +/proc/169/task/169 +/proc/170/task/170 +/proc/171/task/171 +/proc/172/task/172 +/proc/173/task/173 +/proc/174/task/174 +/proc/175/task/175 +/proc/176/task/176 +/proc/1760/task/12764 +/proc/1760/task/14143 +/proc/1760/task/1760 +/proc/1760/task/1765 +/proc/1760/task/1766 +/proc/1760/task/1767 +/proc/1760/task/1768 +/proc/1760/task/1769 +/proc/1760/task/1770 +/proc/1760/task/1771 +/proc/1760/task/1775 +/proc/1760/task/17951 +/proc/1760/task/1825 +/proc/1760/task/1827 +/proc/1760/task/1858 +/proc/1760/task/1885 +/proc/1760/task/1898 +/proc/1760/task/19309 +/proc/1760/task/1986 +/proc/1760/task/2096 +/proc/1760/task/2104 +/proc/1760/task/2108 +/proc/1760/task/2183 +/proc/1760/task/22184 +/proc/1760/task/2235 +/proc/1760/task/23604 +/proc/1760/task/2445 +/proc/1760/task/2473 +/proc/1760/task/2475 +/proc/1760/task/2483 +/proc/1760/task/2484 +/proc/1760/task/2485 +/proc/1760/task/2486 +/proc/1760/task/2487 +/proc/1760/task/2612 +/proc/1760/task/2614 +/proc/1760/task/2625 +/proc/1760/task/2670 +/proc/1760/task/3211 +/proc/1760/task/3213 +/proc/1760/task/3214 +/proc/1760/task/3216 +/proc/1760/task/3217 +/proc/1760/task/3218 +/proc/1760/task/3219 +/proc/1760/task/3220 +/proc/1760/task/3222 +/proc/1760/task/3223 +/proc/1760/task/3234 +/proc/177/task/177 +/proc/1772/task/10458 +/proc/1772/task/12281 +/proc/1772/task/1772 +/proc/1772/task/1776 +/proc/1772/task/1779 +/proc/1772/task/1781 +/proc/1772/task/1783 +/proc/1772/task/1784 +/proc/1772/task/1786 +/proc/1772/task/1788 +/proc/1772/task/1790 +/proc/1772/task/1793 +/proc/1772/task/1839 +/proc/1772/task/1857 +/proc/1772/task/1868 +/proc/1772/task/1882 +/proc/1772/task/18869 +/proc/1772/task/1907 +/proc/1772/task/1910 +/proc/1772/task/1911 +/proc/1772/task/1912 +/proc/1772/task/1913 +/proc/1772/task/1914 +/proc/1772/task/1921 +/proc/1772/task/1922 +/proc/1772/task/1940 +/proc/1772/task/1951 +/proc/1772/task/1967 +/proc/1772/task/1970 +/proc/1772/task/1983 +/proc/1772/task/2001 +/proc/1772/task/2037 +/proc/1772/task/2087 +/proc/1772/task/2090 +/proc/1772/task/2102 +/proc/1772/task/2132 +/proc/1772/task/2136 +/proc/1772/task/2162 +/proc/1772/task/2461 +/proc/1772/task/2494 +/proc/1772/task/2495 +/proc/1772/task/2496 +/proc/1772/task/2497 +/proc/1772/task/2498 +/proc/1772/task/3116 +/proc/1772/task/3156 +/proc/1772/task/5262 +/proc/1772/task/5712 +/proc/1772/task/6367 +/proc/1772/task/8060 +/proc/1772/task/9011 +/proc/178/task/178 +/proc/179/task/179 +/proc/18/task/18 +/proc/18089/task/18089 +/proc/18089/task/18093 +/proc/18089/task/18095 +/proc/18089/task/18096 +/proc/18089/task/18097 +/proc/18089/task/18098 +/proc/18089/task/18099 +/proc/18089/task/18100 +/proc/18089/task/18101 +/proc/18089/task/18340 +/proc/18089/task/18368 +/proc/18089/task/18450 +/proc/18089/task/18969 +/proc/18089/task/20693 +/proc/18089/task/22503 +/proc/18649/task/18649 +/proc/18649/task/18654 +/proc/18649/task/18655 +/proc/18649/task/18656 +/proc/18649/task/18657 +/proc/18649/task/18658 +/proc/18649/task/18659 +/proc/18649/task/18660 +/proc/18649/task/18661 +/proc/18649/task/18665 +/proc/18649/task/18670 +/proc/18649/task/18697 +/proc/18649/task/20228 +/proc/18649/task/20230 +/proc/18649/task/22750 +/proc/18649/task/22751 +/proc/18649/task/22752 +/proc/18649/task/22755 +/proc/18649/task/22756 +/proc/18649/task/22758 +/proc/18949/task/18949 +/proc/18949/task/18954 +/proc/18949/task/18955 +/proc/18949/task/18956 +/proc/18949/task/18957 +/proc/18949/task/18958 +/proc/18949/task/18961 +/proc/18949/task/18962 +/proc/18949/task/18964 +/proc/19/task/19 +/proc/2/task/2 +/proc/20/task/20 +/proc/200/task/200 +/proc/201/task/201 +/proc/203/task/203 +/proc/204/task/204 +/proc/205/task/205 +/proc/207/task/207 +/proc/208/task/208 +/proc/209/task/209 +/proc/211/task/211 +/proc/212/task/212 +/proc/213/task/213 +/proc/216/task/216 +/proc/218/task/218 +/proc/219/task/219 +/proc/22/task/22 +/proc/220/task/220 +/proc/221/task/221 +/proc/222/task/222 +/proc/223/task/223 +/proc/22382/task/22382 +/proc/224/task/224 +/proc/225/task/225 +/proc/226/task/226 +/proc/227/task/227 +/proc/228/task/228 +/proc/229/task/229 +/proc/23/task/23 +/proc/230/task/230 +/proc/231/task/231 +/proc/23187/task/23187 +/proc/23187/task/23191 +/proc/23187/task/23194 +/proc/23187/task/23195 +/proc/23187/task/23196 +/proc/23187/task/23197 +/proc/23187/task/23198 +/proc/23187/task/23200 +/proc/23187/task/23201 +/proc/23187/task/23206 +/proc/232/task/232 +/proc/23233/task/23233 +/proc/23233/task/23237 +/proc/23233/task/23239 +/proc/23233/task/23240 +/proc/23233/task/23241 +/proc/23233/task/23242 +/proc/23233/task/23243 +/proc/23233/task/23245 +/proc/23233/task/23246 +/proc/23253/task/23253 +/proc/233/task/233 +/proc/234/task/234 +/proc/23400/task/23400 +/proc/235/task/235 +/proc/236/task/236 +/proc/237/task/237 +/proc/238/task/238 +/proc/239/task/239 +/proc/24/task/24 +/proc/240/task/240 +/proc/241/task/241 +/proc/242/task/242 +/proc/24281/task/24281 +/proc/243/task/243 +/proc/24304/task/24304 +/proc/244/task/244 +/proc/245/task/245 +/proc/246/task/246 +/proc/24678/task/24678 +/proc/247/task/247 +/proc/24767/task/24767 +/proc/248/task/248 +/proc/249/task/249 +/proc/24912/task/24912 +/proc/24918/task/24918 +/proc/250/task/250 +/proc/25094/task/25094 +/proc/251/task/251 +/proc/25115/task/25115 +/proc/25181/task/25181 +/proc/25194/task/25194 +/proc/252/task/252 +/proc/25219/task/25219 +/proc/25224/task/25224 +/proc/25227/task/25227 +/proc/253/task/253 +/proc/254/task/254 +/proc/255/task/255 +/proc/2558/task/2558 +/proc/2558/task/2560 +/proc/2558/task/2562 +/proc/2558/task/2565 +/proc/2558/task/2566 +/proc/2558/task/2567 +/proc/2558/task/2568 +/proc/2558/task/2570 +/proc/2558/task/2578 +/proc/256/task/256 +/proc/257/task/257 +/proc/2579/task/2579 +/proc/2579/task/2584 +/proc/2579/task/2589 +/proc/2579/task/2590 +/proc/2579/task/2591 +/proc/2579/task/2594 +/proc/2579/task/2598 +/proc/2579/task/2602 +/proc/2579/task/2609 +/proc/2579/task/2611 +/proc/2579/task/2626 +/proc/2579/task/2628 +/proc/2579/task/2629 +/proc/2579/task/2630 +/proc/2579/task/2631 +/proc/2579/task/2633 +/proc/2579/task/2634 +/proc/2579/task/2640 +/proc/2579/task/2649 +/proc/2579/task/2650 +/proc/2579/task/2651 +/proc/2579/task/2652 +/proc/2579/task/2653 +/proc/2579/task/2655 +/proc/2579/task/2657 +/proc/2579/task/2659 +/proc/2579/task/2660 +/proc/2579/task/2661 +/proc/2579/task/2662 +/proc/2579/task/2663 +/proc/2579/task/2664 +/proc/2579/task/2665 +/proc/2579/task/2666 +/proc/2579/task/2667 +/proc/2579/task/2669 +/proc/2579/task/2671 +/proc/2579/task/2672 +/proc/2579/task/2683 +/proc/2579/task/2684 +/proc/2579/task/2685 +/proc/2579/task/2688 +/proc/2579/task/2694 +/proc/2579/task/2697 +/proc/2579/task/2698 +/proc/2579/task/2699 +/proc/2579/task/2702 +/proc/2579/task/2704 +/proc/2579/task/2705 +/proc/2579/task/2706 +/proc/2579/task/2707 +/proc/2579/task/2708 +/proc/2579/task/2709 +/proc/2579/task/2710 +/proc/2579/task/2711 +/proc/2579/task/2712 +/proc/2579/task/2713 +/proc/2579/task/2714 +/proc/2579/task/2715 +/proc/2579/task/2716 +/proc/2579/task/2717 +/proc/2579/task/2718 +/proc/2579/task/2719 +/proc/2579/task/2720 +/proc/2579/task/2725 +/proc/2579/task/2727 +/proc/2579/task/3198 +/proc/258/task/258 +/proc/259/task/259 +/proc/26/task/26 +/proc/260/task/260 +/proc/261/task/261 +/proc/262/task/262 +/proc/263/task/263 +/proc/264/task/264 +/proc/265/task/265 +/proc/266/task/266 +/proc/267/task/267 +/proc/268/task/268 +/proc/269/task/269 +/proc/27/task/27 +/proc/270/task/270 +/proc/271/task/271 +/proc/272/task/272 +/proc/273/task/273 +/proc/274/task/274 +/proc/275/task/275 +/proc/276/task/276 +/proc/2761/task/2761 +/proc/277/task/277 +/proc/278/task/278 +/proc/279/task/279 +/proc/28/task/28 +/proc/280/task/280 +/proc/281/task/281 +/proc/282/task/282 +/proc/283/task/283 +/proc/284/task/284 +/proc/285/task/285 +/proc/286/task/286 +/proc/287/task/287 +/proc/288/task/288 +/proc/2883/task/2883 +/proc/2883/task/2886 +/proc/2883/task/2888 +/proc/2883/task/2890 +/proc/2883/task/2891 +/proc/2883/task/2892 +/proc/2883/task/2893 +/proc/2883/task/2894 +/proc/2883/task/2895 +/proc/2883/task/2897 +/proc/2883/task/2898 +/proc/289/task/289 +/proc/29/task/29 +/proc/294/task/294 +/proc/295/task/295 +/proc/296/task/296 +/proc/297/task/297 +/proc/298/task/298 +/proc/299/task/299 +/proc/3/task/3 +/proc/30/task/30 +/proc/300/task/300 +/proc/301/task/301 +/proc/302/task/302 +/proc/303/task/303 +/proc/304/task/304 +/proc/305/task/305 +/proc/306/task/306 +/proc/308/task/308 +/proc/309/task/309 +/proc/31/task/31 +/proc/310/task/310 +/proc/311/task/311 +/proc/312/task/312 +/proc/313/task/313 +/proc/314/task/314 +/proc/315/task/315 +/proc/316/task/316 +/proc/317/task/317 +/proc/318/task/318 +/proc/319/task/319 +/proc/32/task/32 +/proc/320/task/320 +/proc/321/task/321 +/proc/322/task/322 +/proc/323/task/323 +/proc/324/task/324 +/proc/325/task/325 +/proc/326/task/326 +/proc/327/task/327 +/proc/328/task/328 +/proc/329/task/329 +/proc/33/task/33 +/proc/330/task/330 +/proc/331/task/331 +/proc/332/task/332 +/proc/333/task/333 +/proc/335/task/335 +/proc/336/task/336 +/proc/337/task/337 +/proc/338/task/338 +/proc/340/task/340 +/proc/341/task/341 +/proc/342/task/342 +/proc/343/task/343 +/proc/344/task/344 +/proc/345/task/345 +/proc/346/task/346 +/proc/348/task/348 +/proc/349/task/349 +/proc/354/task/354 +/proc/355/task/355 +/proc/356/task/356 +/proc/360/task/360 +/proc/361/task/361 +/proc/362/task/362 +/proc/363/task/363 +/proc/364/task/364 +/proc/364/task/368 +/proc/364/task/369 +/proc/364/task/370 +/proc/364/task/371 +/proc/364/task/380 +/proc/364/task/381 +/proc/366/task/366 +/proc/366/task/394 +/proc/366/task/395 +/proc/366/task/396 +/proc/372/task/372 +/proc/393/task/393 +/proc/397/task/397 +/proc/398/task/398 +/proc/399/task/399 +/proc/40/task/40 +/proc/402/task/402 +/proc/403/task/403 +/proc/404/task/404 +/proc/405/task/1008 +/proc/405/task/1581 +/proc/405/task/1887 +/proc/405/task/405 +/proc/405/task/414 +/proc/405/task/415 +/proc/405/task/416 +/proc/405/task/771 +/proc/405/task/772 +/proc/405/task/774 +/proc/405/task/775 +/proc/405/task/776 +/proc/405/task/777 +/proc/405/task/778 +/proc/406/task/406 +/proc/406/task/410 +/proc/406/task/411 +/proc/406/task/412 +/proc/406/task/413 +/proc/41/task/41 +/proc/42/task/42 +/proc/421/task/421 +/proc/422/task/422 +/proc/423/task/423 +/proc/424/task/424 +/proc/425/task/425 +/proc/426/task/426 +/proc/427/task/427 +/proc/429/task/429 +/proc/430/task/430 +/proc/431/task/431 +/proc/433/task/433 +/proc/434/task/434 +/proc/435/task/3343 +/proc/435/task/435 +/proc/435/task/482 +/proc/436/task/3354 +/proc/436/task/3372 +/proc/436/task/4112 +/proc/436/task/4113 +/proc/436/task/4114 +/proc/436/task/4230 +/proc/436/task/436 +/proc/436/task/499 +/proc/436/task/897 +/proc/436/task/901 +/proc/436/task/908 +/proc/437/task/3604 +/proc/437/task/3608 +/proc/437/task/3610 +/proc/437/task/437 +/proc/437/task/475 +/proc/438/task/438 +/proc/439/task/439 +/proc/439/task/846 +/proc/439/task/847 +/proc/439/task/848 +/proc/439/task/849 +/proc/439/task/850 +/proc/439/task/851 +/proc/439/task/852 +/proc/439/task/853 +/proc/439/task/854 +/proc/44/task/44 +/proc/440/task/440 +/proc/441/task/441 +/proc/442/task/3462 +/proc/442/task/3575 +/proc/442/task/3908 +/proc/442/task/4122 +/proc/442/task/4155 +/proc/442/task/4158 +/proc/442/task/442 +/proc/442/task/4463 +/proc/442/task/4468 +/proc/442/task/4469 +/proc/442/task/4470 +/proc/442/task/4494 +/proc/442/task/541 +/proc/442/task/559 +/proc/442/task/796 +/proc/442/task/797 +/proc/442/task/799 +/proc/442/task/801 +/proc/442/task/807 +/proc/442/task/808 +/proc/442/task/820 +/proc/442/task/821 +/proc/444/task/444 +/proc/444/task/583 +/proc/445/task/1009 +/proc/445/task/1010 +/proc/445/task/1011 +/proc/445/task/1012 +/proc/445/task/1013 +/proc/445/task/1014 +/proc/445/task/1015 +/proc/445/task/1016 +/proc/445/task/1017 +/proc/445/task/1021 +/proc/445/task/1051 +/proc/445/task/1438 +/proc/445/task/445 +/proc/445/task/5133 +/proc/445/task/5134 +/proc/445/task/5424 +/proc/445/task/5425 +/proc/445/task/5426 +/proc/445/task/5427 +/proc/446/task/446 +/proc/447/task/447 +/proc/448/task/448 +/proc/45/task/45 +/proc/450/task/3602 +/proc/450/task/3656 +/proc/450/task/3702 +/proc/450/task/3723 +/proc/450/task/3789 +/proc/450/task/450 +/proc/450/task/477 +/proc/450/task/479 +/proc/450/task/484 +/proc/450/task/485 +/proc/450/task/487 +/proc/450/task/488 +/proc/450/task/490 +/proc/450/task/491 +/proc/450/task/492 +/proc/450/task/493 +/proc/450/task/494 +/proc/450/task/495 +/proc/450/task/496 +/proc/450/task/497 +/proc/450/task/498 +/proc/450/task/500 +/proc/450/task/501 +/proc/450/task/502 +/proc/450/task/503 +/proc/450/task/504 +/proc/450/task/505 +/proc/450/task/506 +/proc/450/task/507 +/proc/450/task/508 +/proc/450/task/509 +/proc/450/task/510 +/proc/450/task/511 +/proc/450/task/512 +/proc/450/task/513 +/proc/450/task/514 +/proc/450/task/515 +/proc/450/task/516 +/proc/450/task/517 +/proc/450/task/518 +/proc/450/task/519 +/proc/450/task/520 +/proc/450/task/521 +/proc/450/task/522 +/proc/450/task/523 +/proc/450/task/524 +/proc/450/task/525 +/proc/450/task/526 +/proc/450/task/527 +/proc/450/task/528 +/proc/450/task/529 +/proc/450/task/530 +/proc/450/task/531 +/proc/450/task/532 +/proc/450/task/533 +/proc/450/task/534 +/proc/450/task/535 +/proc/450/task/536 +/proc/451/task/451 +/proc/451/task/464 +/proc/452/task/452 +/proc/452/task/680 +/proc/453/task/23589 +/proc/453/task/23590 +/proc/453/task/23591 +/proc/453/task/23593 +/proc/453/task/453 +/proc/454/task/18685 +/proc/454/task/18686 +/proc/454/task/18690 +/proc/454/task/18693 +/proc/454/task/454 +/proc/456/task/456 +/proc/457/task/457 +/proc/457/task/614 +/proc/457/task/887 +/proc/457/task/889 +/proc/457/task/890 +/proc/458/task/458 +/proc/459/task/459 +/proc/46/task/46 +/proc/461/task/461 +/proc/461/task/538 +/proc/463/task/463 +/proc/463/task/483 +/proc/463/task/486 +/proc/465/task/25228 +/proc/465/task/465 +/proc/465/task/467 +/proc/465/task/468 +/proc/465/task/469 +/proc/466/task/466 +/proc/466/task/539 +/proc/47/task/47 +/proc/48/task/48 +/proc/480/task/480 +/proc/49/task/49 +/proc/5/task/5 +/proc/50/task/50 +/proc/52/task/52 +/proc/53/task/53 +/proc/54/task/54 +/proc/55/task/55 +/proc/56/task/56 +/proc/57/task/57 +/proc/5740/task/5740 +/proc/58/task/58 +/proc/59/task/59 +/proc/6/task/6 +/proc/60/task/60 +/proc/605/task/605 +/proc/606/task/606 +/proc/61/task/61 +/proc/62/task/62 +/proc/63/task/63 +/proc/64/task/64 +/proc/65/task/65 +/proc/66/task/66 +/proc/67/task/67 +/proc/68/task/68 +/proc/69/task/69 +/proc/7/task/7 +/proc/70/task/70 +/proc/71/task/71 +/proc/72/task/72 +/proc/73/task/73 +/proc/74/task/74 +/proc/75/task/75 +/proc/76/task/76 +/proc/77/task/77 +/proc/78/task/78 +/proc/784/task/784 +/proc/785/task/785 +/proc/79/task/79 +/proc/8/task/8 +/proc/80/task/80 +/proc/803/task/803 +/proc/81/task/81 +/proc/82/task/82 +/proc/8269/task/10168 +/proc/8269/task/10769 +/proc/8269/task/11274 +/proc/8269/task/11689 +/proc/8269/task/12042 +/proc/8269/task/15349 +/proc/8269/task/25214 +/proc/8269/task/8269 +/proc/8269/task/8272 +/proc/8269/task/8275 +/proc/8269/task/8276 +/proc/8269/task/8277 +/proc/8269/task/8278 +/proc/8269/task/8279 +/proc/8269/task/8280 +/proc/8269/task/8281 +/proc/8269/task/8289 +/proc/8269/task/8290 +/proc/8269/task/8294 +/proc/8269/task/8298 +/proc/8269/task/8753 +/proc/8269/task/9356 +/proc/8269/task/9768 +/proc/83/task/83 +/proc/84/task/84 +/proc/85/task/85 +/proc/858/task/1023 +/proc/858/task/1024 +/proc/858/task/1025 +/proc/858/task/1026 +/proc/858/task/1027 +/proc/858/task/1028 +/proc/858/task/1033 +/proc/858/task/1034 +/proc/858/task/1035 +/proc/858/task/1036 +/proc/858/task/1037 +/proc/858/task/1038 +/proc/858/task/1039 +/proc/858/task/1040 +/proc/858/task/1041 +/proc/858/task/1042 +/proc/858/task/1043 +/proc/858/task/1044 +/proc/858/task/1045 +/proc/858/task/1046 +/proc/858/task/1047 +/proc/858/task/1048 +/proc/858/task/1050 +/proc/858/task/1052 +/proc/858/task/1071 +/proc/858/task/1072 +/proc/858/task/1073 +/proc/858/task/1074 +/proc/858/task/1075 +/proc/858/task/1076 +/proc/858/task/1077 +/proc/858/task/1078 +/proc/858/task/1094 +/proc/858/task/1096 +/proc/858/task/1097 +/proc/858/task/11180 +/proc/858/task/11181 +/proc/858/task/1267 +/proc/858/task/1314 +/proc/858/task/1331 +/proc/858/task/1333 +/proc/858/task/1334 +/proc/858/task/1339 +/proc/858/task/1340 +/proc/858/task/1374 +/proc/858/task/1375 +/proc/858/task/1398 +/proc/858/task/1415 +/proc/858/task/1428 +/proc/858/task/1429 +/proc/858/task/1449 +/proc/858/task/1454 +/proc/858/task/1457 +/proc/858/task/1496 +/proc/858/task/1536 +/proc/858/task/1585 +/proc/858/task/18763 +/proc/858/task/18764 +/proc/858/task/18765 +/proc/858/task/2245 +/proc/858/task/2272 +/proc/858/task/2435 +/proc/858/task/2441 +/proc/858/task/2450 +/proc/858/task/25218 +/proc/858/task/2811 +/proc/858/task/3170 +/proc/858/task/3186 +/proc/858/task/3200 +/proc/858/task/3201 +/proc/858/task/3386 +/proc/858/task/3555 +/proc/858/task/3733 +/proc/858/task/3750 +/proc/858/task/3774 +/proc/858/task/3775 +/proc/858/task/3776 +/proc/858/task/5928 +/proc/858/task/6410 +/proc/858/task/7100 +/proc/858/task/7516 +/proc/858/task/7568 +/proc/858/task/8172 +/proc/858/task/858 +/proc/858/task/862 +/proc/858/task/864 +/proc/858/task/865 +/proc/858/task/866 +/proc/858/task/867 +/proc/858/task/868 +/proc/858/task/869 +/proc/858/task/870 +/proc/858/task/883 +/proc/858/task/884 +/proc/858/task/885 +/proc/858/task/886 +/proc/858/task/888 +/proc/858/task/891 +/proc/858/task/892 +/proc/858/task/893 +/proc/858/task/894 +/proc/858/task/895 +/proc/858/task/896 +/proc/858/task/899 +/proc/858/task/9701 +/proc/86/task/86 +/proc/87/task/87 +/proc/871/task/871 +/proc/871/task/873 +/proc/871/task/874 +/proc/871/task/875 +/proc/871/task/876 +/proc/872/task/872 +/proc/877/task/877 +/proc/877/task/878 +/proc/877/task/879 +/proc/877/task/881 +/proc/877/task/882 +/proc/88/task/88 +/proc/880/task/880 +/proc/89/task/89 +/proc/9/task/9 +/proc/90/task/90 +/proc/905/task/905 +/proc/906/task/906 +/proc/907/task/907 +/proc/91/task/91 +/proc/92/task/92 +/proc/93/task/93 +/proc/94/task/94 +/proc/95/task/95 +/proc/96/task/96 +/proc/97/task/97 +/proc/98/task/98 +/proc/99/task/99 \ No newline at end of file diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/battor_test_data.txt b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/battor_test_data.txt new file mode 100644 index 0000000..9672736 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/battor_test_data.txt @@ -0,0 +1,16 @@ +# BattOr +# voltage_range [-6079.7, 6196.8] mV +# current_range [-6057.3, 5764.1] mA +# sample_rate 10000 Hz, gain 10.1x +0.00 6.5 4307.7 +0.10 15.1 4313.7 +0.20 15.1 4313.7 +0.30 12.2 4310.7 +0.40 12.2 4307.7 +0.50 18.0 4334.7 +0.60 15.1 4334.7 +0.70 18.0 4337.7 +0.80 18.0 4337.7 +0.90 20.9 4331.7 +1.00 9.3 4334.7 +1.10 9.3 4307.7 diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/compressed_atrace_data.txt b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/compressed_atrace_data.txt new file mode 100644 index 0000000..1368210 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/compressed_atrace_data.txt @@ -0,0 +1,5 @@ +TRACE: +x]nG}W4σ[U3zlʞ}X,6dso$-&+OEd5dhsqluܯ6OVW}l:o^?_qsu\~[V^|ܬ__j?o?I?xٜ?ogo6~OYωm"9tF #>ZRPk1ʡ@TfCqhkI5@r@`-%uzѨxvL-%|tu/QNf+#qCM >׻ǯ.D[@- 8j +Oo'rf⌷ % A@R]U 50V_6Cƿ]E} 2|"!ǰ: +@Ԍ\!>c0V49LAyD 'OsP[2w(vgO ࿉f irqs-off +# / _----=> need-resched +# | / _---=> hardirq/softirq +# || / _--=> preempt-depth +# ||| / delay +# TASK-PID TGID CPU# |||| TIMESTAMP FUNCTION +# | | | | |||| | | + <...>-19161 (-----) [001] ...1 683201.354908: tracing_mark_write: trace_event_clock_sync: parent_ts=683201.375000 + <...>-19161 (-----) [001] ...1 683201.354926: tracing_mark_write: trace_event_clock_sync: realtime_ts=3720325137 + ndroid.systemui-13580 (13580) [001] ...1 683202.104223: tracing_mark_write: S|13580|deliverInputEvent|263 + <...>-18926 (-----) [000] ...1 683202.104223: tracing_mark_write: S|18926|deliverInputEvent|1024 + ndroid.systemui-13580 (13580) [001] ...1 683202.104606: tracing_mark_write: F|13580|deliverInputEvent|263 + ndroid.systemui-13580 (13580) [001] ...1 683202.104846: tracing_mark_write: S|13580|deliverInputEvent|267 + ndroid.systemui-13580 (13580) [001] ...1 683202.105046: tracing_mark_write: F|13580|deliverInputEvent|267 + <...>-18926 (-----) [000] ...1 683202.107286: tracing_mark_write: F|18926|deliverInputEvent|1024 + <...>-18926 (-----) [005] ...1 683202.115809: tracing_mark_write: B|18926|Choreographer#doFrame + <...>-18926 (-----) [005] ...1 683202.115860: tracing_mark_write: B|18926|input + <...>-18926 (-----) [005] ...1 683202.115972: tracing_mark_write: S|18926|deliverInputEvent|1041 + <...>-18926 (-----) [005] ...1 683202.116506: tracing_mark_write: F|18926|deliverInputEvent|1041 + <...>-18926 (-----) [005] ...1 683202.116849: tracing_mark_write: E + <...>-18926 (-----) [005] ...1 683202.116883: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.131660: tracing_mark_write: B|18926|Choreographer#doFrame + <...>-18926 (-----) [004] ...1 683202.131710: tracing_mark_write: B|18926|input + <...>-18926 (-----) [004] ...1 683202.131833: tracing_mark_write: S|18926|deliverInputEvent|1056 + <...>-18926 (-----) [004] ...1 683202.132351: tracing_mark_write: F|18926|deliverInputEvent|1056 + <...>-18926 (-----) [004] ...1 683202.132442: tracing_mark_write: S|18926|deliverInputEvent|1071 + <...>-18926 (-----) [004] ...1 683202.133158: tracing_mark_write: S|18926|animator:opacity|23751452 + <...>-18964 (-----) [002] ...1 683202.133760: tracing_mark_write: B|18926|notifyFramePending + <...>-18964 (-----) [002] ...1 683202.133771: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.133780: tracing_mark_write: F|18926|deliverInputEvent|1071 + <...>-18926 (-----) [004] ...1 683202.133853: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.133879: tracing_mark_write: B|18926|animation + <...>-18926 (-----) [004] ...1 683202.133993: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.134018: tracing_mark_write: B|18926|traversal + <...>-18926 (-----) [004] ...1 683202.134075: tracing_mark_write: B|18926|draw + <...>-18926 (-----) [004] ...1 683202.134114: tracing_mark_write: B|18926|Record View#draw() + <...>-18926 (-----) [004] ...1 683202.134466: tracing_mark_write: E + <...>-18964 (-----) [002] ...1 683202.134734: tracing_mark_write: B|18926|DrawFrame + <...>-18964 (-----) [002] ...1 683202.134743: tracing_mark_write: B|18926|syncFrameState + <...>-18964 (-----) [002] ...1 683202.134797: tracing_mark_write: B|18926|prepareTree + <...>-18964 (-----) [002] ...1 683202.135205: tracing_mark_write: E + <...>-18964 (-----) [002] ...1 683202.135213: tracing_mark_write: E + <...>-18964 (-----) [002] ...1 683202.135308: tracing_mark_write: B|18926|computeOrdering + <...>-18964 (-----) [002] ...1 683202.135376: tracing_mark_write: E + <...>-18964 (-----) [002] ...1 683202.135819: tracing_mark_write: B|18926|flush drawing commands + <...>-18989 (-----) [003] ...1 683202.136120: tracing_mark_write: B|18926|shadow tessellation + <...>-18989 (-----) [003] ...1 683202.136133: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18989 (-----) [003] ...1 683202.136151: tracing_mark_write: E + <...>-18988 (-----) [002] ...1 683202.136156: tracing_mark_write: B|18926|shadow tessellation + <...>-18989 (-----) [003] ...1 683202.136165: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18988 (-----) [002] ...1 683202.136165: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18989 (-----) [003] ...1 683202.136170: tracing_mark_write: E + <...>-18989 (-----) [003] ...1 683202.136177: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18988 (-----) [002] ...1 683202.136177: tracing_mark_write: E + <...>-18988 (-----) [002] ...1 683202.136186: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18988 (-----) [002] ...1 683202.136204: tracing_mark_write: E + <...>-18988 (-----) [002] ...1 683202.136210: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18989 (-----) [003] ...1 683202.136220: tracing_mark_write: E + <...>-18989 (-----) [003] ...1 683202.136228: tracing_mark_write: E + <...>-18988 (-----) [002] ...1 683202.136234: tracing_mark_write: E + <...>-18988 (-----) [002] ...1 683202.136243: tracing_mark_write: E + <...>-18988 (-----) [002] ...1 683202.136250: tracing_mark_write: B|18926|shadow tessellation + <...>-18988 (-----) [002] ...1 683202.136257: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18988 (-----) [002] ...1 683202.136264: tracing_mark_write: E + <...>-18988 (-----) [002] ...1 683202.136273: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18988 (-----) [002] ...1 683202.136281: tracing_mark_write: E + <...>-18988 (-----) [002] ...1 683202.136288: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18988 (-----) [002] ...1 683202.136311: tracing_mark_write: E + <...>-18988 (-----) [002] ...1 683202.136318: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.136377: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.136393: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.136441: tracing_mark_write: C|18926|jitterNanos|6767359 + <...>-18926 (-----) [004] ...1 683202.136470: tracing_mark_write: B|18926|commit + <...>-18926 (-----) [004] ...1 683202.136500: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.136531: tracing_mark_write: E + <...>-18964 (-----) [002] ...1 683202.137447: tracing_mark_write: E + <...>-18964 (-----) [001] ...1 683202.139502: tracing_mark_write: C|18926|hwui_Texture|1858380 + <...>-18964 (-----) [001] ...1 683202.139532: tracing_mark_write: C|18926|hwui_Texture_count|157 + <...>-18964 (-----) [001] ...1 683202.139542: tracing_mark_write: C|18926|hwui_OffscreenBuffer|0 + <...>-18964 (-----) [001] ...1 683202.139552: tracing_mark_write: C|18926|hwui_OffscreenBuffer_count|0 + <...>-18964 (-----) [001] ...1 683202.139562: tracing_mark_write: C|18926|hwui_Layer|0 + <...>-18964 (-----) [001] ...1 683202.139571: tracing_mark_write: C|18926|hwui_Layer_count|0 + <...>-18964 (-----) [001] ...1 683202.139771: tracing_mark_write: E + <...>-18964 (-----) [001] ...1 683202.139787: tracing_mark_write: B|18926|notifyFramePending + <...>-18964 (-----) [001] ...1 683202.139793: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.149085: tracing_mark_write: B|18926|Choreographer#doFrame + <...>-18926 (-----) [004] ...1 683202.149136: tracing_mark_write: B|18926|input + <...>-18926 (-----) [004] ...1 683202.149185: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.149204: tracing_mark_write: B|18926|animation + <...>-18926 (-----) [004] ...1 683202.149511: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.149537: tracing_mark_write: B|18926|traversal + <...>-18926 (-----) [004] ...1 683202.149595: tracing_mark_write: B|18926|measure + <...>-18926 (-----) [004] ...1 683202.149738: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.149762: tracing_mark_write: B|18926|layout + <...>-18926 (-----) [004] ...1 683202.157004: tracing_mark_write: S|18926|animator:bottom|177885989 + <...>-18926 (-----) [004] ...1 683202.161620: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.161704: tracing_mark_write: B|18926|draw + <...>-18926 (-----) [004] ...1 683202.161755: tracing_mark_write: B|18926|Record View#draw() + <...>-18926 (-----) [004] ...1 683202.165418: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.165542: tracing_mark_write: B|18926|DrawFrame + <...>-18964 (-----) [005] ...1 683202.165553: tracing_mark_write: B|18926|syncFrameState + <...>-18964 (-----) [005] ...1 683202.165586: tracing_mark_write: B|18926|prepareTree + <...>-18964 (-----) [005] ...1 683202.165981: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.165989: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.166060: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.166072: tracing_mark_write: B|18926|computeOrdering + <...>-18926 (-----) [004] ...1 683202.166074: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.166116: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.166125: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.166296: tracing_mark_write: B|18926|shadow tessellation + <...>-18988 (-----) [001] ...1 683202.166312: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18926 (-----) [004] ...1 683202.166314: tracing_mark_write: B|18926|Choreographer#doFrame + <...>-18988 (-----) [001] ...1 683202.166330: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.166342: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18988 (-----) [001] ...1 683202.166361: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.166363: tracing_mark_write: B|18926|animation + <...>-18988 (-----) [001] ...1 683202.166369: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18988 (-----) [001] ...1 683202.166408: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.166416: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.167058: tracing_mark_write: S|18926|animator|46267553 + <...>-18926 (-----) [004] ...1 683202.167297: tracing_mark_write: S|18926|animator|219664070 + <...>-18988 (-----) [001] ...1 683202.167362: tracing_mark_write: B|18926|shadow tessellation + <...>-18988 (-----) [001] ...1 683202.167377: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18988 (-----) [001] ...1 683202.167386: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.167394: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18988 (-----) [001] ...1 683202.167402: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.167408: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18988 (-----) [001] ...1 683202.167429: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.167434: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.167467: tracing_mark_write: E + <...>-18989 (-----) [001] ...1 683202.167469: tracing_mark_write: B|18926|shadow tessellation + <...>-18989 (-----) [001] ...1 683202.167477: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18989 (-----) [001] ...1 683202.167487: tracing_mark_write: E + <...>-18989 (-----) [001] ...1 683202.167494: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18926 (-----) [004] ...1 683202.167501: tracing_mark_write: B|18926|traversal + <...>-18964 (-----) [005] ...1 683202.167508: tracing_mark_write: B|18926|flush drawing commands + <...>-18989 (-----) [001] ...1 683202.167529: tracing_mark_write: E + <...>-18989 (-----) [001] ...1 683202.167536: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18989 (-----) [001] ...1 683202.167556: tracing_mark_write: E + <...>-18989 (-----) [001] ...1 683202.167561: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.167580: tracing_mark_write: B|18926|draw + <...>-18926 (-----) [004] ...1 683202.167626: tracing_mark_write: B|18926|Record View#draw() + <...>-18964 (-----) [005] ...1 683202.168483: tracing_mark_write: B|18926|Upload 63x63 Texture + <...>-18964 (-----) [005] ...1 683202.168780: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.168970: tracing_mark_write: B|18926|Upload 63x63 Texture + <...>-18926 (-----) [004] ...1 683202.168978: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.169188: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.169313: tracing_mark_write: B|18926|Upload 63x63 Texture + <...>-18964 (-----) [005] ...1 683202.169537: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.170878: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.171711: tracing_mark_write: C|18926|hwui_Texture|1906008 + <...>-18964 (-----) [005] ...1 683202.171721: tracing_mark_write: C|18926|hwui_Texture_count|160 + <...>-18964 (-----) [005] ...1 683202.171728: tracing_mark_write: C|18926|hwui_OffscreenBuffer|0 + <...>-18964 (-----) [005] ...1 683202.171735: tracing_mark_write: C|18926|hwui_OffscreenBuffer_count|0 + <...>-18964 (-----) [005] ...1 683202.171742: tracing_mark_write: C|18926|hwui_Layer|0 + <...>-18964 (-----) [005] ...1 683202.171748: tracing_mark_write: C|18926|hwui_Layer_count|0 + <...>-18964 (-----) [005] ...1 683202.171872: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.171882: tracing_mark_write: B|18926|notifyFramePending + <...>-18964 (-----) [005] ...1 683202.171886: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.171893: tracing_mark_write: B|18926|notifyFramePending + <...>-18964 (-----) [005] ...1 683202.171896: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.171903: tracing_mark_write: B|18926|DrawFrame + <...>-18964 (-----) [005] ...1 683202.171909: tracing_mark_write: B|18926|syncFrameState + <...>-18964 (-----) [005] ...1 683202.171933: tracing_mark_write: B|18926|prepareTree + <...>-18964 (-----) [005] ...1 683202.172095: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.172101: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.172156: tracing_mark_write: B|18926|computeOrdering + <...>-18964 (-----) [005] ...1 683202.172196: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.172318: tracing_mark_write: B|18926|shadow tessellation + <...>-18988 (-----) [001] ...1 683202.172326: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18988 (-----) [001] ...1 683202.172335: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.172343: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18988 (-----) [001] ...1 683202.172354: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.172360: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18988 (-----) [001] ...1 683202.172380: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.172386: tracing_mark_write: E + <...>-18926 (-----) [000] ...1 683202.172480: tracing_mark_write: E + <...>-18926 (-----) [000] ...1 683202.172495: tracing_mark_write: E + <...>-18926 (-----) [000] ...1 683202.172539: tracing_mark_write: C|18926|jitterNanos|10113151 + <...>-18926 (-----) [000] ...1 683202.172566: tracing_mark_write: B|18926|commit + <...>-18988 (-----) [001] ...1 683202.172593: tracing_mark_write: B|18926|shadow tessellation + <...>-18988 (-----) [001] ...1 683202.172600: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18926 (-----) [000] ...1 683202.172603: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.172607: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.172615: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18964 (-----) [005] ...1 683202.172618: tracing_mark_write: B|18926|flush drawing commands + <...>-18988 (-----) [001] ...1 683202.172619: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.172626: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18926 (-----) [000] ...1 683202.172642: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.172646: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.172652: tracing_mark_write: E + <...>-18989 (-----) [001] ...1 683202.172681: tracing_mark_write: B|18926|shadow tessellation + <...>-18989 (-----) [001] ...1 683202.172687: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18989 (-----) [001] ...1 683202.172695: tracing_mark_write: E + <...>-18989 (-----) [001] ...1 683202.172702: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18989 (-----) [001] ...1 683202.172710: tracing_mark_write: E + <...>-18989 (-----) [001] ...1 683202.172716: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18989 (-----) [001] ...1 683202.172741: tracing_mark_write: E + <...>-18989 (-----) [001] ...1 683202.172746: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.173451: tracing_mark_write: B|18926|tessellatePath + <...>-18964 (-----) [005] ...1 683202.173460: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18964 (-----) [005] ...1 683202.173489: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.173506: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.174384: tracing_mark_write: E + <...>-18926 (-----) [005] ...1 683202.179559: tracing_mark_write: B|18926|Choreographer#doFrame + <...>-18926 (-----) [005] ...1 683202.179602: tracing_mark_write: B|18926|input + <...>-18926 (-----) [005] ...1 683202.179643: tracing_mark_write: E + <...>-18926 (-----) [005] ...1 683202.179663: tracing_mark_write: B|18926|animation + <...>-18926 (-----) [005] ...1 683202.180146: tracing_mark_write: E + <...>-18926 (-----) [005] ...1 683202.180178: tracing_mark_write: B|18926|traversal + <...>-18926 (-----) [005] ...1 683202.180238: tracing_mark_write: B|18926|draw + <...>-18926 (-----) [005] ...1 683202.180274: tracing_mark_write: B|18926|Record View#draw() + <...>-18926 (-----) [005] ...1 683202.181062: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.181975: tracing_mark_write: C|18926|hwui_Texture|1906008 + <...>-18964 (-----) [005] ...1 683202.181986: tracing_mark_write: C|18926|hwui_Texture_count|160 + <...>-18964 (-----) [005] ...1 683202.181993: tracing_mark_write: C|18926|hwui_OffscreenBuffer|0 + <...>-18964 (-----) [005] ...1 683202.182000: tracing_mark_write: C|18926|hwui_OffscreenBuffer_count|0 + <...>-18964 (-----) [005] ...1 683202.182006: tracing_mark_write: C|18926|hwui_Layer|0 + <...>-18964 (-----) [005] ...1 683202.182012: tracing_mark_write: C|18926|hwui_Layer_count|0 + <...>-18964 (-----) [005] ...1 683202.182117: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.182133: tracing_mark_write: B|18926|notifyFramePending + <...>-18964 (-----) [005] ...1 683202.182138: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.182146: tracing_mark_write: B|18926|DrawFrame + <...>-18964 (-----) [005] ...1 683202.182152: tracing_mark_write: B|18926|syncFrameState + <...>-18964 (-----) [005] ...1 683202.182184: tracing_mark_write: B|18926|prepareTree + <...>-18964 (-----) [005] ...1 683202.182379: tracing_mark_write: B|18926|Allocate 896x128 HW Layer + <...>-18964 (-----) [005] ...1 683202.182455: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.182548: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.182554: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.182809: tracing_mark_write: B|18926|Optimize HW Layer DisplayList Button 849x126 + <...>-18964 (-----) [005] ...1 683202.182898: tracing_mark_write: B|18926|computeOrdering + <...>-18964 (-----) [005] ...1 683202.182956: tracing_mark_write: E + <...>-18926 (-----) [001] ...1 683202.183195: tracing_mark_write: E + <...>-18926 (-----) [001] ...1 683202.183223: tracing_mark_write: E + <...>-18926 (-----) [001] ...1 683202.183332: tracing_mark_write: C|18926|jitterNanos|4175322 + <...>-18926 (-----) [001] ...1 683202.183361: tracing_mark_write: B|18926|commit + <...>-18926 (-----) [001] ...1 683202.183393: tracing_mark_write: E + <...>-18926 (-----) [001] ...1 683202.183428: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.184160: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.184173: tracing_mark_write: B|18926|computeOrdering + <...>-18964 (-----) [005] ...1 683202.184248: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.184400: tracing_mark_write: B|18926|shadow tessellation + <...>-18988 (-----) [003] ...1 683202.184411: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18988 (-----) [003] ...1 683202.184451: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.184463: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18988 (-----) [003] ...1 683202.184478: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.184485: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18964 (-----) [005] ...1 683202.184607: tracing_mark_write: B|18926|Button alpha caused saveLayer 849x126 + <...>-18964 (-----) [005] ...1 683202.184612: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.184829: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.184871: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.184884: tracing_mark_write: B|18926|shadow tessellation + <...>-18988 (-----) [003] ...1 683202.184891: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18988 (-----) [003] ...1 683202.184898: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.184907: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18988 (-----) [003] ...1 683202.184910: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.184916: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18989 (-----) [000] ...1 683202.184921: tracing_mark_write: B|18926|shadow tessellation + <...>-18989 (-----) [000] ...1 683202.184930: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18989 (-----) [000] ...1 683202.184941: tracing_mark_write: E + <...>-18989 (-----) [000] ...1 683202.184949: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18989 (-----) [000] ...1 683202.184961: tracing_mark_write: E + <...>-18989 (-----) [000] ...1 683202.184968: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18989 (-----) [000] ...1 683202.184989: tracing_mark_write: E + <...>-18989 (-----) [000] ...1 683202.185017: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.185064: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.185072: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.187274: tracing_mark_write: B|18926|Issue HW Layer DisplayList Button 849x126 + <...>-18964 (-----) [005] ...1 683202.187506: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.187645: tracing_mark_write: B|18926|flush drawing commands + <...>-18964 (-----) [005] ...1 683202.188279: tracing_mark_write: B|18926|tessellatePath + <...>-18964 (-----) [005] ...1 683202.188289: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18964 (-----) [005] ...1 683202.188318: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.188332: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.188578: tracing_mark_write: B|18926|Build GL Shader + <...>-18964 (-----) [005] ...1 683202.188959: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.188972: tracing_mark_write: B|18926|Build GL Shader + <...>-18964 (-----) [005] ...1 683202.192088: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.192173: tracing_mark_write: B|18926|linkProgram + <...>-18926 (-----) [004] ...1 683202.196237: tracing_mark_write: B|18926|Choreographer#doFrame + <...>-18926 (-----) [004] ...1 683202.196276: tracing_mark_write: B|18926|input + <...>-18926 (-----) [004] ...1 683202.196304: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.196320: tracing_mark_write: B|18926|animation + <...>-18926 (-----) [004] ...1 683202.196702: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.196732: tracing_mark_write: B|18926|traversal + <...>-18926 (-----) [004] ...1 683202.196791: tracing_mark_write: B|18926|draw + <...>-18926 (-----) [004] ...1 683202.196824: tracing_mark_write: B|18926|Record View#draw() + <...>-18926 (-----) [004] ...1 683202.197263: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.206362: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.207218: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.208128: tracing_mark_write: C|18926|hwui_Texture|2364760 + <...>-18964 (-----) [005] ...1 683202.208138: tracing_mark_write: C|18926|hwui_Texture_count|161 + <...>-18964 (-----) [005] ...1 683202.208144: tracing_mark_write: C|18926|hwui_OffscreenBuffer|0 + <...>-18964 (-----) [005] ...1 683202.208150: tracing_mark_write: C|18926|hwui_OffscreenBuffer_count|1 + <...>-18964 (-----) [005] ...1 683202.208156: tracing_mark_write: C|18926|hwui_Layer|0 + <...>-18964 (-----) [005] ...1 683202.208162: tracing_mark_write: C|18926|hwui_Layer_count|0 + <...>-18964 (-----) [005] ...1 683202.208236: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.208244: tracing_mark_write: B|18926|notifyFramePending + <...>-18964 (-----) [005] ...1 683202.208248: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.208254: tracing_mark_write: B|18926|DrawFrame + <...>-18964 (-----) [005] ...1 683202.208260: tracing_mark_write: B|18926|syncFrameState + <...>-18964 (-----) [005] ...1 683202.208281: tracing_mark_write: B|18926|prepareTree + <...>-18964 (-----) [005] ...1 683202.208469: tracing_mark_write: B|18926|Allocate 1088x192 HW Layer + <...>-18964 (-----) [005] ...1 683202.208515: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.208545: tracing_mark_write: B|18926|Allocate 1088x192 HW Layer + <...>-18964 (-----) [005] ...1 683202.208559: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.208574: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.208580: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.208631: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.208632: tracing_mark_write: B|18926|Optimize HW Layer DisplayList LinearLayout 1080x189 + <...>-18964 (-----) [005] ...1 683202.208637: tracing_mark_write: B|18926|computeOrdering + <...>-18926 (-----) [004] ...1 683202.208642: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.208644: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.208672: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.208694: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.208705: tracing_mark_write: B|18926|Optimize HW Layer DisplayList LinearLayout 1080x189 + <...>-18964 (-----) [005] ...1 683202.208710: tracing_mark_write: B|18926|computeOrdering + <...>-18964 (-----) [005] ...1 683202.208716: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.208741: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.208749: tracing_mark_write: B|18926|computeOrdering + <...>-18964 (-----) [005] ...1 683202.208798: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.208892: tracing_mark_write: F|18926|animator:opacity|23751452 + <...>-18988 (-----) [003] ...1 683202.208930: tracing_mark_write: B|18926|shadow tessellation + <...>-18988 (-----) [003] ...1 683202.208942: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18988 (-----) [003] ...1 683202.208956: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.208967: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18964 (-----) [005] ...1 683202.208971: tracing_mark_write: B|18926|Button alpha caused saveLayer 849x126 + <...>-18964 (-----) [005] ...1 683202.208975: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.208989: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.208995: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18988 (-----) [003] ...1 683202.209027: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.209034: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.209124: tracing_mark_write: B|18926|LinearLayout alpha caused saveLayer 1080x189 + <...>-18964 (-----) [005] ...1 683202.209127: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.209137: tracing_mark_write: B|18926|LinearLayout alpha caused saveLayer 1080x189 + <...>-18964 (-----) [005] ...1 683202.209140: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.209199: tracing_mark_write: B|18926|shadow tessellation + <...>-18988 (-----) [003] ...1 683202.209205: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18988 (-----) [003] ...1 683202.209212: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.209220: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18988 (-----) [003] ...1 683202.209223: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.209228: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18988 (-----) [003] ...1 683202.209251: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.209257: tracing_mark_write: E + <...>-18989 (-----) [003] ...1 683202.209347: tracing_mark_write: B|18926|shadow tessellation + <...>-18989 (-----) [003] ...1 683202.209357: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18989 (-----) [003] ...1 683202.209367: tracing_mark_write: E + <...>-18989 (-----) [003] ...1 683202.209421: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18989 (-----) [003] ...1 683202.209476: tracing_mark_write: E + <...>-18989 (-----) [003] ...1 683202.209484: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18989 (-----) [003] ...1 683202.209506: tracing_mark_write: E + <...>-18989 (-----) [003] ...1 683202.209511: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.210303: tracing_mark_write: B|18926|Issue HW Layer DisplayList LinearLayout 1080x189 + <...>-18964 (-----) [005] ...1 683202.210644: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.211769: tracing_mark_write: B|18926|Issue HW Layer DisplayList LinearLayout 1080x189 + <...>-18964 (-----) [005] ...1 683202.212040: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.212151: tracing_mark_write: B|18926|flush drawing commands + <...>-18964 (-----) [005] ...1 683202.212697: tracing_mark_write: B|18926|tessellatePath + <...>-18964 (-----) [005] ...1 683202.212705: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18964 (-----) [005] ...1 683202.212733: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.212747: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.212810: tracing_mark_write: B|18926|Choreographer#doFrame + <...>-18926 (-----) [004] ...1 683202.212843: tracing_mark_write: B|18926|input + <...>-18926 (-----) [004] ...1 683202.212878: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.212895: tracing_mark_write: B|18926|animation + <...>-18926 (-----) [004] ...1 683202.213187: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.213221: tracing_mark_write: B|18926|traversal + <...>-18926 (-----) [004] ...1 683202.213321: tracing_mark_write: B|18926|draw + <...>-18926 (-----) [004] ...1 683202.213360: tracing_mark_write: B|18926|Record View#draw() + <...>-18964 (-----) [005] ...1 683202.214038: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.214843: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.215111: tracing_mark_write: C|18926|hwui_Texture|4035928 + <...>-18964 (-----) [005] ...1 683202.215118: tracing_mark_write: C|18926|hwui_Texture_count|163 + <...>-18964 (-----) [005] ...1 683202.215122: tracing_mark_write: C|18926|hwui_OffscreenBuffer|0 + <...>-18964 (-----) [005] ...1 683202.215127: tracing_mark_write: C|18926|hwui_OffscreenBuffer_count|3 + <...>-18964 (-----) [005] ...1 683202.215131: tracing_mark_write: C|18926|hwui_Layer|0 + <...>-18964 (-----) [005] ...1 683202.215135: tracing_mark_write: C|18926|hwui_Layer_count|0 + <...>-18964 (-----) [005] ...1 683202.215203: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.215210: tracing_mark_write: B|18926|notifyFramePending + <...>-18964 (-----) [005] ...1 683202.215212: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.215219: tracing_mark_write: B|18926|DrawFrame + <...>-18964 (-----) [005] ...1 683202.215223: tracing_mark_write: B|18926|syncFrameState + <...>-18964 (-----) [005] ...1 683202.215242: tracing_mark_write: B|18926|prepareTree + <...>-18964 (-----) [005] ...1 683202.215444: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.215452: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.215496: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.215504: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.215506: tracing_mark_write: B|18926|computeOrdering + <...>-18926 (-----) [004] ...1 683202.215527: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.215546: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.215665: tracing_mark_write: B|18926|shadow tessellation + <...>-18988 (-----) [003] ...1 683202.215676: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18988 (-----) [003] ...1 683202.215691: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.215699: tracing_mark_write: B|18926|Button alpha caused saveLayer 849x126 + <...>-18988 (-----) [003] ...1 683202.215702: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18964 (-----) [005] ...1 683202.215703: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.215718: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.215725: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18988 (-----) [003] ...1 683202.215758: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.215765: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.215840: tracing_mark_write: B|18926|LinearLayout alpha caused saveLayer 1080x189 + <...>-18964 (-----) [005] ...1 683202.215843: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.215852: tracing_mark_write: B|18926|LinearLayout alpha caused saveLayer 1080x189 + <...>-18964 (-----) [005] ...1 683202.215854: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.215907: tracing_mark_write: B|18926|shadow tessellation + <...>-18988 (-----) [003] ...1 683202.215914: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18964 (-----) [005] ...1 683202.215916: tracing_mark_write: B|18926|flush drawing commands + <...>-18988 (-----) [003] ...1 683202.215922: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.215930: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18988 (-----) [003] ...1 683202.215933: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.215939: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18988 (-----) [003] ...1 683202.215959: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.215964: tracing_mark_write: E + <...>-18989 (-----) [003] ...1 683202.215995: tracing_mark_write: B|18926|shadow tessellation + <...>-18989 (-----) [003] ...1 683202.216002: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18989 (-----) [003] ...1 683202.216010: tracing_mark_write: E + <...>-18989 (-----) [003] ...1 683202.216016: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18989 (-----) [003] ...1 683202.216028: tracing_mark_write: E + <...>-18989 (-----) [003] ...1 683202.216034: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18989 (-----) [003] ...1 683202.216054: tracing_mark_write: E + <...>-18989 (-----) [003] ...1 683202.216059: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.216381: tracing_mark_write: B|18926|tessellatePath + <...>-18964 (-----) [005] ...1 683202.216388: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18964 (-----) [005] ...1 683202.216407: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.216416: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.217126: tracing_mark_write: E + <...>-18964 (-----) [001] ...1 683202.222253: tracing_mark_write: C|18926|hwui_Texture|4035928 + <...>-18964 (-----) [001] ...1 683202.222264: tracing_mark_write: C|18926|hwui_Texture_count|163 + <...>-18964 (-----) [001] ...1 683202.222271: tracing_mark_write: C|18926|hwui_OffscreenBuffer|0 + <...>-18964 (-----) [001] ...1 683202.222279: tracing_mark_write: C|18926|hwui_OffscreenBuffer_count|3 + <...>-18964 (-----) [001] ...1 683202.222287: tracing_mark_write: C|18926|hwui_Layer|0 + <...>-18964 (-----) [001] ...1 683202.222295: tracing_mark_write: C|18926|hwui_Layer_count|0 + <...>-18964 (-----) [001] ...1 683202.222397: tracing_mark_write: E + <...>-18964 (-----) [001] ...1 683202.222406: tracing_mark_write: B|18926|drainDisplayEventQueue + <...>-18964 (-----) [001] ...1 683202.222421: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.229007: tracing_mark_write: B|18926|drainDisplayEventQueue + <...>-18964 (-----) [004] ...1 683202.229029: tracing_mark_write: B|18926|queue mFrameCallbackTask + <...>-18964 (-----) [004] ...1 683202.229037: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.229039: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.230451: tracing_mark_write: B|18926|Choreographer#doFrame + <...>-18926 (-----) [004] ...1 683202.230484: tracing_mark_write: B|18926|input + <...>-18926 (-----) [004] ...1 683202.230507: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.230518: tracing_mark_write: B|18926|animation + <...>-18926 (-----) [004] ...1 683202.230755: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.230773: tracing_mark_write: B|18926|traversal + <...>-18926 (-----) [004] ...1 683202.230818: tracing_mark_write: B|18926|draw + <...>-18926 (-----) [004] ...1 683202.230848: tracing_mark_write: B|18926|Record View#draw() + <...>-18926 (-----) [004] ...1 683202.231162: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.231162: tracing_mark_write: B|18926|notifyFramePending + <...>-18964 (-----) [005] ...1 683202.231169: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.231178: tracing_mark_write: B|18926|DrawFrame + <...>-18964 (-----) [005] ...1 683202.231182: tracing_mark_write: B|18926|syncFrameState + <...>-18964 (-----) [005] ...1 683202.231203: tracing_mark_write: B|18926|prepareTree + <...>-18964 (-----) [005] ...1 683202.231342: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.231347: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.231381: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.231388: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.231392: tracing_mark_write: B|18926|computeOrdering + <...>-18926 (-----) [004] ...1 683202.231408: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.231424: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.231572: tracing_mark_write: B|18926|Button alpha caused saveLayer 849x126 + <...>-18964 (-----) [005] ...1 683202.231576: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.231706: tracing_mark_write: B|18926|shadow tessellation + <...>-18964 (-----) [005] ...1 683202.231715: tracing_mark_write: B|18926|LinearLayout alpha caused saveLayer 1080x189 + <...>-18964 (-----) [005] ...1 683202.231718: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.231719: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18964 (-----) [005] ...1 683202.231728: tracing_mark_write: B|18926|LinearLayout alpha caused saveLayer 1080x189 + <...>-18964 (-----) [005] ...1 683202.231730: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.231735: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.231746: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18988 (-----) [003] ...1 683202.231771: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.231774: tracing_mark_write: B|18926|flush drawing commands + <...>-18988 (-----) [003] ...1 683202.231779: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18988 (-----) [003] ...1 683202.231811: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.231818: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.231832: tracing_mark_write: B|18926|shadow tessellation + <...>-18988 (-----) [003] ...1 683202.231837: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18988 (-----) [003] ...1 683202.231844: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.231851: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18988 (-----) [003] ...1 683202.231854: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.231859: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18988 (-----) [003] ...1 683202.231883: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.231889: tracing_mark_write: E + <...>-18989 (-----) [000] ...1 683202.232044: tracing_mark_write: B|18926|shadow tessellation + <...>-18989 (-----) [000] ...1 683202.232053: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18989 (-----) [000] ...1 683202.232063: tracing_mark_write: E + <...>-18989 (-----) [000] ...1 683202.232071: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18989 (-----) [000] ...1 683202.232080: tracing_mark_write: E + <...>-18989 (-----) [000] ...1 683202.232085: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18989 (-----) [000] ...1 683202.232107: tracing_mark_write: E + <...>-18989 (-----) [000] ...1 683202.232113: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.232269: tracing_mark_write: B|18926|tessellatePath + <...>-18964 (-----) [005] ...1 683202.232275: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18964 (-----) [005] ...1 683202.232293: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.232303: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.232352: tracing_mark_write: B|18926|tessellatePath + <...>-18964 (-----) [005] ...1 683202.232356: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18964 (-----) [005] ...1 683202.232363: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.232367: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.232939: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.233604: tracing_mark_write: C|18926|hwui_Texture|4035928 + <...>-18964 (-----) [005] ...1 683202.233612: tracing_mark_write: C|18926|hwui_Texture_count|163 + <...>-18964 (-----) [005] ...1 683202.233616: tracing_mark_write: C|18926|hwui_OffscreenBuffer|0 + <...>-18964 (-----) [005] ...1 683202.233621: tracing_mark_write: C|18926|hwui_OffscreenBuffer_count|3 + <...>-18964 (-----) [005] ...1 683202.233626: tracing_mark_write: C|18926|hwui_Layer|0 + <...>-18964 (-----) [005] ...1 683202.233630: tracing_mark_write: C|18926|hwui_Layer_count|0 + <...>-18964 (-----) [005] ...1 683202.233688: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.233694: tracing_mark_write: B|18926|dispatchFrameCallbacks + <...>-18964 (-----) [005] ...1 683202.233696: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.233700: tracing_mark_write: B|18926|drainDisplayEventQueue + <...>-18964 (-----) [005] ...1 683202.233710: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.245778: tracing_mark_write: B|18926|drainDisplayEventQueue + <...>-18964 (-----) [005] ...1 683202.245799: tracing_mark_write: B|18926|queue mFrameCallbackTask + <...>-18964 (-----) [005] ...1 683202.245805: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.245807: tracing_mark_write: E + <...>-18926 (-----) [005] ...1 683202.246567: tracing_mark_write: B|18926|Choreographer#doFrame + <...>-18926 (-----) [005] ...1 683202.246598: tracing_mark_write: B|18926|input + <...>-18926 (-----) [005] ...1 683202.246649: tracing_mark_write: E + <...>-18926 (-----) [005] ...1 683202.246661: tracing_mark_write: B|18926|animation + <...>-18926 (-----) [005] ...1 683202.246881: tracing_mark_write: E + <...>-18926 (-----) [005] ...1 683202.246894: tracing_mark_write: B|18926|traversal + <...>-18926 (-----) [005] ...1 683202.246927: tracing_mark_write: B|18926|draw + <...>-18926 (-----) [005] ...1 683202.246948: tracing_mark_write: B|18926|Record View#draw() + <...>-18964 (-----) [004] ...1 683202.247070: tracing_mark_write: B|18926|notifyFramePending + <...>-18964 (-----) [004] ...1 683202.247077: tracing_mark_write: E + <...>-18926 (-----) [005] ...1 683202.247196: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.247236: tracing_mark_write: B|18926|DrawFrame + <...>-18964 (-----) [004] ...1 683202.247240: tracing_mark_write: B|18926|syncFrameState + <...>-18964 (-----) [004] ...1 683202.247263: tracing_mark_write: B|18926|prepareTree + <...>-18964 (-----) [004] ...1 683202.247407: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.247412: tracing_mark_write: E + <...>-18926 (-----) [005] ...1 683202.247443: tracing_mark_write: E + <...>-18926 (-----) [005] ...1 683202.247450: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.247457: tracing_mark_write: B|18926|computeOrdering + <...>-18926 (-----) [005] ...1 683202.247465: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.247487: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.247631: tracing_mark_write: B|18926|Button alpha caused saveLayer 849x126 + <...>-18964 (-----) [004] ...1 683202.247634: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.247744: tracing_mark_write: B|18926|shadow tessellation + <...>-18964 (-----) [004] ...1 683202.247756: tracing_mark_write: B|18926|LinearLayout alpha caused saveLayer 1080x189 + <...>-18988 (-----) [003] ...1 683202.247756: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18964 (-----) [004] ...1 683202.247759: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.247768: tracing_mark_write: B|18926|LinearLayout alpha caused saveLayer 1080x189 + <...>-18964 (-----) [004] ...1 683202.247772: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.247772: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.247783: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18988 (-----) [003] ...1 683202.247805: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.247812: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18964 (-----) [004] ...1 683202.247819: tracing_mark_write: B|18926|flush drawing commands + <...>-18988 (-----) [003] ...1 683202.247847: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.247854: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.247864: tracing_mark_write: B|18926|shadow tessellation + <...>-18988 (-----) [003] ...1 683202.247870: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18988 (-----) [003] ...1 683202.247876: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.247883: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18988 (-----) [003] ...1 683202.247886: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.247891: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18988 (-----) [003] ...1 683202.247912: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.247917: tracing_mark_write: E + <...>-18989 (-----) [003] ...1 683202.247948: tracing_mark_write: B|18926|shadow tessellation + <...>-18989 (-----) [003] ...1 683202.247955: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18989 (-----) [003] ...1 683202.247963: tracing_mark_write: E + <...>-18989 (-----) [003] ...1 683202.247970: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18989 (-----) [003] ...1 683202.247981: tracing_mark_write: E + <...>-18989 (-----) [003] ...1 683202.247986: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18989 (-----) [003] ...1 683202.248006: tracing_mark_write: E + <...>-18989 (-----) [003] ...1 683202.248011: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.248259: tracing_mark_write: B|18926|tessellatePath + <...>-18964 (-----) [004] ...1 683202.248265: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18964 (-----) [004] ...1 683202.248282: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.248292: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.248345: tracing_mark_write: B|18926|tessellatePath + <...>-18964 (-----) [004] ...1 683202.248349: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18964 (-----) [004] ...1 683202.248358: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.248365: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.248952: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.249556: tracing_mark_write: C|18926|hwui_Texture|4035928 + <...>-18964 (-----) [004] ...1 683202.249562: tracing_mark_write: C|18926|hwui_Texture_count|163 + <...>-18964 (-----) [004] ...1 683202.249567: tracing_mark_write: C|18926|hwui_OffscreenBuffer|0 + <...>-18964 (-----) [004] ...1 683202.249572: tracing_mark_write: C|18926|hwui_OffscreenBuffer_count|3 + <...>-18964 (-----) [004] ...1 683202.249576: tracing_mark_write: C|18926|hwui_Layer|0 + <...>-18964 (-----) [004] ...1 683202.249580: tracing_mark_write: C|18926|hwui_Layer_count|0 + <...>-18964 (-----) [004] ...1 683202.249663: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.249669: tracing_mark_write: B|18926|dispatchFrameCallbacks + <...>-18964 (-----) [004] ...1 683202.249671: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.249676: tracing_mark_write: B|18926|drainDisplayEventQueue + <...>-18964 (-----) [004] ...1 683202.249684: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.262890: tracing_mark_write: B|18926|drainDisplayEventQueue + <...>-18964 (-----) [004] ...1 683202.262909: tracing_mark_write: B|18926|queue mFrameCallbackTask + <...>-18964 (-----) [004] ...1 683202.262917: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.262919: tracing_mark_write: E + <...>-18926 (-----) [005] ...1 683202.263007: tracing_mark_write: B|18926|Choreographer#doFrame + <...>-18926 (-----) [005] ...1 683202.263032: tracing_mark_write: B|18926|input + <...>-18926 (-----) [005] ...1 683202.263055: tracing_mark_write: E + <...>-18926 (-----) [005] ...1 683202.263064: tracing_mark_write: B|18926|animation + <...>-18926 (-----) [005] ...1 683202.263309: tracing_mark_write: E + <...>-18926 (-----) [005] ...1 683202.263323: tracing_mark_write: B|18926|traversal + <...>-18926 (-----) [005] ...1 683202.263356: tracing_mark_write: B|18926|draw + <...>-18926 (-----) [005] ...1 683202.263379: tracing_mark_write: B|18926|Record View#draw() + <...>-18964 (-----) [004] ...1 683202.263518: tracing_mark_write: B|18926|notifyFramePending + <...>-18964 (-----) [004] ...1 683202.263523: tracing_mark_write: E + <...>-18926 (-----) [005] ...1 683202.263649: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.263700: tracing_mark_write: B|18926|DrawFrame + <...>-18964 (-----) [004] ...1 683202.263704: tracing_mark_write: B|18926|syncFrameState + <...>-18964 (-----) [004] ...1 683202.263729: tracing_mark_write: B|18926|prepareTree + <...>-18964 (-----) [004] ...1 683202.263882: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.263888: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.263946: tracing_mark_write: B|18926|computeOrdering + <...>-18964 (-----) [004] ...1 683202.263978: tracing_mark_write: E + <...>-18926 (-----) [005] ...1 683202.264105: tracing_mark_write: E + <...>-18926 (-----) [005] ...1 683202.264116: tracing_mark_write: E + <...>-18926 (-----) [005] ...1 683202.264139: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.264149: tracing_mark_write: B|18926|Button alpha caused saveLayer 849x126 + <...>-18964 (-----) [004] ...1 683202.264153: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.264271: tracing_mark_write: B|18926|shadow tessellation + <...>-18988 (-----) [003] ...1 683202.264282: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18964 (-----) [004] ...1 683202.264291: tracing_mark_write: B|18926|LinearLayout alpha caused saveLayer 1080x189 + <...>-18964 (-----) [004] ...1 683202.264294: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.264297: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.264304: tracing_mark_write: B|18926|LinearLayout alpha caused saveLayer 1080x189 + <...>-18964 (-----) [004] ...1 683202.264307: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.264309: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18988 (-----) [003] ...1 683202.264323: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.264329: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18964 (-----) [004] ...1 683202.264355: tracing_mark_write: B|18926|flush drawing commands + <...>-18988 (-----) [003] ...1 683202.264370: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.264377: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.264389: tracing_mark_write: B|18926|shadow tessellation + <...>-18988 (-----) [003] ...1 683202.264395: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18988 (-----) [003] ...1 683202.264401: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.264408: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18988 (-----) [003] ...1 683202.264411: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.264416: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18988 (-----) [003] ...1 683202.264439: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.264444: tracing_mark_write: E + <...>-18989 (-----) [003] ...1 683202.264476: tracing_mark_write: B|18926|shadow tessellation + <...>-18989 (-----) [003] ...1 683202.264483: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18989 (-----) [003] ...1 683202.264491: tracing_mark_write: E + <...>-18989 (-----) [003] ...1 683202.264498: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18989 (-----) [003] ...1 683202.264507: tracing_mark_write: E + <...>-18989 (-----) [003] ...1 683202.264513: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18989 (-----) [003] ...1 683202.264532: tracing_mark_write: E + <...>-18989 (-----) [003] ...1 683202.264538: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.264793: tracing_mark_write: B|18926|tessellatePath + <...>-18964 (-----) [004] ...1 683202.264799: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18964 (-----) [004] ...1 683202.264818: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.264828: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.264877: tracing_mark_write: B|18926|tessellatePath + <...>-18964 (-----) [004] ...1 683202.264881: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18964 (-----) [004] ...1 683202.264890: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.264896: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.265471: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.266007: tracing_mark_write: C|18926|hwui_Texture|4035928 + <...>-18964 (-----) [004] ...1 683202.266013: tracing_mark_write: C|18926|hwui_Texture_count|163 + <...>-18964 (-----) [004] ...1 683202.266018: tracing_mark_write: C|18926|hwui_OffscreenBuffer|0 + <...>-18964 (-----) [004] ...1 683202.266023: tracing_mark_write: C|18926|hwui_OffscreenBuffer_count|3 + <...>-18964 (-----) [004] ...1 683202.266027: tracing_mark_write: C|18926|hwui_Layer|0 + <...>-18964 (-----) [004] ...1 683202.266031: tracing_mark_write: C|18926|hwui_Layer_count|0 + <...>-18964 (-----) [004] ...1 683202.266086: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.266092: tracing_mark_write: B|18926|dispatchFrameCallbacks + <...>-18964 (-----) [004] ...1 683202.266095: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.266099: tracing_mark_write: B|18926|drainDisplayEventQueue + <...>-18964 (-----) [004] ...1 683202.266107: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.279197: tracing_mark_write: B|18926|drainDisplayEventQueue + <...>-18964 (-----) [005] ...1 683202.279278: tracing_mark_write: B|18926|queue mFrameCallbackTask + <...>-18964 (-----) [005] ...1 683202.279290: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.279292: tracing_mark_write: E + <...>-18926 (-----) [005] ...1 683202.280270: tracing_mark_write: B|18926|Choreographer#doFrame + <...>-18926 (-----) [005] ...1 683202.280317: tracing_mark_write: B|18926|input + <...>-18926 (-----) [005] ...1 683202.280361: tracing_mark_write: E + <...>-18926 (-----) [005] ...1 683202.280373: tracing_mark_write: B|18926|animation + <...>-18926 (-----) [005] ...1 683202.280645: tracing_mark_write: E + <...>-18926 (-----) [005] ...1 683202.280659: tracing_mark_write: B|18926|traversal + <...>-18926 (-----) [005] ...1 683202.280703: tracing_mark_write: B|18926|draw + <...>-18926 (-----) [005] ...1 683202.280735: tracing_mark_write: B|18926|Record View#draw() + <...>-18964 (-----) [004] ...1 683202.281109: tracing_mark_write: B|18926|notifyFramePending + <...>-18926 (-----) [005] ...1 683202.281109: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.281118: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.281131: tracing_mark_write: B|18926|DrawFrame + <...>-18964 (-----) [004] ...1 683202.281135: tracing_mark_write: B|18926|syncFrameState + <...>-18964 (-----) [004] ...1 683202.281160: tracing_mark_write: B|18926|prepareTree + <...>-18964 (-----) [004] ...1 683202.281328: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.281334: tracing_mark_write: E + <...>-18926 (-----) [005] ...1 683202.281376: tracing_mark_write: E + <...>-18926 (-----) [005] ...1 683202.281383: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.281387: tracing_mark_write: B|18926|computeOrdering + <...>-18926 (-----) [005] ...1 683202.281405: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.281422: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.281607: tracing_mark_write: B|18926|Button alpha caused saveLayer 849x126 + <...>-18964 (-----) [004] ...1 683202.281612: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.281740: tracing_mark_write: B|18926|shadow tessellation + <...>-18964 (-----) [004] ...1 683202.281751: tracing_mark_write: B|18926|LinearLayout alpha caused saveLayer 1080x189 + <...>-18988 (-----) [003] ...1 683202.281754: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18964 (-----) [004] ...1 683202.281755: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.281764: tracing_mark_write: B|18926|LinearLayout alpha caused saveLayer 1080x189 + <...>-18964 (-----) [004] ...1 683202.281766: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.281771: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.281783: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18988 (-----) [003] ...1 683202.281808: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.281815: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18964 (-----) [004] ...1 683202.281816: tracing_mark_write: B|18926|flush drawing commands + <...>-18988 (-----) [003] ...1 683202.281854: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.281861: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.281872: tracing_mark_write: B|18926|shadow tessellation + <...>-18988 (-----) [003] ...1 683202.281878: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18988 (-----) [003] ...1 683202.281885: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.281891: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18988 (-----) [003] ...1 683202.281895: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.281900: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18988 (-----) [003] ...1 683202.281919: tracing_mark_write: E + <...>-18988 (-----) [003] ...1 683202.281924: tracing_mark_write: E + <...>-18989 (-----) [003] ...1 683202.281958: tracing_mark_write: B|18926|shadow tessellation + <...>-18989 (-----) [003] ...1 683202.281965: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18989 (-----) [003] ...1 683202.281975: tracing_mark_write: E + <...>-18989 (-----) [003] ...1 683202.281982: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18989 (-----) [003] ...1 683202.281993: tracing_mark_write: E + <...>-18989 (-----) [003] ...1 683202.281999: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18989 (-----) [003] ...1 683202.282018: tracing_mark_write: E + <...>-18989 (-----) [003] ...1 683202.282024: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.282331: tracing_mark_write: B|18926|tessellatePath + <...>-18964 (-----) [004] ...1 683202.282338: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18964 (-----) [004] ...1 683202.282357: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.282367: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.282425: tracing_mark_write: B|18926|tessellatePath + <...>-18964 (-----) [004] ...1 683202.282429: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18964 (-----) [004] ...1 683202.282438: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.282444: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.283093: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.283996: tracing_mark_write: C|18926|hwui_Texture|4035928 + <...>-18964 (-----) [004] ...1 683202.284005: tracing_mark_write: C|18926|hwui_Texture_count|163 + <...>-18964 (-----) [004] ...1 683202.284011: tracing_mark_write: C|18926|hwui_OffscreenBuffer|0 + <...>-18964 (-----) [004] ...1 683202.284016: tracing_mark_write: C|18926|hwui_OffscreenBuffer_count|3 + <...>-18964 (-----) [004] ...1 683202.284020: tracing_mark_write: C|18926|hwui_Layer|0 + <...>-18964 (-----) [004] ...1 683202.284025: tracing_mark_write: C|18926|hwui_Layer_count|0 + <...>-18964 (-----) [004] ...1 683202.284112: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.284119: tracing_mark_write: B|18926|dispatchFrameCallbacks + <...>-18964 (-----) [004] ...1 683202.284121: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.284125: tracing_mark_write: B|18926|drainDisplayEventQueue + <...>-18964 (-----) [004] ...1 683202.284135: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.295969: tracing_mark_write: B|18926|drainDisplayEventQueue + <...>-18964 (-----) [004] ...1 683202.296010: tracing_mark_write: B|18926|queue mFrameCallbackTask + <...>-18964 (-----) [004] ...1 683202.296019: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.296021: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.297071: tracing_mark_write: B|18926|Choreographer#doFrame + <...>-18926 (-----) [004] ...1 683202.297129: tracing_mark_write: B|18926|input + <...>-18926 (-----) [004] ...1 683202.297210: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.297224: tracing_mark_write: B|18926|animation + <...>-18926 (-----) [004] ...1 683202.297739: tracing_mark_write: S|18926|animator|122130055 + <...>-18926 (-----) [004] ...1 683202.297847: tracing_mark_write: S|18926|animator|172949940 + <...>-18926 (-----) [004] ...1 683202.297932: tracing_mark_write: S|18926|animator|190890461 + <...>-18926 (-----) [004] ...1 683202.298010: tracing_mark_write: S|18926|animator|20058450 + <...>-18926 (-----) [004] ...1 683202.298087: tracing_mark_write: S|18926|animator|184847395 + <...>-18926 (-----) [004] ...1 683202.298200: tracing_mark_write: S|18926|animator|162825504 + <...>-18926 (-----) [004] ...1 683202.298288: tracing_mark_write: S|18926|animator|153919193 + <...>-18926 (-----) [004] ...1 683202.298327: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.298340: tracing_mark_write: B|18926|traversal + <...>-18926 (-----) [004] ...1 683202.298377: tracing_mark_write: B|18926|draw + <...>-18926 (-----) [004] ...1 683202.298402: tracing_mark_write: B|18926|Record View#draw() + <...>-18964 (-----) [005] ...1 683202.298521: tracing_mark_write: B|18926|dispatchFrameCallbacks + <...>-18964 (-----) [005] ...1 683202.298566: tracing_mark_write: B|18926|prepareAndDraw + <...>-18964 (-----) [005] ...1 683202.298580: tracing_mark_write: B|18926|prepareTree + <...>-18926 (-----) [004] ...1 683202.298754: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.298770: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.298832: tracing_mark_write: B|18926|computeOrdering + <...>-18964 (-----) [005] ...1 683202.298903: tracing_mark_write: E + <...>-18988 (-----) [000] ...1 683202.299039: tracing_mark_write: B|18926|shadow tessellation + <...>-18988 (-----) [000] ...1 683202.299052: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18988 (-----) [000] ...1 683202.299068: tracing_mark_write: E + <...>-18988 (-----) [000] ...1 683202.299079: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18964 (-----) [005] ...1 683202.299087: tracing_mark_write: B|18926|LinearLayout alpha caused saveLayer 1080x189 + <...>-18964 (-----) [005] ...1 683202.299090: tracing_mark_write: E + <...>-18988 (-----) [000] ...1 683202.299099: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.299100: tracing_mark_write: B|18926|LinearLayout alpha caused saveLayer 1080x189 + <...>-18964 (-----) [005] ...1 683202.299103: tracing_mark_write: E + <...>-18988 (-----) [000] ...1 683202.299108: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18964 (-----) [005] ...1 683202.299153: tracing_mark_write: B|18926|flush drawing commands + <...>-18988 (-----) [000] ...1 683202.299155: tracing_mark_write: E + <...>-18988 (-----) [000] ...1 683202.299162: tracing_mark_write: E + <...>-18988 (-----) [000] ...1 683202.299178: tracing_mark_write: B|18926|shadow tessellation + <...>-18988 (-----) [000] ...1 683202.299184: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18988 (-----) [000] ...1 683202.299191: tracing_mark_write: E + <...>-18988 (-----) [000] ...1 683202.299198: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18988 (-----) [000] ...1 683202.299201: tracing_mark_write: E + <...>-18988 (-----) [000] ...1 683202.299207: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18988 (-----) [000] ...1 683202.299227: tracing_mark_write: E + <...>-18988 (-----) [000] ...1 683202.299233: tracing_mark_write: E + <...>-18989 (-----) [000] ...1 683202.299267: tracing_mark_write: B|18926|shadow tessellation + <...>-18989 (-----) [000] ...1 683202.299274: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18989 (-----) [000] ...1 683202.299284: tracing_mark_write: E + <...>-18989 (-----) [000] ...1 683202.299291: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18989 (-----) [000] ...1 683202.299307: tracing_mark_write: E + <...>-18989 (-----) [000] ...1 683202.299313: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18989 (-----) [000] ...1 683202.299334: tracing_mark_write: E + <...>-18989 (-----) [000] ...1 683202.299339: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.299552: tracing_mark_write: B|18926|tessellatePath + <...>-18964 (-----) [005] ...1 683202.299559: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18964 (-----) [005] ...1 683202.299576: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.299587: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.299659: tracing_mark_write: B|18926|tessellatePath + <...>-18964 (-----) [005] ...1 683202.299663: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18964 (-----) [005] ...1 683202.299672: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.299678: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.299902: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.301062: tracing_mark_write: C|18926|hwui_Texture|4035928 + <...>-18964 (-----) [005] ...1 683202.301075: tracing_mark_write: C|18926|hwui_Texture_count|163 + <...>-18964 (-----) [005] ...1 683202.301084: tracing_mark_write: C|18926|hwui_OffscreenBuffer|0 + <...>-18964 (-----) [005] ...1 683202.301094: tracing_mark_write: C|18926|hwui_OffscreenBuffer_count|3 + <...>-18964 (-----) [005] ...1 683202.301103: tracing_mark_write: C|18926|hwui_Layer|0 + <...>-18964 (-----) [005] ...1 683202.301112: tracing_mark_write: C|18926|hwui_Layer_count|0 + <...>-18964 (-----) [005] ...1 683202.301214: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.301220: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.301231: tracing_mark_write: B|18926|notifyFramePending + <...>-18964 (-----) [005] ...1 683202.301236: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.301247: tracing_mark_write: B|18926|DrawFrame + <...>-18964 (-----) [005] ...1 683202.301254: tracing_mark_write: B|18926|syncFrameState + <...>-18964 (-----) [005] ...1 683202.301281: tracing_mark_write: B|18926|prepareTree + <...>-18964 (-----) [005] ...1 683202.301489: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.301497: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.301520: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.301537: tracing_mark_write: B|18926|drainDisplayEventQueue + <...>-18964 (-----) [005] ...1 683202.301557: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.301798: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.301813: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.301858: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.312850: tracing_mark_write: B|18926|drainDisplayEventQueue + <...>-18964 (-----) [005] ...1 683202.312883: tracing_mark_write: B|18926|queue mFrameCallbackTask + <...>-18964 (-----) [005] ...1 683202.312896: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.312900: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.313023: tracing_mark_write: B|18926|Choreographer#doFrame + <...>-18926 (-----) [004] ...1 683202.313069: tracing_mark_write: B|18926|input + <...>-18926 (-----) [004] ...1 683202.313105: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.313125: tracing_mark_write: B|18926|animation + <...>-18926 (-----) [004] ...1 683202.313914: tracing_mark_write: F|18926|animator|46267553 + <...>-18926 (-----) [004] ...1 683202.314201: tracing_mark_write: F|18926|animator|219664070 + <...>-18926 (-----) [004] ...1 683202.314488: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.314515: tracing_mark_write: B|18926|traversal + <...>-18926 (-----) [004] ...1 683202.314638: tracing_mark_write: B|18926|draw + <...>-18926 (-----) [004] ...1 683202.314704: tracing_mark_write: B|18926|Record View#draw() + <...>-18964 (-----) [005] ...1 683202.314999: tracing_mark_write: B|18926|notifyFramePending + <...>-18964 (-----) [005] ...1 683202.315016: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.315048: tracing_mark_write: B|18926|dispatchFrameCallbacks + <...>-18964 (-----) [005] ...1 683202.315053: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.315061: tracing_mark_write: B|18926|drainDisplayEventQueue + <...>-18964 (-----) [005] ...1 683202.315072: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.315243: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.315872: tracing_mark_write: B|18926|DrawFrame + <...>-18964 (-----) [005] ...1 683202.315882: tracing_mark_write: B|18926|syncFrameState + <...>-18964 (-----) [005] ...1 683202.315916: tracing_mark_write: B|18926|prepareTree + <...>-18964 (-----) [005] ...1 683202.316177: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.316188: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.316281: tracing_mark_write: B|18926|computeOrdering + <...>-18964 (-----) [005] ...1 683202.316338: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.316502: tracing_mark_write: B|18926|shadow tessellation + <...>-18988 (-----) [001] ...1 683202.316515: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18988 (-----) [001] ...1 683202.316532: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.316543: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18988 (-----) [001] ...1 683202.316560: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.316568: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18926 (-----) [004] ...1 683202.316571: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.316575: tracing_mark_write: B|18926|Button alpha caused saveLayer 849x126 + <...>-18964 (-----) [005] ...1 683202.316581: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.316585: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.316608: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.316673: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.316834: tracing_mark_write: C|18926|jitterNanos|5552900 + <...>-18926 (-----) [004] ...1 683202.316973: tracing_mark_write: B|18926|commit + <...>-18989 (-----) [001] ...1 683202.316982: tracing_mark_write: B|18926|shadow tessellation + <...>-18964 (-----) [005] ...1 683202.316984: tracing_mark_write: B|18926|flush drawing commands + <...>-18989 (-----) [001] ...1 683202.316992: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18989 (-----) [001] ...1 683202.317003: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.317010: tracing_mark_write: E + <...>-18989 (-----) [001] ...1 683202.317013: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18989 (-----) [001] ...1 683202.317026: tracing_mark_write: E + <...>-18989 (-----) [001] ...1 683202.317032: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18926 (-----) [004] ...1 683202.317040: tracing_mark_write: E + <...>-18989 (-----) [001] ...1 683202.317054: tracing_mark_write: E + <...>-18989 (-----) [001] ...1 683202.317060: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.317090: tracing_mark_write: B|18926|shadow tessellation + <...>-18988 (-----) [001] ...1 683202.317096: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18988 (-----) [001] ...1 683202.317103: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.317111: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18988 (-----) [001] ...1 683202.317115: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.317120: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18988 (-----) [001] ...1 683202.317141: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.317146: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.317779: tracing_mark_write: B|18926|tessellatePath + <...>-18964 (-----) [005] ...1 683202.317790: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18964 (-----) [005] ...1 683202.317823: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.317844: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.317935: tracing_mark_write: B|18926|tessellatePath + <...>-18964 (-----) [005] ...1 683202.317944: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18964 (-----) [005] ...1 683202.317964: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.317977: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.319029: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.319801: tracing_mark_write: C|18926|hwui_Texture|4035928 + <...>-18964 (-----) [005] ...1 683202.319813: tracing_mark_write: C|18926|hwui_Texture_count|163 + <...>-18964 (-----) [005] ...1 683202.319822: tracing_mark_write: C|18926|hwui_OffscreenBuffer|0 + <...>-18964 (-----) [005] ...1 683202.319832: tracing_mark_write: C|18926|hwui_OffscreenBuffer_count|3 + <...>-18964 (-----) [005] ...1 683202.319841: tracing_mark_write: C|18926|hwui_Layer|0 + <...>-18964 (-----) [005] ...1 683202.319850: tracing_mark_write: C|18926|hwui_Layer_count|0 + <...>-18964 (-----) [005] ...1 683202.319939: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.320015: tracing_mark_write: B|18926|drainDisplayEventQueue + <...>-18964 (-----) [005] ...1 683202.320033: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.329503: tracing_mark_write: B|18926|drainDisplayEventQueue + <...>-18964 (-----) [005] ...1 683202.329538: tracing_mark_write: B|18926|queue mFrameCallbackTask + <...>-18964 (-----) [005] ...1 683202.329557: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.329562: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.329759: tracing_mark_write: B|18926|Choreographer#doFrame + <...>-18926 (-----) [004] ...1 683202.329819: tracing_mark_write: B|18926|input + <...>-18926 (-----) [004] ...1 683202.329857: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.329877: tracing_mark_write: B|18926|animation + <...>-18926 (-----) [004] ...1 683202.330409: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.330434: tracing_mark_write: B|18926|traversal + <...>-18926 (-----) [004] ...1 683202.330505: tracing_mark_write: B|18926|draw + <...>-18926 (-----) [004] ...1 683202.330553: tracing_mark_write: B|18926|Record View#draw() + <...>-18926 (-----) [004] ...1 683202.331128: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.331212: tracing_mark_write: B|18926|notifyFramePending + <...>-18964 (-----) [004] ...1 683202.331227: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.331237: tracing_mark_write: B|18926|DrawFrame + <...>-18964 (-----) [004] ...1 683202.331245: tracing_mark_write: B|18926|syncFrameState + <...>-18964 (-----) [004] ...1 683202.331281: tracing_mark_write: B|18926|prepareTree + <...>-18964 (-----) [004] ...1 683202.331518: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.331539: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.331639: tracing_mark_write: B|18926|computeOrdering + <...>-18964 (-----) [004] ...1 683202.331700: tracing_mark_write: E + <...>-18926 (-----) [005] ...1 683202.331876: tracing_mark_write: E + <...>-18926 (-----) [005] ...1 683202.331892: tracing_mark_write: E + <...>-18926 (-----) [005] ...1 683202.331933: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.331988: tracing_mark_write: B|18926|Button alpha caused saveLayer 849x126 + <...>-18964 (-----) [004] ...1 683202.331994: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.332075: tracing_mark_write: B|18926|shadow tessellation + <...>-18988 (-----) [001] ...1 683202.332088: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18988 (-----) [001] ...1 683202.332107: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.332119: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18988 (-----) [001] ...1 683202.332136: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.332143: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18988 (-----) [001] ...1 683202.332189: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.332195: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.332319: tracing_mark_write: B|18926|flush drawing commands + <...>-18989 (-----) [001] ...1 683202.332349: tracing_mark_write: B|18926|shadow tessellation + <...>-18989 (-----) [001] ...1 683202.332357: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18989 (-----) [001] ...1 683202.332368: tracing_mark_write: E + <...>-18989 (-----) [001] ...1 683202.332376: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18989 (-----) [001] ...1 683202.332385: tracing_mark_write: E + <...>-18989 (-----) [001] ...1 683202.332391: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18989 (-----) [001] ...1 683202.332412: tracing_mark_write: E + <...>-18989 (-----) [001] ...1 683202.332417: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.332446: tracing_mark_write: B|18926|shadow tessellation + <...>-18988 (-----) [001] ...1 683202.332453: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18988 (-----) [001] ...1 683202.332459: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.332466: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18988 (-----) [001] ...1 683202.332469: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.332475: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18988 (-----) [001] ...1 683202.332499: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.332504: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.333108: tracing_mark_write: B|18926|tessellatePath + <...>-18964 (-----) [004] ...1 683202.333119: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18964 (-----) [004] ...1 683202.333156: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.333176: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.333267: tracing_mark_write: B|18926|tessellatePath + <...>-18964 (-----) [004] ...1 683202.333362: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18964 (-----) [004] ...1 683202.333387: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.333405: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.334671: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.335531: tracing_mark_write: C|18926|hwui_Texture|4035928 + <...>-18964 (-----) [004] ...1 683202.335544: tracing_mark_write: C|18926|hwui_Texture_count|163 + <...>-18964 (-----) [004] ...1 683202.335554: tracing_mark_write: C|18926|hwui_OffscreenBuffer|0 + <...>-18964 (-----) [004] ...1 683202.335563: tracing_mark_write: C|18926|hwui_OffscreenBuffer_count|3 + <...>-18964 (-----) [004] ...1 683202.335572: tracing_mark_write: C|18926|hwui_Layer|0 + <...>-18964 (-----) [004] ...1 683202.335582: tracing_mark_write: C|18926|hwui_Layer_count|0 + <...>-18964 (-----) [004] ...1 683202.335733: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.335745: tracing_mark_write: B|18926|dispatchFrameCallbacks + <...>-18964 (-----) [004] ...1 683202.335749: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.335757: tracing_mark_write: B|18926|drainDisplayEventQueue + <...>-18964 (-----) [004] ...1 683202.335773: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.344870: tracing_mark_write: B|18926|drainDisplayEventQueue + <...>-18964 (-----) [004] ...1 683202.344923: tracing_mark_write: B|18926|queue mFrameCallbackTask + <...>-18964 (-----) [004] ...1 683202.344939: tracing_mark_write: E + <...>-18964 (-----) [004] ...1 683202.344943: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.346588: tracing_mark_write: B|18926|Choreographer#doFrame + <...>-18926 (-----) [004] ...1 683202.346695: tracing_mark_write: B|18926|input + <...>-18926 (-----) [004] ...1 683202.346761: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.346782: tracing_mark_write: B|18926|animation + <...>-18926 (-----) [004] ...1 683202.347462: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.347492: tracing_mark_write: B|18926|traversal + <...>-18926 (-----) [004] ...1 683202.347562: tracing_mark_write: B|18926|draw + <...>-18926 (-----) [004] ...1 683202.347603: tracing_mark_write: B|18926|Record View#draw() + <...>-18964 (-----) [005] ...1 683202.348107: tracing_mark_write: B|18926|notifyFramePending + <...>-18964 (-----) [005] ...1 683202.348120: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.348131: tracing_mark_write: B|18926|dispatchFrameCallbacks + <...>-18964 (-----) [005] ...1 683202.348135: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.348143: tracing_mark_write: B|18926|drainDisplayEventQueue + <...>-18964 (-----) [005] ...1 683202.348155: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.348158: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.348226: tracing_mark_write: B|18926|DrawFrame + <...>-18964 (-----) [005] ...1 683202.348235: tracing_mark_write: B|18926|syncFrameState + <...>-18964 (-----) [005] ...1 683202.348270: tracing_mark_write: B|18926|prepareTree + <...>-18964 (-----) [005] ...1 683202.348510: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.348519: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.348615: tracing_mark_write: B|18926|computeOrdering + <...>-18964 (-----) [005] ...1 683202.348675: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.348863: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.348877: tracing_mark_write: E + <...>-18926 (-----) [004] ...1 683202.348910: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.348946: tracing_mark_write: B|18926|Button alpha caused saveLayer 849x126 + <...>-18964 (-----) [005] ...1 683202.348953: tracing_mark_write: E + <...>-18988 (-----) [000] ...1 683202.348986: tracing_mark_write: B|18926|shadow tessellation + <...>-18988 (-----) [000] ...1 683202.348999: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18988 (-----) [000] ...1 683202.349018: tracing_mark_write: E + <...>-18988 (-----) [000] ...1 683202.349030: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18988 (-----) [000] ...1 683202.349049: tracing_mark_write: E + <...>-18988 (-----) [000] ...1 683202.349056: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18988 (-----) [000] ...1 683202.349096: tracing_mark_write: E + <...>-18988 (-----) [000] ...1 683202.349103: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.349254: tracing_mark_write: B|18926|flush drawing commands + <...>-18989 (-----) [001] ...1 683202.349316: tracing_mark_write: B|18926|shadow tessellation + <...>-18989 (-----) [001] ...1 683202.349326: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18989 (-----) [001] ...1 683202.349338: tracing_mark_write: E + <...>-18989 (-----) [001] ...1 683202.349346: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18989 (-----) [001] ...1 683202.349359: tracing_mark_write: E + <...>-18989 (-----) [001] ...1 683202.349365: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18989 (-----) [001] ...1 683202.349386: tracing_mark_write: E + <...>-18989 (-----) [001] ...1 683202.349392: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.349424: tracing_mark_write: B|18926|shadow tessellation + <...>-18988 (-----) [001] ...1 683202.349430: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18988 (-----) [001] ...1 683202.349438: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.349445: tracing_mark_write: B|18926|tessellateAmbientShadow + <...>-18988 (-----) [001] ...1 683202.349448: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.349454: tracing_mark_write: B|18926|tessellateSpotShadow + <...>-18988 (-----) [001] ...1 683202.349473: tracing_mark_write: E + <...>-18988 (-----) [001] ...1 683202.349479: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.350099: tracing_mark_write: B|18926|tessellatePath + <...>-18964 (-----) [005] ...1 683202.350115: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18964 (-----) [005] ...1 683202.350172: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.350197: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.350339: tracing_mark_write: B|18926|tessellatePath + <...>-18964 (-----) [005] ...1 683202.350349: tracing_mark_write: B|18926|approximatePathOutlineVertices + <...>-18964 (-----) [005] ...1 683202.350368: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.350381: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.351526: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.352548: tracing_mark_write: C|18926|hwui_Texture|4035928 + <...>-18964 (-----) [005] ...1 683202.352562: tracing_mark_write: C|18926|hwui_Texture_count|163 + <...>-18964 (-----) [005] ...1 683202.352571: tracing_mark_write: C|18926|hwui_OffscreenBuffer|0 + <...>-18964 (-----) [005] ...1 683202.352580: tracing_mark_write: C|18926|hwui_OffscreenBuffer_count|3 + <...>-18964 (-----) [005] ...1 683202.352589: tracing_mark_write: C|18926|hwui_Layer|0 + <...>-18964 (-----) [005] ...1 683202.352599: tracing_mark_write: C|18926|hwui_Layer_count|0 + <...>-18964 (-----) [005] ...1 683202.352734: tracing_mark_write: E + <...>-18964 (-----) [005] ...1 683202.352745: tracing_mark_write: B|18926|drainDisplayEventQueue + <...>-18964 (-----) [005] ...1 683202.352760: tracing_mark_write: E diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/profile-chrome_systrace_perf_chrome_data b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/profile-chrome_systrace_perf_chrome_data new file mode 100644 index 0000000..3ef0b90 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/test_data/profile-chrome_systrace_perf_chrome_data @@ -0,0 +1 @@ +{"traceEvents": [{"tdur": 460, "name": "MessageLoop::RunTask", "tts": 6016200, "args": {"src_func": "PushOntoImmediateIncomingQueueLocked", "src_file": "../../components/scheduler/base/task_queue_impl.cc"}, "pid": 13931, "ts": 196489505302, "cat": "toplevel", "tid": 13956, "ph": "X", "dur": 463}, {"tdur": 412, "name": "TaskQueueManager::DoWork", "tts": 6016243, "args": {"from_main_thread": false}, "pid": 13931, "ts": 196489505345, "cat": "renderer.scheduler", "tid": 13956, "ph": "X", "dur": 415}, {"tdur": 113, "name": "TaskQueueManager::ProcessTaskFromWorkQueue", "tts": 6016280, "args": {"src_func": "SetEnabled", "src_file": "../../base/trace_event/trace_log.cc"}, "pid": 13931, "ts": 196489505382, "cat": "toplevel", "tid": 13956, "ph": "X", "dur": 117}, {"name": "FrameBlameContext", "tts": 6016311, "args": {}, "pid": 13931, "ts": 196489505414, "cat": "blink", "tid": 13956, "scope": "PlatformThread", "ph": "(", "id": "0x3684"}, {"tdur": 71, "name": "TaskQueueManager::RunTask", "tts": 6016318, "args": {"queue": "default_tq"}, "pid": 13931, "ts": 196489505421, "cat": "renderer.scheduler", "tid": 13956, "ph": "X", "dur": 74}, {"name": "TopLevel", "tts": 6016332, "args": {"snapshot": {}}, "pid": 13931, "ts": 196489505434, "cat": "blink", "tid": 13956, "scope": "PlatformThread", "ph": "O", "id": "0x3684"}, {"name": "FrameBlameContext", "tts": 6016382, "args": {}, "pid": 13931, "ts": 196489505483, "cat": "blink", "tid": 13956, "scope": "PlatformThread", "ph": ")", "id": "0x3684"}, {"tdur": 87, "name": "TaskQueueManager::ProcessTaskFromWorkQueue", "tts": 6016413, "args": {"src_func": "SetEnabled", "src_file": "../../base/trace_event/trace_log.cc"}, "pid": 13931, "ts": 196489505515, "cat": "toplevel", "tid": 13956, "ph": "X", "dur": 91}, {"name": "FrameBlameContext", "tts": 6016441, "args": {}, "pid": 13931, "ts": 196489505543, "cat": "blink", "tid": 13956, "scope": "PlatformThread", "ph": "(", "id": "0x3684"}, {"tdur": 48, "name": "TaskQueueManager::RunTask", "tts": 6016447, "args": {"queue": "default_tq"}, "pid": 13931, "ts": 196489505550, "cat": "renderer.scheduler", "tid": 13956, "ph": "X", "dur": 51}], "stackFrames": {"2850": {"category": "Kernel", "name": "datagram_poll", "parent": 2573}, "2853": {"category": "Android", "name": "android::IPCThreadState::IPCThreadState()", "parent": 152}, "1523": {"category": "Kernel", "name": "update_clk_statistics", "parent": 1522}, "2855": {"category": "Java", "name": "art::mirror::PrimitiveArray::SetArrayClass(art::mirror::Class*)"}, "1993": {"category": "Kernel", "name": "_find_next_bit_le"}, "2857": {"category": "Kernel", "name": "__put_task_struct", "parent": 2856}, "2856": {"category": "Kernel", "name": "delayed_put_task_struct", "parent": 541}, "1490": {"category": "Kernel", "name": "__rcu_read_unlock", "parent": 1194}, "1397": {"category": "Kernel", "name": "msm_rpm_send_smd_buffer", "parent": 1396}, "1492": {"category": "Kernel", "name": "kgsl_iommu_default_setstate", "parent": 1143}, "1493": {"category": "Kernel", "name": "_raw_spin_lock", "parent": 126}, "1494": {"category": "libinputflinger.so", "name": "android::EventHub::mapKey(int, int, int, int*, unsigned int*) const"}, "1495": {"category": "Standard Lib", "name": "je_free"}, "1496": {"category": "liboverlay.so", "name": "overlay::Overlay::configBegin()", "parent": 1495}, "1396": {"category": "Kernel", "name": "msm_rpm_send_data.isra.11", "parent": 1395}, "1498": {"category": "Kernel", "name": "schedule_hrtimeout_range", "parent": 1497}, "1499": {"category": "Kernel", "name": "schedule_hrtimeout_range_clock", "parent": 1498}, "3339": {"category": "Kernel", "name": "force_quiescent_state", "parent": 3338}, "3338": {"category": "Kernel", "name": "rcu_process_callbacks", "parent": 3337}, "1395": {"category": "Kernel", "name": "msm_rpm_send_request", "parent": 1394}, "4189": {"category": "libz.so", "name": "inflate_fast"}, "1994": {"category": "Kernel", "name": "up_read", "parent": 28}, "1700": {"category": "GPU Driver", "name": "gsl_memory_write"}, "1701": {"category": "GPU Driver", "name": "leia_end_tiling"}, "1702": {"category": "Kernel", "name": "tracing_mark_write", "parent": 59}, "1394": {"category": "Kernel", "name": "msm_bus_rpm_req.constprop.2", "parent": 1393}, "1704": {"category": "Android", "name": "android::SortedVector, android::HeapCache::heap_info_t> >::do_move_backward(void*, void const*, unsigned int) const"}, "1705": {"category": "Standard Lib", "name": "epoll_pwait"}, "1706": {"category": "Kernel", "name": "dpcm_dapm_stream_event", "parent": 1689}, "1707": {"category": "Kernel", "name": "snd_soc_dapm_rtd_stream_event", "parent": 1706}, "1708": {"category": "Kernel", "name": "widget_stream_event", "parent": 1707}, "1393": {"category": "Kernel", "name": "msm_bus_rpm_commit_arb.isra.1", "parent": 1392}, "1996": {"category": "Kernel", "name": "schedule", "parent": 1569}, "4572": {"category": "libc++_shared.so", "name": "std::__1::ios_base::~ios_base()"}, "1392": {"category": "Kernel", "name": "msm_bus_remote_hw_commit", "parent": 1391}, "4573": {"category": "Kernel", "name": "fput", "parent": 53}, "1391": {"category": "Kernel", "name": "msm_bus_bimc_commit", "parent": 1390}, "3217": {"category": "Kernel", "name": "msm_bus_fabric_clk_set", "parent": 3216}, "1390": {"category": "Kernel", "name": "msm_bus_fabric_hw_commit", "parent": 1389}, "4188": {"category": "libgpu.cr.so", "name": "gpu::gles2::GLES2DecoderImpl::RestoreState(gpu::gles2::ContextState const*)"}, "3659": {"category": "Kernel", "name": "__ocmem_allocate_range", "parent": 3658}, "1128": {"category": "Kernel", "name": "put_cred_rcu", "parent": 541}, "1129": {"category": "Kernel", "name": "kmem_cache_free", "parent": 1128}, "1628": {"category": "Kernel", "name": "kgsl_iommu_unmap", "parent": 1627}, "4576": {"category": "Java", "name": "art::JNI::ReleaseBooleanArrayElements(_JNIEnv*, _jbooleanArray*, unsigned char*, int)"}, "3813": {"category": "Kernel", "name": "regulator_disable", "parent": 3812}, "1120": {"category": "Standard Lib", "name": "sendto"}, "1121": {"category": "Java", "name": "artAllocStringFromBytesFromCodeRegion"}, "1122": {"category": "Android", "name": "android::IPCThreadState::decStrongHandle(int)", "parent": 152}, "1123": {"category": "Android", "name": "android::BpMemory::getMemory(int*, unsigned int*) const"}, "1124": {"category": "GPU Driver", "name": "oxili_configure_depthcontrol"}, "1125": {"category": "Android", "name": "android::BufferedTextOutput::popBundle()"}, "1126": {"category": "Kernel", "name": "_test_and_set_bit", "parent": 83}, "1127": {"category": "thermal-engine-hh", "name": "[unknown]"}, "4490": {"category": "Kernel", "name": "__schedule", "parent": 4489}, "4579": {"category": "libc++_shared.so", "name": "std::__1::num_put > >::do_put(std::__1::ostreambuf_iterator >, std::__1::ios_base&, char, long) const"}, "2989": {"category": "Kernel", "name": "tty_release", "parent": 51}, "2988": {"category": "Kernel", "name": "kmem_cache_alloc", "parent": 2987}, "3029": {"category": "Kernel", "name": "prepare_to_wait", "parent": 3028}, "3028": {"category": "Kernel", "name": "dhd_pno_stop_for_gscan", "parent": 2102}, "2983": {"category": "Kernel", "name": "kfree", "parent": 2982}, "2982": {"category": "Kernel", "name": "binder_deferred_func", "parent": 35}, "2981": {"category": "Kernel", "name": "__mutex_lock_slowpath", "parent": 2980}, "2980": {"category": "Kernel", "name": "mutex_lock", "parent": 2979}, "2987": {"category": "Kernel", "name": "split_vma", "parent": 2293}, "2986": {"category": "Kernel", "name": "__slab_free", "parent": 2985}, "2985": {"category": "Kernel", "name": "kmem_cache_free", "parent": 2984}, "2984": {"category": "Kernel", "name": "remove_vma", "parent": 2973}, "524": {"category": "Kernel", "name": "rcu_idle_enter", "parent": 200}, "525": {"category": "Standard Lib", "name": "sigemptyset"}, "526": {"category": "Kernel", "name": "skb_free_datagram", "parent": 284}, "527": {"category": "Kernel", "name": "consume_skb", "parent": 526}, "520": {"category": "Kernel", "name": "run_rebalance_domains", "parent": 519}, "521": {"category": "Kernel", "name": "rebalance_domains", "parent": 520}, "522": {"category": "Kernel", "name": "load_balance", "parent": 521}, "523": {"category": "Kernel", "name": "cpumask_next_and", "parent": 522}, "1014": {"category": "Java", "name": "art::mirror::Class::SetStatus(art::Handle, art::mirror::Class::Status, art::Thread*)"}, "1015": {"category": "Kernel", "name": "sg_next", "parent": 159}, "1016": {"category": "GPU Driver", "name": "leia_primitive_clear"}, "1017": {"category": "Standard Lib", "name": "memmove"}, "528": {"category": "Kernel", "name": "__kfree_skb", "parent": 527}, "529": {"category": "Kernel", "name": "skb_release_head_state", "parent": 528}, "1012": {"category": "Kernel", "name": "__schedule", "parent": 1011}, "1013": {"category": "Kernel", "name": "_raw_spin_unlock_irq", "parent": 1012}, "1234": {"category": "GPU Driver", "name": "eglMapImage"}, "1235": {"category": "Kernel", "name": "mutex_unlock", "parent": 391}, "1236": {"category": "Kernel", "name": "__mutex_unlock_slowpath", "parent": 1235}, "1237": {"category": "Kernel", "name": "gen_pool_alloc_aligned", "parent": 403}, "1230": {"category": "Standard Lib", "name": "strncmp"}, "1231": {"category": "libqmi_encdec.so", "name": "[unknown]"}, "1232": {"category": "base.odex", "name": "[unknown]"}, "1233": {"category": "Java", "name": "[unknown]", "parent": 1232}, "4196": {"category": "libcc.cr.so", "name": "cc::RollingTimeDeltaHistory::Percentile(double) const"}, "3957": {"category": "Android", "name": "android::BpBinder::BpBinder(int)"}, "4194": {"category": "Kernel", "name": "select_estimate_accuracy", "parent": 380}, "4195": {"category": "Kernel", "name": "ktime_get_ts", "parent": 4194}, "1238": {"category": "Kernel", "name": "set_bits_ll", "parent": 1237}, "1239": {"category": "Kernel", "name": "atomic_notifier_call_chain", "parent": 1146}, "4190": {"category": "libgpu.cr.so", "name": "std::__1::basic_string, std::__1::allocator >::append(char const*, unsigned int)"}, "3956": {"category": "Kernel", "name": "remove_vm_area", "parent": 3955}, "2526": {"category": "Kernel", "name": "__d_alloc", "parent": 2525}, "4358": {"category": "Kernel", "name": "mdss_mdp_smp_reserve", "parent": 592}, "3955": {"category": "Kernel", "name": "__vunmap", "parent": 3954}, "4354": {"category": "Kernel", "name": "kmap_atomic", "parent": 4353}, "4355": {"category": "Kernel", "name": "kmap_high_get", "parent": 4354}, "4356": {"category": "Kernel", "name": "_raw_spin_unlock_irqrestore", "parent": 4355}, "3954": {"category": "Kernel", "name": "vfree", "parent": 1558}, "3167": {"category": "Kernel", "name": "__alloc_skb", "parent": 3166}, "4351": {"category": "Kernel", "name": "__inc_zone_page_state", "parent": 4350}, "4352": {"category": "Kernel", "name": "__inc_zone_state", "parent": 4351}, "4353": {"category": "Kernel", "name": "v6_clear_user_highpage_nonaliasing", "parent": 4349}, "4310": {"category": "libgpu.cr.so", "name": "[unknown]", "parent": 4309}, "438": {"category": "Kernel", "name": "kgsl_add_fence_event", "parent": 437}, "439": {"category": "Kernel", "name": "sync_fence_create", "parent": 438}, "436": {"category": "Android", "name": "android::RefBase::weakref_type::decWeak(void const*)"}, "437": {"category": "Kernel", "name": "kgsl_ioctl_timestamp_event", "parent": 386}, "434": {"category": "Standard Lib", "name": "pthread_create"}}, "samples": [{"name": "cycles:HG", "weight": 297850, "ts": 196493621870.241, "cpu": 2, "comm": "ksoftirqd/2", "tid": 14106, "sf": 539}, {"name": "cycles:HG", "weight": 1132096, "ts": 196493621938.626, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1132116, "ts": 196493622439.043, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1130919, "ts": 196493622938.678, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1130876, "ts": 196493623438.105, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1130876, "ts": 196493623937.897, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131083, "ts": 196493624437.22, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131128, "ts": 196493624936.074, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131320, "ts": 196493625435.918, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131601, "ts": 196493625937.48, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131734, "ts": 196493626435.918, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131397, "ts": 196493626935.397, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 437658, "ts": 196493626987.168, "cpu": 0, "comm": "swapper", "tid": 0, "sf": 77}, {"name": "cycles:HG", "weight": 1131678, "ts": 196493627436.126, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131929, "ts": 196493627935.762, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131710, "ts": 196493628435.605, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131799, "ts": 196493628934.772, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131829, "ts": 196493629434.407, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131977, "ts": 196493629934.772, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1132199, "ts": 196493630434.824, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1132038, "ts": 196493630934.668, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131980, "ts": 196493631434.772, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 437658, "ts": 196493631773.105, "cpu": 0, "comm": "surfaceflinger", "tid": 235, "sf": 48}, {"name": "cycles:HG", "weight": 348651, "ts": 196493631851.855, "cpu": 2, "comm": "ksoftirqd/2", "tid": 14106, "sf": 3005}, {"name": "cycles:HG", "weight": 1131995, "ts": 196493631939.668, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 275538, "ts": 196493631973.626, "cpu": 2, "comm": "ndroid.systemui", "tid": 965, "sf": 152}, {"name": "cycles:HG", "weight": 386273, "ts": 196493632025.553, "cpu": 0, "comm": "swapper", "tid": 0, "sf": 77}, {"name": "cycles:HG", "weight": 242822, "ts": 196493632086.282, "cpu": 2, "comm": "swapper", "tid": 0, "sf": 524}, {"name": "cycles:HG", "weight": 306050, "ts": 196493632162.48, "cpu": 0, "comm": "ksoftirqd/0", "tid": 3, "sf": 84}, {"name": "cycles:HG", "weight": 1131861, "ts": 196493632439.928, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1130548, "ts": 196493632938.105, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1130563, "ts": 196493633438.366, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1130932, "ts": 196493633937.637, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1130919, "ts": 196493634437.22, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131082, "ts": 196493634936.491, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131230, "ts": 196493635435.501, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131407, "ts": 196493635935.293, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131717, "ts": 196493636434.72, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131747, "ts": 196493636934.72, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 343424, "ts": 196493637077.272, "cpu": 0, "comm": "swapper", "tid": 0, "sf": 77}, {"name": "cycles:HG", "weight": 1131954, "ts": 196493637435.501, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131911, "ts": 196493637934.824, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 457251, "ts": 196493638301.23, "cpu": 0, "comm": "sensors.qcom", "tid": 973, "sf": 5}, {"name": "cycles:HG", "weight": 1131824, "ts": 196493638434.928, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 405911, "ts": 196493638480.189, "cpu": 0, "comm": "system_server", "tid": 844, "sf": 3006}, {"name": "cycles:HG", "weight": 337207, "ts": 196493638558.053, "cpu": 2, "comm": "system_server", "tid": 885, "sf": 584}, {"name": "cycles:HG", "weight": 375907, "ts": 196493638727.376, "cpu": 0, "comm": "r.ScannerThread", "tid": 14164, "sf": 409}, {"name": "cycles:HG", "weight": 482221, "ts": 196493638770.449, "cpu": 2, "comm": ".gms.persistent", "tid": 13885, "sf": 24}, {"name": "cycles:HG", "weight": 1131898, "ts": 196493638935.501, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131870, "ts": 196493639434.668, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131680, "ts": 196493639934.355, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131916, "ts": 196493640434.355, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1132034, "ts": 196493640935.189, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1132034, "ts": 196493641434.095, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131888, "ts": 196493641937.897, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 459973, "ts": 196493641989.147, "cpu": 0, "comm": "swapper", "tid": 0, "sf": 77}, {"name": "cycles:HG", "weight": 426602, "ts": 196493642392.116, "cpu": 2, "comm": "swapper", "tid": 0, "sf": 204}, {"name": "cycles:HG", "weight": 1132137, "ts": 196493642437.168, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131128, "ts": 196493642936.751, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131261, "ts": 196493643436.491, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131335, "ts": 196493643936.803, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131394, "ts": 196493644435.762, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131336, "ts": 196493644935.97, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131602, "ts": 196493645435.605, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131662, "ts": 196493645935.137, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131736, "ts": 196493646434.46, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131810, "ts": 196493646935.345, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1132017, "ts": 196493647436.699, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131739, "ts": 196493647935.345, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131417, "ts": 196493648434.147, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 468491, "ts": 196493648580.449, "cpu": 0, "comm": "swapper", "tid": 0, "sf": 73}, {"name": "cycles:HG", "weight": 446158, "ts": 196493648862.585, "cpu": 2, "comm": "ndroid.systemui", "tid": 965, "sf": 152}, {"name": "cycles:HG", "weight": 1131831, "ts": 196493648934.564, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1132141, "ts": 196493649434.824, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1132025, "ts": 196493649934.616, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131982, "ts": 196493650434.251, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131968, "ts": 196493650935.241, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1132057, "ts": 196493651434.512, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 398089, "ts": 196493651839.824, "cpu": 2, "comm": "ksoftirqd/2", "tid": 14106, "sf": 84}, {"name": "cycles:HG", "weight": 418907, "ts": 196493651861.074, "cpu": 0, "comm": "ksoftirqd/0", "tid": 3, "sf": 1699}, {"name": "cycles:HG", "weight": 1131926, "ts": 196493651937.22, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131921, "ts": 196493652437.949, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131233, "ts": 196493652936.855, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131087, "ts": 196493653435.866, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131309, "ts": 196493653935.866, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131590, "ts": 196493654435.814, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131562, "ts": 196493654935.449, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131607, "ts": 196493655435.397, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131710, "ts": 196493655935.605, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131740, "ts": 196493656434.616, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131653, "ts": 196493656934.72, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 331059, "ts": 196493657041.855, "cpu": 0, "comm": "swapper", "tid": 0, "sf": 77}, {"name": "cycles:HG", "weight": 1131993, "ts": 196493657435.189, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131906, "ts": 196493657933.939, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 295985, "ts": 196493658029.98, "cpu": 0, "comm": "kworker/u:2", "tid": 13922, "sf": 34}, {"name": "cycles:HG", "weight": 262559, "ts": 196493658147.637, "cpu": 0, "comm": "sensors.qcom", "tid": 973, "sf": 534}, {"name": "cycles:HG", "weight": 246341, "ts": 196493658256.595, "cpu": 0, "comm": "system_server", "tid": 840, "sf": 2330}, {"name": "cycles:HG", "weight": 314916, "ts": 196493658369.616, "cpu": 2, "comm": "system_server", "tid": 885, "sf": 454}, {"name": "cycles:HG", "weight": 1131848, "ts": 196493658434.46, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 346814, "ts": 196493658469.928, "cpu": 0, "comm": "r.ScannerThread", "tid": 14164, "sf": 1262}, {"name": "cycles:HG", "weight": 282163, "ts": 196493658493.314, "cpu": 2, "comm": "system_server", "tid": 809, "sf": 480}, {"name": "cycles:HG", "weight": 249595, "ts": 196493658604.616, "cpu": 2, "comm": ".gms.persistent", "tid": 13885, "sf": 1186}, {"name": "cycles:HG", "weight": 1132099, "ts": 196493658934.407, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1132012, "ts": 196493659435.189, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131969, "ts": 196493659935.137, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131764, "ts": 196493660434.303, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131868, "ts": 196493660934.98, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1132045, "ts": 196493661433.835, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131884, "ts": 196493661938.21, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 502401, "ts": 196493661992.532, "cpu": 0, "comm": "swapper", "tid": 0, "sf": 77}, {"name": "cycles:HG", "weight": 344348, "ts": 196493662348.418, "cpu": 2, "comm": "swapper", "tid": 0, "sf": 204}, {"name": "cycles:HG", "weight": 1132124, "ts": 196493662438.366, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1130985, "ts": 196493662938.105, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1130913, "ts": 196493663437.532, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1130987, "ts": 196493663937.168, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131105, "ts": 196493664435.657, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131208, "ts": 196493664935.762, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131637, "ts": 196493665436.282, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 439774, "ts": 196493665612.064, "cpu": 2, "comm": "ndroid.systemui", "tid": 965, "sf": 834}, {"name": "cycles:HG", "weight": 1131609, "ts": 196493665936.699, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131536, "ts": 196493666434.72, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131523, "ts": 196493666934.564, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 525437, "ts": 196493666979.303, "cpu": 0, "comm": "swapper", "tid": 0, "sf": 77}, {"name": "cycles:HG", "weight": 1131893, "ts": 196493667436.491, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131908, "ts": 196493667934.199, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131542, "ts": 196493668434.928, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1132075, "ts": 196493668934.876, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1132003, "ts": 196493669434.095, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131857, "ts": 196493669934.043, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1132064, "ts": 196493670434.199, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1132109, "ts": 196493670934.564, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1132051, "ts": 196493671434.668, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131979, "ts": 196493671938.939, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 469080, "ts": 196493671981.387, "cpu": 0, "comm": "swapper", "tid": 0, "sf": 77}, {"name": "cycles:HG", "weight": 313399, "ts": 196493672291.595, "cpu": 2, "comm": "swapper", "tid": 0, "sf": 1060}, {"name": "cycles:HG", "weight": 1131941, "ts": 196493672438.574, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1130831, "ts": 196493672937.793, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1130831, "ts": 196493673436.491, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131038, "ts": 196493673936.178, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131393, "ts": 196493674436.491, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131511, "ts": 196493674936.647, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131394, "ts": 196493675435.866, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131424, "ts": 196493675935.397, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131557, "ts": 196493676435.449, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131690, "ts": 196493676935.553, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 370528, "ts": 196493677103.47, "cpu": 0, "comm": "swapper", "tid": 0, "sf": 77}, {"name": "cycles:HG", "weight": 1131764, "ts": 196493677435.605, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 328843, "ts": 196493677897.741, "cpu": 0, "comm": "sensors.qcom", "tid": 973, "sf": 3009}, {"name": "cycles:HG", "weight": 1131647, "ts": 196493677934.928, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 291752, "ts": 196493678027.949, "cpu": 0, "comm": "system_server", "tid": 840, "sf": 1004}, {"name": "cycles:HG", "weight": 278245, "ts": 196493678150.293, "cpu": 0, "comm": "system_server", "tid": 844, "sf": 48}, {"name": "cycles:HG", "weight": 313399, "ts": 196493678267.376, "cpu": 2, "comm": "system_server", "tid": 885, "sf": 2046}, {"name": "cycles:HG", "weight": 377236, "ts": 196493678367.741, "cpu": 0, "comm": "r.ScannerThread", "tid": 14164, "sf": 409}, {"name": "cycles:HG", "weight": 277158, "ts": 196493678389.251, "cpu": 2, "comm": ".gms.persistent", "tid": 13885, "sf": 3010}, {"name": "cycles:HG", "weight": 1131750, "ts": 196493678435.397, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131839, "ts": 196493678934.46, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131722, "ts": 196493679434.407, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131944, "ts": 196493679935.345, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1132003, "ts": 196493680434.772, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131725, "ts": 196493680934.772, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1131902, "ts": 196493681434.46, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 245413, "ts": 196493681847.428, "cpu": 2, "comm": "swapper", "tid": 0, "sf": 524}, {"name": "cycles:HG", "weight": 1131902, "ts": 196493681938.001, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 521979, "ts": 196493681991.699, "cpu": 0, "comm": "swapper", "tid": 0, "sf": 77}, {"name": "cycles:HG", "weight": 304608, "ts": 196493682404.616, "cpu": 2, "comm": "ndroid.systemui", "tid": 965, "sf": 1191}, {"name": "cycles:HG", "weight": 1131941, "ts": 196493682438.678, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 272039, "ts": 196493682524.303, "cpu": 2, "comm": "ndroid.systemui", "tid": 965, "sf": 24}, {"name": "cycles:HG", "weight": 268553, "ts": 196493682649.928, "cpu": 2, "comm": "swapper", "tid": 0, "sf": 204}, {"name": "cycles:HG", "weight": 1130903, "ts": 196493682938.366, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1130772, "ts": 196493683437.324, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 607013, "ts": 196493683841.543, "cpu": 0, "comm": "dhd_dpc", "tid": 125, "sf": 3021}, {"name": "cycles:HG", "weight": 1130861, "ts": 196493683936.959, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 541605, "ts": 196493684080.137, "cpu": 0, "comm": "wpa_supplicant", "tid": 1108, "sf": 3022}, {"name": "cycles:HG", "weight": 1126514, "ts": 196493684083.678, "cpu": 3, "comm": "system_server", "tid": 1103, "sf": 1024}, {"name": "cycles:HG", "weight": 1131127, "ts": 196493684437.376, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 492206, "ts": 196493684605.709, "cpu": 0, "comm": "swapper", "tid": 0, "sf": 77}, {"name": "cycles:HG", "weight": 559558, "ts": 196493684824.824, "cpu": 0, "comm": "dhd_dpc", "tid": 125, "sf": 3025}, {"name": "cycles:HG", "weight": 1050347, "ts": 196493684920.605, "cpu": 3, "comm": "system_server", "tid": 924, "sf": 1887}, {"name": "cycles:HG", "weight": 1131216, "ts": 196493684935.605, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 272}, {"name": "cycles:HG", "weight": 1050347, "ts": 196493685385.241, "cpu": 3, "comm": "system_server", "tid": 924, "sf": 152}, {"name": "cycles:HG", "weight": 1131114, "ts": 196493685435.241, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 997507, "ts": 196493685826.178, "cpu": 3, "comm": "system_server", "tid": 924, "sf": 905}, {"name": "cycles:HG", "weight": 1131617, "ts": 196493685935.032, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1007073, "ts": 196493686270.345, "cpu": 3, "comm": "system_server", "tid": 924, "sf": 3026}, {"name": "cycles:HG", "weight": 1131691, "ts": 196493686435.293, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1023885, "ts": 196493686722.428, "cpu": 3, "comm": "system_server", "tid": 924, "sf": 3027}, {"name": "cycles:HG", "weight": 1131721, "ts": 196493686934.72, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1039957, "ts": 196493687182.897, "cpu": 3, "comm": "system_server", "tid": 924, "sf": 2356}, {"name": "cycles:HG", "weight": 1131780, "ts": 196493687436.074, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 1053686, "ts": 196493687647.428, "cpu": 3, "comm": "system_server", "tid": 924, "sf": 2326}, {"name": "cycles:HG", "weight": 1131810, "ts": 196493687935.762, "cpu": 1, "comm": ".gms.persistent", "tid": 1660, "sf": 152}, {"name": "cycles:HG", "weight": 1065205, "ts": 196493688117.532, "cpu": 3, "comm": ".gms.persistent", "tid": 1729, "sf": 12}, {"name": "cycles:HG", "weight": 1131532, "ts": 196493688436.074, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 556143, "ts": 196493688570.345, "cpu": 0, "comm": ".gms.persistent", "tid": 1692, "sf": 1232}, {"name": "cycles:HG", "weight": 1075356, "ts": 196493688591.855, "cpu": 3, "comm": "system_server", "tid": 924, "sf": 3029}, {"name": "cycles:HG", "weight": 645259, "ts": 196493688855.137, "cpu": 0, "comm": ".gms.persistent", "tid": 1692, "sf": 152}, {"name": "cycles:HG", "weight": 1131680, "ts": 196493688935.032, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 575371, "ts": 196493689110.397, "cpu": 0, "comm": ".gms.persistent", "tid": 1692, "sf": 1378}, {"name": "cycles:HG", "weight": 629674, "ts": 196493689387.845, "cpu": 0, "comm": ".gms.persistent", "tid": 1692, "sf": 12}, {"name": "cycles:HG", "weight": 1131593, "ts": 196493689434.095, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 705297, "ts": 196493689699.824, "cpu": 0, "comm": ".gms.persistent", "tid": 1692, "sf": 905}, {"name": "cycles:HG", "weight": 1131800, "ts": 196493689934.407, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 775837, "ts": 196493690042.272, "cpu": 0, "comm": ".gms.persistent", "tid": 1692, "sf": 1232}, {"name": "cycles:HG", "weight": 834492, "ts": 196493690411.282, "cpu": 0, "comm": ".gms.persistent", "tid": 1692, "sf": 152}, {"name": "cycles:HG", "weight": 1132036, "ts": 196493690433.73, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 882321, "ts": 196493690800.814, "cpu": 0, "comm": ".gms.persistent", "tid": 1692, "sf": 3030}, {"name": "cycles:HG", "weight": 1131934, "ts": 196493690934.251, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 921577, "ts": 196493691209.407, "cpu": 0, "comm": ".gms.persistent", "tid": 1692, "sf": 1014}, {"name": "cycles:HG", "weight": 1132126, "ts": 196493691434.876, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 954187, "ts": 196493691630.501, "cpu": 0, "comm": "system_server", "tid": 2277, "sf": 152}, {"name": "cycles:HG", "weight": 374916, "ts": 196493691678.262, "cpu": 2, "comm": "system_server", "tid": 815, "sf": 2713}, {"name": "cycles:HG", "weight": 514732, "ts": 196493691913.782, "cpu": 2, "comm": "dhd_dpc", "tid": 125, "sf": 728}, {"name": "cycles:HG", "weight": 1131980, "ts": 196493691937.48, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 980963, "ts": 196493692076.803, "cpu": 0, "comm": ".gms.persistent", "tid": 1692, "sf": 3031}, {"name": "cycles:HG", "weight": 1083778, "ts": 196493692182.064, "cpu": 3, "comm": "swapper", "tid": 0, "sf": 524}, {"name": "cycles:HG", "weight": 407059, "ts": 196493692255.709, "cpu": 2, "comm": "swapper", "tid": 0, "sf": 201}, {"name": "cycles:HG", "weight": 1131786, "ts": 196493692438.782, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 464437, "ts": 196493692462.168, "cpu": 2, "comm": "system_server", "tid": 1419, "sf": 24}, {"name": "cycles:HG", "weight": 956095, "ts": 196493692503.939, "cpu": 0, "comm": "system_server", "tid": 808, "sf": 380}, {"name": "cycles:HG", "weight": 491108, "ts": 196493692678.991, "cpu": 2, "comm": "lmkd", "tid": 192, "sf": 1053}, {"name": "cycles:HG", "weight": 578691, "ts": 196493692934.98, "cpu": 2, "comm": "system_server", "tid": 1419, "sf": 2261}, {"name": "cycles:HG", "weight": 1131069, "ts": 196493692936.282, "cpu": 1, "comm": ".gms.persistent", "tid": 1375, "sf": 1479}, {"name": "cycles:HG", "weight": 673045, "ts": 196493693233.626, "cpu": 2, "comm": "system_server", "tid": 1436, "sf": 2382}, {"name": "cycles:HG", "weight": 970459, "ts": 196493693301.439, "cpu": 0, "comm": "system_server", "tid": 2979, "sf": 152}, {"name": "cycles:HG", "weight": 1130952, "ts": 196493693437.584, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 753340, "ts": 196493693568.678, "cpu": 2, "comm": "swapper", "tid": 0, "sf": 204}, {"name": "cycles:HG", "weight": 990963, "ts": 196493693739.564, "cpu": 0, "comm": "system_server", "tid": 802, "sf": 152}, {"name": "cycles:HG", "weight": 1131425, "ts": 196493693939.564, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 816721, "ts": 196493694022.324, "cpu": 2, "comm": "system_server", "tid": 1202, "sf": 152}, {"name": "cycles:HG", "weight": 1018311, "ts": 196493694280.709, "cpu": 3, "comm": ".gms.persistent", "tid": 1692, "sf": 3031}, {"name": "cycles:HG", "weight": 944745, "ts": 196493694318.262, "cpu": 0, "comm": "dhd_dpc", "tid": 125, "sf": 718}, {"name": "cycles:HG", "weight": 1131132, "ts": 196493694436.907, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 866886, "ts": 196493694583.314, "cpu": 2, "comm": "system_server", "tid": 31585, "sf": 152}, {"name": "cycles:HG", "weight": 1130561, "ts": 196493694935.605, "cpu": 1, "comm": ".gms.persistent", "tid": 27896, "sf": 24}, {"name": "cycles:HG", "weight": 877972, "ts": 196493694970.709, "cpu": 2, "comm": "system_server", "tid": 31585, "sf": 1885}, {"name": "cycles:HG", "weight": 908751, "ts": 196493695255.397, "cpu": 3, "comm": ".gms.persistent", "tid": 1692, "sf": 1518}, {"name": "cycles:HG", "weight": 961487, "ts": 196493695255.97, "cpu": 0, "comm": ".gms.persistent", "tid": 1581, "sf": 2579}, {"name": "cycles:HG", "weight": 1131391, "ts": 196493695438.939, "cpu": 1, "comm": ".gms.persistent", "tid": 3490, "sf": 152}, {"name": "cycles:HG", "weight": 866087, "ts": 196493695617.793, "cpu": 2, "comm": "swapper", "tid": 0, "sf": 204}, {"name": "cycles:HG", "weight": 822225, "ts": 196493695626.959, "cpu": 3, "comm": "system_server", "tid": 3435, "sf": 3036}, {"name": "cycles:HG", "weight": 945135, "ts": 196493695725.449, "cpu": 0, "comm": "system_server", "tid": 2276, "sf": 152}, {"name": "cycles:HG", "weight": 1131701, "ts": 196493695938.991, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 772163, "ts": 196493696069.512, "cpu": 3, "comm": ".gms.persistent", "tid": 1692, "sf": 24}, {"name": "cycles:HG", "weight": 889986, "ts": 196493696117.949, "cpu": 0, "comm": "system_server", "tid": 807, "sf": 152}, {"name": "cycles:HG", "weight": 1130736, "ts": 196493696437.168, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 897232, "ts": 196493696514.147, "cpu": 0, "comm": "system_server", "tid": 1428, "sf": 20}, {"name": "cycles:HG", "weight": 805509, "ts": 196493696757.064, "cpu": 3, "comm": ".gms.persistent", "tid": 1363, "sf": 2326}, {"name": "cycles:HG", "weight": 927988, "ts": 196493696926.022, "cpu": 0, "comm": "system_server", "tid": 2277, "sf": 152}, {"name": "cycles:HG", "weight": 1130736, "ts": 196493696940.501, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 897462, "ts": 196493696952.064, "cpu": 2, "comm": "system_server", "tid": 1419, "sf": 24}, {"name": "cycles:HG", "weight": 818607, "ts": 196493697124.147, "cpu": 3, "comm": ".gms.persistent", "tid": 1363, "sf": 447}, {"name": "cycles:HG", "weight": 958379, "ts": 196493697357.012, "cpu": 0, "comm": "system_server", "tid": 2979, "sf": 12}, {"name": "cycles:HG", "weight": 1131180, "ts": 196493697440.293, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 872027, "ts": 196493697586.959, "cpu": 2, "comm": "system_server", "tid": 1436, "sf": 152}, {"name": "cycles:HG", "weight": 983975, "ts": 196493697792.689, "cpu": 0, "comm": "sensors.qcom", "tid": 819, "sf": 2017}, {"name": "cycles:HG", "weight": 1130230, "ts": 196493697939.928, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 803857, "ts": 196493697942.376, "cpu": 2, "comm": ".gms.persistent", "tid": 1363, "sf": 192}, {"name": "cycles:HG", "weight": 1003687, "ts": 196493698237.116, "cpu": 0, "comm": ".gms.persistent", "tid": 1636, "sf": 1232}, {"name": "cycles:HG", "weight": 782509, "ts": 196493698288.105, "cpu": 2, "comm": "system_server", "tid": 1202, "sf": 19}, {"name": "cycles:HG", "weight": 1130334, "ts": 196493698438.678, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 822340, "ts": 196493698651.699, "cpu": 2, "comm": ".gms.persistent", "tid": 1363, "sf": 3038}, {"name": "cycles:HG", "weight": 1022348, "ts": 196493698687.012, "cpu": 0, "comm": "system_server", "tid": 807, "sf": 1256}, {"name": "cycles:HG", "weight": 1130541, "ts": 196493698938.782, "cpu": 1, "comm": "system_server", "tid": 807, "sf": 3039}, {"name": "cycles:HG", "weight": 790673, "ts": 196493699002.168, "cpu": 3, "comm": "system_server", "tid": 3435, "sf": 3041}, {"name": "cycles:HG", "weight": 868186, "ts": 196493699036.855, "cpu": 2, "comm": "system_server", "tid": 1414, "sf": 841}, {"name": "cycles:HG", "weight": 1038294, "ts": 196493699151.803, "cpu": 0, "comm": "surfaceflinger", "tid": 235, "sf": 48}, {"name": "cycles:HG", "weight": 826537, "ts": 196493699369.459, "cpu": 3, "comm": "system_server", "tid": 3435, "sf": 152}, {"name": "cycles:HG", "weight": 1130748, "ts": 196493699439.147, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 908964, "ts": 196493699439.459, "cpu": 2, "comm": "ndroid.systemui", "tid": 965, "sf": 24}, {"name": "cycles:HG", "weight": 1052615, "ts": 196493699622.116, "cpu": 0, "comm": "system_server", "tid": 1428, "sf": 450}, {"name": "cycles:HG", "weight": 750727, "ts": 196493699702.793, "cpu": 3, "comm": "system_server", "tid": 2978, "sf": 24}, {"name": "cycles:HG", "weight": 942863, "ts": 196493699855.032, "cpu": 2, "comm": ".gms.persistent", "tid": 1363, "sf": 1754}, {"name": "cycles:HG", "weight": 1130940, "ts": 196493699938.834, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 784670, "ts": 196493700050.241, "cpu": 3, "comm": "system_server", "tid": 807, "sf": 12}, {"name": "cycles:HG", "weight": 1062662, "ts": 196493700157.012, "cpu": 0, "comm": "system_server", "tid": 1428, "sf": 938}, {"name": "cycles:HG", "weight": 971451, "ts": 196493700288.366, "cpu": 2, "comm": "system_server", "tid": 2979, "sf": 3047}, {"name": "cycles:HG", "weight": 833621, "ts": 196493700418.887, "cpu": 3, "comm": ".gms.persistent", "tid": 1692, "sf": 1232}, {"name": "cycles:HG", "weight": 1130750, "ts": 196493700436.595, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}, {"name": "cycles:HG", "weight": 879395, "ts": 196493700810.709, "cpu": 3, "comm": "system_server", "tid": 804, "sf": 3054}, {"name": "cycles:HG", "weight": 1130898, "ts": 196493700936.751, "cpu": 1, "comm": "ileged_process1", "tid": 14138, "sf": 3}], "metadata": {"network-type": "WiFi", "gpu-gl-vendor": "Qualcomm", "gpu-psver": "3.00", "field-trials": ["853359fa-f7de5af1", "236d5d9e-fecfffa1", "e036a196-3f4a17df", "77207729-3f4a17df", "4bf94d2-15606520", "2a33b90e-3f4a17df", "ba3f87da-92cc81ec", "46da3e07-3f4a17df", "1ce8a192-3f4a17df", "3fbe5359-3f4a17df", "43d0dd1e-3f4a17df", "10667b28-e2bc4126", "6ce7d7b5-3f4a17df", "93731dca-3f4a17df", "64cbdfc2-3f4a17df", "b7786474-d93a0620", "158a87f-3f4a17df", "868bda90-3f4a17df", "2182dcae-37a58975", "4ea303a6-3f4a17df", "826d6cab-96e3ef3c", "8b4d89aa-3f4a17df", "30e679f-3f4a17df", "f2cb3653-c2fe0862", "867c4c68-3f4a17df", "d747916f-d747916f", "77d0f131-df0c9747", "2f40feb6-3f4a17df", "dd139bd7-3f4a17df", "fe05be5f-4ad60575"], "product-version": "Chrome/53.0.2784.0", "gpu-vsver": "3.00", "user-agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA59G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2784.0 Mobile Safari/537.36", "os-arch": "armv7l", "os-version": "6.0.0", "gpu-gl-renderer": "Adreno (TM) 330", "num-cpus": 4, "gpu-driver": "127.0", "clock-domain": "LINUX_CLOCK_MONOTONIC", "physical-memory": 1854, "cpu-model": 0, "cpu-family": 0, "highres-ticks": true, "cpu-brand": "RMv7 Processor rev 0 (v7l)", "cpu-stepping": 0, "os-name": "Android"}} \ No newline at end of file diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/trace_result.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/trace_result.py new file mode 100644 index 0000000..11c78f7 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/trace_result.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python + +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +'''Tracing agent result wrapper for systrace. + +This class represents the captured trace results from a particular +tool (e.g. atrace, ftrace.) +''' + + +class TraceResult(object): + def __init__(self, source_name, raw_data): + self.source_name = source_name + self.raw_data = raw_data diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/__init__.py new file mode 100644 index 0000000..859d779 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/__init__.py @@ -0,0 +1,91 @@ +#!/usr/bin/env python + +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +'''Tracing agent interface for systrace. + +This class represents an agent that captures traces from a particular +tool (e.g. atrace, ftrace.) +''' + +# Timeout interval constants. + +START_STOP_TIMEOUT = 10.0 +GET_RESULTS_TIMEOUT = 30.0 + + +class TracingConfig(object): + '''Store the tracing configuration options for all Systrace agents. If there + are ever any options that are to be shared between all of the agents, those + options should go here. + ''' + def __init__(self): + pass + + +class TracingAgent(object): + def __init__(self): + pass + + def StartAgentTracing(self, config, timeout=None): + '''Starts running the trace for this agent. Stops with timeout if + not completed within timeout interval. + + Args: + config: TracingConfig subclass containing agent-specific options + and categories. + timeout: Timeout interval in seconds. + + Returns: + Boolean value indicating whether or not the trace started successfully. + ''' + pass + + def StopAgentTracing(self, timeout=None): + '''Stops running the trace for this agent and returns immediately. + Stops with timeout if not completed within timeout interval. + + Args: + timeout: Timeout interval in seconds. + + Returns: + Boolean value indicating whether or not the trace started successfully. + ''' + pass + + def SupportsExplicitClockSync(self): + '''Find out if this agent supports recording of clock sync markers. + + Returns: + Boolean value indicating whether this agent supports recording + of clock sync markers. + ''' + raise NotImplementedError + + def RecordClockSyncMarker(self, sync_id, did_record_sync_marker_callback): + '''Record a clock sync marker for this agent. + + Args: + sync_id: Clock sync ID string. + did_record_sync_marker_callback: Callback function to call + (with arguments: timestamp and sync_id) after the + clock sync marker is recorded. + ''' + raise NotImplementedError + + def GetResults(self, timeout=None): + '''Get the completed trace for this agent, stopping with timeout + + Get the completed trace for this agent. Call only after + StopAgentTracing is done. This function blocks until the result + is collected (note; this may take several seconds). Stops with timeout + if not completed within self._options.collection_timeout seconds. + + Args: + timeout: Timeout interval in seconds. + Returns: + Completed trace for this agent. + ''' + pass diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/agents_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/agents_unittest.py new file mode 100644 index 0000000..74498bd --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/agents_unittest.py @@ -0,0 +1,50 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import unittest + +from systrace import util + +from devil.android import device_utils +from devil.android.sdk import intent +from devil.android.sdk import keyevent + + +class BaseAgentTest(unittest.TestCase): + def setUp(self): + devices = device_utils.DeviceUtils.HealthyDevices() + self.browser = 'stable' + self.package_info = util.get_supported_browsers()[self.browser] + self.device = devices[0] + + curr_browser = self.GetChromeProcessID() + if curr_browser == None: + self.StartBrowser() + + def tearDown(self): + # Stop the browser after each test to ensure that it doesn't interfere + # with subsequent tests, e.g. by holding the devtools socket open. + self.device.ForceStop(self.package_info.package) + + def StartBrowser(self): + # Turn on the device screen. + self.device.SetScreen(True) + + # Unlock device. + self.device.SendKeyEvent(keyevent.KEYCODE_MENU) + + # Start browser. + self.device.StartActivity( + intent.Intent(activity=self.package_info.activity, + package=self.package_info.package, + data='about:blank', + extras={'create_new_tab': True}), + blocking=True, force_stop=True) + + def GetChromeProcessID(self): + chrome_processes = self.device.GetPids(self.package_info.package) + if (self.package_info.package in chrome_processes and + len(chrome_processes[self.package_info.package]) > 0): + return chrome_processes[self.package_info.package][0] + return None diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/android_process_data_agent.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/android_process_data_agent.py new file mode 100644 index 0000000..1a40aea --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/android_process_data_agent.py @@ -0,0 +1,89 @@ +# Copyright 2017 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# Tracing agent that captures friendly process and thread data - names, pids and +# tids and names, etc to enrich display in the trace viewer. Captures snapshots +# of the output of 'ps' on the device at intervals. + +import logging +import py_utils + +from devil.android import device_utils +from devil.android.device_errors import AdbShellCommandFailedError +from systrace import tracing_agents +from systrace import trace_result + +# Leftmost output columns match those used on legacy devices. +# Get thread names separately as there may be spaces that breaks col +# splitting. +# TODO(benm): Refactor device_utils.GetPids to get threads and use that here. +PS_COMMAND_PROC = "ps -A -o USER,PID,PPID,VSIZE,RSS,WCHAN,ADDR=PC,S,NAME,COMM" \ + "&& ps -AT -o USER,PID,TID,CMD" + +# Fallback for old devices. +PS_COMMAND_PROC_LEGACY = "ps && ps -t" + +# identify this as trace of thread / process state +TRACE_HEADER = 'PROCESS DUMP\n' + +def try_create_agent(config): + if config.target != 'android': + return None + if config.from_file is not None: + return None + return AndroidProcessDataAgent() + +def get_config(options): + return options + +class AndroidProcessDataAgent(tracing_agents.TracingAgent): + def __init__(self): + super(AndroidProcessDataAgent, self).__init__() + self._trace_data = "" + self._device = None + + def __repr__(self): + return 'android_process_data' + + @py_utils.Timeout(tracing_agents.START_STOP_TIMEOUT) + def StartAgentTracing(self, config, timeout=None): + self._device = device_utils.DeviceUtils(config.device_serial_number) + self._trace_data += self._get_process_snapshot() + return True + + @py_utils.Timeout(tracing_agents.START_STOP_TIMEOUT) + def StopAgentTracing(self, timeout=None): + self._trace_data += self._get_process_snapshot() + return True + + @py_utils.Timeout(tracing_agents.GET_RESULTS_TIMEOUT) + def GetResults(self, timeout=None): + result = TRACE_HEADER + self._trace_data + return trace_result.TraceResult('androidProcessDump', result) + + def SupportsExplicitClockSync(self): + return False + + def RecordClockSyncMarker(self, sync_id, did_record_sync_marker_callback): + pass + + def _get_process_snapshot(self): + use_legacy = False + try: + dump = self._device.RunShellCommand( \ + PS_COMMAND_PROC, check_return=True, as_root=True, shell=True) + except AdbShellCommandFailedError: + use_legacy = True + + # Check length of 2 as we execute two commands, which in case of failure + # on old devices output 1 line each. + if use_legacy or len(dump) == 2: + logging.debug('Couldn\'t parse ps dump, trying legacy method ...') + dump = self._device.RunShellCommand( \ + PS_COMMAND_PROC_LEGACY, check_return=True, as_root=True, shell=True) + if len(dump) == 2: + logging.error('Unable to extract process data!') + return "" + + return '\n'.join(dump) + '\n' diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/atrace_agent.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/atrace_agent.py new file mode 100644 index 0000000..e7e15e9 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/atrace_agent.py @@ -0,0 +1,451 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import optparse +import py_utils +import re +import sys +import threading +import zlib + +from devil.android import device_utils +from devil.android.sdk import version_codes +from py_trace_event import trace_time as trace_time_module +from systrace import trace_result +from systrace import tracing_agents +from systrace import util + +# Text that ADB sends, but does not need to be displayed to the user. +ADB_IGNORE_REGEXP = r'^capturing trace\.\.\. done|^capturing trace\.\.\.' +# The number of seconds to wait on output from ADB. +ADB_STDOUT_READ_TIMEOUT = 0.2 +# The adb shell command to initiate a trace. +ATRACE_BASE_ARGS = ['atrace'] +# If a custom list of categories is not specified, traces will include +# these categories (if available on the device). +DEFAULT_CATEGORIES = 'sched,freq,gfx,view,dalvik,webview,'\ + 'input,disk,am,wm,rs,binder_driver' +# The command to list trace categories. +LIST_CATEGORIES_ARGS = ATRACE_BASE_ARGS + ['--list_categories'] +# Minimum number of seconds between displaying status updates. +MIN_TIME_BETWEEN_STATUS_UPDATES = 0.2 +# ADB sends this text to indicate the beginning of the trace data. +TRACE_START_REGEXP = r'TRACE\:' +# Plain-text trace data should always start with this string. +TRACE_TEXT_HEADER = '# tracer' +_FIX_MISSING_TGIDS = True +_FIX_CIRCULAR_TRACES = True + + +def list_categories(config): + """List the possible trace event categories. + + This function needs the tracing config since it needs to get the serial + number of the device to send a command to. + + Args: + config: Tracing config. + """ + devutils = device_utils.DeviceUtils(config.device_serial_number) + categories = devutils.RunShellCommand( + LIST_CATEGORIES_ARGS, check_return=True) + + device_sdk_version = util.get_device_sdk_version() + if device_sdk_version < version_codes.MARSHMALLOW: + # work around platform bug where rs tag would corrupt trace until M(Api23) + categories = [c for c in categories if not re.match(r'^\s*rs\s*-', c)] + + print '\n'.join(categories) + if not devutils.HasRoot(): + print '\nNOTE: more categories may be available with adb root\n' + + +def get_available_categories(config, device_sdk_version): + """Gets the list of atrace categories available for tracing. + Args: + config: Tracing config. + device_sdk_version: Sdk version int of device to be queried. + """ + devutils = device_utils.DeviceUtils(config.device_serial_number) + categories_output = devutils.RunShellCommand( + LIST_CATEGORIES_ARGS, check_return=True) + categories = [c.split('-')[0].strip() for c in categories_output] + + if device_sdk_version < version_codes.MARSHMALLOW: + # work around platform bug where rs tag would corrupt trace until M(Api23) + categories = [c for c in categories if c != 'rs'] + return categories + + +def try_create_agent(config): + """Create an Atrace agent. + + Args: + config: Command line config. + """ + if config.target != 'android': + return None + if config.from_file is not None: + return None + + if not config.atrace_categories: + return None + + # Check device SDK version. + device_sdk_version = util.get_device_sdk_version() + if device_sdk_version < version_codes.JELLY_BEAN_MR2: + print ('Device SDK versions < 18 (Jellybean MR2) not supported.\n' + 'Your device SDK version is %d.' % device_sdk_version) + return None + + return AtraceAgent(device_sdk_version) + +def _construct_extra_atrace_args(config, categories): + """Construct extra arguments (-a, -k, categories) for atrace command. + + Args: + config: Tracing config. + """ + extra_args = [] + + if config.app_name is not None: + extra_args.extend(['-a', config.app_name]) + + if config.kfuncs is not None: + extra_args.extend(['-k', config.kfuncs]) + + extra_args.extend(categories) + return extra_args + +def _construct_atrace_args(config, categories): + """Builds the command used to invoke a trace process. + Returns: + A tuple where the first element is an array of command arguments, and + the second element is a boolean which will be true if the command will + stream trace data. + """ + atrace_args = ATRACE_BASE_ARGS[:] + + if config.compress_trace_data: + atrace_args.extend(['-z']) + + if (config.trace_time is not None) and (config.trace_time > 0): + atrace_args.extend(['-t', str(config.trace_time)]) + + if (config.trace_buf_size is not None) and (config.trace_buf_size > 0): + atrace_args.extend(['-b', str(config.trace_buf_size)]) + + elif 'sched' in categories: + # 'sched' is a high-volume tag, double the default buffer size + # to accommodate that + atrace_args.extend(['-b', '4096']) + extra_args = _construct_extra_atrace_args(config, categories) + + atrace_args.extend(extra_args) + return atrace_args + + +class AtraceAgent(tracing_agents.TracingAgent): + + def __init__(self, device_sdk_version): + super(AtraceAgent, self).__init__() + self._device_sdk_version = device_sdk_version + self._adb = None + self._trace_data = None + self._tracer_args = None + self._collection_thread = None + self._device_utils = None + self._device_serial_number = None + self._config = None + self._categories = None + + def __repr__(self): + return 'atrace' + + @py_utils.Timeout(tracing_agents.START_STOP_TIMEOUT) + def StartAgentTracing(self, config, timeout=None): + assert config.atrace_categories, 'Atrace categories are missing!' + self._config = config + self._categories = config.atrace_categories + if isinstance(self._categories, list): + self._categories = ','.join(self._categories) + avail_cats = get_available_categories(config, self._device_sdk_version) + unavailable = [x for x in self._categories.split(',') if + x not in avail_cats] + self._categories = [x for x in self._categories.split(',') if + x in avail_cats] + if unavailable: + print 'These categories are unavailable: ' + ' '.join(unavailable) + self._device_utils = device_utils.DeviceUtils(config.device_serial_number) + self._device_serial_number = config.device_serial_number + self._tracer_args = _construct_atrace_args(config, + self._categories) + self._device_utils.RunShellCommand( + self._tracer_args + ['--async_start'], check_return=True) + return True + + def _collect_and_preprocess(self): + """Collects and preprocesses trace data. + + Stores results in self._trace_data. + """ + trace_data = self._collect_trace_data() + self._trace_data = self._preprocess_trace_data(trace_data) + + @py_utils.Timeout(tracing_agents.START_STOP_TIMEOUT) + def StopAgentTracing(self, timeout=None): + """Stops tracing and starts collecting results. + + To synchronously retrieve the results after calling this function, + call GetResults(). + """ + self._collection_thread = threading.Thread( + target=self._collect_and_preprocess) + self._collection_thread.start() + return True + + @py_utils.Timeout(tracing_agents.GET_RESULTS_TIMEOUT) + def GetResults(self, timeout=None): + """Waits for collection thread to finish and returns trace results.""" + self._collection_thread.join() + self._collection_thread = None + return trace_result.TraceResult('systemTraceEvents', self._trace_data) + + def SupportsExplicitClockSync(self): + return True + + def RecordClockSyncMarker(self, sync_id, did_record_sync_marker_callback): + """Records a clock sync marker. + + Args: + sync_id: ID string for clock sync marker. + """ + cmd = 'echo trace_event_clock_sync: name=%s >' \ + ' /sys/kernel/debug/tracing/trace_marker' % sync_id + with self._device_utils.adb.PersistentShell( + self._device_serial_number) as shell: + t1 = trace_time_module.Now() + shell.RunCommand(cmd, close=True) + did_record_sync_marker_callback(t1, sync_id) + + def _stop_trace(self): + """Stops atrace. + + Note that prior to Api 23, --async-stop may not actually stop tracing. + Thus, this uses a fallback method of running a zero-length synchronous + trace if tracing is still on.""" + self._device_utils.RunShellCommand( + self._tracer_args + ['--async_stop'], check_return=True) + is_trace_enabled_file = '/sys/kernel/debug/tracing/tracing_on' + + if self._device_sdk_version < version_codes.MARSHMALLOW: + if int(self._device_utils.ReadFile(is_trace_enabled_file)): + # tracing was incorrectly left on, disable it + self._device_utils.RunShellCommand( + self._tracer_args + ['-t 0'], check_return=True) + + def _collect_trace_data(self): + """Reads the output from atrace and stops the trace.""" + dump_cmd = self._tracer_args + ['--async_dump'] + result = self._device_utils.RunShellCommand( + dump_cmd, raw_output=True, large_output=True, check_return=True) + + data_start = re.search(TRACE_START_REGEXP, result) + if data_start: + data_start = data_start.end(0) + else: + raise IOError('Unable to get atrace data. Did you forget adb root?') + output = re.sub(ADB_IGNORE_REGEXP, '', result[data_start:]) + self._stop_trace() + return output + + def _preprocess_trace_data(self, trace_data): + """Performs various processing on atrace data. + + Args: + trace_data: The raw trace data. + Returns: + The processed trace data. + """ + if trace_data: + trace_data = strip_and_decompress_trace(trace_data) + + if not trace_data: + print >> sys.stderr, ('No data was captured. Output file was not ' + 'written.') + sys.exit(1) + + if _FIX_MISSING_TGIDS: + # Gather proc data from device and patch tgids + procfs_dump = self._device_utils.RunShellCommand( + 'echo -n /proc/[0-9]*/task/[0-9]*', + shell=True, check_return=True)[0].split(' ') + pid2_tgid = extract_tgids(procfs_dump) + trace_data = fix_missing_tgids(trace_data, pid2_tgid) + + if _FIX_CIRCULAR_TRACES: + trace_data = fix_circular_traces(trace_data) + + return trace_data + +def extract_tgids(trace_lines): + """Removes the procfs dump from the given trace text + + Args: + trace_lines: The text portion of the trace + + Returns: + a map of pids to their tgid. + """ + tgid_2pid = {} + for line in trace_lines: + result = re.match('^/proc/([0-9]+)/task/([0-9]+)', line) + if result: + parent_pid, tgid = result.group(1, 2) + tgid_2pid[tgid] = parent_pid + + return tgid_2pid + + +def strip_and_decompress_trace(trace_data): + """Fixes new-lines and decompresses trace data. + + Args: + trace_data: The trace data returned by atrace. + Returns: + The decompressed trace data. + """ + # Collapse CRLFs that are added by adb shell. + if trace_data.startswith('\r\n'): + trace_data = trace_data.replace('\r\n', '\n') + elif trace_data.startswith('\r\r\n'): + # On windows, adb adds an extra '\r' character for each line. + trace_data = trace_data.replace('\r\r\n', '\n') + + # Skip the initial newline. + if trace_data[0] == '\n': + trace_data = trace_data[1:] + + if not trace_data.startswith(TRACE_TEXT_HEADER): + # No header found, so assume the data is compressed. + trace_data = zlib.decompress(trace_data) + + # Enforce Unix line-endings. + trace_data = trace_data.replace('\r', '') + + # Skip any initial newlines. + while trace_data and trace_data[0] == '\n': + trace_data = trace_data[1:] + + return trace_data + + +def fix_missing_tgids(trace_data, pid2_tgid): + """Replaces missing TGIDs from the trace data with those found in procfs + + Args: + trace_data: the atrace data + + Returns: + The updated trace data with missing TGIDs replaced with the correct TGID + """ + + def repl(m): + tid = m.group(2) + if (int(tid) > 0 and m.group(1) != '' and m.group(3) == '(-----)' + and tid in pid2_tgid): + # returns Proc_name-PID (TGID) + # Binder_2-381 (-----) becomes Binder_2-381 (128) + return m.group(1) + '-' + m.group(2) + ' ( ' + pid2_tgid[tid] + ')' + + return m.group(0) + + # matches something like: + # Binder_2-895 (-----) + trace_data = re.sub(r'^\s*(\S+)-(\d+)\s+(\(\S+\))', repl, trace_data, + flags=re.MULTILINE) + return trace_data + + +def fix_circular_traces(out): + """Fix inconsistentcies in traces due to circular buffering. + + The circular buffers are kept per CPU, so it is not guaranteed that the + beginning of a slice is overwritten before the end. To work around this, we + throw away the prefix of the trace where not all CPUs have events yet. + + Args: + out: The data to fix. + Returns: + The updated trace data. + """ + # If any of the CPU's buffers have filled up and + # older events have been dropped, the kernel + # emits markers of the form '##### CPU 2 buffer started ####' on + # the line before the first event in the trace on that CPU. + # + # No such headers are emitted if there were no overflows or the trace + # was captured with non-circular buffers. + buffer_start_re = re.compile(r'^#+ CPU \d+ buffer started', re.MULTILINE) + + start_of_full_trace = 0 + + while True: + result = buffer_start_re.search(out, start_of_full_trace + 1) + if result: + start_of_full_trace = result.start() + else: + break + + if start_of_full_trace > 0: + # Need to keep the header intact to make the importer happy. + end_of_header = re.search(r'^[^#]', out, re.MULTILINE).start() + out = out[:end_of_header] + out[start_of_full_trace:] + return out + + +class AtraceConfig(tracing_agents.TracingConfig): + def __init__(self, atrace_categories, trace_buf_size, kfuncs, + app_name, compress_trace_data, from_file, + device_serial_number, trace_time, target): + tracing_agents.TracingConfig.__init__(self) + self.atrace_categories = atrace_categories + self.trace_buf_size = trace_buf_size + self.kfuncs = kfuncs + self.app_name = app_name + self.compress_trace_data = compress_trace_data + self.from_file = from_file + self.device_serial_number = device_serial_number + self.trace_time = trace_time + self.target = target + + +def add_options(parser): + options = optparse.OptionGroup(parser, 'Atrace options') + options.add_option('--atrace-categories', dest='atrace_categories', + help='Select atrace categories with a comma-delimited ' + 'list, e.g. --atrace-categories=cat1,cat2,cat3') + options.add_option('-k', '--ktrace', dest='kfuncs', action='store', + help='specify a comma-separated list of kernel functions ' + 'to trace') + options.add_option('--no-compress', dest='compress_trace_data', + default=True, action='store_false', + help='Tell the device not to send the trace data in ' + 'compressed form.') + options.add_option('-a', '--app', dest='app_name', default=None, + type='string', action='store', + help='enable application-level tracing for ' + 'comma-separated list of app cmdlines') + options.add_option('--from-file', dest='from_file', + action='store', help='read the trace from a ' + 'file (compressed) rather than running a ' + 'live trace') + return options + +def get_config(options): + return AtraceConfig(options.atrace_categories, + options.trace_buf_size, options.kfuncs, + options.app_name, options.compress_trace_data, + options.from_file, options.device_serial_number, + options.trace_time, options.target) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/atrace_agent_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/atrace_agent_unittest.py new file mode 100644 index 0000000..9ccc6e3 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/atrace_agent_unittest.py @@ -0,0 +1,132 @@ +#!/usr/bin/env python + +# Copyright (c) 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import contextlib +import logging +import os +import unittest + +from systrace import decorators +from systrace import run_systrace +from systrace import util +from systrace.tracing_agents import atrace_agent + +from devil.android import device_utils +from devil.android.sdk import intent + + +DEVICE_SERIAL = 'AG8404EC0444AGC' +ATRACE_ARGS = ['atrace', '-z', '-t', '10', '-b', '4096'] +CATEGORIES = ['sched', 'gfx', 'view', 'wm'] +ADB_SHELL = ['adb', '-s', DEVICE_SERIAL, 'shell'] + +SYSTRACE_CMD = ['./run_systrace.py', '--time', '10', '-o', 'out.html', '-e', + DEVICE_SERIAL] + CATEGORIES +TRACE_ARGS = (ATRACE_ARGS + CATEGORIES) + +TEST_DIR = os.path.join(os.path.dirname(__file__), os.pardir, 'test_data') +ATRACE_DATA = os.path.join(TEST_DIR, 'atrace_data') +ATRACE_DATA_RAW = os.path.join(TEST_DIR, 'atrace_data_raw') +ATRACE_DATA_STRIPPED = os.path.join(TEST_DIR, 'atrace_data_stripped') +ATRACE_PROCFS_DUMP = os.path.join(TEST_DIR, 'atrace_procfs_dump') +ATRACE_EXTRACTED_TGIDS = os.path.join(TEST_DIR, 'atrace_extracted_tgids') +ATRACE_MISSING_TGIDS = os.path.join(TEST_DIR, 'atrace_missing_tgids') +ATRACE_FIXED_TGIDS = os.path.join(TEST_DIR, 'atrace_fixed_tgids') + + +class AtraceAgentTest(unittest.TestCase): + + # TODO(washingtonp): These end-to-end tests do not work on the Trybot server + # because adb cannot be found on the Trybot servers. Figure out what the + # issue is and update this test. + @decorators.Disabled + def test_tracing(self): + TRACE_BUFFER_SIZE = '16384' + TRACE_TIME = '5' + + devices = device_utils.DeviceUtils.HealthyDevices() + package_info = util.get_supported_browsers()['stable'] + device = devices[0] + output_file_name = util.generate_random_filename_for_test() + + try: + # Launch the browser before tracing. + device.StartActivity( + intent.Intent(activity=package_info.activity, + package=package_info.package, + data='about:blank', + extras={'create_new_tab': True}), + blocking=True, force_stop=True) + + # Run atrace agent. + run_systrace.main_impl(['./run_systrace.py', + '-b', + TRACE_BUFFER_SIZE, + '-t', + TRACE_TIME, + '-o', + output_file_name, + '-e', + str(device), + '--atrace-categories=gfx,input,view']) + + # Verify results. + with open(output_file_name, 'r') as f: + full_trace = f.read() + self.assertTrue('CPU#'in full_trace) + except: + raise + finally: + if os.path.exists(output_file_name): + os.remove(output_file_name) + + @decorators.HostOnlyTest + def test_construct_atrace_args(self): + options, categories = run_systrace.parse_options(SYSTRACE_CMD) + options.atrace_categories = categories + tracer_args = atrace_agent._construct_atrace_args(options, categories) + self.assertEqual(' '.join(TRACE_ARGS), ' '.join(tracer_args)) + + @decorators.HostOnlyTest + def test_strip_and_decompress_trace(self): + with contextlib.nested(open(ATRACE_DATA_RAW, 'r'), + open(ATRACE_DATA_STRIPPED, 'r')) as (f1, f2): + atrace_data_raw = f1.read() + atrace_data_stripped = f2.read() + + trace_data = atrace_agent.strip_and_decompress_trace(atrace_data_raw) + self.assertEqual(atrace_data_stripped, trace_data) + + @decorators.HostOnlyTest + def test_extract_tgids(self): + with contextlib.nested(open(ATRACE_PROCFS_DUMP, 'r'), + open(ATRACE_EXTRACTED_TGIDS, 'r')) as (f1, f2): + + atrace_procfs_dump = f1.read() + atrace_procfs_extracted = f2.read() + + tgids = eval(atrace_procfs_extracted) + result = atrace_agent.extract_tgids(atrace_procfs_dump.splitlines()) + + self.assertEqual(result, tgids) + + @decorators.HostOnlyTest + def test_fix_missing_tgids(self): + with contextlib.nested(open(ATRACE_EXTRACTED_TGIDS, 'r'), + open(ATRACE_MISSING_TGIDS, 'r'), + open(ATRACE_FIXED_TGIDS, 'r')) as (f1, f2, f3): + + atrace_data = f2.read() + tgid_map = eval(f1.read()) + fixed = f3.read() + + res = atrace_agent.fix_missing_tgids(atrace_data, tgid_map) + self.assertEqual(res, fixed) + + +if __name__ == "__main__": + logging.getLogger().setLevel(logging.DEBUG) + unittest.main(verbosity=2) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/atrace_from_file_agent.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/atrace_from_file_agent.py new file mode 100644 index 0000000..2a4e781 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/atrace_from_file_agent.py @@ -0,0 +1,81 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import py_utils +import re + +from systrace import trace_result +from systrace import tracing_agents +from systrace.tracing_agents import atrace_agent + + +# ADB sends this text to indicate the beginning of the trace data. +TRACE_START_REGEXP = r'TRACE\:' +# Text that ADB sends, but does not need to be displayed to the user. +ADB_IGNORE_REGEXP = r'^capturing trace\.\.\. done|^capturing trace\.\.\.' + + +def try_create_agent(options): + if options.from_file is not None: + return AtraceFromFileAgent(options) + else: + return False + + +class AtraceFromFileConfig(tracing_agents.TracingConfig): + def __init__(self, from_file): + tracing_agents.TracingConfig.__init__(self) + self.fix_circular = True + self.from_file = from_file + +def add_options(parser): # pylint: disable=unused-argument + # The atrace_from_file_agent is not currently used, so don't display + # any options. + return None + +def get_config(options): + return AtraceFromFileConfig(options.from_file) + + +class AtraceFromFileAgent(tracing_agents.TracingAgent): + def __init__(self, options): + super(AtraceFromFileAgent, self).__init__() + self._filename = os.path.expanduser(options.from_file) + self._trace_data = False + + @py_utils.Timeout(tracing_agents.START_STOP_TIMEOUT) + def StartAgentTracing(self, config, timeout=None): + # pylint: disable=unused-argument + return True + + @py_utils.Timeout(tracing_agents.START_STOP_TIMEOUT) + def StopAgentTracing(self, timeout=None): + self._trace_data = self._read_trace_data() + return True + + def SupportsExplicitClockSync(self): + return False + + def RecordClockSyncMarker(self, sync_id, did_record_clock_sync_callback): + raise NotImplementedError + + @py_utils.Timeout(tracing_agents.GET_RESULTS_TIMEOUT) + def GetResults(self, timeout=None): + return trace_result.TraceResult('trace-data', self._trace_data) + + def _read_trace_data(self): + with open(self._filename, 'rb') as f: + result = f.read() + data_start = re.search(TRACE_START_REGEXP, result).end(0) + data = re.sub(ADB_IGNORE_REGEXP, '', result[data_start:]) + return self._preprocess_data(data) + + # pylint: disable=no-self-use + def _preprocess_data(self, data): + # TODO: add fix_threads and fix_tgids options back in here + # once we embed the dump data in the file (b/27504068) + data = atrace_agent.strip_and_decompress_trace(data) + data = atrace_agent.fix_circular_traces(data) + return data diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/atrace_from_file_agent_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/atrace_from_file_agent_unittest.py new file mode 100644 index 0000000..2531c91 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/atrace_from_file_agent_unittest.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python + +# Copyright (c) 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import contextlib +import os +import unittest + +from systrace import decorators +from systrace import run_systrace +from systrace import update_systrace_trace_viewer +from systrace import util + +TEST_DIR = os.path.join(os.path.dirname(__file__), '..', 'test_data') + +COMPRESSED_ATRACE_DATA = os.path.join(TEST_DIR, 'compressed_atrace_data.txt') +DECOMPRESSED_ATRACE_DATA = os.path.join(TEST_DIR, + 'decompressed_atrace_data.txt') +NON_EXISTENT_DATA = os.path.join(TEST_DIR, 'THIS_FILE_DOES_NOT_EXIST.txt') + +class AtraceFromFileAgentTest(unittest.TestCase): + @decorators.HostOnlyTest + def test_from_file(self): + update_systrace_trace_viewer.update(force_update=True) + self.assertTrue(os.path.exists( + update_systrace_trace_viewer.SYSTRACE_TRACE_VIEWER_HTML_FILE)) + output_file_name = util.generate_random_filename_for_test() + try: + # use from-file to create a specific expected output + run_systrace.main_impl(['./run_systrace.py', + '--from-file', + COMPRESSED_ATRACE_DATA, + '-o', + output_file_name]) + # and verify file contents + with contextlib.nested(open(output_file_name, 'r'), + open(DECOMPRESSED_ATRACE_DATA, 'r')) as (f1, f2): + full_trace = f1.read() + expected_contents = f2.read() + self.assertTrue(expected_contents in full_trace) + except: + raise + finally: + os.remove(update_systrace_trace_viewer.SYSTRACE_TRACE_VIEWER_HTML_FILE) + if os.path.exists(output_file_name): + os.remove(output_file_name) + + + @decorators.HostOnlyTest + def test_missing_file(self): + try: + run_systrace.main_impl(['./run_systrace.py', + '--from-file', + NON_EXISTENT_DATA]) + self.fail('should not get here') + except IOError: + pass diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/battor_trace_agent.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/battor_trace_agent.py new file mode 100644 index 0000000..a48ea87 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/battor_trace_agent.py @@ -0,0 +1,165 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import atexit +import logging +import optparse +import py_utils + +from battor import battor_wrapper +from devil.android import battery_utils +from devil.android import device_utils +from devil.utils import battor_device_mapping +from devil.utils import find_usb_devices +from py_trace_event import trace_time +from systrace import trace_result +from systrace import tracing_agents + + +def try_create_agent(config): + if config.from_file is not None: + return None + if config.battor: + return BattOrTraceAgent() + return None + + +class BattOrConfig(tracing_agents.TracingConfig): + def __init__(self, battor_categories, serial_map, battor_path, + battor, target, from_file, device_serial_number): + tracing_agents.TracingConfig.__init__(self) + self.battor_categories = battor_categories + self.serial_map = serial_map + self.battor_path = battor_path + self.battor = battor + self.target = target + self.from_file = from_file + self.device_serial_number = device_serial_number + + +def add_options(parser): + options = optparse.OptionGroup(parser, 'BattOr trace options') + options.add_option('--battor-categories', dest='battor_categories', + help='Select battor categories with a comma-delimited ' + 'list, e.g. --battor-categories=cat1,cat2,cat3') + options.add_option('--serial-map', dest='serial_map', + default='serial_map.json', + help='File containing pregenerated map of phone serial ' + 'numbers to BattOr serial numbers.') + options.add_option('--battor-path', dest='battor_path', default=None, + type='string', help='specify a BattOr path to use') + options.add_option('--battor', dest='battor', default=False, + action='store_true', help='Use the BattOr tracing agent.') + return options + +def get_config(options): + return BattOrConfig( + options.battor_categories, options.serial_map, options.battor_path, + options.battor, options.target, options.from_file, + options.device_serial_number) + +def _reenable_charging_if_needed(battery): + if not battery.GetCharging(): + battery.SetCharging(True) + logging.info('Charging status checked at exit.') + + +class BattOrTraceAgent(tracing_agents.TracingAgent): + # Class representing tracing agent that gets data from a BattOr. + # BattOrs are high-frequency power monitors used for battery testing. + def __init__(self): + super(BattOrTraceAgent, self).__init__() + self._collection_process = None + self._recording_error = None + self._battor_wrapper = None + self._battery_utils = None + + @staticmethod + def _FindBattOrPath(config): + device_tree = find_usb_devices.GetBusNumberToDeviceTreeMap() + battors = battor_device_mapping.GetBattOrList(device_tree) + battor_path = config.battor_path + if not config.battor_path and not config.serial_map: + assert len(battors) == 1, ('Must specify BattOr path if there is not ' + 'exactly one') + battor_path = battors[0] + return battor_path + + @py_utils.Timeout(tracing_agents.START_STOP_TIMEOUT) + def StartAgentTracing(self, config, timeout=None): + """Starts tracing. + + Args: + config: Tracing config. + + Raises: + RuntimeError: If trace already in progress. + AssertionError: If There is no BattOr path given and more + than one BattOr is attached. + """ + battor_path = self._FindBattOrPath(config) + self._battor_wrapper = battor_wrapper.BattOrWrapper( + target_platform=config.target, + android_device=config.device_serial_number, + battor_path=battor_path, + battor_map_file=config.serial_map) + + dev_utils = device_utils.DeviceUtils(config.device_serial_number) + self._battery_utils = battery_utils.BatteryUtils(dev_utils) + self._battery_utils.SetCharging(False) + atexit.register(_reenable_charging_if_needed, self._battery_utils) + self._battor_wrapper.StartShell() + self._battor_wrapper.StartTracing() + return True + + @py_utils.Timeout(tracing_agents.START_STOP_TIMEOUT) + def StopAgentTracing(self, timeout=None): + """Stops tracing and collects the results asynchronously. + + Creates a new process that stops the tracing and collects the results. + Returns immediately after the process is created (does not wait for + trace results to be collected). + """ + self._battor_wrapper.StopTracing() + self._battery_utils.SetCharging(True) + return True + + def SupportsExplicitClockSync(self): + """Returns whether this function supports explicit clock sync.""" + return self._battor_wrapper.SupportsExplicitClockSync() + + def RecordClockSyncMarker(self, sync_id, did_record_sync_marker_callback): + """Records a clock sync marker. + + Args: + sync_id: ID string for clock sync marker. + did_record_sync_marker_callback: Callback function to call after + the clock sync marker is recorded. + """ + ts = trace_time.Now() + self._battor_wrapper.RecordClockSyncMarker(sync_id) + did_record_sync_marker_callback(ts, sync_id) + + @py_utils.Timeout(tracing_agents.GET_RESULTS_TIMEOUT) + def GetResults(self, timeout=None): + """Waits until data collection is completed and get the trace data. + + The trace data is the data that comes out of the BattOr, and is in the + format with the following lines: + + time current voltage + + where the sync_id is only there if a clock sync marker was recorded + during that sample. + + time = time since start of trace (ms) + current = current through battery (mA) - this can be negative if the + battery is charging + voltage = voltage of battery (mV) + + Returns: + The trace data. + """ + return trace_result.TraceResult( + 'powerTraceAsString', self._battor_wrapper.CollectTraceData()) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/battor_trace_agent_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/battor_trace_agent_unittest.py new file mode 100644 index 0000000..6347161 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/battor_trace_agent_unittest.py @@ -0,0 +1,182 @@ +#!/usr/bin/env python + +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +from collections import namedtuple +import unittest +import logging + +from systrace import decorators +from systrace.tracing_agents import battor_trace_agent +from battor import battor_wrapper +from devil.android import battery_utils +from devil.utils import battor_device_mapping +from devil.utils import find_usb_devices + + +mock_opts = namedtuple('mock_opts', ['target', 'device_serial_number', + 'battor_path', 'serial_map']) +OPTIONS = mock_opts('android', 'Phn2', None, __file__) +CATEGORIES = None +_DEFAULT_BATTOR_LIST = ['dev/ttyUSB0'] + +def raise_error(*args, **kwargs): + del args + del kwargs + raise RuntimeError('Should not call this function in the test') + +battor_device_mapping.GenerateSerialMapFile = raise_error + +def setup_battor_test(StartShell_error, StartTracing_error, + StopTracing_error, CollectTraceData_error, + battor_paths=None): + wrapper = MockBattOrWrapper(StartShell_error, StartTracing_error, + StopTracing_error, CollectTraceData_error) + def wrapper_maker(*args, **kwargs): + del args + del kwargs + return wrapper + battor_wrapper.BattOrWrapper = wrapper_maker + find_usb_devices.GetBusNumberToDeviceTreeMap = lambda: None + if battor_paths is None: + battor_paths = _DEFAULT_BATTOR_LIST + battor_device_mapping.GetBattOrList = lambda x: battor_paths + + +class MockBattOrWrapper(object): + def __init__(self, StartShell_error=False, StartTracing_error=False, + StopTracing_error=False, CollectTraceData_error=False): + self._StartShell_error = StartShell_error + self._StartTracing_error = StartTracing_error + self._StopTracing_error = StopTracing_error + self._CollectTraceData_error = CollectTraceData_error + self._running = False + self._tracing = False + self._output = False + + def IsShellRunning(self): + return self._running + + def StartShell(self): + assert not self._running + if self._StartShell_error: + raise RuntimeError('Simulated error in StartShell') + self._running = True + + def StartTracing(self): + assert self._running + assert not self._tracing + if self._StartTracing_error: + raise RuntimeError('Simulated error in StartTracing') + self._tracing = True + + def StopTracing(self): + assert self._running + assert self._tracing + if self._StopTracing_error: + raise RuntimeError('Simulated error in StopTracing') + self._running = False + self._tracing = False + self._output = True + + def CollectTraceData(self): + assert self._output + if self._CollectTraceData_error: + raise RuntimeError('Simulated error in CollectTraceData') + return 'traceout1\ntraceout2' + + +class MockBatteryUtils(object): + def __init__(self, _): + self._is_charging = True + + def GetCharging(self): + return self._is_charging + + def SetCharging(self, value): + self._is_charging = value + + +battery_utils.BatteryUtils = MockBatteryUtils + + +class BattOrAgentTest(unittest.TestCase): + + @decorators.HostOnlyTest + def test_trace_double_start(self): + setup_battor_test(StartShell_error=False, StartTracing_error=False, + StopTracing_error=False, CollectTraceData_error=False) + agent = battor_trace_agent.BattOrTraceAgent() + agent.StartAgentTracing(OPTIONS, CATEGORIES) + self.assertRaises(AssertionError, + lambda: agent.StartAgentTracing(OPTIONS, CATEGORIES)) + + @decorators.HostOnlyTest + def test_trace_error_start_shell(self): + setup_battor_test(StartShell_error=True, StartTracing_error=False, + StopTracing_error=False, CollectTraceData_error=False) + agent = battor_trace_agent.BattOrTraceAgent() + self.assertRaises(RuntimeError, + lambda: agent.StartAgentTracing(OPTIONS, CATEGORIES)) + + @decorators.HostOnlyTest + def test_trace_error_start_tracing(self): + setup_battor_test(StartShell_error=False, StartTracing_error=True, + StopTracing_error=False, CollectTraceData_error=False) + agent = battor_trace_agent.BattOrTraceAgent() + self.assertRaises(RuntimeError, + lambda: agent.StartAgentTracing(OPTIONS, CATEGORIES)) + + @decorators.HostOnlyTest + def test_trace_error_stop_tracing(self): + setup_battor_test(StartShell_error=False, StartTracing_error=False, + StopTracing_error=True, CollectTraceData_error=False) + agent = battor_trace_agent.BattOrTraceAgent() + agent.StartAgentTracing(OPTIONS, CATEGORIES) + self.assertRaises(RuntimeError, agent.StopAgentTracing) + + @decorators.HostOnlyTest + def test_trace_error_get_results(self): + setup_battor_test(StartShell_error=False, StartTracing_error=False, + StopTracing_error=False, CollectTraceData_error=True) + agent = battor_trace_agent.BattOrTraceAgent() + agent.StartAgentTracing(OPTIONS, CATEGORIES) + agent.StopAgentTracing() + self.assertRaises(RuntimeError, agent.GetResults) + + @decorators.HostOnlyTest + def test_trace_complete(self): + setup_battor_test(StartShell_error=False, StartTracing_error=False, + StopTracing_error=False, CollectTraceData_error=False) + agent = battor_trace_agent.BattOrTraceAgent() + agent.StartAgentTracing(OPTIONS, CATEGORIES) + agent.StopAgentTracing() + x = agent.GetResults() + self.assertEqual(x.raw_data, 'traceout1\ntraceout2') + + @decorators.HostOnlyTest + def test_trace_error_no_battor(self): + setup_battor_test(StartShell_error=False, StartTracing_error=False, + StopTracing_error=False, CollectTraceData_error=False, + battor_paths=[]) + agent = battor_trace_agent.BattOrTraceAgent() + options = mock_opts('android', 'Phn2', None, None) + with self.assertRaises(AssertionError): + agent.StartAgentTracing(options, CATEGORIES) + + @decorators.HostOnlyTest + def test_trace_error_multiple_battors_no_battor_path(self): + setup_battor_test(StartShell_error=False, StartTracing_error=False, + StopTracing_error=False, CollectTraceData_error=False, + battor_paths=['a', 'b']) + agent = battor_trace_agent.BattOrTraceAgent() + options = mock_opts('android', 'Phn2', None, None) + with self.assertRaises(AssertionError): + agent.StartAgentTracing(options, CATEGORIES) + + +if __name__ == "__main__": + logging.getLogger().setLevel(logging.DEBUG) + unittest.main(verbosity=2) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/ftrace_agent.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/ftrace_agent.py new file mode 100644 index 0000000..cb1e7e1 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/ftrace_agent.py @@ -0,0 +1,257 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import optparse +import os +import py_utils + +from systrace import trace_result +from systrace import tracing_agents + + +class FtraceAgentIo(object): + @staticmethod + def writeFile(path, data): + if FtraceAgentIo.haveWritePermissions(path): + with open(path, 'w') as f: + f.write(data) + else: + raise IOError('Cannot write to %s; did you forget sudo/root?' % path) + + @staticmethod + def readFile(path): + with open(path, 'r') as f: + return f.read() + + @staticmethod + def haveWritePermissions(path): + return os.access(path, os.W_OK) + + +FT_DIR = "/sys/kernel/debug/tracing/" +FT_CLOCK = FT_DIR + "trace_clock" +FT_BUFFER_SIZE = FT_DIR + "buffer_size_kb" +FT_TRACER = FT_DIR + "current_tracer" +FT_PRINT_TGID = FT_DIR + "options/print-tgid" +FT_TRACE_ON = FT_DIR + "tracing_on" +FT_TRACE = FT_DIR + "trace" +FT_TRACE_MARKER = FT_DIR + "trace_marker" +FT_OVERWRITE = FT_DIR + "options/overwrite" + +all_categories = { + "sched": { + "desc": "CPU Scheduling", + "req": ["sched/sched_switch/", "sched/sched_wakeup/"] + }, + "freq": { + "desc": "CPU Frequency", + "req": ["power/cpu_frequency/", "power/clock_set_rate/"] + }, + "irq": { + "desc": "CPU IRQS and IPIS", + "req": ["irq/"], + "opt": ["ipi/"] + }, + "workq": { + "desc": "Kernel workqueues", + "req": ["workqueue/"] + }, + "memreclaim": { + "desc": "Kernel Memory Reclaim", + "req": ["vmscan/mm_vmscan_direct_reclaim_begin/", + "vmscan/mm_vmscan_direct_reclaim_end/", + "vmscan/mm_vmscan_kswapd_wake/", + "vmscan/mm_vmscan_kswapd_sleep/"] + }, + "idle": { + "desc": "CPU Idle", + "req": ["power/cpu_idle/"] + }, + "regulators": { + "desc": "Voltage and Current Regulators", + "req": ["regulator/"] + }, + "disk": { + "desc": "Disk I/O", + "req": ["block/block_rq_issue/", + "block/block_rq_complete/"], + "opt": ["f2fs/f2fs_sync_file_enter/", + "f2fs/f2fs_sync_file_exit/", + "f2fs/f2fs_write_begin/", + "f2fs/f2fs_write_end/", + "ext4/ext4_da_write_begin/", + "ext4/ext4_da_write_end/", + "ext4/ext4_sync_file_enter/", + "ext4/ext4_sync_file_exit/"] + } +} + + +def try_create_agent(config): + if config.target != 'linux': + return None + return FtraceAgent(FtraceAgentIo) + + +def list_categories(_): + agent = FtraceAgent(FtraceAgentIo) + agent._print_avail_categories() + + +class FtraceConfig(tracing_agents.TracingConfig): + def __init__(self, ftrace_categories, target, trace_buf_size): + tracing_agents.TracingConfig.__init__(self) + self.ftrace_categories = ftrace_categories + self.target = target + self.trace_buf_size = trace_buf_size + + +def add_options(parser): + options = optparse.OptionGroup(parser, 'Ftrace options') + options.add_option('--ftrace-categories', dest='ftrace_categories', + help='Select ftrace categories with a comma-delimited ' + 'list, e.g. --ftrace-categories=cat1,cat2,cat3') + return options + + +def get_config(options): + return FtraceConfig(options.ftrace_categories, options.target, + options.trace_buf_size) + + +class FtraceAgent(tracing_agents.TracingAgent): + + def __init__(self, fio=FtraceAgentIo): + """Initialize a systrace agent. + + Args: + config: The command-line config. + categories: The trace categories to capture. + """ + super(FtraceAgent, self).__init__() + self._fio = fio + self._config = None + self._categories = None + + def _get_trace_buffer_size(self): + buffer_size = 4096 + if ((self._config.trace_buf_size is not None) + and (self._config.trace_buf_size > 0)): + buffer_size = self._config.trace_buf_size + return buffer_size + + def _fix_categories(self, categories): + """ + Applies the default category (sched) if there are no categories + in the list and removes unavailable categories from the list. + Args: + categories: List of categories. + """ + if not categories: + categories = ["sched"] + return [x for x in categories + if self._is_category_available(x)] + + @py_utils.Timeout(tracing_agents.START_STOP_TIMEOUT) + def StartAgentTracing(self, config, timeout=None): + """Start tracing. + """ + self._config = config + categories = self._fix_categories(config.ftrace_categories) + self._fio.writeFile(FT_BUFFER_SIZE, + str(self._get_trace_buffer_size())) + self._fio.writeFile(FT_CLOCK, 'global') + self._fio.writeFile(FT_TRACER, 'nop') + self._fio.writeFile(FT_OVERWRITE, "0") + + # TODO: riandrews to push necessary patches for TGID option to upstream + # linux kernel + # self._fio.writeFile(FT_PRINT_TGID, '1') + + for category in categories: + self._category_enable(category) + + self._categories = categories # need to store list of categories to disable + print 'starting tracing.' + + self._fio.writeFile(FT_TRACE, '') + self._fio.writeFile(FT_TRACE_ON, '1') + return True + + @py_utils.Timeout(tracing_agents.START_STOP_TIMEOUT) + def StopAgentTracing(self, timeout=None): + """Collect the result of tracing. + + This function will block while collecting the result. For sync mode, it + reads the data, e.g., from stdout, until it finishes. For async mode, it + blocks until the agent is stopped and the data is ready. + """ + self._fio.writeFile(FT_TRACE_ON, '0') + for category in self._categories: + self._category_disable(category) + return True + + @py_utils.Timeout(tracing_agents.GET_RESULTS_TIMEOUT) + def GetResults(self, timeout=None): + # get the output + d = self._fio.readFile(FT_TRACE) + self._fio.writeFile(FT_BUFFER_SIZE, "1") + return trace_result.TraceResult('trace-data', d) + + def SupportsExplicitClockSync(self): + return False + + def RecordClockSyncMarker(self, sync_id, did_record_sync_marker_callback): + # No implementation, but need to have this to support the API + # pylint: disable=unused-argument + return False + + def _is_category_available(self, category): + if category not in all_categories: + return False + events_dir = FT_DIR + "events/" + req_events = all_categories[category]["req"] + for event in req_events: + event_full_path = events_dir + event + "enable" + if not self._fio.haveWritePermissions(event_full_path): + return False + return True + + def _avail_categories(self): + ret = [] + for event in all_categories: + if self._is_category_available(event): + ret.append(event) + return ret + + def _print_avail_categories(self): + avail = self._avail_categories() + if len(avail): + print "tracing config:" + for category in self._avail_categories(): + desc = all_categories[category]["desc"] + print "{0: <16}".format(category), ": ", desc + else: + print "No tracing categories available - perhaps you need root?" + + def _category_enable_paths(self, category): + events_dir = FT_DIR + "events/" + req_events = all_categories[category]["req"] + for event in req_events: + event_full_path = events_dir + event + "enable" + yield event_full_path + if "opt" in all_categories[category]: + opt_events = all_categories[category]["opt"] + for event in opt_events: + event_full_path = events_dir + event + "enable" + if self._fio.haveWritePermissions(event_full_path): + yield event_full_path + + def _category_enable(self, category): + for path in self._category_enable_paths(category): + self._fio.writeFile(path, "1") + + def _category_disable(self, category): + for path in self._category_enable_paths(category): + self._fio.writeFile(path, "0") diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/ftrace_agent_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/ftrace_agent_unittest.py new file mode 100644 index 0000000..fdc54cd --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/ftrace_agent_unittest.py @@ -0,0 +1,143 @@ +#!/usr/bin/env python + +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import unittest +import logging + +from systrace import decorators +from systrace import run_systrace +from systrace.tracing_agents import ftrace_agent + + +SYSTRACE_HOST_CMD_DEFAULT = ['./systrace.py', '--target=linux'] +FT_DIR = "/sys/kernel/debug/tracing/" +FT_EVENT_DIR = FT_DIR + "events/" +FT_TRACE_ON = FT_DIR + "tracing_on" +FT_TRACE = FT_DIR + "trace" +FT_BUFFER_SIZE = FT_DIR + "buffer_size_kb" + + +def make_test_io_interface(permitted_files): + class TestIoImpl(object): + + @staticmethod + def writeFile(path, data): + permitted_files[path] = data + + @staticmethod + def readFile(path): + if path in permitted_files: + return permitted_files[path] + else: + return "" + + @staticmethod + def haveWritePermissions(path): + return path in permitted_files + + return TestIoImpl + + +class FtraceAgentTest(unittest.TestCase): + + @decorators.HostOnlyTest + def test_avail_categories(self): + # sched only has required events + permitted_files = { + FT_EVENT_DIR + "sched/sched_switch/enable": "0", + FT_EVENT_DIR + "sched/sched_wakeup/enable": "0" + } + io_interface = make_test_io_interface(permitted_files) + agent = ftrace_agent.FtraceAgent(io_interface) + self.assertEqual(['sched'], agent._avail_categories()) + + # check for no available categories + permitted_files = {} + io_interface = make_test_io_interface(permitted_files) + agent = ftrace_agent.FtraceAgent(io_interface) + self.assertEqual([], agent._avail_categories()) + + # block has some required, some optional events + permitted_files = { + FT_EVENT_DIR + "block/block_rq_complete/enable": "0", + FT_EVENT_DIR + "block/block_rq_issue/enable": "0" + } + io_interface = make_test_io_interface(permitted_files) + agent = ftrace_agent.FtraceAgent(io_interface) + self.assertEqual(['disk'], agent._avail_categories()) + + @decorators.HostOnlyTest + def test_tracing_bootstrap(self): + workq_event_path = FT_EVENT_DIR + "workqueue/enable" + permitted_files = { + workq_event_path: "0", + FT_TRACE: "x" + } + io_interface = make_test_io_interface(permitted_files) + systrace_cmd = SYSTRACE_HOST_CMD_DEFAULT + ["workq"] + options, categories = run_systrace.parse_options(systrace_cmd) + agent = ftrace_agent.FtraceAgent(io_interface) + self.assertEqual(['workq'], agent._avail_categories()) + + # confirm tracing is enabled, buffer is cleared + agent.StartAgentTracing(options, categories) + self.assertEqual(permitted_files[FT_TRACE_ON], "1") + self.assertEqual(permitted_files[FT_TRACE], "") + + # fill in file with dummy contents + dummy_trace = "trace_contents" + permitted_files[FT_TRACE] = dummy_trace + + # confirm tracing is disabled + agent.StopAgentTracing() + agent.GetResults() + self.assertEqual(permitted_files[FT_TRACE_ON], "0") + + # confirm trace is expected, and read from fs + self.assertEqual(agent.GetResults().raw_data, dummy_trace) + + # confirm buffer size is reset to 1 + self.assertEqual(permitted_files[FT_BUFFER_SIZE], "1") + + @decorators.HostOnlyTest + def test_tracing_event_enable_disable(self): + # turn on irq tracing + ipi_event_path = FT_EVENT_DIR + "ipi/enable" + irq_event_path = FT_EVENT_DIR + "irq/enable" + permitted_files = { + ipi_event_path: "0", + irq_event_path: "0" + } + io_interface = make_test_io_interface(permitted_files) + systrace_cmd = SYSTRACE_HOST_CMD_DEFAULT + ["irq"] + options, categories = run_systrace.parse_options(systrace_cmd) + options.ftrace_categories = categories + agent = ftrace_agent.FtraceAgent(io_interface) + self.assertEqual(['irq'], agent._avail_categories()) + + # confirm all the event nodes are turned on during tracing + agent.StartAgentTracing(options) + self.assertEqual(permitted_files[irq_event_path], "1") + self.assertEqual(permitted_files[ipi_event_path], "1") + + # and then turned off when completed. + agent.StopAgentTracing() + agent.GetResults() + self.assertEqual(permitted_files[irq_event_path], "0") + self.assertEqual(permitted_files[ipi_event_path], "0") + + @decorators.HostOnlyTest + def test_buffer_size(self): + systrace_cmd = SYSTRACE_HOST_CMD_DEFAULT + ['-b', '16000'] + options, categories = run_systrace.parse_options(systrace_cmd) + agent = ftrace_agent.FtraceAgent() + agent._config = options + agent._config.atrace_categories = categories + self.assertEqual(agent._get_trace_buffer_size(), 16000) + +if __name__ == "__main__": + logging.getLogger().setLevel(logging.DEBUG) + unittest.main(verbosity=2) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/walt_agent.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/walt_agent.py new file mode 100644 index 0000000..72d84b5 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/walt_agent.py @@ -0,0 +1,120 @@ +# Copyright 2017 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import py_utils +import optparse +import threading + +from devil.android import device_utils +from systrace import trace_result +from systrace import tracing_agents +from py_trace_event import trace_time as trace_time_module + +TRACE_FILE_PATH = \ + '/sdcard/Android/data/org.chromium.latency.walt/files/trace.txt' + +CLOCK_DOMAIN_MARKER = '# clock_type=LINUX_CLOCK_MONOTONIC\n' + + +def try_create_agent(options): + if options.is_walt_enabled: + return WaltAgent() + return None + + +class WaltConfig(tracing_agents.TracingConfig): + def __init__(self, device_serial_number, is_walt_enabled): + tracing_agents.TracingConfig.__init__(self) + self.device_serial_number = device_serial_number + self.is_walt_enabled = is_walt_enabled + + +def add_options(parser): + options = optparse.OptionGroup(parser, 'WALT trace options') + options.add_option('--walt', dest='is_walt_enabled', default=False, + action='store_true', help='Use the WALT tracing agent. ' + 'WALT is a device for measuring latency of physical ' + 'sensors on phones and computers. ' + 'See https://github.com/google/walt') + return options + + +def get_config(options): + return WaltConfig(options.device_serial_number, options.is_walt_enabled) + + +class WaltAgent(tracing_agents.TracingAgent): + """ + This tracing agent requires the WALT app to be installed on the Android phone, + and requires the WALT device to be attached to the phone. WALT is a device + for measuring latency of physical sensors and outputs on phones and + computers. For more information, visit https://github.com/google/walt + """ + def __init__(self): + super(WaltAgent, self).__init__() + self._trace_contents = None + self._config = None + self._device_utils = None + self._clock_sync_marker = None + self._collection_thread = None + + def __repr__(self): + return 'WaltAgent' + + @py_utils.Timeout(tracing_agents.START_STOP_TIMEOUT) + def StartAgentTracing(self, config, timeout=None): + del timeout # unused + self._config = config + self._device_utils = device_utils.DeviceUtils( + self._config.device_serial_number) + if self._device_utils.PathExists(TRACE_FILE_PATH): + # clear old trace events so they are not included in the current trace + self._device_utils.WriteFile(TRACE_FILE_PATH, '') + return True + + @py_utils.Timeout(tracing_agents.START_STOP_TIMEOUT) + def StopAgentTracing(self, timeout=None): + """Stops tracing and starts collecting results. + + To synchronously retrieve the results after calling this function, + call GetResults(). + """ + del timeout # unused + self._collection_thread = threading.Thread( + target=self._collect_trace_data) + self._collection_thread.start() + return True + + def _collect_trace_data(self): + self._trace_contents = self._device_utils.ReadFile(TRACE_FILE_PATH) + + def SupportsExplicitClockSync(self): + return True + + def RecordClockSyncMarker(self, sync_id, did_record_clock_sync_callback): + cmd = 'cat /proc/timer_list | grep now' + t1 = trace_time_module.Now() + command_result = self._device_utils.RunShellCommand(cmd, shell=True) + nsec = command_result[0].split()[2] + self._clock_sync_marker = format_clock_sync_marker(sync_id, nsec) + did_record_clock_sync_callback(t1, sync_id) + + @py_utils.Timeout(tracing_agents.GET_RESULTS_TIMEOUT) + def GetResults(self, timeout=None): + del timeout # unused + self._collection_thread.join() + self._collection_thread = None + return trace_result.TraceResult('waltTrace', self._get_trace_result()) + + def _get_trace_result(self): + result = '# tracer: \n' + CLOCK_DOMAIN_MARKER + self._trace_contents + if self._clock_sync_marker is not None: + result += self._clock_sync_marker + return result + + +def format_clock_sync_marker(sync_id, nanosec_time): + return ('<0>-0 (-----) [001] ...1 ' + str(float(nanosec_time) / 1e9) + + ': tracing_mark_write: trace_event_clock_sync: name=' + + sync_id + '\n') diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/walt_agent_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/walt_agent_unittest.py new file mode 100644 index 0000000..b4fcaf7 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_agents/walt_agent_unittest.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python + +# Copyright (c) 2017 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import logging +import unittest + +from systrace import decorators +from systrace import run_systrace +from systrace.tracing_agents import walt_agent + + +class WaltAgentTest(unittest.TestCase): + """ + The WALT agent pulls the trace log from the Android phone, and does not + communicate with the WALT device directly. This makes the agent more similar + to atrace than BattOr. Since the host only connects to the Android phone, + more exhaustive testing would require mocking DeviceUtils. + """ + + @decorators.HostOnlyTest + def test_construct_walt_args(self): + options, _ = run_systrace.parse_options(['./run_systrace.py', + '--walt']) + self.assertTrue(walt_agent.get_config(options).is_walt_enabled) + options, _ = run_systrace.parse_options(['./run_systrace.py']) + self.assertFalse(walt_agent.get_config(options).is_walt_enabled) + + @decorators.HostOnlyTest + def test_format_clock_sync_marker(self): + actual_marker = walt_agent.format_clock_sync_marker( + 'some_sync_id', 12345678901234) + expected_marker = ('<0>-0 (-----) [001] ...1 12345.6789012: ' + + 'tracing_mark_write: trace_event_clock_sync: ' + + 'name=some_sync_id\n') + self.assertEqual(actual_marker, expected_marker) + + @decorators.HostOnlyTest + def test_get_results_string(self): + agent = walt_agent.WaltAgent() + agent._trace_contents = '\n' + agent._clock_sync_marker = '\n' + result = agent._get_trace_result() + self.assertEquals(result, '# tracer: \n# clock_type=LINUX_CLOCK_MONOTONIC\n' + '\n\n') + +if __name__ == "__main__": + logging.getLogger().setLevel(logging.DEBUG) + unittest.main(verbosity=2) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_controller.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_controller.py new file mode 100644 index 0000000..d0d2d7c --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/tracing_controller.py @@ -0,0 +1,306 @@ +#!/usr/bin/env python + +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +'''Tracing controller class. This class manages +multiple tracing agents and collects data from all of them. It also +manages the clock sync process. +''' + +import ast +import json +import sys +import py_utils +import tempfile +import uuid + +from systrace import trace_result +from systrace import tracing_agents +from py_trace_event import trace_event + + +TRACE_DATA_CONTROLLER_NAME = 'systraceController' + + +def ControllerAgentClockSync(issue_ts, name): + """Record the clock sync marker for controller tracing agent. + + Unlike with the other tracing agents, the tracing controller should not + call this directly. Rather, it is called via callback from the other + tracing agents when they write a trace. + """ + trace_event.clock_sync(name, issue_ts=issue_ts) + + +class TracingControllerAgent(tracing_agents.TracingAgent): + def __init__(self): + super(TracingControllerAgent, self).__init__() + self._log_path = None + + @py_utils.Timeout(tracing_agents.START_STOP_TIMEOUT) + def StartAgentTracing(self, config, timeout=None): + """Start tracing for the controller tracing agent. + + Start tracing for the controller tracing agent. Note that + the tracing controller records the "controller side" + of the clock sync records, and nothing else. + """ + del config + if not trace_event.trace_can_enable(): + raise RuntimeError, ('Cannot enable trace_event;' + ' ensure py_utils is in PYTHONPATH') + + controller_log_file = tempfile.NamedTemporaryFile(delete=False) + self._log_path = controller_log_file.name + controller_log_file.close() + trace_event.trace_enable(self._log_path) + return True + + @py_utils.Timeout(tracing_agents.START_STOP_TIMEOUT) + def StopAgentTracing(self, timeout=None): + """Stops tracing for the controller tracing agent. + """ + # pylint: disable=no-self-use + # This function doesn't use self, but making it a member function + # for consistency with the other TracingAgents + trace_event.trace_disable() + return True + + @py_utils.Timeout(tracing_agents.GET_RESULTS_TIMEOUT) + def GetResults(self, timeout=None): + """Gets the log output from the controller tracing agent. + + This output only contains the "controller side" of the clock sync records. + """ + with open(self._log_path, 'r') as outfile: + data = ast.literal_eval(outfile.read() + ']') + # Explicitly set its own clock domain. This will stop the Systrace clock + # domain from incorrectly being collapsed into the on device clock domain. + formatted_data = { + 'traceEvents': data, + 'metadata': { + 'clock-domain': 'SYSTRACE', + } + } + return trace_result.TraceResult(TRACE_DATA_CONTROLLER_NAME, + json.dumps(formatted_data)) + + def SupportsExplicitClockSync(self): + """Returns whether this supports explicit clock sync. + Although the tracing controller conceptually supports explicit clock + sync, it is not an agent controlled by other controllers so it does not + define RecordClockSyncMarker (rather, the recording of the "controller + side" of the clock sync marker is done in _IssueClockSyncMarker). Thus, + SupportsExplicitClockSync must return false. + """ + return False + + # pylint: disable=unused-argument + def RecordClockSyncMarker(self, sync_id, callback): + raise NotImplementedError + +class TracingController(object): + def __init__(self, agents_with_config, controller_config): + """Create tracing controller. + + Create a tracing controller object. Note that the tracing + controller is also a tracing agent. + + Args: + agents_with_config: List of tracing agents for this controller with the + corresponding tracing configuration objects. + controller_config: Configuration options for the tracing controller. + """ + self._child_agents = None + self._child_agents_with_config = agents_with_config + self._controller_agent = TracingControllerAgent() + self._controller_config = controller_config + self._trace_in_progress = False + self.all_results = None + + @property + def get_child_agents(self): + return self._child_agents + + def StartTracing(self): + """Start tracing for all tracing agents. + + This function starts tracing for both the controller tracing agent + and the child tracing agents. + + Returns: + Boolean indicating whether or not the start tracing succeeded. + Start tracing is considered successful if at least the + controller tracing agent was started. + """ + assert not self._trace_in_progress, 'Trace already in progress.' + self._trace_in_progress = True + + # Start the controller tracing agents. Controller tracing agent + # must be started successfully to proceed. + if not self._controller_agent.StartAgentTracing( + self._controller_config, + timeout=self._controller_config.timeout): + print 'Unable to start controller tracing agent.' + return False + + # Start the child tracing agents. + succ_agents = [] + for agent_and_config in self._child_agents_with_config: + agent = agent_and_config.agent + config = agent_and_config.config + if agent.StartAgentTracing(config, + timeout=self._controller_config.timeout): + succ_agents.append(agent) + else: + print 'Agent %s not started.' % str(agent) + + # Print warning if all agents not started. + na = len(self._child_agents_with_config) + ns = len(succ_agents) + if ns < na: + print 'Warning: Only %d of %d tracing agents started.' % (ns, na) + self._child_agents = succ_agents + return True + + def StopTracing(self): + """Issue clock sync marker and stop tracing for all tracing agents. + + This function stops both the controller tracing agent + and the child tracing agents. It issues a clock sync marker prior + to stopping tracing. + + Returns: + Boolean indicating whether or not the stop tracing succeeded + for all agents. + """ + assert self._trace_in_progress, 'No trace in progress.' + self._trace_in_progress = False + + # Issue the clock sync marker and stop the child tracing agents. + self._IssueClockSyncMarker() + succ_agents = [] + for agent in self._child_agents: + if agent.StopAgentTracing(timeout=self._controller_config.timeout): + succ_agents.append(agent) + else: + print 'Agent %s not stopped.' % str(agent) + + # Stop the controller tracing agent. Controller tracing agent + # must be stopped successfully to proceed. + if not self._controller_agent.StopAgentTracing( + timeout=self._controller_config.timeout): + print 'Unable to stop controller tracing agent.' + return False + + # Print warning if all agents not stopped. + na = len(self._child_agents) + ns = len(succ_agents) + if ns < na: + print 'Warning: Only %d of %d tracing agents stopped.' % (ns, na) + self._child_agents = succ_agents + + # Collect the results from all the stopped tracing agents. + all_results = [] + for agent in self._child_agents + [self._controller_agent]: + try: + result = agent.GetResults( + timeout=self._controller_config.collection_timeout) + if not result: + print 'Warning: Timeout when getting results from %s.' % str(agent) + continue + if result.source_name in [r.source_name for r in all_results]: + print ('Warning: Duplicate tracing agents named %s.' % + result.source_name) + all_results.append(result) + # Check for exceptions. If any exceptions are seen, reraise and abort. + # Note that a timeout exception will be swalloed by the timeout + # mechanism and will not get to that point (it will return False instead + # of the trace result, which will be dealt with above) + except: + print 'Warning: Exception getting results from %s:' % str(agent) + print sys.exc_info()[0] + raise + self.all_results = all_results + return all_results + + def GetTraceType(self): + """Return a string representing the child agents that are being traced.""" + sorted_agents = sorted(map(str, self._child_agents)) + return ' + '.join(sorted_agents) + + def _IssueClockSyncMarker(self): + """Issue clock sync markers to all the child tracing agents.""" + for agent in self._child_agents: + if agent.SupportsExplicitClockSync(): + sync_id = GetUniqueSyncID() + agent.RecordClockSyncMarker(sync_id, ControllerAgentClockSync) + +def GetUniqueSyncID(): + """Get a unique sync ID. + + Gets a unique sync ID by generating a UUID and converting it to a string + (since UUIDs are not JSON serializable) + """ + return str(uuid.uuid4()) + + +class AgentWithConfig(object): + def __init__(self, agent, config): + self.agent = agent + self.config = config + + +def CreateAgentsWithConfig(options, modules): + """Create tracing agents. + + This function will determine which tracing agents are valid given the + options and create those agents along with their corresponding configuration + object. + Args: + options: The command-line options. + modules: The modules for either Systrace or profile_chrome. + TODO(washingtonp): After all profile_chrome agents are in + Systrace, this parameter will no longer be valid. + Returns: + A list of AgentWithConfig options containing agents and their corresponding + configuration object. + """ + result = [] + for module in modules: + config = module.get_config(options) + agent = module.try_create_agent(config) + if agent and config: + result.append(AgentWithConfig(agent, config)) + return [x for x in result if x and x.agent] + + +class TracingControllerConfig(tracing_agents.TracingConfig): + def __init__(self, output_file, trace_time, write_json, + link_assets, asset_dir, timeout, collection_timeout, + device_serial_number, target): + tracing_agents.TracingConfig.__init__(self) + self.output_file = output_file + self.trace_time = trace_time + self.write_json = write_json + self.link_assets = link_assets + self.asset_dir = asset_dir + self.timeout = timeout + self.collection_timeout = collection_timeout + self.device_serial_number = device_serial_number + self.target = target + + +def GetControllerConfig(options): + return TracingControllerConfig(options.output_file, options.trace_time, + options.write_json, + options.link_assets, options.asset_dir, + options.timeout, options.collection_timeout, + options.device_serial_number, options.target) + +def GetChromeStartupControllerConfig(options): + return TracingControllerConfig(None, options.trace_time, + options.write_json, None, None, None, None, + None, None) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/update_systrace_trace_viewer.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/update_systrace_trace_viewer.py new file mode 100644 index 0000000..c735e82 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/update_systrace_trace_viewer.py @@ -0,0 +1,119 @@ +#!/usr/bin/env python + +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import codecs +import optparse +import os +import re +import subprocess +import sys + +_CATAPULT_PATH = os.path.abspath( + os.path.join(os.path.dirname(__file__), os.path.pardir, os.path.pardir)) +sys.path.append(os.path.join(_CATAPULT_PATH, 'tracing')) + +from tracing_build import vulcanize_trace_viewer + + +SYSTRACE_TRACE_VIEWER_HTML_FILE = os.path.join( + os.path.abspath(os.path.dirname(__file__)), + 'systrace_trace_viewer.html') +CATAPULT_REV_ = 'CATAPULT_REV' +NO_AUTO_UPDATE_ = 'NO_AUTO_UPDATE' + + +def create_catapult_rev_str_(revision): + return '' + + +def get_catapult_rev_in_file_(html_file): + assert os.path.exists(html_file) + rev = '' + with open(html_file, 'r') as f: + lines = f.readlines() + for line in lines[::-1]: + if CATAPULT_REV_ in line: + tokens = line.split(CATAPULT_REV_) + rev = re.sub(r'[=\->]', '', tokens[1]).strip() + break + return rev + + +def get_catapult_rev_in_git_(): + try: + catapult_rev = subprocess.check_output( + ['git', 'rev-parse', 'HEAD'], + shell=True, # Needed by Windows + cwd=os.path.dirname(os.path.abspath(__file__))).strip() + except (subprocess.CalledProcessError, OSError): + catapult_rev = '' + if not catapult_rev: + return '' + else: + return catapult_rev + + +def update(no_auto_update=False, no_min=False, force_update=False): + """Update the systrace trace viewer html file. + + When the html file exists, do not update the file if + 1. the revision is NO_AUTO_UPDATE_; + 2. or the revision is not changed. + + Args: + no_auto_update: If true, force updating the file with revision + NO_AUTO_UPDATE_. Future updates will be skipped unless this + argument is true again. + no_min: If true, skip minification when updating the file. + force_update: If true, update the systrace trace viewer file no matter + what. + """ + new_rev = None + if not force_update: + if no_auto_update: + new_rev = NO_AUTO_UPDATE_ + else: + new_rev = get_catapult_rev_in_git_() + if not new_rev: + return + + if os.path.exists(SYSTRACE_TRACE_VIEWER_HTML_FILE): + rev_in_file = get_catapult_rev_in_file_(SYSTRACE_TRACE_VIEWER_HTML_FILE) + if rev_in_file == NO_AUTO_UPDATE_ or rev_in_file == new_rev: + return + + if force_update and not new_rev: + new_rev = "none" + + print 'Generating viewer file %s with revision %s.' % ( + SYSTRACE_TRACE_VIEWER_HTML_FILE, new_rev) + + # Generate the vulcanized result. + with codecs.open(SYSTRACE_TRACE_VIEWER_HTML_FILE, + encoding='utf-8', mode='w') as f: + vulcanize_trace_viewer.WriteTraceViewer( + f, + config_name='full', + minify=(not no_min), + output_html_head_and_body=False) + if not force_update: + f.write(create_catapult_rev_str_(new_rev)) + +def main(): + parser = optparse.OptionParser() + parser.add_option('--no-auto-update', dest='no_auto_update', + default=False, action='store_true', help='force update the ' + 'systrace trace viewer html file. Future auto updates will ' + 'be skipped unless this flag is specified again.') + parser.add_option('--no-min', dest='no_min', default=False, + action='store_true', help='skip minification') + # pylint: disable=unused-variable + options, unused_args = parser.parse_args(sys.argv[1:]) + + update(no_auto_update=options.no_auto_update, no_min=options.no_min) + +if __name__ == '__main__': + main() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/util.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/util.py new file mode 100644 index 0000000..61dc475 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/util.py @@ -0,0 +1,211 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import optparse +import os +import random +import string +import subprocess +import sys + +from devil.android.constants import chrome + +class OptionParserIgnoreErrors(optparse.OptionParser): + """Wrapper for OptionParser that ignores errors and produces no output.""" + + def error(self, msg): + pass + + def exit(self, status=0, msg=None): + pass + + def print_usage(self, out_file=None): + pass + + def print_help(self, out_file=None): + pass + + def print_version(self, out_file=None): + pass + + +def add_adb_serial(adb_command, device_serial): + """Add serial number to ADB shell command. + + ADB shell command is given as list, e.g. + ['adb','shell','some_command','some_args']. + This replaces it with: + ['adb','shell',-s',device_serial,'some_command','some_args'] + + Args: + adb_command: ADB command list. + device_serial: Device serial number. + + Returns: + ADB command list with serial number added. + """ + if device_serial is not None: + adb_command.insert(1, device_serial) + adb_command.insert(1, '-s') + + +def construct_adb_shell_command(shell_args, device_serial): + """Construct an ADB shell command with given device serial and arguments. + + Args: + shell_args: array of arguments to pass to adb shell. + device_serial: if not empty, will add the appropriate command-line + parameters so that adb targets the given device. + """ + adb_command = ['adb', 'shell', ' '.join(shell_args)] + add_adb_serial(adb_command, device_serial) + return adb_command + + +def run_adb_command(adb_command): + adb_output = [] + adb_return_code = 0 + try: + adb_output = subprocess.check_output(adb_command, stderr=subprocess.STDOUT, + shell=False, universal_newlines=True) + except OSError as error: + # This usually means that the adb executable was not found in the path. + print >> sys.stderr, ('\nThe command "%s" failed with the following error:' + % ' '.join(adb_command)) + print >> sys.stderr, ' %s' % str(error) + print >> sys.stderr, 'Is adb in your path?' + adb_return_code = error.errno + adb_output = error + except subprocess.CalledProcessError as error: + # The process exited with an error. + adb_return_code = error.returncode + adb_output = error.output + + return (adb_output, adb_return_code) + + +def run_adb_shell(shell_args, device_serial): + """Runs "adb shell" with the given arguments. + + Args: + shell_args: array of arguments to pass to adb shell. + device_serial: if not empty, will add the appropriate command-line + parameters so that adb targets the given device. + Returns: + A tuple containing the adb output (stdout & stderr) and the return code + from adb. Will exit if adb fails to start. + """ + adb_command = construct_adb_shell_command(shell_args, device_serial) + return run_adb_command(adb_command) + + +def get_device_sdk_version(): + """Uses adb to attempt to determine the SDK version of a running device.""" + + getprop_args = ['getprop', 'ro.build.version.sdk'] + + # get_device_sdk_version() is called before we even parse our command-line + # args. Therefore, parse just the device serial number part of the + # command-line so we can send the adb command to the correct device. + parser = OptionParserIgnoreErrors() + parser.add_option('-e', '--serial', dest='device_serial', type='string') + options, unused_args = parser.parse_args() # pylint: disable=unused-variable + + success = False + + adb_output, adb_return_code = run_adb_shell(getprop_args, + options.device_serial) + + if adb_return_code == 0: + # ADB may print output other than the version number (e.g. it chould + # print a message about starting the ADB server). + # Break the ADB output into white-space delimited segments. + parsed_output = str.split(adb_output) + if parsed_output: + # Assume that the version number is the last thing printed by ADB. + version_string = parsed_output[-1] + if version_string: + try: + # Try to convert the text into an integer. + version = int(version_string) + except ValueError: + version = -1 + else: + success = True + + if not success: + sys.exit(1) + + return version + + +def generate_random_filename_for_test(): + """Used for temporary files used in tests. + + Files created from 'NamedTemporaryFile' have inconsistent reuse support across + platforms, so it's not guaranteed that they can be reopened. Since many tests + communicate files via path, we typically use this method, as well as + manual file removal.""" + name = ''.join(random.choice(string.ascii_uppercase + + string.digits) for _ in range(10)) + return os.path.abspath(name) + + +def get_supported_browsers(): + """Returns the package names of all supported browsers.""" + # Add aliases for backwards compatibility. + supported_browsers = { + 'stable': chrome.PACKAGE_INFO['chrome_stable'], + 'beta': chrome.PACKAGE_INFO['chrome_beta'], + 'dev': chrome.PACKAGE_INFO['chrome_dev'], + 'build': chrome.PACKAGE_INFO['chrome'], + } + supported_browsers.update(chrome.PACKAGE_INFO) + return supported_browsers + + +def get_default_serial(): + if 'ANDROID_SERIAL' in os.environ: + return os.environ['ANDROID_SERIAL'] + return None + + +def get_main_options(parser): + parser.add_option('-o', dest='output_file', help='write trace output to FILE', + default=None, metavar='FILE') + parser.add_option('-t', '--time', dest='trace_time', type='int', + help='trace for N seconds', metavar='N') + parser.add_option('-j', '--json', dest='write_json', + default=False, action='store_true', + help='write a JSON file') + parser.add_option('--link-assets', dest='link_assets', default=False, + action='store_true', + help='(deprecated)') + parser.add_option('--from-file', dest='from_file', action='store', + help='read the trace from a file (compressed) rather than' + 'running a live trace') + parser.add_option('--asset-dir', dest='asset_dir', default='trace-viewer', + type='string', help='(deprecated)') + parser.add_option('-e', '--serial', dest='device_serial_number', + default=get_default_serial(), + type='string', help='adb device serial number') + parser.add_option('--target', dest='target', default='android', type='string', + help='choose tracing target (android or linux)') + parser.add_option('--timeout', dest='timeout', type='int', + help='timeout for start and stop tracing (seconds)') + parser.add_option('--collection-timeout', dest='collection_timeout', + type='int', help='timeout for data collection (seconds)') + parser.add_option('-a', '--app', dest='app_name', default=None, + type='string', action='store', + help='enable application-level tracing for ' + 'comma-separated list of app cmdlines') + parser.add_option('-t', '--time', dest='trace_time', type='int', + help='trace for N seconds', metavar='N') + parser.add_option('--target', dest='target', default='android', + type='string', help='choose tracing target (android or ' + ' linux)') + parser.add_option('-b', '--buf-size', dest='trace_buf_size', + type='int', help='use a trace buffer size ' + ' of N KB', metavar='N') + return parser diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/util_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/util_unittest.py new file mode 100644 index 0000000..e88f835 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/systrace/systrace/util_unittest.py @@ -0,0 +1,30 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import unittest + +from systrace import decorators +from systrace import util + + +DEVICE_SERIAL = 'AG8404EC0444AGC' +LIST_TMP_ARGS = ['ls', '/data/local/tmp'] +ATRACE_ARGS = ['atrace', '-z', '-t', '10', '-b', '4096'] +ADB_SHELL = ['adb', '-s', DEVICE_SERIAL, 'shell'] + + +class UtilTest(unittest.TestCase): + + @decorators.HostOnlyTest + def test_construct_adb_shell_command(self): + command = util.construct_adb_shell_command(LIST_TMP_ARGS, None) + self.assertEqual(' '.join(command), 'adb shell ls /data/local/tmp') + + command = util.construct_adb_shell_command(LIST_TMP_ARGS, DEVICE_SERIAL) + self.assertEqual(' '.join(command), + 'adb -s AG8404EC0444AGC shell ls /data/local/tmp') + + command = util.construct_adb_shell_command(ATRACE_ARGS, DEVICE_SERIAL) + self.assertEqual(' '.join(command), + 'adb -s AG8404EC0444AGC shell atrace -z -t 10 -b 4096') diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/LICENSE.txt b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/LICENSE.txt new file mode 100644 index 0000000..f604ea3 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/LICENSE.txt @@ -0,0 +1,61 @@ +Copyright (c) 2001-2013 Chris Liechti ; +All Rights Reserved. + +This is the Python license. In short, you can use this product in +commercial and non-commercial applications, modify it, redistribute it. +A notification to the author when you use and/or modify it is welcome. + + +TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING THIS SOFTWARE +=================================================================== + +LICENSE AGREEMENT +----------------- + +1. This LICENSE AGREEMENT is between the copyright holder of this +product, and the Individual or Organization ("Licensee") accessing +and otherwise using this product in source or binary form and its +associated documentation. + +2. Subject to the terms and conditions of this License Agreement, +the copyright holder hereby grants Licensee a nonexclusive, +royalty-free, world-wide license to reproduce, analyze, test, +perform and/or display publicly, prepare derivative works, distribute, +and otherwise use this product alone or in any derivative version, +provided, however, that copyright holders License Agreement and +copyright holders notice of copyright are retained in this product +alone or in any derivative version prepared by Licensee. + +3. In the event Licensee prepares a derivative work that is based on +or incorporates this product or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to this product. + +4. The copyright holder is making this product available to Licensee on +an "AS IS" basis. THE COPYRIGHT HOLDER MAKES NO REPRESENTATIONS OR +WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, +THE COPYRIGHT HOLDER MAKES NO AND DISCLAIMS ANY REPRESENTATION OR +WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR +THAT THE USE OF THIS PRODUCT WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. + +5. THE COPYRIGHT HOLDER SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER +USERS OF THIS PRODUCT FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL +DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE +USING THIS PRODUCT, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE +POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. Nothing in this License Agreement shall be deemed to create any +relationship of agency, partnership, or joint venture between the +copyright holder and Licensee. This License Agreement does not grant +permission to use trademarks or trade names from the copyright holder +in a trademark sense to endorse or promote products or services of +Licensee, or any third party. + +8. By copying, installing or otherwise using this product, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/README.chromium b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/README.chromium new file mode 100644 index 0000000..04593db --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/README.chromium @@ -0,0 +1,19 @@ +Name: pySerial +Short Name: pySerial +URL: https://github.com/pyserial/pyserial +Version: 2.7 +Date: 2013-10-17 +License: Python +License File: NOT_SHIPPED +Security Critical: no + +Description: +Library for Python access for the serial port. Used for communication with +a Monsoon device, which tunnels serial over USB. + +Local Modifications: +Includes only the serial/ folder and LICENSE.txt. +Packaging and setup files have not been copied downstream. +All other files and folders (documentation/, examples/, test/) +have not been copied downstream. +linux-product_info.patch has been applied to include the product information as description. diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/linux-product_info.patch b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/linux-product_info.patch new file mode 100644 index 0000000..9f8001a --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/linux-product_info.patch @@ -0,0 +1,19 @@ +Index: serial/tools/list_ports_linux.py +=================================================================== +--- serial/tools/list_ports_linux.py (revision 494) ++++ serial/tools/list_ports_linux.py (working copy) +@@ -110,6 +110,14 @@ + sys_dev_path = '/sys/class/tty/%s/device/interface' % (base,) + if os.path.exists(sys_dev_path): + return read_line(sys_dev_path) ++ ++ # USB Product Information ++ sys_dev_path = '/sys/class/tty/%s/device' % (base,) ++ if os.path.exists(sys_dev_path): ++ product_name_file = os.path.dirname(os.path.realpath(sys_dev_path)) + "/product" ++ if os.path.exists(product_name_file): ++ return read_line(product_name_file) ++ + return base + + def hwinfo(device): diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/__init__.py new file mode 100644 index 0000000..33ae52e --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/__init__.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python + +# portable serial port access with python +# this is a wrapper module for different platform implementations +# +# (C) 2001-2010 Chris Liechti +# this is distributed under a free software license, see license.txt + +VERSION = '2.7' + +import sys + +if sys.platform == 'cli': + from serial.serialcli import * +else: + import os + # chose an implementation, depending on os + if os.name == 'nt': #sys.platform == 'win32': + from serial.serialwin32 import * + elif os.name == 'posix': + from serial.serialposix import * + elif os.name == 'java': + from serial.serialjava import * + else: + raise ImportError("Sorry: no implementation for your platform ('%s') available" % (os.name,)) + + +protocol_handler_packages = [ + 'serial.urlhandler', + ] + +def serial_for_url(url, *args, **kwargs): + """\ + Get an instance of the Serial class, depending on port/url. The port is not + opened when the keyword parameter 'do_not_open' is true, by default it + is. All other parameters are directly passed to the __init__ method when + the port is instantiated. + + The list of package names that is searched for protocol handlers is kept in + ``protocol_handler_packages``. + + e.g. we want to support a URL ``foobar://``. A module + ``my_handlers.protocol_foobar`` is provided by the user. Then + ``protocol_handler_packages.append("my_handlers")`` would extend the search + path so that ``serial_for_url("foobar://"))`` would work. + """ + # check remove extra parameter to not confuse the Serial class + do_open = 'do_not_open' not in kwargs or not kwargs['do_not_open'] + if 'do_not_open' in kwargs: del kwargs['do_not_open'] + # the default is to use the native version + klass = Serial # 'native' implementation + # check port type and get class + try: + url_nocase = url.lower() + except AttributeError: + # it's not a string, use default + pass + else: + if '://' in url_nocase: + protocol = url_nocase.split('://', 1)[0] + for package_name in protocol_handler_packages: + module_name = '%s.protocol_%s' % (package_name, protocol,) + try: + handler_module = __import__(module_name) + except ImportError: + pass + else: + klass = sys.modules[module_name].Serial + break + else: + raise ValueError('invalid URL, protocol %r not known' % (protocol,)) + else: + klass = Serial # 'native' implementation + # instantiate and open when desired + instance = klass(None, *args, **kwargs) + instance.port = url + if do_open: + instance.open() + return instance diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/rfc2217.py b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/rfc2217.py new file mode 100644 index 0000000..2012ea7 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/rfc2217.py @@ -0,0 +1,1323 @@ +#! python +# +# Python Serial Port Extension for Win32, Linux, BSD, Jython +# see __init__.py +# +# This module implements a RFC2217 compatible client. RF2217 descibes a +# protocol to access serial ports over TCP/IP and allows setting the baud rate, +# modem control lines etc. +# +# (C) 2001-2013 Chris Liechti +# this is distributed under a free software license, see license.txt + +# TODO: +# - setting control line -> answer is not checked (had problems with one of the +# severs). consider implementing a compatibility mode flag to make check +# conditional +# - write timeout not implemented at all + +############################################################################## +# observations and issues with servers +#============================================================================= +# sredird V2.2.1 +# - http://www.ibiblio.org/pub/Linux/system/serial/ sredird-2.2.2.tar.gz +# - does not acknowledge SET_CONTROL (RTS/DTR) correctly, always responding +# [105 1] instead of the actual value. +# - SET_BAUDRATE answer contains 4 extra null bytes -> probably for larger +# numbers than 2**32? +# - To get the signature [COM_PORT_OPTION 0] has to be sent. +# - run a server: while true; do nc -l -p 7000 -c "sredird debug /dev/ttyUSB0 /var/lock/sredir"; done +#============================================================================= +# telnetcpcd (untested) +# - http://ftp.wayne.edu/kermit/sredird/telnetcpcd-1.09.tar.gz +# - To get the signature [COM_PORT_OPTION] w/o data has to be sent. +#============================================================================= +# ser2net +# - does not negotiate BINARY or COM_PORT_OPTION for his side but at least +# acknowledges that the client activates these options +# - The configuration may be that the server prints a banner. As this client +# implementation does a flushInput on connect, this banner is hidden from +# the user application. +# - NOTIFY_MODEMSTATE: the poll interval of the server seems to be one +# second. +# - To get the signature [COM_PORT_OPTION 0] has to be sent. +# - run a server: run ser2net daemon, in /etc/ser2net.conf: +# 2000:telnet:0:/dev/ttyS0:9600 remctl banner +############################################################################## + +# How to identify ports? pySerial might want to support other protocols in the +# future, so lets use an URL scheme. +# for RFC2217 compliant servers we will use this: +# rfc2217://:[/option[/option...]] +# +# options: +# - "debug" print diagnostic messages +# - "ign_set_control": do not look at the answers to SET_CONTROL +# - "poll_modem": issue NOTIFY_MODEMSTATE requests when CTS/DTR/RI/CD is read. +# Without this option it expects that the server sends notifications +# automatically on change (which most servers do and is according to the +# RFC). +# the order of the options is not relevant + +from serial.serialutil import * +import time +import struct +import socket +import threading +import Queue +import logging + +# port string is expected to be something like this: +# rfc2217://host:port +# host may be an IP or including domain, whatever. +# port is 0...65535 + +# map log level names to constants. used in fromURL() +LOGGER_LEVELS = { + 'debug': logging.DEBUG, + 'info': logging.INFO, + 'warning': logging.WARNING, + 'error': logging.ERROR, + } + + +# telnet protocol characters +IAC = to_bytes([255]) # Interpret As Command +DONT = to_bytes([254]) +DO = to_bytes([253]) +WONT = to_bytes([252]) +WILL = to_bytes([251]) +IAC_DOUBLED = to_bytes([IAC, IAC]) + +SE = to_bytes([240]) # Subnegotiation End +NOP = to_bytes([241]) # No Operation +DM = to_bytes([242]) # Data Mark +BRK = to_bytes([243]) # Break +IP = to_bytes([244]) # Interrupt process +AO = to_bytes([245]) # Abort output +AYT = to_bytes([246]) # Are You There +EC = to_bytes([247]) # Erase Character +EL = to_bytes([248]) # Erase Line +GA = to_bytes([249]) # Go Ahead +SB = to_bytes([250]) # Subnegotiation Begin + +# selected telnet options +BINARY = to_bytes([0]) # 8-bit data path +ECHO = to_bytes([1]) # echo +SGA = to_bytes([3]) # suppress go ahead + +# RFC2217 +COM_PORT_OPTION = to_bytes([44]) + +# Client to Access Server +SET_BAUDRATE = to_bytes([1]) +SET_DATASIZE = to_bytes([2]) +SET_PARITY = to_bytes([3]) +SET_STOPSIZE = to_bytes([4]) +SET_CONTROL = to_bytes([5]) +NOTIFY_LINESTATE = to_bytes([6]) +NOTIFY_MODEMSTATE = to_bytes([7]) +FLOWCONTROL_SUSPEND = to_bytes([8]) +FLOWCONTROL_RESUME = to_bytes([9]) +SET_LINESTATE_MASK = to_bytes([10]) +SET_MODEMSTATE_MASK = to_bytes([11]) +PURGE_DATA = to_bytes([12]) + +SERVER_SET_BAUDRATE = to_bytes([101]) +SERVER_SET_DATASIZE = to_bytes([102]) +SERVER_SET_PARITY = to_bytes([103]) +SERVER_SET_STOPSIZE = to_bytes([104]) +SERVER_SET_CONTROL = to_bytes([105]) +SERVER_NOTIFY_LINESTATE = to_bytes([106]) +SERVER_NOTIFY_MODEMSTATE = to_bytes([107]) +SERVER_FLOWCONTROL_SUSPEND = to_bytes([108]) +SERVER_FLOWCONTROL_RESUME = to_bytes([109]) +SERVER_SET_LINESTATE_MASK = to_bytes([110]) +SERVER_SET_MODEMSTATE_MASK = to_bytes([111]) +SERVER_PURGE_DATA = to_bytes([112]) + +RFC2217_ANSWER_MAP = { + SET_BAUDRATE: SERVER_SET_BAUDRATE, + SET_DATASIZE: SERVER_SET_DATASIZE, + SET_PARITY: SERVER_SET_PARITY, + SET_STOPSIZE: SERVER_SET_STOPSIZE, + SET_CONTROL: SERVER_SET_CONTROL, + NOTIFY_LINESTATE: SERVER_NOTIFY_LINESTATE, + NOTIFY_MODEMSTATE: SERVER_NOTIFY_MODEMSTATE, + FLOWCONTROL_SUSPEND: SERVER_FLOWCONTROL_SUSPEND, + FLOWCONTROL_RESUME: SERVER_FLOWCONTROL_RESUME, + SET_LINESTATE_MASK: SERVER_SET_LINESTATE_MASK, + SET_MODEMSTATE_MASK: SERVER_SET_MODEMSTATE_MASK, + PURGE_DATA: SERVER_PURGE_DATA, +} + +SET_CONTROL_REQ_FLOW_SETTING = to_bytes([0]) # Request Com Port Flow Control Setting (outbound/both) +SET_CONTROL_USE_NO_FLOW_CONTROL = to_bytes([1]) # Use No Flow Control (outbound/both) +SET_CONTROL_USE_SW_FLOW_CONTROL = to_bytes([2]) # Use XON/XOFF Flow Control (outbound/both) +SET_CONTROL_USE_HW_FLOW_CONTROL = to_bytes([3]) # Use HARDWARE Flow Control (outbound/both) +SET_CONTROL_REQ_BREAK_STATE = to_bytes([4]) # Request BREAK State +SET_CONTROL_BREAK_ON = to_bytes([5]) # Set BREAK State ON +SET_CONTROL_BREAK_OFF = to_bytes([6]) # Set BREAK State OFF +SET_CONTROL_REQ_DTR = to_bytes([7]) # Request DTR Signal State +SET_CONTROL_DTR_ON = to_bytes([8]) # Set DTR Signal State ON +SET_CONTROL_DTR_OFF = to_bytes([9]) # Set DTR Signal State OFF +SET_CONTROL_REQ_RTS = to_bytes([10]) # Request RTS Signal State +SET_CONTROL_RTS_ON = to_bytes([11]) # Set RTS Signal State ON +SET_CONTROL_RTS_OFF = to_bytes([12]) # Set RTS Signal State OFF +SET_CONTROL_REQ_FLOW_SETTING_IN = to_bytes([13]) # Request Com Port Flow Control Setting (inbound) +SET_CONTROL_USE_NO_FLOW_CONTROL_IN = to_bytes([14]) # Use No Flow Control (inbound) +SET_CONTROL_USE_SW_FLOW_CONTOL_IN = to_bytes([15]) # Use XON/XOFF Flow Control (inbound) +SET_CONTROL_USE_HW_FLOW_CONTOL_IN = to_bytes([16]) # Use HARDWARE Flow Control (inbound) +SET_CONTROL_USE_DCD_FLOW_CONTROL = to_bytes([17]) # Use DCD Flow Control (outbound/both) +SET_CONTROL_USE_DTR_FLOW_CONTROL = to_bytes([18]) # Use DTR Flow Control (inbound) +SET_CONTROL_USE_DSR_FLOW_CONTROL = to_bytes([19]) # Use DSR Flow Control (outbound/both) + +LINESTATE_MASK_TIMEOUT = 128 # Time-out Error +LINESTATE_MASK_SHIFTREG_EMPTY = 64 # Transfer Shift Register Empty +LINESTATE_MASK_TRANSREG_EMPTY = 32 # Transfer Holding Register Empty +LINESTATE_MASK_BREAK_DETECT = 16 # Break-detect Error +LINESTATE_MASK_FRAMING_ERROR = 8 # Framing Error +LINESTATE_MASK_PARTIY_ERROR = 4 # Parity Error +LINESTATE_MASK_OVERRUN_ERROR = 2 # Overrun Error +LINESTATE_MASK_DATA_READY = 1 # Data Ready + +MODEMSTATE_MASK_CD = 128 # Receive Line Signal Detect (also known as Carrier Detect) +MODEMSTATE_MASK_RI = 64 # Ring Indicator +MODEMSTATE_MASK_DSR = 32 # Data-Set-Ready Signal State +MODEMSTATE_MASK_CTS = 16 # Clear-To-Send Signal State +MODEMSTATE_MASK_CD_CHANGE = 8 # Delta Receive Line Signal Detect +MODEMSTATE_MASK_RI_CHANGE = 4 # Trailing-edge Ring Detector +MODEMSTATE_MASK_DSR_CHANGE = 2 # Delta Data-Set-Ready +MODEMSTATE_MASK_CTS_CHANGE = 1 # Delta Clear-To-Send + +PURGE_RECEIVE_BUFFER = to_bytes([1]) # Purge access server receive data buffer +PURGE_TRANSMIT_BUFFER = to_bytes([2]) # Purge access server transmit data buffer +PURGE_BOTH_BUFFERS = to_bytes([3]) # Purge both the access server receive data buffer and the access server transmit data buffer + + +RFC2217_PARITY_MAP = { + PARITY_NONE: 1, + PARITY_ODD: 2, + PARITY_EVEN: 3, + PARITY_MARK: 4, + PARITY_SPACE: 5, +} +RFC2217_REVERSE_PARITY_MAP = dict((v,k) for k,v in RFC2217_PARITY_MAP.items()) + +RFC2217_STOPBIT_MAP = { + STOPBITS_ONE: 1, + STOPBITS_ONE_POINT_FIVE: 3, + STOPBITS_TWO: 2, +} +RFC2217_REVERSE_STOPBIT_MAP = dict((v,k) for k,v in RFC2217_STOPBIT_MAP.items()) + +# Telnet filter states +M_NORMAL = 0 +M_IAC_SEEN = 1 +M_NEGOTIATE = 2 + +# TelnetOption and TelnetSubnegotiation states +REQUESTED = 'REQUESTED' +ACTIVE = 'ACTIVE' +INACTIVE = 'INACTIVE' +REALLY_INACTIVE = 'REALLY_INACTIVE' + +class TelnetOption(object): + """Manage a single telnet option, keeps track of DO/DONT WILL/WONT.""" + + def __init__(self, connection, name, option, send_yes, send_no, ack_yes, ack_no, initial_state, activation_callback=None): + """\ + Initialize option. + :param connection: connection used to transmit answers + :param name: a readable name for debug outputs + :param send_yes: what to send when option is to be enabled. + :param send_no: what to send when option is to be disabled. + :param ack_yes: what to expect when remote agrees on option. + :param ack_no: what to expect when remote disagrees on option. + :param initial_state: options initialized with REQUESTED are tried to + be enabled on startup. use INACTIVE for all others. + """ + self.connection = connection + self.name = name + self.option = option + self.send_yes = send_yes + self.send_no = send_no + self.ack_yes = ack_yes + self.ack_no = ack_no + self.state = initial_state + self.active = False + self.activation_callback = activation_callback + + def __repr__(self): + """String for debug outputs""" + return "%s:%s(%s)" % (self.name, self.active, self.state) + + def process_incoming(self, command): + """A DO/DONT/WILL/WONT was received for this option, update state and + answer when needed.""" + if command == self.ack_yes: + if self.state is REQUESTED: + self.state = ACTIVE + self.active = True + if self.activation_callback is not None: + self.activation_callback() + elif self.state is ACTIVE: + pass + elif self.state is INACTIVE: + self.state = ACTIVE + self.connection.telnetSendOption(self.send_yes, self.option) + self.active = True + if self.activation_callback is not None: + self.activation_callback() + elif self.state is REALLY_INACTIVE: + self.connection.telnetSendOption(self.send_no, self.option) + else: + raise ValueError('option in illegal state %r' % self) + elif command == self.ack_no: + if self.state is REQUESTED: + self.state = INACTIVE + self.active = False + elif self.state is ACTIVE: + self.state = INACTIVE + self.connection.telnetSendOption(self.send_no, self.option) + self.active = False + elif self.state is INACTIVE: + pass + elif self.state is REALLY_INACTIVE: + pass + else: + raise ValueError('option in illegal state %r' % self) + + +class TelnetSubnegotiation(object): + """\ + A object to handle subnegotiation of options. In this case actually + sub-sub options for RFC 2217. It is used to track com port options. + """ + + def __init__(self, connection, name, option, ack_option=None): + if ack_option is None: ack_option = option + self.connection = connection + self.name = name + self.option = option + self.value = None + self.ack_option = ack_option + self.state = INACTIVE + + def __repr__(self): + """String for debug outputs.""" + return "%s:%s" % (self.name, self.state) + + def set(self, value): + """\ + request a change of the value. a request is sent to the server. if + the client needs to know if the change is performed he has to check the + state of this object. + """ + self.value = value + self.state = REQUESTED + self.connection.rfc2217SendSubnegotiation(self.option, self.value) + if self.connection.logger: + self.connection.logger.debug("SB Requesting %s -> %r" % (self.name, self.value)) + + def isReady(self): + """\ + check if answer from server has been received. when server rejects + the change, raise a ValueError. + """ + if self.state == REALLY_INACTIVE: + raise ValueError("remote rejected value for option %r" % (self.name)) + return self.state == ACTIVE + # add property to have a similar interface as TelnetOption + active = property(isReady) + + def wait(self, timeout=3): + """\ + wait until the subnegotiation has been acknowledged or timeout. It + can also throw a value error when the answer from the server does not + match the value sent. + """ + timeout_time = time.time() + timeout + while time.time() < timeout_time: + time.sleep(0.05) # prevent 100% CPU load + if self.isReady(): + break + else: + raise SerialException("timeout while waiting for option %r" % (self.name)) + + def checkAnswer(self, suboption): + """\ + check an incoming subnegotiation block. the parameter already has + cut off the header like sub option number and com port option value. + """ + if self.value == suboption[:len(self.value)]: + self.state = ACTIVE + else: + # error propagation done in isReady + self.state = REALLY_INACTIVE + if self.connection.logger: + self.connection.logger.debug("SB Answer %s -> %r -> %s" % (self.name, suboption, self.state)) + + +class RFC2217Serial(SerialBase): + """Serial port implementation for RFC 2217 remote serial ports.""" + + BAUDRATES = (50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, + 9600, 19200, 38400, 57600, 115200) + + def open(self): + """\ + Open port with current settings. This may throw a SerialException + if the port cannot be opened. + """ + self.logger = None + self._ignore_set_control_answer = False + self._poll_modem_state = False + self._network_timeout = 3 + if self._port is None: + raise SerialException("Port must be configured before it can be used.") + if self._isOpen: + raise SerialException("Port is already open.") + try: + self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + self._socket.connect(self.fromURL(self.portstr)) + self._socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) + except Exception, msg: + self._socket = None + raise SerialException("Could not open port %s: %s" % (self.portstr, msg)) + + self._socket.settimeout(5) # XXX good value? + + # use a thread save queue as buffer. it also simplifies implementing + # the read timeout + self._read_buffer = Queue.Queue() + # to ensure that user writes does not interfere with internal + # telnet/rfc2217 options establish a lock + self._write_lock = threading.Lock() + # name the following separately so that, below, a check can be easily done + mandadory_options = [ + TelnetOption(self, 'we-BINARY', BINARY, WILL, WONT, DO, DONT, INACTIVE), + TelnetOption(self, 'we-RFC2217', COM_PORT_OPTION, WILL, WONT, DO, DONT, REQUESTED), + ] + # all supported telnet options + self._telnet_options = [ + TelnetOption(self, 'ECHO', ECHO, DO, DONT, WILL, WONT, REQUESTED), + TelnetOption(self, 'we-SGA', SGA, WILL, WONT, DO, DONT, REQUESTED), + TelnetOption(self, 'they-SGA', SGA, DO, DONT, WILL, WONT, REQUESTED), + TelnetOption(self, 'they-BINARY', BINARY, DO, DONT, WILL, WONT, INACTIVE), + TelnetOption(self, 'they-RFC2217', COM_PORT_OPTION, DO, DONT, WILL, WONT, REQUESTED), + ] + mandadory_options + # RFC 2217 specific states + # COM port settings + self._rfc2217_port_settings = { + 'baudrate': TelnetSubnegotiation(self, 'baudrate', SET_BAUDRATE, SERVER_SET_BAUDRATE), + 'datasize': TelnetSubnegotiation(self, 'datasize', SET_DATASIZE, SERVER_SET_DATASIZE), + 'parity': TelnetSubnegotiation(self, 'parity', SET_PARITY, SERVER_SET_PARITY), + 'stopsize': TelnetSubnegotiation(self, 'stopsize', SET_STOPSIZE, SERVER_SET_STOPSIZE), + } + # There are more subnegotiation objects, combine all in one dictionary + # for easy access + self._rfc2217_options = { + 'purge': TelnetSubnegotiation(self, 'purge', PURGE_DATA, SERVER_PURGE_DATA), + 'control': TelnetSubnegotiation(self, 'control', SET_CONTROL, SERVER_SET_CONTROL), + } + self._rfc2217_options.update(self._rfc2217_port_settings) + # cache for line and modem states that the server sends to us + self._linestate = 0 + self._modemstate = None + self._modemstate_expires = 0 + # RFC 2217 flow control between server and client + self._remote_suspend_flow = False + + self._thread = threading.Thread(target=self._telnetReadLoop) + self._thread.setDaemon(True) + self._thread.setName('pySerial RFC 2217 reader thread for %s' % (self._port,)) + self._thread.start() + + # negotiate Telnet/RFC 2217 -> send initial requests + for option in self._telnet_options: + if option.state is REQUESTED: + self.telnetSendOption(option.send_yes, option.option) + # now wait until important options are negotiated + timeout_time = time.time() + self._network_timeout + while time.time() < timeout_time: + time.sleep(0.05) # prevent 100% CPU load + if sum(o.active for o in mandadory_options) == len(mandadory_options): + break + else: + raise SerialException("Remote does not seem to support RFC2217 or BINARY mode %r" % mandadory_options) + if self.logger: + self.logger.info("Negotiated options: %s" % self._telnet_options) + + # fine, go on, set RFC 2271 specific things + self._reconfigurePort() + # all things set up get, now a clean start + self._isOpen = True + if not self._rtscts: + self.setRTS(True) + self.setDTR(True) + self.flushInput() + self.flushOutput() + + def _reconfigurePort(self): + """Set communication parameters on opened port.""" + if self._socket is None: + raise SerialException("Can only operate on open ports") + + # if self._timeout != 0 and self._interCharTimeout is not None: + # XXX + + if self._writeTimeout is not None: + raise NotImplementedError('writeTimeout is currently not supported') + # XXX + + # Setup the connection + # to get good performance, all parameter changes are sent first... + if not isinstance(self._baudrate, (int, long)) or not 0 < self._baudrate < 2**32: + raise ValueError("invalid baudrate: %r" % (self._baudrate)) + self._rfc2217_port_settings['baudrate'].set(struct.pack('!I', self._baudrate)) + self._rfc2217_port_settings['datasize'].set(struct.pack('!B', self._bytesize)) + self._rfc2217_port_settings['parity'].set(struct.pack('!B', RFC2217_PARITY_MAP[self._parity])) + self._rfc2217_port_settings['stopsize'].set(struct.pack('!B', RFC2217_STOPBIT_MAP[self._stopbits])) + + # and now wait until parameters are active + items = self._rfc2217_port_settings.values() + if self.logger: + self.logger.debug("Negotiating settings: %s" % (items,)) + timeout_time = time.time() + self._network_timeout + while time.time() < timeout_time: + time.sleep(0.05) # prevent 100% CPU load + if sum(o.active for o in items) == len(items): + break + else: + raise SerialException("Remote does not accept parameter change (RFC2217): %r" % items) + if self.logger: + self.logger.info("Negotiated settings: %s" % (items,)) + + if self._rtscts and self._xonxoff: + raise ValueError('xonxoff and rtscts together are not supported') + elif self._rtscts: + self.rfc2217SetControl(SET_CONTROL_USE_HW_FLOW_CONTROL) + elif self._xonxoff: + self.rfc2217SetControl(SET_CONTROL_USE_SW_FLOW_CONTROL) + else: + self.rfc2217SetControl(SET_CONTROL_USE_NO_FLOW_CONTROL) + + def close(self): + """Close port""" + if self._isOpen: + if self._socket: + try: + self._socket.shutdown(socket.SHUT_RDWR) + self._socket.close() + except: + # ignore errors. + pass + self._socket = None + if self._thread: + self._thread.join() + self._isOpen = False + # in case of quick reconnects, give the server some time + time.sleep(0.3) + + def makeDeviceName(self, port): + raise SerialException("there is no sensible way to turn numbers into URLs") + + def fromURL(self, url): + """extract host and port from an URL string""" + if url.lower().startswith("rfc2217://"): url = url[10:] + try: + # is there a "path" (our options)? + if '/' in url: + # cut away options + url, options = url.split('/', 1) + # process options now, directly altering self + for option in options.split('/'): + if '=' in option: + option, value = option.split('=', 1) + else: + value = None + if option == 'logging': + logging.basicConfig() # XXX is that good to call it here? + self.logger = logging.getLogger('pySerial.rfc2217') + self.logger.setLevel(LOGGER_LEVELS[value]) + self.logger.debug('enabled logging') + elif option == 'ign_set_control': + self._ignore_set_control_answer = True + elif option == 'poll_modem': + self._poll_modem_state = True + elif option == 'timeout': + self._network_timeout = float(value) + else: + raise ValueError('unknown option: %r' % (option,)) + # get host and port + host, port = url.split(':', 1) # may raise ValueError because of unpacking + port = int(port) # and this if it's not a number + if not 0 <= port < 65536: raise ValueError("port not in range 0...65535") + except ValueError, e: + raise SerialException('expected a string in the form "[rfc2217://]:[/option[/option...]]": %s' % e) + return (host, port) + + # - - - - - - - - - - - - - - - - - - - - - - - - + + def inWaiting(self): + """Return the number of characters currently in the input buffer.""" + if not self._isOpen: raise portNotOpenError + return self._read_buffer.qsize() + + def read(self, size=1): + """\ + Read size bytes from the serial port. If a timeout is set it may + return less characters as requested. With no timeout it will block + until the requested number of bytes is read. + """ + if not self._isOpen: raise portNotOpenError + data = bytearray() + try: + while len(data) < size: + if self._thread is None: + raise SerialException('connection failed (reader thread died)') + data.append(self._read_buffer.get(True, self._timeout)) + except Queue.Empty: # -> timeout + pass + return bytes(data) + + def write(self, data): + """\ + Output the given string over the serial port. Can block if the + connection is blocked. May raise SerialException if the connection is + closed. + """ + if not self._isOpen: raise portNotOpenError + self._write_lock.acquire() + try: + try: + self._socket.sendall(to_bytes(data).replace(IAC, IAC_DOUBLED)) + except socket.error, e: + raise SerialException("connection failed (socket error): %s" % e) # XXX what exception if socket connection fails + finally: + self._write_lock.release() + return len(data) + + def flushInput(self): + """Clear input buffer, discarding all that is in the buffer.""" + if not self._isOpen: raise portNotOpenError + self.rfc2217SendPurge(PURGE_RECEIVE_BUFFER) + # empty read buffer + while self._read_buffer.qsize(): + self._read_buffer.get(False) + + def flushOutput(self): + """\ + Clear output buffer, aborting the current output and + discarding all that is in the buffer. + """ + if not self._isOpen: raise portNotOpenError + self.rfc2217SendPurge(PURGE_TRANSMIT_BUFFER) + + def sendBreak(self, duration=0.25): + """Send break condition. Timed, returns to idle state after given + duration.""" + if not self._isOpen: raise portNotOpenError + self.setBreak(True) + time.sleep(duration) + self.setBreak(False) + + def setBreak(self, level=True): + """\ + Set break: Controls TXD. When active, to transmitting is + possible. + """ + if not self._isOpen: raise portNotOpenError + if self.logger: + self.logger.info('set BREAK to %s' % ('inactive', 'active')[bool(level)]) + if level: + self.rfc2217SetControl(SET_CONTROL_BREAK_ON) + else: + self.rfc2217SetControl(SET_CONTROL_BREAK_OFF) + + def setRTS(self, level=True): + """Set terminal status line: Request To Send.""" + if not self._isOpen: raise portNotOpenError + if self.logger: + self.logger.info('set RTS to %s' % ('inactive', 'active')[bool(level)]) + if level: + self.rfc2217SetControl(SET_CONTROL_RTS_ON) + else: + self.rfc2217SetControl(SET_CONTROL_RTS_OFF) + + def setDTR(self, level=True): + """Set terminal status line: Data Terminal Ready.""" + if not self._isOpen: raise portNotOpenError + if self.logger: + self.logger.info('set DTR to %s' % ('inactive', 'active')[bool(level)]) + if level: + self.rfc2217SetControl(SET_CONTROL_DTR_ON) + else: + self.rfc2217SetControl(SET_CONTROL_DTR_OFF) + + def getCTS(self): + """Read terminal status line: Clear To Send.""" + if not self._isOpen: raise portNotOpenError + return bool(self.getModemState() & MODEMSTATE_MASK_CTS) + + def getDSR(self): + """Read terminal status line: Data Set Ready.""" + if not self._isOpen: raise portNotOpenError + return bool(self.getModemState() & MODEMSTATE_MASK_DSR) + + def getRI(self): + """Read terminal status line: Ring Indicator.""" + if not self._isOpen: raise portNotOpenError + return bool(self.getModemState() & MODEMSTATE_MASK_RI) + + def getCD(self): + """Read terminal status line: Carrier Detect.""" + if not self._isOpen: raise portNotOpenError + return bool(self.getModemState() & MODEMSTATE_MASK_CD) + + # - - - platform specific - - - + # None so far + + # - - - RFC2217 specific - - - + + def _telnetReadLoop(self): + """read loop for the socket.""" + mode = M_NORMAL + suboption = None + try: + while self._socket is not None: + try: + data = self._socket.recv(1024) + except socket.timeout: + # just need to get out of recv form time to time to check if + # still alive + continue + except socket.error, e: + # connection fails -> terminate loop + if self.logger: + self.logger.debug("socket error in reader thread: %s" % (e,)) + break + if not data: break # lost connection + for byte in data: + if mode == M_NORMAL: + # interpret as command or as data + if byte == IAC: + mode = M_IAC_SEEN + else: + # store data in read buffer or sub option buffer + # depending on state + if suboption is not None: + suboption.append(byte) + else: + self._read_buffer.put(byte) + elif mode == M_IAC_SEEN: + if byte == IAC: + # interpret as command doubled -> insert character + # itself + if suboption is not None: + suboption.append(IAC) + else: + self._read_buffer.put(IAC) + mode = M_NORMAL + elif byte == SB: + # sub option start + suboption = bytearray() + mode = M_NORMAL + elif byte == SE: + # sub option end -> process it now + self._telnetProcessSubnegotiation(bytes(suboption)) + suboption = None + mode = M_NORMAL + elif byte in (DO, DONT, WILL, WONT): + # negotiation + telnet_command = byte + mode = M_NEGOTIATE + else: + # other telnet commands + self._telnetProcessCommand(byte) + mode = M_NORMAL + elif mode == M_NEGOTIATE: # DO, DONT, WILL, WONT was received, option now following + self._telnetNegotiateOption(telnet_command, byte) + mode = M_NORMAL + finally: + self._thread = None + if self.logger: + self.logger.debug("read thread terminated") + + # - incoming telnet commands and options + + def _telnetProcessCommand(self, command): + """Process commands other than DO, DONT, WILL, WONT.""" + # Currently none. RFC2217 only uses negotiation and subnegotiation. + if self.logger: + self.logger.warning("ignoring Telnet command: %r" % (command,)) + + def _telnetNegotiateOption(self, command, option): + """Process incoming DO, DONT, WILL, WONT.""" + # check our registered telnet options and forward command to them + # they know themselves if they have to answer or not + known = False + for item in self._telnet_options: + # can have more than one match! as some options are duplicated for + # 'us' and 'them' + if item.option == option: + item.process_incoming(command) + known = True + if not known: + # handle unknown options + # only answer to positive requests and deny them + if command == WILL or command == DO: + self.telnetSendOption((command == WILL and DONT or WONT), option) + if self.logger: + self.logger.warning("rejected Telnet option: %r" % (option,)) + + + def _telnetProcessSubnegotiation(self, suboption): + """Process subnegotiation, the data between IAC SB and IAC SE.""" + if suboption[0:1] == COM_PORT_OPTION: + if suboption[1:2] == SERVER_NOTIFY_LINESTATE and len(suboption) >= 3: + self._linestate = ord(suboption[2:3]) # ensure it is a number + if self.logger: + self.logger.info("NOTIFY_LINESTATE: %s" % self._linestate) + elif suboption[1:2] == SERVER_NOTIFY_MODEMSTATE and len(suboption) >= 3: + self._modemstate = ord(suboption[2:3]) # ensure it is a number + if self.logger: + self.logger.info("NOTIFY_MODEMSTATE: %s" % self._modemstate) + # update time when we think that a poll would make sense + self._modemstate_expires = time.time() + 0.3 + elif suboption[1:2] == FLOWCONTROL_SUSPEND: + self._remote_suspend_flow = True + elif suboption[1:2] == FLOWCONTROL_RESUME: + self._remote_suspend_flow = False + else: + for item in self._rfc2217_options.values(): + if item.ack_option == suboption[1:2]: + #~ print "processing COM_PORT_OPTION: %r" % list(suboption[1:]) + item.checkAnswer(bytes(suboption[2:])) + break + else: + if self.logger: + self.logger.warning("ignoring COM_PORT_OPTION: %r" % (suboption,)) + else: + if self.logger: + self.logger.warning("ignoring subnegotiation: %r" % (suboption,)) + + # - outgoing telnet commands and options + + def _internal_raw_write(self, data): + """internal socket write with no data escaping. used to send telnet stuff.""" + self._write_lock.acquire() + try: + self._socket.sendall(data) + finally: + self._write_lock.release() + + def telnetSendOption(self, action, option): + """Send DO, DONT, WILL, WONT.""" + self._internal_raw_write(to_bytes([IAC, action, option])) + + def rfc2217SendSubnegotiation(self, option, value=''): + """Subnegotiation of RFC2217 parameters.""" + value = value.replace(IAC, IAC_DOUBLED) + self._internal_raw_write(to_bytes([IAC, SB, COM_PORT_OPTION, option] + list(value) + [IAC, SE])) + + def rfc2217SendPurge(self, value): + item = self._rfc2217_options['purge'] + item.set(value) # transmit desired purge type + item.wait(self._network_timeout) # wait for acknowledge from the server + + def rfc2217SetControl(self, value): + item = self._rfc2217_options['control'] + item.set(value) # transmit desired control type + if self._ignore_set_control_answer: + # answers are ignored when option is set. compatibility mode for + # servers that answer, but not the expected one... (or no answer + # at all) i.e. sredird + time.sleep(0.1) # this helps getting the unit tests passed + else: + item.wait(self._network_timeout) # wait for acknowledge from the server + + def rfc2217FlowServerReady(self): + """\ + check if server is ready to receive data. block for some time when + not. + """ + #~ if self._remote_suspend_flow: + #~ wait--- + + def getModemState(self): + """\ + get last modem state (cached value. if value is "old", request a new + one. this cache helps that we don't issue to many requests when e.g. all + status lines, one after the other is queried by te user (getCTS, getDSR + etc.) + """ + # active modem state polling enabled? is the value fresh enough? + if self._poll_modem_state and self._modemstate_expires < time.time(): + if self.logger: + self.logger.debug('polling modem state') + # when it is older, request an update + self.rfc2217SendSubnegotiation(NOTIFY_MODEMSTATE) + timeout_time = time.time() + self._network_timeout + while time.time() < timeout_time: + time.sleep(0.05) # prevent 100% CPU load + # when expiration time is updated, it means that there is a new + # value + if self._modemstate_expires > time.time(): + if self.logger: + self.logger.warning('poll for modem state failed') + break + # even when there is a timeout, do not generate an error just + # return the last known value. this way we can support buggy + # servers that do not respond to polls, but send automatic + # updates. + if self._modemstate is not None: + if self.logger: + self.logger.debug('using cached modem state') + return self._modemstate + else: + # never received a notification from the server + raise SerialException("remote sends no NOTIFY_MODEMSTATE") + + +# assemble Serial class with the platform specific implementation and the base +# for file-like behavior. for Python 2.6 and newer, that provide the new I/O +# library, derive from io.RawIOBase +try: + import io +except ImportError: + # classic version with our own file-like emulation + class Serial(RFC2217Serial, FileLike): + pass +else: + # io library present + class Serial(RFC2217Serial, io.RawIOBase): + pass + + +############################################################################# +# The following is code that helps implementing an RFC 2217 server. + +class PortManager(object): + """\ + This class manages the state of Telnet and RFC 2217. It needs a serial + instance and a connection to work with. Connection is expected to implement + a (thread safe) write function, that writes the string to the network. + """ + + def __init__(self, serial_port, connection, logger=None): + self.serial = serial_port + self.connection = connection + self.logger = logger + self._client_is_rfc2217 = False + + # filter state machine + self.mode = M_NORMAL + self.suboption = None + self.telnet_command = None + + # states for modem/line control events + self.modemstate_mask = 255 + self.last_modemstate = None + self.linstate_mask = 0 + + # all supported telnet options + self._telnet_options = [ + TelnetOption(self, 'ECHO', ECHO, WILL, WONT, DO, DONT, REQUESTED), + TelnetOption(self, 'we-SGA', SGA, WILL, WONT, DO, DONT, REQUESTED), + TelnetOption(self, 'they-SGA', SGA, DO, DONT, WILL, WONT, INACTIVE), + TelnetOption(self, 'we-BINARY', BINARY, WILL, WONT, DO, DONT, INACTIVE), + TelnetOption(self, 'they-BINARY', BINARY, DO, DONT, WILL, WONT, REQUESTED), + TelnetOption(self, 'we-RFC2217', COM_PORT_OPTION, WILL, WONT, DO, DONT, REQUESTED, self._client_ok), + TelnetOption(self, 'they-RFC2217', COM_PORT_OPTION, DO, DONT, WILL, WONT, INACTIVE, self._client_ok), + ] + + # negotiate Telnet/RFC2217 -> send initial requests + if self.logger: + self.logger.debug("requesting initial Telnet/RFC 2217 options") + for option in self._telnet_options: + if option.state is REQUESTED: + self.telnetSendOption(option.send_yes, option.option) + # issue 1st modem state notification + + def _client_ok(self): + """\ + callback of telnet option. it gets called when option is activated. + this one here is used to detect when the client agrees on RFC 2217. a + flag is set so that other functions like check_modem_lines know if the + client is ok. + """ + # The callback is used for we and they so if one party agrees, we're + # already happy. it seems not all servers do the negotiation correctly + # and i guess there are incorrect clients too.. so be happy if client + # answers one or the other positively. + self._client_is_rfc2217 = True + if self.logger: + self.logger.info("client accepts RFC 2217") + # this is to ensure that the client gets a notification, even if there + # was no change + self.check_modem_lines(force_notification=True) + + # - outgoing telnet commands and options + + def telnetSendOption(self, action, option): + """Send DO, DONT, WILL, WONT.""" + self.connection.write(to_bytes([IAC, action, option])) + + def rfc2217SendSubnegotiation(self, option, value=''): + """Subnegotiation of RFC 2217 parameters.""" + value = value.replace(IAC, IAC_DOUBLED) + self.connection.write(to_bytes([IAC, SB, COM_PORT_OPTION, option] + list(value) + [IAC, SE])) + + # - check modem lines, needs to be called periodically from user to + # establish polling + + def check_modem_lines(self, force_notification=False): + modemstate = ( + (self.serial.getCTS() and MODEMSTATE_MASK_CTS) | + (self.serial.getDSR() and MODEMSTATE_MASK_DSR) | + (self.serial.getRI() and MODEMSTATE_MASK_RI) | + (self.serial.getCD() and MODEMSTATE_MASK_CD) + ) + # check what has changed + deltas = modemstate ^ (self.last_modemstate or 0) # when last is None -> 0 + if deltas & MODEMSTATE_MASK_CTS: + modemstate |= MODEMSTATE_MASK_CTS_CHANGE + if deltas & MODEMSTATE_MASK_DSR: + modemstate |= MODEMSTATE_MASK_DSR_CHANGE + if deltas & MODEMSTATE_MASK_RI: + modemstate |= MODEMSTATE_MASK_RI_CHANGE + if deltas & MODEMSTATE_MASK_CD: + modemstate |= MODEMSTATE_MASK_CD_CHANGE + # if new state is different and the mask allows this change, send + # notification. suppress notifications when client is not rfc2217 + if modemstate != self.last_modemstate or force_notification: + if (self._client_is_rfc2217 and (modemstate & self.modemstate_mask)) or force_notification: + self.rfc2217SendSubnegotiation( + SERVER_NOTIFY_MODEMSTATE, + to_bytes([modemstate & self.modemstate_mask]) + ) + if self.logger: + self.logger.info("NOTIFY_MODEMSTATE: %s" % (modemstate,)) + # save last state, but forget about deltas. + # otherwise it would also notify about changing deltas which is + # probably not very useful + self.last_modemstate = modemstate & 0xf0 + + # - outgoing data escaping + + def escape(self, data): + """\ + this generator function is for the user. all outgoing data has to be + properly escaped, so that no IAC character in the data stream messes up + the Telnet state machine in the server. + + socket.sendall(escape(data)) + """ + for byte in data: + if byte == IAC: + yield IAC + yield IAC + else: + yield byte + + # - incoming data filter + + def filter(self, data): + """\ + handle a bunch of incoming bytes. this is a generator. it will yield + all characters not of interest for Telnet/RFC 2217. + + The idea is that the reader thread pushes data from the socket through + this filter: + + for byte in filter(socket.recv(1024)): + # do things like CR/LF conversion/whatever + # and write data to the serial port + serial.write(byte) + + (socket error handling code left as exercise for the reader) + """ + for byte in data: + if self.mode == M_NORMAL: + # interpret as command or as data + if byte == IAC: + self.mode = M_IAC_SEEN + else: + # store data in sub option buffer or pass it to our + # consumer depending on state + if self.suboption is not None: + self.suboption.append(byte) + else: + yield byte + elif self.mode == M_IAC_SEEN: + if byte == IAC: + # interpret as command doubled -> insert character + # itself + if self.suboption is not None: + self.suboption.append(byte) + else: + yield byte + self.mode = M_NORMAL + elif byte == SB: + # sub option start + self.suboption = bytearray() + self.mode = M_NORMAL + elif byte == SE: + # sub option end -> process it now + self._telnetProcessSubnegotiation(bytes(self.suboption)) + self.suboption = None + self.mode = M_NORMAL + elif byte in (DO, DONT, WILL, WONT): + # negotiation + self.telnet_command = byte + self.mode = M_NEGOTIATE + else: + # other telnet commands + self._telnetProcessCommand(byte) + self.mode = M_NORMAL + elif self.mode == M_NEGOTIATE: # DO, DONT, WILL, WONT was received, option now following + self._telnetNegotiateOption(self.telnet_command, byte) + self.mode = M_NORMAL + + # - incoming telnet commands and options + + def _telnetProcessCommand(self, command): + """Process commands other than DO, DONT, WILL, WONT.""" + # Currently none. RFC2217 only uses negotiation and subnegotiation. + if self.logger: + self.logger.warning("ignoring Telnet command: %r" % (command,)) + + def _telnetNegotiateOption(self, command, option): + """Process incoming DO, DONT, WILL, WONT.""" + # check our registered telnet options and forward command to them + # they know themselves if they have to answer or not + known = False + for item in self._telnet_options: + # can have more than one match! as some options are duplicated for + # 'us' and 'them' + if item.option == option: + item.process_incoming(command) + known = True + if not known: + # handle unknown options + # only answer to positive requests and deny them + if command == WILL or command == DO: + self.telnetSendOption((command == WILL and DONT or WONT), option) + if self.logger: + self.logger.warning("rejected Telnet option: %r" % (option,)) + + + def _telnetProcessSubnegotiation(self, suboption): + """Process subnegotiation, the data between IAC SB and IAC SE.""" + if suboption[0:1] == COM_PORT_OPTION: + if self.logger: + self.logger.debug('received COM_PORT_OPTION: %r' % (suboption,)) + if suboption[1:2] == SET_BAUDRATE: + backup = self.serial.baudrate + try: + (baudrate,) = struct.unpack("!I", suboption[2:6]) + if baudrate != 0: + self.serial.baudrate = baudrate + except ValueError, e: + if self.logger: + self.logger.error("failed to set baud rate: %s" % (e,)) + self.serial.baudrate = backup + else: + if self.logger: + self.logger.info("%s baud rate: %s" % (baudrate and 'set' or 'get', self.serial.baudrate)) + self.rfc2217SendSubnegotiation(SERVER_SET_BAUDRATE, struct.pack("!I", self.serial.baudrate)) + elif suboption[1:2] == SET_DATASIZE: + backup = self.serial.bytesize + try: + (datasize,) = struct.unpack("!B", suboption[2:3]) + if datasize != 0: + self.serial.bytesize = datasize + except ValueError, e: + if self.logger: + self.logger.error("failed to set data size: %s" % (e,)) + self.serial.bytesize = backup + else: + if self.logger: + self.logger.info("%s data size: %s" % (datasize and 'set' or 'get', self.serial.bytesize)) + self.rfc2217SendSubnegotiation(SERVER_SET_DATASIZE, struct.pack("!B", self.serial.bytesize)) + elif suboption[1:2] == SET_PARITY: + backup = self.serial.parity + try: + parity = struct.unpack("!B", suboption[2:3])[0] + if parity != 0: + self.serial.parity = RFC2217_REVERSE_PARITY_MAP[parity] + except ValueError, e: + if self.logger: + self.logger.error("failed to set parity: %s" % (e,)) + self.serial.parity = backup + else: + if self.logger: + self.logger.info("%s parity: %s" % (parity and 'set' or 'get', self.serial.parity)) + self.rfc2217SendSubnegotiation( + SERVER_SET_PARITY, + struct.pack("!B", RFC2217_PARITY_MAP[self.serial.parity]) + ) + elif suboption[1:2] == SET_STOPSIZE: + backup = self.serial.stopbits + try: + stopbits = struct.unpack("!B", suboption[2:3])[0] + if stopbits != 0: + self.serial.stopbits = RFC2217_REVERSE_STOPBIT_MAP[stopbits] + except ValueError, e: + if self.logger: + self.logger.error("failed to set stop bits: %s" % (e,)) + self.serial.stopbits = backup + else: + if self.logger: + self.logger.info("%s stop bits: %s" % (stopbits and 'set' or 'get', self.serial.stopbits)) + self.rfc2217SendSubnegotiation( + SERVER_SET_STOPSIZE, + struct.pack("!B", RFC2217_STOPBIT_MAP[self.serial.stopbits]) + ) + elif suboption[1:2] == SET_CONTROL: + if suboption[2:3] == SET_CONTROL_REQ_FLOW_SETTING: + if self.serial.xonxoff: + self.rfc2217SendSubnegotiation(SERVER_SET_CONTROL, SET_CONTROL_USE_SW_FLOW_CONTROL) + elif self.serial.rtscts: + self.rfc2217SendSubnegotiation(SERVER_SET_CONTROL, SET_CONTROL_USE_HW_FLOW_CONTROL) + else: + self.rfc2217SendSubnegotiation(SERVER_SET_CONTROL, SET_CONTROL_USE_NO_FLOW_CONTROL) + elif suboption[2:3] == SET_CONTROL_USE_NO_FLOW_CONTROL: + self.serial.xonxoff = False + self.serial.rtscts = False + if self.logger: + self.logger.info("changed flow control to None") + self.rfc2217SendSubnegotiation(SERVER_SET_CONTROL, SET_CONTROL_USE_NO_FLOW_CONTROL) + elif suboption[2:3] == SET_CONTROL_USE_SW_FLOW_CONTROL: + self.serial.xonxoff = True + if self.logger: + self.logger.info("changed flow control to XON/XOFF") + self.rfc2217SendSubnegotiation(SERVER_SET_CONTROL, SET_CONTROL_USE_SW_FLOW_CONTROL) + elif suboption[2:3] == SET_CONTROL_USE_HW_FLOW_CONTROL: + self.serial.rtscts = True + if self.logger: + self.logger.info("changed flow control to RTS/CTS") + self.rfc2217SendSubnegotiation(SERVER_SET_CONTROL, SET_CONTROL_USE_HW_FLOW_CONTROL) + elif suboption[2:3] == SET_CONTROL_REQ_BREAK_STATE: + if self.logger: + self.logger.warning("requested break state - not implemented") + pass # XXX needs cached value + elif suboption[2:3] == SET_CONTROL_BREAK_ON: + self.serial.setBreak(True) + if self.logger: + self.logger.info("changed BREAK to active") + self.rfc2217SendSubnegotiation(SERVER_SET_CONTROL, SET_CONTROL_BREAK_ON) + elif suboption[2:3] == SET_CONTROL_BREAK_OFF: + self.serial.setBreak(False) + if self.logger: + self.logger.info("changed BREAK to inactive") + self.rfc2217SendSubnegotiation(SERVER_SET_CONTROL, SET_CONTROL_BREAK_OFF) + elif suboption[2:3] == SET_CONTROL_REQ_DTR: + if self.logger: + self.logger.warning("requested DTR state - not implemented") + pass # XXX needs cached value + elif suboption[2:3] == SET_CONTROL_DTR_ON: + self.serial.setDTR(True) + if self.logger: + self.logger.info("changed DTR to active") + self.rfc2217SendSubnegotiation(SERVER_SET_CONTROL, SET_CONTROL_DTR_ON) + elif suboption[2:3] == SET_CONTROL_DTR_OFF: + self.serial.setDTR(False) + if self.logger: + self.logger.info("changed DTR to inactive") + self.rfc2217SendSubnegotiation(SERVER_SET_CONTROL, SET_CONTROL_DTR_OFF) + elif suboption[2:3] == SET_CONTROL_REQ_RTS: + if self.logger: + self.logger.warning("requested RTS state - not implemented") + pass # XXX needs cached value + #~ self.rfc2217SendSubnegotiation(SERVER_SET_CONTROL, SET_CONTROL_RTS_ON) + elif suboption[2:3] == SET_CONTROL_RTS_ON: + self.serial.setRTS(True) + if self.logger: + self.logger.info("changed RTS to active") + self.rfc2217SendSubnegotiation(SERVER_SET_CONTROL, SET_CONTROL_RTS_ON) + elif suboption[2:3] == SET_CONTROL_RTS_OFF: + self.serial.setRTS(False) + if self.logger: + self.logger.info("changed RTS to inactive") + self.rfc2217SendSubnegotiation(SERVER_SET_CONTROL, SET_CONTROL_RTS_OFF) + #~ elif suboption[2:3] == SET_CONTROL_REQ_FLOW_SETTING_IN: + #~ elif suboption[2:3] == SET_CONTROL_USE_NO_FLOW_CONTROL_IN: + #~ elif suboption[2:3] == SET_CONTROL_USE_SW_FLOW_CONTOL_IN: + #~ elif suboption[2:3] == SET_CONTROL_USE_HW_FLOW_CONTOL_IN: + #~ elif suboption[2:3] == SET_CONTROL_USE_DCD_FLOW_CONTROL: + #~ elif suboption[2:3] == SET_CONTROL_USE_DTR_FLOW_CONTROL: + #~ elif suboption[2:3] == SET_CONTROL_USE_DSR_FLOW_CONTROL: + elif suboption[1:2] == NOTIFY_LINESTATE: + # client polls for current state + self.rfc2217SendSubnegotiation( + SERVER_NOTIFY_LINESTATE, + to_bytes([0]) # sorry, nothing like that implemented + ) + elif suboption[1:2] == NOTIFY_MODEMSTATE: + if self.logger: + self.logger.info("request for modem state") + # client polls for current state + self.check_modem_lines(force_notification=True) + elif suboption[1:2] == FLOWCONTROL_SUSPEND: + if self.logger: + self.logger.info("suspend") + self._remote_suspend_flow = True + elif suboption[1:2] == FLOWCONTROL_RESUME: + if self.logger: + self.logger.info("resume") + self._remote_suspend_flow = False + elif suboption[1:2] == SET_LINESTATE_MASK: + self.linstate_mask = ord(suboption[2:3]) # ensure it is a number + if self.logger: + self.logger.info("line state mask: 0x%02x" % (self.linstate_mask,)) + elif suboption[1:2] == SET_MODEMSTATE_MASK: + self.modemstate_mask = ord(suboption[2:3]) # ensure it is a number + if self.logger: + self.logger.info("modem state mask: 0x%02x" % (self.modemstate_mask,)) + elif suboption[1:2] == PURGE_DATA: + if suboption[2:3] == PURGE_RECEIVE_BUFFER: + self.serial.flushInput() + if self.logger: + self.logger.info("purge in") + self.rfc2217SendSubnegotiation(SERVER_PURGE_DATA, PURGE_RECEIVE_BUFFER) + elif suboption[2:3] == PURGE_TRANSMIT_BUFFER: + self.serial.flushOutput() + if self.logger: + self.logger.info("purge out") + self.rfc2217SendSubnegotiation(SERVER_PURGE_DATA, PURGE_TRANSMIT_BUFFER) + elif suboption[2:3] == PURGE_BOTH_BUFFERS: + self.serial.flushInput() + self.serial.flushOutput() + if self.logger: + self.logger.info("purge both") + self.rfc2217SendSubnegotiation(SERVER_PURGE_DATA, PURGE_BOTH_BUFFERS) + else: + if self.logger: + self.logger.error("undefined PURGE_DATA: %r" % list(suboption[2:])) + else: + if self.logger: + self.logger.error("undefined COM_PORT_OPTION: %r" % list(suboption[1:])) + else: + if self.logger: + self.logger.warning("unknown subnegotiation: %r" % (suboption,)) + + +# simple client test +if __name__ == '__main__': + import sys + s = Serial('rfc2217://localhost:7000', 115200) + sys.stdout.write('%s\n' % s) + + #~ s.baudrate = 1898 + + sys.stdout.write("write...\n") + s.write("hello\n") + s.flush() + sys.stdout.write("read: %s\n" % s.read(5)) + + #~ s.baudrate = 19200 + #~ s.databits = 7 + s.close() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/serialcli.py b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/serialcli.py new file mode 100644 index 0000000..19169a3 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/serialcli.py @@ -0,0 +1,273 @@ +#! python +# Python Serial Port Extension for Win32, Linux, BSD, Jython and .NET/Mono +# serial driver for .NET/Mono (IronPython), .NET >= 2 +# see __init__.py +# +# (C) 2008 Chris Liechti +# this is distributed under a free software license, see license.txt + +import clr +import System +import System.IO.Ports +from serial.serialutil import * + + +def device(portnum): + """Turn a port number into a device name""" + return System.IO.Ports.SerialPort.GetPortNames()[portnum] + + +# must invoke function with byte array, make a helper to convert strings +# to byte arrays +sab = System.Array[System.Byte] +def as_byte_array(string): + return sab([ord(x) for x in string]) # XXX will require adaption when run with a 3.x compatible IronPython + +class IronSerial(SerialBase): + """Serial port implementation for .NET/Mono.""" + + BAUDRATES = (50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, + 9600, 19200, 38400, 57600, 115200) + + def open(self): + """Open port with current settings. This may throw a SerialException + if the port cannot be opened.""" + if self._port is None: + raise SerialException("Port must be configured before it can be used.") + if self._isOpen: + raise SerialException("Port is already open.") + try: + self._port_handle = System.IO.Ports.SerialPort(self.portstr) + except Exception, msg: + self._port_handle = None + raise SerialException("could not open port %s: %s" % (self.portstr, msg)) + + self._reconfigurePort() + self._port_handle.Open() + self._isOpen = True + if not self._rtscts: + self.setRTS(True) + self.setDTR(True) + self.flushInput() + self.flushOutput() + + def _reconfigurePort(self): + """Set communication parameters on opened port.""" + if not self._port_handle: + raise SerialException("Can only operate on a valid port handle") + + #~ self._port_handle.ReceivedBytesThreshold = 1 + + if self._timeout is None: + self._port_handle.ReadTimeout = System.IO.Ports.SerialPort.InfiniteTimeout + else: + self._port_handle.ReadTimeout = int(self._timeout*1000) + + # if self._timeout != 0 and self._interCharTimeout is not None: + # timeouts = (int(self._interCharTimeout * 1000),) + timeouts[1:] + + if self._writeTimeout is None: + self._port_handle.WriteTimeout = System.IO.Ports.SerialPort.InfiniteTimeout + else: + self._port_handle.WriteTimeout = int(self._writeTimeout*1000) + + + # Setup the connection info. + try: + self._port_handle.BaudRate = self._baudrate + except IOError, e: + # catch errors from illegal baudrate settings + raise ValueError(str(e)) + + if self._bytesize == FIVEBITS: + self._port_handle.DataBits = 5 + elif self._bytesize == SIXBITS: + self._port_handle.DataBits = 6 + elif self._bytesize == SEVENBITS: + self._port_handle.DataBits = 7 + elif self._bytesize == EIGHTBITS: + self._port_handle.DataBits = 8 + else: + raise ValueError("Unsupported number of data bits: %r" % self._bytesize) + + if self._parity == PARITY_NONE: + self._port_handle.Parity = getattr(System.IO.Ports.Parity, 'None') # reserved keyword in Py3k + elif self._parity == PARITY_EVEN: + self._port_handle.Parity = System.IO.Ports.Parity.Even + elif self._parity == PARITY_ODD: + self._port_handle.Parity = System.IO.Ports.Parity.Odd + elif self._parity == PARITY_MARK: + self._port_handle.Parity = System.IO.Ports.Parity.Mark + elif self._parity == PARITY_SPACE: + self._port_handle.Parity = System.IO.Ports.Parity.Space + else: + raise ValueError("Unsupported parity mode: %r" % self._parity) + + if self._stopbits == STOPBITS_ONE: + self._port_handle.StopBits = System.IO.Ports.StopBits.One + elif self._stopbits == STOPBITS_ONE_POINT_FIVE: + self._port_handle.StopBits = System.IO.Ports.StopBits.OnePointFive + elif self._stopbits == STOPBITS_TWO: + self._port_handle.StopBits = System.IO.Ports.StopBits.Two + else: + raise ValueError("Unsupported number of stop bits: %r" % self._stopbits) + + if self._rtscts and self._xonxoff: + self._port_handle.Handshake = System.IO.Ports.Handshake.RequestToSendXOnXOff + elif self._rtscts: + self._port_handle.Handshake = System.IO.Ports.Handshake.RequestToSend + elif self._xonxoff: + self._port_handle.Handshake = System.IO.Ports.Handshake.XOnXOff + else: + self._port_handle.Handshake = getattr(System.IO.Ports.Handshake, 'None') # reserved keyword in Py3k + + #~ def __del__(self): + #~ self.close() + + def close(self): + """Close port""" + if self._isOpen: + if self._port_handle: + try: + self._port_handle.Close() + except System.IO.Ports.InvalidOperationException: + # ignore errors. can happen for unplugged USB serial devices + pass + self._port_handle = None + self._isOpen = False + + def makeDeviceName(self, port): + try: + return device(port) + except TypeError, e: + raise SerialException(str(e)) + + # - - - - - - - - - - - - - - - - - - - - - - - - + + def inWaiting(self): + """Return the number of characters currently in the input buffer.""" + if not self._port_handle: raise portNotOpenError + return self._port_handle.BytesToRead + + def read(self, size=1): + """Read size bytes from the serial port. If a timeout is set it may + return less characters as requested. With no timeout it will block + until the requested number of bytes is read.""" + if not self._port_handle: raise portNotOpenError + # must use single byte reads as this is the only way to read + # without applying encodings + data = bytearray() + while size: + try: + data.append(self._port_handle.ReadByte()) + except System.TimeoutException, e: + break + else: + size -= 1 + return bytes(data) + + def write(self, data): + """Output the given string over the serial port.""" + if not self._port_handle: raise portNotOpenError + if not isinstance(data, (bytes, bytearray)): + raise TypeError('expected %s or bytearray, got %s' % (bytes, type(data))) + try: + # must call overloaded method with byte array argument + # as this is the only one not applying encodings + self._port_handle.Write(as_byte_array(data), 0, len(data)) + except System.TimeoutException, e: + raise writeTimeoutError + return len(data) + + def flushInput(self): + """Clear input buffer, discarding all that is in the buffer.""" + if not self._port_handle: raise portNotOpenError + self._port_handle.DiscardInBuffer() + + def flushOutput(self): + """Clear output buffer, aborting the current output and + discarding all that is in the buffer.""" + if not self._port_handle: raise portNotOpenError + self._port_handle.DiscardOutBuffer() + + def sendBreak(self, duration=0.25): + """Send break condition. Timed, returns to idle state after given duration.""" + if not self._port_handle: raise portNotOpenError + import time + self._port_handle.BreakState = True + time.sleep(duration) + self._port_handle.BreakState = False + + def setBreak(self, level=True): + """Set break: Controls TXD. When active, to transmitting is possible.""" + if not self._port_handle: raise portNotOpenError + self._port_handle.BreakState = bool(level) + + def setRTS(self, level=True): + """Set terminal status line: Request To Send""" + if not self._port_handle: raise portNotOpenError + self._port_handle.RtsEnable = bool(level) + + def setDTR(self, level=True): + """Set terminal status line: Data Terminal Ready""" + if not self._port_handle: raise portNotOpenError + self._port_handle.DtrEnable = bool(level) + + def getCTS(self): + """Read terminal status line: Clear To Send""" + if not self._port_handle: raise portNotOpenError + return self._port_handle.CtsHolding + + def getDSR(self): + """Read terminal status line: Data Set Ready""" + if not self._port_handle: raise portNotOpenError + return self._port_handle.DsrHolding + + def getRI(self): + """Read terminal status line: Ring Indicator""" + if not self._port_handle: raise portNotOpenError + #~ return self._port_handle.XXX + return False #XXX an error would be better + + def getCD(self): + """Read terminal status line: Carrier Detect""" + if not self._port_handle: raise portNotOpenError + return self._port_handle.CDHolding + + # - - platform specific - - - - + # none + + +# assemble Serial class with the platform specific implementation and the base +# for file-like behavior. for Python 2.6 and newer, that provide the new I/O +# library, derive from io.RawIOBase +try: + import io +except ImportError: + # classic version with our own file-like emulation + class Serial(IronSerial, FileLike): + pass +else: + # io library present + class Serial(IronSerial, io.RawIOBase): + pass + + +# Nur Testfunktion!! +if __name__ == '__main__': + import sys + + s = Serial(0) + sys.stdio.write('%s\n' % s) + + s = Serial() + sys.stdio.write('%s\n' % s) + + + s.baudrate = 19200 + s.databits = 7 + s.close() + s.port = 0 + s.open() + sys.stdio.write('%s\n' % s) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/serialjava.py b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/serialjava.py new file mode 100644 index 0000000..46a78f8 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/serialjava.py @@ -0,0 +1,262 @@ +#!jython +# +# Python Serial Port Extension for Win32, Linux, BSD, Jython +# module for serial IO for Jython and JavaComm +# see __init__.py +# +# (C) 2002-2008 Chris Liechti +# this is distributed under a free software license, see license.txt + +from serial.serialutil import * + +def my_import(name): + mod = __import__(name) + components = name.split('.') + for comp in components[1:]: + mod = getattr(mod, comp) + return mod + + +def detect_java_comm(names): + """try given list of modules and return that imports""" + for name in names: + try: + mod = my_import(name) + mod.SerialPort + return mod + except (ImportError, AttributeError): + pass + raise ImportError("No Java Communications API implementation found") + + +# Java Communications API implementations +# http://mho.republika.pl/java/comm/ + +comm = detect_java_comm([ + 'javax.comm', # Sun/IBM + 'gnu.io', # RXTX +]) + + +def device(portnumber): + """Turn a port number into a device name""" + enum = comm.CommPortIdentifier.getPortIdentifiers() + ports = [] + while enum.hasMoreElements(): + el = enum.nextElement() + if el.getPortType() == comm.CommPortIdentifier.PORT_SERIAL: + ports.append(el) + return ports[portnumber].getName() + + +class JavaSerial(SerialBase): + """Serial port class, implemented with Java Communications API and + thus usable with jython and the appropriate java extension.""" + + def open(self): + """Open port with current settings. This may throw a SerialException + if the port cannot be opened.""" + if self._port is None: + raise SerialException("Port must be configured before it can be used.") + if self._isOpen: + raise SerialException("Port is already open.") + if type(self._port) == type(''): # strings are taken directly + portId = comm.CommPortIdentifier.getPortIdentifier(self._port) + else: + portId = comm.CommPortIdentifier.getPortIdentifier(device(self._port)) # numbers are transformed to a comport id obj + try: + self.sPort = portId.open("python serial module", 10) + except Exception, msg: + self.sPort = None + raise SerialException("Could not open port: %s" % msg) + self._reconfigurePort() + self._instream = self.sPort.getInputStream() + self._outstream = self.sPort.getOutputStream() + self._isOpen = True + + def _reconfigurePort(self): + """Set communication parameters on opened port.""" + if not self.sPort: + raise SerialException("Can only operate on a valid port handle") + + self.sPort.enableReceiveTimeout(30) + if self._bytesize == FIVEBITS: + jdatabits = comm.SerialPort.DATABITS_5 + elif self._bytesize == SIXBITS: + jdatabits = comm.SerialPort.DATABITS_6 + elif self._bytesize == SEVENBITS: + jdatabits = comm.SerialPort.DATABITS_7 + elif self._bytesize == EIGHTBITS: + jdatabits = comm.SerialPort.DATABITS_8 + else: + raise ValueError("unsupported bytesize: %r" % self._bytesize) + + if self._stopbits == STOPBITS_ONE: + jstopbits = comm.SerialPort.STOPBITS_1 + elif stopbits == STOPBITS_ONE_POINT_FIVE: + self._jstopbits = comm.SerialPort.STOPBITS_1_5 + elif self._stopbits == STOPBITS_TWO: + jstopbits = comm.SerialPort.STOPBITS_2 + else: + raise ValueError("unsupported number of stopbits: %r" % self._stopbits) + + if self._parity == PARITY_NONE: + jparity = comm.SerialPort.PARITY_NONE + elif self._parity == PARITY_EVEN: + jparity = comm.SerialPort.PARITY_EVEN + elif self._parity == PARITY_ODD: + jparity = comm.SerialPort.PARITY_ODD + elif self._parity == PARITY_MARK: + jparity = comm.SerialPort.PARITY_MARK + elif self._parity == PARITY_SPACE: + jparity = comm.SerialPort.PARITY_SPACE + else: + raise ValueError("unsupported parity type: %r" % self._parity) + + jflowin = jflowout = 0 + if self._rtscts: + jflowin |= comm.SerialPort.FLOWCONTROL_RTSCTS_IN + jflowout |= comm.SerialPort.FLOWCONTROL_RTSCTS_OUT + if self._xonxoff: + jflowin |= comm.SerialPort.FLOWCONTROL_XONXOFF_IN + jflowout |= comm.SerialPort.FLOWCONTROL_XONXOFF_OUT + + self.sPort.setSerialPortParams(self._baudrate, jdatabits, jstopbits, jparity) + self.sPort.setFlowControlMode(jflowin | jflowout) + + if self._timeout >= 0: + self.sPort.enableReceiveTimeout(self._timeout*1000) + else: + self.sPort.disableReceiveTimeout() + + def close(self): + """Close port""" + if self._isOpen: + if self.sPort: + self._instream.close() + self._outstream.close() + self.sPort.close() + self.sPort = None + self._isOpen = False + + def makeDeviceName(self, port): + return device(port) + + # - - - - - - - - - - - - - - - - - - - - - - - - + + def inWaiting(self): + """Return the number of characters currently in the input buffer.""" + if not self.sPort: raise portNotOpenError + return self._instream.available() + + def read(self, size=1): + """Read size bytes from the serial port. If a timeout is set it may + return less characters as requested. With no timeout it will block + until the requested number of bytes is read.""" + if not self.sPort: raise portNotOpenError + read = bytearray() + if size > 0: + while len(read) < size: + x = self._instream.read() + if x == -1: + if self.timeout >= 0: + break + else: + read.append(x) + return bytes(read) + + def write(self, data): + """Output the given string over the serial port.""" + if not self.sPort: raise portNotOpenError + if not isinstance(data, (bytes, bytearray)): + raise TypeError('expected %s or bytearray, got %s' % (bytes, type(data))) + self._outstream.write(data) + return len(data) + + def flushInput(self): + """Clear input buffer, discarding all that is in the buffer.""" + if not self.sPort: raise portNotOpenError + self._instream.skip(self._instream.available()) + + def flushOutput(self): + """Clear output buffer, aborting the current output and + discarding all that is in the buffer.""" + if not self.sPort: raise portNotOpenError + self._outstream.flush() + + def sendBreak(self, duration=0.25): + """Send break condition. Timed, returns to idle state after given duration.""" + if not self.sPort: raise portNotOpenError + self.sPort.sendBreak(duration*1000.0) + + def setBreak(self, level=1): + """Set break: Controls TXD. When active, to transmitting is possible.""" + if self.fd is None: raise portNotOpenError + raise SerialException("The setBreak function is not implemented in java.") + + def setRTS(self, level=1): + """Set terminal status line: Request To Send""" + if not self.sPort: raise portNotOpenError + self.sPort.setRTS(level) + + def setDTR(self, level=1): + """Set terminal status line: Data Terminal Ready""" + if not self.sPort: raise portNotOpenError + self.sPort.setDTR(level) + + def getCTS(self): + """Read terminal status line: Clear To Send""" + if not self.sPort: raise portNotOpenError + self.sPort.isCTS() + + def getDSR(self): + """Read terminal status line: Data Set Ready""" + if not self.sPort: raise portNotOpenError + self.sPort.isDSR() + + def getRI(self): + """Read terminal status line: Ring Indicator""" + if not self.sPort: raise portNotOpenError + self.sPort.isRI() + + def getCD(self): + """Read terminal status line: Carrier Detect""" + if not self.sPort: raise portNotOpenError + self.sPort.isCD() + + +# assemble Serial class with the platform specific implementation and the base +# for file-like behavior. for Python 2.6 and newer, that provide the new I/O +# library, derive from io.RawIOBase +try: + import io +except ImportError: + # classic version with our own file-like emulation + class Serial(JavaSerial, FileLike): + pass +else: + # io library present + class Serial(JavaSerial, io.RawIOBase): + pass + + +if __name__ == '__main__': + s = Serial(0, + baudrate=19200, # baudrate + bytesize=EIGHTBITS, # number of databits + parity=PARITY_EVEN, # enable parity checking + stopbits=STOPBITS_ONE, # number of stopbits + timeout=3, # set a timeout value, None for waiting forever + xonxoff=0, # enable software flow control + rtscts=0, # enable RTS/CTS flow control + ) + s.setRTS(1) + s.setDTR(1) + s.flushInput() + s.flushOutput() + s.write('hello') + sys.stdio.write('%r\n' % s.read(5)) + sys.stdio.write('%s\n' % s.inWaiting()) + del s + + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/serialposix.py b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/serialposix.py new file mode 100644 index 0000000..b9b4b28 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/serialposix.py @@ -0,0 +1,703 @@ +#!/usr/bin/env python +# +# Python Serial Port Extension for Win32, Linux, BSD, Jython +# module for serial IO for POSIX compatible systems, like Linux +# see __init__.py +# +# (C) 2001-2010 Chris Liechti +# this is distributed under a free software license, see license.txt +# +# parts based on code from Grant B. Edwards : +# ftp://ftp.visi.com/users/grante/python/PosixSerial.py +# +# references: http://www.easysw.com/~mike/serial/serial.html + +import sys, os, fcntl, termios, struct, select, errno, time +from serial.serialutil import * + +# Do check the Python version as some constants have moved. +if (sys.hexversion < 0x020100f0): + import TERMIOS +else: + TERMIOS = termios + +if (sys.hexversion < 0x020200f0): + import FCNTL +else: + FCNTL = fcntl + +# try to detect the OS so that a device can be selected... +# this code block should supply a device() and set_special_baudrate() function +# for the platform +plat = sys.platform.lower() + +if plat[:5] == 'linux': # Linux (confirmed) + + def device(port): + return '/dev/ttyS%d' % port + + TCGETS2 = 0x802C542A + TCSETS2 = 0x402C542B + BOTHER = 0o010000 + + def set_special_baudrate(port, baudrate): + # right size is 44 on x86_64, allow for some growth + import array + buf = array.array('i', [0] * 64) + + try: + # get serial_struct + FCNTL.ioctl(port.fd, TCGETS2, buf) + # set custom speed + buf[2] &= ~TERMIOS.CBAUD + buf[2] |= BOTHER + buf[9] = buf[10] = baudrate + + # set serial_struct + res = FCNTL.ioctl(port.fd, TCSETS2, buf) + except IOError, e: + raise ValueError('Failed to set custom baud rate (%s): %s' % (baudrate, e)) + + baudrate_constants = { + 0: 0000000, # hang up + 50: 0000001, + 75: 0000002, + 110: 0000003, + 134: 0000004, + 150: 0000005, + 200: 0000006, + 300: 0000007, + 600: 0000010, + 1200: 0000011, + 1800: 0000012, + 2400: 0000013, + 4800: 0000014, + 9600: 0000015, + 19200: 0000016, + 38400: 0000017, + 57600: 0010001, + 115200: 0010002, + 230400: 0010003, + 460800: 0010004, + 500000: 0010005, + 576000: 0010006, + 921600: 0010007, + 1000000: 0010010, + 1152000: 0010011, + 1500000: 0010012, + 2000000: 0010013, + 2500000: 0010014, + 3000000: 0010015, + 3500000: 0010016, + 4000000: 0010017 + } + +elif plat == 'cygwin': # cygwin/win32 (confirmed) + + def device(port): + return '/dev/com%d' % (port + 1) + + def set_special_baudrate(port, baudrate): + raise ValueError("sorry don't know how to handle non standard baud rate on this platform") + + baudrate_constants = { + 128000: 0x01003, + 256000: 0x01005, + 500000: 0x01007, + 576000: 0x01008, + 921600: 0x01009, + 1000000: 0x0100a, + 1152000: 0x0100b, + 1500000: 0x0100c, + 2000000: 0x0100d, + 2500000: 0x0100e, + 3000000: 0x0100f + } + +elif plat[:7] == 'openbsd': # OpenBSD + + def device(port): + return '/dev/cua%02d' % port + + def set_special_baudrate(port, baudrate): + raise ValueError("sorry don't know how to handle non standard baud rate on this platform") + + baudrate_constants = {} + +elif plat[:3] == 'bsd' or \ + plat[:7] == 'freebsd': + + def device(port): + return '/dev/cuad%d' % port + + def set_special_baudrate(port, baudrate): + raise ValueError("sorry don't know how to handle non standard baud rate on this platform") + + baudrate_constants = {} + +elif plat[:6] == 'darwin': # OS X + + version = os.uname()[2].split('.') + # Tiger or above can support arbitrary serial speeds + if int(version[0]) >= 8: + def set_special_baudrate(port, baudrate): + # use IOKit-specific call to set up high speeds + import array, fcntl + buf = array.array('i', [baudrate]) + IOSSIOSPEED = 0x80045402 #_IOW('T', 2, speed_t) + fcntl.ioctl(port.fd, IOSSIOSPEED, buf, 1) + else: # version < 8 + def set_special_baudrate(port, baudrate): + raise ValueError("baud rate not supported") + + def device(port): + return '/dev/cuad%d' % port + + baudrate_constants = {} + + +elif plat[:6] == 'netbsd': # NetBSD 1.6 testing by Erk + + def device(port): + return '/dev/dty%02d' % port + + def set_special_baudrate(port, baudrate): + raise ValueError("sorry don't know how to handle non standard baud rate on this platform") + + baudrate_constants = {} + +elif plat[:4] == 'irix': # IRIX (partially tested) + + def device(port): + return '/dev/ttyf%d' % (port+1) #XXX different device names depending on flow control + + def set_special_baudrate(port, baudrate): + raise ValueError("sorry don't know how to handle non standard baud rate on this platform") + + baudrate_constants = {} + +elif plat[:2] == 'hp': # HP-UX (not tested) + + def device(port): + return '/dev/tty%dp0' % (port+1) + + def set_special_baudrate(port, baudrate): + raise ValueError("sorry don't know how to handle non standard baud rate on this platform") + + baudrate_constants = {} + +elif plat[:5] == 'sunos': # Solaris/SunOS (confirmed) + + def device(port): + return '/dev/tty%c' % (ord('a')+port) + + def set_special_baudrate(port, baudrate): + raise ValueError("sorry don't know how to handle non standard baud rate on this platform") + + baudrate_constants = {} + +elif plat[:3] == 'aix': # AIX + + def device(port): + return '/dev/tty%d' % (port) + + def set_special_baudrate(port, baudrate): + raise ValueError("sorry don't know how to handle non standard baud rate on this platform") + + baudrate_constants = {} + +else: + # platform detection has failed... + sys.stderr.write("""\ +don't know how to number ttys on this system. +! Use an explicit path (eg /dev/ttyS1) or send this information to +! the author of this module: + +sys.platform = %r +os.name = %r +serialposix.py version = %s + +also add the device name of the serial port and where the +counting starts for the first serial port. +e.g. 'first serial port: /dev/ttyS0' +and with a bit luck you can get this module running... +""" % (sys.platform, os.name, VERSION)) + # no exception, just continue with a brave attempt to build a device name + # even if the device name is not correct for the platform it has chances + # to work using a string with the real device name as port parameter. + def device(portum): + return '/dev/ttyS%d' % portnum + def set_special_baudrate(port, baudrate): + raise SerialException("sorry don't know how to handle non standard baud rate on this platform") + baudrate_constants = {} + #~ raise Exception, "this module does not run on this platform, sorry." + +# whats up with "aix", "beos", .... +# they should work, just need to know the device names. + + +# load some constants for later use. +# try to use values from TERMIOS, use defaults from linux otherwise +TIOCMGET = hasattr(TERMIOS, 'TIOCMGET') and TERMIOS.TIOCMGET or 0x5415 +TIOCMBIS = hasattr(TERMIOS, 'TIOCMBIS') and TERMIOS.TIOCMBIS or 0x5416 +TIOCMBIC = hasattr(TERMIOS, 'TIOCMBIC') and TERMIOS.TIOCMBIC or 0x5417 +TIOCMSET = hasattr(TERMIOS, 'TIOCMSET') and TERMIOS.TIOCMSET or 0x5418 + +#TIOCM_LE = hasattr(TERMIOS, 'TIOCM_LE') and TERMIOS.TIOCM_LE or 0x001 +TIOCM_DTR = hasattr(TERMIOS, 'TIOCM_DTR') and TERMIOS.TIOCM_DTR or 0x002 +TIOCM_RTS = hasattr(TERMIOS, 'TIOCM_RTS') and TERMIOS.TIOCM_RTS or 0x004 +#TIOCM_ST = hasattr(TERMIOS, 'TIOCM_ST') and TERMIOS.TIOCM_ST or 0x008 +#TIOCM_SR = hasattr(TERMIOS, 'TIOCM_SR') and TERMIOS.TIOCM_SR or 0x010 + +TIOCM_CTS = hasattr(TERMIOS, 'TIOCM_CTS') and TERMIOS.TIOCM_CTS or 0x020 +TIOCM_CAR = hasattr(TERMIOS, 'TIOCM_CAR') and TERMIOS.TIOCM_CAR or 0x040 +TIOCM_RNG = hasattr(TERMIOS, 'TIOCM_RNG') and TERMIOS.TIOCM_RNG or 0x080 +TIOCM_DSR = hasattr(TERMIOS, 'TIOCM_DSR') and TERMIOS.TIOCM_DSR or 0x100 +TIOCM_CD = hasattr(TERMIOS, 'TIOCM_CD') and TERMIOS.TIOCM_CD or TIOCM_CAR +TIOCM_RI = hasattr(TERMIOS, 'TIOCM_RI') and TERMIOS.TIOCM_RI or TIOCM_RNG +#TIOCM_OUT1 = hasattr(TERMIOS, 'TIOCM_OUT1') and TERMIOS.TIOCM_OUT1 or 0x2000 +#TIOCM_OUT2 = hasattr(TERMIOS, 'TIOCM_OUT2') and TERMIOS.TIOCM_OUT2 or 0x4000 +if hasattr(TERMIOS, 'TIOCINQ'): + TIOCINQ = TERMIOS.TIOCINQ +else: + TIOCINQ = hasattr(TERMIOS, 'FIONREAD') and TERMIOS.FIONREAD or 0x541B +TIOCOUTQ = hasattr(TERMIOS, 'TIOCOUTQ') and TERMIOS.TIOCOUTQ or 0x5411 + +TIOCM_zero_str = struct.pack('I', 0) +TIOCM_RTS_str = struct.pack('I', TIOCM_RTS) +TIOCM_DTR_str = struct.pack('I', TIOCM_DTR) + +TIOCSBRK = hasattr(TERMIOS, 'TIOCSBRK') and TERMIOS.TIOCSBRK or 0x5427 +TIOCCBRK = hasattr(TERMIOS, 'TIOCCBRK') and TERMIOS.TIOCCBRK or 0x5428 + + +class PosixSerial(SerialBase): + """Serial port class POSIX implementation. Serial port configuration is + done with termios and fcntl. Runs on Linux and many other Un*x like + systems.""" + + def open(self): + """Open port with current settings. This may throw a SerialException + if the port cannot be opened.""" + if self._port is None: + raise SerialException("Port must be configured before it can be used.") + if self._isOpen: + raise SerialException("Port is already open.") + self.fd = None + # open + try: + self.fd = os.open(self.portstr, os.O_RDWR|os.O_NOCTTY|os.O_NONBLOCK) + except IOError, msg: + self.fd = None + raise SerialException(msg.errno, "could not open port %s: %s" % (self._port, msg)) + #~ fcntl.fcntl(self.fd, FCNTL.F_SETFL, 0) # set blocking + + try: + self._reconfigurePort() + except: + try: + os.close(self.fd) + except: + # ignore any exception when closing the port + # also to keep original exception that happened when setting up + pass + self.fd = None + raise + else: + self._isOpen = True + self.flushInput() + + + def _reconfigurePort(self): + """Set communication parameters on opened port.""" + if self.fd is None: + raise SerialException("Can only operate on a valid file descriptor") + custom_baud = None + + vmin = vtime = 0 # timeout is done via select + if self._interCharTimeout is not None: + vmin = 1 + vtime = int(self._interCharTimeout * 10) + try: + orig_attr = termios.tcgetattr(self.fd) + iflag, oflag, cflag, lflag, ispeed, ospeed, cc = orig_attr + except termios.error, msg: # if a port is nonexistent but has a /dev file, it'll fail here + raise SerialException("Could not configure port: %s" % msg) + # set up raw mode / no echo / binary + cflag |= (TERMIOS.CLOCAL|TERMIOS.CREAD) + lflag &= ~(TERMIOS.ICANON|TERMIOS.ECHO|TERMIOS.ECHOE|TERMIOS.ECHOK|TERMIOS.ECHONL| + TERMIOS.ISIG|TERMIOS.IEXTEN) #|TERMIOS.ECHOPRT + for flag in ('ECHOCTL', 'ECHOKE'): # netbsd workaround for Erk + if hasattr(TERMIOS, flag): + lflag &= ~getattr(TERMIOS, flag) + + oflag &= ~(TERMIOS.OPOST) + iflag &= ~(TERMIOS.INLCR|TERMIOS.IGNCR|TERMIOS.ICRNL|TERMIOS.IGNBRK) + if hasattr(TERMIOS, 'IUCLC'): + iflag &= ~TERMIOS.IUCLC + if hasattr(TERMIOS, 'PARMRK'): + iflag &= ~TERMIOS.PARMRK + + # setup baud rate + try: + ispeed = ospeed = getattr(TERMIOS, 'B%s' % (self._baudrate)) + except AttributeError: + try: + ispeed = ospeed = baudrate_constants[self._baudrate] + except KeyError: + #~ raise ValueError('Invalid baud rate: %r' % self._baudrate) + # may need custom baud rate, it isn't in our list. + ispeed = ospeed = getattr(TERMIOS, 'B38400') + try: + custom_baud = int(self._baudrate) # store for later + except ValueError: + raise ValueError('Invalid baud rate: %r' % self._baudrate) + else: + if custom_baud < 0: + raise ValueError('Invalid baud rate: %r' % self._baudrate) + + # setup char len + cflag &= ~TERMIOS.CSIZE + if self._bytesize == 8: + cflag |= TERMIOS.CS8 + elif self._bytesize == 7: + cflag |= TERMIOS.CS7 + elif self._bytesize == 6: + cflag |= TERMIOS.CS6 + elif self._bytesize == 5: + cflag |= TERMIOS.CS5 + else: + raise ValueError('Invalid char len: %r' % self._bytesize) + # setup stopbits + if self._stopbits == STOPBITS_ONE: + cflag &= ~(TERMIOS.CSTOPB) + elif self._stopbits == STOPBITS_ONE_POINT_FIVE: + cflag |= (TERMIOS.CSTOPB) # XXX same as TWO.. there is no POSIX support for 1.5 + elif self._stopbits == STOPBITS_TWO: + cflag |= (TERMIOS.CSTOPB) + else: + raise ValueError('Invalid stop bit specification: %r' % self._stopbits) + # setup parity + iflag &= ~(TERMIOS.INPCK|TERMIOS.ISTRIP) + if self._parity == PARITY_NONE: + cflag &= ~(TERMIOS.PARENB|TERMIOS.PARODD) + elif self._parity == PARITY_EVEN: + cflag &= ~(TERMIOS.PARODD) + cflag |= (TERMIOS.PARENB) + elif self._parity == PARITY_ODD: + cflag |= (TERMIOS.PARENB|TERMIOS.PARODD) + else: + raise ValueError('Invalid parity: %r' % self._parity) + # setup flow control + # xonxoff + if hasattr(TERMIOS, 'IXANY'): + if self._xonxoff: + iflag |= (TERMIOS.IXON|TERMIOS.IXOFF) #|TERMIOS.IXANY) + else: + iflag &= ~(TERMIOS.IXON|TERMIOS.IXOFF|TERMIOS.IXANY) + else: + if self._xonxoff: + iflag |= (TERMIOS.IXON|TERMIOS.IXOFF) + else: + iflag &= ~(TERMIOS.IXON|TERMIOS.IXOFF) + # rtscts + if hasattr(TERMIOS, 'CRTSCTS'): + if self._rtscts: + cflag |= (TERMIOS.CRTSCTS) + else: + cflag &= ~(TERMIOS.CRTSCTS) + elif hasattr(TERMIOS, 'CNEW_RTSCTS'): # try it with alternate constant name + if self._rtscts: + cflag |= (TERMIOS.CNEW_RTSCTS) + else: + cflag &= ~(TERMIOS.CNEW_RTSCTS) + # XXX should there be a warning if setting up rtscts (and xonxoff etc) fails?? + + # buffer + # vmin "minimal number of characters to be read. = for non blocking" + if vmin < 0 or vmin > 255: + raise ValueError('Invalid vmin: %r ' % vmin) + cc[TERMIOS.VMIN] = vmin + # vtime + if vtime < 0 or vtime > 255: + raise ValueError('Invalid vtime: %r' % vtime) + cc[TERMIOS.VTIME] = vtime + # activate settings + if [iflag, oflag, cflag, lflag, ispeed, ospeed, cc] != orig_attr: + termios.tcsetattr(self.fd, TERMIOS.TCSANOW, [iflag, oflag, cflag, lflag, ispeed, ospeed, cc]) + + # apply custom baud rate, if any + if custom_baud is not None: + set_special_baudrate(self, custom_baud) + + def close(self): + """Close port""" + if self._isOpen: + if self.fd is not None: + os.close(self.fd) + self.fd = None + self._isOpen = False + + def makeDeviceName(self, port): + return device(port) + + # - - - - - - - - - - - - - - - - - - - - - - - - + + def inWaiting(self): + """Return the number of characters currently in the input buffer.""" + #~ s = fcntl.ioctl(self.fd, TERMIOS.FIONREAD, TIOCM_zero_str) + s = fcntl.ioctl(self.fd, TIOCINQ, TIOCM_zero_str) + return struct.unpack('I',s)[0] + + # select based implementation, proved to work on many systems + def read(self, size=1): + """Read size bytes from the serial port. If a timeout is set it may + return less characters as requested. With no timeout it will block + until the requested number of bytes is read.""" + if not self._isOpen: raise portNotOpenError + read = bytearray() + while len(read) < size: + try: + ready,_,_ = select.select([self.fd],[],[], self._timeout) + # If select was used with a timeout, and the timeout occurs, it + # returns with empty lists -> thus abort read operation. + # For timeout == 0 (non-blocking operation) also abort when there + # is nothing to read. + if not ready: + break # timeout + buf = os.read(self.fd, size-len(read)) + # read should always return some data as select reported it was + # ready to read when we get to this point. + if not buf: + # Disconnected devices, at least on Linux, show the + # behavior that they are always ready to read immediately + # but reading returns nothing. + raise SerialException('device reports readiness to read but returned no data (device disconnected or multiple access on port?)') + read.extend(buf) + except select.error, e: + # ignore EAGAIN errors. all other errors are shown + # see also http://www.python.org/dev/peps/pep-3151/#select + if e[0] != errno.EAGAIN: + raise SerialException('read failed: %s' % (e,)) + except OSError, e: + # ignore EAGAIN errors. all other errors are shown + if e.errno != errno.EAGAIN: + raise SerialException('read failed: %s' % (e,)) + return bytes(read) + + def write(self, data): + """Output the given string over the serial port.""" + if not self._isOpen: raise portNotOpenError + d = to_bytes(data) + tx_len = len(d) + if self._writeTimeout is not None and self._writeTimeout > 0: + timeout = time.time() + self._writeTimeout + else: + timeout = None + while tx_len > 0: + try: + n = os.write(self.fd, d) + if timeout: + # when timeout is set, use select to wait for being ready + # with the time left as timeout + timeleft = timeout - time.time() + if timeleft < 0: + raise writeTimeoutError + _, ready, _ = select.select([], [self.fd], [], timeleft) + if not ready: + raise writeTimeoutError + else: + # wait for write operation + _, ready, _ = select.select([], [self.fd], [], None) + if not ready: + raise SerialException('write failed (select)') + d = d[n:] + tx_len -= n + except OSError, v: + if v.errno != errno.EAGAIN: + raise SerialException('write failed: %s' % (v,)) + return len(data) + + def flush(self): + """Flush of file like objects. In this case, wait until all data + is written.""" + self.drainOutput() + + def flushInput(self): + """Clear input buffer, discarding all that is in the buffer.""" + if not self._isOpen: raise portNotOpenError + termios.tcflush(self.fd, TERMIOS.TCIFLUSH) + + def flushOutput(self): + """Clear output buffer, aborting the current output and + discarding all that is in the buffer.""" + if not self._isOpen: raise portNotOpenError + termios.tcflush(self.fd, TERMIOS.TCOFLUSH) + + def sendBreak(self, duration=0.25): + """Send break condition. Timed, returns to idle state after given duration.""" + if not self._isOpen: raise portNotOpenError + termios.tcsendbreak(self.fd, int(duration/0.25)) + + def setBreak(self, level=1): + """Set break: Controls TXD. When active, no transmitting is possible.""" + if self.fd is None: raise portNotOpenError + if level: + fcntl.ioctl(self.fd, TIOCSBRK) + else: + fcntl.ioctl(self.fd, TIOCCBRK) + + def setRTS(self, level=1): + """Set terminal status line: Request To Send""" + if not self._isOpen: raise portNotOpenError + if level: + fcntl.ioctl(self.fd, TIOCMBIS, TIOCM_RTS_str) + else: + fcntl.ioctl(self.fd, TIOCMBIC, TIOCM_RTS_str) + + def setDTR(self, level=1): + """Set terminal status line: Data Terminal Ready""" + if not self._isOpen: raise portNotOpenError + if level: + fcntl.ioctl(self.fd, TIOCMBIS, TIOCM_DTR_str) + else: + fcntl.ioctl(self.fd, TIOCMBIC, TIOCM_DTR_str) + + def getCTS(self): + """Read terminal status line: Clear To Send""" + if not self._isOpen: raise portNotOpenError + s = fcntl.ioctl(self.fd, TIOCMGET, TIOCM_zero_str) + return struct.unpack('I',s)[0] & TIOCM_CTS != 0 + + def getDSR(self): + """Read terminal status line: Data Set Ready""" + if not self._isOpen: raise portNotOpenError + s = fcntl.ioctl(self.fd, TIOCMGET, TIOCM_zero_str) + return struct.unpack('I',s)[0] & TIOCM_DSR != 0 + + def getRI(self): + """Read terminal status line: Ring Indicator""" + if not self._isOpen: raise portNotOpenError + s = fcntl.ioctl(self.fd, TIOCMGET, TIOCM_zero_str) + return struct.unpack('I',s)[0] & TIOCM_RI != 0 + + def getCD(self): + """Read terminal status line: Carrier Detect""" + if not self._isOpen: raise portNotOpenError + s = fcntl.ioctl(self.fd, TIOCMGET, TIOCM_zero_str) + return struct.unpack('I',s)[0] & TIOCM_CD != 0 + + # - - platform specific - - - - + + def outWaiting(self): + """Return the number of characters currently in the output buffer.""" + #~ s = fcntl.ioctl(self.fd, TERMIOS.FIONREAD, TIOCM_zero_str) + s = fcntl.ioctl(self.fd, TIOCOUTQ, TIOCM_zero_str) + return struct.unpack('I',s)[0] + + def drainOutput(self): + """internal - not portable!""" + if not self._isOpen: raise portNotOpenError + termios.tcdrain(self.fd) + + def nonblocking(self): + """internal - not portable!""" + if not self._isOpen: raise portNotOpenError + fcntl.fcntl(self.fd, FCNTL.F_SETFL, os.O_NONBLOCK) + + def fileno(self): + """\ + For easier use of the serial port instance with select. + WARNING: this function is not portable to different platforms! + """ + if not self._isOpen: raise portNotOpenError + return self.fd + + def setXON(self, level=True): + """\ + Manually control flow - when software flow control is enabled. + This will send XON (true) and XOFF (false) to the other device. + WARNING: this function is not portable to different platforms! + """ + if not self.hComPort: raise portNotOpenError + if enable: + termios.tcflow(self.fd, TERMIOS.TCION) + else: + termios.tcflow(self.fd, TERMIOS.TCIOFF) + + def flowControlOut(self, enable): + """\ + Manually control flow of outgoing data - when hardware or software flow + control is enabled. + WARNING: this function is not portable to different platforms! + """ + if not self._isOpen: raise portNotOpenError + if enable: + termios.tcflow(self.fd, TERMIOS.TCOON) + else: + termios.tcflow(self.fd, TERMIOS.TCOOFF) + + +# assemble Serial class with the platform specifc implementation and the base +# for file-like behavior. for Python 2.6 and newer, that provide the new I/O +# library, derrive from io.RawIOBase +try: + import io +except ImportError: + # classic version with our own file-like emulation + class Serial(PosixSerial, FileLike): + pass +else: + # io library present + class Serial(PosixSerial, io.RawIOBase): + pass + +class PosixPollSerial(Serial): + """poll based read implementation. not all systems support poll properly. + however this one has better handling of errors, such as a device + disconnecting while it's in use (e.g. USB-serial unplugged)""" + + def read(self, size=1): + """Read size bytes from the serial port. If a timeout is set it may + return less characters as requested. With no timeout it will block + until the requested number of bytes is read.""" + if self.fd is None: raise portNotOpenError + read = bytearray() + poll = select.poll() + poll.register(self.fd, select.POLLIN|select.POLLERR|select.POLLHUP|select.POLLNVAL) + if size > 0: + while len(read) < size: + # print "\tread(): size",size, "have", len(read) #debug + # wait until device becomes ready to read (or something fails) + for fd, event in poll.poll(self._timeout*1000): + if event & (select.POLLERR|select.POLLHUP|select.POLLNVAL): + raise SerialException('device reports error (poll)') + # we don't care if it is select.POLLIN or timeout, that's + # handled below + buf = os.read(self.fd, size - len(read)) + read.extend(buf) + if ((self._timeout is not None and self._timeout >= 0) or + (self._interCharTimeout is not None and self._interCharTimeout > 0)) and not buf: + break # early abort on timeout + return bytes(read) + + +if __name__ == '__main__': + s = Serial(0, + baudrate=19200, # baud rate + bytesize=EIGHTBITS, # number of data bits + parity=PARITY_EVEN, # enable parity checking + stopbits=STOPBITS_ONE, # number of stop bits + timeout=3, # set a timeout value, None for waiting forever + xonxoff=0, # enable software flow control + rtscts=0, # enable RTS/CTS flow control + ) + s.setRTS(1) + s.setDTR(1) + s.flushInput() + s.flushOutput() + s.write('hello') + sys.stdout.write('%r\n' % s.read(5)) + sys.stdout.write('%s\n' % s.inWaiting()) + del s + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/serialutil.py b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/serialutil.py new file mode 100644 index 0000000..f28ece4 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/serialutil.py @@ -0,0 +1,551 @@ +#! python +# Python Serial Port Extension for Win32, Linux, BSD, Jython +# see __init__.py +# +# (C) 2001-2010 Chris Liechti +# this is distributed under a free software license, see license.txt + +# compatibility for older Python < 2.6 +try: + bytes + bytearray +except (NameError, AttributeError): + # Python older than 2.6 do not have these types. Like for Python 2.6 they + # should behave like str. For Python older than 3.0 we want to work with + # strings anyway, only later versions have a true bytes type. + bytes = str + # bytearray is a mutable type that is easily turned into an instance of + # bytes + class bytearray(list): + # for bytes(bytearray()) usage + def __str__(self): return ''.join(self) + def __repr__(self): return 'bytearray(%r)' % ''.join(self) + # append automatically converts integers to characters + def append(self, item): + if isinstance(item, str): + list.append(self, item) + else: + list.append(self, chr(item)) + # += + def __iadd__(self, other): + for byte in other: + self.append(byte) + return self + + def __getslice__(self, i, j): + return bytearray(list.__getslice__(self, i, j)) + + def __getitem__(self, item): + if isinstance(item, slice): + return bytearray(list.__getitem__(self, item)) + else: + return ord(list.__getitem__(self, item)) + + def __eq__(self, other): + if isinstance(other, basestring): + other = bytearray(other) + return list.__eq__(self, other) + +# ``memoryview`` was introduced in Python 2.7 and ``bytes(some_memoryview)`` +# isn't returning the contents (very unfortunate). Therefore we need special +# cases and test for it. Ensure that there is a ``memoryview`` object for older +# Python versions. This is easier than making every test dependent on its +# existence. +try: + memoryview +except (NameError, AttributeError): + # implementation does not matter as we do not realy use it. + # it just must not inherit from something else we might care for. + class memoryview: + pass + + +# all Python versions prior 3.x convert ``str([17])`` to '[17]' instead of '\x11' +# so a simple ``bytes(sequence)`` doesn't work for all versions +def to_bytes(seq): + """convert a sequence to a bytes type""" + if isinstance(seq, bytes): + return seq + elif isinstance(seq, bytearray): + return bytes(seq) + elif isinstance(seq, memoryview): + return seq.tobytes() + else: + b = bytearray() + for item in seq: + b.append(item) # this one handles int and str for our emulation and ints for Python 3.x + return bytes(b) + +# create control bytes +XON = to_bytes([17]) +XOFF = to_bytes([19]) + +CR = to_bytes([13]) +LF = to_bytes([10]) + + +PARITY_NONE, PARITY_EVEN, PARITY_ODD, PARITY_MARK, PARITY_SPACE = 'N', 'E', 'O', 'M', 'S' +STOPBITS_ONE, STOPBITS_ONE_POINT_FIVE, STOPBITS_TWO = (1, 1.5, 2) +FIVEBITS, SIXBITS, SEVENBITS, EIGHTBITS = (5, 6, 7, 8) + +PARITY_NAMES = { + PARITY_NONE: 'None', + PARITY_EVEN: 'Even', + PARITY_ODD: 'Odd', + PARITY_MARK: 'Mark', + PARITY_SPACE: 'Space', +} + + +class SerialException(IOError): + """Base class for serial port related exceptions.""" + + +class SerialTimeoutException(SerialException): + """Write timeouts give an exception""" + + +writeTimeoutError = SerialTimeoutException('Write timeout') +portNotOpenError = SerialException('Attempting to use a port that is not open') + + +class FileLike(object): + """An abstract file like class. + + This class implements readline and readlines based on read and + writelines based on write. + This class is used to provide the above functions for to Serial + port objects. + + Note that when the serial port was opened with _NO_ timeout that + readline blocks until it sees a newline (or the specified size is + reached) and that readlines would never return and therefore + refuses to work (it raises an exception in this case)! + """ + + def __init__(self): + self.closed = True + + def close(self): + self.closed = True + + # so that ports are closed when objects are discarded + def __del__(self): + """Destructor. Calls close().""" + # The try/except block is in case this is called at program + # exit time, when it's possible that globals have already been + # deleted, and then the close() call might fail. Since + # there's nothing we can do about such failures and they annoy + # the end users, we suppress the traceback. + try: + self.close() + except: + pass + + def writelines(self, sequence): + for line in sequence: + self.write(line) + + def flush(self): + """flush of file like objects""" + pass + + # iterator for e.g. "for line in Serial(0): ..." usage + def next(self): + line = self.readline() + if not line: raise StopIteration + return line + + def __iter__(self): + return self + + def readline(self, size=None, eol=LF): + """read a line which is terminated with end-of-line (eol) character + ('\n' by default) or until timeout.""" + leneol = len(eol) + line = bytearray() + while True: + c = self.read(1) + if c: + line += c + if line[-leneol:] == eol: + break + if size is not None and len(line) >= size: + break + else: + break + return bytes(line) + + def readlines(self, sizehint=None, eol=LF): + """read a list of lines, until timeout. + sizehint is ignored.""" + if self.timeout is None: + raise ValueError("Serial port MUST have enabled timeout for this function!") + leneol = len(eol) + lines = [] + while True: + line = self.readline(eol=eol) + if line: + lines.append(line) + if line[-leneol:] != eol: # was the line received with a timeout? + break + else: + break + return lines + + def xreadlines(self, sizehint=None): + """Read lines, implemented as generator. It will raise StopIteration on + timeout (empty read). sizehint is ignored.""" + while True: + line = self.readline() + if not line: break + yield line + + # other functions of file-likes - not used by pySerial + + #~ readinto(b) + + def seek(self, pos, whence=0): + raise IOError("file is not seekable") + + def tell(self): + raise IOError("file is not seekable") + + def truncate(self, n=None): + raise IOError("file is not seekable") + + def isatty(self): + return False + + +class SerialBase(object): + """Serial port base class. Provides __init__ function and properties to + get/set port settings.""" + + # default values, may be overridden in subclasses that do not support all values + BAUDRATES = (50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, + 9600, 19200, 38400, 57600, 115200, 230400, 460800, 500000, + 576000, 921600, 1000000, 1152000, 1500000, 2000000, 2500000, + 3000000, 3500000, 4000000) + BYTESIZES = (FIVEBITS, SIXBITS, SEVENBITS, EIGHTBITS) + PARITIES = (PARITY_NONE, PARITY_EVEN, PARITY_ODD, PARITY_MARK, PARITY_SPACE) + STOPBITS = (STOPBITS_ONE, STOPBITS_ONE_POINT_FIVE, STOPBITS_TWO) + + def __init__(self, + port = None, # number of device, numbering starts at + # zero. if everything fails, the user + # can specify a device string, note + # that this isn't portable anymore + # port will be opened if one is specified + baudrate=9600, # baud rate + bytesize=EIGHTBITS, # number of data bits + parity=PARITY_NONE, # enable parity checking + stopbits=STOPBITS_ONE, # number of stop bits + timeout=None, # set a timeout value, None to wait forever + xonxoff=False, # enable software flow control + rtscts=False, # enable RTS/CTS flow control + writeTimeout=None, # set a timeout for writes + dsrdtr=False, # None: use rtscts setting, dsrdtr override if True or False + interCharTimeout=None # Inter-character timeout, None to disable + ): + """Initialize comm port object. If a port is given, then the port will be + opened immediately. Otherwise a Serial port object in closed state + is returned.""" + + self._isOpen = False + self._port = None # correct value is assigned below through properties + self._baudrate = None # correct value is assigned below through properties + self._bytesize = None # correct value is assigned below through properties + self._parity = None # correct value is assigned below through properties + self._stopbits = None # correct value is assigned below through properties + self._timeout = None # correct value is assigned below through properties + self._writeTimeout = None # correct value is assigned below through properties + self._xonxoff = None # correct value is assigned below through properties + self._rtscts = None # correct value is assigned below through properties + self._dsrdtr = None # correct value is assigned below through properties + self._interCharTimeout = None # correct value is assigned below through properties + + # assign values using get/set methods using the properties feature + self.port = port + self.baudrate = baudrate + self.bytesize = bytesize + self.parity = parity + self.stopbits = stopbits + self.timeout = timeout + self.writeTimeout = writeTimeout + self.xonxoff = xonxoff + self.rtscts = rtscts + self.dsrdtr = dsrdtr + self.interCharTimeout = interCharTimeout + + if port is not None: + self.open() + + def isOpen(self): + """Check if the port is opened.""" + return self._isOpen + + # - - - - - - - - - - - - - - - - - - - - - - - - + + # TODO: these are not really needed as the is the BAUDRATES etc. attribute... + # maybe i remove them before the final release... + + def getSupportedBaudrates(self): + return [(str(b), b) for b in self.BAUDRATES] + + def getSupportedByteSizes(self): + return [(str(b), b) for b in self.BYTESIZES] + + def getSupportedStopbits(self): + return [(str(b), b) for b in self.STOPBITS] + + def getSupportedParities(self): + return [(PARITY_NAMES[b], b) for b in self.PARITIES] + + # - - - - - - - - - - - - - - - - - - - - - - - - + + def setPort(self, port): + """Change the port. The attribute portstr is set to a string that + contains the name of the port.""" + + was_open = self._isOpen + if was_open: self.close() + if port is not None: + if isinstance(port, basestring): + self.portstr = port + else: + self.portstr = self.makeDeviceName(port) + else: + self.portstr = None + self._port = port + self.name = self.portstr + if was_open: self.open() + + def getPort(self): + """Get the current port setting. The value that was passed on init or using + setPort() is passed back. See also the attribute portstr which contains + the name of the port as a string.""" + return self._port + + port = property(getPort, setPort, doc="Port setting") + + + def setBaudrate(self, baudrate): + """Change baud rate. It raises a ValueError if the port is open and the + baud rate is not possible. If the port is closed, then the value is + accepted and the exception is raised when the port is opened.""" + try: + b = int(baudrate) + except TypeError: + raise ValueError("Not a valid baudrate: %r" % (baudrate,)) + else: + if b <= 0: + raise ValueError("Not a valid baudrate: %r" % (baudrate,)) + self._baudrate = b + if self._isOpen: self._reconfigurePort() + + def getBaudrate(self): + """Get the current baud rate setting.""" + return self._baudrate + + baudrate = property(getBaudrate, setBaudrate, doc="Baud rate setting") + + + def setByteSize(self, bytesize): + """Change byte size.""" + if bytesize not in self.BYTESIZES: raise ValueError("Not a valid byte size: %r" % (bytesize,)) + self._bytesize = bytesize + if self._isOpen: self._reconfigurePort() + + def getByteSize(self): + """Get the current byte size setting.""" + return self._bytesize + + bytesize = property(getByteSize, setByteSize, doc="Byte size setting") + + + def setParity(self, parity): + """Change parity setting.""" + if parity not in self.PARITIES: raise ValueError("Not a valid parity: %r" % (parity,)) + self._parity = parity + if self._isOpen: self._reconfigurePort() + + def getParity(self): + """Get the current parity setting.""" + return self._parity + + parity = property(getParity, setParity, doc="Parity setting") + + + def setStopbits(self, stopbits): + """Change stop bits size.""" + if stopbits not in self.STOPBITS: raise ValueError("Not a valid stop bit size: %r" % (stopbits,)) + self._stopbits = stopbits + if self._isOpen: self._reconfigurePort() + + def getStopbits(self): + """Get the current stop bits setting.""" + return self._stopbits + + stopbits = property(getStopbits, setStopbits, doc="Stop bits setting") + + + def setTimeout(self, timeout): + """Change timeout setting.""" + if timeout is not None: + try: + timeout + 1 # test if it's a number, will throw a TypeError if not... + except TypeError: + raise ValueError("Not a valid timeout: %r" % (timeout,)) + if timeout < 0: raise ValueError("Not a valid timeout: %r" % (timeout,)) + self._timeout = timeout + if self._isOpen: self._reconfigurePort() + + def getTimeout(self): + """Get the current timeout setting.""" + return self._timeout + + timeout = property(getTimeout, setTimeout, doc="Timeout setting for read()") + + + def setWriteTimeout(self, timeout): + """Change timeout setting.""" + if timeout is not None: + if timeout < 0: raise ValueError("Not a valid timeout: %r" % (timeout,)) + try: + timeout + 1 #test if it's a number, will throw a TypeError if not... + except TypeError: + raise ValueError("Not a valid timeout: %r" % timeout) + + self._writeTimeout = timeout + if self._isOpen: self._reconfigurePort() + + def getWriteTimeout(self): + """Get the current timeout setting.""" + return self._writeTimeout + + writeTimeout = property(getWriteTimeout, setWriteTimeout, doc="Timeout setting for write()") + + + def setXonXoff(self, xonxoff): + """Change XON/XOFF setting.""" + self._xonxoff = xonxoff + if self._isOpen: self._reconfigurePort() + + def getXonXoff(self): + """Get the current XON/XOFF setting.""" + return self._xonxoff + + xonxoff = property(getXonXoff, setXonXoff, doc="XON/XOFF setting") + + def setRtsCts(self, rtscts): + """Change RTS/CTS flow control setting.""" + self._rtscts = rtscts + if self._isOpen: self._reconfigurePort() + + def getRtsCts(self): + """Get the current RTS/CTS flow control setting.""" + return self._rtscts + + rtscts = property(getRtsCts, setRtsCts, doc="RTS/CTS flow control setting") + + def setDsrDtr(self, dsrdtr=None): + """Change DsrDtr flow control setting.""" + if dsrdtr is None: + # if not set, keep backwards compatibility and follow rtscts setting + self._dsrdtr = self._rtscts + else: + # if defined independently, follow its value + self._dsrdtr = dsrdtr + if self._isOpen: self._reconfigurePort() + + def getDsrDtr(self): + """Get the current DSR/DTR flow control setting.""" + return self._dsrdtr + + dsrdtr = property(getDsrDtr, setDsrDtr, "DSR/DTR flow control setting") + + def setInterCharTimeout(self, interCharTimeout): + """Change inter-character timeout setting.""" + if interCharTimeout is not None: + if interCharTimeout < 0: raise ValueError("Not a valid timeout: %r" % interCharTimeout) + try: + interCharTimeout + 1 # test if it's a number, will throw a TypeError if not... + except TypeError: + raise ValueError("Not a valid timeout: %r" % interCharTimeout) + + self._interCharTimeout = interCharTimeout + if self._isOpen: self._reconfigurePort() + + def getInterCharTimeout(self): + """Get the current inter-character timeout setting.""" + return self._interCharTimeout + + interCharTimeout = property(getInterCharTimeout, setInterCharTimeout, doc="Inter-character timeout setting for read()") + + # - - - - - - - - - - - - - - - - - - - - - - - - + + _SETTINGS = ('baudrate', 'bytesize', 'parity', 'stopbits', 'xonxoff', + 'dsrdtr', 'rtscts', 'timeout', 'writeTimeout', 'interCharTimeout') + + def getSettingsDict(self): + """Get current port settings as a dictionary. For use with + applySettingsDict""" + return dict([(key, getattr(self, '_'+key)) for key in self._SETTINGS]) + + def applySettingsDict(self, d): + """apply stored settings from a dictionary returned from + getSettingsDict. it's allowed to delete keys from the dictionary. these + values will simply left unchanged.""" + for key in self._SETTINGS: + if d[key] != getattr(self, '_'+key): # check against internal "_" value + setattr(self, key, d[key]) # set non "_" value to use properties write function + + # - - - - - - - - - - - - - - - - - - - - - - - - + + def __repr__(self): + """String representation of the current port settings and its state.""" + return "%s(port=%r, baudrate=%r, bytesize=%r, parity=%r, stopbits=%r, timeout=%r, xonxoff=%r, rtscts=%r, dsrdtr=%r)" % ( + self.__class__.__name__, + id(self), + self._isOpen, + self.portstr, + self.baudrate, + self.bytesize, + self.parity, + self.stopbits, + self.timeout, + self.xonxoff, + self.rtscts, + self.dsrdtr, + ) + + + # - - - - - - - - - - - - - - - - - - - - - - - - + # compatibility with io library + + def readable(self): return True + def writable(self): return True + def seekable(self): return False + def readinto(self, b): + data = self.read(len(b)) + n = len(data) + try: + b[:n] = data + except TypeError, err: + import array + if not isinstance(b, array.array): + raise err + b[:n] = array.array('b', data) + return n + + +if __name__ == '__main__': + import sys + s = SerialBase() + sys.stdout.write('port name: %s\n' % s.portstr) + sys.stdout.write('baud rates: %s\n' % s.getSupportedBaudrates()) + sys.stdout.write('byte sizes: %s\n' % s.getSupportedByteSizes()) + sys.stdout.write('parities: %s\n' % s.getSupportedParities()) + sys.stdout.write('stop bits: %s\n' % s.getSupportedStopbits()) + sys.stdout.write('%s\n' % s) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/serialwin32.py b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/serialwin32.py new file mode 100644 index 0000000..dfdd953 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/serialwin32.py @@ -0,0 +1,461 @@ +#! python +# Python Serial Port Extension for Win32, Linux, BSD, Jython +# serial driver for win32 +# see __init__.py +# +# (C) 2001-2011 Chris Liechti +# this is distributed under a free software license, see license.txt +# +# Initial patch to use ctypes by Giovanni Bajo + +import ctypes +from serial import win32 + +from serial.serialutil import * + + +def device(portnum): + """Turn a port number into a device name""" + return 'COM%d' % (portnum+1) # numbers are transformed to a string + + +class Win32Serial(SerialBase): + """Serial port implementation for Win32 based on ctypes.""" + + BAUDRATES = (50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, + 9600, 19200, 38400, 57600, 115200) + + def __init__(self, *args, **kwargs): + self.hComPort = None + self._overlappedRead = None + self._overlappedWrite = None + self._rtsToggle = False + + self._rtsState = win32.RTS_CONTROL_ENABLE + self._dtrState = win32.DTR_CONTROL_ENABLE + + + SerialBase.__init__(self, *args, **kwargs) + + def open(self): + """Open port with current settings. This may throw a SerialException + if the port cannot be opened.""" + if self._port is None: + raise SerialException("Port must be configured before it can be used.") + if self._isOpen: + raise SerialException("Port is already open.") + # the "\\.\COMx" format is required for devices other than COM1-COM8 + # not all versions of windows seem to support this properly + # so that the first few ports are used with the DOS device name + port = self.portstr + try: + if port.upper().startswith('COM') and int(port[3:]) > 8: + port = '\\\\.\\' + port + except ValueError: + # for like COMnotanumber + pass + self.hComPort = win32.CreateFile(port, + win32.GENERIC_READ | win32.GENERIC_WRITE, + 0, # exclusive access + None, # no security + win32.OPEN_EXISTING, + win32.FILE_ATTRIBUTE_NORMAL | win32.FILE_FLAG_OVERLAPPED, + 0) + if self.hComPort == win32.INVALID_HANDLE_VALUE: + self.hComPort = None # 'cause __del__ is called anyway + raise SerialException("could not open port %r: %r" % (self.portstr, ctypes.WinError())) + + try: + self._overlappedRead = win32.OVERLAPPED() + self._overlappedRead.hEvent = win32.CreateEvent(None, 1, 0, None) + self._overlappedWrite = win32.OVERLAPPED() + #~ self._overlappedWrite.hEvent = win32.CreateEvent(None, 1, 0, None) + self._overlappedWrite.hEvent = win32.CreateEvent(None, 0, 0, None) + + # Setup a 4k buffer + win32.SetupComm(self.hComPort, 4096, 4096) + + # Save original timeout values: + self._orgTimeouts = win32.COMMTIMEOUTS() + win32.GetCommTimeouts(self.hComPort, ctypes.byref(self._orgTimeouts)) + + self._reconfigurePort() + + # Clear buffers: + # Remove anything that was there + win32.PurgeComm(self.hComPort, + win32.PURGE_TXCLEAR | win32.PURGE_TXABORT | + win32.PURGE_RXCLEAR | win32.PURGE_RXABORT) + except: + try: + self._close() + except: + # ignore any exception when closing the port + # also to keep original exception that happened when setting up + pass + self.hComPort = None + raise + else: + self._isOpen = True + + + def _reconfigurePort(self): + """Set communication parameters on opened port.""" + if not self.hComPort: + raise SerialException("Can only operate on a valid port handle") + + # Set Windows timeout values + # timeouts is a tuple with the following items: + # (ReadIntervalTimeout,ReadTotalTimeoutMultiplier, + # ReadTotalTimeoutConstant,WriteTotalTimeoutMultiplier, + # WriteTotalTimeoutConstant) + if self._timeout is None: + timeouts = (0, 0, 0, 0, 0) + elif self._timeout == 0: + timeouts = (win32.MAXDWORD, 0, 0, 0, 0) + else: + timeouts = (0, 0, int(self._timeout*1000), 0, 0) + if self._timeout != 0 and self._interCharTimeout is not None: + timeouts = (int(self._interCharTimeout * 1000),) + timeouts[1:] + + if self._writeTimeout is None: + pass + elif self._writeTimeout == 0: + timeouts = timeouts[:-2] + (0, win32.MAXDWORD) + else: + timeouts = timeouts[:-2] + (0, int(self._writeTimeout*1000)) + win32.SetCommTimeouts(self.hComPort, ctypes.byref(win32.COMMTIMEOUTS(*timeouts))) + + win32.SetCommMask(self.hComPort, win32.EV_ERR) + + # Setup the connection info. + # Get state and modify it: + comDCB = win32.DCB() + win32.GetCommState(self.hComPort, ctypes.byref(comDCB)) + comDCB.BaudRate = self._baudrate + + if self._bytesize == FIVEBITS: + comDCB.ByteSize = 5 + elif self._bytesize == SIXBITS: + comDCB.ByteSize = 6 + elif self._bytesize == SEVENBITS: + comDCB.ByteSize = 7 + elif self._bytesize == EIGHTBITS: + comDCB.ByteSize = 8 + else: + raise ValueError("Unsupported number of data bits: %r" % self._bytesize) + + if self._parity == PARITY_NONE: + comDCB.Parity = win32.NOPARITY + comDCB.fParity = 0 # Disable Parity Check + elif self._parity == PARITY_EVEN: + comDCB.Parity = win32.EVENPARITY + comDCB.fParity = 1 # Enable Parity Check + elif self._parity == PARITY_ODD: + comDCB.Parity = win32.ODDPARITY + comDCB.fParity = 1 # Enable Parity Check + elif self._parity == PARITY_MARK: + comDCB.Parity = win32.MARKPARITY + comDCB.fParity = 1 # Enable Parity Check + elif self._parity == PARITY_SPACE: + comDCB.Parity = win32.SPACEPARITY + comDCB.fParity = 1 # Enable Parity Check + else: + raise ValueError("Unsupported parity mode: %r" % self._parity) + + if self._stopbits == STOPBITS_ONE: + comDCB.StopBits = win32.ONESTOPBIT + elif self._stopbits == STOPBITS_ONE_POINT_FIVE: + comDCB.StopBits = win32.ONE5STOPBITS + elif self._stopbits == STOPBITS_TWO: + comDCB.StopBits = win32.TWOSTOPBITS + else: + raise ValueError("Unsupported number of stop bits: %r" % self._stopbits) + + comDCB.fBinary = 1 # Enable Binary Transmission + # Char. w/ Parity-Err are replaced with 0xff (if fErrorChar is set to TRUE) + if self._rtscts: + comDCB.fRtsControl = win32.RTS_CONTROL_HANDSHAKE + elif self._rtsToggle: + comDCB.fRtsControl = win32.RTS_CONTROL_TOGGLE + else: + comDCB.fRtsControl = self._rtsState + if self._dsrdtr: + comDCB.fDtrControl = win32.DTR_CONTROL_HANDSHAKE + else: + comDCB.fDtrControl = self._dtrState + + if self._rtsToggle: + comDCB.fOutxCtsFlow = 0 + else: + comDCB.fOutxCtsFlow = self._rtscts + comDCB.fOutxDsrFlow = self._dsrdtr + comDCB.fOutX = self._xonxoff + comDCB.fInX = self._xonxoff + comDCB.fNull = 0 + comDCB.fErrorChar = 0 + comDCB.fAbortOnError = 0 + comDCB.XonChar = XON + comDCB.XoffChar = XOFF + + if not win32.SetCommState(self.hComPort, ctypes.byref(comDCB)): + raise ValueError("Cannot configure port, some setting was wrong. Original message: %r" % ctypes.WinError()) + + #~ def __del__(self): + #~ self.close() + + + def _close(self): + """internal close port helper""" + if self.hComPort: + # Restore original timeout values: + win32.SetCommTimeouts(self.hComPort, self._orgTimeouts) + # Close COM-Port: + win32.CloseHandle(self.hComPort) + if self._overlappedRead is not None: + win32.CloseHandle(self._overlappedRead.hEvent) + self._overlappedRead = None + if self._overlappedWrite is not None: + win32.CloseHandle(self._overlappedWrite.hEvent) + self._overlappedWrite = None + self.hComPort = None + + def close(self): + """Close port""" + if self._isOpen: + self._close() + self._isOpen = False + + def makeDeviceName(self, port): + return device(port) + + # - - - - - - - - - - - - - - - - - - - - - - - - + + def inWaiting(self): + """Return the number of characters currently in the input buffer.""" + flags = win32.DWORD() + comstat = win32.COMSTAT() + if not win32.ClearCommError(self.hComPort, ctypes.byref(flags), ctypes.byref(comstat)): + raise SerialException('call to ClearCommError failed') + return comstat.cbInQue + + def read(self, size=1): + """Read size bytes from the serial port. If a timeout is set it may + return less characters as requested. With no timeout it will block + until the requested number of bytes is read.""" + if not self.hComPort: raise portNotOpenError + if size > 0: + win32.ResetEvent(self._overlappedRead.hEvent) + flags = win32.DWORD() + comstat = win32.COMSTAT() + if not win32.ClearCommError(self.hComPort, ctypes.byref(flags), ctypes.byref(comstat)): + raise SerialException('call to ClearCommError failed') + if self.timeout == 0: + n = min(comstat.cbInQue, size) + if n > 0: + buf = ctypes.create_string_buffer(n) + rc = win32.DWORD() + err = win32.ReadFile(self.hComPort, buf, n, ctypes.byref(rc), ctypes.byref(self._overlappedRead)) + if not err and win32.GetLastError() != win32.ERROR_IO_PENDING: + raise SerialException("ReadFile failed (%r)" % ctypes.WinError()) + err = win32.WaitForSingleObject(self._overlappedRead.hEvent, win32.INFINITE) + read = buf.raw[:rc.value] + else: + read = bytes() + else: + buf = ctypes.create_string_buffer(size) + rc = win32.DWORD() + err = win32.ReadFile(self.hComPort, buf, size, ctypes.byref(rc), ctypes.byref(self._overlappedRead)) + if not err and win32.GetLastError() != win32.ERROR_IO_PENDING: + raise SerialException("ReadFile failed (%r)" % ctypes.WinError()) + err = win32.GetOverlappedResult(self.hComPort, ctypes.byref(self._overlappedRead), ctypes.byref(rc), True) + read = buf.raw[:rc.value] + else: + read = bytes() + return bytes(read) + + def write(self, data): + """Output the given string over the serial port.""" + if not self.hComPort: raise portNotOpenError + #~ if not isinstance(data, (bytes, bytearray)): + #~ raise TypeError('expected %s or bytearray, got %s' % (bytes, type(data))) + # convert data (needed in case of memoryview instance: Py 3.1 io lib), ctypes doesn't like memoryview + data = to_bytes(data) + if data: + #~ win32event.ResetEvent(self._overlappedWrite.hEvent) + n = win32.DWORD() + err = win32.WriteFile(self.hComPort, data, len(data), ctypes.byref(n), self._overlappedWrite) + if not err and win32.GetLastError() != win32.ERROR_IO_PENDING: + raise SerialException("WriteFile failed (%r)" % ctypes.WinError()) + if self._writeTimeout != 0: # if blocking (None) or w/ write timeout (>0) + # Wait for the write to complete. + #~ win32.WaitForSingleObject(self._overlappedWrite.hEvent, win32.INFINITE) + err = win32.GetOverlappedResult(self.hComPort, self._overlappedWrite, ctypes.byref(n), True) + if n.value != len(data): + raise writeTimeoutError + return n.value + else: + return 0 + + def flush(self): + """Flush of file like objects. In this case, wait until all data + is written.""" + while self.outWaiting(): + time.sleep(0.05) + # XXX could also use WaitCommEvent with mask EV_TXEMPTY, but it would + # require overlapped IO and its also only possible to set a single mask + # on the port--- + + def flushInput(self): + """Clear input buffer, discarding all that is in the buffer.""" + if not self.hComPort: raise portNotOpenError + win32.PurgeComm(self.hComPort, win32.PURGE_RXCLEAR | win32.PURGE_RXABORT) + + def flushOutput(self): + """Clear output buffer, aborting the current output and + discarding all that is in the buffer.""" + if not self.hComPort: raise portNotOpenError + win32.PurgeComm(self.hComPort, win32.PURGE_TXCLEAR | win32.PURGE_TXABORT) + + def sendBreak(self, duration=0.25): + """Send break condition. Timed, returns to idle state after given duration.""" + if not self.hComPort: raise portNotOpenError + import time + win32.SetCommBreak(self.hComPort) + time.sleep(duration) + win32.ClearCommBreak(self.hComPort) + + def setBreak(self, level=1): + """Set break: Controls TXD. When active, to transmitting is possible.""" + if not self.hComPort: raise portNotOpenError + if level: + win32.SetCommBreak(self.hComPort) + else: + win32.ClearCommBreak(self.hComPort) + + def setRTS(self, level=1): + """Set terminal status line: Request To Send""" + # remember level for reconfigure + if level: + self._rtsState = win32.RTS_CONTROL_ENABLE + else: + self._rtsState = win32.RTS_CONTROL_DISABLE + # also apply now if port is open + if self.hComPort: + if level: + win32.EscapeCommFunction(self.hComPort, win32.SETRTS) + else: + win32.EscapeCommFunction(self.hComPort, win32.CLRRTS) + + def setDTR(self, level=1): + """Set terminal status line: Data Terminal Ready""" + # remember level for reconfigure + if level: + self._dtrState = win32.DTR_CONTROL_ENABLE + else: + self._dtrState = win32.DTR_CONTROL_DISABLE + # also apply now if port is open + if self.hComPort: + if level: + win32.EscapeCommFunction(self.hComPort, win32.SETDTR) + else: + win32.EscapeCommFunction(self.hComPort, win32.CLRDTR) + + def _GetCommModemStatus(self): + stat = win32.DWORD() + win32.GetCommModemStatus(self.hComPort, ctypes.byref(stat)) + return stat.value + + def getCTS(self): + """Read terminal status line: Clear To Send""" + if not self.hComPort: raise portNotOpenError + return win32.MS_CTS_ON & self._GetCommModemStatus() != 0 + + def getDSR(self): + """Read terminal status line: Data Set Ready""" + if not self.hComPort: raise portNotOpenError + return win32.MS_DSR_ON & self._GetCommModemStatus() != 0 + + def getRI(self): + """Read terminal status line: Ring Indicator""" + if not self.hComPort: raise portNotOpenError + return win32.MS_RING_ON & self._GetCommModemStatus() != 0 + + def getCD(self): + """Read terminal status line: Carrier Detect""" + if not self.hComPort: raise portNotOpenError + return win32.MS_RLSD_ON & self._GetCommModemStatus() != 0 + + # - - platform specific - - - - + + def setBufferSize(self, rx_size=4096, tx_size=None): + """\ + Recommend a buffer size to the driver (device driver can ignore this + vlaue). Must be called before the port is opended. + """ + if tx_size is None: tx_size = rx_size + win32.SetupComm(self.hComPort, rx_size, tx_size) + + def setXON(self, level=True): + """\ + Manually control flow - when software flow control is enabled. + This will send XON (true) and XOFF (false) to the other device. + WARNING: this function is not portable to different platforms! + """ + if not self.hComPort: raise portNotOpenError + if level: + win32.EscapeCommFunction(self.hComPort, win32.SETXON) + else: + win32.EscapeCommFunction(self.hComPort, win32.SETXOFF) + + def outWaiting(self): + """return how many characters the in the outgoing buffer""" + flags = win32.DWORD() + comstat = win32.COMSTAT() + if not win32.ClearCommError(self.hComPort, ctypes.byref(flags), ctypes.byref(comstat)): + raise SerialException('call to ClearCommError failed') + return comstat.cbOutQue + + # functions useful for RS-485 adapters + def setRtsToggle(self, rtsToggle): + """Change RTS toggle control setting.""" + self._rtsToggle = rtsToggle + if self._isOpen: self._reconfigurePort() + + def getRtsToggle(self): + """Get the current RTS toggle control setting.""" + return self._rtsToggle + + rtsToggle = property(getRtsToggle, setRtsToggle, doc="RTS toggle control setting") + + +# assemble Serial class with the platform specific implementation and the base +# for file-like behavior. for Python 2.6 and newer, that provide the new I/O +# library, derive from io.RawIOBase +try: + import io +except ImportError: + # classic version with our own file-like emulation + class Serial(Win32Serial, FileLike): + pass +else: + # io library present + class Serial(Win32Serial, io.RawIOBase): + pass + + +# Nur Testfunktion!! +if __name__ == '__main__': + s = Serial(0) + sys.stdout.write("%s\n" % s) + + s = Serial() + sys.stdout.write("%s\n" % s) + + s.baudrate = 19200 + s.databits = 7 + s.close() + s.port = 0 + s.open() + sys.stdout.write("%s\n" % s) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/sermsdos.py b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/sermsdos.py new file mode 100644 index 0000000..09a0017 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/sermsdos.py @@ -0,0 +1,200 @@ +# sermsdos.py +# +# History: +# +# 3rd September 2002 Dave Haynes +# 1. First defined +# +# Although this code should run under the latest versions of +# Python, on DOS-based platforms such as Windows 95 and 98, +# it has been specifically written to be compatible with +# PyDOS, available at: +# http://www.python.org/ftp/python/wpy/dos.html +# +# PyDOS is a stripped-down version of Python 1.5.2 for +# DOS machines. Therefore, in making changes to this file, +# please respect Python 1.5.2 syntax. In addition, please +# limit the width of this file to 60 characters. +# +# Note also that the modules in PyDOS contain fewer members +# than other versions, so we are restricted to using the +# following: +# +# In module os: +# ------------- +# environ, chdir, getcwd, getpid, umask, fdopen, close, +# dup, dup2, fstat, lseek, open, read, write, O_RDONLY, +# O_WRONLY, O_RDWR, O_APPEND, O_CREAT, O_EXCL, O_TRUNC, +# access, F_OK, R_OK, W_OK, X_OK, chmod, listdir, mkdir, +# remove, rename, renames, rmdir, stat, unlink, utime, +# execl, execle, execlp, execlpe, execvp, execvpe, _exit, +# system. +# +# In module os.path: +# ------------------ +# curdir, pardir, sep, altsep, pathsep, defpath, linesep. +# + +import os +import sys +import string +import serial.serialutil + +BAUD_RATES = { + 110: "11", + 150: "15", + 300: "30", + 600: "60", + 1200: "12", + 2400: "24", + 4800: "48", + 9600: "96", + 19200: "19"} + +(PARITY_NONE, PARITY_EVEN, PARITY_ODD, PARITY_MARK, +PARITY_SPACE) = (0, 1, 2, 3, 4) +(STOPBITS_ONE, STOPBITS_ONEANDAHALF, +STOPBITS_TWO) = (1, 1.5, 2) +FIVEBITS, SIXBITS, SEVENBITS, EIGHTBITS = (5, 6, 7, 8) +(RETURN_ERROR, RETURN_BUSY, RETURN_RETRY, RETURN_READY, +RETURN_NONE) = ('E', 'B', 'P', 'R', 'N') +portNotOpenError = ValueError('port not open') + +def device(portnum): + return 'COM%d' % (portnum+1) + +class Serial(serialutil.FileLike): + """ + port: number of device; numbering starts at + zero. if everything fails, the user can + specify a device string, note that this + isn't portable any more + baudrate: baud rate + bytesize: number of databits + parity: enable parity checking + stopbits: number of stopbits + timeout: set a timeout (None for waiting forever) + xonxoff: enable software flow control + rtscts: enable RTS/CTS flow control + retry: DOS retry mode + """ + def __init__(self, + port, + baudrate = 9600, + bytesize = EIGHTBITS, + parity = PARITY_NONE, + stopbits = STOPBITS_ONE, + timeout = None, + xonxoff = 0, + rtscts = 0, + retry = RETURN_RETRY + ): + + if type(port) == type(''): + # strings are taken directly + self.portstr = port + else: + # numbers are transformed to a string + self.portstr = device(port+1) + + self.baud = BAUD_RATES[baudrate] + self.bytesize = str(bytesize) + + if parity == PARITY_NONE: + self.parity = 'N' + elif parity == PARITY_EVEN: + self.parity = 'E' + elif parity == PARITY_ODD: + self.parity = 'O' + elif parity == PARITY_MARK: + self.parity = 'M' + elif parity == PARITY_SPACE: + self.parity = 'S' + + self.stop = str(stopbits) + self.retry = retry + self.filename = "sermsdos.tmp" + + self._config(self.portstr, self.baud, self.parity, + self.bytesize, self.stop, self.retry, self.filename) + + def __del__(self): + self.close() + + def close(self): + pass + + def _config(self, port, baud, parity, data, stop, retry, + filename): + comString = string.join(("MODE ", port, ":" + , " BAUD= ", baud, " PARITY= ", parity + , " DATA= ", data, " STOP= ", stop, " RETRY= ", + retry, " > ", filename ), '') + os.system(comString) + + def setBaudrate(self, baudrate): + self._config(self.portstr, BAUD_RATES[baudrate], + self.parity, self.bytesize, self.stop, self.retry, + self.filename) + + def inWaiting(self): + """returns the number of bytes waiting to be read""" + raise NotImplementedError + + def read(self, num = 1): + """Read num bytes from serial port""" + handle = os.open(self.portstr, + os.O_RDONLY | os.O_BINARY) + rv = os.read(handle, num) + os.close(handle) + return rv + + def write(self, s): + """Write string to serial port""" + handle = os.open(self.portstr, + os.O_WRONLY | os.O_BINARY) + rv = os.write(handle, s) + os.close(handle) + return rv + + def flushInput(self): + raise NotImplementedError + + def flushOutput(self): + raise NotImplementedError + + def sendBreak(self): + raise NotImplementedError + + def setRTS(self,level=1): + """Set terminal status line""" + raise NotImplementedError + + def setDTR(self,level=1): + """Set terminal status line""" + raise NotImplementedError + + def getCTS(self): + """Eead terminal status line""" + raise NotImplementedError + + def getDSR(self): + """Eead terminal status line""" + raise NotImplementedError + + def getRI(self): + """Eead terminal status line""" + raise NotImplementedError + + def getCD(self): + """Eead terminal status line""" + raise NotImplementedError + + def __repr__(self): + return string.join(( ": ", self.portstr + , self.baud, self.parity, self.bytesize, self.stop, + self.retry , self.filename), ' ') + +if __name__ == '__main__': + s = Serial(0) + sys.stdio.write('%s %s\n' % (__name__, s)) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/tools/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/tools/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/tools/list_ports.py b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/tools/list_ports.py new file mode 100644 index 0000000..d373a55 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/tools/list_ports.py @@ -0,0 +1,103 @@ +#!/usr/bin/env python + +# portable serial port access with python +# this is a wrapper module for different platform implementations of the +# port enumeration feature +# +# (C) 2011-2013 Chris Liechti +# this is distributed under a free software license, see license.txt + +"""\ +This module will provide a function called comports that returns an +iterable (generator or list) that will enumerate available com ports. Note that +on some systems non-existent ports may be listed. + +Additionally a grep function is supplied that can be used to search for ports +based on their descriptions or hardware ID. +""" + +import sys, os, re + +# chose an implementation, depending on os +#~ if sys.platform == 'cli': +#~ else: +import os +# chose an implementation, depending on os +if os.name == 'nt': #sys.platform == 'win32': + from serial.tools.list_ports_windows import * +elif os.name == 'posix': + from serial.tools.list_ports_posix import * +#~ elif os.name == 'java': +else: + raise ImportError("Sorry: no implementation for your platform ('%s') available" % (os.name,)) + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +def grep(regexp): + """\ + Search for ports using a regular expression. Port name, description and + hardware ID are searched. The function returns an iterable that returns the + same tuples as comport() would do. + """ + r = re.compile(regexp, re.I) + for port, desc, hwid in comports(): + if r.search(port) or r.search(desc) or r.search(hwid): + yield port, desc, hwid + + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +def main(): + import optparse + + parser = optparse.OptionParser( + usage = "%prog [options] []", + description = "Miniterm - A simple terminal program for the serial port." + ) + + parser.add_option("--debug", + help="print debug messages and tracebacks (development mode)", + dest="debug", + default=False, + action='store_true') + + parser.add_option("-v", "--verbose", + help="show more messages (can be given multiple times)", + dest="verbose", + default=1, + action='count') + + parser.add_option("-q", "--quiet", + help="suppress all messages", + dest="verbose", + action='store_const', + const=0) + + (options, args) = parser.parse_args() + + + hits = 0 + # get iteraror w/ or w/o filter + if args: + if len(args) > 1: + parser.error('more than one regexp not supported') + print "Filtered list with regexp: %r" % (args[0],) + iterator = sorted(grep(args[0])) + else: + iterator = sorted(comports()) + # list them + for port, desc, hwid in iterator: + print("%-20s" % (port,)) + if options.verbose > 1: + print(" desc: %s" % (desc,)) + print(" hwid: %s" % (hwid,)) + hits += 1 + if options.verbose: + if hits: + print("%d ports found" % (hits,)) + else: + print("no ports found") + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# test +if __name__ == '__main__': + main() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/tools/list_ports_linux.py b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/tools/list_ports_linux.py new file mode 100644 index 0000000..ecfd158 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/tools/list_ports_linux.py @@ -0,0 +1,151 @@ +#!/usr/bin/env python + +# portable serial port access with python +# +# This is a module that gathers a list of serial ports including details on +# GNU/Linux systems +# +# (C) 2011-2013 Chris Liechti +# this is distributed under a free software license, see license.txt + +import glob +import sys +import os +import re + +try: + import subprocess +except ImportError: + def popen(argv): + try: + si, so = os.popen4(' '.join(argv)) + return so.read().strip() + except: + raise IOError('lsusb failed') +else: + def popen(argv): + try: + return subprocess.check_output(argv, stderr=subprocess.STDOUT).strip() + except: + raise IOError('lsusb failed') + + +# The comports function is expected to return an iterable that yields tuples of +# 3 strings: port name, human readable description and a hardware ID. +# +# as currently no method is known to get the second two strings easily, they +# are currently just identical to the port name. + +# try to detect the OS so that a device can be selected... +plat = sys.platform.lower() + +def read_line(filename): + """help function to read a single line from a file. returns none""" + try: + f = open(filename) + line = f.readline().strip() + f.close() + return line + except IOError: + return None + +def re_group(regexp, text): + """search for regexp in text, return 1st group on match""" + if sys.version < '3': + m = re.search(regexp, text) + else: + # text is bytes-like + m = re.search(regexp, text.decode('ascii', 'replace')) + if m: return m.group(1) + + +# try to extract descriptions from sysfs. this was done by experimenting, +# no guarantee that it works for all devices or in the future... + +def usb_sysfs_hw_string(sysfs_path): + """given a path to a usb device in sysfs, return a string describing it""" + bus, dev = os.path.basename(os.path.realpath(sysfs_path)).split('-') + snr = read_line(sysfs_path+'/serial') + if snr: + snr_txt = ' SNR=%s' % (snr,) + else: + snr_txt = '' + return 'USB VID:PID=%s:%s%s' % ( + read_line(sysfs_path+'/idVendor'), + read_line(sysfs_path+'/idProduct'), + snr_txt + ) + +def usb_lsusb_string(sysfs_path): + base = os.path.basename(os.path.realpath(sysfs_path)) + bus = base.split('-')[0] + try: + dev = int(read_line(os.path.join(sysfs_path, 'devnum'))) + desc = popen(['lsusb', '-v', '-s', '%s:%s' % (bus, dev)]) + # descriptions from device + iManufacturer = re_group('iManufacturer\s+\w+ (.+)', desc) + iProduct = re_group('iProduct\s+\w+ (.+)', desc) + iSerial = re_group('iSerial\s+\w+ (.+)', desc) or '' + # descriptions from kernel + idVendor = re_group('idVendor\s+0x\w+ (.+)', desc) + idProduct = re_group('idProduct\s+0x\w+ (.+)', desc) + # create descriptions. prefer text from device, fall back to the others + return '%s %s %s' % (iManufacturer or idVendor, iProduct or idProduct, iSerial) + except IOError: + return base + +def describe(device): + """\ + Get a human readable description. + For USB-Serial devices try to run lsusb to get a human readable description. + For USB-CDC devices read the description from sysfs. + """ + base = os.path.basename(device) + # USB-Serial devices + sys_dev_path = '/sys/class/tty/%s/device/driver/%s' % (base, base) + if os.path.exists(sys_dev_path): + sys_usb = os.path.dirname(os.path.dirname(os.path.realpath(sys_dev_path))) + return usb_lsusb_string(sys_usb) + # USB-CDC devices + sys_dev_path = '/sys/class/tty/%s/device/interface' % (base,) + if os.path.exists(sys_dev_path): + return read_line(sys_dev_path) + + # USB Product Information + sys_dev_path = '/sys/class/tty/%s/device' % (base,) + if os.path.exists(sys_dev_path): + product_name_file = os.path.dirname(os.path.realpath(sys_dev_path)) + "/product" + if os.path.exists(product_name_file): + return read_line(product_name_file) + + return base + +def hwinfo(device): + """Try to get a HW identification using sysfs""" + base = os.path.basename(device) + if os.path.exists('/sys/class/tty/%s/device' % (base,)): + # PCI based devices + sys_id_path = '/sys/class/tty/%s/device/id' % (base,) + if os.path.exists(sys_id_path): + return read_line(sys_id_path) + # USB-Serial devices + sys_dev_path = '/sys/class/tty/%s/device/driver/%s' % (base, base) + if os.path.exists(sys_dev_path): + sys_usb = os.path.dirname(os.path.dirname(os.path.realpath(sys_dev_path))) + return usb_sysfs_hw_string(sys_usb) + # USB-CDC devices + if base.startswith('ttyACM'): + sys_dev_path = '/sys/class/tty/%s/device' % (base,) + if os.path.exists(sys_dev_path): + return usb_sysfs_hw_string(sys_dev_path + '/..') + return 'n/a' # XXX directly remove these from the list? + +def comports(): + devices = glob.glob('/dev/ttyS*') + glob.glob('/dev/ttyUSB*') + glob.glob('/dev/ttyACM*') + return [(d, describe(d), hwinfo(d)) for d in devices] + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# test +if __name__ == '__main__': + for port, desc, hwid in sorted(comports()): + print "%s: %s [%s]" % (port, desc, hwid) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/tools/list_ports_osx.py b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/tools/list_ports_osx.py new file mode 100644 index 0000000..c9ed615 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/tools/list_ports_osx.py @@ -0,0 +1,208 @@ +#!/usr/bin/env python + +# portable serial port access with python +# +# This is a module that gathers a list of serial ports including details on OSX +# +# code originally from https://github.com/makerbot/pyserial/tree/master/serial/tools +# with contributions from cibomahto, dgs3, FarMcKon, tedbrandston +# and modifications by cliechti +# +# this is distributed under a free software license, see license.txt + + + +# List all of the callout devices in OS/X by querying IOKit. + +# See the following for a reference of how to do this: +# http://developer.apple.com/library/mac/#documentation/DeviceDrivers/Conceptual/WorkingWSerial/WWSerial_SerialDevs/SerialDevices.html#//apple_ref/doc/uid/TP30000384-CIHGEAFD + +# More help from darwin_hid.py + +# Also see the 'IORegistryExplorer' for an idea of what we are actually searching + +import ctypes +from ctypes import util +import re + +iokit = ctypes.cdll.LoadLibrary(ctypes.util.find_library('IOKit')) +cf = ctypes.cdll.LoadLibrary(ctypes.util.find_library('CoreFoundation')) + +kIOMasterPortDefault = ctypes.c_void_p.in_dll(iokit, "kIOMasterPortDefault") +kCFAllocatorDefault = ctypes.c_void_p.in_dll(cf, "kCFAllocatorDefault") + +kCFStringEncodingMacRoman = 0 + +iokit.IOServiceMatching.restype = ctypes.c_void_p + +iokit.IOServiceGetMatchingServices.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p] +iokit.IOServiceGetMatchingServices.restype = ctypes.c_void_p + +iokit.IORegistryEntryGetParentEntry.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p] + +iokit.IORegistryEntryCreateCFProperty.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p, ctypes.c_uint32] +iokit.IORegistryEntryCreateCFProperty.restype = ctypes.c_void_p + +iokit.IORegistryEntryGetPath.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p] +iokit.IORegistryEntryGetPath.restype = ctypes.c_void_p + +iokit.IORegistryEntryGetName.argtypes = [ctypes.c_void_p, ctypes.c_void_p] +iokit.IORegistryEntryGetName.restype = ctypes.c_void_p + +iokit.IOObjectGetClass.argtypes = [ctypes.c_void_p, ctypes.c_void_p] +iokit.IOObjectGetClass.restype = ctypes.c_void_p + +iokit.IOObjectRelease.argtypes = [ctypes.c_void_p] + + +cf.CFStringCreateWithCString.argtypes = [ctypes.c_void_p, ctypes.c_char_p, ctypes.c_int32] +cf.CFStringCreateWithCString.restype = ctypes.c_void_p + +cf.CFStringGetCStringPtr.argtypes = [ctypes.c_void_p, ctypes.c_uint32] +cf.CFStringGetCStringPtr.restype = ctypes.c_char_p + +cf.CFNumberGetValue.argtypes = [ctypes.c_void_p, ctypes.c_uint32, ctypes.c_void_p] +cf.CFNumberGetValue.restype = ctypes.c_void_p + +def get_string_property(device_t, property): + """ Search the given device for the specified string property + + @param device_t Device to search + @param property String to search for. + @return Python string containing the value, or None if not found. + """ + key = cf.CFStringCreateWithCString( + kCFAllocatorDefault, + property.encode("mac_roman"), + kCFStringEncodingMacRoman + ) + + CFContainer = iokit.IORegistryEntryCreateCFProperty( + device_t, + key, + kCFAllocatorDefault, + 0 + ); + + output = None + + if CFContainer: + output = cf.CFStringGetCStringPtr(CFContainer, 0) + + return output + +def get_int_property(device_t, property): + """ Search the given device for the specified string property + + @param device_t Device to search + @param property String to search for. + @return Python string containing the value, or None if not found. + """ + key = cf.CFStringCreateWithCString( + kCFAllocatorDefault, + property.encode("mac_roman"), + kCFStringEncodingMacRoman + ) + + CFContainer = iokit.IORegistryEntryCreateCFProperty( + device_t, + key, + kCFAllocatorDefault, + 0 + ); + + number = ctypes.c_uint16() + + if CFContainer: + output = cf.CFNumberGetValue(CFContainer, 2, ctypes.byref(number)) + + return number.value + +def IORegistryEntryGetName(device): + pathname = ctypes.create_string_buffer(100) # TODO: Is this ok? + iokit.IOObjectGetClass( + device, + ctypes.byref(pathname) + ) + + return pathname.value + +def GetParentDeviceByType(device, parent_type): + """ Find the first parent of a device that implements the parent_type + @param IOService Service to inspect + @return Pointer to the parent type, or None if it was not found. + """ + # First, try to walk up the IOService tree to find a parent of this device that is a IOUSBDevice. + while IORegistryEntryGetName(device) != parent_type: + parent = ctypes.c_void_p() + response = iokit.IORegistryEntryGetParentEntry( + device, + "IOService".encode("mac_roman"), + ctypes.byref(parent) + ) + + # If we weren't able to find a parent for the device, we're done. + if response != 0: + return None + + device = parent + + return device + +def GetIOServicesByType(service_type): + """ + """ + serial_port_iterator = ctypes.c_void_p() + + response = iokit.IOServiceGetMatchingServices( + kIOMasterPortDefault, + iokit.IOServiceMatching(service_type), + ctypes.byref(serial_port_iterator) + ) + + services = [] + while iokit.IOIteratorIsValid(serial_port_iterator): + service = iokit.IOIteratorNext(serial_port_iterator) + if not service: + break + services.append(service) + + iokit.IOObjectRelease(serial_port_iterator) + + return services + +def comports(): + # Scan for all iokit serial ports + services = GetIOServicesByType('IOSerialBSDClient') + + ports = [] + for service in services: + info = [] + + # First, add the callout device file. + info.append(get_string_property(service, "IOCalloutDevice")) + + # If the serial port is implemented by a + usb_device = GetParentDeviceByType(service, "IOUSBDevice") + if usb_device != None: + info.append(get_string_property(usb_device, "USB Product Name")) + + info.append( + "USB VID:PID=%x:%x SNR=%s"%( + get_int_property(usb_device, "idVendor"), + get_int_property(usb_device, "idProduct"), + get_string_property(usb_device, "USB Serial Number")) + ) + else: + info.append('n/a') + info.append('n/a') + + ports.append(info) + + return ports + +# test +if __name__ == '__main__': + for port, desc, hwid in sorted(comports()): + print "%s: %s [%s]" % (port, desc, hwid) + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/tools/list_ports_posix.py b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/tools/list_ports_posix.py new file mode 100644 index 0000000..09f115f --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/tools/list_ports_posix.py @@ -0,0 +1,101 @@ +#!/usr/bin/env python + +# portable serial port access with python + +# This is a module that gathers a list of serial ports on POSIXy systems. +# For some specific implementations, see also list_ports_linux, list_ports_osx +# +# this is a wrapper module for different platform implementations of the +# port enumeration feature +# +# (C) 2011-2013 Chris Liechti +# this is distributed under a free software license, see license.txt + +"""\ +The ``comports`` function is expected to return an iterable that yields tuples +of 3 strings: port name, human readable description and a hardware ID. + +As currently no method is known to get the second two strings easily, they are +currently just identical to the port name. +""" + +import glob +import sys +import os + +# try to detect the OS so that a device can be selected... +plat = sys.platform.lower() + +if plat[:5] == 'linux': # Linux (confirmed) + from serial.tools.list_ports_linux import comports + +elif plat == 'cygwin': # cygwin/win32 + def comports(): + devices = glob.glob('/dev/com*') + return [(d, d, d) for d in devices] + +elif plat[:7] == 'openbsd': # OpenBSD + def comports(): + devices = glob.glob('/dev/cua*') + return [(d, d, d) for d in devices] + +elif plat[:3] == 'bsd' or \ + plat[:7] == 'freebsd': + + def comports(): + devices = glob.glob('/dev/cuad*') + return [(d, d, d) for d in devices] + +elif plat[:6] == 'darwin': # OS X (confirmed) + from serial.tools.list_ports_osx import comports + +elif plat[:6] == 'netbsd': # NetBSD + def comports(): + """scan for available ports. return a list of device names.""" + devices = glob.glob('/dev/dty*') + return [(d, d, d) for d in devices] + +elif plat[:4] == 'irix': # IRIX + def comports(): + """scan for available ports. return a list of device names.""" + devices = glob.glob('/dev/ttyf*') + return [(d, d, d) for d in devices] + +elif plat[:2] == 'hp': # HP-UX (not tested) + def comports(): + """scan for available ports. return a list of device names.""" + devices = glob.glob('/dev/tty*p0') + return [(d, d, d) for d in devices] + +elif plat[:5] == 'sunos': # Solaris/SunOS + def comports(): + """scan for available ports. return a list of device names.""" + devices = glob.glob('/dev/tty*c') + return [(d, d, d) for d in devices] + +elif plat[:3] == 'aix': # AIX + def comports(): + """scan for available ports. return a list of device names.""" + devices = glob.glob('/dev/tty*') + return [(d, d, d) for d in devices] + +else: + # platform detection has failed... + sys.stderr.write("""\ +don't know how to enumerate ttys on this system. +! I you know how the serial ports are named send this information to +! the author of this module: + +sys.platform = %r +os.name = %r +pySerial version = %s + +also add the naming scheme of the serial ports and with a bit luck you can get +this module running... +""" % (sys.platform, os.name, serial.VERSION)) + raise ImportError("Sorry: no implementation for your platform ('%s') available" % (os.name,)) + +# test +if __name__ == '__main__': + for port, desc, hwid in sorted(comports()): + print "%s: %s [%s]" % (port, desc, hwid) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/tools/list_ports_windows.py b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/tools/list_ports_windows.py new file mode 100644 index 0000000..ca597ca --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/tools/list_ports_windows.py @@ -0,0 +1,240 @@ +import ctypes +import re + +def ValidHandle(value, func, arguments): + if value == 0: + raise ctypes.WinError() + return value + +import serial +from serial.win32 import ULONG_PTR, is_64bit +from ctypes.wintypes import HANDLE +from ctypes.wintypes import BOOL +from ctypes.wintypes import HWND +from ctypes.wintypes import DWORD +from ctypes.wintypes import WORD +from ctypes.wintypes import LONG +from ctypes.wintypes import ULONG +from ctypes.wintypes import LPCSTR +from ctypes.wintypes import HKEY +from ctypes.wintypes import BYTE + +NULL = 0 +HDEVINFO = ctypes.c_void_p +PCTSTR = ctypes.c_char_p +PTSTR = ctypes.c_void_p +CHAR = ctypes.c_char +LPDWORD = PDWORD = ctypes.POINTER(DWORD) +#~ LPBYTE = PBYTE = ctypes.POINTER(BYTE) +LPBYTE = PBYTE = ctypes.c_void_p # XXX avoids error about types + +ACCESS_MASK = DWORD +REGSAM = ACCESS_MASK + + +def byte_buffer(length): + """Get a buffer for a string""" + return (BYTE*length)() + +def string(buffer): + s = [] + for c in buffer: + if c == 0: break + s.append(chr(c & 0xff)) # "& 0xff": hack to convert signed to unsigned + return ''.join(s) + + +class GUID(ctypes.Structure): + _fields_ = [ + ('Data1', DWORD), + ('Data2', WORD), + ('Data3', WORD), + ('Data4', BYTE*8), + ] + def __str__(self): + return "{%08x-%04x-%04x-%s-%s}" % ( + self.Data1, + self.Data2, + self.Data3, + ''.join(["%02x" % d for d in self.Data4[:2]]), + ''.join(["%02x" % d for d in self.Data4[2:]]), + ) + +class SP_DEVINFO_DATA(ctypes.Structure): + _fields_ = [ + ('cbSize', DWORD), + ('ClassGuid', GUID), + ('DevInst', DWORD), + ('Reserved', ULONG_PTR), + ] + def __str__(self): + return "ClassGuid:%s DevInst:%s" % (self.ClassGuid, self.DevInst) +PSP_DEVINFO_DATA = ctypes.POINTER(SP_DEVINFO_DATA) + +PSP_DEVICE_INTERFACE_DETAIL_DATA = ctypes.c_void_p + +setupapi = ctypes.windll.LoadLibrary("setupapi") +SetupDiDestroyDeviceInfoList = setupapi.SetupDiDestroyDeviceInfoList +SetupDiDestroyDeviceInfoList.argtypes = [HDEVINFO] +SetupDiDestroyDeviceInfoList.restype = BOOL + +SetupDiClassGuidsFromName = setupapi.SetupDiClassGuidsFromNameA +SetupDiClassGuidsFromName.argtypes = [PCTSTR, ctypes.POINTER(GUID), DWORD, PDWORD] +SetupDiClassGuidsFromName.restype = BOOL + +SetupDiEnumDeviceInfo = setupapi.SetupDiEnumDeviceInfo +SetupDiEnumDeviceInfo.argtypes = [HDEVINFO, DWORD, PSP_DEVINFO_DATA] +SetupDiEnumDeviceInfo.restype = BOOL + +SetupDiGetClassDevs = setupapi.SetupDiGetClassDevsA +SetupDiGetClassDevs.argtypes = [ctypes.POINTER(GUID), PCTSTR, HWND, DWORD] +SetupDiGetClassDevs.restype = HDEVINFO +SetupDiGetClassDevs.errcheck = ValidHandle + +SetupDiGetDeviceRegistryProperty = setupapi.SetupDiGetDeviceRegistryPropertyA +SetupDiGetDeviceRegistryProperty.argtypes = [HDEVINFO, PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD] +SetupDiGetDeviceRegistryProperty.restype = BOOL + +SetupDiGetDeviceInstanceId = setupapi.SetupDiGetDeviceInstanceIdA +SetupDiGetDeviceInstanceId.argtypes = [HDEVINFO, PSP_DEVINFO_DATA, PTSTR, DWORD, PDWORD] +SetupDiGetDeviceInstanceId.restype = BOOL + +SetupDiOpenDevRegKey = setupapi.SetupDiOpenDevRegKey +SetupDiOpenDevRegKey.argtypes = [HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD, REGSAM] +SetupDiOpenDevRegKey.restype = HKEY + +advapi32 = ctypes.windll.LoadLibrary("Advapi32") +RegCloseKey = advapi32.RegCloseKey +RegCloseKey.argtypes = [HKEY] +RegCloseKey.restype = LONG + +RegQueryValueEx = advapi32.RegQueryValueExA +RegQueryValueEx.argtypes = [HKEY, LPCSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD] +RegQueryValueEx.restype = LONG + + +DIGCF_PRESENT = 2 +DIGCF_DEVICEINTERFACE = 16 +INVALID_HANDLE_VALUE = 0 +ERROR_INSUFFICIENT_BUFFER = 122 +SPDRP_HARDWAREID = 1 +SPDRP_FRIENDLYNAME = 12 +DICS_FLAG_GLOBAL = 1 +DIREG_DEV = 0x00000001 +KEY_READ = 0x20019 + +# workaround for compatibility between Python 2.x and 3.x +Ports = serial.to_bytes([80, 111, 114, 116, 115]) # "Ports" +PortName = serial.to_bytes([80, 111, 114, 116, 78, 97, 109, 101]) # "PortName" + +def comports(): + GUIDs = (GUID*8)() # so far only seen one used, so hope 8 are enough... + guids_size = DWORD() + if not SetupDiClassGuidsFromName( + Ports, + GUIDs, + ctypes.sizeof(GUIDs), + ctypes.byref(guids_size)): + raise ctypes.WinError() + + # repeat for all possible GUIDs + for index in range(guids_size.value): + g_hdi = SetupDiGetClassDevs( + ctypes.byref(GUIDs[index]), + None, + NULL, + DIGCF_PRESENT) # was DIGCF_PRESENT|DIGCF_DEVICEINTERFACE which misses CDC ports + + devinfo = SP_DEVINFO_DATA() + devinfo.cbSize = ctypes.sizeof(devinfo) + index = 0 + while SetupDiEnumDeviceInfo(g_hdi, index, ctypes.byref(devinfo)): + index += 1 + + # get the real com port name + hkey = SetupDiOpenDevRegKey( + g_hdi, + ctypes.byref(devinfo), + DICS_FLAG_GLOBAL, + 0, + DIREG_DEV, # DIREG_DRV for SW info + KEY_READ) + port_name_buffer = byte_buffer(250) + port_name_length = ULONG(ctypes.sizeof(port_name_buffer)) + RegQueryValueEx( + hkey, + PortName, + None, + None, + ctypes.byref(port_name_buffer), + ctypes.byref(port_name_length)) + RegCloseKey(hkey) + + # unfortunately does this method also include parallel ports. + # we could check for names starting with COM or just exclude LPT + # and hope that other "unknown" names are serial ports... + if string(port_name_buffer).startswith('LPT'): + continue + + # hardware ID + szHardwareID = byte_buffer(250) + # try to get ID that includes serial number + if not SetupDiGetDeviceInstanceId( + g_hdi, + ctypes.byref(devinfo), + ctypes.byref(szHardwareID), + ctypes.sizeof(szHardwareID) - 1, + None): + # fall back to more generic hardware ID if that would fail + if not SetupDiGetDeviceRegistryProperty( + g_hdi, + ctypes.byref(devinfo), + SPDRP_HARDWAREID, + None, + ctypes.byref(szHardwareID), + ctypes.sizeof(szHardwareID) - 1, + None): + # Ignore ERROR_INSUFFICIENT_BUFFER + if ctypes.GetLastError() != ERROR_INSUFFICIENT_BUFFER: + raise ctypes.WinError() + # stringify + szHardwareID_str = string(szHardwareID) + + # in case of USB, make a more readable string, similar to that form + # that we also generate on other platforms + if szHardwareID_str.startswith('USB'): + m = re.search(r'VID_([0-9a-f]{4})&PID_([0-9a-f]{4})(\\(\w+))?', szHardwareID_str, re.I) + if m: + if m.group(4): + szHardwareID_str = 'USB VID:PID=%s:%s SNR=%s' % (m.group(1), m.group(2), m.group(4)) + else: + szHardwareID_str = 'USB VID:PID=%s:%s' % (m.group(1), m.group(2)) + + # friendly name + szFriendlyName = byte_buffer(250) + if not SetupDiGetDeviceRegistryProperty( + g_hdi, + ctypes.byref(devinfo), + SPDRP_FRIENDLYNAME, + #~ SPDRP_DEVICEDESC, + None, + ctypes.byref(szFriendlyName), + ctypes.sizeof(szFriendlyName) - 1, + None): + # Ignore ERROR_INSUFFICIENT_BUFFER + #~ if ctypes.GetLastError() != ERROR_INSUFFICIENT_BUFFER: + #~ raise IOError("failed to get details for %s (%s)" % (devinfo, szHardwareID.value)) + # ignore errors and still include the port in the list, friendly name will be same as port name + yield string(port_name_buffer), 'n/a', szHardwareID_str + else: + yield string(port_name_buffer), string(szFriendlyName), szHardwareID_str + + SetupDiDestroyDeviceInfoList(g_hdi) + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# test +if __name__ == '__main__': + import serial + + for port, desc, hwid in sorted(comports()): + print "%s: %s [%s]" % (port, desc, hwid) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/tools/miniterm.py b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/tools/miniterm.py new file mode 100644 index 0000000..274c7fb --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/tools/miniterm.py @@ -0,0 +1,694 @@ +#!/usr/bin/env python + +# Very simple serial terminal +# (C)2002-2011 Chris Liechti + +# Input characters are sent directly (only LF -> CR/LF/CRLF translation is +# done), received characters are displayed as is (or escaped trough pythons +# repr, useful for debug purposes) + + +import sys, os, serial, threading +try: + from serial.tools.list_ports import comports +except ImportError: + comports = None + +EXITCHARCTER = serial.to_bytes([0x1d]) # GS/CTRL+] +MENUCHARACTER = serial.to_bytes([0x14]) # Menu: CTRL+T + +DEFAULT_PORT = None +DEFAULT_BAUDRATE = 9600 +DEFAULT_RTS = None +DEFAULT_DTR = None + + +def key_description(character): + """generate a readable description for a key""" + ascii_code = ord(character) + if ascii_code < 32: + return 'Ctrl+%c' % (ord('@') + ascii_code) + else: + return repr(character) + + +# help text, starts with blank line! it's a function so that the current values +# for the shortcut keys is used and not the value at program start +def get_help_text(): + return """ +--- pySerial (%(version)s) - miniterm - help +--- +--- %(exit)-8s Exit program +--- %(menu)-8s Menu escape key, followed by: +--- Menu keys: +--- %(itself)-7s Send the menu character itself to remote +--- %(exchar)-7s Send the exit character itself to remote +--- %(info)-7s Show info +--- %(upload)-7s Upload file (prompt will be shown) +--- Toggles: +--- %(rts)-7s RTS %(echo)-7s local echo +--- %(dtr)-7s DTR %(break)-7s BREAK +--- %(lfm)-7s line feed %(repr)-7s Cycle repr mode +--- +--- Port settings (%(menu)s followed by the following): +--- p change port +--- 7 8 set data bits +--- n e o s m change parity (None, Even, Odd, Space, Mark) +--- 1 2 3 set stop bits (1, 2, 1.5) +--- b change baud rate +--- x X disable/enable software flow control +--- r R disable/enable hardware flow control +""" % { + 'version': getattr(serial, 'VERSION', 'unknown version'), + 'exit': key_description(EXITCHARCTER), + 'menu': key_description(MENUCHARACTER), + 'rts': key_description('\x12'), + 'repr': key_description('\x01'), + 'dtr': key_description('\x04'), + 'lfm': key_description('\x0c'), + 'break': key_description('\x02'), + 'echo': key_description('\x05'), + 'info': key_description('\x09'), + 'upload': key_description('\x15'), + 'itself': key_description(MENUCHARACTER), + 'exchar': key_description(EXITCHARCTER), +} + +if sys.version_info >= (3, 0): + def character(b): + return b.decode('latin1') +else: + def character(b): + return b + +LF = serial.to_bytes([10]) +CR = serial.to_bytes([13]) +CRLF = serial.to_bytes([13, 10]) + +X00 = serial.to_bytes([0]) +X0E = serial.to_bytes([0x0e]) + +# first choose a platform dependant way to read single characters from the console +global console + +if os.name == 'nt': + import msvcrt + class Console(object): + def __init__(self): + pass + + def setup(self): + pass # Do nothing for 'nt' + + def cleanup(self): + pass # Do nothing for 'nt' + + def getkey(self): + while True: + z = msvcrt.getch() + if z == X00 or z == X0E: # functions keys, ignore + msvcrt.getch() + else: + if z == CR: + return LF + return z + + console = Console() + +elif os.name == 'posix': + import termios, sys, os + class Console(object): + def __init__(self): + self.fd = sys.stdin.fileno() + self.old = None + + def setup(self): + self.old = termios.tcgetattr(self.fd) + new = termios.tcgetattr(self.fd) + new[3] = new[3] & ~termios.ICANON & ~termios.ECHO & ~termios.ISIG + new[6][termios.VMIN] = 1 + new[6][termios.VTIME] = 0 + termios.tcsetattr(self.fd, termios.TCSANOW, new) + + def getkey(self): + c = os.read(self.fd, 1) + return c + + def cleanup(self): + if self.old is not None: + termios.tcsetattr(self.fd, termios.TCSAFLUSH, self.old) + + console = Console() + + def cleanup_console(): + console.cleanup() + + sys.exitfunc = cleanup_console # terminal modes have to be restored on exit... + +else: + raise NotImplementedError("Sorry no implementation for your platform (%s) available." % sys.platform) + + +def dump_port_list(): + if comports: + sys.stderr.write('\n--- Available ports:\n') + for port, desc, hwid in sorted(comports()): + #~ sys.stderr.write('--- %-20s %s [%s]\n' % (port, desc, hwid)) + sys.stderr.write('--- %-20s %s\n' % (port, desc)) + + +CONVERT_CRLF = 2 +CONVERT_CR = 1 +CONVERT_LF = 0 +NEWLINE_CONVERISON_MAP = (LF, CR, CRLF) +LF_MODES = ('LF', 'CR', 'CR/LF') + +REPR_MODES = ('raw', 'some control', 'all control', 'hex') + +class Miniterm(object): + def __init__(self, port, baudrate, parity, rtscts, xonxoff, echo=False, convert_outgoing=CONVERT_CRLF, repr_mode=0): + try: + self.serial = serial.serial_for_url(port, baudrate, parity=parity, rtscts=rtscts, xonxoff=xonxoff, timeout=1) + except AttributeError: + # happens when the installed pyserial is older than 2.5. use the + # Serial class directly then. + self.serial = serial.Serial(port, baudrate, parity=parity, rtscts=rtscts, xonxoff=xonxoff, timeout=1) + self.echo = echo + self.repr_mode = repr_mode + self.convert_outgoing = convert_outgoing + self.newline = NEWLINE_CONVERISON_MAP[self.convert_outgoing] + self.dtr_state = True + self.rts_state = True + self.break_state = False + + def _start_reader(self): + """Start reader thread""" + self._reader_alive = True + # start serial->console thread + self.receiver_thread = threading.Thread(target=self.reader) + self.receiver_thread.setDaemon(True) + self.receiver_thread.start() + + def _stop_reader(self): + """Stop reader thread only, wait for clean exit of thread""" + self._reader_alive = False + self.receiver_thread.join() + + + def start(self): + self.alive = True + self._start_reader() + # enter console->serial loop + self.transmitter_thread = threading.Thread(target=self.writer) + self.transmitter_thread.setDaemon(True) + self.transmitter_thread.start() + + def stop(self): + self.alive = False + + def join(self, transmit_only=False): + self.transmitter_thread.join() + if not transmit_only: + self.receiver_thread.join() + + def dump_port_settings(self): + sys.stderr.write("\n--- Settings: %s %s,%s,%s,%s\n" % ( + self.serial.portstr, + self.serial.baudrate, + self.serial.bytesize, + self.serial.parity, + self.serial.stopbits)) + sys.stderr.write('--- RTS: %-8s DTR: %-8s BREAK: %-8s\n' % ( + (self.rts_state and 'active' or 'inactive'), + (self.dtr_state and 'active' or 'inactive'), + (self.break_state and 'active' or 'inactive'))) + try: + sys.stderr.write('--- CTS: %-8s DSR: %-8s RI: %-8s CD: %-8s\n' % ( + (self.serial.getCTS() and 'active' or 'inactive'), + (self.serial.getDSR() and 'active' or 'inactive'), + (self.serial.getRI() and 'active' or 'inactive'), + (self.serial.getCD() and 'active' or 'inactive'))) + except serial.SerialException: + # on RFC 2217 ports it can happen to no modem state notification was + # yet received. ignore this error. + pass + sys.stderr.write('--- software flow control: %s\n' % (self.serial.xonxoff and 'active' or 'inactive')) + sys.stderr.write('--- hardware flow control: %s\n' % (self.serial.rtscts and 'active' or 'inactive')) + sys.stderr.write('--- data escaping: %s linefeed: %s\n' % ( + REPR_MODES[self.repr_mode], + LF_MODES[self.convert_outgoing])) + + def reader(self): + """loop and copy serial->console""" + try: + while self.alive and self._reader_alive: + data = character(self.serial.read(1)) + + if self.repr_mode == 0: + # direct output, just have to care about newline setting + if data == '\r' and self.convert_outgoing == CONVERT_CR: + sys.stdout.write('\n') + else: + sys.stdout.write(data) + elif self.repr_mode == 1: + # escape non-printable, let pass newlines + if self.convert_outgoing == CONVERT_CRLF and data in '\r\n': + if data == '\n': + sys.stdout.write('\n') + elif data == '\r': + pass + elif data == '\n' and self.convert_outgoing == CONVERT_LF: + sys.stdout.write('\n') + elif data == '\r' and self.convert_outgoing == CONVERT_CR: + sys.stdout.write('\n') + else: + sys.stdout.write(repr(data)[1:-1]) + elif self.repr_mode == 2: + # escape all non-printable, including newline + sys.stdout.write(repr(data)[1:-1]) + elif self.repr_mode == 3: + # escape everything (hexdump) + for c in data: + sys.stdout.write("%s " % c.encode('hex')) + sys.stdout.flush() + except serial.SerialException, e: + self.alive = False + # would be nice if the console reader could be interruptted at this + # point... + raise + + + def writer(self): + """\ + Loop and copy console->serial until EXITCHARCTER character is + found. When MENUCHARACTER is found, interpret the next key + locally. + """ + menu_active = False + try: + while self.alive: + try: + b = console.getkey() + except KeyboardInterrupt: + b = serial.to_bytes([3]) + c = character(b) + if menu_active: + if c == MENUCHARACTER or c == EXITCHARCTER: # Menu character again/exit char -> send itself + self.serial.write(b) # send character + if self.echo: + sys.stdout.write(c) + elif c == '\x15': # CTRL+U -> upload file + sys.stderr.write('\n--- File to upload: ') + sys.stderr.flush() + console.cleanup() + filename = sys.stdin.readline().rstrip('\r\n') + if filename: + try: + file = open(filename, 'r') + sys.stderr.write('--- Sending file %s ---\n' % filename) + while True: + line = file.readline().rstrip('\r\n') + if not line: + break + self.serial.write(line) + self.serial.write('\r\n') + # Wait for output buffer to drain. + self.serial.flush() + sys.stderr.write('.') # Progress indicator. + sys.stderr.write('\n--- File %s sent ---\n' % filename) + except IOError, e: + sys.stderr.write('--- ERROR opening file %s: %s ---\n' % (filename, e)) + console.setup() + elif c in '\x08hH?': # CTRL+H, h, H, ? -> Show help + sys.stderr.write(get_help_text()) + elif c == '\x12': # CTRL+R -> Toggle RTS + self.rts_state = not self.rts_state + self.serial.setRTS(self.rts_state) + sys.stderr.write('--- RTS %s ---\n' % (self.rts_state and 'active' or 'inactive')) + elif c == '\x04': # CTRL+D -> Toggle DTR + self.dtr_state = not self.dtr_state + self.serial.setDTR(self.dtr_state) + sys.stderr.write('--- DTR %s ---\n' % (self.dtr_state and 'active' or 'inactive')) + elif c == '\x02': # CTRL+B -> toggle BREAK condition + self.break_state = not self.break_state + self.serial.setBreak(self.break_state) + sys.stderr.write('--- BREAK %s ---\n' % (self.break_state and 'active' or 'inactive')) + elif c == '\x05': # CTRL+E -> toggle local echo + self.echo = not self.echo + sys.stderr.write('--- local echo %s ---\n' % (self.echo and 'active' or 'inactive')) + elif c == '\x09': # CTRL+I -> info + self.dump_port_settings() + elif c == '\x01': # CTRL+A -> cycle escape mode + self.repr_mode += 1 + if self.repr_mode > 3: + self.repr_mode = 0 + sys.stderr.write('--- escape data: %s ---\n' % ( + REPR_MODES[self.repr_mode], + )) + elif c == '\x0c': # CTRL+L -> cycle linefeed mode + self.convert_outgoing += 1 + if self.convert_outgoing > 2: + self.convert_outgoing = 0 + self.newline = NEWLINE_CONVERISON_MAP[self.convert_outgoing] + sys.stderr.write('--- line feed %s ---\n' % ( + LF_MODES[self.convert_outgoing], + )) + elif c in 'pP': # P -> change port + dump_port_list() + sys.stderr.write('--- Enter port name: ') + sys.stderr.flush() + console.cleanup() + try: + port = sys.stdin.readline().strip() + except KeyboardInterrupt: + port = None + console.setup() + if port and port != self.serial.port: + # reader thread needs to be shut down + self._stop_reader() + # save settings + settings = self.serial.getSettingsDict() + try: + try: + new_serial = serial.serial_for_url(port, do_not_open=True) + except AttributeError: + # happens when the installed pyserial is older than 2.5. use the + # Serial class directly then. + new_serial = serial.Serial() + new_serial.port = port + # restore settings and open + new_serial.applySettingsDict(settings) + new_serial.open() + new_serial.setRTS(self.rts_state) + new_serial.setDTR(self.dtr_state) + new_serial.setBreak(self.break_state) + except Exception, e: + sys.stderr.write('--- ERROR opening new port: %s ---\n' % (e,)) + new_serial.close() + else: + self.serial.close() + self.serial = new_serial + sys.stderr.write('--- Port changed to: %s ---\n' % (self.serial.port,)) + # and restart the reader thread + self._start_reader() + elif c in 'bB': # B -> change baudrate + sys.stderr.write('\n--- Baudrate: ') + sys.stderr.flush() + console.cleanup() + backup = self.serial.baudrate + try: + self.serial.baudrate = int(sys.stdin.readline().strip()) + except ValueError, e: + sys.stderr.write('--- ERROR setting baudrate: %s ---\n' % (e,)) + self.serial.baudrate = backup + else: + self.dump_port_settings() + console.setup() + elif c == '8': # 8 -> change to 8 bits + self.serial.bytesize = serial.EIGHTBITS + self.dump_port_settings() + elif c == '7': # 7 -> change to 8 bits + self.serial.bytesize = serial.SEVENBITS + self.dump_port_settings() + elif c in 'eE': # E -> change to even parity + self.serial.parity = serial.PARITY_EVEN + self.dump_port_settings() + elif c in 'oO': # O -> change to odd parity + self.serial.parity = serial.PARITY_ODD + self.dump_port_settings() + elif c in 'mM': # M -> change to mark parity + self.serial.parity = serial.PARITY_MARK + self.dump_port_settings() + elif c in 'sS': # S -> change to space parity + self.serial.parity = serial.PARITY_SPACE + self.dump_port_settings() + elif c in 'nN': # N -> change to no parity + self.serial.parity = serial.PARITY_NONE + self.dump_port_settings() + elif c == '1': # 1 -> change to 1 stop bits + self.serial.stopbits = serial.STOPBITS_ONE + self.dump_port_settings() + elif c == '2': # 2 -> change to 2 stop bits + self.serial.stopbits = serial.STOPBITS_TWO + self.dump_port_settings() + elif c == '3': # 3 -> change to 1.5 stop bits + self.serial.stopbits = serial.STOPBITS_ONE_POINT_FIVE + self.dump_port_settings() + elif c in 'xX': # X -> change software flow control + self.serial.xonxoff = (c == 'X') + self.dump_port_settings() + elif c in 'rR': # R -> change hardware flow control + self.serial.rtscts = (c == 'R') + self.dump_port_settings() + else: + sys.stderr.write('--- unknown menu character %s --\n' % key_description(c)) + menu_active = False + elif c == MENUCHARACTER: # next char will be for menu + menu_active = True + elif c == EXITCHARCTER: + self.stop() + break # exit app + elif c == '\n': + self.serial.write(self.newline) # send newline character(s) + if self.echo: + sys.stdout.write(c) # local echo is a real newline in any case + sys.stdout.flush() + else: + self.serial.write(b) # send byte + if self.echo: + sys.stdout.write(c) + sys.stdout.flush() + except: + self.alive = False + raise + +def main(): + import optparse + + parser = optparse.OptionParser( + usage = "%prog [options] [port [baudrate]]", + description = "Miniterm - A simple terminal program for the serial port." + ) + + group = optparse.OptionGroup(parser, "Port settings") + + group.add_option("-p", "--port", + dest = "port", + help = "port, a number or a device name. (deprecated option, use parameter instead)", + default = DEFAULT_PORT + ) + + group.add_option("-b", "--baud", + dest = "baudrate", + action = "store", + type = 'int', + help = "set baud rate, default %default", + default = DEFAULT_BAUDRATE + ) + + group.add_option("--parity", + dest = "parity", + action = "store", + help = "set parity, one of [N, E, O, S, M], default=N", + default = 'N' + ) + + group.add_option("--rtscts", + dest = "rtscts", + action = "store_true", + help = "enable RTS/CTS flow control (default off)", + default = False + ) + + group.add_option("--xonxoff", + dest = "xonxoff", + action = "store_true", + help = "enable software flow control (default off)", + default = False + ) + + group.add_option("--rts", + dest = "rts_state", + action = "store", + type = 'int', + help = "set initial RTS line state (possible values: 0, 1)", + default = DEFAULT_RTS + ) + + group.add_option("--dtr", + dest = "dtr_state", + action = "store", + type = 'int', + help = "set initial DTR line state (possible values: 0, 1)", + default = DEFAULT_DTR + ) + + parser.add_option_group(group) + + group = optparse.OptionGroup(parser, "Data handling") + + group.add_option("-e", "--echo", + dest = "echo", + action = "store_true", + help = "enable local echo (default off)", + default = False + ) + + group.add_option("--cr", + dest = "cr", + action = "store_true", + help = "do not send CR+LF, send CR only", + default = False + ) + + group.add_option("--lf", + dest = "lf", + action = "store_true", + help = "do not send CR+LF, send LF only", + default = False + ) + + group.add_option("-D", "--debug", + dest = "repr_mode", + action = "count", + help = """debug received data (escape non-printable chars) +--debug can be given multiple times: +0: just print what is received +1: escape non-printable characters, do newlines as unusual +2: escape non-printable characters, newlines too +3: hex dump everything""", + default = 0 + ) + + parser.add_option_group(group) + + + group = optparse.OptionGroup(parser, "Hotkeys") + + group.add_option("--exit-char", + dest = "exit_char", + action = "store", + type = 'int', + help = "ASCII code of special character that is used to exit the application", + default = 0x1d + ) + + group.add_option("--menu-char", + dest = "menu_char", + action = "store", + type = 'int', + help = "ASCII code of special character that is used to control miniterm (menu)", + default = 0x14 + ) + + parser.add_option_group(group) + + group = optparse.OptionGroup(parser, "Diagnostics") + + group.add_option("-q", "--quiet", + dest = "quiet", + action = "store_true", + help = "suppress non-error messages", + default = False + ) + + parser.add_option_group(group) + + + (options, args) = parser.parse_args() + + options.parity = options.parity.upper() + if options.parity not in 'NEOSM': + parser.error("invalid parity") + + if options.cr and options.lf: + parser.error("only one of --cr or --lf can be specified") + + if options.menu_char == options.exit_char: + parser.error('--exit-char can not be the same as --menu-char') + + global EXITCHARCTER, MENUCHARACTER + EXITCHARCTER = chr(options.exit_char) + MENUCHARACTER = chr(options.menu_char) + + port = options.port + baudrate = options.baudrate + if args: + if options.port is not None: + parser.error("no arguments are allowed, options only when --port is given") + port = args.pop(0) + if args: + try: + baudrate = int(args[0]) + except ValueError: + parser.error("baud rate must be a number, not %r" % args[0]) + args.pop(0) + if args: + parser.error("too many arguments") + else: + # noport given on command line -> ask user now + if port is None: + dump_port_list() + port = raw_input('Enter port name:') + + convert_outgoing = CONVERT_CRLF + if options.cr: + convert_outgoing = CONVERT_CR + elif options.lf: + convert_outgoing = CONVERT_LF + + try: + miniterm = Miniterm( + port, + baudrate, + options.parity, + rtscts=options.rtscts, + xonxoff=options.xonxoff, + echo=options.echo, + convert_outgoing=convert_outgoing, + repr_mode=options.repr_mode, + ) + except serial.SerialException, e: + sys.stderr.write("could not open port %r: %s\n" % (port, e)) + sys.exit(1) + + if not options.quiet: + sys.stderr.write('--- Miniterm on %s: %d,%s,%s,%s ---\n' % ( + miniterm.serial.portstr, + miniterm.serial.baudrate, + miniterm.serial.bytesize, + miniterm.serial.parity, + miniterm.serial.stopbits, + )) + sys.stderr.write('--- Quit: %s | Menu: %s | Help: %s followed by %s ---\n' % ( + key_description(EXITCHARCTER), + key_description(MENUCHARACTER), + key_description(MENUCHARACTER), + key_description('\x08'), + )) + + if options.dtr_state is not None: + if not options.quiet: + sys.stderr.write('--- forcing DTR %s\n' % (options.dtr_state and 'active' or 'inactive')) + miniterm.serial.setDTR(options.dtr_state) + miniterm.dtr_state = options.dtr_state + if options.rts_state is not None: + if not options.quiet: + sys.stderr.write('--- forcing RTS %s\n' % (options.rts_state and 'active' or 'inactive')) + miniterm.serial.setRTS(options.rts_state) + miniterm.rts_state = options.rts_state + + console.setup() + miniterm.start() + try: + miniterm.join(True) + except KeyboardInterrupt: + pass + if not options.quiet: + sys.stderr.write("\n--- exit ---\n") + miniterm.join() + #~ console.cleanup() + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +if __name__ == '__main__': + main() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/urlhandler/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/urlhandler/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/urlhandler/protocol_hwgrep.py b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/urlhandler/protocol_hwgrep.py new file mode 100644 index 0000000..62cda43 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/urlhandler/protocol_hwgrep.py @@ -0,0 +1,45 @@ +#! python +# +# Python Serial Port Extension for Win32, Linux, BSD, Jython +# see __init__.py +# +# This module implements a special URL handler that uses the port listing to +# find ports by searching the string descriptions. +# +# (C) 2011 Chris Liechti +# this is distributed under a free software license, see license.txt +# +# URL format: hwgrep://regexp + +import serial +import serial.tools.list_ports + +class Serial(serial.Serial): + """Just inherit the native Serial port implementation and patch the open function.""" + + def setPort(self, value): + """translate port name before storing it""" + if isinstance(value, basestring) and value.startswith('hwgrep://'): + serial.Serial.setPort(self, self.fromURL(value)) + else: + serial.Serial.setPort(self, value) + + def fromURL(self, url): + """extract host and port from an URL string""" + if url.lower().startswith("hwgrep://"): url = url[9:] + # use a for loop to get the 1st element from the generator + for port, desc, hwid in serial.tools.list_ports.grep(url): + return port + else: + raise serial.SerialException('no ports found matching regexp %r' % (url,)) + + # override property + port = property(serial.Serial.getPort, setPort, doc="Port setting") + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +if __name__ == '__main__': + #~ s = Serial('hwgrep://ttyS0') + s = Serial(None) + s.port = 'hwgrep://ttyS0' + print s + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/urlhandler/protocol_loop.py b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/urlhandler/protocol_loop.py new file mode 100644 index 0000000..7da94ad --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/urlhandler/protocol_loop.py @@ -0,0 +1,265 @@ +#! python +# +# Python Serial Port Extension for Win32, Linux, BSD, Jython +# see __init__.py +# +# This module implements a loop back connection receiving itself what it sent. +# +# The purpose of this module is.. well... You can run the unit tests with it. +# and it was so easy to implement ;-) +# +# (C) 2001-2011 Chris Liechti +# this is distributed under a free software license, see license.txt +# +# URL format: loop://[option[/option...]] +# options: +# - "debug" print diagnostic messages + +from serial.serialutil import * +import threading +import time +import logging + +# map log level names to constants. used in fromURL() +LOGGER_LEVELS = { + 'debug': logging.DEBUG, + 'info': logging.INFO, + 'warning': logging.WARNING, + 'error': logging.ERROR, + } + + +class LoopbackSerial(SerialBase): + """Serial port implementation that simulates a loop back connection in plain software.""" + + BAUDRATES = (50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, + 9600, 19200, 38400, 57600, 115200) + + def open(self): + """Open port with current settings. This may throw a SerialException + if the port cannot be opened.""" + if self._isOpen: + raise SerialException("Port is already open.") + self.logger = None + self.buffer_lock = threading.Lock() + self.loop_buffer = bytearray() + self.cts = False + self.dsr = False + + if self._port is None: + raise SerialException("Port must be configured before it can be used.") + # not that there is anything to open, but the function applies the + # options found in the URL + self.fromURL(self.port) + + # not that there anything to configure... + self._reconfigurePort() + # all things set up get, now a clean start + self._isOpen = True + if not self._rtscts: + self.setRTS(True) + self.setDTR(True) + self.flushInput() + self.flushOutput() + + def _reconfigurePort(self): + """Set communication parameters on opened port. for the loop:// + protocol all settings are ignored!""" + # not that's it of any real use, but it helps in the unit tests + if not isinstance(self._baudrate, (int, long)) or not 0 < self._baudrate < 2**32: + raise ValueError("invalid baudrate: %r" % (self._baudrate)) + if self.logger: + self.logger.info('_reconfigurePort()') + + def close(self): + """Close port""" + if self._isOpen: + self._isOpen = False + # in case of quick reconnects, give the server some time + time.sleep(0.3) + + def makeDeviceName(self, port): + raise SerialException("there is no sensible way to turn numbers into URLs") + + def fromURL(self, url): + """extract host and port from an URL string""" + if url.lower().startswith("loop://"): url = url[7:] + try: + # process options now, directly altering self + for option in url.split('/'): + if '=' in option: + option, value = option.split('=', 1) + else: + value = None + if not option: + pass + elif option == 'logging': + logging.basicConfig() # XXX is that good to call it here? + self.logger = logging.getLogger('pySerial.loop') + self.logger.setLevel(LOGGER_LEVELS[value]) + self.logger.debug('enabled logging') + else: + raise ValueError('unknown option: %r' % (option,)) + except ValueError, e: + raise SerialException('expected a string in the form "[loop://][option[/option...]]": %s' % e) + + # - - - - - - - - - - - - - - - - - - - - - - - - + + def inWaiting(self): + """Return the number of characters currently in the input buffer.""" + if not self._isOpen: raise portNotOpenError + if self.logger: + # attention the logged value can differ from return value in + # threaded environments... + self.logger.debug('inWaiting() -> %d' % (len(self.loop_buffer),)) + return len(self.loop_buffer) + + def read(self, size=1): + """Read size bytes from the serial port. If a timeout is set it may + return less characters as requested. With no timeout it will block + until the requested number of bytes is read.""" + if not self._isOpen: raise portNotOpenError + if self._timeout is not None: + timeout = time.time() + self._timeout + else: + timeout = None + data = bytearray() + while size > 0: + self.buffer_lock.acquire() + try: + block = to_bytes(self.loop_buffer[:size]) + del self.loop_buffer[:size] + finally: + self.buffer_lock.release() + data += block + size -= len(block) + # check for timeout now, after data has been read. + # useful for timeout = 0 (non blocking) read + if timeout and time.time() > timeout: + break + return bytes(data) + + def write(self, data): + """Output the given string over the serial port. Can block if the + connection is blocked. May raise SerialException if the connection is + closed.""" + if not self._isOpen: raise portNotOpenError + # ensure we're working with bytes + data = to_bytes(data) + # calculate aprox time that would be used to send the data + time_used_to_send = 10.0*len(data) / self._baudrate + # when a write timeout is configured check if we would be successful + # (not sending anything, not even the part that would have time) + if self._writeTimeout is not None and time_used_to_send > self._writeTimeout: + time.sleep(self._writeTimeout) # must wait so that unit test succeeds + raise writeTimeoutError + self.buffer_lock.acquire() + try: + self.loop_buffer += data + finally: + self.buffer_lock.release() + return len(data) + + def flushInput(self): + """Clear input buffer, discarding all that is in the buffer.""" + if not self._isOpen: raise portNotOpenError + if self.logger: + self.logger.info('flushInput()') + self.buffer_lock.acquire() + try: + del self.loop_buffer[:] + finally: + self.buffer_lock.release() + + def flushOutput(self): + """Clear output buffer, aborting the current output and + discarding all that is in the buffer.""" + if not self._isOpen: raise portNotOpenError + if self.logger: + self.logger.info('flushOutput()') + + def sendBreak(self, duration=0.25): + """Send break condition. Timed, returns to idle state after given + duration.""" + if not self._isOpen: raise portNotOpenError + + def setBreak(self, level=True): + """Set break: Controls TXD. When active, to transmitting is + possible.""" + if not self._isOpen: raise portNotOpenError + if self.logger: + self.logger.info('setBreak(%r)' % (level,)) + + def setRTS(self, level=True): + """Set terminal status line: Request To Send""" + if not self._isOpen: raise portNotOpenError + if self.logger: + self.logger.info('setRTS(%r) -> state of CTS' % (level,)) + self.cts = level + + def setDTR(self, level=True): + """Set terminal status line: Data Terminal Ready""" + if not self._isOpen: raise portNotOpenError + if self.logger: + self.logger.info('setDTR(%r) -> state of DSR' % (level,)) + self.dsr = level + + def getCTS(self): + """Read terminal status line: Clear To Send""" + if not self._isOpen: raise portNotOpenError + if self.logger: + self.logger.info('getCTS() -> state of RTS (%r)' % (self.cts,)) + return self.cts + + def getDSR(self): + """Read terminal status line: Data Set Ready""" + if not self._isOpen: raise portNotOpenError + if self.logger: + self.logger.info('getDSR() -> state of DTR (%r)' % (self.dsr,)) + return self.dsr + + def getRI(self): + """Read terminal status line: Ring Indicator""" + if not self._isOpen: raise portNotOpenError + if self.logger: + self.logger.info('returning dummy for getRI()') + return False + + def getCD(self): + """Read terminal status line: Carrier Detect""" + if not self._isOpen: raise portNotOpenError + if self.logger: + self.logger.info('returning dummy for getCD()') + return True + + # - - - platform specific - - - + # None so far + + +# assemble Serial class with the platform specific implementation and the base +# for file-like behavior. for Python 2.6 and newer, that provide the new I/O +# library, derive from io.RawIOBase +try: + import io +except ImportError: + # classic version with our own file-like emulation + class Serial(LoopbackSerial, FileLike): + pass +else: + # io library present + class Serial(LoopbackSerial, io.RawIOBase): + pass + + +# simple client test +if __name__ == '__main__': + import sys + s = Serial('loop://') + sys.stdout.write('%s\n' % s) + + sys.stdout.write("write...\n") + s.write("hello\n") + s.flush() + sys.stdout.write("read: %s\n" % s.read(5)) + + s.close() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/urlhandler/protocol_rfc2217.py b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/urlhandler/protocol_rfc2217.py new file mode 100644 index 0000000..981ba45 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/urlhandler/protocol_rfc2217.py @@ -0,0 +1,11 @@ +#! python +# +# Python Serial Port Extension for Win32, Linux, BSD, Jython +# see ../__init__.py +# +# This is a thin wrapper to load the rfc2271 implementation. +# +# (C) 2011 Chris Liechti +# this is distributed under a free software license, see license.txt + +from serial.rfc2217 import Serial diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/urlhandler/protocol_socket.py b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/urlhandler/protocol_socket.py new file mode 100644 index 0000000..c90a8e4 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/urlhandler/protocol_socket.py @@ -0,0 +1,274 @@ +#! python +# +# Python Serial Port Extension for Win32, Linux, BSD, Jython +# see __init__.py +# +# This module implements a simple socket based client. +# It does not support changing any port parameters and will silently ignore any +# requests to do so. +# +# The purpose of this module is that applications using pySerial can connect to +# TCP/IP to serial port converters that do not support RFC 2217. +# +# (C) 2001-2011 Chris Liechti +# this is distributed under a free software license, see license.txt +# +# URL format: socket://:[/option[/option...]] +# options: +# - "debug" print diagnostic messages + +from serial.serialutil import * +import time +import socket +import logging + +# map log level names to constants. used in fromURL() +LOGGER_LEVELS = { + 'debug': logging.DEBUG, + 'info': logging.INFO, + 'warning': logging.WARNING, + 'error': logging.ERROR, + } + +POLL_TIMEOUT = 2 + +class SocketSerial(SerialBase): + """Serial port implementation for plain sockets.""" + + BAUDRATES = (50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, + 9600, 19200, 38400, 57600, 115200) + + def open(self): + """Open port with current settings. This may throw a SerialException + if the port cannot be opened.""" + self.logger = None + if self._port is None: + raise SerialException("Port must be configured before it can be used.") + if self._isOpen: + raise SerialException("Port is already open.") + try: + # XXX in future replace with create_connection (py >=2.6) + self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + self._socket.connect(self.fromURL(self.portstr)) + except Exception, msg: + self._socket = None + raise SerialException("Could not open port %s: %s" % (self.portstr, msg)) + + self._socket.settimeout(POLL_TIMEOUT) # used for write timeout support :/ + + # not that there anything to configure... + self._reconfigurePort() + # all things set up get, now a clean start + self._isOpen = True + if not self._rtscts: + self.setRTS(True) + self.setDTR(True) + self.flushInput() + self.flushOutput() + + def _reconfigurePort(self): + """Set communication parameters on opened port. for the socket:// + protocol all settings are ignored!""" + if self._socket is None: + raise SerialException("Can only operate on open ports") + if self.logger: + self.logger.info('ignored port configuration change') + + def close(self): + """Close port""" + if self._isOpen: + if self._socket: + try: + self._socket.shutdown(socket.SHUT_RDWR) + self._socket.close() + except: + # ignore errors. + pass + self._socket = None + self._isOpen = False + # in case of quick reconnects, give the server some time + time.sleep(0.3) + + def makeDeviceName(self, port): + raise SerialException("there is no sensible way to turn numbers into URLs") + + def fromURL(self, url): + """extract host and port from an URL string""" + if url.lower().startswith("socket://"): url = url[9:] + try: + # is there a "path" (our options)? + if '/' in url: + # cut away options + url, options = url.split('/', 1) + # process options now, directly altering self + for option in options.split('/'): + if '=' in option: + option, value = option.split('=', 1) + else: + value = None + if option == 'logging': + logging.basicConfig() # XXX is that good to call it here? + self.logger = logging.getLogger('pySerial.socket') + self.logger.setLevel(LOGGER_LEVELS[value]) + self.logger.debug('enabled logging') + else: + raise ValueError('unknown option: %r' % (option,)) + # get host and port + host, port = url.split(':', 1) # may raise ValueError because of unpacking + port = int(port) # and this if it's not a number + if not 0 <= port < 65536: raise ValueError("port not in range 0...65535") + except ValueError, e: + raise SerialException('expected a string in the form "[rfc2217://]:[/option[/option...]]": %s' % e) + return (host, port) + + # - - - - - - - - - - - - - - - - - - - - - - - - + + def inWaiting(self): + """Return the number of characters currently in the input buffer.""" + if not self._isOpen: raise portNotOpenError + if self.logger: + # set this one to debug as the function could be called often... + self.logger.debug('WARNING: inWaiting returns dummy value') + return 0 # hmmm, see comment in read() + + def read(self, size=1): + """Read size bytes from the serial port. If a timeout is set it may + return less characters as requested. With no timeout it will block + until the requested number of bytes is read.""" + if not self._isOpen: raise portNotOpenError + data = bytearray() + if self._timeout is not None: + timeout = time.time() + self._timeout + else: + timeout = None + while len(data) < size and (timeout is None or time.time() < timeout): + try: + # an implementation with internal buffer would be better + # performing... + t = time.time() + block = self._socket.recv(size - len(data)) + duration = time.time() - t + if block: + data.extend(block) + else: + # no data -> EOF (connection probably closed) + break + except socket.timeout: + # just need to get out of recv from time to time to check if + # still alive + continue + except socket.error, e: + # connection fails -> terminate loop + raise SerialException('connection failed (%s)' % e) + return bytes(data) + + def write(self, data): + """Output the given string over the serial port. Can block if the + connection is blocked. May raise SerialException if the connection is + closed.""" + if not self._isOpen: raise portNotOpenError + try: + self._socket.sendall(to_bytes(data)) + except socket.error, e: + # XXX what exception if socket connection fails + raise SerialException("socket connection failed: %s" % e) + return len(data) + + def flushInput(self): + """Clear input buffer, discarding all that is in the buffer.""" + if not self._isOpen: raise portNotOpenError + if self.logger: + self.logger.info('ignored flushInput') + + def flushOutput(self): + """Clear output buffer, aborting the current output and + discarding all that is in the buffer.""" + if not self._isOpen: raise portNotOpenError + if self.logger: + self.logger.info('ignored flushOutput') + + def sendBreak(self, duration=0.25): + """Send break condition. Timed, returns to idle state after given + duration.""" + if not self._isOpen: raise portNotOpenError + if self.logger: + self.logger.info('ignored sendBreak(%r)' % (duration,)) + + def setBreak(self, level=True): + """Set break: Controls TXD. When active, to transmitting is + possible.""" + if not self._isOpen: raise portNotOpenError + if self.logger: + self.logger.info('ignored setBreak(%r)' % (level,)) + + def setRTS(self, level=True): + """Set terminal status line: Request To Send""" + if not self._isOpen: raise portNotOpenError + if self.logger: + self.logger.info('ignored setRTS(%r)' % (level,)) + + def setDTR(self, level=True): + """Set terminal status line: Data Terminal Ready""" + if not self._isOpen: raise portNotOpenError + if self.logger: + self.logger.info('ignored setDTR(%r)' % (level,)) + + def getCTS(self): + """Read terminal status line: Clear To Send""" + if not self._isOpen: raise portNotOpenError + if self.logger: + self.logger.info('returning dummy for getCTS()') + return True + + def getDSR(self): + """Read terminal status line: Data Set Ready""" + if not self._isOpen: raise portNotOpenError + if self.logger: + self.logger.info('returning dummy for getDSR()') + return True + + def getRI(self): + """Read terminal status line: Ring Indicator""" + if not self._isOpen: raise portNotOpenError + if self.logger: + self.logger.info('returning dummy for getRI()') + return False + + def getCD(self): + """Read terminal status line: Carrier Detect""" + if not self._isOpen: raise portNotOpenError + if self.logger: + self.logger.info('returning dummy for getCD()') + return True + + # - - - platform specific - - - + # None so far + + +# assemble Serial class with the platform specific implementation and the base +# for file-like behavior. for Python 2.6 and newer, that provide the new I/O +# library, derive from io.RawIOBase +try: + import io +except ImportError: + # classic version with our own file-like emulation + class Serial(SocketSerial, FileLike): + pass +else: + # io library present + class Serial(SocketSerial, io.RawIOBase): + pass + + +# simple client test +if __name__ == '__main__': + import sys + s = Serial('socket://localhost:7000') + sys.stdout.write('%s\n' % s) + + sys.stdout.write("write...\n") + s.write("hello\n") + s.flush() + sys.stdout.write("read: %s\n" % s.read(5)) + + s.close() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/win32.py b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/win32.py new file mode 100644 index 0000000..61b3d7a --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/pyserial/serial/win32.py @@ -0,0 +1,320 @@ +from ctypes import * +from ctypes.wintypes import HANDLE +from ctypes.wintypes import BOOL +from ctypes.wintypes import LPCWSTR +_stdcall_libraries = {} +_stdcall_libraries['kernel32'] = WinDLL('kernel32') +from ctypes.wintypes import DWORD +from ctypes.wintypes import WORD +from ctypes.wintypes import BYTE + +INVALID_HANDLE_VALUE = HANDLE(-1).value + +# some details of the windows API differ between 32 and 64 bit systems.. +def is_64bit(): + """Returns true when running on a 64 bit system""" + return sizeof(c_ulong) != sizeof(c_void_p) + +# ULONG_PTR is a an ordinary number, not a pointer and contrary to the name it +# is either 32 or 64 bits, depending on the type of windows... +# so test if this a 32 bit windows... +if is_64bit(): + # assume 64 bits + ULONG_PTR = c_int64 +else: + # 32 bits + ULONG_PTR = c_ulong + + +class _SECURITY_ATTRIBUTES(Structure): + pass +LPSECURITY_ATTRIBUTES = POINTER(_SECURITY_ATTRIBUTES) + + +try: + CreateEventW = _stdcall_libraries['kernel32'].CreateEventW +except AttributeError: + # Fallback to non wide char version for old OS... + from ctypes.wintypes import LPCSTR + CreateEventA = _stdcall_libraries['kernel32'].CreateEventA + CreateEventA.restype = HANDLE + CreateEventA.argtypes = [LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCSTR] + CreateEvent=CreateEventA + + CreateFileA = _stdcall_libraries['kernel32'].CreateFileA + CreateFileA.restype = HANDLE + CreateFileA.argtypes = [LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE] + CreateFile = CreateFileA +else: + CreateEventW.restype = HANDLE + CreateEventW.argtypes = [LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCWSTR] + CreateEvent = CreateEventW # alias + + CreateFileW = _stdcall_libraries['kernel32'].CreateFileW + CreateFileW.restype = HANDLE + CreateFileW.argtypes = [LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE] + CreateFile = CreateFileW # alias + +class _OVERLAPPED(Structure): + pass +OVERLAPPED = _OVERLAPPED + +class _COMSTAT(Structure): + pass +COMSTAT = _COMSTAT + +class _DCB(Structure): + pass +DCB = _DCB + +class _COMMTIMEOUTS(Structure): + pass +COMMTIMEOUTS = _COMMTIMEOUTS + +GetLastError = _stdcall_libraries['kernel32'].GetLastError +GetLastError.restype = DWORD +GetLastError.argtypes = [] + +LPOVERLAPPED = POINTER(_OVERLAPPED) +LPDWORD = POINTER(DWORD) + +GetOverlappedResult = _stdcall_libraries['kernel32'].GetOverlappedResult +GetOverlappedResult.restype = BOOL +GetOverlappedResult.argtypes = [HANDLE, LPOVERLAPPED, LPDWORD, BOOL] + +ResetEvent = _stdcall_libraries['kernel32'].ResetEvent +ResetEvent.restype = BOOL +ResetEvent.argtypes = [HANDLE] + +LPCVOID = c_void_p + +WriteFile = _stdcall_libraries['kernel32'].WriteFile +WriteFile.restype = BOOL +WriteFile.argtypes = [HANDLE, LPCVOID, DWORD, LPDWORD, LPOVERLAPPED] + +LPVOID = c_void_p + +ReadFile = _stdcall_libraries['kernel32'].ReadFile +ReadFile.restype = BOOL +ReadFile.argtypes = [HANDLE, LPVOID, DWORD, LPDWORD, LPOVERLAPPED] + +CloseHandle = _stdcall_libraries['kernel32'].CloseHandle +CloseHandle.restype = BOOL +CloseHandle.argtypes = [HANDLE] + +ClearCommBreak = _stdcall_libraries['kernel32'].ClearCommBreak +ClearCommBreak.restype = BOOL +ClearCommBreak.argtypes = [HANDLE] + +LPCOMSTAT = POINTER(_COMSTAT) + +ClearCommError = _stdcall_libraries['kernel32'].ClearCommError +ClearCommError.restype = BOOL +ClearCommError.argtypes = [HANDLE, LPDWORD, LPCOMSTAT] + +SetupComm = _stdcall_libraries['kernel32'].SetupComm +SetupComm.restype = BOOL +SetupComm.argtypes = [HANDLE, DWORD, DWORD] + +EscapeCommFunction = _stdcall_libraries['kernel32'].EscapeCommFunction +EscapeCommFunction.restype = BOOL +EscapeCommFunction.argtypes = [HANDLE, DWORD] + +GetCommModemStatus = _stdcall_libraries['kernel32'].GetCommModemStatus +GetCommModemStatus.restype = BOOL +GetCommModemStatus.argtypes = [HANDLE, LPDWORD] + +LPDCB = POINTER(_DCB) + +GetCommState = _stdcall_libraries['kernel32'].GetCommState +GetCommState.restype = BOOL +GetCommState.argtypes = [HANDLE, LPDCB] + +LPCOMMTIMEOUTS = POINTER(_COMMTIMEOUTS) + +GetCommTimeouts = _stdcall_libraries['kernel32'].GetCommTimeouts +GetCommTimeouts.restype = BOOL +GetCommTimeouts.argtypes = [HANDLE, LPCOMMTIMEOUTS] + +PurgeComm = _stdcall_libraries['kernel32'].PurgeComm +PurgeComm.restype = BOOL +PurgeComm.argtypes = [HANDLE, DWORD] + +SetCommBreak = _stdcall_libraries['kernel32'].SetCommBreak +SetCommBreak.restype = BOOL +SetCommBreak.argtypes = [HANDLE] + +SetCommMask = _stdcall_libraries['kernel32'].SetCommMask +SetCommMask.restype = BOOL +SetCommMask.argtypes = [HANDLE, DWORD] + +SetCommState = _stdcall_libraries['kernel32'].SetCommState +SetCommState.restype = BOOL +SetCommState.argtypes = [HANDLE, LPDCB] + +SetCommTimeouts = _stdcall_libraries['kernel32'].SetCommTimeouts +SetCommTimeouts.restype = BOOL +SetCommTimeouts.argtypes = [HANDLE, LPCOMMTIMEOUTS] + +WaitForSingleObject = _stdcall_libraries['kernel32'].WaitForSingleObject +WaitForSingleObject.restype = DWORD +WaitForSingleObject.argtypes = [HANDLE, DWORD] + +ONESTOPBIT = 0 # Variable c_int +TWOSTOPBITS = 2 # Variable c_int +ONE5STOPBITS = 1 + +NOPARITY = 0 # Variable c_int +ODDPARITY = 1 # Variable c_int +EVENPARITY = 2 # Variable c_int +MARKPARITY = 3 +SPACEPARITY = 4 + +RTS_CONTROL_HANDSHAKE = 2 # Variable c_int +RTS_CONTROL_DISABLE = 0 # Variable c_int +RTS_CONTROL_ENABLE = 1 # Variable c_int +RTS_CONTROL_TOGGLE = 3 # Variable c_int +SETRTS = 3 +CLRRTS = 4 + +DTR_CONTROL_HANDSHAKE = 2 # Variable c_int +DTR_CONTROL_DISABLE = 0 # Variable c_int +DTR_CONTROL_ENABLE = 1 # Variable c_int +SETDTR = 5 +CLRDTR = 6 + +MS_DSR_ON = 32 # Variable c_ulong +EV_RING = 256 # Variable c_int +EV_PERR = 512 # Variable c_int +EV_ERR = 128 # Variable c_int +SETXOFF = 1 # Variable c_int +EV_RXCHAR = 1 # Variable c_int +GENERIC_WRITE = 1073741824 # Variable c_long +PURGE_TXCLEAR = 4 # Variable c_int +FILE_FLAG_OVERLAPPED = 1073741824 # Variable c_int +EV_DSR = 16 # Variable c_int +MAXDWORD = 4294967295L # Variable c_uint +EV_RLSD = 32 # Variable c_int +ERROR_IO_PENDING = 997 # Variable c_long +MS_CTS_ON = 16 # Variable c_ulong +EV_EVENT1 = 2048 # Variable c_int +EV_RX80FULL = 1024 # Variable c_int +PURGE_RXABORT = 2 # Variable c_int +FILE_ATTRIBUTE_NORMAL = 128 # Variable c_int +PURGE_TXABORT = 1 # Variable c_int +SETXON = 2 # Variable c_int +OPEN_EXISTING = 3 # Variable c_int +MS_RING_ON = 64 # Variable c_ulong +EV_TXEMPTY = 4 # Variable c_int +EV_RXFLAG = 2 # Variable c_int +MS_RLSD_ON = 128 # Variable c_ulong +GENERIC_READ = 2147483648L # Variable c_ulong +EV_EVENT2 = 4096 # Variable c_int +EV_CTS = 8 # Variable c_int +EV_BREAK = 64 # Variable c_int +PURGE_RXCLEAR = 8 # Variable c_int +INFINITE = 0xFFFFFFFFL + + +class N11_OVERLAPPED4DOLLAR_48E(Union): + pass +class N11_OVERLAPPED4DOLLAR_484DOLLAR_49E(Structure): + pass +N11_OVERLAPPED4DOLLAR_484DOLLAR_49E._fields_ = [ + ('Offset', DWORD), + ('OffsetHigh', DWORD), +] + +PVOID = c_void_p + +N11_OVERLAPPED4DOLLAR_48E._anonymous_ = ['_0'] +N11_OVERLAPPED4DOLLAR_48E._fields_ = [ + ('_0', N11_OVERLAPPED4DOLLAR_484DOLLAR_49E), + ('Pointer', PVOID), +] +_OVERLAPPED._anonymous_ = ['_0'] +_OVERLAPPED._fields_ = [ + ('Internal', ULONG_PTR), + ('InternalHigh', ULONG_PTR), + ('_0', N11_OVERLAPPED4DOLLAR_48E), + ('hEvent', HANDLE), +] +_SECURITY_ATTRIBUTES._fields_ = [ + ('nLength', DWORD), + ('lpSecurityDescriptor', LPVOID), + ('bInheritHandle', BOOL), +] +_COMSTAT._fields_ = [ + ('fCtsHold', DWORD, 1), + ('fDsrHold', DWORD, 1), + ('fRlsdHold', DWORD, 1), + ('fXoffHold', DWORD, 1), + ('fXoffSent', DWORD, 1), + ('fEof', DWORD, 1), + ('fTxim', DWORD, 1), + ('fReserved', DWORD, 25), + ('cbInQue', DWORD), + ('cbOutQue', DWORD), +] +_DCB._fields_ = [ + ('DCBlength', DWORD), + ('BaudRate', DWORD), + ('fBinary', DWORD, 1), + ('fParity', DWORD, 1), + ('fOutxCtsFlow', DWORD, 1), + ('fOutxDsrFlow', DWORD, 1), + ('fDtrControl', DWORD, 2), + ('fDsrSensitivity', DWORD, 1), + ('fTXContinueOnXoff', DWORD, 1), + ('fOutX', DWORD, 1), + ('fInX', DWORD, 1), + ('fErrorChar', DWORD, 1), + ('fNull', DWORD, 1), + ('fRtsControl', DWORD, 2), + ('fAbortOnError', DWORD, 1), + ('fDummy2', DWORD, 17), + ('wReserved', WORD), + ('XonLim', WORD), + ('XoffLim', WORD), + ('ByteSize', BYTE), + ('Parity', BYTE), + ('StopBits', BYTE), + ('XonChar', c_char), + ('XoffChar', c_char), + ('ErrorChar', c_char), + ('EofChar', c_char), + ('EvtChar', c_char), + ('wReserved1', WORD), +] +_COMMTIMEOUTS._fields_ = [ + ('ReadIntervalTimeout', DWORD), + ('ReadTotalTimeoutMultiplier', DWORD), + ('ReadTotalTimeoutConstant', DWORD), + ('WriteTotalTimeoutMultiplier', DWORD), + ('WriteTotalTimeoutConstant', DWORD), +] +__all__ = ['GetLastError', 'MS_CTS_ON', 'FILE_ATTRIBUTE_NORMAL', + 'DTR_CONTROL_ENABLE', '_COMSTAT', 'MS_RLSD_ON', + 'GetOverlappedResult', 'SETXON', 'PURGE_TXABORT', + 'PurgeComm', 'N11_OVERLAPPED4DOLLAR_48E', 'EV_RING', + 'ONESTOPBIT', 'SETXOFF', 'PURGE_RXABORT', 'GetCommState', + 'RTS_CONTROL_ENABLE', '_DCB', 'CreateEvent', + '_COMMTIMEOUTS', '_SECURITY_ATTRIBUTES', 'EV_DSR', + 'EV_PERR', 'EV_RXFLAG', 'OPEN_EXISTING', 'DCB', + 'FILE_FLAG_OVERLAPPED', 'EV_CTS', 'SetupComm', + 'LPOVERLAPPED', 'EV_TXEMPTY', 'ClearCommBreak', + 'LPSECURITY_ATTRIBUTES', 'SetCommBreak', 'SetCommTimeouts', + 'COMMTIMEOUTS', 'ODDPARITY', 'EV_RLSD', + 'GetCommModemStatus', 'EV_EVENT2', 'PURGE_TXCLEAR', + 'EV_BREAK', 'EVENPARITY', 'LPCVOID', 'COMSTAT', 'ReadFile', + 'PVOID', '_OVERLAPPED', 'WriteFile', 'GetCommTimeouts', + 'ResetEvent', 'EV_RXCHAR', 'LPCOMSTAT', 'ClearCommError', + 'ERROR_IO_PENDING', 'EscapeCommFunction', 'GENERIC_READ', + 'RTS_CONTROL_HANDSHAKE', 'OVERLAPPED', + 'DTR_CONTROL_HANDSHAKE', 'PURGE_RXCLEAR', 'GENERIC_WRITE', + 'LPDCB', 'CreateEventW', 'SetCommMask', 'EV_EVENT1', + 'SetCommState', 'LPVOID', 'CreateFileW', 'LPDWORD', + 'EV_RX80FULL', 'TWOSTOPBITS', 'LPCOMMTIMEOUTS', 'MAXDWORD', + 'MS_DSR_ON', 'MS_RING_ON', + 'N11_OVERLAPPED4DOLLAR_484DOLLAR_49E', 'EV_ERR', + 'ULONG_PTR', 'CreateFile', 'NOPARITY', 'CloseHandle'] diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/zipfile/LICENSE b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/zipfile/LICENSE new file mode 100644 index 0000000..84a3337 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/zipfile/LICENSE @@ -0,0 +1,255 @@ +A. HISTORY OF THE SOFTWARE +========================== + +Python was created in the early 1990s by Guido van Rossum at Stichting +Mathematisch Centrum (CWI, see http://www.cwi.nl) in the Netherlands +as a successor of a language called ABC. Guido remains Python's +principal author, although it includes many contributions from others. + +In 1995, Guido continued his work on Python at the Corporation for +National Research Initiatives (CNRI, see http://www.cnri.reston.va.us) +in Reston, Virginia where he released several versions of the +software. + +In May 2000, Guido and the Python core development team moved to +BeOpen.com to form the BeOpen PythonLabs team. In October of the same +year, the PythonLabs team moved to Digital Creations (now Zope +Corporation, see http://www.zope.com). In 2001, the Python Software +Foundation (PSF, see http://www.python.org/psf/) was formed, a +non-profit organization created specifically to own Python-related +Intellectual Property. Zope Corporation is a sponsoring member of +the PSF. + +All Python releases are Open Source (see http://www.opensource.org for +the Open Source Definition). Historically, most, but not all, Python +releases have also been GPL-compatible; the table below summarizes +the various releases. + + Release Derived Year Owner GPL- + from compatible? (1) + + 0.9.0 thru 1.2 1991-1995 CWI yes + 1.3 thru 1.5.2 1.2 1995-1999 CNRI yes + 1.6 1.5.2 2000 CNRI no + 2.0 1.6 2000 BeOpen.com no + 1.6.1 1.6 2001 CNRI yes (2) + 2.1 2.0+1.6.1 2001 PSF no + 2.0.1 2.0+1.6.1 2001 PSF yes + 2.1.1 2.1+2.0.1 2001 PSF yes + 2.1.2 2.1.1 2002 PSF yes + 2.1.3 2.1.2 2002 PSF yes + 2.2 and above 2.1.1 2001-now PSF yes + +Footnotes: + +(1) GPL-compatible doesn't mean that we're distributing Python under + the GPL. All Python licenses, unlike the GPL, let you distribute + a modified version without making your changes open source. The + GPL-compatible licenses make it possible to combine Python with + other software that is released under the GPL; the others don't. + +(2) According to Richard Stallman, 1.6.1 is not GPL-compatible, + because its license has a choice of law clause. According to + CNRI, however, Stallman's lawyer has told CNRI's lawyer that 1.6.1 + is "not incompatible" with the GPL. + +Thanks to the many outside volunteers who have worked under Guido's +direction to make these releases possible. + + +B. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING PYTHON +=============================================================== + +PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 +-------------------------------------------- + +1. This LICENSE AGREEMENT is between the Python Software Foundation +("PSF"), and the Individual or Organization ("Licensee") accessing and +otherwise using this software ("Python") in source or binary form and +its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, PSF hereby +grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, +analyze, test, perform and/or display publicly, prepare derivative works, +distribute, and otherwise use Python alone or in any derivative version, +provided, however, that PSF's License Agreement and PSF's notice of copyright, +i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +2011, 2012, 2013, 2014, 2015, 2016 Python Software Foundation; All Rights +Reserved" are retained in Python alone or in any derivative version prepared by +Licensee. + +3. In the event Licensee prepares a derivative work that is based on +or incorporates Python or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to Python. + +4. PSF is making Python available to Licensee on an "AS IS" +basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. Nothing in this License Agreement shall be deemed to create any +relationship of agency, partnership, or joint venture between PSF and +Licensee. This License Agreement does not grant permission to use PSF +trademarks or trade name in a trademark sense to endorse or promote +products or services of Licensee, or any third party. + +8. By copying, installing or otherwise using Python, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. + + +BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0 +------------------------------------------- + +BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1 + +1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an +office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the +Individual or Organization ("Licensee") accessing and otherwise using +this software in source or binary form and its associated +documentation ("the Software"). + +2. Subject to the terms and conditions of this BeOpen Python License +Agreement, BeOpen hereby grants Licensee a non-exclusive, +royalty-free, world-wide license to reproduce, analyze, test, perform +and/or display publicly, prepare derivative works, distribute, and +otherwise use the Software alone or in any derivative version, +provided, however, that the BeOpen Python License is retained in the +Software, alone or in any derivative version prepared by Licensee. + +3. BeOpen is making the Software available to Licensee on an "AS IS" +basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE +SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS +AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY +DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +5. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +6. This License Agreement shall be governed by and interpreted in all +respects by the law of the State of California, excluding conflict of +law provisions. Nothing in this License Agreement shall be deemed to +create any relationship of agency, partnership, or joint venture +between BeOpen and Licensee. This License Agreement does not grant +permission to use BeOpen trademarks or trade names in a trademark +sense to endorse or promote products or services of Licensee, or any +third party. As an exception, the "BeOpen Python" logos available at +http://www.pythonlabs.com/logos.html may be used according to the +permissions granted on that web page. + +7. By copying, installing or otherwise using the software, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. + + +CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1 +--------------------------------------- + +1. This LICENSE AGREEMENT is between the Corporation for National +Research Initiatives, having an office at 1895 Preston White Drive, +Reston, VA 20191 ("CNRI"), and the Individual or Organization +("Licensee") accessing and otherwise using Python 1.6.1 software in +source or binary form and its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, CNRI +hereby grants Licensee a nonexclusive, royalty-free, world-wide +license to reproduce, analyze, test, perform and/or display publicly, +prepare derivative works, distribute, and otherwise use Python 1.6.1 +alone or in any derivative version, provided, however, that CNRI's +License Agreement and CNRI's notice of copyright, i.e., "Copyright (c) +1995-2001 Corporation for National Research Initiatives; All Rights +Reserved" are retained in Python 1.6.1 alone or in any derivative +version prepared by Licensee. Alternately, in lieu of CNRI's License +Agreement, Licensee may substitute the following text (omitting the +quotes): "Python 1.6.1 is made available subject to the terms and +conditions in CNRI's License Agreement. This Agreement together with +Python 1.6.1 may be located on the Internet using the following +unique, persistent identifier (known as a handle): 1895.22/1013. This +Agreement may also be obtained from a proxy server on the Internet +using the following URL: http://hdl.handle.net/1895.22/1013". + +3. In the event Licensee prepares a derivative work that is based on +or incorporates Python 1.6.1 or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to Python 1.6.1. + +4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS" +basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. This License Agreement shall be governed by the federal +intellectual property law of the United States, including without +limitation the federal copyright law, and, to the extent such +U.S. federal law does not apply, by the law of the Commonwealth of +Virginia, excluding Virginia's conflict of law provisions. +Notwithstanding the foregoing, with regard to derivative works based +on Python 1.6.1 that incorporate non-separable material that was +previously distributed under the GNU General Public License (GPL), the +law of the Commonwealth of Virginia shall govern this License +Agreement only as to issues arising under or with respect to +Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this +License Agreement shall be deemed to create any relationship of +agency, partnership, or joint venture between CNRI and Licensee. This +License Agreement does not grant permission to use CNRI trademarks or +trade name in a trademark sense to endorse or promote products or +services of Licensee, or any third party. + +8. By clicking on the "ACCEPT" button where indicated, or by copying, +installing or otherwise using Python 1.6.1, Licensee agrees to be +bound by the terms and conditions of this License Agreement. + + ACCEPT + + +CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2 +-------------------------------------------------- + +Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, +The Netherlands. All rights reserved. + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Stichting Mathematisch +Centrum or CWI not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. + +STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/zipfile/README.chromium b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/zipfile/README.chromium new file mode 100644 index 0000000..f45d3cf --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/zipfile/README.chromium @@ -0,0 +1,16 @@ +Name: Python zipfile module +Short Name: zipfile +URL: https://github.com/python/cpython/blob/master/Lib/zipfile.py +Version: 2.7.13 +License: Python +License File: NOT_SHIPPED +Security Critical: no + +Description: +This is a copy of the zipfile module from Python 2.7.13. This snapshot was +taken to workaround a bug in older Python versions such as 2.7.3. See + and specifically the fix at +. + +Local Modifications: +Renamed zipfile.py to zipfile_2_7_13.py to avoid conflicting with system copy. diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/zipfile/zipfile_2_7_13.py b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/zipfile/zipfile_2_7_13.py new file mode 100644 index 0000000..1d10650 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/third_party/zipfile/zipfile_2_7_13.py @@ -0,0 +1,1543 @@ +""" +Read and write ZIP files. +""" +import struct, os, time, sys, shutil +import binascii, cStringIO, stat +import io +import re +import string + +try: + 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" ] + +class BadZipfile(Exception): + pass + + +class LargeZipFile(Exception): + """ + Raised when writing a zipfile, the zipfile requires ZIP64 extensions + and those extensions are disabled. + """ + +error = BadZipfile # The exception raised by this module + +ZIP64_LIMIT = (1 << 31) - 1 +ZIP_FILECOUNT_LIMIT = (1 << 16) - 1 +ZIP_MAX_COMMENT = (1 << 16) - 1 + +# constants for Zip file compression methods +ZIP_STORED = 0 +ZIP_DEFLATED = 8 +# Other ZIP compression methods not supported + +# Below are some formats and associated data for reading/writing headers using +# the struct module. The names and structures of headers/records are those used +# in the PKWARE description of the ZIP file format: +# http://www.pkware.com/documents/casestudies/APPNOTE.TXT +# (URL valid as of January 2008) + +# The "end of central directory" structure, magic number, size, and indices +# (section V.I in the format document) +structEndArchive = "<4s4H2LH" +stringEndArchive = "PK\005\006" +sizeEndCentDir = struct.calcsize(structEndArchive) + +_ECD_SIGNATURE = 0 +_ECD_DISK_NUMBER = 1 +_ECD_DISK_START = 2 +_ECD_ENTRIES_THIS_DISK = 3 +_ECD_ENTRIES_TOTAL = 4 +_ECD_SIZE = 5 +_ECD_OFFSET = 6 +_ECD_COMMENT_SIZE = 7 +# These last two indices are not part of the structure as defined in the +# spec, but they are used internally by this module as a convenience +_ECD_COMMENT = 8 +_ECD_LOCATION = 9 + +# The "central directory" structure, magic number, size, and indices +# of entries in the structure (section V.F in the format document) +structCentralDir = "<4s4B4HL2L5H2L" +stringCentralDir = "PK\001\002" +sizeCentralDir = struct.calcsize(structCentralDir) + +# indexes of entries in the central directory structure +_CD_SIGNATURE = 0 +_CD_CREATE_VERSION = 1 +_CD_CREATE_SYSTEM = 2 +_CD_EXTRACT_VERSION = 3 +_CD_EXTRACT_SYSTEM = 4 +_CD_FLAG_BITS = 5 +_CD_COMPRESS_TYPE = 6 +_CD_TIME = 7 +_CD_DATE = 8 +_CD_CRC = 9 +_CD_COMPRESSED_SIZE = 10 +_CD_UNCOMPRESSED_SIZE = 11 +_CD_FILENAME_LENGTH = 12 +_CD_EXTRA_FIELD_LENGTH = 13 +_CD_COMMENT_LENGTH = 14 +_CD_DISK_NUMBER_START = 15 +_CD_INTERNAL_FILE_ATTRIBUTES = 16 +_CD_EXTERNAL_FILE_ATTRIBUTES = 17 +_CD_LOCAL_HEADER_OFFSET = 18 + +# The "local file header" structure, magic number, size, and indices +# (section V.A in the format document) +structFileHeader = "<4s2B4HL2L2H" +stringFileHeader = "PK\003\004" +sizeFileHeader = struct.calcsize(structFileHeader) + +_FH_SIGNATURE = 0 +_FH_EXTRACT_VERSION = 1 +_FH_EXTRACT_SYSTEM = 2 +_FH_GENERAL_PURPOSE_FLAG_BITS = 3 +_FH_COMPRESSION_METHOD = 4 +_FH_LAST_MOD_TIME = 5 +_FH_LAST_MOD_DATE = 6 +_FH_CRC = 7 +_FH_COMPRESSED_SIZE = 8 +_FH_UNCOMPRESSED_SIZE = 9 +_FH_FILENAME_LENGTH = 10 +_FH_EXTRA_FIELD_LENGTH = 11 + +# The "Zip64 end of central directory locator" structure, magic number, and size +structEndArchive64Locator = "<4sLQL" +stringEndArchive64Locator = "PK\x06\x07" +sizeEndCentDir64Locator = struct.calcsize(structEndArchive64Locator) + +# The "Zip64 end of central directory" record, magic number, size, and indices +# (section V.G in the format document) +structEndArchive64 = "<4sQ2H2L4Q" +stringEndArchive64 = "PK\x06\x06" +sizeEndCentDir64 = struct.calcsize(structEndArchive64) + +_CD64_SIGNATURE = 0 +_CD64_DIRECTORY_RECSIZE = 1 +_CD64_CREATE_VERSION = 2 +_CD64_EXTRACT_VERSION = 3 +_CD64_DISK_NUMBER = 4 +_CD64_DISK_NUMBER_START = 5 +_CD64_NUMBER_ENTRIES_THIS_DISK = 6 +_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 + except IOError: + pass + return False + +def is_zipfile(filename): + """Quickly see if a file is a ZIP file by checking the magic number. + + The filename argument may be a file or file-like object too. + """ + result = False + try: + if hasattr(filename, "read"): + result = _check_zipfile(fp=filename) + else: + with open(filename, "rb") as fp: + result = _check_zipfile(fp) + except IOError: + pass + return result + +def _EndRecData64(fpin, offset, endrec): + """ + Read the ZIP64 end-of-archive records and use that to update endrec + """ + try: + fpin.seek(offset - sizeEndCentDir64Locator, 2) + except IOError: + # If the seek fails, the file is not large enough to contain a ZIP64 + # end-of-archive record, so just return the end record we were given. + return endrec + + data = fpin.read(sizeEndCentDir64Locator) + if len(data) != sizeEndCentDir64Locator: + return endrec + sig, diskno, reloff, disks = struct.unpack(structEndArchive64Locator, data) + if sig != stringEndArchive64Locator: + return endrec + + if diskno != 0 or disks != 1: + raise BadZipfile("zipfiles that span multiple disks are not supported") + + # Assume no 'zip64 extensible data' + fpin.seek(offset - sizeEndCentDir64Locator - sizeEndCentDir64, 2) + data = fpin.read(sizeEndCentDir64) + if len(data) != sizeEndCentDir64: + return endrec + sig, sz, create_version, read_version, disk_num, disk_dir, \ + dircount, dircount2, dirsize, diroffset = \ + struct.unpack(structEndArchive64, data) + if sig != stringEndArchive64: + return endrec + + # Update the original endrec using data from the ZIP64 record + endrec[_ECD_SIGNATURE] = sig + endrec[_ECD_DISK_NUMBER] = disk_num + endrec[_ECD_DISK_START] = disk_dir + endrec[_ECD_ENTRIES_THIS_DISK] = dircount + endrec[_ECD_ENTRIES_TOTAL] = dircount2 + endrec[_ECD_SIZE] = dirsize + endrec[_ECD_OFFSET] = diroffset + return endrec + + +def _EndRecData(fpin): + """Return data from the "End of Central Directory" record, or None. + + The data is a list of the nine items in the ZIP "End of central dir" + record followed by a tenth item, the file seek offset of this record.""" + + # Determine file size + fpin.seek(0, 2) + filesize = fpin.tell() + + # Check to see if this is ZIP file with no archive comment (the + # "end of central directory" structure should be the last item in the + # file if this is the case). + try: + fpin.seek(-sizeEndCentDir, 2) + except IOError: + return None + data = fpin.read() + if (len(data) == sizeEndCentDir and + data[0:4] == stringEndArchive and + data[-2:] == b"\000\000"): + # the signature is correct and there's no comment, unpack structure + endrec = struct.unpack(structEndArchive, data) + endrec=list(endrec) + + # Append a blank comment and record start offset + endrec.append("") + endrec.append(filesize - sizeEndCentDir) + + # Try to read the "Zip64 end of central directory" structure + return _EndRecData64(fpin, -sizeEndCentDir, endrec) + + # Either this is not a ZIP file, or it is a ZIP file with an archive + # comment. Search the end of the file for the "end of central directory" + # record signature. The comment is the last item in the ZIP file and may be + # up to 64K long. It is assumed that the "end of central directory" magic + # number does not appear in the comment. + maxCommentStart = max(filesize - (1 << 16) - sizeEndCentDir, 0) + fpin.seek(maxCommentStart, 0) + data = fpin.read() + start = data.rfind(stringEndArchive) + if start >= 0: + # found the magic number; attempt to unpack and interpret + recData = data[start:start+sizeEndCentDir] + if len(recData) != sizeEndCentDir: + # Zip file is corrupted. + return None + endrec = list(struct.unpack(structEndArchive, recData)) + 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) + + # Try to read the "Zip64 end of central directory" structure + return _EndRecData64(fpin, maxCommentStart + start - filesize, + endrec) + + # Unable to find a valid end of central directory structure + return None + + +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', + ) + + 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. + null_byte = filename.find(chr(0)) + if null_byte >= 0: + filename = filename[0:null_byte] + # This is used to ensure paths in generated ZIP files always use + # forward slashes as the directory separator, as required by the + # ZIP format specification. + 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 + + if date_time[0] < 1980: + raise ValueError('ZIP does not support timestamps before 1980') + + # Standard values: + 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 + 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 + # Other attributes are set by class ZipFile: + # header_offset Byte offset to the file header + # CRC CRC-32 of the uncompressed file + # compress_size Size of the compressed file + # file_size Size of the uncompressed file + + def FileHeader(self, zip64=None): + """Return the per-file header as a string.""" + dt = self.date_time + dosdate = (dt[0] - 1980) << 9 | dt[1] << 5 | dt[2] + dostime = dt[3] << 11 | dt[4] << 5 | (dt[5] // 2) + if self.flag_bits & 0x08: + # Set these to zero because we write them after the file data + CRC = compress_size = file_size = 0 + else: + CRC = self.CRC + compress_size = self.compress_size + file_size = self.file_size + + extra = self.extra + + if zip64 is None: + zip64 = file_size > ZIP64_LIMIT or compress_size > ZIP64_LIMIT + if zip64: + fmt = ' ZIP64_LIMIT or compress_size > ZIP64_LIMIT: + if not zip64: + raise LargeZipFile("Filesize would require ZIP64 extensions") + # File is larger than what fits into a 4 byte integer, + # fall back to the ZIP64 extension + file_size = 0xffffffff + compress_size = 0xffffffff + self.extract_version = max(45, self.extract_version) + self.create_version = max(45, self.extract_version) + + filename, flag_bits = self._encodeFilenameFlags() + header = struct.pack(structFileHeader, stringFileHeader, + self.extract_version, self.reserved, flag_bits, + self.compress_type, dostime, dosdate, CRC, + compress_size, file_size, + len(filename), len(extra)) + return header + filename + extra + + def _encodeFilenameFlags(self): + if isinstance(self.filename, unicode): + try: + return self.filename.encode('ascii'), self.flag_bits + except UnicodeEncodeError: + return self.filename.encode('utf-8'), self.flag_bits | 0x800 + else: + return self.filename, self.flag_bits + + def _decodeFilename(self): + if self.flag_bits & 0x800: + return self.filename.decode('utf-8') + else: + return self.filename + + def _decodeExtra(self): + # Try to decode the extra field. + extra = self.extra + unpack = struct.unpack + while len(extra) >= 4: + tp, ln = unpack('= 24: + counts = unpack('> 1) & 0x7FFFFFFF) ^ poly + else: + crc = ((crc >> 1) & 0x7FFFFFFF) + table[i] = crc + return table + crctable = _GenerateCRCTable() + + def _crc32(self, ch, crc): + """Compute the CRC32 primitive on one byte.""" + return ((crc >> 8) & 0xffffff) ^ self.crctable[(crc ^ ord(ch)) & 0xff] + + def __init__(self, pwd): + self.key0 = 305419896 + self.key1 = 591751049 + self.key2 = 878082192 + for p in pwd: + self._UpdateKeys(p) + + def _UpdateKeys(self, c): + self.key0 = self._crc32(c, self.key0) + self.key1 = (self.key1 + (self.key0 & 255)) & 4294967295 + self.key1 = (self.key1 * 134775813 + 1) & 4294967295 + self.key2 = self._crc32(chr((self.key1 >> 24) & 255), self.key2) + + def __call__(self, c): + """Decrypt a single character.""" + c = ord(c) + k = self.key2 | 2 + c = c ^ (((k * (k^1)) >> 8) & 255) + c = chr(c) + self._UpdateKeys(c) + return c + + +compressor_names = { + 0: 'store', + 1: 'shrink', + 2: 'reduce', + 3: 'reduce', + 4: 'reduce', + 5: 'reduce', + 6: 'implode', + 7: 'tokenize', + 8: 'deflate', + 9: 'deflate64', + 10: 'implode', + 12: 'bzip2', + 14: 'lzma', + 18: 'terse', + 19: 'lz77', + 97: 'wavpack', + 98: 'ppmd', +} + + +class ZipExtFile(io.BufferedIOBase): + """File-like object for reading an archive member. + Is returned by ZipFile.open(). + """ + + # Max size supported by decompressor. + MAX_N = 1 << 31 - 1 + + # Read from compressed files in 4k blocks. + MIN_READ_SIZE = 4096 + + # Search for universal newlines or line chunks. + PATTERN = re.compile(r'^(?P[^\r\n]+)|(?P\n|\r\n?)') + + def __init__(self, fileobj, mode, zipinfo, decrypter=None, + close_fileobj=False): + self._fileobj = fileobj + self._decrypter = decrypter + self._close_fileobj = close_fileobj + + self._compress_type = zipinfo.compress_type + self._compress_size = zipinfo.compress_size + self._compress_left = zipinfo.compress_size + + if self._compress_type == ZIP_DEFLATED: + self._decompressor = zlib.decompressobj(-15) + elif self._compress_type != ZIP_STORED: + descr = compressor_names.get(self._compress_type) + if descr: + raise NotImplementedError("compression type %d (%s)" % (self._compress_type, descr)) + else: + raise NotImplementedError("compression type %d" % (self._compress_type,)) + self._unconsumed = '' + + self._readbuffer = '' + self._offset = 0 + + self._universal = 'U' in mode + self.newlines = None + + # Adjust read size for encrypted files since the first 12 bytes + # are for the encryption/password information. + if self._decrypter is not None: + self._compress_left -= 12 + + self.mode = mode + self.name = zipinfo.filename + + if hasattr(zipinfo, 'CRC'): + self._expected_crc = zipinfo.CRC + self._running_crc = crc32(b'') & 0xffffffff + else: + self._expected_crc = None + + def readline(self, limit=-1): + """Read and return a line from the stream. + + If limit is specified, at most limit bytes will be read. + """ + + if not self._universal and limit < 0: + # Shortcut common case - newline found in buffer. + i = self._readbuffer.find('\n', self._offset) + 1 + if i > 0: + line = self._readbuffer[self._offset: i] + self._offset = i + return line + + if not self._universal: + return io.BufferedIOBase.readline(self, limit) + + line = '' + while limit < 0 or len(line) < limit: + readahead = self.peek(2) + if readahead == '': + return line + + # + # Search for universal newlines or line chunks. + # + # The pattern returns either a line chunk or a newline, but not + # both. Combined with peek(2), we are assured that the sequence + # '\r\n' is always retrieved completely and never split into + # separate newlines - '\r', '\n' due to coincidental readaheads. + # + match = self.PATTERN.search(readahead) + newline = match.group('newline') + if newline is not None: + if self.newlines is None: + self.newlines = [] + if newline not in self.newlines: + self.newlines.append(newline) + self._offset += len(newline) + return line + '\n' + + chunk = match.group('chunk') + if limit >= 0: + chunk = chunk[: limit - len(line)] + + self._offset += len(chunk) + line += chunk + + return line + + def peek(self, n=1): + """Returns buffered bytes without advancing the position.""" + if n > len(self._readbuffer) - self._offset: + chunk = self.read(n) + if len(chunk) > self._offset: + self._readbuffer = chunk + self._readbuffer[self._offset:] + self._offset = 0 + else: + self._offset -= len(chunk) + + # Return up to 512 bytes to reduce allocation overhead for tight loops. + return self._readbuffer[self._offset: self._offset + 512] + + def readable(self): + return True + + def read(self, n=-1): + """Read and return up to n bytes. + If the argument is omitted, None, or negative, data is read and returned until EOF is reached.. + """ + buf = '' + if n is None: + n = -1 + while True: + if n < 0: + data = self.read1(n) + elif n > len(buf): + data = self.read1(n - len(buf)) + else: + return buf + if len(data) == 0: + return buf + buf += data + + def _update_crc(self, newdata, eof): + # Update the CRC using the given data. + if self._expected_crc is None: + # No need to compute the CRC if we don't have a reference value + return + self._running_crc = crc32(newdata, self._running_crc) & 0xffffffff + # Check the CRC if we're at the end of the file + if eof and self._running_crc != self._expected_crc: + raise BadZipfile("Bad CRC-32 for file %r" % self.name) + + def read1(self, n): + """Read up to n bytes with at most one read() system call.""" + + # Simplify algorithm (branching) by transforming negative n to large n. + if n < 0 or n is None: + n = self.MAX_N + + # Bytes available in read buffer. + len_readbuffer = len(self._readbuffer) - self._offset + + # Read from file. + if self._compress_left > 0 and n > len_readbuffer + len(self._unconsumed): + nbytes = n - len_readbuffer - len(self._unconsumed) + nbytes = max(nbytes, self.MIN_READ_SIZE) + nbytes = min(nbytes, self._compress_left) + + data = self._fileobj.read(nbytes) + self._compress_left -= len(data) + + if data and self._decrypter is not None: + data = ''.join(map(self._decrypter, data)) + + if self._compress_type == ZIP_STORED: + self._update_crc(data, eof=(self._compress_left==0)) + self._readbuffer = self._readbuffer[self._offset:] + data + self._offset = 0 + else: + # Prepare deflated bytes for decompression. + self._unconsumed += data + + # Handle unconsumed data. + if (len(self._unconsumed) > 0 and n > len_readbuffer and + self._compress_type == ZIP_DEFLATED): + data = self._decompressor.decompress( + self._unconsumed, + max(n - len_readbuffer, self.MIN_READ_SIZE) + ) + + self._unconsumed = self._decompressor.unconsumed_tail + eof = len(self._unconsumed) == 0 and self._compress_left == 0 + if eof: + data += self._decompressor.flush() + + self._update_crc(data, eof=eof) + self._readbuffer = self._readbuffer[self._offset:] + data + self._offset = 0 + + # Read from buffer. + data = self._readbuffer[self._offset: self._offset + n] + self._offset += len(data) + return data + + def close(self): + try : + if self._close_fileobj: + self._fileobj.close() + finally: + super(ZipExtFile, self).close() + + +class ZipFile(object): + """ Class with methods to open, read, write, close, list zip files. + + z = ZipFile(file, mode="r", compression=ZIP_STORED, allowZip64=False) + + file: Either the path to the file, or a file-like object. + If it is a path, the file will be opened and closed by ZipFile. + mode: The mode can be either read "r", write "w" or append "a". + compression: ZIP_STORED (no compression) or ZIP_DEFLATED (requires zlib). + allowZip64: if True ZipFile will create files with ZIP64 extensions when + needed, otherwise it will raise an exception when this would + be necessary. + + """ + + 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".""" + if mode not in ("r", "w", "a"): + raise RuntimeError('ZipFile() requires mode "r", "w", or "a"') + + if compression == ZIP_STORED: + pass + elif compression == ZIP_DEFLATED: + if not zlib: + raise RuntimeError,\ + "Compression requires the (missing) zlib module" + else: + raise RuntimeError, "That compression method is not supported" + + 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.compression = compression # Method of compression + self.mode = key = mode.replace('b', '')[0] + self.pwd = None + self._comment = '' + + # Check if we were passed a file-like object + if isinstance(file, basestring): + self._filePassed = 0 + self.filename = file + modeDict = {'r' : 'rb', 'w': 'wb', 'a' : 'r+b'} + try: + self.fp = open(file, modeDict[mode]) + except IOError: + if mode == 'a': + mode = key = 'w' + self.fp = open(file, modeDict[mode]) + else: + raise + else: + self._filePassed = 1 + self.fp = file + self.filename = getattr(file, 'name', None) + + try: + if key == 'r': + self._RealGetContents() + elif key == 'w': + # set the modified flag so central directory gets written + # even if no files are added to the archive + self._didModify = True + self._start_disk = self.fp.tell() + elif key == 'a': + try: + # See if file is a zip file + self._RealGetContents() + # seek to start of directory and overwrite + self.fp.seek(self.start_dir, 0) + except BadZipfile: + # file is not a zip file, just append + self.fp.seek(0, 2) + + # set the modified flag so central directory gets written + # even if no files are added to the archive + self._didModify = True + self._start_disk = self.fp.tell() + else: + raise RuntimeError('Mode must be "r", "w" or "a"') + except: + fp = self.fp + self.fp = None + if not self._filePassed: + fp.close() + raise + + def __enter__(self): + return self + + def __exit__(self, type, value, traceback): + self.close() + + def _RealGetContents(self): + """Read in the table of contents for the ZIP file.""" + fp = self.fp + try: + endrec = _EndRecData(fp) + except IOError: + raise BadZipfile("File is not a zip file") + if not endrec: + 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 + + # self._start_disk: Position of the start of ZIP archive + # It is zero, unless ZIP was concatenated to another file + self._start_disk = endrec[_ECD_LOCATION] - size_cd - offset_cd + if endrec[_ECD_SIGNATURE] == stringEndArchive64: + # If Zip64 extension structures are present, account for them + self._start_disk -= (sizeEndCentDir64 + sizeEndCentDir64Locator) + + if self.debug > 2: + inferred = self._start_disk + offset_cd + print "given, inferred, offset", offset_cd, inferred, self._start_disk + # self.start_dir: Position of start of central directory + self.start_dir = offset_cd + self._start_disk + fp.seek(self.start_dir, 0) + data = fp.read(size_cd) + fp = cStringIO.StringIO(data) + total = 0 + while total < size_cd: + centdir = fp.read(sizeCentralDir) + if len(centdir) != sizeCentralDir: + raise BadZipfile("Truncated central directory") + centdir = struct.unpack(structCentralDir, centdir) + if centdir[_CD_SIGNATURE] != stringCentralDir: + raise BadZipfile("Bad magic number for central directory") + if self.debug > 2: + print centdir + filename = fp.read(centdir[_CD_FILENAME_LENGTH]) + # Create ZipInfo instance to store file information + x = ZipInfo(filename) + x.extra = fp.read(centdir[_CD_EXTRA_FIELD_LENGTH]) + 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.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._decodeExtra() + x.header_offset = x.header_offset + self._start_disk + x.filename = x._decodeFilename() + self.filelist.append(x) + self.NameToInfo[x.filename] = x + + # update total bytes read from central directory + total = (total + sizeCentralDir + centdir[_CD_FILENAME_LENGTH] + + centdir[_CD_EXTRA_FIELD_LENGTH] + + centdir[_CD_COMMENT_LENGTH]) + + if self.debug > 2: + print "total", total + + + def namelist(self): + """Return a list of file names in the archive.""" + l = [] + for data in self.filelist: + l.append(data.filename) + return l + + def infolist(self): + """Return a list of class ZipInfo instances for files in the + archive.""" + return self.filelist + + def printdir(self): + """Print a table of contents for the zip file.""" + print "%-46s %19s %12s" % ("File Name", "Modified ", "Size") + for zinfo in self.filelist: + date = "%d-%02d-%02d %02d:%02d:%02d" % zinfo.date_time[:6] + print "%-46s %s %12d" % (zinfo.filename, date, zinfo.file_size) + + def testzip(self): + """Read all the files and check the CRC.""" + chunk_size = 2 ** 20 + for zinfo in self.filelist: + try: + # Read by chunks, to avoid an OverflowError or a + # MemoryError with very large embedded files. + with self.open(zinfo.filename, "r") as f: + while f.read(chunk_size): # Check CRC-32 + pass + except BadZipfile: + return zinfo.filename + + def getinfo(self, name): + """Return the instance of ZipInfo given 'name'.""" + info = self.NameToInfo.get(name) + if info is None: + raise KeyError( + 'There is no item named %r in the archive' % name) + + return info + + def setpassword(self, pwd): + """Set default password for encrypted files.""" + self.pwd = pwd + + @property + def comment(self): + """The comment text associated with the ZIP file.""" + return self._comment + + @comment.setter + def comment(self, comment): + # check for valid comment length + if len(comment) > ZIP_MAX_COMMENT: + import warnings + warnings.warn('Archive comment is too long; truncating to %d bytes' + % ZIP_MAX_COMMENT, stacklevel=2) + comment = comment[:ZIP_MAX_COMMENT] + self._comment = comment + self._didModify = True + + def read(self, name, pwd=None): + """Return file bytes (as a string) for name.""" + return self.open(name, "r", pwd).read() + + def open(self, name, mode="r", pwd=None): + """Return file-like object for 'name'.""" + if mode not in ("r", "U", "rU"): + raise RuntimeError, 'open() requires mode "r", "U", or "rU"' + if not self.fp: + raise RuntimeError, \ + "Attempt to read ZIP archive that was already closed" + + # Only open a new file for instances where we were not + # given a file object in the constructor + if self._filePassed: + zef_file = self.fp + should_close = False + else: + zef_file = open(self.filename, 'rb') + should_close = True + + try: + # Make sure we have an info object + if isinstance(name, ZipInfo): + # 'name' is already an info object + zinfo = name + else: + # Get info object for name + zinfo = self.getinfo(name) + + zef_file.seek(zinfo.header_offset, 0) + + # Skip the file header: + fheader = zef_file.read(sizeFileHeader) + if len(fheader) != sizeFileHeader: + raise BadZipfile("Truncated file header") + fheader = struct.unpack(structFileHeader, fheader) + if fheader[_FH_SIGNATURE] != stringFileHeader: + raise BadZipfile("Bad magic number for file header") + + fname = zef_file.read(fheader[_FH_FILENAME_LENGTH]) + if fheader[_FH_EXTRA_FIELD_LENGTH]: + zef_file.read(fheader[_FH_EXTRA_FIELD_LENGTH]) + + if fname != zinfo.orig_filename: + raise BadZipfile, \ + 'File name in directory "%s" and header "%s" differ.' % ( + zinfo.orig_filename, fname) + + # check for encrypted flag & handle password + is_encrypted = zinfo.flag_bits & 0x1 + zd = None + if is_encrypted: + if not pwd: + pwd = self.pwd + if not pwd: + raise RuntimeError, "File %s is encrypted, " \ + "password required for extraction" % name + + zd = _ZipDecrypter(pwd) + # The first 12 bytes in the cypher stream is an encryption header + # used to strengthen the algorithm. The first 11 bytes are + # completely random, while the 12th contains the MSB of the CRC, + # or the MSB of the file time depending on the header type + # and is used to check the correctness of the password. + bytes = zef_file.read(12) + h = map(zd, bytes[0:12]) + if zinfo.flag_bits & 0x8: + # compare against the file type from extended local headers + check_byte = (zinfo._raw_time >> 8) & 0xff + else: + # compare against the CRC otherwise + check_byte = (zinfo.CRC >> 24) & 0xff + if ord(h[11]) != check_byte: + raise RuntimeError("Bad password for file", name) + + return ZipExtFile(zef_file, mode, zinfo, zd, + close_fileobj=should_close) + except: + if should_close: + zef_file.close() + raise + + def extract(self, member, path=None, pwd=None): + """Extract a member from the archive to the current working directory, + using its full name. Its file information is extracted as accurately + as possible. `member' may be a filename or a ZipInfo object. You can + specify a different directory using `path'. + """ + if not isinstance(member, ZipInfo): + member = self.getinfo(member) + + if path is None: + path = os.getcwd() + + return self._extract_member(member, path, pwd) + + def extractall(self, path=None, members=None, pwd=None): + """Extract all members from the archive to the current working + directory. `path' specifies a different directory to extract to. + `members' is optional and must be a subset of the list returned + by namelist(). + """ + if members is None: + members = self.namelist() + + for zipinfo in members: + self.extract(zipinfo, path, pwd) + + def _extract_member(self, member, targetpath, pwd): + """Extract the ZipInfo object 'member' to a physical + file on the path targetpath. + """ + # build the destination pathname, replacing + # forward slashes to platform specific separators. + arcname = member.filename.replace('/', os.path.sep) + + if os.path.altsep: + arcname = arcname.replace(os.path.altsep, os.path.sep) + # interpret absolute pathname as relative, remove drive letter or + # UNC path, redundant separators, "." and ".." components. + arcname = os.path.splitdrive(arcname)[1] + arcname = os.path.sep.join(x for x in arcname.split(os.path.sep) + if x not in ('', os.path.curdir, os.path.pardir)) + if os.path.sep == '\\': + # filter illegal characters on Windows + illegal = ':<>|"?*' + if isinstance(arcname, unicode): + table = {ord(c): ord('_') for c in illegal} + else: + table = string.maketrans(illegal, '_' * len(illegal)) + arcname = arcname.translate(table) + # remove trailing dots + arcname = (x.rstrip('.') for x in arcname.split(os.path.sep)) + arcname = os.path.sep.join(x for x in arcname if x) + + targetpath = os.path.join(targetpath, arcname) + targetpath = os.path.normpath(targetpath) + + # Create all upper directories if necessary. + upperdirs = os.path.dirname(targetpath) + if upperdirs and not os.path.exists(upperdirs): + os.makedirs(upperdirs) + + if member.filename[-1] == '/': + if not os.path.isdir(targetpath): + os.mkdir(targetpath) + return targetpath + + with self.open(member, pwd=pwd) as source, \ + file(targetpath, "wb") as target: + shutil.copyfileobj(source, target) + + return targetpath + + def _writecheck(self, zinfo): + """Check for errors before writing a file to the archive.""" + if zinfo.filename in self.NameToInfo: + import warnings + warnings.warn('Duplicate name: %r' % zinfo.filename, stacklevel=3) + if self.mode not in ("w", "a"): + raise RuntimeError, 'write() requires mode "w" or "a"' + if not self.fp: + raise RuntimeError, \ + "Attempt to write ZIP archive that was already closed" + if zinfo.compress_type == ZIP_DEFLATED and not zlib: + raise RuntimeError, \ + "Compression requires the (missing) zlib module" + if zinfo.compress_type not in (ZIP_STORED, ZIP_DEFLATED): + raise RuntimeError, \ + "That compression method is not supported" + if not self._allowZip64: + requires_zip64 = None + if len(self.filelist) >= ZIP_FILECOUNT_LIMIT: + requires_zip64 = "Files count" + elif zinfo.file_size > ZIP64_LIMIT: + requires_zip64 = "Filesize" + elif zinfo.header_offset > ZIP64_LIMIT: + requires_zip64 = "Zipfile size" + if requires_zip64: + raise LargeZipFile(requires_zip64 + + " would require ZIP64 extensions") + + def write(self, filename, arcname=None, compress_type=None): + """Put the bytes from filename into the archive under the name + arcname.""" + if not self.fp: + raise RuntimeError( + "Attempt to write to ZIP archive that was already closed") + + st = os.stat(filename) + isdir = stat.S_ISDIR(st.st_mode) + mtime = time.localtime(st.st_mtime) + date_time = mtime[0:6] + # Create ZipInfo instance to store file information + if arcname is None: + arcname = filename + arcname = os.path.normpath(os.path.splitdrive(arcname)[1]) + while arcname[0] in (os.sep, os.altsep): + arcname = arcname[1:] + if isdir: + arcname += '/' + zinfo = ZipInfo(arcname, date_time) + zinfo.external_attr = (st[0] & 0xFFFF) << 16L # Unix attributes + if isdir: + zinfo.compress_type = ZIP_STORED + elif compress_type is None: + zinfo.compress_type = self.compression + else: + zinfo.compress_type = compress_type + + zinfo.file_size = st.st_size + zinfo.flag_bits = 0x00 + zinfo.header_offset = self.fp.tell() # Start of header bytes + + self._writecheck(zinfo) + self._didModify = True + + if isdir: + zinfo.file_size = 0 + zinfo.compress_size = 0 + zinfo.CRC = 0 + zinfo.external_attr |= 0x10 # MS-DOS directory flag + self.filelist.append(zinfo) + self.NameToInfo[zinfo.filename] = zinfo + self.fp.write(zinfo.FileHeader(False)) + return + + with open(filename, "rb") as fp: + # Must overwrite CRC and sizes with correct data later + zinfo.CRC = CRC = 0 + zinfo.compress_size = compress_size = 0 + # Compressed size can be larger than uncompressed size + zip64 = self._allowZip64 and \ + zinfo.file_size * 1.05 > ZIP64_LIMIT + self.fp.write(zinfo.FileHeader(zip64)) + if zinfo.compress_type == ZIP_DEFLATED: + cmpr = zlib.compressobj(zlib.Z_DEFAULT_COMPRESSION, + zlib.DEFLATED, -15) + else: + cmpr = None + file_size = 0 + while 1: + buf = fp.read(1024 * 8) + if not buf: + break + file_size = file_size + len(buf) + CRC = crc32(buf, CRC) & 0xffffffff + if cmpr: + buf = cmpr.compress(buf) + compress_size = compress_size + len(buf) + self.fp.write(buf) + if cmpr: + buf = cmpr.flush() + compress_size = compress_size + len(buf) + self.fp.write(buf) + zinfo.compress_size = compress_size + else: + zinfo.compress_size = file_size + zinfo.CRC = CRC + zinfo.file_size = file_size + if not zip64 and self._allowZip64: + if file_size > ZIP64_LIMIT: + raise RuntimeError('File size has increased during compressing') + if compress_size > ZIP64_LIMIT: + raise RuntimeError('Compressed size larger than uncompressed size') + # Seek backwards and write file header (which will now include + # correct CRC and file sizes) + position = self.fp.tell() # Preserve current position in file + self.fp.seek(zinfo.header_offset, 0) + self.fp.write(zinfo.FileHeader(zip64)) + self.fp.seek(position, 0) + self.filelist.append(zinfo) + self.NameToInfo[zinfo.filename] = zinfo + + def writestr(self, zinfo_or_arcname, bytes, compress_type=None): + """Write a file into the archive. The contents is the string + 'bytes'. 'zinfo_or_arcname' is either a ZipInfo instance or + the name of the file in the archive.""" + if not isinstance(zinfo_or_arcname, ZipInfo): + zinfo = ZipInfo(filename=zinfo_or_arcname, + date_time=time.localtime(time.time())[:6]) + + zinfo.compress_type = self.compression + if zinfo.filename[-1] == '/': + zinfo.external_attr = 0o40775 << 16 # drwxrwxr-x + zinfo.external_attr |= 0x10 # MS-DOS directory flag + else: + zinfo.external_attr = 0o600 << 16 # ?rw------- + else: + zinfo = zinfo_or_arcname + + if not self.fp: + raise RuntimeError( + "Attempt to write to ZIP archive that was already closed") + + if compress_type is not None: + zinfo.compress_type = compress_type + + zinfo.file_size = len(bytes) # Uncompressed size + zinfo.header_offset = self.fp.tell() # Start of header bytes + self._writecheck(zinfo) + self._didModify = True + zinfo.CRC = crc32(bytes) & 0xffffffff # CRC-32 checksum + if zinfo.compress_type == ZIP_DEFLATED: + co = zlib.compressobj(zlib.Z_DEFAULT_COMPRESSION, + zlib.DEFLATED, -15) + bytes = co.compress(bytes) + co.flush() + zinfo.compress_size = len(bytes) # Compressed size + else: + zinfo.compress_size = zinfo.file_size + zip64 = zinfo.file_size > ZIP64_LIMIT or \ + zinfo.compress_size > ZIP64_LIMIT + if zip64 and not self._allowZip64: + raise LargeZipFile("Filesize would require ZIP64 extensions") + self.fp.write(zinfo.FileHeader(zip64)) + self.fp.write(bytes) + if zinfo.flag_bits & 0x08: + # Write CRC and file sizes after the file data + fmt = ' ZIP64_LIMIT \ + or zinfo.compress_size > ZIP64_LIMIT: + extra.append(zinfo.file_size) + extra.append(zinfo.compress_size) + file_size = 0xffffffff + compress_size = 0xffffffff + else: + file_size = zinfo.file_size + compress_size = zinfo.compress_size + + header_offset = zinfo.header_offset - self._start_disk + if header_offset > ZIP64_LIMIT: + extra.append(header_offset) + header_offset = 0xffffffffL + + extra_data = zinfo.extra + if extra: + # Append a ZIP64 field to the extra's + extra_data = struct.pack( + '>sys.stderr, (structCentralDir, + stringCentralDir, create_version, + zinfo.create_system, extract_version, zinfo.reserved, + zinfo.flag_bits, zinfo.compress_type, dostime, dosdate, + zinfo.CRC, compress_size, file_size, + len(zinfo.filename), len(extra_data), len(zinfo.comment), + 0, zinfo.internal_attr, zinfo.external_attr, + header_offset) + raise + self.fp.write(centdir) + self.fp.write(filename) + self.fp.write(extra_data) + self.fp.write(zinfo.comment) + + pos2 = self.fp.tell() + # Write end-of-zip-archive record + centDirCount = len(self.filelist) + centDirSize = pos2 - pos1 + centDirOffset = pos1 - self._start_disk + requires_zip64 = None + if centDirCount > ZIP_FILECOUNT_LIMIT: + requires_zip64 = "Files count" + elif centDirOffset > ZIP64_LIMIT: + requires_zip64 = "Central directory offset" + elif centDirSize > ZIP64_LIMIT: + requires_zip64 = "Central directory size" + if requires_zip64: + # Need to write the ZIP64 end-of-archive records + if not self._allowZip64: + raise LargeZipFile(requires_zip64 + + " would require ZIP64 extensions") + zip64endrec = struct.pack( + structEndArchive64, stringEndArchive64, + 44, 45, 45, 0, 0, centDirCount, centDirCount, + centDirSize, centDirOffset) + self.fp.write(zip64endrec) + + zip64locrec = struct.pack( + structEndArchive64Locator, + stringEndArchive64Locator, 0, pos2, 1) + self.fp.write(zip64locrec) + centDirCount = min(centDirCount, 0xFFFF) + centDirSize = min(centDirSize, 0xFFFFFFFF) + centDirOffset = min(centDirOffset, 0xFFFFFFFF) + + endrec = struct.pack(structEndArchive, stringEndArchive, + 0, 0, centDirCount, centDirCount, + centDirSize, centDirOffset, len(self._comment)) + self.fp.write(endrec) + self.fp.write(self._comment) + self.fp.flush() + finally: + fp = self.fp + self.fp = None + if not self._filePassed: + fp.close() + + +class PyZipFile(ZipFile): + """Class to create ZIP archives with Python library files and packages.""" + + def writepy(self, pathname, basename = ""): + """Add all files from "pathname" to the ZIP archive. + + If pathname is a package directory, search the directory and + all package subdirectories recursively for all *.py and enter + the modules into the archive. If pathname is a plain + directory, listdir *.py and enter all modules. Else, pathname + must be a Python *.py file and the module will be put into the + archive. Added modules are always module.pyo or module.pyc. + This method will compile the module.py into module.pyc if + necessary. + """ + dir, name = os.path.split(pathname) + if os.path.isdir(pathname): + initname = os.path.join(pathname, "__init__.py") + if os.path.isfile(initname): + # This is a package directory, add it + if basename: + basename = "%s/%s" % (basename, name) + else: + basename = name + if self.debug: + print "Adding package in", pathname, "as", basename + fname, arcname = self._get_codename(initname[0:-3], basename) + if self.debug: + print "Adding", arcname + self.write(fname, arcname) + dirlist = os.listdir(pathname) + dirlist.remove("__init__.py") + # Add all *.py files and package subdirectories + for filename in dirlist: + path = os.path.join(pathname, filename) + root, ext = os.path.splitext(filename) + if os.path.isdir(path): + if os.path.isfile(os.path.join(path, "__init__.py")): + # This is a package directory, add it + self.writepy(path, basename) # Recursive call + elif ext == ".py": + fname, arcname = self._get_codename(path[0:-3], + basename) + if self.debug: + print "Adding", arcname + self.write(fname, arcname) + else: + # This is NOT a package directory, add its files at top level + if self.debug: + print "Adding files from directory", pathname + for filename in os.listdir(pathname): + path = os.path.join(pathname, filename) + root, ext = os.path.splitext(filename) + if ext == ".py": + fname, arcname = self._get_codename(path[0:-3], + basename) + if self.debug: + print "Adding", arcname + self.write(fname, arcname) + else: + if pathname[-3:] != ".py": + raise RuntimeError, \ + 'Files added with writepy() must end with ".py"' + fname, arcname = self._get_codename(pathname[0:-3], basename) + if self.debug: + print "Adding file", arcname + self.write(fname, arcname) + + def _get_codename(self, pathname, basename): + """Return (filename, archivename) for the path. + + Given a module name path, return the correct file path and + archive name, compiling if necessary. For example, given + /python/lib/string, return (/python/lib/string.pyc, string). + """ + 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 + elif not os.path.isfile(file_pyc) or \ + os.stat(file_pyc).st_mtime < os.stat(file_py).st_mtime: + import py_compile + if self.debug: + print "Compiling", file_py + try: + py_compile.compile(file_py, file_pyc, None, True) + except py_compile.PyCompileError,err: + print err.msg + fname = file_pyc + else: + fname = file_pyc + archivename = os.path.split(fname)[1] + if basename: + archivename = "%s/%s" % (basename, archivename) + return (fname, archivename) + + +def main(args = None): + import textwrap + 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 + zipfile.py -e zipfile.zip target # Extract zipfile into target dir + zipfile.py -c zipfile.zip src ... # Create zipfile from sources + """) + if args is None: + args = sys.argv[1:] + + if not args or args[0] not in ('-l', '-c', '-e', '-t'): + print USAGE + sys.exit(1) + + if args[0] == '-l': + if len(args) != 2: + print USAGE + sys.exit(1) + with ZipFile(args[1], 'r') as zf: + zf.printdir() + + elif args[0] == '-t': + if len(args) != 2: + print USAGE + sys.exit(1) + with ZipFile(args[1], 'r') as zf: + badfile = zf.testzip() + if badfile: + print("The following enclosed file is corrupted: {!r}".format(badfile)) + print "Done testing" + + elif args[0] == '-e': + if len(args) != 3: + print USAGE + sys.exit(1) + + with ZipFile(args[1], 'r') as zf: + zf.extractall(args[2]) + + elif args[0] == '-c': + if len(args) < 3: + print USAGE + sys.exit(1) + + def addToZip(zf, path, zippath): + if os.path.isfile(path): + zf.write(path, zippath, ZIP_DEFLATED) + elif os.path.isdir(path): + if zippath: + zf.write(path, zippath) + for nm in os.listdir(path): + addToZip(zf, + os.path.join(path, nm), os.path.join(zippath, nm)) + # else: ignore + + with ZipFile(args[1], 'w', allowZip64=True) as zf: + for path in args[2:]: + zippath = os.path.basename(path) + if not zippath: + zippath = os.path.basename(os.path.dirname(path)) + if zippath in ('', os.curdir, os.pardir): + zippath = '' + addToZip(zf, path, zippath) + +if __name__ == "__main__": + main() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/tracing/tracing/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/tracing/tracing/__init__.py new file mode 100644 index 0000000..76063aa --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/tracing/tracing/__init__.py @@ -0,0 +1,6 @@ +# Copyright (c) 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import tracing_project +tracing_project.UpdateSysPathIfNeeded() diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/tracing/tracing/trace_data/__init__.py b/love2dToAPK/tools/tools/adb/systrace/catapult/tracing/tracing/trace_data/__init__.py new file mode 100644 index 0000000..bdb1f26 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/tracing/tracing/trace_data/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2017 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/tracing/tracing/trace_data/trace_data.py b/love2dToAPK/tools/tools/adb/systrace/catapult/tracing/tracing/trace_data/trace_data.py new file mode 100644 index 0000000..e6a62ff --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/tracing/tracing/trace_data/trace_data.py @@ -0,0 +1,339 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import copy +import json +import logging +import os +import shutil +import subprocess +import tempfile + + +_TRACING_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), + os.path.pardir, os.path.pardir) +_TRACE2HTML_PATH = os.path.join(_TRACING_DIR, 'bin', 'trace2html') + + +class NonSerializableTraceData(Exception): + """Raised when raw trace data cannot be serialized to TraceData.""" + pass + + +class TraceDataPart(object): + """TraceData can have a variety of events. + + These are called "parts" and are accessed by the following fixed field names. + """ + def __init__(self, raw_field_name): + self._raw_field_name = raw_field_name + + def __repr__(self): + return 'TraceDataPart("%s")' % self._raw_field_name + + @property + def raw_field_name(self): + return self._raw_field_name + + def __eq__(self, other): + return self.raw_field_name == other.raw_field_name + + def __hash__(self): + return hash(self.raw_field_name) + + +ANDROID_PROCESS_DATA_PART = TraceDataPart('androidProcessDump') +ATRACE_PART = TraceDataPart('systemTraceEvents') +BATTOR_TRACE_PART = TraceDataPart('powerTraceAsString') +CHROME_TRACE_PART = TraceDataPart('traceEvents') +CPU_TRACE_DATA = TraceDataPart('cpuSnapshots') +INSPECTOR_TRACE_PART = TraceDataPart('inspectorTimelineEvents') +SURFACE_FLINGER_PART = TraceDataPart('surfaceFlinger') +TAB_ID_PART = TraceDataPart('tabIds') +TELEMETRY_PART = TraceDataPart('telemetry') +WALT_TRACE_PART = TraceDataPart('waltTraceEvents') + +ALL_TRACE_PARTS = {ANDROID_PROCESS_DATA_PART, + ATRACE_PART, + BATTOR_TRACE_PART, + CHROME_TRACE_PART, + CPU_TRACE_DATA, + INSPECTOR_TRACE_PART, + SURFACE_FLINGER_PART, + TAB_ID_PART, + TELEMETRY_PART} + +ALL_TRACE_PARTS_RAW_NAMES = set(k.raw_field_name for k in ALL_TRACE_PARTS) + +def _HasTraceFor(part, raw): + assert isinstance(part, TraceDataPart) + if part.raw_field_name not in raw: + return False + return len(raw[part.raw_field_name]) > 0 + + +def _GetFilePathForTrace(trace, dir_path): + """ Return path to a file that contains |trace|. + + Note: if |trace| is an instance of TraceFileHandle, this reuses the trace path + that the trace file handle holds. Otherwise, it creates a new trace file + in |dir_path| directory. + """ + if isinstance(trace, TraceFileHandle): + return trace.file_path + with tempfile.NamedTemporaryFile(mode='w', dir=dir_path, delete=False) as fp: + if isinstance(trace, basestring): + fp.write(trace) + elif isinstance(trace, dict) or isinstance(trace, list): + json.dump(trace, fp) + else: + raise TypeError('Trace is of unknown type.') + return fp.name + + +class TraceData(object): + """ TraceData holds a collection of traces from multiple sources. + + A TraceData can have multiple active parts. Each part represents traces + collected from a different trace agent. + """ + def __init__(self): + """Creates TraceData from the given data.""" + self._raw_data = {} + self._events_are_safely_mutable = False + + def _SetFromBuilder(self, d): + self._raw_data = d + self._events_are_safely_mutable = True + + @property + def events_are_safely_mutable(self): + """Returns true if the events in this value are completely sealed. + + Some importers want to take complex fields out of the TraceData and add + them to the model, changing them subtly as they do so. If the TraceData + was constructed with data that is shared with something outside the trace + data, for instance a test harness, then this mutation is unexpected. But, + if the values are sealed, then mutating the events is a lot faster. + + We know if events are sealed if the value came from a string, or if the + value came from a TraceDataBuilder. + """ + return self._events_are_safely_mutable + + @property + def active_parts(self): + return {p for p in ALL_TRACE_PARTS if p.raw_field_name in self._raw_data} + + def HasTracesFor(self, part): + return _HasTraceFor(part, self._raw_data) + + def GetTracesFor(self, part): + """ Return the list of traces for |part| in string or dictionary forms. + + Note: since this API return the traces that can be directly accessed in + memory, it may require lots of memory usage as some of the trace can be + very big. + For references, we have cases where Telemetry is OOM'ed because the memory + required for processing the trace in Python is too big (crbug.com/672097). + """ + assert isinstance(part, TraceDataPart) + if not self.HasTracesFor(part): + return [] + traces_list = self._raw_data[part.raw_field_name] + # Since this API return the traces in memory form, and since the memory + # bottleneck of Telemetry is for keeping trace in memory, there is no uses + # in keeping the on-disk form of tracing beyond this point. Hence we convert + # all traces for part of form TraceFileHandle to the JSON form. + for i, data in enumerate(traces_list): + if isinstance(data, TraceFileHandle): + traces_list[i] = data.AsTraceData() + return traces_list + + def GetTraceFor(self, part): + assert isinstance(part, TraceDataPart) + traces = self.GetTracesFor(part) + assert len(traces) == 1 + return traces[0] + + def CleanUpAllTraces(self): + """ Remove all the traces that this has handles to. + + Those include traces stored in memory & on disk. After invoking this, + one can no longer uses this object for collecting the traces. + """ + for traces_list in self._raw_data.itervalues(): + for trace in traces_list: + if isinstance(trace, TraceFileHandle): + trace.Clean() + self._raw_data = {} + + def Serialize(self, file_path, trace_title=''): + """Serializes the trace result to |file_path|. + + """ + if not self._raw_data: + logging.warning('No traces to convert to html.') + return + temp_dir = tempfile.mkdtemp() + trace_files = [] + try: + trace_size_data = {} + for part, traces_list in self._raw_data.iteritems(): + for trace in traces_list: + path = _GetFilePathForTrace(trace, temp_dir) + trace_size_data.setdefault(part, 0) + trace_size_data[part] += os.path.getsize(path) + trace_files.append(path) + logging.info('Trace sizes in bytes: %s', trace_size_data) + + cmd = (['python', _TRACE2HTML_PATH] + trace_files + + ['--output', file_path] + ['--title', trace_title]) + subprocess.check_output(cmd) + finally: + shutil.rmtree(temp_dir) + + +class TraceFileHandle(object): + """A trace file handle object allows storing trace data on disk. + + TraceFileHandle API allows one to collect traces from Chrome into disk instead + of keeping them in memory. This is important for keeping memory usage of + Telemetry low to avoid OOM (see: + https://github.com/catapult-project/catapult/issues/3119). + + The fact that this uses a file underneath to store tracing data means the + callsite is repsonsible for discarding the file when they no longer need the + tracing data. Call TraceFileHandle.Clean when you done using this object. + """ + def __init__(self): + self._backing_file = None + self._file_path = None + self._trace_data = None + + def Open(self): + assert not self._backing_file and not self._file_path + self._backing_file = tempfile.NamedTemporaryFile(delete=False, mode='a') + + def AppendTraceData(self, partial_trace_data): + assert isinstance(partial_trace_data, basestring) + self._backing_file.write(partial_trace_data) + + @property + def file_path(self): + assert self._file_path, ( + 'Either the handle need to be closed first or this handle is cleaned') + return self._file_path + + def Close(self): + assert self._backing_file + self._backing_file.close() + self._file_path = self._backing_file.name + self._backing_file = None + + def AsTraceData(self): + """Get the object form of trace data that this handle manages. + + *Warning: this can have large memory footprint if the trace data is big. + + Since this requires the in-memory form of the trace, it is no longer useful + to still keep the backing file underneath, invoking this will also discard + the file to avoid the risk of leaking the backing trace file. + """ + if self._trace_data: + return self._trace_data + assert self._file_path + with open(self._file_path) as f: + self._trace_data = json.load(f) + self.Clean() + return self._trace_data + + def Clean(self): + """Remove the backing file used for storing trace on disk. + + This should be called when and only when you no longer need to use + TraceFileHandle. + """ + assert self._file_path + os.remove(self._file_path) + self._file_path = None + + +class TraceDataBuilder(object): + """TraceDataBuilder helps build up a trace from multiple trace agents. + + TraceData is supposed to be immutable, but it is useful during recording to + have a mutable version. That is TraceDataBuilder. + """ + def __init__(self): + self._raw_data = {} + + def AsData(self): + if self._raw_data == None: + raise Exception('Can only AsData once') + data = TraceData() + data._SetFromBuilder(self._raw_data) + self._raw_data = None + return data + + def AddTraceFor(self, part, trace): + assert isinstance(part, TraceDataPart), part + if part == CHROME_TRACE_PART: + assert (isinstance(trace, dict) or + isinstance(trace, list) or + isinstance(trace, TraceFileHandle)) + else: + assert (isinstance(trace, basestring) or + isinstance(trace, dict) or + isinstance(trace, list)) + + if self._raw_data == None: + raise Exception('Already called AsData() on this builder.') + + self._raw_data.setdefault(part.raw_field_name, []) + self._raw_data[part.raw_field_name].append(trace) + + def HasTracesFor(self, part): + return _HasTraceFor(part, self._raw_data) + + +def CreateTraceDataFromRawData(raw_data): + """Convenient method for creating a TraceData object from |raw_data|. + This is mostly used for testing. + + Args: + raw_data can be: + + A dictionary that repsents multiple trace parts. Keys of the + dictionary must always contain 'traceEvents', as chrome trace + must always present. + + A list that represents Chrome trace events. + + JSON string of either above. + + """ + raw_data = copy.deepcopy(raw_data) + if isinstance(raw_data, basestring): + json_data = json.loads(raw_data) + else: + json_data = raw_data + + b = TraceDataBuilder() + if not json_data: + return b.AsData() + if isinstance(json_data, dict): + assert 'traceEvents' in json_data, 'Only raw chrome trace is supported' + trace_parts_keys = [] + for k in json_data: + if k != 'traceEvents' and k in ALL_TRACE_PARTS_RAW_NAMES: + trace_parts_keys.append(k) + b.AddTraceFor(TraceDataPart(k), json_data[k]) + # Delete the data for extra keys to form trace data for Chrome part only. + for k in trace_parts_keys: + del json_data[k] + b.AddTraceFor(CHROME_TRACE_PART, json_data) + elif isinstance(json_data, list): + b.AddTraceFor(CHROME_TRACE_PART, {'traceEvents': json_data}) + else: + raise NonSerializableTraceData('Unrecognized data format.') + return b.AsData() + diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/tracing/tracing/trace_data/trace_data_unittest.py b/love2dToAPK/tools/tools/adb/systrace/catapult/tracing/tracing/trace_data/trace_data_unittest.py new file mode 100644 index 0000000..b065b4f --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/tracing/tracing/trace_data/trace_data_unittest.py @@ -0,0 +1,103 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import datetime +import exceptions +import os +import shutil +import tempfile +import unittest + +from tracing.trace_data import trace_data +from tracing_build import html2trace + + +class TraceDataTest(unittest.TestCase): + def testSerialize(self): + test_dir = tempfile.mkdtemp() + trace_path = os.path.join(test_dir, 'test_trace.json') + try: + ri = trace_data.CreateTraceDataFromRawData({'traceEvents': [1, 2, 3]}) + ri.Serialize(trace_path) + with open(trace_path) as f: + json_traces = html2trace.ReadTracesFromHTMLFilePath(f) + self.assertEqual(json_traces, [{'traceEvents': [1, 2, 3]}]) + finally: + shutil.rmtree(test_dir) + + def testEmptyArrayValue(self): + # We can import empty lists and empty string. + d = trace_data.CreateTraceDataFromRawData([]) + self.assertFalse(d.HasTracesFor(trace_data.CHROME_TRACE_PART)) + + def testInvalidTrace(self): + with self.assertRaises(AssertionError): + trace_data.CreateTraceDataFromRawData({'hello': 1}) + + def testListForm(self): + d = trace_data.CreateTraceDataFromRawData([{'ph': 'B'}]) + self.assertTrue(d.HasTracesFor(trace_data.CHROME_TRACE_PART)) + events = d.GetTracesFor(trace_data.CHROME_TRACE_PART)[0].get( + 'traceEvents', []) + self.assertEquals(1, len(events)) + + def testStringForm(self): + d = trace_data.CreateTraceDataFromRawData('[{"ph": "B"}]') + self.assertTrue(d.HasTracesFor(trace_data.CHROME_TRACE_PART)) + events = d.GetTracesFor(trace_data.CHROME_TRACE_PART)[0].get( + 'traceEvents', []) + self.assertEquals(1, len(events)) + + +class TraceDataBuilderTest(unittest.TestCase): + def testBasicChrome(self): + builder = trace_data.TraceDataBuilder() + builder.AddTraceFor(trace_data.CHROME_TRACE_PART, + {'traceEvents': [1, 2, 3]}) + builder.AddTraceFor(trace_data.TAB_ID_PART, ['tab-7']) + builder.AddTraceFor(trace_data.BATTOR_TRACE_PART, 'battor data here') + + d = builder.AsData() + self.assertTrue(d.HasTracesFor(trace_data.CHROME_TRACE_PART)) + self.assertTrue(d.HasTracesFor(trace_data.TAB_ID_PART)) + self.assertTrue(d.HasTracesFor(trace_data.BATTOR_TRACE_PART)) + + self.assertRaises(Exception, builder.AsData) + + def testSetTraceFor(self): + telemetry_trace = { + 'traceEvents': [1, 2, 3], + 'metadata': { + 'field1': 'value1' + } + } + + builder = trace_data.TraceDataBuilder() + builder.AddTraceFor(trace_data.TELEMETRY_PART, telemetry_trace) + d = builder.AsData() + + self.assertEqual(d.GetTracesFor(trace_data.TELEMETRY_PART), + [telemetry_trace]) + + def testSetTraceForRaisesWithInvalidPart(self): + builder = trace_data.TraceDataBuilder() + + self.assertRaises(exceptions.AssertionError, + lambda: builder.AddTraceFor('not_a_trace_part', {})) + + def testSetTraceForRaisesWithInvalidTrace(self): + builder = trace_data.TraceDataBuilder() + + self.assertRaises( + exceptions.AssertionError, + lambda: builder.AddTraceFor(trace_data.TELEMETRY_PART, + datetime.time.min)) + + def testSetTraceForRaisesAfterAsData(self): + builder = trace_data.TraceDataBuilder() + builder.AsData() + + self.assertRaises( + exceptions.Exception, + lambda: builder.AddTraceFor(trace_data.TELEMETRY_PART, {})) diff --git a/love2dToAPK/tools/tools/adb/systrace/catapult/tracing/tracing_project.py b/love2dToAPK/tools/tools/adb/systrace/catapult/tracing/tracing_project.py new file mode 100644 index 0000000..3bdcb4e --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/catapult/tracing/tracing_project.py @@ -0,0 +1,196 @@ +# Copyright (c) 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import sys +import os +import re + + +def _AddToPathIfNeeded(path): + if path not in sys.path: + sys.path.insert(0, path) + + +def UpdateSysPathIfNeeded(): + p = TracingProject() + _AddToPathIfNeeded(p.catapult_path) + _AddToPathIfNeeded(p.py_vulcanize_path) + _AddToPathIfNeeded(p.vinn_path) + + _AddToPathIfNeeded(os.path.join(p.catapult_third_party_path, 'WebOb')) + _AddToPathIfNeeded(os.path.join(p.catapult_third_party_path, 'Paste')) + _AddToPathIfNeeded(os.path.join(p.catapult_third_party_path, 'six')) + _AddToPathIfNeeded(os.path.join(p.catapult_third_party_path, 'webapp2')) + + +def _FindAllFilesRecursive(source_paths): + assert isinstance(source_paths, list) + all_filenames = set() + for source_path in source_paths: + for dirpath, _, filenames in os.walk(source_path): + for f in filenames: + if f.startswith('.'): + continue + x = os.path.abspath(os.path.join(dirpath, f)) + all_filenames.add(x) + return all_filenames + +def _IsFilenameATest(x): + if x.endswith('_test.js'): + return True + + if x.endswith('_test.html'): + return True + + if x.endswith('_unittest.js'): + return True + + if x.endswith('_unittest.html'): + return True + + # TODO(nduca): Add content test? + return False + + +class TracingProject(object): + catapult_path = os.path.abspath( + os.path.join(os.path.dirname(__file__), os.path.pardir)) + + tracing_root_path = os.path.join(catapult_path, 'tracing') + trace_processor_root_path = os.path.join(catapult_path, 'trace_processor') + tracing_src_path = os.path.join(tracing_root_path, 'tracing') + extras_path = os.path.join(tracing_src_path, 'extras') + ui_extras_path = os.path.join(tracing_src_path, 'ui', 'extras') + + catapult_third_party_path = os.path.join(catapult_path, 'third_party') + polymer_path = os.path.join(catapult_third_party_path, 'polymer') + + tracing_third_party_path = os.path.join(tracing_root_path, 'third_party') + py_vulcanize_path = os.path.join(catapult_third_party_path, 'py_vulcanize') + vinn_path = os.path.join(catapult_third_party_path, 'vinn') + + jszip_path = os.path.join(tracing_third_party_path, 'jszip') + + glmatrix_path = os.path.join( + tracing_third_party_path, 'gl-matrix', 'dist') + + mannwhitneyu_path = os.path.join( + tracing_third_party_path, 'mannwhitneyu') + + ui_path = os.path.join(tracing_src_path, 'ui') + d3_path = os.path.join(tracing_third_party_path, 'd3') + chai_path = os.path.join(tracing_third_party_path, 'chai') + mocha_path = os.path.join(tracing_third_party_path, 'mocha') + oboe_path = os.path.join(tracing_third_party_path, 'oboe') + + mre_path = os.path.join(tracing_src_path, 'mre') + + metrics_path = os.path.join(tracing_src_path, 'metrics') + diagnostics_path = os.path.join(tracing_src_path, 'value', 'diagnostics') + + value_ui_path = os.path.join(tracing_src_path, 'value', 'ui') + metrics_ui_path = os.path.join(tracing_src_path, 'metrics', 'ui') + + test_data_path = os.path.join(tracing_root_path, 'test_data') + skp_data_path = os.path.join(tracing_root_path, 'skp_data') + + rjsmin_path = os.path.join( + tracing_third_party_path, 'tvcm', 'third_party', 'rjsmin') + rcssmin_path = os.path.join( + tracing_third_party_path, 'tvcm', 'third_party', 'rcssmin') + + def __init__(self): + self.source_paths = [] + self.source_paths.append(self.tracing_root_path) + self.source_paths.append(self.polymer_path) + self.source_paths.append(self.tracing_third_party_path) + self.source_paths.append(self.mre_path) + self.source_paths.append(self.jszip_path) + self.source_paths.append(self.glmatrix_path) + self.source_paths.append(self.mannwhitneyu_path) + self.source_paths.append(self.d3_path) + self.source_paths.append(self.chai_path) + self.source_paths.append(self.mocha_path) + self.source_paths.append(self.oboe_path) + + def CreateVulcanizer(self): + from py_vulcanize import project as project_module + return project_module.Project(self.source_paths) + + def IsD8CompatibleFile(self, filename): + if filename.startswith(self.ui_path): + return False + + if filename.startswith(self.value_ui_path): + return False + + if filename.startswith(self.metrics_ui_path): + return False + + return True + + def FindAllTestModuleRelPaths(self, pred=None): + if pred is None: + pred = lambda x: True + + all_filenames = _FindAllFilesRecursive([self.tracing_src_path]) + test_module_filenames = [x for x in all_filenames if + _IsFilenameATest(x) and pred(x)] + test_module_filenames.sort() + + return [os.path.relpath(x, self.tracing_root_path) + for x in test_module_filenames] + + def FindAllMetricsModuleRelPaths(self): + all_filenames = _FindAllFilesRecursive([self.tracing_src_path]) + all_metrics_module_filenames = [] + for x in all_filenames: + if x.startswith(self.metrics_path) and not _IsFilenameATest(x): + all_metrics_module_filenames.append(x) + all_metrics_module_filenames.sort() + return [os.path.relpath(x, self.tracing_root_path) + for x in all_metrics_module_filenames] + + def FindAllDiagnosticsModuleRelPaths(self): + all_filenames = _FindAllFilesRecursive([self.tracing_src_path]) + all_diagnostics_module_filenames = [] + for x in all_filenames: + if x.startswith(self.diagnostics_path) and not _IsFilenameATest(x): + all_diagnostics_module_filenames.append(x) + all_diagnostics_module_filenames.sort() + return [os.path.relpath(x, self.tracing_root_path) + for x in all_diagnostics_module_filenames] + + def FindAllD8TestModuleRelPaths(self): + return self.FindAllTestModuleRelPaths(pred=self.IsD8CompatibleFile) + + def GetConfigNames(self): + config_files = [ + os.path.join(self.ui_extras_path, x) + for x in os.listdir(self.ui_extras_path) + if x.endswith('_config.html') + ] + + config_files = [x for x in config_files if os.path.isfile(x)] + + config_basenames = [os.path.basename(x) for x in config_files] + config_names = [re.match('(.+)_config.html$', x).group(1) + for x in config_basenames] + return config_names + + def GetDefaultConfigName(self): + assert 'full' in self.GetConfigNames() + return 'full' + + def AddConfigNameOptionToParser(self, parser): + choices = self.GetConfigNames() + parser.add_argument( + '--config', dest='config_name', + choices=choices, default=self.GetDefaultConfigName(), + help='Picks a browser config. Valid choices: %s' % ', '.join(choices)) + return choices + + def GetModuleNameForConfigName(self, config_name): + return 'tracing.ui.extras.%s_config' % config_name + diff --git a/love2dToAPK/tools/tools/adb/systrace/systrace.py b/love2dToAPK/tools/tools/adb/systrace/systrace.py new file mode 100644 index 0000000..71da650 --- /dev/null +++ b/love2dToAPK/tools/tools/adb/systrace/systrace.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python + +# Copyright (c) 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import sys + +version = sys.version_info[:2] +if version != (2, 7): + sys.stderr.write('Systrace does not support Python %d.%d. ' + 'Please use Python 2.7.\n' % version) + sys.exit(1) + +systrace_dir = os.path.abspath( + os.path.join(os.path.dirname(__file__), 'catapult', 'systrace')) +sys.path.insert(0, systrace_dir) + +def RemoveAllStalePycFiles(base_dir): + """Scan directories for old .pyc files without a .py file and delete them.""" + for dirname, _, filenames in os.walk(base_dir): + if '.git' in dirname: + continue + for filename in filenames: + root, ext = os.path.splitext(filename) + if ext != '.pyc': + continue + + pyc_path = os.path.join(dirname, filename) + py_path = os.path.join(dirname, root + '.py') + + try: + if not os.path.exists(py_path): + os.remove(pyc_path) + except OSError: + # Wrap OS calls in try/except in case another process touched this file. + pass + + try: + os.removedirs(dirname) + except OSError: + # Wrap OS calls in try/except in case another process touched this dir. + pass + +if __name__ == '__main__': + RemoveAllStalePycFiles(os.path.dirname(__file__)) + from systrace import run_systrace + sys.exit(run_systrace.main()) diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/NOTICE.txt b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/NOTICE.txt new file mode 100644 index 0000000..1fdb31d --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/NOTICE.txt @@ -0,0 +1,195 @@ +Notice for all the files in this folder. +------------------------------------------------------------ + + + + Copyright (c) 2005-2008, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/aapt.exe b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/aapt.exe new file mode 100644 index 0000000..691c328 Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/aapt.exe differ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/aidl.exe b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/aidl.exe new file mode 100644 index 0000000..48dd36c Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/aidl.exe differ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/bcc_compat.exe b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/bcc_compat.exe new file mode 100644 index 0000000..ab19a04 Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/bcc_compat.exe differ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/dexdump.exe b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/dexdump.exe new file mode 100644 index 0000000..b732368 Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/dexdump.exe differ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/dx.bat b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/dx.bat new file mode 100644 index 0000000..e2d678b --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/dx.bat @@ -0,0 +1,88 @@ +@echo off +REM Copyright (C) 2007 The Android Open Source Project +REM +REM Licensed under the Apache License, Version 2.0 (the "License"); +REM you may not use this file except in compliance with the License. +REM You may obtain a copy of the License at +REM +REM http://www.apache.org/licenses/LICENSE-2.0 +REM +REM Unless required by applicable law or agreed to in writing, software +REM distributed under the License is distributed on an "AS IS" BASIS, +REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +REM See the License for the specific language governing permissions and +REM limitations under the License. + +REM don't modify the caller's environment +setlocal + +REM Locate dx.jar in the directory where dx.bat was found and start it. + +REM Set up prog to be the path of this script, including following symlinks, +REM and set up progdir to be the fully-qualified pathname of its directory. +set prog=%~f0 + +rem Check we have a valid Java.exe in the path. +set java_exe= +if exist "%~dp0..\tools\lib\find_java.bat" call "%~dp0..\tools\lib\find_java.bat" +if exist "%~dp0..\..\tools\lib\find_java.bat" call "%~dp0..\..\tools\lib\find_java.bat" +if not defined java_exe goto :EOF + +set jarfile=dx.jar +set "frameworkdir=%~dp0" +rem frameworkdir must not end with a dir sep. +set "frameworkdir=%frameworkdir:~0,-1%" + +if exist "%frameworkdir%\%jarfile%" goto JarFileOk + set "frameworkdir=%~dp0lib" + +if exist "%frameworkdir%\%jarfile%" goto JarFileOk + set "frameworkdir=%~dp0..\framework" + +:JarFileOk + +set "jarpath=%frameworkdir%\%jarfile%" + +set javaOpts= +set args= + +REM By default, give dx a max heap size of 1 gig and a stack size of 1meg. +rem This can be overridden by using "-JXmx..." and "-JXss..." options below. +set defaultXmx=-Xmx1024M +set defaultXss=-Xss1m + +REM Capture all arguments that are not -J options. +REM Note that when reading the input arguments with %1, the cmd.exe +REM automagically converts --name=value arguments into 2 arguments "--name" +REM followed by "value". Dx has been changed to know how to deal with that. +set params= + +:firstArg +if [%1]==[] goto endArgs +set a=%~1 + + if [%defaultXmx%]==[] goto notXmx + if %a:~0,5% NEQ -JXmx goto notXmx + set defaultXmx= + :notXmx + + if [%defaultXss%]==[] goto notXss + if %a:~0,5% NEQ -JXss goto notXss + set defaultXss= + :notXss + + if %a:~0,2% NEQ -J goto notJ + set javaOpts=%javaOpts% -%a:~2% + shift /1 + goto firstArg + + :notJ + set params=%params% %1 + shift /1 + goto firstArg + +:endArgs + +set javaOpts=%javaOpts% %defaultXmx% %defaultXss% +call "%java_exe%" %javaOpts% -Djava.ext.dirs="%frameworkdir%" -jar "%jarpath%" %params% + diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/lib/dx.jar b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/lib/dx.jar new file mode 100644 index 0000000..bb766fc Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/lib/dx.jar differ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/libbcc.dll b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/libbcc.dll new file mode 100644 index 0000000..6f208a6 Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/libbcc.dll differ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/libbcinfo.dll b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/libbcinfo.dll new file mode 100644 index 0000000..af76b3e Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/libbcinfo.dll differ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/CMakeLists.txt b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/CMakeLists.txt new file mode 100644 index 0000000..8be33b7 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/CMakeLists.txt @@ -0,0 +1,108 @@ +set(files + altivec.h + ammintrin.h + avxintrin.h + avx2intrin.h + bmiintrin.h + bmi2intrin.h + emmintrin.h + f16cintrin.h + float.h + fma4intrin.h + fmaintrin.h + immintrin.h + iso646.h + limits.h + lzcntintrin.h + mm3dnow.h + mmintrin.h + mm_malloc.h + nmmintrin.h + pmmintrin.h + popcntintrin.h + prfchwintrin.h + rdseedintrin.h + rtmintrin.h + smmintrin.h + stdalign.h + stdarg.h + stdbool.h + stddef.h + stdint.h + stdnoreturn.h + tgmath.h + tmmintrin.h + varargs.h + wmmintrin.h + __wmmintrin_aes.h + __wmmintrin_pclmul.h + x86intrin.h + xmmintrin.h + xopintrin.h + cpuid.h + unwind.h + module.map + ) + +set(output_dir ${LLVM_BINARY_DIR}/lib/clang/${CLANG_VERSION}/include) + +# If we are in an IDE that has a configuration directory, we need to +# create a second copy of the headers so that 'clang' can find them if +# it's run from the build directory. +if(MSVC_IDE OR XCODE) + set(other_output_dir ${LLVM_BINARY_DIR}/bin/lib/clang/${CLANG_VERSION}/include) +endif() + +# Generate arm_neon.h +clang_tablegen(arm_neon.h.inc -gen-arm-neon + SOURCE ${CLANG_SOURCE_DIR}/include/clang/Basic/arm_neon.td) + +set(out_files) +foreach( f ${files} ) + set( src ${CMAKE_CURRENT_SOURCE_DIR}/${f} ) + set( dst ${output_dir}/${f} ) + add_custom_command(OUTPUT ${dst} + DEPENDS ${src} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} ${dst} + COMMENT "Copying clang's ${f}...") + list(APPEND out_files ${dst}) + + if(other_output_dir) + set(other_dst ${other_output_dir}/${f}) + add_custom_command(OUTPUT ${other_dst} + DEPENDS ${src} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} ${other_dst} + COMMENT "Copying clang's ${f}...") + list(APPEND out_files ${other_dst}) + endif() +endforeach( f ) + +add_custom_command(OUTPUT ${output_dir}/arm_neon.h + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/arm_neon.h.inc + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/arm_neon.h.inc ${output_dir}/arm_neon.h + COMMENT "Copying clang's arm_neon.h...") +list(APPEND out_files ${output_dir}/arm_neon.h) + +if (other_output_dir) + set(other_dst ${other_output_dir}/arm_neon.h) + add_custom_command(OUTPUT ${other_dst} + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/arm_neon.h.inc + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/arm_neon.h.inc ${other_dst} + COMMENT "Copying clang's arm_neon.h...") + list(APPEND out_files ${other_dst}) +endif () + +add_custom_target(clang-headers ALL DEPENDS ${out_files}) +set_target_properties(clang-headers PROPERTIES FOLDER "Misc") + +if (other_output_dir) + if(UNIX) + add_custom_command(TARGET clang-headers POST_BUILD + COMMAND ${CMAKE_COMMAND} -E make_directory "${LLVM_BINARY_DIR}/lib/${CMAKE_CFG_INTDIR}" + COMMAND ${CMAKE_COMMAND} -E create_symlink "${LLVM_BINARY_DIR}/bin/lib/clang" "${LLVM_BINARY_DIR}/lib/${CMAKE_CFG_INTDIR}/clang") + endif() +endif () + +install(FILES ${files} ${output_dir}/arm_neon.h + PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ + DESTINATION lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include) diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/LICENSE.TXT b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/LICENSE.TXT new file mode 100644 index 0000000..e31223a --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/LICENSE.TXT @@ -0,0 +1,63 @@ +============================================================================== +LLVM Release License +============================================================================== +University of Illinois/NCSA +Open Source License + +Copyright (c) 2007-2013 University of Illinois at Urbana-Champaign. +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + +============================================================================== +The LLVM software contains code written by third parties. Such software will +have its own individual LICENSE.TXT file in the directory in which it appears. +This file will describe the copyrights, license, and restrictions which apply +to that code. + +The disclaimer of warranty in the University of Illinois Open Source License +applies to all code in the LLVM Distribution, and nothing in any of the +other licenses gives permission to use the names of the LLVM Team or the +University of Illinois to endorse or promote products derived from this +Software. + +The following pieces of software have additional or alternate copyrights, +licenses, and/or restrictions: + +Program Directory +------- --------- + + diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/altivec.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/altivec.h new file mode 100644 index 0000000..74ce08a --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/altivec.h @@ -0,0 +1,11856 @@ +/*===---- altivec.h - Standard header for type generic math ---------------===*\ + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * +\*===----------------------------------------------------------------------===*/ + +#ifndef __ALTIVEC_H +#define __ALTIVEC_H + +#ifndef __ALTIVEC__ +#error "AltiVec support not enabled" +#endif + +/* constants for mapping CR6 bits to predicate result. */ + +#define __CR6_EQ 0 +#define __CR6_EQ_REV 1 +#define __CR6_LT 2 +#define __CR6_LT_REV 3 + +#define __ATTRS_o_ai __attribute__((__overloadable__, __always_inline__)) + +static vector signed char __ATTRS_o_ai +vec_perm(vector signed char __a, vector signed char __b, vector unsigned char __c); + +static vector unsigned char __ATTRS_o_ai +vec_perm(vector unsigned char __a, + vector unsigned char __b, + vector unsigned char __c); + +static vector bool char __ATTRS_o_ai +vec_perm(vector bool char __a, vector bool char __b, vector unsigned char __c); + +static vector short __ATTRS_o_ai +vec_perm(vector short __a, vector short __b, vector unsigned char __c); + +static vector unsigned short __ATTRS_o_ai +vec_perm(vector unsigned short __a, + vector unsigned short __b, + vector unsigned char __c); + +static vector bool short __ATTRS_o_ai +vec_perm(vector bool short __a, vector bool short __b, vector unsigned char __c); + +static vector pixel __ATTRS_o_ai +vec_perm(vector pixel __a, vector pixel __b, vector unsigned char __c); + +static vector int __ATTRS_o_ai +vec_perm(vector int __a, vector int __b, vector unsigned char __c); + +static vector unsigned int __ATTRS_o_ai +vec_perm(vector unsigned int __a, vector unsigned int __b, vector unsigned char __c); + +static vector bool int __ATTRS_o_ai +vec_perm(vector bool int __a, vector bool int __b, vector unsigned char __c); + +static vector float __ATTRS_o_ai +vec_perm(vector float __a, vector float __b, vector unsigned char __c); + +/* vec_abs */ + +#define __builtin_altivec_abs_v16qi vec_abs +#define __builtin_altivec_abs_v8hi vec_abs +#define __builtin_altivec_abs_v4si vec_abs + +static vector signed char __ATTRS_o_ai +vec_abs(vector signed char __a) +{ + return __builtin_altivec_vmaxsb(__a, -__a); +} + +static vector signed short __ATTRS_o_ai +vec_abs(vector signed short __a) +{ + return __builtin_altivec_vmaxsh(__a, -__a); +} + +static vector signed int __ATTRS_o_ai +vec_abs(vector signed int __a) +{ + return __builtin_altivec_vmaxsw(__a, -__a); +} + +static vector float __ATTRS_o_ai +vec_abs(vector float __a) +{ + vector unsigned int __res = (vector unsigned int)__a + & (vector unsigned int)(0x7FFFFFFF); + return (vector float)__res; +} + +/* vec_abss */ + +#define __builtin_altivec_abss_v16qi vec_abss +#define __builtin_altivec_abss_v8hi vec_abss +#define __builtin_altivec_abss_v4si vec_abss + +static vector signed char __ATTRS_o_ai +vec_abss(vector signed char __a) +{ + return __builtin_altivec_vmaxsb + (__a, __builtin_altivec_vsubsbs((vector signed char)(0), __a)); +} + +static vector signed short __ATTRS_o_ai +vec_abss(vector signed short __a) +{ + return __builtin_altivec_vmaxsh + (__a, __builtin_altivec_vsubshs((vector signed short)(0), __a)); +} + +static vector signed int __ATTRS_o_ai +vec_abss(vector signed int __a) +{ + return __builtin_altivec_vmaxsw + (__a, __builtin_altivec_vsubsws((vector signed int)(0), __a)); +} + +/* vec_add */ + +static vector signed char __ATTRS_o_ai +vec_add(vector signed char __a, vector signed char __b) +{ + return __a + __b; +} + +static vector signed char __ATTRS_o_ai +vec_add(vector bool char __a, vector signed char __b) +{ + return (vector signed char)__a + __b; +} + +static vector signed char __ATTRS_o_ai +vec_add(vector signed char __a, vector bool char __b) +{ + return __a + (vector signed char)__b; +} + +static vector unsigned char __ATTRS_o_ai +vec_add(vector unsigned char __a, vector unsigned char __b) +{ + return __a + __b; +} + +static vector unsigned char __ATTRS_o_ai +vec_add(vector bool char __a, vector unsigned char __b) +{ + return (vector unsigned char)__a + __b; +} + +static vector unsigned char __ATTRS_o_ai +vec_add(vector unsigned char __a, vector bool char __b) +{ + return __a + (vector unsigned char)__b; +} + +static vector short __ATTRS_o_ai +vec_add(vector short __a, vector short __b) +{ + return __a + __b; +} + +static vector short __ATTRS_o_ai +vec_add(vector bool short __a, vector short __b) +{ + return (vector short)__a + __b; +} + +static vector short __ATTRS_o_ai +vec_add(vector short __a, vector bool short __b) +{ + return __a + (vector short)__b; +} + +static vector unsigned short __ATTRS_o_ai +vec_add(vector unsigned short __a, vector unsigned short __b) +{ + return __a + __b; +} + +static vector unsigned short __ATTRS_o_ai +vec_add(vector bool short __a, vector unsigned short __b) +{ + return (vector unsigned short)__a + __b; +} + +static vector unsigned short __ATTRS_o_ai +vec_add(vector unsigned short __a, vector bool short __b) +{ + return __a + (vector unsigned short)__b; +} + +static vector int __ATTRS_o_ai +vec_add(vector int __a, vector int __b) +{ + return __a + __b; +} + +static vector int __ATTRS_o_ai +vec_add(vector bool int __a, vector int __b) +{ + return (vector int)__a + __b; +} + +static vector int __ATTRS_o_ai +vec_add(vector int __a, vector bool int __b) +{ + return __a + (vector int)__b; +} + +static vector unsigned int __ATTRS_o_ai +vec_add(vector unsigned int __a, vector unsigned int __b) +{ + return __a + __b; +} + +static vector unsigned int __ATTRS_o_ai +vec_add(vector bool int __a, vector unsigned int __b) +{ + return (vector unsigned int)__a + __b; +} + +static vector unsigned int __ATTRS_o_ai +vec_add(vector unsigned int __a, vector bool int __b) +{ + return __a + (vector unsigned int)__b; +} + +static vector float __ATTRS_o_ai +vec_add(vector float __a, vector float __b) +{ + return __a + __b; +} + +/* vec_vaddubm */ + +#define __builtin_altivec_vaddubm vec_vaddubm + +static vector signed char __ATTRS_o_ai +vec_vaddubm(vector signed char __a, vector signed char __b) +{ + return __a + __b; +} + +static vector signed char __ATTRS_o_ai +vec_vaddubm(vector bool char __a, vector signed char __b) +{ + return (vector signed char)__a + __b; +} + +static vector signed char __ATTRS_o_ai +vec_vaddubm(vector signed char __a, vector bool char __b) +{ + return __a + (vector signed char)__b; +} + +static vector unsigned char __ATTRS_o_ai +vec_vaddubm(vector unsigned char __a, vector unsigned char __b) +{ + return __a + __b; +} + +static vector unsigned char __ATTRS_o_ai +vec_vaddubm(vector bool char __a, vector unsigned char __b) +{ + return (vector unsigned char)__a + __b; +} + +static vector unsigned char __ATTRS_o_ai +vec_vaddubm(vector unsigned char __a, vector bool char __b) +{ + return __a + (vector unsigned char)__b; +} + +/* vec_vadduhm */ + +#define __builtin_altivec_vadduhm vec_vadduhm + +static vector short __ATTRS_o_ai +vec_vadduhm(vector short __a, vector short __b) +{ + return __a + __b; +} + +static vector short __ATTRS_o_ai +vec_vadduhm(vector bool short __a, vector short __b) +{ + return (vector short)__a + __b; +} + +static vector short __ATTRS_o_ai +vec_vadduhm(vector short __a, vector bool short __b) +{ + return __a + (vector short)__b; +} + +static vector unsigned short __ATTRS_o_ai +vec_vadduhm(vector unsigned short __a, vector unsigned short __b) +{ + return __a + __b; +} + +static vector unsigned short __ATTRS_o_ai +vec_vadduhm(vector bool short __a, vector unsigned short __b) +{ + return (vector unsigned short)__a + __b; +} + +static vector unsigned short __ATTRS_o_ai +vec_vadduhm(vector unsigned short __a, vector bool short __b) +{ + return __a + (vector unsigned short)__b; +} + +/* vec_vadduwm */ + +#define __builtin_altivec_vadduwm vec_vadduwm + +static vector int __ATTRS_o_ai +vec_vadduwm(vector int __a, vector int __b) +{ + return __a + __b; +} + +static vector int __ATTRS_o_ai +vec_vadduwm(vector bool int __a, vector int __b) +{ + return (vector int)__a + __b; +} + +static vector int __ATTRS_o_ai +vec_vadduwm(vector int __a, vector bool int __b) +{ + return __a + (vector int)__b; +} + +static vector unsigned int __ATTRS_o_ai +vec_vadduwm(vector unsigned int __a, vector unsigned int __b) +{ + return __a + __b; +} + +static vector unsigned int __ATTRS_o_ai +vec_vadduwm(vector bool int __a, vector unsigned int __b) +{ + return (vector unsigned int)__a + __b; +} + +static vector unsigned int __ATTRS_o_ai +vec_vadduwm(vector unsigned int __a, vector bool int __b) +{ + return __a + (vector unsigned int)__b; +} + +/* vec_vaddfp */ + +#define __builtin_altivec_vaddfp vec_vaddfp + +static vector float __attribute__((__always_inline__)) +vec_vaddfp(vector float __a, vector float __b) +{ + return __a + __b; +} + +/* vec_addc */ + +static vector unsigned int __attribute__((__always_inline__)) +vec_addc(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vaddcuw(__a, __b); +} + +/* vec_vaddcuw */ + +static vector unsigned int __attribute__((__always_inline__)) +vec_vaddcuw(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vaddcuw(__a, __b); +} + +/* vec_adds */ + +static vector signed char __ATTRS_o_ai +vec_adds(vector signed char __a, vector signed char __b) +{ + return __builtin_altivec_vaddsbs(__a, __b); +} + +static vector signed char __ATTRS_o_ai +vec_adds(vector bool char __a, vector signed char __b) +{ + return __builtin_altivec_vaddsbs((vector signed char)__a, __b); +} + +static vector signed char __ATTRS_o_ai +vec_adds(vector signed char __a, vector bool char __b) +{ + return __builtin_altivec_vaddsbs(__a, (vector signed char)__b); +} + +static vector unsigned char __ATTRS_o_ai +vec_adds(vector unsigned char __a, vector unsigned char __b) +{ + return __builtin_altivec_vaddubs(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_adds(vector bool char __a, vector unsigned char __b) +{ + return __builtin_altivec_vaddubs((vector unsigned char)__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_adds(vector unsigned char __a, vector bool char __b) +{ + return __builtin_altivec_vaddubs(__a, (vector unsigned char)__b); +} + +static vector short __ATTRS_o_ai +vec_adds(vector short __a, vector short __b) +{ + return __builtin_altivec_vaddshs(__a, __b); +} + +static vector short __ATTRS_o_ai +vec_adds(vector bool short __a, vector short __b) +{ + return __builtin_altivec_vaddshs((vector short)__a, __b); +} + +static vector short __ATTRS_o_ai +vec_adds(vector short __a, vector bool short __b) +{ + return __builtin_altivec_vaddshs(__a, (vector short)__b); +} + +static vector unsigned short __ATTRS_o_ai +vec_adds(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vadduhs(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_adds(vector bool short __a, vector unsigned short __b) +{ + return __builtin_altivec_vadduhs((vector unsigned short)__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_adds(vector unsigned short __a, vector bool short __b) +{ + return __builtin_altivec_vadduhs(__a, (vector unsigned short)__b); +} + +static vector int __ATTRS_o_ai +vec_adds(vector int __a, vector int __b) +{ + return __builtin_altivec_vaddsws(__a, __b); +} + +static vector int __ATTRS_o_ai +vec_adds(vector bool int __a, vector int __b) +{ + return __builtin_altivec_vaddsws((vector int)__a, __b); +} + +static vector int __ATTRS_o_ai +vec_adds(vector int __a, vector bool int __b) +{ + return __builtin_altivec_vaddsws(__a, (vector int)__b); +} + +static vector unsigned int __ATTRS_o_ai +vec_adds(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vadduws(__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_adds(vector bool int __a, vector unsigned int __b) +{ + return __builtin_altivec_vadduws((vector unsigned int)__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_adds(vector unsigned int __a, vector bool int __b) +{ + return __builtin_altivec_vadduws(__a, (vector unsigned int)__b); +} + +/* vec_vaddsbs */ + +static vector signed char __ATTRS_o_ai +vec_vaddsbs(vector signed char __a, vector signed char __b) +{ + return __builtin_altivec_vaddsbs(__a, __b); +} + +static vector signed char __ATTRS_o_ai +vec_vaddsbs(vector bool char __a, vector signed char __b) +{ + return __builtin_altivec_vaddsbs((vector signed char)__a, __b); +} + +static vector signed char __ATTRS_o_ai +vec_vaddsbs(vector signed char __a, vector bool char __b) +{ + return __builtin_altivec_vaddsbs(__a, (vector signed char)__b); +} + +/* vec_vaddubs */ + +static vector unsigned char __ATTRS_o_ai +vec_vaddubs(vector unsigned char __a, vector unsigned char __b) +{ + return __builtin_altivec_vaddubs(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_vaddubs(vector bool char __a, vector unsigned char __b) +{ + return __builtin_altivec_vaddubs((vector unsigned char)__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_vaddubs(vector unsigned char __a, vector bool char __b) +{ + return __builtin_altivec_vaddubs(__a, (vector unsigned char)__b); +} + +/* vec_vaddshs */ + +static vector short __ATTRS_o_ai +vec_vaddshs(vector short __a, vector short __b) +{ + return __builtin_altivec_vaddshs(__a, __b); +} + +static vector short __ATTRS_o_ai +vec_vaddshs(vector bool short __a, vector short __b) +{ + return __builtin_altivec_vaddshs((vector short)__a, __b); +} + +static vector short __ATTRS_o_ai +vec_vaddshs(vector short __a, vector bool short __b) +{ + return __builtin_altivec_vaddshs(__a, (vector short)__b); +} + +/* vec_vadduhs */ + +static vector unsigned short __ATTRS_o_ai +vec_vadduhs(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vadduhs(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_vadduhs(vector bool short __a, vector unsigned short __b) +{ + return __builtin_altivec_vadduhs((vector unsigned short)__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_vadduhs(vector unsigned short __a, vector bool short __b) +{ + return __builtin_altivec_vadduhs(__a, (vector unsigned short)__b); +} + +/* vec_vaddsws */ + +static vector int __ATTRS_o_ai +vec_vaddsws(vector int __a, vector int __b) +{ + return __builtin_altivec_vaddsws(__a, __b); +} + +static vector int __ATTRS_o_ai +vec_vaddsws(vector bool int __a, vector int __b) +{ + return __builtin_altivec_vaddsws((vector int)__a, __b); +} + +static vector int __ATTRS_o_ai +vec_vaddsws(vector int __a, vector bool int __b) +{ + return __builtin_altivec_vaddsws(__a, (vector int)__b); +} + +/* vec_vadduws */ + +static vector unsigned int __ATTRS_o_ai +vec_vadduws(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vadduws(__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_vadduws(vector bool int __a, vector unsigned int __b) +{ + return __builtin_altivec_vadduws((vector unsigned int)__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_vadduws(vector unsigned int __a, vector bool int __b) +{ + return __builtin_altivec_vadduws(__a, (vector unsigned int)__b); +} + +/* vec_and */ + +#define __builtin_altivec_vand vec_and + +static vector signed char __ATTRS_o_ai +vec_and(vector signed char __a, vector signed char __b) +{ + return __a & __b; +} + +static vector signed char __ATTRS_o_ai +vec_and(vector bool char __a, vector signed char __b) +{ + return (vector signed char)__a & __b; +} + +static vector signed char __ATTRS_o_ai +vec_and(vector signed char __a, vector bool char __b) +{ + return __a & (vector signed char)__b; +} + +static vector unsigned char __ATTRS_o_ai +vec_and(vector unsigned char __a, vector unsigned char __b) +{ + return __a & __b; +} + +static vector unsigned char __ATTRS_o_ai +vec_and(vector bool char __a, vector unsigned char __b) +{ + return (vector unsigned char)__a & __b; +} + +static vector unsigned char __ATTRS_o_ai +vec_and(vector unsigned char __a, vector bool char __b) +{ + return __a & (vector unsigned char)__b; +} + +static vector bool char __ATTRS_o_ai +vec_and(vector bool char __a, vector bool char __b) +{ + return __a & __b; +} + +static vector short __ATTRS_o_ai +vec_and(vector short __a, vector short __b) +{ + return __a & __b; +} + +static vector short __ATTRS_o_ai +vec_and(vector bool short __a, vector short __b) +{ + return (vector short)__a & __b; +} + +static vector short __ATTRS_o_ai +vec_and(vector short __a, vector bool short __b) +{ + return __a & (vector short)__b; +} + +static vector unsigned short __ATTRS_o_ai +vec_and(vector unsigned short __a, vector unsigned short __b) +{ + return __a & __b; +} + +static vector unsigned short __ATTRS_o_ai +vec_and(vector bool short __a, vector unsigned short __b) +{ + return (vector unsigned short)__a & __b; +} + +static vector unsigned short __ATTRS_o_ai +vec_and(vector unsigned short __a, vector bool short __b) +{ + return __a & (vector unsigned short)__b; +} + +static vector bool short __ATTRS_o_ai +vec_and(vector bool short __a, vector bool short __b) +{ + return __a & __b; +} + +static vector int __ATTRS_o_ai +vec_and(vector int __a, vector int __b) +{ + return __a & __b; +} + +static vector int __ATTRS_o_ai +vec_and(vector bool int __a, vector int __b) +{ + return (vector int)__a & __b; +} + +static vector int __ATTRS_o_ai +vec_and(vector int __a, vector bool int __b) +{ + return __a & (vector int)__b; +} + +static vector unsigned int __ATTRS_o_ai +vec_and(vector unsigned int __a, vector unsigned int __b) +{ + return __a & __b; +} + +static vector unsigned int __ATTRS_o_ai +vec_and(vector bool int __a, vector unsigned int __b) +{ + return (vector unsigned int)__a & __b; +} + +static vector unsigned int __ATTRS_o_ai +vec_and(vector unsigned int __a, vector bool int __b) +{ + return __a & (vector unsigned int)__b; +} + +static vector bool int __ATTRS_o_ai +vec_and(vector bool int __a, vector bool int __b) +{ + return __a & __b; +} + +static vector float __ATTRS_o_ai +vec_and(vector float __a, vector float __b) +{ + vector unsigned int __res = (vector unsigned int)__a & (vector unsigned int)__b; + return (vector float)__res; +} + +static vector float __ATTRS_o_ai +vec_and(vector bool int __a, vector float __b) +{ + vector unsigned int __res = (vector unsigned int)__a & (vector unsigned int)__b; + return (vector float)__res; +} + +static vector float __ATTRS_o_ai +vec_and(vector float __a, vector bool int __b) +{ + vector unsigned int __res = (vector unsigned int)__a & (vector unsigned int)__b; + return (vector float)__res; +} + +/* vec_vand */ + +static vector signed char __ATTRS_o_ai +vec_vand(vector signed char __a, vector signed char __b) +{ + return __a & __b; +} + +static vector signed char __ATTRS_o_ai +vec_vand(vector bool char __a, vector signed char __b) +{ + return (vector signed char)__a & __b; +} + +static vector signed char __ATTRS_o_ai +vec_vand(vector signed char __a, vector bool char __b) +{ + return __a & (vector signed char)__b; +} + +static vector unsigned char __ATTRS_o_ai +vec_vand(vector unsigned char __a, vector unsigned char __b) +{ + return __a & __b; +} + +static vector unsigned char __ATTRS_o_ai +vec_vand(vector bool char __a, vector unsigned char __b) +{ + return (vector unsigned char)__a & __b; +} + +static vector unsigned char __ATTRS_o_ai +vec_vand(vector unsigned char __a, vector bool char __b) +{ + return __a & (vector unsigned char)__b; +} + +static vector bool char __ATTRS_o_ai +vec_vand(vector bool char __a, vector bool char __b) +{ + return __a & __b; +} + +static vector short __ATTRS_o_ai +vec_vand(vector short __a, vector short __b) +{ + return __a & __b; +} + +static vector short __ATTRS_o_ai +vec_vand(vector bool short __a, vector short __b) +{ + return (vector short)__a & __b; +} + +static vector short __ATTRS_o_ai +vec_vand(vector short __a, vector bool short __b) +{ + return __a & (vector short)__b; +} + +static vector unsigned short __ATTRS_o_ai +vec_vand(vector unsigned short __a, vector unsigned short __b) +{ + return __a & __b; +} + +static vector unsigned short __ATTRS_o_ai +vec_vand(vector bool short __a, vector unsigned short __b) +{ + return (vector unsigned short)__a & __b; +} + +static vector unsigned short __ATTRS_o_ai +vec_vand(vector unsigned short __a, vector bool short __b) +{ + return __a & (vector unsigned short)__b; +} + +static vector bool short __ATTRS_o_ai +vec_vand(vector bool short __a, vector bool short __b) +{ + return __a & __b; +} + +static vector int __ATTRS_o_ai +vec_vand(vector int __a, vector int __b) +{ + return __a & __b; +} + +static vector int __ATTRS_o_ai +vec_vand(vector bool int __a, vector int __b) +{ + return (vector int)__a & __b; +} + +static vector int __ATTRS_o_ai +vec_vand(vector int __a, vector bool int __b) +{ + return __a & (vector int)__b; +} + +static vector unsigned int __ATTRS_o_ai +vec_vand(vector unsigned int __a, vector unsigned int __b) +{ + return __a & __b; +} + +static vector unsigned int __ATTRS_o_ai +vec_vand(vector bool int __a, vector unsigned int __b) +{ + return (vector unsigned int)__a & __b; +} + +static vector unsigned int __ATTRS_o_ai +vec_vand(vector unsigned int __a, vector bool int __b) +{ + return __a & (vector unsigned int)__b; +} + +static vector bool int __ATTRS_o_ai +vec_vand(vector bool int __a, vector bool int __b) +{ + return __a & __b; +} + +static vector float __ATTRS_o_ai +vec_vand(vector float __a, vector float __b) +{ + vector unsigned int __res = (vector unsigned int)__a & (vector unsigned int)__b; + return (vector float)__res; +} + +static vector float __ATTRS_o_ai +vec_vand(vector bool int __a, vector float __b) +{ + vector unsigned int __res = (vector unsigned int)__a & (vector unsigned int)__b; + return (vector float)__res; +} + +static vector float __ATTRS_o_ai +vec_vand(vector float __a, vector bool int __b) +{ + vector unsigned int __res = (vector unsigned int)__a & (vector unsigned int)__b; + return (vector float)__res; +} + +/* vec_andc */ + +#define __builtin_altivec_vandc vec_andc + +static vector signed char __ATTRS_o_ai +vec_andc(vector signed char __a, vector signed char __b) +{ + return __a & ~__b; +} + +static vector signed char __ATTRS_o_ai +vec_andc(vector bool char __a, vector signed char __b) +{ + return (vector signed char)__a & ~__b; +} + +static vector signed char __ATTRS_o_ai +vec_andc(vector signed char __a, vector bool char __b) +{ + return __a & ~(vector signed char)__b; +} + +static vector unsigned char __ATTRS_o_ai +vec_andc(vector unsigned char __a, vector unsigned char __b) +{ + return __a & ~__b; +} + +static vector unsigned char __ATTRS_o_ai +vec_andc(vector bool char __a, vector unsigned char __b) +{ + return (vector unsigned char)__a & ~__b; +} + +static vector unsigned char __ATTRS_o_ai +vec_andc(vector unsigned char __a, vector bool char __b) +{ + return __a & ~(vector unsigned char)__b; +} + +static vector bool char __ATTRS_o_ai +vec_andc(vector bool char __a, vector bool char __b) +{ + return __a & ~__b; +} + +static vector short __ATTRS_o_ai +vec_andc(vector short __a, vector short __b) +{ + return __a & ~__b; +} + +static vector short __ATTRS_o_ai +vec_andc(vector bool short __a, vector short __b) +{ + return (vector short)__a & ~__b; +} + +static vector short __ATTRS_o_ai +vec_andc(vector short __a, vector bool short __b) +{ + return __a & ~(vector short)__b; +} + +static vector unsigned short __ATTRS_o_ai +vec_andc(vector unsigned short __a, vector unsigned short __b) +{ + return __a & ~__b; +} + +static vector unsigned short __ATTRS_o_ai +vec_andc(vector bool short __a, vector unsigned short __b) +{ + return (vector unsigned short)__a & ~__b; +} + +static vector unsigned short __ATTRS_o_ai +vec_andc(vector unsigned short __a, vector bool short __b) +{ + return __a & ~(vector unsigned short)__b; +} + +static vector bool short __ATTRS_o_ai +vec_andc(vector bool short __a, vector bool short __b) +{ + return __a & ~__b; +} + +static vector int __ATTRS_o_ai +vec_andc(vector int __a, vector int __b) +{ + return __a & ~__b; +} + +static vector int __ATTRS_o_ai +vec_andc(vector bool int __a, vector int __b) +{ + return (vector int)__a & ~__b; +} + +static vector int __ATTRS_o_ai +vec_andc(vector int __a, vector bool int __b) +{ + return __a & ~(vector int)__b; +} + +static vector unsigned int __ATTRS_o_ai +vec_andc(vector unsigned int __a, vector unsigned int __b) +{ + return __a & ~__b; +} + +static vector unsigned int __ATTRS_o_ai +vec_andc(vector bool int __a, vector unsigned int __b) +{ + return (vector unsigned int)__a & ~__b; +} + +static vector unsigned int __ATTRS_o_ai +vec_andc(vector unsigned int __a, vector bool int __b) +{ + return __a & ~(vector unsigned int)__b; +} + +static vector bool int __ATTRS_o_ai +vec_andc(vector bool int __a, vector bool int __b) +{ + return __a & ~__b; +} + +static vector float __ATTRS_o_ai +vec_andc(vector float __a, vector float __b) +{ + vector unsigned int __res = (vector unsigned int)__a & ~(vector unsigned int)__b; + return (vector float)__res; +} + +static vector float __ATTRS_o_ai +vec_andc(vector bool int __a, vector float __b) +{ + vector unsigned int __res = (vector unsigned int)__a & ~(vector unsigned int)__b; + return (vector float)__res; +} + +static vector float __ATTRS_o_ai +vec_andc(vector float __a, vector bool int __b) +{ + vector unsigned int __res = (vector unsigned int)__a & ~(vector unsigned int)__b; + return (vector float)__res; +} + +/* vec_vandc */ + +static vector signed char __ATTRS_o_ai +vec_vandc(vector signed char __a, vector signed char __b) +{ + return __a & ~__b; +} + +static vector signed char __ATTRS_o_ai +vec_vandc(vector bool char __a, vector signed char __b) +{ + return (vector signed char)__a & ~__b; +} + +static vector signed char __ATTRS_o_ai +vec_vandc(vector signed char __a, vector bool char __b) +{ + return __a & ~(vector signed char)__b; +} + +static vector unsigned char __ATTRS_o_ai +vec_vandc(vector unsigned char __a, vector unsigned char __b) +{ + return __a & ~__b; +} + +static vector unsigned char __ATTRS_o_ai +vec_vandc(vector bool char __a, vector unsigned char __b) +{ + return (vector unsigned char)__a & ~__b; +} + +static vector unsigned char __ATTRS_o_ai +vec_vandc(vector unsigned char __a, vector bool char __b) +{ + return __a & ~(vector unsigned char)__b; +} + +static vector bool char __ATTRS_o_ai +vec_vandc(vector bool char __a, vector bool char __b) +{ + return __a & ~__b; +} + +static vector short __ATTRS_o_ai +vec_vandc(vector short __a, vector short __b) +{ + return __a & ~__b; +} + +static vector short __ATTRS_o_ai +vec_vandc(vector bool short __a, vector short __b) +{ + return (vector short)__a & ~__b; +} + +static vector short __ATTRS_o_ai +vec_vandc(vector short __a, vector bool short __b) +{ + return __a & ~(vector short)__b; +} + +static vector unsigned short __ATTRS_o_ai +vec_vandc(vector unsigned short __a, vector unsigned short __b) +{ + return __a & ~__b; +} + +static vector unsigned short __ATTRS_o_ai +vec_vandc(vector bool short __a, vector unsigned short __b) +{ + return (vector unsigned short)__a & ~__b; +} + +static vector unsigned short __ATTRS_o_ai +vec_vandc(vector unsigned short __a, vector bool short __b) +{ + return __a & ~(vector unsigned short)__b; +} + +static vector bool short __ATTRS_o_ai +vec_vandc(vector bool short __a, vector bool short __b) +{ + return __a & ~__b; +} + +static vector int __ATTRS_o_ai +vec_vandc(vector int __a, vector int __b) +{ + return __a & ~__b; +} + +static vector int __ATTRS_o_ai +vec_vandc(vector bool int __a, vector int __b) +{ + return (vector int)__a & ~__b; +} + +static vector int __ATTRS_o_ai +vec_vandc(vector int __a, vector bool int __b) +{ + return __a & ~(vector int)__b; +} + +static vector unsigned int __ATTRS_o_ai +vec_vandc(vector unsigned int __a, vector unsigned int __b) +{ + return __a & ~__b; +} + +static vector unsigned int __ATTRS_o_ai +vec_vandc(vector bool int __a, vector unsigned int __b) +{ + return (vector unsigned int)__a & ~__b; +} + +static vector unsigned int __ATTRS_o_ai +vec_vandc(vector unsigned int __a, vector bool int __b) +{ + return __a & ~(vector unsigned int)__b; +} + +static vector bool int __ATTRS_o_ai +vec_vandc(vector bool int __a, vector bool int __b) +{ + return __a & ~__b; +} + +static vector float __ATTRS_o_ai +vec_vandc(vector float __a, vector float __b) +{ + vector unsigned int __res = (vector unsigned int)__a & ~(vector unsigned int)__b; + return (vector float)__res; +} + +static vector float __ATTRS_o_ai +vec_vandc(vector bool int __a, vector float __b) +{ + vector unsigned int __res = (vector unsigned int)__a & ~(vector unsigned int)__b; + return (vector float)__res; +} + +static vector float __ATTRS_o_ai +vec_vandc(vector float __a, vector bool int __b) +{ + vector unsigned int __res = (vector unsigned int)__a & ~(vector unsigned int)__b; + return (vector float)__res; +} + +/* vec_avg */ + +static vector signed char __ATTRS_o_ai +vec_avg(vector signed char __a, vector signed char __b) +{ + return __builtin_altivec_vavgsb(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_avg(vector unsigned char __a, vector unsigned char __b) +{ + return __builtin_altivec_vavgub(__a, __b); +} + +static vector short __ATTRS_o_ai +vec_avg(vector short __a, vector short __b) +{ + return __builtin_altivec_vavgsh(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_avg(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vavguh(__a, __b); +} + +static vector int __ATTRS_o_ai +vec_avg(vector int __a, vector int __b) +{ + return __builtin_altivec_vavgsw(__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_avg(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vavguw(__a, __b); +} + +/* vec_vavgsb */ + +static vector signed char __attribute__((__always_inline__)) +vec_vavgsb(vector signed char __a, vector signed char __b) +{ + return __builtin_altivec_vavgsb(__a, __b); +} + +/* vec_vavgub */ + +static vector unsigned char __attribute__((__always_inline__)) +vec_vavgub(vector unsigned char __a, vector unsigned char __b) +{ + return __builtin_altivec_vavgub(__a, __b); +} + +/* vec_vavgsh */ + +static vector short __attribute__((__always_inline__)) +vec_vavgsh(vector short __a, vector short __b) +{ + return __builtin_altivec_vavgsh(__a, __b); +} + +/* vec_vavguh */ + +static vector unsigned short __attribute__((__always_inline__)) +vec_vavguh(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vavguh(__a, __b); +} + +/* vec_vavgsw */ + +static vector int __attribute__((__always_inline__)) +vec_vavgsw(vector int __a, vector int __b) +{ + return __builtin_altivec_vavgsw(__a, __b); +} + +/* vec_vavguw */ + +static vector unsigned int __attribute__((__always_inline__)) +vec_vavguw(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vavguw(__a, __b); +} + +/* vec_ceil */ + +static vector float __attribute__((__always_inline__)) +vec_ceil(vector float __a) +{ + return __builtin_altivec_vrfip(__a); +} + +/* vec_vrfip */ + +static vector float __attribute__((__always_inline__)) +vec_vrfip(vector float __a) +{ + return __builtin_altivec_vrfip(__a); +} + +/* vec_cmpb */ + +static vector int __attribute__((__always_inline__)) +vec_cmpb(vector float __a, vector float __b) +{ + return __builtin_altivec_vcmpbfp(__a, __b); +} + +/* vec_vcmpbfp */ + +static vector int __attribute__((__always_inline__)) +vec_vcmpbfp(vector float __a, vector float __b) +{ + return __builtin_altivec_vcmpbfp(__a, __b); +} + +/* vec_cmpeq */ + +static vector bool char __ATTRS_o_ai +vec_cmpeq(vector signed char __a, vector signed char __b) +{ + return (vector bool char) + __builtin_altivec_vcmpequb((vector char)__a, (vector char)__b); +} + +static vector bool char __ATTRS_o_ai +vec_cmpeq(vector unsigned char __a, vector unsigned char __b) +{ + return (vector bool char) + __builtin_altivec_vcmpequb((vector char)__a, (vector char)__b); +} + +static vector bool short __ATTRS_o_ai +vec_cmpeq(vector short __a, vector short __b) +{ + return (vector bool short)__builtin_altivec_vcmpequh(__a, __b); +} + +static vector bool short __ATTRS_o_ai +vec_cmpeq(vector unsigned short __a, vector unsigned short __b) +{ + return (vector bool short) + __builtin_altivec_vcmpequh((vector short)__a, (vector short)__b); +} + +static vector bool int __ATTRS_o_ai +vec_cmpeq(vector int __a, vector int __b) +{ + return (vector bool int)__builtin_altivec_vcmpequw(__a, __b); +} + +static vector bool int __ATTRS_o_ai +vec_cmpeq(vector unsigned int __a, vector unsigned int __b) +{ + return (vector bool int) + __builtin_altivec_vcmpequw((vector int)__a, (vector int)__b); +} + +static vector bool int __ATTRS_o_ai +vec_cmpeq(vector float __a, vector float __b) +{ + return (vector bool int)__builtin_altivec_vcmpeqfp(__a, __b); +} + +/* vec_cmpge */ + +static vector bool int __attribute__((__always_inline__)) +vec_cmpge(vector float __a, vector float __b) +{ + return (vector bool int)__builtin_altivec_vcmpgefp(__a, __b); +} + +/* vec_vcmpgefp */ + +static vector bool int __attribute__((__always_inline__)) +vec_vcmpgefp(vector float __a, vector float __b) +{ + return (vector bool int)__builtin_altivec_vcmpgefp(__a, __b); +} + +/* vec_cmpgt */ + +static vector bool char __ATTRS_o_ai +vec_cmpgt(vector signed char __a, vector signed char __b) +{ + return (vector bool char)__builtin_altivec_vcmpgtsb(__a, __b); +} + +static vector bool char __ATTRS_o_ai +vec_cmpgt(vector unsigned char __a, vector unsigned char __b) +{ + return (vector bool char)__builtin_altivec_vcmpgtub(__a, __b); +} + +static vector bool short __ATTRS_o_ai +vec_cmpgt(vector short __a, vector short __b) +{ + return (vector bool short)__builtin_altivec_vcmpgtsh(__a, __b); +} + +static vector bool short __ATTRS_o_ai +vec_cmpgt(vector unsigned short __a, vector unsigned short __b) +{ + return (vector bool short)__builtin_altivec_vcmpgtuh(__a, __b); +} + +static vector bool int __ATTRS_o_ai +vec_cmpgt(vector int __a, vector int __b) +{ + return (vector bool int)__builtin_altivec_vcmpgtsw(__a, __b); +} + +static vector bool int __ATTRS_o_ai +vec_cmpgt(vector unsigned int __a, vector unsigned int __b) +{ + return (vector bool int)__builtin_altivec_vcmpgtuw(__a, __b); +} + +static vector bool int __ATTRS_o_ai +vec_cmpgt(vector float __a, vector float __b) +{ + return (vector bool int)__builtin_altivec_vcmpgtfp(__a, __b); +} + +/* vec_vcmpgtsb */ + +static vector bool char __attribute__((__always_inline__)) +vec_vcmpgtsb(vector signed char __a, vector signed char __b) +{ + return (vector bool char)__builtin_altivec_vcmpgtsb(__a, __b); +} + +/* vec_vcmpgtub */ + +static vector bool char __attribute__((__always_inline__)) +vec_vcmpgtub(vector unsigned char __a, vector unsigned char __b) +{ + return (vector bool char)__builtin_altivec_vcmpgtub(__a, __b); +} + +/* vec_vcmpgtsh */ + +static vector bool short __attribute__((__always_inline__)) +vec_vcmpgtsh(vector short __a, vector short __b) +{ + return (vector bool short)__builtin_altivec_vcmpgtsh(__a, __b); +} + +/* vec_vcmpgtuh */ + +static vector bool short __attribute__((__always_inline__)) +vec_vcmpgtuh(vector unsigned short __a, vector unsigned short __b) +{ + return (vector bool short)__builtin_altivec_vcmpgtuh(__a, __b); +} + +/* vec_vcmpgtsw */ + +static vector bool int __attribute__((__always_inline__)) +vec_vcmpgtsw(vector int __a, vector int __b) +{ + return (vector bool int)__builtin_altivec_vcmpgtsw(__a, __b); +} + +/* vec_vcmpgtuw */ + +static vector bool int __attribute__((__always_inline__)) +vec_vcmpgtuw(vector unsigned int __a, vector unsigned int __b) +{ + return (vector bool int)__builtin_altivec_vcmpgtuw(__a, __b); +} + +/* vec_vcmpgtfp */ + +static vector bool int __attribute__((__always_inline__)) +vec_vcmpgtfp(vector float __a, vector float __b) +{ + return (vector bool int)__builtin_altivec_vcmpgtfp(__a, __b); +} + +/* vec_cmple */ + +static vector bool int __attribute__((__always_inline__)) +vec_cmple(vector float __a, vector float __b) +{ + return (vector bool int)__builtin_altivec_vcmpgefp(__b, __a); +} + +/* vec_cmplt */ + +static vector bool char __ATTRS_o_ai +vec_cmplt(vector signed char __a, vector signed char __b) +{ + return (vector bool char)__builtin_altivec_vcmpgtsb(__b, __a); +} + +static vector bool char __ATTRS_o_ai +vec_cmplt(vector unsigned char __a, vector unsigned char __b) +{ + return (vector bool char)__builtin_altivec_vcmpgtub(__b, __a); +} + +static vector bool short __ATTRS_o_ai +vec_cmplt(vector short __a, vector short __b) +{ + return (vector bool short)__builtin_altivec_vcmpgtsh(__b, __a); +} + +static vector bool short __ATTRS_o_ai +vec_cmplt(vector unsigned short __a, vector unsigned short __b) +{ + return (vector bool short)__builtin_altivec_vcmpgtuh(__b, __a); +} + +static vector bool int __ATTRS_o_ai +vec_cmplt(vector int __a, vector int __b) +{ + return (vector bool int)__builtin_altivec_vcmpgtsw(__b, __a); +} + +static vector bool int __ATTRS_o_ai +vec_cmplt(vector unsigned int __a, vector unsigned int __b) +{ + return (vector bool int)__builtin_altivec_vcmpgtuw(__b, __a); +} + +static vector bool int __ATTRS_o_ai +vec_cmplt(vector float __a, vector float __b) +{ + return (vector bool int)__builtin_altivec_vcmpgtfp(__b, __a); +} + +/* vec_ctf */ + +static vector float __ATTRS_o_ai +vec_ctf(vector int __a, int __b) +{ + return __builtin_altivec_vcfsx(__a, __b); +} + +static vector float __ATTRS_o_ai +vec_ctf(vector unsigned int __a, int __b) +{ + return __builtin_altivec_vcfux((vector int)__a, __b); +} + +/* vec_vcfsx */ + +static vector float __attribute__((__always_inline__)) +vec_vcfsx(vector int __a, int __b) +{ + return __builtin_altivec_vcfsx(__a, __b); +} + +/* vec_vcfux */ + +static vector float __attribute__((__always_inline__)) +vec_vcfux(vector unsigned int __a, int __b) +{ + return __builtin_altivec_vcfux((vector int)__a, __b); +} + +/* vec_cts */ + +static vector int __attribute__((__always_inline__)) +vec_cts(vector float __a, int __b) +{ + return __builtin_altivec_vctsxs(__a, __b); +} + +/* vec_vctsxs */ + +static vector int __attribute__((__always_inline__)) +vec_vctsxs(vector float __a, int __b) +{ + return __builtin_altivec_vctsxs(__a, __b); +} + +/* vec_ctu */ + +static vector unsigned int __attribute__((__always_inline__)) +vec_ctu(vector float __a, int __b) +{ + return __builtin_altivec_vctuxs(__a, __b); +} + +/* vec_vctuxs */ + +static vector unsigned int __attribute__((__always_inline__)) +vec_vctuxs(vector float __a, int __b) +{ + return __builtin_altivec_vctuxs(__a, __b); +} + +/* vec_dss */ + +static void __attribute__((__always_inline__)) +vec_dss(int __a) +{ + __builtin_altivec_dss(__a); +} + +/* vec_dssall */ + +static void __attribute__((__always_inline__)) +vec_dssall(void) +{ + __builtin_altivec_dssall(); +} + +/* vec_dst */ + +static void __attribute__((__always_inline__)) +vec_dst(const void *__a, int __b, int __c) +{ + __builtin_altivec_dst(__a, __b, __c); +} + +/* vec_dstst */ + +static void __attribute__((__always_inline__)) +vec_dstst(const void *__a, int __b, int __c) +{ + __builtin_altivec_dstst(__a, __b, __c); +} + +/* vec_dststt */ + +static void __attribute__((__always_inline__)) +vec_dststt(const void *__a, int __b, int __c) +{ + __builtin_altivec_dststt(__a, __b, __c); +} + +/* vec_dstt */ + +static void __attribute__((__always_inline__)) +vec_dstt(const void *__a, int __b, int __c) +{ + __builtin_altivec_dstt(__a, __b, __c); +} + +/* vec_expte */ + +static vector float __attribute__((__always_inline__)) +vec_expte(vector float __a) +{ + return __builtin_altivec_vexptefp(__a); +} + +/* vec_vexptefp */ + +static vector float __attribute__((__always_inline__)) +vec_vexptefp(vector float __a) +{ + return __builtin_altivec_vexptefp(__a); +} + +/* vec_floor */ + +static vector float __attribute__((__always_inline__)) +vec_floor(vector float __a) +{ + return __builtin_altivec_vrfim(__a); +} + +/* vec_vrfim */ + +static vector float __attribute__((__always_inline__)) +vec_vrfim(vector float __a) +{ + return __builtin_altivec_vrfim(__a); +} + +/* vec_ld */ + +static vector signed char __ATTRS_o_ai +vec_ld(int __a, const vector signed char *__b) +{ + return (vector signed char)__builtin_altivec_lvx(__a, __b); +} + +static vector signed char __ATTRS_o_ai +vec_ld(int __a, const signed char *__b) +{ + return (vector signed char)__builtin_altivec_lvx(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_ld(int __a, const vector unsigned char *__b) +{ + return (vector unsigned char)__builtin_altivec_lvx(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_ld(int __a, const unsigned char *__b) +{ + return (vector unsigned char)__builtin_altivec_lvx(__a, __b); +} + +static vector bool char __ATTRS_o_ai +vec_ld(int __a, const vector bool char *__b) +{ + return (vector bool char)__builtin_altivec_lvx(__a, __b); +} + +static vector short __ATTRS_o_ai +vec_ld(int __a, const vector short *__b) +{ + return (vector short)__builtin_altivec_lvx(__a, __b); +} + +static vector short __ATTRS_o_ai +vec_ld(int __a, const short *__b) +{ + return (vector short)__builtin_altivec_lvx(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_ld(int __a, const vector unsigned short *__b) +{ + return (vector unsigned short)__builtin_altivec_lvx(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_ld(int __a, const unsigned short *__b) +{ + return (vector unsigned short)__builtin_altivec_lvx(__a, __b); +} + +static vector bool short __ATTRS_o_ai +vec_ld(int __a, const vector bool short *__b) +{ + return (vector bool short)__builtin_altivec_lvx(__a, __b); +} + +static vector pixel __ATTRS_o_ai +vec_ld(int __a, const vector pixel *__b) +{ + return (vector pixel)__builtin_altivec_lvx(__a, __b); +} + +static vector int __ATTRS_o_ai +vec_ld(int __a, const vector int *__b) +{ + return (vector int)__builtin_altivec_lvx(__a, __b); +} + +static vector int __ATTRS_o_ai +vec_ld(int __a, const int *__b) +{ + return (vector int)__builtin_altivec_lvx(__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_ld(int __a, const vector unsigned int *__b) +{ + return (vector unsigned int)__builtin_altivec_lvx(__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_ld(int __a, const unsigned int *__b) +{ + return (vector unsigned int)__builtin_altivec_lvx(__a, __b); +} + +static vector bool int __ATTRS_o_ai +vec_ld(int __a, const vector bool int *__b) +{ + return (vector bool int)__builtin_altivec_lvx(__a, __b); +} + +static vector float __ATTRS_o_ai +vec_ld(int __a, const vector float *__b) +{ + return (vector float)__builtin_altivec_lvx(__a, __b); +} + +static vector float __ATTRS_o_ai +vec_ld(int __a, const float *__b) +{ + return (vector float)__builtin_altivec_lvx(__a, __b); +} + +/* vec_lvx */ + +static vector signed char __ATTRS_o_ai +vec_lvx(int __a, const vector signed char *__b) +{ + return (vector signed char)__builtin_altivec_lvx(__a, __b); +} + +static vector signed char __ATTRS_o_ai +vec_lvx(int __a, const signed char *__b) +{ + return (vector signed char)__builtin_altivec_lvx(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_lvx(int __a, const vector unsigned char *__b) +{ + return (vector unsigned char)__builtin_altivec_lvx(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_lvx(int __a, const unsigned char *__b) +{ + return (vector unsigned char)__builtin_altivec_lvx(__a, __b); +} + +static vector bool char __ATTRS_o_ai +vec_lvx(int __a, const vector bool char *__b) +{ + return (vector bool char)__builtin_altivec_lvx(__a, __b); +} + +static vector short __ATTRS_o_ai +vec_lvx(int __a, const vector short *__b) +{ + return (vector short)__builtin_altivec_lvx(__a, __b); +} + +static vector short __ATTRS_o_ai +vec_lvx(int __a, const short *__b) +{ + return (vector short)__builtin_altivec_lvx(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_lvx(int __a, const vector unsigned short *__b) +{ + return (vector unsigned short)__builtin_altivec_lvx(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_lvx(int __a, const unsigned short *__b) +{ + return (vector unsigned short)__builtin_altivec_lvx(__a, __b); +} + +static vector bool short __ATTRS_o_ai +vec_lvx(int __a, const vector bool short *__b) +{ + return (vector bool short)__builtin_altivec_lvx(__a, __b); +} + +static vector pixel __ATTRS_o_ai +vec_lvx(int __a, const vector pixel *__b) +{ + return (vector pixel)__builtin_altivec_lvx(__a, __b); +} + +static vector int __ATTRS_o_ai +vec_lvx(int __a, const vector int *__b) +{ + return (vector int)__builtin_altivec_lvx(__a, __b); +} + +static vector int __ATTRS_o_ai +vec_lvx(int __a, const int *__b) +{ + return (vector int)__builtin_altivec_lvx(__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_lvx(int __a, const vector unsigned int *__b) +{ + return (vector unsigned int)__builtin_altivec_lvx(__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_lvx(int __a, const unsigned int *__b) +{ + return (vector unsigned int)__builtin_altivec_lvx(__a, __b); +} + +static vector bool int __ATTRS_o_ai +vec_lvx(int __a, const vector bool int *__b) +{ + return (vector bool int)__builtin_altivec_lvx(__a, __b); +} + +static vector float __ATTRS_o_ai +vec_lvx(int __a, const vector float *__b) +{ + return (vector float)__builtin_altivec_lvx(__a, __b); +} + +static vector float __ATTRS_o_ai +vec_lvx(int __a, const float *__b) +{ + return (vector float)__builtin_altivec_lvx(__a, __b); +} + +/* vec_lde */ + +static vector signed char __ATTRS_o_ai +vec_lde(int __a, const signed char *__b) +{ + return (vector signed char)__builtin_altivec_lvebx(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_lde(int __a, const unsigned char *__b) +{ + return (vector unsigned char)__builtin_altivec_lvebx(__a, __b); +} + +static vector short __ATTRS_o_ai +vec_lde(int __a, const short *__b) +{ + return (vector short)__builtin_altivec_lvehx(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_lde(int __a, const unsigned short *__b) +{ + return (vector unsigned short)__builtin_altivec_lvehx(__a, __b); +} + +static vector int __ATTRS_o_ai +vec_lde(int __a, const int *__b) +{ + return (vector int)__builtin_altivec_lvewx(__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_lde(int __a, const unsigned int *__b) +{ + return (vector unsigned int)__builtin_altivec_lvewx(__a, __b); +} + +static vector float __ATTRS_o_ai +vec_lde(int __a, const float *__b) +{ + return (vector float)__builtin_altivec_lvewx(__a, __b); +} + +/* vec_lvebx */ + +static vector signed char __ATTRS_o_ai +vec_lvebx(int __a, const signed char *__b) +{ + return (vector signed char)__builtin_altivec_lvebx(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_lvebx(int __a, const unsigned char *__b) +{ + return (vector unsigned char)__builtin_altivec_lvebx(__a, __b); +} + +/* vec_lvehx */ + +static vector short __ATTRS_o_ai +vec_lvehx(int __a, const short *__b) +{ + return (vector short)__builtin_altivec_lvehx(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_lvehx(int __a, const unsigned short *__b) +{ + return (vector unsigned short)__builtin_altivec_lvehx(__a, __b); +} + +/* vec_lvewx */ + +static vector int __ATTRS_o_ai +vec_lvewx(int __a, const int *__b) +{ + return (vector int)__builtin_altivec_lvewx(__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_lvewx(int __a, const unsigned int *__b) +{ + return (vector unsigned int)__builtin_altivec_lvewx(__a, __b); +} + +static vector float __ATTRS_o_ai +vec_lvewx(int __a, const float *__b) +{ + return (vector float)__builtin_altivec_lvewx(__a, __b); +} + +/* vec_ldl */ + +static vector signed char __ATTRS_o_ai +vec_ldl(int __a, const vector signed char *__b) +{ + return (vector signed char)__builtin_altivec_lvxl(__a, __b); +} + +static vector signed char __ATTRS_o_ai +vec_ldl(int __a, const signed char *__b) +{ + return (vector signed char)__builtin_altivec_lvxl(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_ldl(int __a, const vector unsigned char *__b) +{ + return (vector unsigned char)__builtin_altivec_lvxl(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_ldl(int __a, const unsigned char *__b) +{ + return (vector unsigned char)__builtin_altivec_lvxl(__a, __b); +} + +static vector bool char __ATTRS_o_ai +vec_ldl(int __a, const vector bool char *__b) +{ + return (vector bool char)__builtin_altivec_lvxl(__a, __b); +} + +static vector short __ATTRS_o_ai +vec_ldl(int __a, const vector short *__b) +{ + return (vector short)__builtin_altivec_lvxl(__a, __b); +} + +static vector short __ATTRS_o_ai +vec_ldl(int __a, const short *__b) +{ + return (vector short)__builtin_altivec_lvxl(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_ldl(int __a, const vector unsigned short *__b) +{ + return (vector unsigned short)__builtin_altivec_lvxl(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_ldl(int __a, const unsigned short *__b) +{ + return (vector unsigned short)__builtin_altivec_lvxl(__a, __b); +} + +static vector bool short __ATTRS_o_ai +vec_ldl(int __a, const vector bool short *__b) +{ + return (vector bool short)__builtin_altivec_lvxl(__a, __b); +} + +static vector pixel __ATTRS_o_ai +vec_ldl(int __a, const vector pixel *__b) +{ + return (vector pixel short)__builtin_altivec_lvxl(__a, __b); +} + +static vector int __ATTRS_o_ai +vec_ldl(int __a, const vector int *__b) +{ + return (vector int)__builtin_altivec_lvxl(__a, __b); +} + +static vector int __ATTRS_o_ai +vec_ldl(int __a, const int *__b) +{ + return (vector int)__builtin_altivec_lvxl(__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_ldl(int __a, const vector unsigned int *__b) +{ + return (vector unsigned int)__builtin_altivec_lvxl(__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_ldl(int __a, const unsigned int *__b) +{ + return (vector unsigned int)__builtin_altivec_lvxl(__a, __b); +} + +static vector bool int __ATTRS_o_ai +vec_ldl(int __a, const vector bool int *__b) +{ + return (vector bool int)__builtin_altivec_lvxl(__a, __b); +} + +static vector float __ATTRS_o_ai +vec_ldl(int __a, const vector float *__b) +{ + return (vector float)__builtin_altivec_lvxl(__a, __b); +} + +static vector float __ATTRS_o_ai +vec_ldl(int __a, const float *__b) +{ + return (vector float)__builtin_altivec_lvxl(__a, __b); +} + +/* vec_lvxl */ + +static vector signed char __ATTRS_o_ai +vec_lvxl(int __a, const vector signed char *__b) +{ + return (vector signed char)__builtin_altivec_lvxl(__a, __b); +} + +static vector signed char __ATTRS_o_ai +vec_lvxl(int __a, const signed char *__b) +{ + return (vector signed char)__builtin_altivec_lvxl(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_lvxl(int __a, const vector unsigned char *__b) +{ + return (vector unsigned char)__builtin_altivec_lvxl(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_lvxl(int __a, const unsigned char *__b) +{ + return (vector unsigned char)__builtin_altivec_lvxl(__a, __b); +} + +static vector bool char __ATTRS_o_ai +vec_lvxl(int __a, const vector bool char *__b) +{ + return (vector bool char)__builtin_altivec_lvxl(__a, __b); +} + +static vector short __ATTRS_o_ai +vec_lvxl(int __a, const vector short *__b) +{ + return (vector short)__builtin_altivec_lvxl(__a, __b); +} + +static vector short __ATTRS_o_ai +vec_lvxl(int __a, const short *__b) +{ + return (vector short)__builtin_altivec_lvxl(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_lvxl(int __a, const vector unsigned short *__b) +{ + return (vector unsigned short)__builtin_altivec_lvxl(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_lvxl(int __a, const unsigned short *__b) +{ + return (vector unsigned short)__builtin_altivec_lvxl(__a, __b); +} + +static vector bool short __ATTRS_o_ai +vec_lvxl(int __a, const vector bool short *__b) +{ + return (vector bool short)__builtin_altivec_lvxl(__a, __b); +} + +static vector pixel __ATTRS_o_ai +vec_lvxl(int __a, const vector pixel *__b) +{ + return (vector pixel)__builtin_altivec_lvxl(__a, __b); +} + +static vector int __ATTRS_o_ai +vec_lvxl(int __a, const vector int *__b) +{ + return (vector int)__builtin_altivec_lvxl(__a, __b); +} + +static vector int __ATTRS_o_ai +vec_lvxl(int __a, const int *__b) +{ + return (vector int)__builtin_altivec_lvxl(__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_lvxl(int __a, const vector unsigned int *__b) +{ + return (vector unsigned int)__builtin_altivec_lvxl(__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_lvxl(int __a, const unsigned int *__b) +{ + return (vector unsigned int)__builtin_altivec_lvxl(__a, __b); +} + +static vector bool int __ATTRS_o_ai +vec_lvxl(int __a, const vector bool int *__b) +{ + return (vector bool int)__builtin_altivec_lvxl(__a, __b); +} + +static vector float __ATTRS_o_ai +vec_lvxl(int __a, const vector float *__b) +{ + return (vector float)__builtin_altivec_lvxl(__a, __b); +} + +static vector float __ATTRS_o_ai +vec_lvxl(int __a, const float *__b) +{ + return (vector float)__builtin_altivec_lvxl(__a, __b); +} + +/* vec_loge */ + +static vector float __attribute__((__always_inline__)) +vec_loge(vector float __a) +{ + return __builtin_altivec_vlogefp(__a); +} + +/* vec_vlogefp */ + +static vector float __attribute__((__always_inline__)) +vec_vlogefp(vector float __a) +{ + return __builtin_altivec_vlogefp(__a); +} + +/* vec_lvsl */ + +static vector unsigned char __ATTRS_o_ai +vec_lvsl(int __a, const signed char *__b) +{ + return (vector unsigned char)__builtin_altivec_lvsl(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_lvsl(int __a, const unsigned char *__b) +{ + return (vector unsigned char)__builtin_altivec_lvsl(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_lvsl(int __a, const short *__b) +{ + return (vector unsigned char)__builtin_altivec_lvsl(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_lvsl(int __a, const unsigned short *__b) +{ + return (vector unsigned char)__builtin_altivec_lvsl(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_lvsl(int __a, const int *__b) +{ + return (vector unsigned char)__builtin_altivec_lvsl(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_lvsl(int __a, const unsigned int *__b) +{ + return (vector unsigned char)__builtin_altivec_lvsl(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_lvsl(int __a, const float *__b) +{ + return (vector unsigned char)__builtin_altivec_lvsl(__a, __b); +} + +/* vec_lvsr */ + +static vector unsigned char __ATTRS_o_ai +vec_lvsr(int __a, const signed char *__b) +{ + return (vector unsigned char)__builtin_altivec_lvsr(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_lvsr(int __a, const unsigned char *__b) +{ + return (vector unsigned char)__builtin_altivec_lvsr(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_lvsr(int __a, const short *__b) +{ + return (vector unsigned char)__builtin_altivec_lvsr(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_lvsr(int __a, const unsigned short *__b) +{ + return (vector unsigned char)__builtin_altivec_lvsr(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_lvsr(int __a, const int *__b) +{ + return (vector unsigned char)__builtin_altivec_lvsr(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_lvsr(int __a, const unsigned int *__b) +{ + return (vector unsigned char)__builtin_altivec_lvsr(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_lvsr(int __a, const float *__b) +{ + return (vector unsigned char)__builtin_altivec_lvsr(__a, __b); +} + +/* vec_madd */ + +static vector float __attribute__((__always_inline__)) +vec_madd(vector float __a, vector float __b, vector float __c) +{ + return __builtin_altivec_vmaddfp(__a, __b, __c); +} + +/* vec_vmaddfp */ + +static vector float __attribute__((__always_inline__)) +vec_vmaddfp(vector float __a, vector float __b, vector float __c) +{ + return __builtin_altivec_vmaddfp(__a, __b, __c); +} + +/* vec_madds */ + +static vector signed short __attribute__((__always_inline__)) +vec_madds(vector signed short __a, vector signed short __b, vector signed short __c) +{ + return __builtin_altivec_vmhaddshs(__a, __b, __c); +} + +/* vec_vmhaddshs */ +static vector signed short __attribute__((__always_inline__)) +vec_vmhaddshs(vector signed short __a, + vector signed short __b, + vector signed short __c) +{ + return __builtin_altivec_vmhaddshs(__a, __b, __c); +} + +/* vec_max */ + +static vector signed char __ATTRS_o_ai +vec_max(vector signed char __a, vector signed char __b) +{ + return __builtin_altivec_vmaxsb(__a, __b); +} + +static vector signed char __ATTRS_o_ai +vec_max(vector bool char __a, vector signed char __b) +{ + return __builtin_altivec_vmaxsb((vector signed char)__a, __b); +} + +static vector signed char __ATTRS_o_ai +vec_max(vector signed char __a, vector bool char __b) +{ + return __builtin_altivec_vmaxsb(__a, (vector signed char)__b); +} + +static vector unsigned char __ATTRS_o_ai +vec_max(vector unsigned char __a, vector unsigned char __b) +{ + return __builtin_altivec_vmaxub(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_max(vector bool char __a, vector unsigned char __b) +{ + return __builtin_altivec_vmaxub((vector unsigned char)__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_max(vector unsigned char __a, vector bool char __b) +{ + return __builtin_altivec_vmaxub(__a, (vector unsigned char)__b); +} + +static vector short __ATTRS_o_ai +vec_max(vector short __a, vector short __b) +{ + return __builtin_altivec_vmaxsh(__a, __b); +} + +static vector short __ATTRS_o_ai +vec_max(vector bool short __a, vector short __b) +{ + return __builtin_altivec_vmaxsh((vector short)__a, __b); +} + +static vector short __ATTRS_o_ai +vec_max(vector short __a, vector bool short __b) +{ + return __builtin_altivec_vmaxsh(__a, (vector short)__b); +} + +static vector unsigned short __ATTRS_o_ai +vec_max(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vmaxuh(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_max(vector bool short __a, vector unsigned short __b) +{ + return __builtin_altivec_vmaxuh((vector unsigned short)__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_max(vector unsigned short __a, vector bool short __b) +{ + return __builtin_altivec_vmaxuh(__a, (vector unsigned short)__b); +} + +static vector int __ATTRS_o_ai +vec_max(vector int __a, vector int __b) +{ + return __builtin_altivec_vmaxsw(__a, __b); +} + +static vector int __ATTRS_o_ai +vec_max(vector bool int __a, vector int __b) +{ + return __builtin_altivec_vmaxsw((vector int)__a, __b); +} + +static vector int __ATTRS_o_ai +vec_max(vector int __a, vector bool int __b) +{ + return __builtin_altivec_vmaxsw(__a, (vector int)__b); +} + +static vector unsigned int __ATTRS_o_ai +vec_max(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vmaxuw(__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_max(vector bool int __a, vector unsigned int __b) +{ + return __builtin_altivec_vmaxuw((vector unsigned int)__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_max(vector unsigned int __a, vector bool int __b) +{ + return __builtin_altivec_vmaxuw(__a, (vector unsigned int)__b); +} + +static vector float __ATTRS_o_ai +vec_max(vector float __a, vector float __b) +{ + return __builtin_altivec_vmaxfp(__a, __b); +} + +/* vec_vmaxsb */ + +static vector signed char __ATTRS_o_ai +vec_vmaxsb(vector signed char __a, vector signed char __b) +{ + return __builtin_altivec_vmaxsb(__a, __b); +} + +static vector signed char __ATTRS_o_ai +vec_vmaxsb(vector bool char __a, vector signed char __b) +{ + return __builtin_altivec_vmaxsb((vector signed char)__a, __b); +} + +static vector signed char __ATTRS_o_ai +vec_vmaxsb(vector signed char __a, vector bool char __b) +{ + return __builtin_altivec_vmaxsb(__a, (vector signed char)__b); +} + +/* vec_vmaxub */ + +static vector unsigned char __ATTRS_o_ai +vec_vmaxub(vector unsigned char __a, vector unsigned char __b) +{ + return __builtin_altivec_vmaxub(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_vmaxub(vector bool char __a, vector unsigned char __b) +{ + return __builtin_altivec_vmaxub((vector unsigned char)__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_vmaxub(vector unsigned char __a, vector bool char __b) +{ + return __builtin_altivec_vmaxub(__a, (vector unsigned char)__b); +} + +/* vec_vmaxsh */ + +static vector short __ATTRS_o_ai +vec_vmaxsh(vector short __a, vector short __b) +{ + return __builtin_altivec_vmaxsh(__a, __b); +} + +static vector short __ATTRS_o_ai +vec_vmaxsh(vector bool short __a, vector short __b) +{ + return __builtin_altivec_vmaxsh((vector short)__a, __b); +} + +static vector short __ATTRS_o_ai +vec_vmaxsh(vector short __a, vector bool short __b) +{ + return __builtin_altivec_vmaxsh(__a, (vector short)__b); +} + +/* vec_vmaxuh */ + +static vector unsigned short __ATTRS_o_ai +vec_vmaxuh(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vmaxuh(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_vmaxuh(vector bool short __a, vector unsigned short __b) +{ + return __builtin_altivec_vmaxuh((vector unsigned short)__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_vmaxuh(vector unsigned short __a, vector bool short __b) +{ + return __builtin_altivec_vmaxuh(__a, (vector unsigned short)__b); +} + +/* vec_vmaxsw */ + +static vector int __ATTRS_o_ai +vec_vmaxsw(vector int __a, vector int __b) +{ + return __builtin_altivec_vmaxsw(__a, __b); +} + +static vector int __ATTRS_o_ai +vec_vmaxsw(vector bool int __a, vector int __b) +{ + return __builtin_altivec_vmaxsw((vector int)__a, __b); +} + +static vector int __ATTRS_o_ai +vec_vmaxsw(vector int __a, vector bool int __b) +{ + return __builtin_altivec_vmaxsw(__a, (vector int)__b); +} + +/* vec_vmaxuw */ + +static vector unsigned int __ATTRS_o_ai +vec_vmaxuw(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vmaxuw(__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_vmaxuw(vector bool int __a, vector unsigned int __b) +{ + return __builtin_altivec_vmaxuw((vector unsigned int)__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_vmaxuw(vector unsigned int __a, vector bool int __b) +{ + return __builtin_altivec_vmaxuw(__a, (vector unsigned int)__b); +} + +/* vec_vmaxfp */ + +static vector float __attribute__((__always_inline__)) +vec_vmaxfp(vector float __a, vector float __b) +{ + return __builtin_altivec_vmaxfp(__a, __b); +} + +/* vec_mergeh */ + +static vector signed char __ATTRS_o_ai +vec_mergeh(vector signed char __a, vector signed char __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13, + 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17)); +} + +static vector unsigned char __ATTRS_o_ai +vec_mergeh(vector unsigned char __a, vector unsigned char __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13, + 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17)); +} + +static vector bool char __ATTRS_o_ai +vec_mergeh(vector bool char __a, vector bool char __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13, + 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17)); +} + +static vector short __ATTRS_o_ai +vec_mergeh(vector short __a, vector short __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, + 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); +} + +static vector unsigned short __ATTRS_o_ai +vec_mergeh(vector unsigned short __a, vector unsigned short __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, + 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); +} + +static vector bool short __ATTRS_o_ai +vec_mergeh(vector bool short __a, vector bool short __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, + 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); +} + +static vector pixel __ATTRS_o_ai +vec_mergeh(vector pixel __a, vector pixel __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, + 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); +} + +static vector int __ATTRS_o_ai +vec_mergeh(vector int __a, vector int __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, + 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); +} + +static vector unsigned int __ATTRS_o_ai +vec_mergeh(vector unsigned int __a, vector unsigned int __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, + 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); +} + +static vector bool int __ATTRS_o_ai +vec_mergeh(vector bool int __a, vector bool int __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, + 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); +} + +static vector float __ATTRS_o_ai +vec_mergeh(vector float __a, vector float __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, + 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); +} + +/* vec_vmrghb */ + +#define __builtin_altivec_vmrghb vec_vmrghb + +static vector signed char __ATTRS_o_ai +vec_vmrghb(vector signed char __a, vector signed char __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13, + 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17)); +} + +static vector unsigned char __ATTRS_o_ai +vec_vmrghb(vector unsigned char __a, vector unsigned char __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13, + 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17)); +} + +static vector bool char __ATTRS_o_ai +vec_vmrghb(vector bool char __a, vector bool char __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13, + 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17)); +} + +/* vec_vmrghh */ + +#define __builtin_altivec_vmrghh vec_vmrghh + +static vector short __ATTRS_o_ai +vec_vmrghh(vector short __a, vector short __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, + 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); +} + +static vector unsigned short __ATTRS_o_ai +vec_vmrghh(vector unsigned short __a, vector unsigned short __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, + 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); +} + +static vector bool short __ATTRS_o_ai +vec_vmrghh(vector bool short __a, vector bool short __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, + 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); +} + +static vector pixel __ATTRS_o_ai +vec_vmrghh(vector pixel __a, vector pixel __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, + 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); +} + +/* vec_vmrghw */ + +#define __builtin_altivec_vmrghw vec_vmrghw + +static vector int __ATTRS_o_ai +vec_vmrghw(vector int __a, vector int __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, + 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); +} + +static vector unsigned int __ATTRS_o_ai +vec_vmrghw(vector unsigned int __a, vector unsigned int __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, + 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); +} + +static vector bool int __ATTRS_o_ai +vec_vmrghw(vector bool int __a, vector bool int __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, + 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); +} + +static vector float __ATTRS_o_ai +vec_vmrghw(vector float __a, vector float __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, + 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); +} + +/* vec_mergel */ + +static vector signed char __ATTRS_o_ai +vec_mergel(vector signed char __a, vector signed char __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B, + 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F)); +} + +static vector unsigned char __ATTRS_o_ai +vec_mergel(vector unsigned char __a, vector unsigned char __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B, + 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F)); +} + +static vector bool char __ATTRS_o_ai +vec_mergel(vector bool char __a, vector bool char __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B, + 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F)); +} + +static vector short __ATTRS_o_ai +vec_mergel(vector short __a, vector short __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, + 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); +} + +static vector unsigned short __ATTRS_o_ai +vec_mergel(vector unsigned short __a, vector unsigned short __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, + 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); +} + +static vector bool short __ATTRS_o_ai +vec_mergel(vector bool short __a, vector bool short __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, + 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); +} + +static vector pixel __ATTRS_o_ai +vec_mergel(vector pixel __a, vector pixel __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, + 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); +} + +static vector int __ATTRS_o_ai +vec_mergel(vector int __a, vector int __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, + 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); +} + +static vector unsigned int __ATTRS_o_ai +vec_mergel(vector unsigned int __a, vector unsigned int __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, + 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); +} + +static vector bool int __ATTRS_o_ai +vec_mergel(vector bool int __a, vector bool int __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, + 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); +} + +static vector float __ATTRS_o_ai +vec_mergel(vector float __a, vector float __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, + 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); +} + +/* vec_vmrglb */ + +#define __builtin_altivec_vmrglb vec_vmrglb + +static vector signed char __ATTRS_o_ai +vec_vmrglb(vector signed char __a, vector signed char __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B, + 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F)); +} + +static vector unsigned char __ATTRS_o_ai +vec_vmrglb(vector unsigned char __a, vector unsigned char __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B, + 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F)); +} + +static vector bool char __ATTRS_o_ai +vec_vmrglb(vector bool char __a, vector bool char __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B, + 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F)); +} + +/* vec_vmrglh */ + +#define __builtin_altivec_vmrglh vec_vmrglh + +static vector short __ATTRS_o_ai +vec_vmrglh(vector short __a, vector short __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, + 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); +} + +static vector unsigned short __ATTRS_o_ai +vec_vmrglh(vector unsigned short __a, vector unsigned short __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, + 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); +} + +static vector bool short __ATTRS_o_ai +vec_vmrglh(vector bool short __a, vector bool short __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, + 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); +} + +static vector pixel __ATTRS_o_ai +vec_vmrglh(vector pixel __a, vector pixel __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, + 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); +} + +/* vec_vmrglw */ + +#define __builtin_altivec_vmrglw vec_vmrglw + +static vector int __ATTRS_o_ai +vec_vmrglw(vector int __a, vector int __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, + 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); +} + +static vector unsigned int __ATTRS_o_ai +vec_vmrglw(vector unsigned int __a, vector unsigned int __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, + 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); +} + +static vector bool int __ATTRS_o_ai +vec_vmrglw(vector bool int __a, vector bool int __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, + 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); +} + +static vector float __ATTRS_o_ai +vec_vmrglw(vector float __a, vector float __b) +{ + return vec_perm(__a, __b, (vector unsigned char) + (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, + 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); +} + +/* vec_mfvscr */ + +static vector unsigned short __attribute__((__always_inline__)) +vec_mfvscr(void) +{ + return __builtin_altivec_mfvscr(); +} + +/* vec_min */ + +static vector signed char __ATTRS_o_ai +vec_min(vector signed char __a, vector signed char __b) +{ + return __builtin_altivec_vminsb(__a, __b); +} + +static vector signed char __ATTRS_o_ai +vec_min(vector bool char __a, vector signed char __b) +{ + return __builtin_altivec_vminsb((vector signed char)__a, __b); +} + +static vector signed char __ATTRS_o_ai +vec_min(vector signed char __a, vector bool char __b) +{ + return __builtin_altivec_vminsb(__a, (vector signed char)__b); +} + +static vector unsigned char __ATTRS_o_ai +vec_min(vector unsigned char __a, vector unsigned char __b) +{ + return __builtin_altivec_vminub(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_min(vector bool char __a, vector unsigned char __b) +{ + return __builtin_altivec_vminub((vector unsigned char)__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_min(vector unsigned char __a, vector bool char __b) +{ + return __builtin_altivec_vminub(__a, (vector unsigned char)__b); +} + +static vector short __ATTRS_o_ai +vec_min(vector short __a, vector short __b) +{ + return __builtin_altivec_vminsh(__a, __b); +} + +static vector short __ATTRS_o_ai +vec_min(vector bool short __a, vector short __b) +{ + return __builtin_altivec_vminsh((vector short)__a, __b); +} + +static vector short __ATTRS_o_ai +vec_min(vector short __a, vector bool short __b) +{ + return __builtin_altivec_vminsh(__a, (vector short)__b); +} + +static vector unsigned short __ATTRS_o_ai +vec_min(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vminuh(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_min(vector bool short __a, vector unsigned short __b) +{ + return __builtin_altivec_vminuh((vector unsigned short)__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_min(vector unsigned short __a, vector bool short __b) +{ + return __builtin_altivec_vminuh(__a, (vector unsigned short)__b); +} + +static vector int __ATTRS_o_ai +vec_min(vector int __a, vector int __b) +{ + return __builtin_altivec_vminsw(__a, __b); +} + +static vector int __ATTRS_o_ai +vec_min(vector bool int __a, vector int __b) +{ + return __builtin_altivec_vminsw((vector int)__a, __b); +} + +static vector int __ATTRS_o_ai +vec_min(vector int __a, vector bool int __b) +{ + return __builtin_altivec_vminsw(__a, (vector int)__b); +} + +static vector unsigned int __ATTRS_o_ai +vec_min(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vminuw(__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_min(vector bool int __a, vector unsigned int __b) +{ + return __builtin_altivec_vminuw((vector unsigned int)__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_min(vector unsigned int __a, vector bool int __b) +{ + return __builtin_altivec_vminuw(__a, (vector unsigned int)__b); +} + +static vector float __ATTRS_o_ai +vec_min(vector float __a, vector float __b) +{ + return __builtin_altivec_vminfp(__a, __b); +} + +/* vec_vminsb */ + +static vector signed char __ATTRS_o_ai +vec_vminsb(vector signed char __a, vector signed char __b) +{ + return __builtin_altivec_vminsb(__a, __b); +} + +static vector signed char __ATTRS_o_ai +vec_vminsb(vector bool char __a, vector signed char __b) +{ + return __builtin_altivec_vminsb((vector signed char)__a, __b); +} + +static vector signed char __ATTRS_o_ai +vec_vminsb(vector signed char __a, vector bool char __b) +{ + return __builtin_altivec_vminsb(__a, (vector signed char)__b); +} + +/* vec_vminub */ + +static vector unsigned char __ATTRS_o_ai +vec_vminub(vector unsigned char __a, vector unsigned char __b) +{ + return __builtin_altivec_vminub(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_vminub(vector bool char __a, vector unsigned char __b) +{ + return __builtin_altivec_vminub((vector unsigned char)__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_vminub(vector unsigned char __a, vector bool char __b) +{ + return __builtin_altivec_vminub(__a, (vector unsigned char)__b); +} + +/* vec_vminsh */ + +static vector short __ATTRS_o_ai +vec_vminsh(vector short __a, vector short __b) +{ + return __builtin_altivec_vminsh(__a, __b); +} + +static vector short __ATTRS_o_ai +vec_vminsh(vector bool short __a, vector short __b) +{ + return __builtin_altivec_vminsh((vector short)__a, __b); +} + +static vector short __ATTRS_o_ai +vec_vminsh(vector short __a, vector bool short __b) +{ + return __builtin_altivec_vminsh(__a, (vector short)__b); +} + +/* vec_vminuh */ + +static vector unsigned short __ATTRS_o_ai +vec_vminuh(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vminuh(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_vminuh(vector bool short __a, vector unsigned short __b) +{ + return __builtin_altivec_vminuh((vector unsigned short)__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_vminuh(vector unsigned short __a, vector bool short __b) +{ + return __builtin_altivec_vminuh(__a, (vector unsigned short)__b); +} + +/* vec_vminsw */ + +static vector int __ATTRS_o_ai +vec_vminsw(vector int __a, vector int __b) +{ + return __builtin_altivec_vminsw(__a, __b); +} + +static vector int __ATTRS_o_ai +vec_vminsw(vector bool int __a, vector int __b) +{ + return __builtin_altivec_vminsw((vector int)__a, __b); +} + +static vector int __ATTRS_o_ai +vec_vminsw(vector int __a, vector bool int __b) +{ + return __builtin_altivec_vminsw(__a, (vector int)__b); +} + +/* vec_vminuw */ + +static vector unsigned int __ATTRS_o_ai +vec_vminuw(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vminuw(__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_vminuw(vector bool int __a, vector unsigned int __b) +{ + return __builtin_altivec_vminuw((vector unsigned int)__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_vminuw(vector unsigned int __a, vector bool int __b) +{ + return __builtin_altivec_vminuw(__a, (vector unsigned int)__b); +} + +/* vec_vminfp */ + +static vector float __attribute__((__always_inline__)) +vec_vminfp(vector float __a, vector float __b) +{ + return __builtin_altivec_vminfp(__a, __b); +} + +/* vec_mladd */ + +#define __builtin_altivec_vmladduhm vec_mladd + +static vector short __ATTRS_o_ai +vec_mladd(vector short __a, vector short __b, vector short __c) +{ + return __a * __b + __c; +} + +static vector short __ATTRS_o_ai +vec_mladd(vector short __a, vector unsigned short __b, vector unsigned short __c) +{ + return __a * (vector short)__b + (vector short)__c; +} + +static vector short __ATTRS_o_ai +vec_mladd(vector unsigned short __a, vector short __b, vector short __c) +{ + return (vector short)__a * __b + __c; +} + +static vector unsigned short __ATTRS_o_ai +vec_mladd(vector unsigned short __a, + vector unsigned short __b, + vector unsigned short __c) +{ + return __a * __b + __c; +} + +/* vec_vmladduhm */ + +static vector short __ATTRS_o_ai +vec_vmladduhm(vector short __a, vector short __b, vector short __c) +{ + return __a * __b + __c; +} + +static vector short __ATTRS_o_ai +vec_vmladduhm(vector short __a, vector unsigned short __b, vector unsigned short __c) +{ + return __a * (vector short)__b + (vector short)__c; +} + +static vector short __ATTRS_o_ai +vec_vmladduhm(vector unsigned short __a, vector short __b, vector short __c) +{ + return (vector short)__a * __b + __c; +} + +static vector unsigned short __ATTRS_o_ai +vec_vmladduhm(vector unsigned short __a, + vector unsigned short __b, + vector unsigned short __c) +{ + return __a * __b + __c; +} + +/* vec_mradds */ + +static vector short __attribute__((__always_inline__)) +vec_mradds(vector short __a, vector short __b, vector short __c) +{ + return __builtin_altivec_vmhraddshs(__a, __b, __c); +} + +/* vec_vmhraddshs */ + +static vector short __attribute__((__always_inline__)) +vec_vmhraddshs(vector short __a, vector short __b, vector short __c) +{ + return __builtin_altivec_vmhraddshs(__a, __b, __c); +} + +/* vec_msum */ + +static vector int __ATTRS_o_ai +vec_msum(vector signed char __a, vector unsigned char __b, vector int __c) +{ + return __builtin_altivec_vmsummbm(__a, __b, __c); +} + +static vector unsigned int __ATTRS_o_ai +vec_msum(vector unsigned char __a, vector unsigned char __b, vector unsigned int __c) +{ + return __builtin_altivec_vmsumubm(__a, __b, __c); +} + +static vector int __ATTRS_o_ai +vec_msum(vector short __a, vector short __b, vector int __c) +{ + return __builtin_altivec_vmsumshm(__a, __b, __c); +} + +static vector unsigned int __ATTRS_o_ai +vec_msum(vector unsigned short __a, + vector unsigned short __b, + vector unsigned int __c) +{ + return __builtin_altivec_vmsumuhm(__a, __b, __c); +} + +/* vec_vmsummbm */ + +static vector int __attribute__((__always_inline__)) +vec_vmsummbm(vector signed char __a, vector unsigned char __b, vector int __c) +{ + return __builtin_altivec_vmsummbm(__a, __b, __c); +} + +/* vec_vmsumubm */ + +static vector unsigned int __attribute__((__always_inline__)) +vec_vmsumubm(vector unsigned char __a, + vector unsigned char __b, + vector unsigned int __c) +{ + return __builtin_altivec_vmsumubm(__a, __b, __c); +} + +/* vec_vmsumshm */ + +static vector int __attribute__((__always_inline__)) +vec_vmsumshm(vector short __a, vector short __b, vector int __c) +{ + return __builtin_altivec_vmsumshm(__a, __b, __c); +} + +/* vec_vmsumuhm */ + +static vector unsigned int __attribute__((__always_inline__)) +vec_vmsumuhm(vector unsigned short __a, + vector unsigned short __b, + vector unsigned int __c) +{ + return __builtin_altivec_vmsumuhm(__a, __b, __c); +} + +/* vec_msums */ + +static vector int __ATTRS_o_ai +vec_msums(vector short __a, vector short __b, vector int __c) +{ + return __builtin_altivec_vmsumshs(__a, __b, __c); +} + +static vector unsigned int __ATTRS_o_ai +vec_msums(vector unsigned short __a, + vector unsigned short __b, + vector unsigned int __c) +{ + return __builtin_altivec_vmsumuhs(__a, __b, __c); +} + +/* vec_vmsumshs */ + +static vector int __attribute__((__always_inline__)) +vec_vmsumshs(vector short __a, vector short __b, vector int __c) +{ + return __builtin_altivec_vmsumshs(__a, __b, __c); +} + +/* vec_vmsumuhs */ + +static vector unsigned int __attribute__((__always_inline__)) +vec_vmsumuhs(vector unsigned short __a, + vector unsigned short __b, + vector unsigned int __c) +{ + return __builtin_altivec_vmsumuhs(__a, __b, __c); +} + +/* vec_mtvscr */ + +static void __ATTRS_o_ai +vec_mtvscr(vector signed char __a) +{ + __builtin_altivec_mtvscr((vector int)__a); +} + +static void __ATTRS_o_ai +vec_mtvscr(vector unsigned char __a) +{ + __builtin_altivec_mtvscr((vector int)__a); +} + +static void __ATTRS_o_ai +vec_mtvscr(vector bool char __a) +{ + __builtin_altivec_mtvscr((vector int)__a); +} + +static void __ATTRS_o_ai +vec_mtvscr(vector short __a) +{ + __builtin_altivec_mtvscr((vector int)__a); +} + +static void __ATTRS_o_ai +vec_mtvscr(vector unsigned short __a) +{ + __builtin_altivec_mtvscr((vector int)__a); +} + +static void __ATTRS_o_ai +vec_mtvscr(vector bool short __a) +{ + __builtin_altivec_mtvscr((vector int)__a); +} + +static void __ATTRS_o_ai +vec_mtvscr(vector pixel __a) +{ + __builtin_altivec_mtvscr((vector int)__a); +} + +static void __ATTRS_o_ai +vec_mtvscr(vector int __a) +{ + __builtin_altivec_mtvscr((vector int)__a); +} + +static void __ATTRS_o_ai +vec_mtvscr(vector unsigned int __a) +{ + __builtin_altivec_mtvscr((vector int)__a); +} + +static void __ATTRS_o_ai +vec_mtvscr(vector bool int __a) +{ + __builtin_altivec_mtvscr((vector int)__a); +} + +static void __ATTRS_o_ai +vec_mtvscr(vector float __a) +{ + __builtin_altivec_mtvscr((vector int)__a); +} + +/* vec_mule */ + +static vector short __ATTRS_o_ai +vec_mule(vector signed char __a, vector signed char __b) +{ + return __builtin_altivec_vmulesb(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_mule(vector unsigned char __a, vector unsigned char __b) +{ + return __builtin_altivec_vmuleub(__a, __b); +} + +static vector int __ATTRS_o_ai +vec_mule(vector short __a, vector short __b) +{ + return __builtin_altivec_vmulesh(__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_mule(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vmuleuh(__a, __b); +} + +/* vec_vmulesb */ + +static vector short __attribute__((__always_inline__)) +vec_vmulesb(vector signed char __a, vector signed char __b) +{ + return __builtin_altivec_vmulesb(__a, __b); +} + +/* vec_vmuleub */ + +static vector unsigned short __attribute__((__always_inline__)) +vec_vmuleub(vector unsigned char __a, vector unsigned char __b) +{ + return __builtin_altivec_vmuleub(__a, __b); +} + +/* vec_vmulesh */ + +static vector int __attribute__((__always_inline__)) +vec_vmulesh(vector short __a, vector short __b) +{ + return __builtin_altivec_vmulesh(__a, __b); +} + +/* vec_vmuleuh */ + +static vector unsigned int __attribute__((__always_inline__)) +vec_vmuleuh(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vmuleuh(__a, __b); +} + +/* vec_mulo */ + +static vector short __ATTRS_o_ai +vec_mulo(vector signed char __a, vector signed char __b) +{ + return __builtin_altivec_vmulosb(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_mulo(vector unsigned char __a, vector unsigned char __b) +{ + return __builtin_altivec_vmuloub(__a, __b); +} + +static vector int __ATTRS_o_ai +vec_mulo(vector short __a, vector short __b) +{ + return __builtin_altivec_vmulosh(__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_mulo(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vmulouh(__a, __b); +} + +/* vec_vmulosb */ + +static vector short __attribute__((__always_inline__)) +vec_vmulosb(vector signed char __a, vector signed char __b) +{ + return __builtin_altivec_vmulosb(__a, __b); +} + +/* vec_vmuloub */ + +static vector unsigned short __attribute__((__always_inline__)) +vec_vmuloub(vector unsigned char __a, vector unsigned char __b) +{ + return __builtin_altivec_vmuloub(__a, __b); +} + +/* vec_vmulosh */ + +static vector int __attribute__((__always_inline__)) +vec_vmulosh(vector short __a, vector short __b) +{ + return __builtin_altivec_vmulosh(__a, __b); +} + +/* vec_vmulouh */ + +static vector unsigned int __attribute__((__always_inline__)) +vec_vmulouh(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vmulouh(__a, __b); +} + +/* vec_nmsub */ + +static vector float __attribute__((__always_inline__)) +vec_nmsub(vector float __a, vector float __b, vector float __c) +{ + return __builtin_altivec_vnmsubfp(__a, __b, __c); +} + +/* vec_vnmsubfp */ + +static vector float __attribute__((__always_inline__)) +vec_vnmsubfp(vector float __a, vector float __b, vector float __c) +{ + return __builtin_altivec_vnmsubfp(__a, __b, __c); +} + +/* vec_nor */ + +#define __builtin_altivec_vnor vec_nor + +static vector signed char __ATTRS_o_ai +vec_nor(vector signed char __a, vector signed char __b) +{ + return ~(__a | __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_nor(vector unsigned char __a, vector unsigned char __b) +{ + return ~(__a | __b); +} + +static vector bool char __ATTRS_o_ai +vec_nor(vector bool char __a, vector bool char __b) +{ + return ~(__a | __b); +} + +static vector short __ATTRS_o_ai +vec_nor(vector short __a, vector short __b) +{ + return ~(__a | __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_nor(vector unsigned short __a, vector unsigned short __b) +{ + return ~(__a | __b); +} + +static vector bool short __ATTRS_o_ai +vec_nor(vector bool short __a, vector bool short __b) +{ + return ~(__a | __b); +} + +static vector int __ATTRS_o_ai +vec_nor(vector int __a, vector int __b) +{ + return ~(__a | __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_nor(vector unsigned int __a, vector unsigned int __b) +{ + return ~(__a | __b); +} + +static vector bool int __ATTRS_o_ai +vec_nor(vector bool int __a, vector bool int __b) +{ + return ~(__a | __b); +} + +static vector float __ATTRS_o_ai +vec_nor(vector float __a, vector float __b) +{ + vector unsigned int __res = ~((vector unsigned int)__a | (vector unsigned int)__b); + return (vector float)__res; +} + +/* vec_vnor */ + +static vector signed char __ATTRS_o_ai +vec_vnor(vector signed char __a, vector signed char __b) +{ + return ~(__a | __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_vnor(vector unsigned char __a, vector unsigned char __b) +{ + return ~(__a | __b); +} + +static vector bool char __ATTRS_o_ai +vec_vnor(vector bool char __a, vector bool char __b) +{ + return ~(__a | __b); +} + +static vector short __ATTRS_o_ai +vec_vnor(vector short __a, vector short __b) +{ + return ~(__a | __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_vnor(vector unsigned short __a, vector unsigned short __b) +{ + return ~(__a | __b); +} + +static vector bool short __ATTRS_o_ai +vec_vnor(vector bool short __a, vector bool short __b) +{ + return ~(__a | __b); +} + +static vector int __ATTRS_o_ai +vec_vnor(vector int __a, vector int __b) +{ + return ~(__a | __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_vnor(vector unsigned int __a, vector unsigned int __b) +{ + return ~(__a | __b); +} + +static vector bool int __ATTRS_o_ai +vec_vnor(vector bool int __a, vector bool int __b) +{ + return ~(__a | __b); +} + +static vector float __ATTRS_o_ai +vec_vnor(vector float __a, vector float __b) +{ + vector unsigned int __res = ~((vector unsigned int)__a | (vector unsigned int)__b); + return (vector float)__res; +} + +/* vec_or */ + +#define __builtin_altivec_vor vec_or + +static vector signed char __ATTRS_o_ai +vec_or(vector signed char __a, vector signed char __b) +{ + return __a | __b; +} + +static vector signed char __ATTRS_o_ai +vec_or(vector bool char __a, vector signed char __b) +{ + return (vector signed char)__a | __b; +} + +static vector signed char __ATTRS_o_ai +vec_or(vector signed char __a, vector bool char __b) +{ + return __a | (vector signed char)__b; +} + +static vector unsigned char __ATTRS_o_ai +vec_or(vector unsigned char __a, vector unsigned char __b) +{ + return __a | __b; +} + +static vector unsigned char __ATTRS_o_ai +vec_or(vector bool char __a, vector unsigned char __b) +{ + return (vector unsigned char)__a | __b; +} + +static vector unsigned char __ATTRS_o_ai +vec_or(vector unsigned char __a, vector bool char __b) +{ + return __a | (vector unsigned char)__b; +} + +static vector bool char __ATTRS_o_ai +vec_or(vector bool char __a, vector bool char __b) +{ + return __a | __b; +} + +static vector short __ATTRS_o_ai +vec_or(vector short __a, vector short __b) +{ + return __a | __b; +} + +static vector short __ATTRS_o_ai +vec_or(vector bool short __a, vector short __b) +{ + return (vector short)__a | __b; +} + +static vector short __ATTRS_o_ai +vec_or(vector short __a, vector bool short __b) +{ + return __a | (vector short)__b; +} + +static vector unsigned short __ATTRS_o_ai +vec_or(vector unsigned short __a, vector unsigned short __b) +{ + return __a | __b; +} + +static vector unsigned short __ATTRS_o_ai +vec_or(vector bool short __a, vector unsigned short __b) +{ + return (vector unsigned short)__a | __b; +} + +static vector unsigned short __ATTRS_o_ai +vec_or(vector unsigned short __a, vector bool short __b) +{ + return __a | (vector unsigned short)__b; +} + +static vector bool short __ATTRS_o_ai +vec_or(vector bool short __a, vector bool short __b) +{ + return __a | __b; +} + +static vector int __ATTRS_o_ai +vec_or(vector int __a, vector int __b) +{ + return __a | __b; +} + +static vector int __ATTRS_o_ai +vec_or(vector bool int __a, vector int __b) +{ + return (vector int)__a | __b; +} + +static vector int __ATTRS_o_ai +vec_or(vector int __a, vector bool int __b) +{ + return __a | (vector int)__b; +} + +static vector unsigned int __ATTRS_o_ai +vec_or(vector unsigned int __a, vector unsigned int __b) +{ + return __a | __b; +} + +static vector unsigned int __ATTRS_o_ai +vec_or(vector bool int __a, vector unsigned int __b) +{ + return (vector unsigned int)__a | __b; +} + +static vector unsigned int __ATTRS_o_ai +vec_or(vector unsigned int __a, vector bool int __b) +{ + return __a | (vector unsigned int)__b; +} + +static vector bool int __ATTRS_o_ai +vec_or(vector bool int __a, vector bool int __b) +{ + return __a | __b; +} + +static vector float __ATTRS_o_ai +vec_or(vector float __a, vector float __b) +{ + vector unsigned int __res = (vector unsigned int)__a | (vector unsigned int)__b; + return (vector float)__res; +} + +static vector float __ATTRS_o_ai +vec_or(vector bool int __a, vector float __b) +{ + vector unsigned int __res = (vector unsigned int)__a | (vector unsigned int)__b; + return (vector float)__res; +} + +static vector float __ATTRS_o_ai +vec_or(vector float __a, vector bool int __b) +{ + vector unsigned int __res = (vector unsigned int)__a | (vector unsigned int)__b; + return (vector float)__res; +} + +/* vec_vor */ + +static vector signed char __ATTRS_o_ai +vec_vor(vector signed char __a, vector signed char __b) +{ + return __a | __b; +} + +static vector signed char __ATTRS_o_ai +vec_vor(vector bool char __a, vector signed char __b) +{ + return (vector signed char)__a | __b; +} + +static vector signed char __ATTRS_o_ai +vec_vor(vector signed char __a, vector bool char __b) +{ + return __a | (vector signed char)__b; +} + +static vector unsigned char __ATTRS_o_ai +vec_vor(vector unsigned char __a, vector unsigned char __b) +{ + return __a | __b; +} + +static vector unsigned char __ATTRS_o_ai +vec_vor(vector bool char __a, vector unsigned char __b) +{ + return (vector unsigned char)__a | __b; +} + +static vector unsigned char __ATTRS_o_ai +vec_vor(vector unsigned char __a, vector bool char __b) +{ + return __a | (vector unsigned char)__b; +} + +static vector bool char __ATTRS_o_ai +vec_vor(vector bool char __a, vector bool char __b) +{ + return __a | __b; +} + +static vector short __ATTRS_o_ai +vec_vor(vector short __a, vector short __b) +{ + return __a | __b; +} + +static vector short __ATTRS_o_ai +vec_vor(vector bool short __a, vector short __b) +{ + return (vector short)__a | __b; +} + +static vector short __ATTRS_o_ai +vec_vor(vector short __a, vector bool short __b) +{ + return __a | (vector short)__b; +} + +static vector unsigned short __ATTRS_o_ai +vec_vor(vector unsigned short __a, vector unsigned short __b) +{ + return __a | __b; +} + +static vector unsigned short __ATTRS_o_ai +vec_vor(vector bool short __a, vector unsigned short __b) +{ + return (vector unsigned short)__a | __b; +} + +static vector unsigned short __ATTRS_o_ai +vec_vor(vector unsigned short __a, vector bool short __b) +{ + return __a | (vector unsigned short)__b; +} + +static vector bool short __ATTRS_o_ai +vec_vor(vector bool short __a, vector bool short __b) +{ + return __a | __b; +} + +static vector int __ATTRS_o_ai +vec_vor(vector int __a, vector int __b) +{ + return __a | __b; +} + +static vector int __ATTRS_o_ai +vec_vor(vector bool int __a, vector int __b) +{ + return (vector int)__a | __b; +} + +static vector int __ATTRS_o_ai +vec_vor(vector int __a, vector bool int __b) +{ + return __a | (vector int)__b; +} + +static vector unsigned int __ATTRS_o_ai +vec_vor(vector unsigned int __a, vector unsigned int __b) +{ + return __a | __b; +} + +static vector unsigned int __ATTRS_o_ai +vec_vor(vector bool int __a, vector unsigned int __b) +{ + return (vector unsigned int)__a | __b; +} + +static vector unsigned int __ATTRS_o_ai +vec_vor(vector unsigned int __a, vector bool int __b) +{ + return __a | (vector unsigned int)__b; +} + +static vector bool int __ATTRS_o_ai +vec_vor(vector bool int __a, vector bool int __b) +{ + return __a | __b; +} + +static vector float __ATTRS_o_ai +vec_vor(vector float __a, vector float __b) +{ + vector unsigned int __res = (vector unsigned int)__a | (vector unsigned int)__b; + return (vector float)__res; +} + +static vector float __ATTRS_o_ai +vec_vor(vector bool int __a, vector float __b) +{ + vector unsigned int __res = (vector unsigned int)__a | (vector unsigned int)__b; + return (vector float)__res; +} + +static vector float __ATTRS_o_ai +vec_vor(vector float __a, vector bool int __b) +{ + vector unsigned int __res = (vector unsigned int)__a | (vector unsigned int)__b; + return (vector float)__res; +} + +/* vec_pack */ + +static vector signed char __ATTRS_o_ai +vec_pack(vector signed short __a, vector signed short __b) +{ + return (vector signed char)vec_perm(__a, __b, (vector unsigned char) + (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, + 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); +} + +static vector unsigned char __ATTRS_o_ai +vec_pack(vector unsigned short __a, vector unsigned short __b) +{ + return (vector unsigned char)vec_perm(__a, __b, (vector unsigned char) + (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, + 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); +} + +static vector bool char __ATTRS_o_ai +vec_pack(vector bool short __a, vector bool short __b) +{ + return (vector bool char)vec_perm(__a, __b, (vector unsigned char) + (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, + 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); +} + +static vector short __ATTRS_o_ai +vec_pack(vector int __a, vector int __b) +{ + return (vector short)vec_perm(__a, __b, (vector unsigned char) + (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, + 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); +} + +static vector unsigned short __ATTRS_o_ai +vec_pack(vector unsigned int __a, vector unsigned int __b) +{ + return (vector unsigned short)vec_perm(__a, __b, (vector unsigned char) + (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, + 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); +} + +static vector bool short __ATTRS_o_ai +vec_pack(vector bool int __a, vector bool int __b) +{ + return (vector bool short)vec_perm(__a, __b, (vector unsigned char) + (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, + 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); +} + +/* vec_vpkuhum */ + +#define __builtin_altivec_vpkuhum vec_vpkuhum + +static vector signed char __ATTRS_o_ai +vec_vpkuhum(vector signed short __a, vector signed short __b) +{ + return (vector signed char)vec_perm(__a, __b, (vector unsigned char) + (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, + 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); +} + +static vector unsigned char __ATTRS_o_ai +vec_vpkuhum(vector unsigned short __a, vector unsigned short __b) +{ + return (vector unsigned char)vec_perm(__a, __b, (vector unsigned char) + (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, + 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); +} + +static vector bool char __ATTRS_o_ai +vec_vpkuhum(vector bool short __a, vector bool short __b) +{ + return (vector bool char)vec_perm(__a, __b, (vector unsigned char) + (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, + 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); +} + +/* vec_vpkuwum */ + +#define __builtin_altivec_vpkuwum vec_vpkuwum + +static vector short __ATTRS_o_ai +vec_vpkuwum(vector int __a, vector int __b) +{ + return (vector short)vec_perm(__a, __b, (vector unsigned char) + (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, + 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); +} + +static vector unsigned short __ATTRS_o_ai +vec_vpkuwum(vector unsigned int __a, vector unsigned int __b) +{ + return (vector unsigned short)vec_perm(__a, __b, (vector unsigned char) + (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, + 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); +} + +static vector bool short __ATTRS_o_ai +vec_vpkuwum(vector bool int __a, vector bool int __b) +{ + return (vector bool short)vec_perm(__a, __b, (vector unsigned char) + (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, + 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); +} + +/* vec_packpx */ + +static vector pixel __attribute__((__always_inline__)) +vec_packpx(vector unsigned int __a, vector unsigned int __b) +{ + return (vector pixel)__builtin_altivec_vpkpx(__a, __b); +} + +/* vec_vpkpx */ + +static vector pixel __attribute__((__always_inline__)) +vec_vpkpx(vector unsigned int __a, vector unsigned int __b) +{ + return (vector pixel)__builtin_altivec_vpkpx(__a, __b); +} + +/* vec_packs */ + +static vector signed char __ATTRS_o_ai +vec_packs(vector short __a, vector short __b) +{ + return __builtin_altivec_vpkshss(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_packs(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vpkuhus(__a, __b); +} + +static vector signed short __ATTRS_o_ai +vec_packs(vector int __a, vector int __b) +{ + return __builtin_altivec_vpkswss(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_packs(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vpkuwus(__a, __b); +} + +/* vec_vpkshss */ + +static vector signed char __attribute__((__always_inline__)) +vec_vpkshss(vector short __a, vector short __b) +{ + return __builtin_altivec_vpkshss(__a, __b); +} + +/* vec_vpkuhus */ + +static vector unsigned char __attribute__((__always_inline__)) +vec_vpkuhus(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vpkuhus(__a, __b); +} + +/* vec_vpkswss */ + +static vector signed short __attribute__((__always_inline__)) +vec_vpkswss(vector int __a, vector int __b) +{ + return __builtin_altivec_vpkswss(__a, __b); +} + +/* vec_vpkuwus */ + +static vector unsigned short __attribute__((__always_inline__)) +vec_vpkuwus(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vpkuwus(__a, __b); +} + +/* vec_packsu */ + +static vector unsigned char __ATTRS_o_ai +vec_packsu(vector short __a, vector short __b) +{ + return __builtin_altivec_vpkshus(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_packsu(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vpkuhus(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_packsu(vector int __a, vector int __b) +{ + return __builtin_altivec_vpkswus(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_packsu(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vpkuwus(__a, __b); +} + +/* vec_vpkshus */ + +static vector unsigned char __ATTRS_o_ai +vec_vpkshus(vector short __a, vector short __b) +{ + return __builtin_altivec_vpkshus(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_vpkshus(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vpkuhus(__a, __b); +} + +/* vec_vpkswus */ + +static vector unsigned short __ATTRS_o_ai +vec_vpkswus(vector int __a, vector int __b) +{ + return __builtin_altivec_vpkswus(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_vpkswus(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vpkuwus(__a, __b); +} + +/* vec_perm */ + +vector signed char __ATTRS_o_ai +vec_perm(vector signed char __a, vector signed char __b, vector unsigned char __c) +{ + return (vector signed char) + __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); +} + +vector unsigned char __ATTRS_o_ai +vec_perm(vector unsigned char __a, + vector unsigned char __b, + vector unsigned char __c) +{ + return (vector unsigned char) + __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); +} + +vector bool char __ATTRS_o_ai +vec_perm(vector bool char __a, vector bool char __b, vector unsigned char __c) +{ + return (vector bool char) + __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); +} + +vector short __ATTRS_o_ai +vec_perm(vector short __a, vector short __b, vector unsigned char __c) +{ + return (vector short) + __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); +} + +vector unsigned short __ATTRS_o_ai +vec_perm(vector unsigned short __a, + vector unsigned short __b, + vector unsigned char __c) +{ + return (vector unsigned short) + __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); +} + +vector bool short __ATTRS_o_ai +vec_perm(vector bool short __a, vector bool short __b, vector unsigned char __c) +{ + return (vector bool short) + __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); +} + +vector pixel __ATTRS_o_ai +vec_perm(vector pixel __a, vector pixel __b, vector unsigned char __c) +{ + return (vector pixel) + __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); +} + +vector int __ATTRS_o_ai +vec_perm(vector int __a, vector int __b, vector unsigned char __c) +{ + return (vector int)__builtin_altivec_vperm_4si(__a, __b, __c); +} + +vector unsigned int __ATTRS_o_ai +vec_perm(vector unsigned int __a, vector unsigned int __b, vector unsigned char __c) +{ + return (vector unsigned int) + __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); +} + +vector bool int __ATTRS_o_ai +vec_perm(vector bool int __a, vector bool int __b, vector unsigned char __c) +{ + return (vector bool int) + __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); +} + +vector float __ATTRS_o_ai +vec_perm(vector float __a, vector float __b, vector unsigned char __c) +{ + return (vector float) + __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); +} + +/* vec_vperm */ + +static vector signed char __ATTRS_o_ai +vec_vperm(vector signed char __a, vector signed char __b, vector unsigned char __c) +{ + return (vector signed char) + __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); +} + +static vector unsigned char __ATTRS_o_ai +vec_vperm(vector unsigned char __a, + vector unsigned char __b, + vector unsigned char __c) +{ + return (vector unsigned char) + __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); +} + +static vector bool char __ATTRS_o_ai +vec_vperm(vector bool char __a, vector bool char __b, vector unsigned char __c) +{ + return (vector bool char) + __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); +} + +static vector short __ATTRS_o_ai +vec_vperm(vector short __a, vector short __b, vector unsigned char __c) +{ + return (vector short) + __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); +} + +static vector unsigned short __ATTRS_o_ai +vec_vperm(vector unsigned short __a, + vector unsigned short __b, + vector unsigned char __c) +{ + return (vector unsigned short) + __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); +} + +static vector bool short __ATTRS_o_ai +vec_vperm(vector bool short __a, vector bool short __b, vector unsigned char __c) +{ + return (vector bool short) + __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); +} + +static vector pixel __ATTRS_o_ai +vec_vperm(vector pixel __a, vector pixel __b, vector unsigned char __c) +{ + return (vector pixel) + __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); +} + +static vector int __ATTRS_o_ai +vec_vperm(vector int __a, vector int __b, vector unsigned char __c) +{ + return (vector int)__builtin_altivec_vperm_4si(__a, __b, __c); +} + +static vector unsigned int __ATTRS_o_ai +vec_vperm(vector unsigned int __a, vector unsigned int __b, vector unsigned char __c) +{ + return (vector unsigned int) + __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); +} + +static vector bool int __ATTRS_o_ai +vec_vperm(vector bool int __a, vector bool int __b, vector unsigned char __c) +{ + return (vector bool int) + __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); +} + +static vector float __ATTRS_o_ai +vec_vperm(vector float __a, vector float __b, vector unsigned char __c) +{ + return (vector float) + __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); +} + +/* vec_re */ + +static vector float __attribute__((__always_inline__)) +vec_re(vector float __a) +{ + return __builtin_altivec_vrefp(__a); +} + +/* vec_vrefp */ + +static vector float __attribute__((__always_inline__)) +vec_vrefp(vector float __a) +{ + return __builtin_altivec_vrefp(__a); +} + +/* vec_rl */ + +static vector signed char __ATTRS_o_ai +vec_rl(vector signed char __a, vector unsigned char __b) +{ + return (vector signed char)__builtin_altivec_vrlb((vector char)__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_rl(vector unsigned char __a, vector unsigned char __b) +{ + return (vector unsigned char)__builtin_altivec_vrlb((vector char)__a, __b); +} + +static vector short __ATTRS_o_ai +vec_rl(vector short __a, vector unsigned short __b) +{ + return __builtin_altivec_vrlh(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_rl(vector unsigned short __a, vector unsigned short __b) +{ + return (vector unsigned short)__builtin_altivec_vrlh((vector short)__a, __b); +} + +static vector int __ATTRS_o_ai +vec_rl(vector int __a, vector unsigned int __b) +{ + return __builtin_altivec_vrlw(__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_rl(vector unsigned int __a, vector unsigned int __b) +{ + return (vector unsigned int)__builtin_altivec_vrlw((vector int)__a, __b); +} + +/* vec_vrlb */ + +static vector signed char __ATTRS_o_ai +vec_vrlb(vector signed char __a, vector unsigned char __b) +{ + return (vector signed char)__builtin_altivec_vrlb((vector char)__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_vrlb(vector unsigned char __a, vector unsigned char __b) +{ + return (vector unsigned char)__builtin_altivec_vrlb((vector char)__a, __b); +} + +/* vec_vrlh */ + +static vector short __ATTRS_o_ai +vec_vrlh(vector short __a, vector unsigned short __b) +{ + return __builtin_altivec_vrlh(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_vrlh(vector unsigned short __a, vector unsigned short __b) +{ + return (vector unsigned short)__builtin_altivec_vrlh((vector short)__a, __b); +} + +/* vec_vrlw */ + +static vector int __ATTRS_o_ai +vec_vrlw(vector int __a, vector unsigned int __b) +{ + return __builtin_altivec_vrlw(__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_vrlw(vector unsigned int __a, vector unsigned int __b) +{ + return (vector unsigned int)__builtin_altivec_vrlw((vector int)__a, __b); +} + +/* vec_round */ + +static vector float __attribute__((__always_inline__)) +vec_round(vector float __a) +{ + return __builtin_altivec_vrfin(__a); +} + +/* vec_vrfin */ + +static vector float __attribute__((__always_inline__)) +vec_vrfin(vector float __a) +{ + return __builtin_altivec_vrfin(__a); +} + +/* vec_rsqrte */ + +static __vector float __attribute__((__always_inline__)) +vec_rsqrte(vector float __a) +{ + return __builtin_altivec_vrsqrtefp(__a); +} + +/* vec_vrsqrtefp */ + +static __vector float __attribute__((__always_inline__)) +vec_vrsqrtefp(vector float __a) +{ + return __builtin_altivec_vrsqrtefp(__a); +} + +/* vec_sel */ + +#define __builtin_altivec_vsel_4si vec_sel + +static vector signed char __ATTRS_o_ai +vec_sel(vector signed char __a, vector signed char __b, vector unsigned char __c) +{ + return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c); +} + +static vector signed char __ATTRS_o_ai +vec_sel(vector signed char __a, vector signed char __b, vector bool char __c) +{ + return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c); +} + +static vector unsigned char __ATTRS_o_ai +vec_sel(vector unsigned char __a, vector unsigned char __b, vector unsigned char __c) +{ + return (__a & ~__c) | (__b & __c); +} + +static vector unsigned char __ATTRS_o_ai +vec_sel(vector unsigned char __a, vector unsigned char __b, vector bool char __c) +{ + return (__a & ~(vector unsigned char)__c) | (__b & (vector unsigned char)__c); +} + +static vector bool char __ATTRS_o_ai +vec_sel(vector bool char __a, vector bool char __b, vector unsigned char __c) +{ + return (__a & ~(vector bool char)__c) | (__b & (vector bool char)__c); +} + +static vector bool char __ATTRS_o_ai +vec_sel(vector bool char __a, vector bool char __b, vector bool char __c) +{ + return (__a & ~__c) | (__b & __c); +} + +static vector short __ATTRS_o_ai +vec_sel(vector short __a, vector short __b, vector unsigned short __c) +{ + return (__a & ~(vector short)__c) | (__b & (vector short)__c); +} + +static vector short __ATTRS_o_ai +vec_sel(vector short __a, vector short __b, vector bool short __c) +{ + return (__a & ~(vector short)__c) | (__b & (vector short)__c); +} + +static vector unsigned short __ATTRS_o_ai +vec_sel(vector unsigned short __a, + vector unsigned short __b, + vector unsigned short __c) +{ + return (__a & ~__c) | (__b & __c); +} + +static vector unsigned short __ATTRS_o_ai +vec_sel(vector unsigned short __a, vector unsigned short __b, vector bool short __c) +{ + return (__a & ~(vector unsigned short)__c) | (__b & (vector unsigned short)__c); +} + +static vector bool short __ATTRS_o_ai +vec_sel(vector bool short __a, vector bool short __b, vector unsigned short __c) +{ + return (__a & ~(vector bool short)__c) | (__b & (vector bool short)__c); +} + +static vector bool short __ATTRS_o_ai +vec_sel(vector bool short __a, vector bool short __b, vector bool short __c) +{ + return (__a & ~__c) | (__b & __c); +} + +static vector int __ATTRS_o_ai +vec_sel(vector int __a, vector int __b, vector unsigned int __c) +{ + return (__a & ~(vector int)__c) | (__b & (vector int)__c); +} + +static vector int __ATTRS_o_ai +vec_sel(vector int __a, vector int __b, vector bool int __c) +{ + return (__a & ~(vector int)__c) | (__b & (vector int)__c); +} + +static vector unsigned int __ATTRS_o_ai +vec_sel(vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) +{ + return (__a & ~__c) | (__b & __c); +} + +static vector unsigned int __ATTRS_o_ai +vec_sel(vector unsigned int __a, vector unsigned int __b, vector bool int __c) +{ + return (__a & ~(vector unsigned int)__c) | (__b & (vector unsigned int)__c); +} + +static vector bool int __ATTRS_o_ai +vec_sel(vector bool int __a, vector bool int __b, vector unsigned int __c) +{ + return (__a & ~(vector bool int)__c) | (__b & (vector bool int)__c); +} + +static vector bool int __ATTRS_o_ai +vec_sel(vector bool int __a, vector bool int __b, vector bool int __c) +{ + return (__a & ~__c) | (__b & __c); +} + +static vector float __ATTRS_o_ai +vec_sel(vector float __a, vector float __b, vector unsigned int __c) +{ + vector int __res = ((vector int)__a & ~(vector int)__c) + | ((vector int)__b & (vector int)__c); + return (vector float)__res; +} + +static vector float __ATTRS_o_ai +vec_sel(vector float __a, vector float __b, vector bool int __c) +{ + vector int __res = ((vector int)__a & ~(vector int)__c) + | ((vector int)__b & (vector int)__c); + return (vector float)__res; +} + +/* vec_vsel */ + +static vector signed char __ATTRS_o_ai +vec_vsel(vector signed char __a, vector signed char __b, vector unsigned char __c) +{ + return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c); +} + +static vector signed char __ATTRS_o_ai +vec_vsel(vector signed char __a, vector signed char __b, vector bool char __c) +{ + return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c); +} + +static vector unsigned char __ATTRS_o_ai +vec_vsel(vector unsigned char __a, vector unsigned char __b, vector unsigned char __c) +{ + return (__a & ~__c) | (__b & __c); +} + +static vector unsigned char __ATTRS_o_ai +vec_vsel(vector unsigned char __a, vector unsigned char __b, vector bool char __c) +{ + return (__a & ~(vector unsigned char)__c) | (__b & (vector unsigned char)__c); +} + +static vector bool char __ATTRS_o_ai +vec_vsel(vector bool char __a, vector bool char __b, vector unsigned char __c) +{ + return (__a & ~(vector bool char)__c) | (__b & (vector bool char)__c); +} + +static vector bool char __ATTRS_o_ai +vec_vsel(vector bool char __a, vector bool char __b, vector bool char __c) +{ + return (__a & ~__c) | (__b & __c); +} + +static vector short __ATTRS_o_ai +vec_vsel(vector short __a, vector short __b, vector unsigned short __c) +{ + return (__a & ~(vector short)__c) | (__b & (vector short)__c); +} + +static vector short __ATTRS_o_ai +vec_vsel(vector short __a, vector short __b, vector bool short __c) +{ + return (__a & ~(vector short)__c) | (__b & (vector short)__c); +} + +static vector unsigned short __ATTRS_o_ai +vec_vsel(vector unsigned short __a, + vector unsigned short __b, + vector unsigned short __c) +{ + return (__a & ~__c) | (__b & __c); +} + +static vector unsigned short __ATTRS_o_ai +vec_vsel(vector unsigned short __a, vector unsigned short __b, vector bool short __c) +{ + return (__a & ~(vector unsigned short)__c) | (__b & (vector unsigned short)__c); +} + +static vector bool short __ATTRS_o_ai +vec_vsel(vector bool short __a, vector bool short __b, vector unsigned short __c) +{ + return (__a & ~(vector bool short)__c) | (__b & (vector bool short)__c); +} + +static vector bool short __ATTRS_o_ai +vec_vsel(vector bool short __a, vector bool short __b, vector bool short __c) +{ + return (__a & ~__c) | (__b & __c); +} + +static vector int __ATTRS_o_ai +vec_vsel(vector int __a, vector int __b, vector unsigned int __c) +{ + return (__a & ~(vector int)__c) | (__b & (vector int)__c); +} + +static vector int __ATTRS_o_ai +vec_vsel(vector int __a, vector int __b, vector bool int __c) +{ + return (__a & ~(vector int)__c) | (__b & (vector int)__c); +} + +static vector unsigned int __ATTRS_o_ai +vec_vsel(vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) +{ + return (__a & ~__c) | (__b & __c); +} + +static vector unsigned int __ATTRS_o_ai +vec_vsel(vector unsigned int __a, vector unsigned int __b, vector bool int __c) +{ + return (__a & ~(vector unsigned int)__c) | (__b & (vector unsigned int)__c); +} + +static vector bool int __ATTRS_o_ai +vec_vsel(vector bool int __a, vector bool int __b, vector unsigned int __c) +{ + return (__a & ~(vector bool int)__c) | (__b & (vector bool int)__c); +} + +static vector bool int __ATTRS_o_ai +vec_vsel(vector bool int __a, vector bool int __b, vector bool int __c) +{ + return (__a & ~__c) | (__b & __c); +} + +static vector float __ATTRS_o_ai +vec_vsel(vector float __a, vector float __b, vector unsigned int __c) +{ + vector int __res = ((vector int)__a & ~(vector int)__c) + | ((vector int)__b & (vector int)__c); + return (vector float)__res; +} + +static vector float __ATTRS_o_ai +vec_vsel(vector float __a, vector float __b, vector bool int __c) +{ + vector int __res = ((vector int)__a & ~(vector int)__c) + | ((vector int)__b & (vector int)__c); + return (vector float)__res; +} + +/* vec_sl */ + +static vector signed char __ATTRS_o_ai +vec_sl(vector signed char __a, vector unsigned char __b) +{ + return __a << (vector signed char)__b; +} + +static vector unsigned char __ATTRS_o_ai +vec_sl(vector unsigned char __a, vector unsigned char __b) +{ + return __a << __b; +} + +static vector short __ATTRS_o_ai +vec_sl(vector short __a, vector unsigned short __b) +{ + return __a << (vector short)__b; +} + +static vector unsigned short __ATTRS_o_ai +vec_sl(vector unsigned short __a, vector unsigned short __b) +{ + return __a << __b; +} + +static vector int __ATTRS_o_ai +vec_sl(vector int __a, vector unsigned int __b) +{ + return __a << (vector int)__b; +} + +static vector unsigned int __ATTRS_o_ai +vec_sl(vector unsigned int __a, vector unsigned int __b) +{ + return __a << __b; +} + +/* vec_vslb */ + +#define __builtin_altivec_vslb vec_vslb + +static vector signed char __ATTRS_o_ai +vec_vslb(vector signed char __a, vector unsigned char __b) +{ + return vec_sl(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_vslb(vector unsigned char __a, vector unsigned char __b) +{ + return vec_sl(__a, __b); +} + +/* vec_vslh */ + +#define __builtin_altivec_vslh vec_vslh + +static vector short __ATTRS_o_ai +vec_vslh(vector short __a, vector unsigned short __b) +{ + return vec_sl(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_vslh(vector unsigned short __a, vector unsigned short __b) +{ + return vec_sl(__a, __b); +} + +/* vec_vslw */ + +#define __builtin_altivec_vslw vec_vslw + +static vector int __ATTRS_o_ai +vec_vslw(vector int __a, vector unsigned int __b) +{ + return vec_sl(__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_vslw(vector unsigned int __a, vector unsigned int __b) +{ + return vec_sl(__a, __b); +} + +/* vec_sld */ + +#define __builtin_altivec_vsldoi_4si vec_sld + +static vector signed char __ATTRS_o_ai +vec_sld(vector signed char __a, vector signed char __b, unsigned char __c) +{ + return vec_perm(__a, __b, (vector unsigned char) + (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, + __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); +} + +static vector unsigned char __ATTRS_o_ai +vec_sld(vector unsigned char __a, vector unsigned char __b, unsigned char __c) +{ + return vec_perm(__a, __b, (vector unsigned char) + (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, + __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); +} + +static vector short __ATTRS_o_ai +vec_sld(vector short __a, vector short __b, unsigned char __c) +{ + return vec_perm(__a, __b, (vector unsigned char) + (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, + __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); +} + +static vector unsigned short __ATTRS_o_ai +vec_sld(vector unsigned short __a, vector unsigned short __b, unsigned char __c) +{ + return vec_perm(__a, __b, (vector unsigned char) + (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, + __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); +} + +static vector pixel __ATTRS_o_ai +vec_sld(vector pixel __a, vector pixel __b, unsigned char __c) +{ + return vec_perm(__a, __b, (vector unsigned char) + (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, + __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); +} + +static vector int __ATTRS_o_ai +vec_sld(vector int __a, vector int __b, unsigned char __c) +{ + return vec_perm(__a, __b, (vector unsigned char) + (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, + __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); +} + +static vector unsigned int __ATTRS_o_ai +vec_sld(vector unsigned int __a, vector unsigned int __b, unsigned char __c) +{ + return vec_perm(__a, __b, (vector unsigned char) + (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, + __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); +} + +static vector float __ATTRS_o_ai +vec_sld(vector float __a, vector float __b, unsigned char __c) +{ + return vec_perm(__a, __b, (vector unsigned char) + (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, + __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); +} + +/* vec_vsldoi */ + +static vector signed char __ATTRS_o_ai +vec_vsldoi(vector signed char __a, vector signed char __b, unsigned char __c) +{ + return vec_perm(__a, __b, (vector unsigned char) + (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, + __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); +} + +static vector unsigned char __ATTRS_o_ai +vec_vsldoi(vector unsigned char __a, vector unsigned char __b, unsigned char __c) +{ + return vec_perm(__a, __b, (vector unsigned char) + (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, + __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); +} + +static vector short __ATTRS_o_ai +vec_vsldoi(vector short __a, vector short __b, unsigned char __c) +{ + return vec_perm(__a, __b, (vector unsigned char) + (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, + __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); +} + +static vector unsigned short __ATTRS_o_ai +vec_vsldoi(vector unsigned short __a, vector unsigned short __b, unsigned char __c) +{ + return vec_perm(__a, __b, (vector unsigned char) + (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, + __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); +} + +static vector pixel __ATTRS_o_ai +vec_vsldoi(vector pixel __a, vector pixel __b, unsigned char __c) +{ + return vec_perm(__a, __b, (vector unsigned char) + (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, + __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); +} + +static vector int __ATTRS_o_ai +vec_vsldoi(vector int __a, vector int __b, unsigned char __c) +{ + return vec_perm(__a, __b, (vector unsigned char) + (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, + __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); +} + +static vector unsigned int __ATTRS_o_ai +vec_vsldoi(vector unsigned int __a, vector unsigned int __b, unsigned char __c) +{ + return vec_perm(__a, __b, (vector unsigned char) + (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, + __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); +} + +static vector float __ATTRS_o_ai +vec_vsldoi(vector float __a, vector float __b, unsigned char __c) +{ + return vec_perm(__a, __b, (vector unsigned char) + (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, + __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); +} + +/* vec_sll */ + +static vector signed char __ATTRS_o_ai +vec_sll(vector signed char __a, vector unsigned char __b) +{ + return (vector signed char) + __builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector signed char __ATTRS_o_ai +vec_sll(vector signed char __a, vector unsigned short __b) +{ + return (vector signed char) + __builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector signed char __ATTRS_o_ai +vec_sll(vector signed char __a, vector unsigned int __b) +{ + return (vector signed char) + __builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector unsigned char __ATTRS_o_ai +vec_sll(vector unsigned char __a, vector unsigned char __b) +{ + return (vector unsigned char) + __builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector unsigned char __ATTRS_o_ai +vec_sll(vector unsigned char __a, vector unsigned short __b) +{ + return (vector unsigned char) + __builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector unsigned char __ATTRS_o_ai +vec_sll(vector unsigned char __a, vector unsigned int __b) +{ + return (vector unsigned char) + __builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector bool char __ATTRS_o_ai +vec_sll(vector bool char __a, vector unsigned char __b) +{ + return (vector bool char)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector bool char __ATTRS_o_ai +vec_sll(vector bool char __a, vector unsigned short __b) +{ + return (vector bool char)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector bool char __ATTRS_o_ai +vec_sll(vector bool char __a, vector unsigned int __b) +{ + return (vector bool char)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector short __ATTRS_o_ai +vec_sll(vector short __a, vector unsigned char __b) +{ + return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector short __ATTRS_o_ai +vec_sll(vector short __a, vector unsigned short __b) +{ + return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector short __ATTRS_o_ai +vec_sll(vector short __a, vector unsigned int __b) +{ + return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector unsigned short __ATTRS_o_ai +vec_sll(vector unsigned short __a, vector unsigned char __b) +{ + return (vector unsigned short) + __builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector unsigned short __ATTRS_o_ai +vec_sll(vector unsigned short __a, vector unsigned short __b) +{ + return (vector unsigned short) + __builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector unsigned short __ATTRS_o_ai +vec_sll(vector unsigned short __a, vector unsigned int __b) +{ + return (vector unsigned short) + __builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector bool short __ATTRS_o_ai +vec_sll(vector bool short __a, vector unsigned char __b) +{ + return (vector bool short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector bool short __ATTRS_o_ai +vec_sll(vector bool short __a, vector unsigned short __b) +{ + return (vector bool short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector bool short __ATTRS_o_ai +vec_sll(vector bool short __a, vector unsigned int __b) +{ + return (vector bool short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector pixel __ATTRS_o_ai +vec_sll(vector pixel __a, vector unsigned char __b) +{ + return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector pixel __ATTRS_o_ai +vec_sll(vector pixel __a, vector unsigned short __b) +{ + return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector pixel __ATTRS_o_ai +vec_sll(vector pixel __a, vector unsigned int __b) +{ + return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector int __ATTRS_o_ai +vec_sll(vector int __a, vector unsigned char __b) +{ + return (vector int)__builtin_altivec_vsl(__a, (vector int)__b); +} + +static vector int __ATTRS_o_ai +vec_sll(vector int __a, vector unsigned short __b) +{ + return (vector int)__builtin_altivec_vsl(__a, (vector int)__b); +} + +static vector int __ATTRS_o_ai +vec_sll(vector int __a, vector unsigned int __b) +{ + return (vector int)__builtin_altivec_vsl(__a, (vector int)__b); +} + +static vector unsigned int __ATTRS_o_ai +vec_sll(vector unsigned int __a, vector unsigned char __b) +{ + return (vector unsigned int) + __builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector unsigned int __ATTRS_o_ai +vec_sll(vector unsigned int __a, vector unsigned short __b) +{ + return (vector unsigned int) + __builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector unsigned int __ATTRS_o_ai +vec_sll(vector unsigned int __a, vector unsigned int __b) +{ + return (vector unsigned int) + __builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector bool int __ATTRS_o_ai +vec_sll(vector bool int __a, vector unsigned char __b) +{ + return (vector bool int)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector bool int __ATTRS_o_ai +vec_sll(vector bool int __a, vector unsigned short __b) +{ + return (vector bool int)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector bool int __ATTRS_o_ai +vec_sll(vector bool int __a, vector unsigned int __b) +{ + return (vector bool int)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +/* vec_vsl */ + +static vector signed char __ATTRS_o_ai +vec_vsl(vector signed char __a, vector unsigned char __b) +{ + return (vector signed char) + __builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector signed char __ATTRS_o_ai +vec_vsl(vector signed char __a, vector unsigned short __b) +{ + return (vector signed char) + __builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector signed char __ATTRS_o_ai +vec_vsl(vector signed char __a, vector unsigned int __b) +{ + return (vector signed char) + __builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector unsigned char __ATTRS_o_ai +vec_vsl(vector unsigned char __a, vector unsigned char __b) +{ + return (vector unsigned char) + __builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector unsigned char __ATTRS_o_ai +vec_vsl(vector unsigned char __a, vector unsigned short __b) +{ + return (vector unsigned char) + __builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector unsigned char __ATTRS_o_ai +vec_vsl(vector unsigned char __a, vector unsigned int __b) +{ + return (vector unsigned char) + __builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector bool char __ATTRS_o_ai +vec_vsl(vector bool char __a, vector unsigned char __b) +{ + return (vector bool char)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector bool char __ATTRS_o_ai +vec_vsl(vector bool char __a, vector unsigned short __b) +{ + return (vector bool char)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector bool char __ATTRS_o_ai +vec_vsl(vector bool char __a, vector unsigned int __b) +{ + return (vector bool char)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector short __ATTRS_o_ai +vec_vsl(vector short __a, vector unsigned char __b) +{ + return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector short __ATTRS_o_ai +vec_vsl(vector short __a, vector unsigned short __b) +{ + return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector short __ATTRS_o_ai +vec_vsl(vector short __a, vector unsigned int __b) +{ + return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector unsigned short __ATTRS_o_ai +vec_vsl(vector unsigned short __a, vector unsigned char __b) +{ + return (vector unsigned short) + __builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector unsigned short __ATTRS_o_ai +vec_vsl(vector unsigned short __a, vector unsigned short __b) +{ + return (vector unsigned short) + __builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector unsigned short __ATTRS_o_ai +vec_vsl(vector unsigned short __a, vector unsigned int __b) +{ + return (vector unsigned short) + __builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector bool short __ATTRS_o_ai +vec_vsl(vector bool short __a, vector unsigned char __b) +{ + return (vector bool short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector bool short __ATTRS_o_ai +vec_vsl(vector bool short __a, vector unsigned short __b) +{ + return (vector bool short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector bool short __ATTRS_o_ai +vec_vsl(vector bool short __a, vector unsigned int __b) +{ + return (vector bool short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector pixel __ATTRS_o_ai +vec_vsl(vector pixel __a, vector unsigned char __b) +{ + return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector pixel __ATTRS_o_ai +vec_vsl(vector pixel __a, vector unsigned short __b) +{ + return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector pixel __ATTRS_o_ai +vec_vsl(vector pixel __a, vector unsigned int __b) +{ + return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector int __ATTRS_o_ai +vec_vsl(vector int __a, vector unsigned char __b) +{ + return (vector int)__builtin_altivec_vsl(__a, (vector int)__b); +} + +static vector int __ATTRS_o_ai +vec_vsl(vector int __a, vector unsigned short __b) +{ + return (vector int)__builtin_altivec_vsl(__a, (vector int)__b); +} + +static vector int __ATTRS_o_ai +vec_vsl(vector int __a, vector unsigned int __b) +{ + return (vector int)__builtin_altivec_vsl(__a, (vector int)__b); +} + +static vector unsigned int __ATTRS_o_ai +vec_vsl(vector unsigned int __a, vector unsigned char __b) +{ + return (vector unsigned int) + __builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector unsigned int __ATTRS_o_ai +vec_vsl(vector unsigned int __a, vector unsigned short __b) +{ + return (vector unsigned int) + __builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector unsigned int __ATTRS_o_ai +vec_vsl(vector unsigned int __a, vector unsigned int __b) +{ + return (vector unsigned int) + __builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector bool int __ATTRS_o_ai +vec_vsl(vector bool int __a, vector unsigned char __b) +{ + return (vector bool int)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector bool int __ATTRS_o_ai +vec_vsl(vector bool int __a, vector unsigned short __b) +{ + return (vector bool int)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +static vector bool int __ATTRS_o_ai +vec_vsl(vector bool int __a, vector unsigned int __b) +{ + return (vector bool int)__builtin_altivec_vsl((vector int)__a, (vector int)__b); +} + +/* vec_slo */ + +static vector signed char __ATTRS_o_ai +vec_slo(vector signed char __a, vector signed char __b) +{ + return (vector signed char) + __builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +static vector signed char __ATTRS_o_ai +vec_slo(vector signed char __a, vector unsigned char __b) +{ + return (vector signed char) + __builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +static vector unsigned char __ATTRS_o_ai +vec_slo(vector unsigned char __a, vector signed char __b) +{ + return (vector unsigned char) + __builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +static vector unsigned char __ATTRS_o_ai +vec_slo(vector unsigned char __a, vector unsigned char __b) +{ + return (vector unsigned char) + __builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +static vector short __ATTRS_o_ai +vec_slo(vector short __a, vector signed char __b) +{ + return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +static vector short __ATTRS_o_ai +vec_slo(vector short __a, vector unsigned char __b) +{ + return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +static vector unsigned short __ATTRS_o_ai +vec_slo(vector unsigned short __a, vector signed char __b) +{ + return (vector unsigned short) + __builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +static vector unsigned short __ATTRS_o_ai +vec_slo(vector unsigned short __a, vector unsigned char __b) +{ + return (vector unsigned short) + __builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +static vector pixel __ATTRS_o_ai +vec_slo(vector pixel __a, vector signed char __b) +{ + return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +static vector pixel __ATTRS_o_ai +vec_slo(vector pixel __a, vector unsigned char __b) +{ + return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +static vector int __ATTRS_o_ai +vec_slo(vector int __a, vector signed char __b) +{ + return (vector int)__builtin_altivec_vslo(__a, (vector int)__b); +} + +static vector int __ATTRS_o_ai +vec_slo(vector int __a, vector unsigned char __b) +{ + return (vector int)__builtin_altivec_vslo(__a, (vector int)__b); +} + +static vector unsigned int __ATTRS_o_ai +vec_slo(vector unsigned int __a, vector signed char __b) +{ + return (vector unsigned int) + __builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +static vector unsigned int __ATTRS_o_ai +vec_slo(vector unsigned int __a, vector unsigned char __b) +{ + return (vector unsigned int) + __builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +static vector float __ATTRS_o_ai +vec_slo(vector float __a, vector signed char __b) +{ + return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +static vector float __ATTRS_o_ai +vec_slo(vector float __a, vector unsigned char __b) +{ + return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +/* vec_vslo */ + +static vector signed char __ATTRS_o_ai +vec_vslo(vector signed char __a, vector signed char __b) +{ + return (vector signed char) + __builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +static vector signed char __ATTRS_o_ai +vec_vslo(vector signed char __a, vector unsigned char __b) +{ + return (vector signed char) + __builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +static vector unsigned char __ATTRS_o_ai +vec_vslo(vector unsigned char __a, vector signed char __b) +{ + return (vector unsigned char) + __builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +static vector unsigned char __ATTRS_o_ai +vec_vslo(vector unsigned char __a, vector unsigned char __b) +{ + return (vector unsigned char) + __builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +static vector short __ATTRS_o_ai +vec_vslo(vector short __a, vector signed char __b) +{ + return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +static vector short __ATTRS_o_ai +vec_vslo(vector short __a, vector unsigned char __b) +{ + return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +static vector unsigned short __ATTRS_o_ai +vec_vslo(vector unsigned short __a, vector signed char __b) +{ + return (vector unsigned short) + __builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +static vector unsigned short __ATTRS_o_ai +vec_vslo(vector unsigned short __a, vector unsigned char __b) +{ + return (vector unsigned short) + __builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +static vector pixel __ATTRS_o_ai +vec_vslo(vector pixel __a, vector signed char __b) +{ + return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +static vector pixel __ATTRS_o_ai +vec_vslo(vector pixel __a, vector unsigned char __b) +{ + return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +static vector int __ATTRS_o_ai +vec_vslo(vector int __a, vector signed char __b) +{ + return (vector int)__builtin_altivec_vslo(__a, (vector int)__b); +} + +static vector int __ATTRS_o_ai +vec_vslo(vector int __a, vector unsigned char __b) +{ + return (vector int)__builtin_altivec_vslo(__a, (vector int)__b); +} + +static vector unsigned int __ATTRS_o_ai +vec_vslo(vector unsigned int __a, vector signed char __b) +{ + return (vector unsigned int) + __builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +static vector unsigned int __ATTRS_o_ai +vec_vslo(vector unsigned int __a, vector unsigned char __b) +{ + return (vector unsigned int) + __builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +static vector float __ATTRS_o_ai +vec_vslo(vector float __a, vector signed char __b) +{ + return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +static vector float __ATTRS_o_ai +vec_vslo(vector float __a, vector unsigned char __b) +{ + return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b); +} + +/* vec_splat */ + +static vector signed char __ATTRS_o_ai +vec_splat(vector signed char __a, unsigned char __b) +{ + return vec_perm(__a, __a, (vector unsigned char)(__b)); +} + +static vector unsigned char __ATTRS_o_ai +vec_splat(vector unsigned char __a, unsigned char __b) +{ + return vec_perm(__a, __a, (vector unsigned char)(__b)); +} + +static vector bool char __ATTRS_o_ai +vec_splat(vector bool char __a, unsigned char __b) +{ + return vec_perm(__a, __a, (vector unsigned char)(__b)); +} + +static vector short __ATTRS_o_ai +vec_splat(vector short __a, unsigned char __b) +{ + __b *= 2; + unsigned char b1=__b+1; + return vec_perm(__a, __a, (vector unsigned char) + (__b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1)); +} + +static vector unsigned short __ATTRS_o_ai +vec_splat(vector unsigned short __a, unsigned char __b) +{ + __b *= 2; + unsigned char b1=__b+1; + return vec_perm(__a, __a, (vector unsigned char) + (__b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1)); +} + +static vector bool short __ATTRS_o_ai +vec_splat(vector bool short __a, unsigned char __b) +{ + __b *= 2; + unsigned char b1=__b+1; + return vec_perm(__a, __a, (vector unsigned char) + (__b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1)); +} + +static vector pixel __ATTRS_o_ai +vec_splat(vector pixel __a, unsigned char __b) +{ + __b *= 2; + unsigned char b1=__b+1; + return vec_perm(__a, __a, (vector unsigned char) + (__b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1)); +} + +static vector int __ATTRS_o_ai +vec_splat(vector int __a, unsigned char __b) +{ + __b *= 4; + unsigned char b1=__b+1, b2=__b+2, b3=__b+3; + return vec_perm(__a, __a, (vector unsigned char) + (__b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3)); +} + +static vector unsigned int __ATTRS_o_ai +vec_splat(vector unsigned int __a, unsigned char __b) +{ + __b *= 4; + unsigned char b1=__b+1, b2=__b+2, b3=__b+3; + return vec_perm(__a, __a, (vector unsigned char) + (__b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3)); +} + +static vector bool int __ATTRS_o_ai +vec_splat(vector bool int __a, unsigned char __b) +{ + __b *= 4; + unsigned char b1=__b+1, b2=__b+2, b3=__b+3; + return vec_perm(__a, __a, (vector unsigned char) + (__b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3)); +} + +static vector float __ATTRS_o_ai +vec_splat(vector float __a, unsigned char __b) +{ + __b *= 4; + unsigned char b1=__b+1, b2=__b+2, b3=__b+3; + return vec_perm(__a, __a, (vector unsigned char) + (__b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3)); +} + +/* vec_vspltb */ + +#define __builtin_altivec_vspltb vec_vspltb + +static vector signed char __ATTRS_o_ai +vec_vspltb(vector signed char __a, unsigned char __b) +{ + return vec_perm(__a, __a, (vector unsigned char)(__b)); +} + +static vector unsigned char __ATTRS_o_ai +vec_vspltb(vector unsigned char __a, unsigned char __b) +{ + return vec_perm(__a, __a, (vector unsigned char)(__b)); +} + +static vector bool char __ATTRS_o_ai +vec_vspltb(vector bool char __a, unsigned char __b) +{ + return vec_perm(__a, __a, (vector unsigned char)(__b)); +} + +/* vec_vsplth */ + +#define __builtin_altivec_vsplth vec_vsplth + +static vector short __ATTRS_o_ai +vec_vsplth(vector short __a, unsigned char __b) +{ + __b *= 2; + unsigned char b1=__b+1; + return vec_perm(__a, __a, (vector unsigned char) + (__b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1)); +} + +static vector unsigned short __ATTRS_o_ai +vec_vsplth(vector unsigned short __a, unsigned char __b) +{ + __b *= 2; + unsigned char b1=__b+1; + return vec_perm(__a, __a, (vector unsigned char) + (__b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1)); +} + +static vector bool short __ATTRS_o_ai +vec_vsplth(vector bool short __a, unsigned char __b) +{ + __b *= 2; + unsigned char b1=__b+1; + return vec_perm(__a, __a, (vector unsigned char) + (__b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1)); +} + +static vector pixel __ATTRS_o_ai +vec_vsplth(vector pixel __a, unsigned char __b) +{ + __b *= 2; + unsigned char b1=__b+1; + return vec_perm(__a, __a, (vector unsigned char) + (__b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1)); +} + +/* vec_vspltw */ + +#define __builtin_altivec_vspltw vec_vspltw + +static vector int __ATTRS_o_ai +vec_vspltw(vector int __a, unsigned char __b) +{ + __b *= 4; + unsigned char b1=__b+1, b2=__b+2, b3=__b+3; + return vec_perm(__a, __a, (vector unsigned char) + (__b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3)); +} + +static vector unsigned int __ATTRS_o_ai +vec_vspltw(vector unsigned int __a, unsigned char __b) +{ + __b *= 4; + unsigned char b1=__b+1, b2=__b+2, b3=__b+3; + return vec_perm(__a, __a, (vector unsigned char) + (__b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3)); +} + +static vector bool int __ATTRS_o_ai +vec_vspltw(vector bool int __a, unsigned char __b) +{ + __b *= 4; + unsigned char b1=__b+1, b2=__b+2, b3=__b+3; + return vec_perm(__a, __a, (vector unsigned char) + (__b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3)); +} + +static vector float __ATTRS_o_ai +vec_vspltw(vector float __a, unsigned char __b) +{ + __b *= 4; + unsigned char b1=__b+1, b2=__b+2, b3=__b+3; + return vec_perm(__a, __a, (vector unsigned char) + (__b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3)); +} + +/* vec_splat_s8 */ + +#define __builtin_altivec_vspltisb vec_splat_s8 + +// FIXME: parameter should be treated as 5-bit signed literal +static vector signed char __ATTRS_o_ai +vec_splat_s8(signed char __a) +{ + return (vector signed char)(__a); +} + +/* vec_vspltisb */ + +// FIXME: parameter should be treated as 5-bit signed literal +static vector signed char __ATTRS_o_ai +vec_vspltisb(signed char __a) +{ + return (vector signed char)(__a); +} + +/* vec_splat_s16 */ + +#define __builtin_altivec_vspltish vec_splat_s16 + +// FIXME: parameter should be treated as 5-bit signed literal +static vector short __ATTRS_o_ai +vec_splat_s16(signed char __a) +{ + return (vector short)(__a); +} + +/* vec_vspltish */ + +// FIXME: parameter should be treated as 5-bit signed literal +static vector short __ATTRS_o_ai +vec_vspltish(signed char __a) +{ + return (vector short)(__a); +} + +/* vec_splat_s32 */ + +#define __builtin_altivec_vspltisw vec_splat_s32 + +// FIXME: parameter should be treated as 5-bit signed literal +static vector int __ATTRS_o_ai +vec_splat_s32(signed char __a) +{ + return (vector int)(__a); +} + +/* vec_vspltisw */ + +// FIXME: parameter should be treated as 5-bit signed literal +static vector int __ATTRS_o_ai +vec_vspltisw(signed char __a) +{ + return (vector int)(__a); +} + +/* vec_splat_u8 */ + +// FIXME: parameter should be treated as 5-bit signed literal +static vector unsigned char __ATTRS_o_ai +vec_splat_u8(unsigned char __a) +{ + return (vector unsigned char)(__a); +} + +/* vec_splat_u16 */ + +// FIXME: parameter should be treated as 5-bit signed literal +static vector unsigned short __ATTRS_o_ai +vec_splat_u16(signed char __a) +{ + return (vector unsigned short)(__a); +} + +/* vec_splat_u32 */ + +// FIXME: parameter should be treated as 5-bit signed literal +static vector unsigned int __ATTRS_o_ai +vec_splat_u32(signed char __a) +{ + return (vector unsigned int)(__a); +} + +/* vec_sr */ + +static vector signed char __ATTRS_o_ai +vec_sr(vector signed char __a, vector unsigned char __b) +{ + return __a >> (vector signed char)__b; +} + +static vector unsigned char __ATTRS_o_ai +vec_sr(vector unsigned char __a, vector unsigned char __b) +{ + return __a >> __b; +} + +static vector short __ATTRS_o_ai +vec_sr(vector short __a, vector unsigned short __b) +{ + return __a >> (vector short)__b; +} + +static vector unsigned short __ATTRS_o_ai +vec_sr(vector unsigned short __a, vector unsigned short __b) +{ + return __a >> __b; +} + +static vector int __ATTRS_o_ai +vec_sr(vector int __a, vector unsigned int __b) +{ + return __a >> (vector int)__b; +} + +static vector unsigned int __ATTRS_o_ai +vec_sr(vector unsigned int __a, vector unsigned int __b) +{ + return __a >> __b; +} + +/* vec_vsrb */ + +#define __builtin_altivec_vsrb vec_vsrb + +static vector signed char __ATTRS_o_ai +vec_vsrb(vector signed char __a, vector unsigned char __b) +{ + return __a >> (vector signed char)__b; +} + +static vector unsigned char __ATTRS_o_ai +vec_vsrb(vector unsigned char __a, vector unsigned char __b) +{ + return __a >> __b; +} + +/* vec_vsrh */ + +#define __builtin_altivec_vsrh vec_vsrh + +static vector short __ATTRS_o_ai +vec_vsrh(vector short __a, vector unsigned short __b) +{ + return __a >> (vector short)__b; +} + +static vector unsigned short __ATTRS_o_ai +vec_vsrh(vector unsigned short __a, vector unsigned short __b) +{ + return __a >> __b; +} + +/* vec_vsrw */ + +#define __builtin_altivec_vsrw vec_vsrw + +static vector int __ATTRS_o_ai +vec_vsrw(vector int __a, vector unsigned int __b) +{ + return __a >> (vector int)__b; +} + +static vector unsigned int __ATTRS_o_ai +vec_vsrw(vector unsigned int __a, vector unsigned int __b) +{ + return __a >> __b; +} + +/* vec_sra */ + +static vector signed char __ATTRS_o_ai +vec_sra(vector signed char __a, vector unsigned char __b) +{ + return (vector signed char)__builtin_altivec_vsrab((vector char)__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_sra(vector unsigned char __a, vector unsigned char __b) +{ + return (vector unsigned char)__builtin_altivec_vsrab((vector char)__a, __b); +} + +static vector short __ATTRS_o_ai +vec_sra(vector short __a, vector unsigned short __b) +{ + return __builtin_altivec_vsrah(__a, (vector unsigned short)__b); +} + +static vector unsigned short __ATTRS_o_ai +vec_sra(vector unsigned short __a, vector unsigned short __b) +{ + return (vector unsigned short)__builtin_altivec_vsrah((vector short)__a, __b); +} + +static vector int __ATTRS_o_ai +vec_sra(vector int __a, vector unsigned int __b) +{ + return __builtin_altivec_vsraw(__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_sra(vector unsigned int __a, vector unsigned int __b) +{ + return (vector unsigned int)__builtin_altivec_vsraw((vector int)__a, __b); +} + +/* vec_vsrab */ + +static vector signed char __ATTRS_o_ai +vec_vsrab(vector signed char __a, vector unsigned char __b) +{ + return (vector signed char)__builtin_altivec_vsrab((vector char)__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_vsrab(vector unsigned char __a, vector unsigned char __b) +{ + return (vector unsigned char)__builtin_altivec_vsrab((vector char)__a, __b); +} + +/* vec_vsrah */ + +static vector short __ATTRS_o_ai +vec_vsrah(vector short __a, vector unsigned short __b) +{ + return __builtin_altivec_vsrah(__a, (vector unsigned short)__b); +} + +static vector unsigned short __ATTRS_o_ai +vec_vsrah(vector unsigned short __a, vector unsigned short __b) +{ + return (vector unsigned short)__builtin_altivec_vsrah((vector short)__a, __b); +} + +/* vec_vsraw */ + +static vector int __ATTRS_o_ai +vec_vsraw(vector int __a, vector unsigned int __b) +{ + return __builtin_altivec_vsraw(__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_vsraw(vector unsigned int __a, vector unsigned int __b) +{ + return (vector unsigned int)__builtin_altivec_vsraw((vector int)__a, __b); +} + +/* vec_srl */ + +static vector signed char __ATTRS_o_ai +vec_srl(vector signed char __a, vector unsigned char __b) +{ + return (vector signed char) + __builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector signed char __ATTRS_o_ai +vec_srl(vector signed char __a, vector unsigned short __b) +{ + return (vector signed char) + __builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector signed char __ATTRS_o_ai +vec_srl(vector signed char __a, vector unsigned int __b) +{ + return (vector signed char) + __builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector unsigned char __ATTRS_o_ai +vec_srl(vector unsigned char __a, vector unsigned char __b) +{ + return (vector unsigned char) + __builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector unsigned char __ATTRS_o_ai +vec_srl(vector unsigned char __a, vector unsigned short __b) +{ + return (vector unsigned char) + __builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector unsigned char __ATTRS_o_ai +vec_srl(vector unsigned char __a, vector unsigned int __b) +{ + return (vector unsigned char) + __builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector bool char __ATTRS_o_ai +vec_srl(vector bool char __a, vector unsigned char __b) +{ + return (vector bool char)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector bool char __ATTRS_o_ai +vec_srl(vector bool char __a, vector unsigned short __b) +{ + return (vector bool char)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector bool char __ATTRS_o_ai +vec_srl(vector bool char __a, vector unsigned int __b) +{ + return (vector bool char)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector short __ATTRS_o_ai +vec_srl(vector short __a, vector unsigned char __b) +{ + return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector short __ATTRS_o_ai +vec_srl(vector short __a, vector unsigned short __b) +{ + return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector short __ATTRS_o_ai +vec_srl(vector short __a, vector unsigned int __b) +{ + return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector unsigned short __ATTRS_o_ai +vec_srl(vector unsigned short __a, vector unsigned char __b) +{ + return (vector unsigned short) + __builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector unsigned short __ATTRS_o_ai +vec_srl(vector unsigned short __a, vector unsigned short __b) +{ + return (vector unsigned short) + __builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector unsigned short __ATTRS_o_ai +vec_srl(vector unsigned short __a, vector unsigned int __b) +{ + return (vector unsigned short) + __builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector bool short __ATTRS_o_ai +vec_srl(vector bool short __a, vector unsigned char __b) +{ + return (vector bool short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector bool short __ATTRS_o_ai +vec_srl(vector bool short __a, vector unsigned short __b) +{ + return (vector bool short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector bool short __ATTRS_o_ai +vec_srl(vector bool short __a, vector unsigned int __b) +{ + return (vector bool short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector pixel __ATTRS_o_ai +vec_srl(vector pixel __a, vector unsigned char __b) +{ + return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector pixel __ATTRS_o_ai +vec_srl(vector pixel __a, vector unsigned short __b) +{ + return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector pixel __ATTRS_o_ai +vec_srl(vector pixel __a, vector unsigned int __b) +{ + return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector int __ATTRS_o_ai +vec_srl(vector int __a, vector unsigned char __b) +{ + return (vector int)__builtin_altivec_vsr(__a, (vector int)__b); +} + +static vector int __ATTRS_o_ai +vec_srl(vector int __a, vector unsigned short __b) +{ + return (vector int)__builtin_altivec_vsr(__a, (vector int)__b); +} + +static vector int __ATTRS_o_ai +vec_srl(vector int __a, vector unsigned int __b) +{ + return (vector int)__builtin_altivec_vsr(__a, (vector int)__b); +} + +static vector unsigned int __ATTRS_o_ai +vec_srl(vector unsigned int __a, vector unsigned char __b) +{ + return (vector unsigned int) + __builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector unsigned int __ATTRS_o_ai +vec_srl(vector unsigned int __a, vector unsigned short __b) +{ + return (vector unsigned int) + __builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector unsigned int __ATTRS_o_ai +vec_srl(vector unsigned int __a, vector unsigned int __b) +{ + return (vector unsigned int) + __builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector bool int __ATTRS_o_ai +vec_srl(vector bool int __a, vector unsigned char __b) +{ + return (vector bool int)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector bool int __ATTRS_o_ai +vec_srl(vector bool int __a, vector unsigned short __b) +{ + return (vector bool int)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector bool int __ATTRS_o_ai +vec_srl(vector bool int __a, vector unsigned int __b) +{ + return (vector bool int)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +/* vec_vsr */ + +static vector signed char __ATTRS_o_ai +vec_vsr(vector signed char __a, vector unsigned char __b) +{ + return (vector signed char) + __builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector signed char __ATTRS_o_ai +vec_vsr(vector signed char __a, vector unsigned short __b) +{ + return (vector signed char) + __builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector signed char __ATTRS_o_ai +vec_vsr(vector signed char __a, vector unsigned int __b) +{ + return (vector signed char) + __builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector unsigned char __ATTRS_o_ai +vec_vsr(vector unsigned char __a, vector unsigned char __b) +{ + return (vector unsigned char) + __builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector unsigned char __ATTRS_o_ai +vec_vsr(vector unsigned char __a, vector unsigned short __b) +{ + return (vector unsigned char) + __builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector unsigned char __ATTRS_o_ai +vec_vsr(vector unsigned char __a, vector unsigned int __b) +{ + return (vector unsigned char) + __builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector bool char __ATTRS_o_ai +vec_vsr(vector bool char __a, vector unsigned char __b) +{ + return (vector bool char)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector bool char __ATTRS_o_ai +vec_vsr(vector bool char __a, vector unsigned short __b) +{ + return (vector bool char)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector bool char __ATTRS_o_ai +vec_vsr(vector bool char __a, vector unsigned int __b) +{ + return (vector bool char)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector short __ATTRS_o_ai +vec_vsr(vector short __a, vector unsigned char __b) +{ + return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector short __ATTRS_o_ai +vec_vsr(vector short __a, vector unsigned short __b) +{ + return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector short __ATTRS_o_ai +vec_vsr(vector short __a, vector unsigned int __b) +{ + return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector unsigned short __ATTRS_o_ai +vec_vsr(vector unsigned short __a, vector unsigned char __b) +{ + return (vector unsigned short) + __builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector unsigned short __ATTRS_o_ai +vec_vsr(vector unsigned short __a, vector unsigned short __b) +{ + return (vector unsigned short) + __builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector unsigned short __ATTRS_o_ai +vec_vsr(vector unsigned short __a, vector unsigned int __b) +{ + return (vector unsigned short) + __builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector bool short __ATTRS_o_ai +vec_vsr(vector bool short __a, vector unsigned char __b) +{ + return (vector bool short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector bool short __ATTRS_o_ai +vec_vsr(vector bool short __a, vector unsigned short __b) +{ + return (vector bool short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector bool short __ATTRS_o_ai +vec_vsr(vector bool short __a, vector unsigned int __b) +{ + return (vector bool short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector pixel __ATTRS_o_ai +vec_vsr(vector pixel __a, vector unsigned char __b) +{ + return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector pixel __ATTRS_o_ai +vec_vsr(vector pixel __a, vector unsigned short __b) +{ + return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector pixel __ATTRS_o_ai +vec_vsr(vector pixel __a, vector unsigned int __b) +{ + return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector int __ATTRS_o_ai +vec_vsr(vector int __a, vector unsigned char __b) +{ + return (vector int)__builtin_altivec_vsr(__a, (vector int)__b); +} + +static vector int __ATTRS_o_ai +vec_vsr(vector int __a, vector unsigned short __b) +{ + return (vector int)__builtin_altivec_vsr(__a, (vector int)__b); +} + +static vector int __ATTRS_o_ai +vec_vsr(vector int __a, vector unsigned int __b) +{ + return (vector int)__builtin_altivec_vsr(__a, (vector int)__b); +} + +static vector unsigned int __ATTRS_o_ai +vec_vsr(vector unsigned int __a, vector unsigned char __b) +{ + return (vector unsigned int) + __builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector unsigned int __ATTRS_o_ai +vec_vsr(vector unsigned int __a, vector unsigned short __b) +{ + return (vector unsigned int) + __builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector unsigned int __ATTRS_o_ai +vec_vsr(vector unsigned int __a, vector unsigned int __b) +{ + return (vector unsigned int) + __builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector bool int __ATTRS_o_ai +vec_vsr(vector bool int __a, vector unsigned char __b) +{ + return (vector bool int)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector bool int __ATTRS_o_ai +vec_vsr(vector bool int __a, vector unsigned short __b) +{ + return (vector bool int)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +static vector bool int __ATTRS_o_ai +vec_vsr(vector bool int __a, vector unsigned int __b) +{ + return (vector bool int)__builtin_altivec_vsr((vector int)__a, (vector int)__b); +} + +/* vec_sro */ + +static vector signed char __ATTRS_o_ai +vec_sro(vector signed char __a, vector signed char __b) +{ + return (vector signed char) + __builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +static vector signed char __ATTRS_o_ai +vec_sro(vector signed char __a, vector unsigned char __b) +{ + return (vector signed char) + __builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +static vector unsigned char __ATTRS_o_ai +vec_sro(vector unsigned char __a, vector signed char __b) +{ + return (vector unsigned char) + __builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +static vector unsigned char __ATTRS_o_ai +vec_sro(vector unsigned char __a, vector unsigned char __b) +{ + return (vector unsigned char) + __builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +static vector short __ATTRS_o_ai +vec_sro(vector short __a, vector signed char __b) +{ + return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +static vector short __ATTRS_o_ai +vec_sro(vector short __a, vector unsigned char __b) +{ + return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +static vector unsigned short __ATTRS_o_ai +vec_sro(vector unsigned short __a, vector signed char __b) +{ + return (vector unsigned short) + __builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +static vector unsigned short __ATTRS_o_ai +vec_sro(vector unsigned short __a, vector unsigned char __b) +{ + return (vector unsigned short) + __builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +static vector pixel __ATTRS_o_ai +vec_sro(vector pixel __a, vector signed char __b) +{ + return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +static vector pixel __ATTRS_o_ai +vec_sro(vector pixel __a, vector unsigned char __b) +{ + return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +static vector int __ATTRS_o_ai +vec_sro(vector int __a, vector signed char __b) +{ + return (vector int)__builtin_altivec_vsro(__a, (vector int)__b); +} + +static vector int __ATTRS_o_ai +vec_sro(vector int __a, vector unsigned char __b) +{ + return (vector int)__builtin_altivec_vsro(__a, (vector int)__b); +} + +static vector unsigned int __ATTRS_o_ai +vec_sro(vector unsigned int __a, vector signed char __b) +{ + return (vector unsigned int) + __builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +static vector unsigned int __ATTRS_o_ai +vec_sro(vector unsigned int __a, vector unsigned char __b) +{ + return (vector unsigned int) + __builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +static vector float __ATTRS_o_ai +vec_sro(vector float __a, vector signed char __b) +{ + return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +static vector float __ATTRS_o_ai +vec_sro(vector float __a, vector unsigned char __b) +{ + return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +/* vec_vsro */ + +static vector signed char __ATTRS_o_ai +vec_vsro(vector signed char __a, vector signed char __b) +{ + return (vector signed char) + __builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +static vector signed char __ATTRS_o_ai +vec_vsro(vector signed char __a, vector unsigned char __b) +{ + return (vector signed char) + __builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +static vector unsigned char __ATTRS_o_ai +vec_vsro(vector unsigned char __a, vector signed char __b) +{ + return (vector unsigned char) + __builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +static vector unsigned char __ATTRS_o_ai +vec_vsro(vector unsigned char __a, vector unsigned char __b) +{ + return (vector unsigned char) + __builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +static vector short __ATTRS_o_ai +vec_vsro(vector short __a, vector signed char __b) +{ + return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +static vector short __ATTRS_o_ai +vec_vsro(vector short __a, vector unsigned char __b) +{ + return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +static vector unsigned short __ATTRS_o_ai +vec_vsro(vector unsigned short __a, vector signed char __b) +{ + return (vector unsigned short) + __builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +static vector unsigned short __ATTRS_o_ai +vec_vsro(vector unsigned short __a, vector unsigned char __b) +{ + return (vector unsigned short) + __builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +static vector pixel __ATTRS_o_ai +vec_vsro(vector pixel __a, vector signed char __b) +{ + return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +static vector pixel __ATTRS_o_ai +vec_vsro(vector pixel __a, vector unsigned char __b) +{ + return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +static vector int __ATTRS_o_ai +vec_vsro(vector int __a, vector signed char __b) +{ + return (vector int)__builtin_altivec_vsro(__a, (vector int)__b); +} + +static vector int __ATTRS_o_ai +vec_vsro(vector int __a, vector unsigned char __b) +{ + return (vector int)__builtin_altivec_vsro(__a, (vector int)__b); +} + +static vector unsigned int __ATTRS_o_ai +vec_vsro(vector unsigned int __a, vector signed char __b) +{ + return (vector unsigned int) + __builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +static vector unsigned int __ATTRS_o_ai +vec_vsro(vector unsigned int __a, vector unsigned char __b) +{ + return (vector unsigned int) + __builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +static vector float __ATTRS_o_ai +vec_vsro(vector float __a, vector signed char __b) +{ + return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +static vector float __ATTRS_o_ai +vec_vsro(vector float __a, vector unsigned char __b) +{ + return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b); +} + +/* vec_st */ + +static void __ATTRS_o_ai +vec_st(vector signed char __a, int __b, vector signed char *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_st(vector signed char __a, int __b, signed char *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_st(vector unsigned char __a, int __b, vector unsigned char *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_st(vector unsigned char __a, int __b, unsigned char *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_st(vector bool char __a, int __b, signed char *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_st(vector bool char __a, int __b, unsigned char *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_st(vector bool char __a, int __b, vector bool char *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_st(vector short __a, int __b, vector short *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_st(vector short __a, int __b, short *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_st(vector unsigned short __a, int __b, vector unsigned short *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_st(vector unsigned short __a, int __b, unsigned short *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_st(vector bool short __a, int __b, short *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_st(vector bool short __a, int __b, unsigned short *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_st(vector bool short __a, int __b, vector bool short *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_st(vector pixel __a, int __b, short *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_st(vector pixel __a, int __b, unsigned short *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_st(vector pixel __a, int __b, vector pixel *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_st(vector int __a, int __b, vector int *__c) +{ + __builtin_altivec_stvx(__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_st(vector int __a, int __b, int *__c) +{ + __builtin_altivec_stvx(__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_st(vector unsigned int __a, int __b, vector unsigned int *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_st(vector unsigned int __a, int __b, unsigned int *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_st(vector bool int __a, int __b, int *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_st(vector bool int __a, int __b, unsigned int *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_st(vector bool int __a, int __b, vector bool int *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_st(vector float __a, int __b, vector float *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_st(vector float __a, int __b, float *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +/* vec_stvx */ + +static void __ATTRS_o_ai +vec_stvx(vector signed char __a, int __b, vector signed char *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvx(vector signed char __a, int __b, signed char *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvx(vector unsigned char __a, int __b, vector unsigned char *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvx(vector unsigned char __a, int __b, unsigned char *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvx(vector bool char __a, int __b, signed char *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvx(vector bool char __a, int __b, unsigned char *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvx(vector bool char __a, int __b, vector bool char *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvx(vector short __a, int __b, vector short *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvx(vector short __a, int __b, short *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvx(vector unsigned short __a, int __b, vector unsigned short *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvx(vector unsigned short __a, int __b, unsigned short *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvx(vector bool short __a, int __b, short *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvx(vector bool short __a, int __b, unsigned short *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvx(vector bool short __a, int __b, vector bool short *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvx(vector pixel __a, int __b, short *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvx(vector pixel __a, int __b, unsigned short *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvx(vector pixel __a, int __b, vector pixel *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvx(vector int __a, int __b, vector int *__c) +{ + __builtin_altivec_stvx(__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvx(vector int __a, int __b, int *__c) +{ + __builtin_altivec_stvx(__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvx(vector unsigned int __a, int __b, vector unsigned int *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvx(vector unsigned int __a, int __b, unsigned int *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvx(vector bool int __a, int __b, int *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvx(vector bool int __a, int __b, unsigned int *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvx(vector bool int __a, int __b, vector bool int *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvx(vector float __a, int __b, vector float *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvx(vector float __a, int __b, float *__c) +{ + __builtin_altivec_stvx((vector int)__a, __b, __c); +} + +/* vec_ste */ + +static void __ATTRS_o_ai +vec_ste(vector signed char __a, int __b, signed char *__c) +{ + __builtin_altivec_stvebx((vector char)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_ste(vector unsigned char __a, int __b, unsigned char *__c) +{ + __builtin_altivec_stvebx((vector char)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_ste(vector bool char __a, int __b, signed char *__c) +{ + __builtin_altivec_stvebx((vector char)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_ste(vector bool char __a, int __b, unsigned char *__c) +{ + __builtin_altivec_stvebx((vector char)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_ste(vector short __a, int __b, short *__c) +{ + __builtin_altivec_stvehx(__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_ste(vector unsigned short __a, int __b, unsigned short *__c) +{ + __builtin_altivec_stvehx((vector short)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_ste(vector bool short __a, int __b, short *__c) +{ + __builtin_altivec_stvehx((vector short)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_ste(vector bool short __a, int __b, unsigned short *__c) +{ + __builtin_altivec_stvehx((vector short)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_ste(vector pixel __a, int __b, short *__c) +{ + __builtin_altivec_stvehx((vector short)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_ste(vector pixel __a, int __b, unsigned short *__c) +{ + __builtin_altivec_stvehx((vector short)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_ste(vector int __a, int __b, int *__c) +{ + __builtin_altivec_stvewx(__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_ste(vector unsigned int __a, int __b, unsigned int *__c) +{ + __builtin_altivec_stvewx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_ste(vector bool int __a, int __b, int *__c) +{ + __builtin_altivec_stvewx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_ste(vector bool int __a, int __b, unsigned int *__c) +{ + __builtin_altivec_stvewx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_ste(vector float __a, int __b, float *__c) +{ + __builtin_altivec_stvewx((vector int)__a, __b, __c); +} + +/* vec_stvebx */ + +static void __ATTRS_o_ai +vec_stvebx(vector signed char __a, int __b, signed char *__c) +{ + __builtin_altivec_stvebx((vector char)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvebx(vector unsigned char __a, int __b, unsigned char *__c) +{ + __builtin_altivec_stvebx((vector char)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvebx(vector bool char __a, int __b, signed char *__c) +{ + __builtin_altivec_stvebx((vector char)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvebx(vector bool char __a, int __b, unsigned char *__c) +{ + __builtin_altivec_stvebx((vector char)__a, __b, __c); +} + +/* vec_stvehx */ + +static void __ATTRS_o_ai +vec_stvehx(vector short __a, int __b, short *__c) +{ + __builtin_altivec_stvehx(__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvehx(vector unsigned short __a, int __b, unsigned short *__c) +{ + __builtin_altivec_stvehx((vector short)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvehx(vector bool short __a, int __b, short *__c) +{ + __builtin_altivec_stvehx((vector short)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvehx(vector bool short __a, int __b, unsigned short *__c) +{ + __builtin_altivec_stvehx((vector short)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvehx(vector pixel __a, int __b, short *__c) +{ + __builtin_altivec_stvehx((vector short)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvehx(vector pixel __a, int __b, unsigned short *__c) +{ + __builtin_altivec_stvehx((vector short)__a, __b, __c); +} + +/* vec_stvewx */ + +static void __ATTRS_o_ai +vec_stvewx(vector int __a, int __b, int *__c) +{ + __builtin_altivec_stvewx(__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvewx(vector unsigned int __a, int __b, unsigned int *__c) +{ + __builtin_altivec_stvewx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvewx(vector bool int __a, int __b, int *__c) +{ + __builtin_altivec_stvewx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvewx(vector bool int __a, int __b, unsigned int *__c) +{ + __builtin_altivec_stvewx((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvewx(vector float __a, int __b, float *__c) +{ + __builtin_altivec_stvewx((vector int)__a, __b, __c); +} + +/* vec_stl */ + +static void __ATTRS_o_ai +vec_stl(vector signed char __a, int __b, vector signed char *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stl(vector signed char __a, int __b, signed char *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stl(vector unsigned char __a, int __b, vector unsigned char *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stl(vector unsigned char __a, int __b, unsigned char *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stl(vector bool char __a, int __b, signed char *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stl(vector bool char __a, int __b, unsigned char *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stl(vector bool char __a, int __b, vector bool char *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stl(vector short __a, int __b, vector short *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stl(vector short __a, int __b, short *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stl(vector unsigned short __a, int __b, vector unsigned short *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stl(vector unsigned short __a, int __b, unsigned short *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stl(vector bool short __a, int __b, short *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stl(vector bool short __a, int __b, unsigned short *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stl(vector bool short __a, int __b, vector bool short *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stl(vector pixel __a, int __b, short *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stl(vector pixel __a, int __b, unsigned short *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stl(vector pixel __a, int __b, vector pixel *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stl(vector int __a, int __b, vector int *__c) +{ + __builtin_altivec_stvxl(__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stl(vector int __a, int __b, int *__c) +{ + __builtin_altivec_stvxl(__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stl(vector unsigned int __a, int __b, vector unsigned int *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stl(vector unsigned int __a, int __b, unsigned int *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stl(vector bool int __a, int __b, int *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stl(vector bool int __a, int __b, unsigned int *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stl(vector bool int __a, int __b, vector bool int *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stl(vector float __a, int __b, vector float *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stl(vector float __a, int __b, float *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +/* vec_stvxl */ + +static void __ATTRS_o_ai +vec_stvxl(vector signed char __a, int __b, vector signed char *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvxl(vector signed char __a, int __b, signed char *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvxl(vector unsigned char __a, int __b, vector unsigned char *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvxl(vector unsigned char __a, int __b, unsigned char *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvxl(vector bool char __a, int __b, signed char *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvxl(vector bool char __a, int __b, unsigned char *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvxl(vector bool char __a, int __b, vector bool char *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvxl(vector short __a, int __b, vector short *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvxl(vector short __a, int __b, short *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvxl(vector unsigned short __a, int __b, vector unsigned short *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvxl(vector unsigned short __a, int __b, unsigned short *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvxl(vector bool short __a, int __b, short *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvxl(vector bool short __a, int __b, unsigned short *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvxl(vector bool short __a, int __b, vector bool short *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvxl(vector pixel __a, int __b, short *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvxl(vector pixel __a, int __b, unsigned short *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvxl(vector pixel __a, int __b, vector pixel *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvxl(vector int __a, int __b, vector int *__c) +{ + __builtin_altivec_stvxl(__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvxl(vector int __a, int __b, int *__c) +{ + __builtin_altivec_stvxl(__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvxl(vector unsigned int __a, int __b, vector unsigned int *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvxl(vector unsigned int __a, int __b, unsigned int *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvxl(vector bool int __a, int __b, int *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvxl(vector bool int __a, int __b, unsigned int *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvxl(vector bool int __a, int __b, vector bool int *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvxl(vector float __a, int __b, vector float *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +static void __ATTRS_o_ai +vec_stvxl(vector float __a, int __b, float *__c) +{ + __builtin_altivec_stvxl((vector int)__a, __b, __c); +} + +/* vec_sub */ + +static vector signed char __ATTRS_o_ai +vec_sub(vector signed char __a, vector signed char __b) +{ + return __a - __b; +} + +static vector signed char __ATTRS_o_ai +vec_sub(vector bool char __a, vector signed char __b) +{ + return (vector signed char)__a - __b; +} + +static vector signed char __ATTRS_o_ai +vec_sub(vector signed char __a, vector bool char __b) +{ + return __a - (vector signed char)__b; +} + +static vector unsigned char __ATTRS_o_ai +vec_sub(vector unsigned char __a, vector unsigned char __b) +{ + return __a - __b; +} + +static vector unsigned char __ATTRS_o_ai +vec_sub(vector bool char __a, vector unsigned char __b) +{ + return (vector unsigned char)__a - __b; +} + +static vector unsigned char __ATTRS_o_ai +vec_sub(vector unsigned char __a, vector bool char __b) +{ + return __a - (vector unsigned char)__b; +} + +static vector short __ATTRS_o_ai +vec_sub(vector short __a, vector short __b) +{ + return __a - __b; +} + +static vector short __ATTRS_o_ai +vec_sub(vector bool short __a, vector short __b) +{ + return (vector short)__a - __b; +} + +static vector short __ATTRS_o_ai +vec_sub(vector short __a, vector bool short __b) +{ + return __a - (vector short)__b; +} + +static vector unsigned short __ATTRS_o_ai +vec_sub(vector unsigned short __a, vector unsigned short __b) +{ + return __a - __b; +} + +static vector unsigned short __ATTRS_o_ai +vec_sub(vector bool short __a, vector unsigned short __b) +{ + return (vector unsigned short)__a - __b; +} + +static vector unsigned short __ATTRS_o_ai +vec_sub(vector unsigned short __a, vector bool short __b) +{ + return __a - (vector unsigned short)__b; +} + +static vector int __ATTRS_o_ai +vec_sub(vector int __a, vector int __b) +{ + return __a - __b; +} + +static vector int __ATTRS_o_ai +vec_sub(vector bool int __a, vector int __b) +{ + return (vector int)__a - __b; +} + +static vector int __ATTRS_o_ai +vec_sub(vector int __a, vector bool int __b) +{ + return __a - (vector int)__b; +} + +static vector unsigned int __ATTRS_o_ai +vec_sub(vector unsigned int __a, vector unsigned int __b) +{ + return __a - __b; +} + +static vector unsigned int __ATTRS_o_ai +vec_sub(vector bool int __a, vector unsigned int __b) +{ + return (vector unsigned int)__a - __b; +} + +static vector unsigned int __ATTRS_o_ai +vec_sub(vector unsigned int __a, vector bool int __b) +{ + return __a - (vector unsigned int)__b; +} + +static vector float __ATTRS_o_ai +vec_sub(vector float __a, vector float __b) +{ + return __a - __b; +} + +/* vec_vsububm */ + +#define __builtin_altivec_vsububm vec_vsububm + +static vector signed char __ATTRS_o_ai +vec_vsububm(vector signed char __a, vector signed char __b) +{ + return __a - __b; +} + +static vector signed char __ATTRS_o_ai +vec_vsububm(vector bool char __a, vector signed char __b) +{ + return (vector signed char)__a - __b; +} + +static vector signed char __ATTRS_o_ai +vec_vsububm(vector signed char __a, vector bool char __b) +{ + return __a - (vector signed char)__b; +} + +static vector unsigned char __ATTRS_o_ai +vec_vsububm(vector unsigned char __a, vector unsigned char __b) +{ + return __a - __b; +} + +static vector unsigned char __ATTRS_o_ai +vec_vsububm(vector bool char __a, vector unsigned char __b) +{ + return (vector unsigned char)__a - __b; +} + +static vector unsigned char __ATTRS_o_ai +vec_vsububm(vector unsigned char __a, vector bool char __b) +{ + return __a - (vector unsigned char)__b; +} + +/* vec_vsubuhm */ + +#define __builtin_altivec_vsubuhm vec_vsubuhm + +static vector short __ATTRS_o_ai +vec_vsubuhm(vector short __a, vector short __b) +{ + return __a - __b; +} + +static vector short __ATTRS_o_ai +vec_vsubuhm(vector bool short __a, vector short __b) +{ + return (vector short)__a - __b; +} + +static vector short __ATTRS_o_ai +vec_vsubuhm(vector short __a, vector bool short __b) +{ + return __a - (vector short)__b; +} + +static vector unsigned short __ATTRS_o_ai +vec_vsubuhm(vector unsigned short __a, vector unsigned short __b) +{ + return __a - __b; +} + +static vector unsigned short __ATTRS_o_ai +vec_vsubuhm(vector bool short __a, vector unsigned short __b) +{ + return (vector unsigned short)__a - __b; +} + +static vector unsigned short __ATTRS_o_ai +vec_vsubuhm(vector unsigned short __a, vector bool short __b) +{ + return __a - (vector unsigned short)__b; +} + +/* vec_vsubuwm */ + +#define __builtin_altivec_vsubuwm vec_vsubuwm + +static vector int __ATTRS_o_ai +vec_vsubuwm(vector int __a, vector int __b) +{ + return __a - __b; +} + +static vector int __ATTRS_o_ai +vec_vsubuwm(vector bool int __a, vector int __b) +{ + return (vector int)__a - __b; +} + +static vector int __ATTRS_o_ai +vec_vsubuwm(vector int __a, vector bool int __b) +{ + return __a - (vector int)__b; +} + +static vector unsigned int __ATTRS_o_ai +vec_vsubuwm(vector unsigned int __a, vector unsigned int __b) +{ + return __a - __b; +} + +static vector unsigned int __ATTRS_o_ai +vec_vsubuwm(vector bool int __a, vector unsigned int __b) +{ + return (vector unsigned int)__a - __b; +} + +static vector unsigned int __ATTRS_o_ai +vec_vsubuwm(vector unsigned int __a, vector bool int __b) +{ + return __a - (vector unsigned int)__b; +} + +/* vec_vsubfp */ + +#define __builtin_altivec_vsubfp vec_vsubfp + +static vector float __attribute__((__always_inline__)) +vec_vsubfp(vector float __a, vector float __b) +{ + return __a - __b; +} + +/* vec_subc */ + +static vector unsigned int __attribute__((__always_inline__)) +vec_subc(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vsubcuw(__a, __b); +} + +/* vec_vsubcuw */ + +static vector unsigned int __attribute__((__always_inline__)) +vec_vsubcuw(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vsubcuw(__a, __b); +} + +/* vec_subs */ + +static vector signed char __ATTRS_o_ai +vec_subs(vector signed char __a, vector signed char __b) +{ + return __builtin_altivec_vsubsbs(__a, __b); +} + +static vector signed char __ATTRS_o_ai +vec_subs(vector bool char __a, vector signed char __b) +{ + return __builtin_altivec_vsubsbs((vector signed char)__a, __b); +} + +static vector signed char __ATTRS_o_ai +vec_subs(vector signed char __a, vector bool char __b) +{ + return __builtin_altivec_vsubsbs(__a, (vector signed char)__b); +} + +static vector unsigned char __ATTRS_o_ai +vec_subs(vector unsigned char __a, vector unsigned char __b) +{ + return __builtin_altivec_vsububs(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_subs(vector bool char __a, vector unsigned char __b) +{ + return __builtin_altivec_vsububs((vector unsigned char)__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_subs(vector unsigned char __a, vector bool char __b) +{ + return __builtin_altivec_vsububs(__a, (vector unsigned char)__b); +} + +static vector short __ATTRS_o_ai +vec_subs(vector short __a, vector short __b) +{ + return __builtin_altivec_vsubshs(__a, __b); +} + +static vector short __ATTRS_o_ai +vec_subs(vector bool short __a, vector short __b) +{ + return __builtin_altivec_vsubshs((vector short)__a, __b); +} + +static vector short __ATTRS_o_ai +vec_subs(vector short __a, vector bool short __b) +{ + return __builtin_altivec_vsubshs(__a, (vector short)__b); +} + +static vector unsigned short __ATTRS_o_ai +vec_subs(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vsubuhs(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_subs(vector bool short __a, vector unsigned short __b) +{ + return __builtin_altivec_vsubuhs((vector unsigned short)__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_subs(vector unsigned short __a, vector bool short __b) +{ + return __builtin_altivec_vsubuhs(__a, (vector unsigned short)__b); +} + +static vector int __ATTRS_o_ai +vec_subs(vector int __a, vector int __b) +{ + return __builtin_altivec_vsubsws(__a, __b); +} + +static vector int __ATTRS_o_ai +vec_subs(vector bool int __a, vector int __b) +{ + return __builtin_altivec_vsubsws((vector int)__a, __b); +} + +static vector int __ATTRS_o_ai +vec_subs(vector int __a, vector bool int __b) +{ + return __builtin_altivec_vsubsws(__a, (vector int)__b); +} + +static vector unsigned int __ATTRS_o_ai +vec_subs(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vsubuws(__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_subs(vector bool int __a, vector unsigned int __b) +{ + return __builtin_altivec_vsubuws((vector unsigned int)__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_subs(vector unsigned int __a, vector bool int __b) +{ + return __builtin_altivec_vsubuws(__a, (vector unsigned int)__b); +} + +/* vec_vsubsbs */ + +static vector signed char __ATTRS_o_ai +vec_vsubsbs(vector signed char __a, vector signed char __b) +{ + return __builtin_altivec_vsubsbs(__a, __b); +} + +static vector signed char __ATTRS_o_ai +vec_vsubsbs(vector bool char __a, vector signed char __b) +{ + return __builtin_altivec_vsubsbs((vector signed char)__a, __b); +} + +static vector signed char __ATTRS_o_ai +vec_vsubsbs(vector signed char __a, vector bool char __b) +{ + return __builtin_altivec_vsubsbs(__a, (vector signed char)__b); +} + +/* vec_vsububs */ + +static vector unsigned char __ATTRS_o_ai +vec_vsububs(vector unsigned char __a, vector unsigned char __b) +{ + return __builtin_altivec_vsububs(__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_vsububs(vector bool char __a, vector unsigned char __b) +{ + return __builtin_altivec_vsububs((vector unsigned char)__a, __b); +} + +static vector unsigned char __ATTRS_o_ai +vec_vsububs(vector unsigned char __a, vector bool char __b) +{ + return __builtin_altivec_vsububs(__a, (vector unsigned char)__b); +} + +/* vec_vsubshs */ + +static vector short __ATTRS_o_ai +vec_vsubshs(vector short __a, vector short __b) +{ + return __builtin_altivec_vsubshs(__a, __b); +} + +static vector short __ATTRS_o_ai +vec_vsubshs(vector bool short __a, vector short __b) +{ + return __builtin_altivec_vsubshs((vector short)__a, __b); +} + +static vector short __ATTRS_o_ai +vec_vsubshs(vector short __a, vector bool short __b) +{ + return __builtin_altivec_vsubshs(__a, (vector short)__b); +} + +/* vec_vsubuhs */ + +static vector unsigned short __ATTRS_o_ai +vec_vsubuhs(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vsubuhs(__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_vsubuhs(vector bool short __a, vector unsigned short __b) +{ + return __builtin_altivec_vsubuhs((vector unsigned short)__a, __b); +} + +static vector unsigned short __ATTRS_o_ai +vec_vsubuhs(vector unsigned short __a, vector bool short __b) +{ + return __builtin_altivec_vsubuhs(__a, (vector unsigned short)__b); +} + +/* vec_vsubsws */ + +static vector int __ATTRS_o_ai +vec_vsubsws(vector int __a, vector int __b) +{ + return __builtin_altivec_vsubsws(__a, __b); +} + +static vector int __ATTRS_o_ai +vec_vsubsws(vector bool int __a, vector int __b) +{ + return __builtin_altivec_vsubsws((vector int)__a, __b); +} + +static vector int __ATTRS_o_ai +vec_vsubsws(vector int __a, vector bool int __b) +{ + return __builtin_altivec_vsubsws(__a, (vector int)__b); +} + +/* vec_vsubuws */ + +static vector unsigned int __ATTRS_o_ai +vec_vsubuws(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vsubuws(__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_vsubuws(vector bool int __a, vector unsigned int __b) +{ + return __builtin_altivec_vsubuws((vector unsigned int)__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_vsubuws(vector unsigned int __a, vector bool int __b) +{ + return __builtin_altivec_vsubuws(__a, (vector unsigned int)__b); +} + +/* vec_sum4s */ + +static vector int __ATTRS_o_ai +vec_sum4s(vector signed char __a, vector int __b) +{ + return __builtin_altivec_vsum4sbs(__a, __b); +} + +static vector unsigned int __ATTRS_o_ai +vec_sum4s(vector unsigned char __a, vector unsigned int __b) +{ + return __builtin_altivec_vsum4ubs(__a, __b); +} + +static vector int __ATTRS_o_ai +vec_sum4s(vector signed short __a, vector int __b) +{ + return __builtin_altivec_vsum4shs(__a, __b); +} + +/* vec_vsum4sbs */ + +static vector int __attribute__((__always_inline__)) +vec_vsum4sbs(vector signed char __a, vector int __b) +{ + return __builtin_altivec_vsum4sbs(__a, __b); +} + +/* vec_vsum4ubs */ + +static vector unsigned int __attribute__((__always_inline__)) +vec_vsum4ubs(vector unsigned char __a, vector unsigned int __b) +{ + return __builtin_altivec_vsum4ubs(__a, __b); +} + +/* vec_vsum4shs */ + +static vector int __attribute__((__always_inline__)) +vec_vsum4shs(vector signed short __a, vector int __b) +{ + return __builtin_altivec_vsum4shs(__a, __b); +} + +/* vec_sum2s */ + +static vector signed int __attribute__((__always_inline__)) +vec_sum2s(vector int __a, vector int __b) +{ + return __builtin_altivec_vsum2sws(__a, __b); +} + +/* vec_vsum2sws */ + +static vector signed int __attribute__((__always_inline__)) +vec_vsum2sws(vector int __a, vector int __b) +{ + return __builtin_altivec_vsum2sws(__a, __b); +} + +/* vec_sums */ + +static vector signed int __attribute__((__always_inline__)) +vec_sums(vector signed int __a, vector signed int __b) +{ + return __builtin_altivec_vsumsws(__a, __b); +} + +/* vec_vsumsws */ + +static vector signed int __attribute__((__always_inline__)) +vec_vsumsws(vector signed int __a, vector signed int __b) +{ + return __builtin_altivec_vsumsws(__a, __b); +} + +/* vec_trunc */ + +static vector float __attribute__((__always_inline__)) +vec_trunc(vector float __a) +{ + return __builtin_altivec_vrfiz(__a); +} + +/* vec_vrfiz */ + +static vector float __attribute__((__always_inline__)) +vec_vrfiz(vector float __a) +{ + return __builtin_altivec_vrfiz(__a); +} + +/* vec_unpackh */ + +static vector short __ATTRS_o_ai +vec_unpackh(vector signed char __a) +{ + return __builtin_altivec_vupkhsb((vector char)__a); +} + +static vector bool short __ATTRS_o_ai +vec_unpackh(vector bool char __a) +{ + return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a); +} + +static vector int __ATTRS_o_ai +vec_unpackh(vector short __a) +{ + return __builtin_altivec_vupkhsh(__a); +} + +static vector bool int __ATTRS_o_ai +vec_unpackh(vector bool short __a) +{ + return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a); +} + +static vector unsigned int __ATTRS_o_ai +vec_unpackh(vector pixel __a) +{ + return (vector unsigned int)__builtin_altivec_vupkhsh((vector short)__a); +} + +/* vec_vupkhsb */ + +static vector short __ATTRS_o_ai +vec_vupkhsb(vector signed char __a) +{ + return __builtin_altivec_vupkhsb((vector char)__a); +} + +static vector bool short __ATTRS_o_ai +vec_vupkhsb(vector bool char __a) +{ + return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a); +} + +/* vec_vupkhsh */ + +static vector int __ATTRS_o_ai +vec_vupkhsh(vector short __a) +{ + return __builtin_altivec_vupkhsh(__a); +} + +static vector bool int __ATTRS_o_ai +vec_vupkhsh(vector bool short __a) +{ + return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a); +} + +static vector unsigned int __ATTRS_o_ai +vec_vupkhsh(vector pixel __a) +{ + return (vector unsigned int)__builtin_altivec_vupkhsh((vector short)__a); +} + +/* vec_unpackl */ + +static vector short __ATTRS_o_ai +vec_unpackl(vector signed char __a) +{ + return __builtin_altivec_vupklsb((vector char)__a); +} + +static vector bool short __ATTRS_o_ai +vec_unpackl(vector bool char __a) +{ + return (vector bool short)__builtin_altivec_vupklsb((vector char)__a); +} + +static vector int __ATTRS_o_ai +vec_unpackl(vector short __a) +{ + return __builtin_altivec_vupklsh(__a); +} + +static vector bool int __ATTRS_o_ai +vec_unpackl(vector bool short __a) +{ + return (vector bool int)__builtin_altivec_vupklsh((vector short)__a); +} + +static vector unsigned int __ATTRS_o_ai +vec_unpackl(vector pixel __a) +{ + return (vector unsigned int)__builtin_altivec_vupklsh((vector short)__a); +} + +/* vec_vupklsb */ + +static vector short __ATTRS_o_ai +vec_vupklsb(vector signed char __a) +{ + return __builtin_altivec_vupklsb((vector char)__a); +} + +static vector bool short __ATTRS_o_ai +vec_vupklsb(vector bool char __a) +{ + return (vector bool short)__builtin_altivec_vupklsb((vector char)__a); +} + +/* vec_vupklsh */ + +static vector int __ATTRS_o_ai +vec_vupklsh(vector short __a) +{ + return __builtin_altivec_vupklsh(__a); +} + +static vector bool int __ATTRS_o_ai +vec_vupklsh(vector bool short __a) +{ + return (vector bool int)__builtin_altivec_vupklsh((vector short)__a); +} + +static vector unsigned int __ATTRS_o_ai +vec_vupklsh(vector pixel __a) +{ + return (vector unsigned int)__builtin_altivec_vupklsh((vector short)__a); +} + +/* vec_xor */ + +#define __builtin_altivec_vxor vec_xor + +static vector signed char __ATTRS_o_ai +vec_xor(vector signed char __a, vector signed char __b) +{ + return __a ^ __b; +} + +static vector signed char __ATTRS_o_ai +vec_xor(vector bool char __a, vector signed char __b) +{ + return (vector signed char)__a ^ __b; +} + +static vector signed char __ATTRS_o_ai +vec_xor(vector signed char __a, vector bool char __b) +{ + return __a ^ (vector signed char)__b; +} + +static vector unsigned char __ATTRS_o_ai +vec_xor(vector unsigned char __a, vector unsigned char __b) +{ + return __a ^ __b; +} + +static vector unsigned char __ATTRS_o_ai +vec_xor(vector bool char __a, vector unsigned char __b) +{ + return (vector unsigned char)__a ^ __b; +} + +static vector unsigned char __ATTRS_o_ai +vec_xor(vector unsigned char __a, vector bool char __b) +{ + return __a ^ (vector unsigned char)__b; +} + +static vector bool char __ATTRS_o_ai +vec_xor(vector bool char __a, vector bool char __b) +{ + return __a ^ __b; +} + +static vector short __ATTRS_o_ai +vec_xor(vector short __a, vector short __b) +{ + return __a ^ __b; +} + +static vector short __ATTRS_o_ai +vec_xor(vector bool short __a, vector short __b) +{ + return (vector short)__a ^ __b; +} + +static vector short __ATTRS_o_ai +vec_xor(vector short __a, vector bool short __b) +{ + return __a ^ (vector short)__b; +} + +static vector unsigned short __ATTRS_o_ai +vec_xor(vector unsigned short __a, vector unsigned short __b) +{ + return __a ^ __b; +} + +static vector unsigned short __ATTRS_o_ai +vec_xor(vector bool short __a, vector unsigned short __b) +{ + return (vector unsigned short)__a ^ __b; +} + +static vector unsigned short __ATTRS_o_ai +vec_xor(vector unsigned short __a, vector bool short __b) +{ + return __a ^ (vector unsigned short)__b; +} + +static vector bool short __ATTRS_o_ai +vec_xor(vector bool short __a, vector bool short __b) +{ + return __a ^ __b; +} + +static vector int __ATTRS_o_ai +vec_xor(vector int __a, vector int __b) +{ + return __a ^ __b; +} + +static vector int __ATTRS_o_ai +vec_xor(vector bool int __a, vector int __b) +{ + return (vector int)__a ^ __b; +} + +static vector int __ATTRS_o_ai +vec_xor(vector int __a, vector bool int __b) +{ + return __a ^ (vector int)__b; +} + +static vector unsigned int __ATTRS_o_ai +vec_xor(vector unsigned int __a, vector unsigned int __b) +{ + return __a ^ __b; +} + +static vector unsigned int __ATTRS_o_ai +vec_xor(vector bool int __a, vector unsigned int __b) +{ + return (vector unsigned int)__a ^ __b; +} + +static vector unsigned int __ATTRS_o_ai +vec_xor(vector unsigned int __a, vector bool int __b) +{ + return __a ^ (vector unsigned int)__b; +} + +static vector bool int __ATTRS_o_ai +vec_xor(vector bool int __a, vector bool int __b) +{ + return __a ^ __b; +} + +static vector float __ATTRS_o_ai +vec_xor(vector float __a, vector float __b) +{ + vector unsigned int __res = (vector unsigned int)__a ^ (vector unsigned int)__b; + return (vector float)__res; +} + +static vector float __ATTRS_o_ai +vec_xor(vector bool int __a, vector float __b) +{ + vector unsigned int __res = (vector unsigned int)__a ^ (vector unsigned int)__b; + return (vector float)__res; +} + +static vector float __ATTRS_o_ai +vec_xor(vector float __a, vector bool int __b) +{ + vector unsigned int __res = (vector unsigned int)__a ^ (vector unsigned int)__b; + return (vector float)__res; +} + +/* vec_vxor */ + +static vector signed char __ATTRS_o_ai +vec_vxor(vector signed char __a, vector signed char __b) +{ + return __a ^ __b; +} + +static vector signed char __ATTRS_o_ai +vec_vxor(vector bool char __a, vector signed char __b) +{ + return (vector signed char)__a ^ __b; +} + +static vector signed char __ATTRS_o_ai +vec_vxor(vector signed char __a, vector bool char __b) +{ + return __a ^ (vector signed char)__b; +} + +static vector unsigned char __ATTRS_o_ai +vec_vxor(vector unsigned char __a, vector unsigned char __b) +{ + return __a ^ __b; +} + +static vector unsigned char __ATTRS_o_ai +vec_vxor(vector bool char __a, vector unsigned char __b) +{ + return (vector unsigned char)__a ^ __b; +} + +static vector unsigned char __ATTRS_o_ai +vec_vxor(vector unsigned char __a, vector bool char __b) +{ + return __a ^ (vector unsigned char)__b; +} + +static vector bool char __ATTRS_o_ai +vec_vxor(vector bool char __a, vector bool char __b) +{ + return __a ^ __b; +} + +static vector short __ATTRS_o_ai +vec_vxor(vector short __a, vector short __b) +{ + return __a ^ __b; +} + +static vector short __ATTRS_o_ai +vec_vxor(vector bool short __a, vector short __b) +{ + return (vector short)__a ^ __b; +} + +static vector short __ATTRS_o_ai +vec_vxor(vector short __a, vector bool short __b) +{ + return __a ^ (vector short)__b; +} + +static vector unsigned short __ATTRS_o_ai +vec_vxor(vector unsigned short __a, vector unsigned short __b) +{ + return __a ^ __b; +} + +static vector unsigned short __ATTRS_o_ai +vec_vxor(vector bool short __a, vector unsigned short __b) +{ + return (vector unsigned short)__a ^ __b; +} + +static vector unsigned short __ATTRS_o_ai +vec_vxor(vector unsigned short __a, vector bool short __b) +{ + return __a ^ (vector unsigned short)__b; +} + +static vector bool short __ATTRS_o_ai +vec_vxor(vector bool short __a, vector bool short __b) +{ + return __a ^ __b; +} + +static vector int __ATTRS_o_ai +vec_vxor(vector int __a, vector int __b) +{ + return __a ^ __b; +} + +static vector int __ATTRS_o_ai +vec_vxor(vector bool int __a, vector int __b) +{ + return (vector int)__a ^ __b; +} + +static vector int __ATTRS_o_ai +vec_vxor(vector int __a, vector bool int __b) +{ + return __a ^ (vector int)__b; +} + +static vector unsigned int __ATTRS_o_ai +vec_vxor(vector unsigned int __a, vector unsigned int __b) +{ + return __a ^ __b; +} + +static vector unsigned int __ATTRS_o_ai +vec_vxor(vector bool int __a, vector unsigned int __b) +{ + return (vector unsigned int)__a ^ __b; +} + +static vector unsigned int __ATTRS_o_ai +vec_vxor(vector unsigned int __a, vector bool int __b) +{ + return __a ^ (vector unsigned int)__b; +} + +static vector bool int __ATTRS_o_ai +vec_vxor(vector bool int __a, vector bool int __b) +{ + return __a ^ __b; +} + +static vector float __ATTRS_o_ai +vec_vxor(vector float __a, vector float __b) +{ + vector unsigned int __res = (vector unsigned int)__a ^ (vector unsigned int)__b; + return (vector float)__res; +} + +static vector float __ATTRS_o_ai +vec_vxor(vector bool int __a, vector float __b) +{ + vector unsigned int __res = (vector unsigned int)__a ^ (vector unsigned int)__b; + return (vector float)__res; +} + +static vector float __ATTRS_o_ai +vec_vxor(vector float __a, vector bool int __b) +{ + vector unsigned int __res = (vector unsigned int)__a ^ (vector unsigned int)__b; + return (vector float)__res; +} + +/* ------------------------ extensions for CBEA ----------------------------- */ + +/* vec_extract */ + +static signed char __ATTRS_o_ai +vec_extract(vector signed char __a, int __b) +{ + return __a[__b]; +} + +static unsigned char __ATTRS_o_ai +vec_extract(vector unsigned char __a, int __b) +{ + return __a[__b]; +} + +static short __ATTRS_o_ai +vec_extract(vector short __a, int __b) +{ + return __a[__b]; +} + +static unsigned short __ATTRS_o_ai +vec_extract(vector unsigned short __a, int __b) +{ + return __a[__b]; +} + +static int __ATTRS_o_ai +vec_extract(vector int __a, int __b) +{ + return __a[__b]; +} + +static unsigned int __ATTRS_o_ai +vec_extract(vector unsigned int __a, int __b) +{ + return __a[__b]; +} + +static float __ATTRS_o_ai +vec_extract(vector float __a, int __b) +{ + return __a[__b]; +} + +/* vec_insert */ + +static vector signed char __ATTRS_o_ai +vec_insert(signed char __a, vector signed char __b, int __c) +{ + __b[__c] = __a; + return __b; +} + +static vector unsigned char __ATTRS_o_ai +vec_insert(unsigned char __a, vector unsigned char __b, int __c) +{ + __b[__c] = __a; + return __b; +} + +static vector short __ATTRS_o_ai +vec_insert(short __a, vector short __b, int __c) +{ + __b[__c] = __a; + return __b; +} + +static vector unsigned short __ATTRS_o_ai +vec_insert(unsigned short __a, vector unsigned short __b, int __c) +{ + __b[__c] = __a; + return __b; +} + +static vector int __ATTRS_o_ai +vec_insert(int __a, vector int __b, int __c) +{ + __b[__c] = __a; + return __b; +} + +static vector unsigned int __ATTRS_o_ai +vec_insert(unsigned int __a, vector unsigned int __b, int __c) +{ + __b[__c] = __a; + return __b; +} + +static vector float __ATTRS_o_ai +vec_insert(float __a, vector float __b, int __c) +{ + __b[__c] = __a; + return __b; +} + +/* vec_lvlx */ + +static vector signed char __ATTRS_o_ai +vec_lvlx(int __a, const signed char *__b) +{ + return vec_perm(vec_ld(__a, __b), + (vector signed char)(0), + vec_lvsl(__a, __b)); +} + +static vector signed char __ATTRS_o_ai +vec_lvlx(int __a, const vector signed char *__b) +{ + return vec_perm(vec_ld(__a, __b), + (vector signed char)(0), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector unsigned char __ATTRS_o_ai +vec_lvlx(int __a, const unsigned char *__b) +{ + return vec_perm(vec_ld(__a, __b), + (vector unsigned char)(0), + vec_lvsl(__a, __b)); +} + +static vector unsigned char __ATTRS_o_ai +vec_lvlx(int __a, const vector unsigned char *__b) +{ + return vec_perm(vec_ld(__a, __b), + (vector unsigned char)(0), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector bool char __ATTRS_o_ai +vec_lvlx(int __a, const vector bool char *__b) +{ + return vec_perm(vec_ld(__a, __b), + (vector bool char)(0), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector short __ATTRS_o_ai +vec_lvlx(int __a, const short *__b) +{ + return vec_perm(vec_ld(__a, __b), + (vector short)(0), + vec_lvsl(__a, __b)); +} + +static vector short __ATTRS_o_ai +vec_lvlx(int __a, const vector short *__b) +{ + return vec_perm(vec_ld(__a, __b), + (vector short)(0), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector unsigned short __ATTRS_o_ai +vec_lvlx(int __a, const unsigned short *__b) +{ + return vec_perm(vec_ld(__a, __b), + (vector unsigned short)(0), + vec_lvsl(__a, __b)); +} + +static vector unsigned short __ATTRS_o_ai +vec_lvlx(int __a, const vector unsigned short *__b) +{ + return vec_perm(vec_ld(__a, __b), + (vector unsigned short)(0), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector bool short __ATTRS_o_ai +vec_lvlx(int __a, const vector bool short *__b) +{ + return vec_perm(vec_ld(__a, __b), + (vector bool short)(0), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector pixel __ATTRS_o_ai +vec_lvlx(int __a, const vector pixel *__b) +{ + return vec_perm(vec_ld(__a, __b), + (vector pixel)(0), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector int __ATTRS_o_ai +vec_lvlx(int __a, const int *__b) +{ + return vec_perm(vec_ld(__a, __b), + (vector int)(0), + vec_lvsl(__a, __b)); +} + +static vector int __ATTRS_o_ai +vec_lvlx(int __a, const vector int *__b) +{ + return vec_perm(vec_ld(__a, __b), + (vector int)(0), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector unsigned int __ATTRS_o_ai +vec_lvlx(int __a, const unsigned int *__b) +{ + return vec_perm(vec_ld(__a, __b), + (vector unsigned int)(0), + vec_lvsl(__a, __b)); +} + +static vector unsigned int __ATTRS_o_ai +vec_lvlx(int __a, const vector unsigned int *__b) +{ + return vec_perm(vec_ld(__a, __b), + (vector unsigned int)(0), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector bool int __ATTRS_o_ai +vec_lvlx(int __a, const vector bool int *__b) +{ + return vec_perm(vec_ld(__a, __b), + (vector bool int)(0), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector float __ATTRS_o_ai +vec_lvlx(int __a, const float *__b) +{ + return vec_perm(vec_ld(__a, __b), + (vector float)(0), + vec_lvsl(__a, __b)); +} + +static vector float __ATTRS_o_ai +vec_lvlx(int __a, const vector float *__b) +{ + return vec_perm(vec_ld(__a, __b), + (vector float)(0), + vec_lvsl(__a, (unsigned char *)__b)); +} + +/* vec_lvlxl */ + +static vector signed char __ATTRS_o_ai +vec_lvlxl(int __a, const signed char *__b) +{ + return vec_perm(vec_ldl(__a, __b), + (vector signed char)(0), + vec_lvsl(__a, __b)); +} + +static vector signed char __ATTRS_o_ai +vec_lvlxl(int __a, const vector signed char *__b) +{ + return vec_perm(vec_ldl(__a, __b), + (vector signed char)(0), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector unsigned char __ATTRS_o_ai +vec_lvlxl(int __a, const unsigned char *__b) +{ + return vec_perm(vec_ldl(__a, __b), + (vector unsigned char)(0), + vec_lvsl(__a, __b)); +} + +static vector unsigned char __ATTRS_o_ai +vec_lvlxl(int __a, const vector unsigned char *__b) +{ + return vec_perm(vec_ldl(__a, __b), + (vector unsigned char)(0), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector bool char __ATTRS_o_ai +vec_lvlxl(int __a, const vector bool char *__b) +{ + return vec_perm(vec_ldl(__a, __b), + (vector bool char)(0), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector short __ATTRS_o_ai +vec_lvlxl(int __a, const short *__b) +{ + return vec_perm(vec_ldl(__a, __b), + (vector short)(0), + vec_lvsl(__a, __b)); +} + +static vector short __ATTRS_o_ai +vec_lvlxl(int __a, const vector short *__b) +{ + return vec_perm(vec_ldl(__a, __b), + (vector short)(0), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector unsigned short __ATTRS_o_ai +vec_lvlxl(int __a, const unsigned short *__b) +{ + return vec_perm(vec_ldl(__a, __b), + (vector unsigned short)(0), + vec_lvsl(__a, __b)); +} + +static vector unsigned short __ATTRS_o_ai +vec_lvlxl(int __a, const vector unsigned short *__b) +{ + return vec_perm(vec_ldl(__a, __b), + (vector unsigned short)(0), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector bool short __ATTRS_o_ai +vec_lvlxl(int __a, const vector bool short *__b) +{ + return vec_perm(vec_ldl(__a, __b), + (vector bool short)(0), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector pixel __ATTRS_o_ai +vec_lvlxl(int __a, const vector pixel *__b) +{ + return vec_perm(vec_ldl(__a, __b), + (vector pixel)(0), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector int __ATTRS_o_ai +vec_lvlxl(int __a, const int *__b) +{ + return vec_perm(vec_ldl(__a, __b), + (vector int)(0), + vec_lvsl(__a, __b)); +} + +static vector int __ATTRS_o_ai +vec_lvlxl(int __a, const vector int *__b) +{ + return vec_perm(vec_ldl(__a, __b), + (vector int)(0), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector unsigned int __ATTRS_o_ai +vec_lvlxl(int __a, const unsigned int *__b) +{ + return vec_perm(vec_ldl(__a, __b), + (vector unsigned int)(0), + vec_lvsl(__a, __b)); +} + +static vector unsigned int __ATTRS_o_ai +vec_lvlxl(int __a, const vector unsigned int *__b) +{ + return vec_perm(vec_ldl(__a, __b), + (vector unsigned int)(0), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector bool int __ATTRS_o_ai +vec_lvlxl(int __a, const vector bool int *__b) +{ + return vec_perm(vec_ldl(__a, __b), + (vector bool int)(0), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector float __ATTRS_o_ai +vec_lvlxl(int __a, const float *__b) +{ + return vec_perm(vec_ldl(__a, __b), + (vector float)(0), + vec_lvsl(__a, __b)); +} + +static vector float __ATTRS_o_ai +vec_lvlxl(int __a, vector float *__b) +{ + return vec_perm(vec_ldl(__a, __b), + (vector float)(0), + vec_lvsl(__a, (unsigned char *)__b)); +} + +/* vec_lvrx */ + +static vector signed char __ATTRS_o_ai +vec_lvrx(int __a, const signed char *__b) +{ + return vec_perm((vector signed char)(0), + vec_ld(__a, __b), + vec_lvsl(__a, __b)); +} + +static vector signed char __ATTRS_o_ai +vec_lvrx(int __a, const vector signed char *__b) +{ + return vec_perm((vector signed char)(0), + vec_ld(__a, __b), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector unsigned char __ATTRS_o_ai +vec_lvrx(int __a, const unsigned char *__b) +{ + return vec_perm((vector unsigned char)(0), + vec_ld(__a, __b), + vec_lvsl(__a, __b)); +} + +static vector unsigned char __ATTRS_o_ai +vec_lvrx(int __a, const vector unsigned char *__b) +{ + return vec_perm((vector unsigned char)(0), + vec_ld(__a, __b), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector bool char __ATTRS_o_ai +vec_lvrx(int __a, const vector bool char *__b) +{ + return vec_perm((vector bool char)(0), + vec_ld(__a, __b), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector short __ATTRS_o_ai +vec_lvrx(int __a, const short *__b) +{ + return vec_perm((vector short)(0), + vec_ld(__a, __b), + vec_lvsl(__a, __b)); +} + +static vector short __ATTRS_o_ai +vec_lvrx(int __a, const vector short *__b) +{ + return vec_perm((vector short)(0), + vec_ld(__a, __b), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector unsigned short __ATTRS_o_ai +vec_lvrx(int __a, const unsigned short *__b) +{ + return vec_perm((vector unsigned short)(0), + vec_ld(__a, __b), + vec_lvsl(__a, __b)); +} + +static vector unsigned short __ATTRS_o_ai +vec_lvrx(int __a, const vector unsigned short *__b) +{ + return vec_perm((vector unsigned short)(0), + vec_ld(__a, __b), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector bool short __ATTRS_o_ai +vec_lvrx(int __a, const vector bool short *__b) +{ + return vec_perm((vector bool short)(0), + vec_ld(__a, __b), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector pixel __ATTRS_o_ai +vec_lvrx(int __a, const vector pixel *__b) +{ + return vec_perm((vector pixel)(0), + vec_ld(__a, __b), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector int __ATTRS_o_ai +vec_lvrx(int __a, const int *__b) +{ + return vec_perm((vector int)(0), + vec_ld(__a, __b), + vec_lvsl(__a, __b)); +} + +static vector int __ATTRS_o_ai +vec_lvrx(int __a, const vector int *__b) +{ + return vec_perm((vector int)(0), + vec_ld(__a, __b), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector unsigned int __ATTRS_o_ai +vec_lvrx(int __a, const unsigned int *__b) +{ + return vec_perm((vector unsigned int)(0), + vec_ld(__a, __b), + vec_lvsl(__a, __b)); +} + +static vector unsigned int __ATTRS_o_ai +vec_lvrx(int __a, const vector unsigned int *__b) +{ + return vec_perm((vector unsigned int)(0), + vec_ld(__a, __b), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector bool int __ATTRS_o_ai +vec_lvrx(int __a, const vector bool int *__b) +{ + return vec_perm((vector bool int)(0), + vec_ld(__a, __b), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector float __ATTRS_o_ai +vec_lvrx(int __a, const float *__b) +{ + return vec_perm((vector float)(0), + vec_ld(__a, __b), + vec_lvsl(__a, __b)); +} + +static vector float __ATTRS_o_ai +vec_lvrx(int __a, const vector float *__b) +{ + return vec_perm((vector float)(0), + vec_ld(__a, __b), + vec_lvsl(__a, (unsigned char *)__b)); +} + +/* vec_lvrxl */ + +static vector signed char __ATTRS_o_ai +vec_lvrxl(int __a, const signed char *__b) +{ + return vec_perm((vector signed char)(0), + vec_ldl(__a, __b), + vec_lvsl(__a, __b)); +} + +static vector signed char __ATTRS_o_ai +vec_lvrxl(int __a, const vector signed char *__b) +{ + return vec_perm((vector signed char)(0), + vec_ldl(__a, __b), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector unsigned char __ATTRS_o_ai +vec_lvrxl(int __a, const unsigned char *__b) +{ + return vec_perm((vector unsigned char)(0), + vec_ldl(__a, __b), + vec_lvsl(__a, __b)); +} + +static vector unsigned char __ATTRS_o_ai +vec_lvrxl(int __a, const vector unsigned char *__b) +{ + return vec_perm((vector unsigned char)(0), + vec_ldl(__a, __b), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector bool char __ATTRS_o_ai +vec_lvrxl(int __a, const vector bool char *__b) +{ + return vec_perm((vector bool char)(0), + vec_ldl(__a, __b), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector short __ATTRS_o_ai +vec_lvrxl(int __a, const short *__b) +{ + return vec_perm((vector short)(0), + vec_ldl(__a, __b), + vec_lvsl(__a, __b)); +} + +static vector short __ATTRS_o_ai +vec_lvrxl(int __a, const vector short *__b) +{ + return vec_perm((vector short)(0), + vec_ldl(__a, __b), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector unsigned short __ATTRS_o_ai +vec_lvrxl(int __a, const unsigned short *__b) +{ + return vec_perm((vector unsigned short)(0), + vec_ldl(__a, __b), + vec_lvsl(__a, __b)); +} + +static vector unsigned short __ATTRS_o_ai +vec_lvrxl(int __a, const vector unsigned short *__b) +{ + return vec_perm((vector unsigned short)(0), + vec_ldl(__a, __b), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector bool short __ATTRS_o_ai +vec_lvrxl(int __a, const vector bool short *__b) +{ + return vec_perm((vector bool short)(0), + vec_ldl(__a, __b), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector pixel __ATTRS_o_ai +vec_lvrxl(int __a, const vector pixel *__b) +{ + return vec_perm((vector pixel)(0), + vec_ldl(__a, __b), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector int __ATTRS_o_ai +vec_lvrxl(int __a, const int *__b) +{ + return vec_perm((vector int)(0), + vec_ldl(__a, __b), + vec_lvsl(__a, __b)); +} + +static vector int __ATTRS_o_ai +vec_lvrxl(int __a, const vector int *__b) +{ + return vec_perm((vector int)(0), + vec_ldl(__a, __b), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector unsigned int __ATTRS_o_ai +vec_lvrxl(int __a, const unsigned int *__b) +{ + return vec_perm((vector unsigned int)(0), + vec_ldl(__a, __b), + vec_lvsl(__a, __b)); +} + +static vector unsigned int __ATTRS_o_ai +vec_lvrxl(int __a, const vector unsigned int *__b) +{ + return vec_perm((vector unsigned int)(0), + vec_ldl(__a, __b), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector bool int __ATTRS_o_ai +vec_lvrxl(int __a, const vector bool int *__b) +{ + return vec_perm((vector bool int)(0), + vec_ldl(__a, __b), + vec_lvsl(__a, (unsigned char *)__b)); +} + +static vector float __ATTRS_o_ai +vec_lvrxl(int __a, const float *__b) +{ + return vec_perm((vector float)(0), + vec_ldl(__a, __b), + vec_lvsl(__a, __b)); +} + +static vector float __ATTRS_o_ai +vec_lvrxl(int __a, const vector float *__b) +{ + return vec_perm((vector float)(0), + vec_ldl(__a, __b), + vec_lvsl(__a, (unsigned char *)__b)); +} + +/* vec_stvlx */ + +static void __ATTRS_o_ai +vec_stvlx(vector signed char __a, int __b, signed char *__c) +{ + return vec_st(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, __c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlx(vector signed char __a, int __b, vector signed char *__c) +{ + return vec_st(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlx(vector unsigned char __a, int __b, unsigned char *__c) +{ + return vec_st(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, __c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlx(vector unsigned char __a, int __b, vector unsigned char *__c) +{ + return vec_st(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlx(vector bool char __a, int __b, vector bool char *__c) +{ + return vec_st(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlx(vector short __a, int __b, short *__c) +{ + return vec_st(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, __c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlx(vector short __a, int __b, vector short *__c) +{ + return vec_st(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlx(vector unsigned short __a, int __b, unsigned short *__c) +{ + return vec_st(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, __c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlx(vector unsigned short __a, int __b, vector unsigned short *__c) +{ + return vec_st(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlx(vector bool short __a, int __b, vector bool short *__c) +{ + return vec_st(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlx(vector pixel __a, int __b, vector pixel *__c) +{ + return vec_st(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlx(vector int __a, int __b, int *__c) +{ + return vec_st(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, __c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlx(vector int __a, int __b, vector int *__c) +{ + return vec_st(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlx(vector unsigned int __a, int __b, unsigned int *__c) +{ + return vec_st(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, __c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlx(vector unsigned int __a, int __b, vector unsigned int *__c) +{ + return vec_st(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlx(vector bool int __a, int __b, vector bool int *__c) +{ + return vec_st(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlx(vector float __a, int __b, vector float *__c) +{ + return vec_st(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +/* vec_stvlxl */ + +static void __ATTRS_o_ai +vec_stvlxl(vector signed char __a, int __b, signed char *__c) +{ + return vec_stl(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, __c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlxl(vector signed char __a, int __b, vector signed char *__c) +{ + return vec_stl(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlxl(vector unsigned char __a, int __b, unsigned char *__c) +{ + return vec_stl(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, __c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlxl(vector unsigned char __a, int __b, vector unsigned char *__c) +{ + return vec_stl(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlxl(vector bool char __a, int __b, vector bool char *__c) +{ + return vec_stl(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlxl(vector short __a, int __b, short *__c) +{ + return vec_stl(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, __c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlxl(vector short __a, int __b, vector short *__c) +{ + return vec_stl(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlxl(vector unsigned short __a, int __b, unsigned short *__c) +{ + return vec_stl(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, __c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlxl(vector unsigned short __a, int __b, vector unsigned short *__c) +{ + return vec_stl(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlxl(vector bool short __a, int __b, vector bool short *__c) +{ + return vec_stl(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlxl(vector pixel __a, int __b, vector pixel *__c) +{ + return vec_stl(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlxl(vector int __a, int __b, int *__c) +{ + return vec_stl(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, __c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlxl(vector int __a, int __b, vector int *__c) +{ + return vec_stl(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlxl(vector unsigned int __a, int __b, unsigned int *__c) +{ + return vec_stl(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, __c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlxl(vector unsigned int __a, int __b, vector unsigned int *__c) +{ + return vec_stl(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlxl(vector bool int __a, int __b, vector bool int *__c) +{ + return vec_stl(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvlxl(vector float __a, int __b, vector float *__c) +{ + return vec_stl(vec_perm(vec_lvrx(__b, __c), + __a, + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +/* vec_stvrx */ + +static void __ATTRS_o_ai +vec_stvrx(vector signed char __a, int __b, signed char *__c) +{ + return vec_st(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, __c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrx(vector signed char __a, int __b, vector signed char *__c) +{ + return vec_st(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrx(vector unsigned char __a, int __b, unsigned char *__c) +{ + return vec_st(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, __c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrx(vector unsigned char __a, int __b, vector unsigned char *__c) +{ + return vec_st(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrx(vector bool char __a, int __b, vector bool char *__c) +{ + return vec_st(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrx(vector short __a, int __b, short *__c) +{ + return vec_st(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, __c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrx(vector short __a, int __b, vector short *__c) +{ + return vec_st(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrx(vector unsigned short __a, int __b, unsigned short *__c) +{ + return vec_st(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, __c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrx(vector unsigned short __a, int __b, vector unsigned short *__c) +{ + return vec_st(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrx(vector bool short __a, int __b, vector bool short *__c) +{ + return vec_st(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrx(vector pixel __a, int __b, vector pixel *__c) +{ + return vec_st(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrx(vector int __a, int __b, int *__c) +{ + return vec_st(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, __c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrx(vector int __a, int __b, vector int *__c) +{ + return vec_st(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrx(vector unsigned int __a, int __b, unsigned int *__c) +{ + return vec_st(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, __c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrx(vector unsigned int __a, int __b, vector unsigned int *__c) +{ + return vec_st(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrx(vector bool int __a, int __b, vector bool int *__c) +{ + return vec_st(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrx(vector float __a, int __b, vector float *__c) +{ + return vec_st(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +/* vec_stvrxl */ + +static void __ATTRS_o_ai +vec_stvrxl(vector signed char __a, int __b, signed char *__c) +{ + return vec_stl(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, __c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrxl(vector signed char __a, int __b, vector signed char *__c) +{ + return vec_stl(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrxl(vector unsigned char __a, int __b, unsigned char *__c) +{ + return vec_stl(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, __c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrxl(vector unsigned char __a, int __b, vector unsigned char *__c) +{ + return vec_stl(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrxl(vector bool char __a, int __b, vector bool char *__c) +{ + return vec_stl(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrxl(vector short __a, int __b, short *__c) +{ + return vec_stl(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, __c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrxl(vector short __a, int __b, vector short *__c) +{ + return vec_stl(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrxl(vector unsigned short __a, int __b, unsigned short *__c) +{ + return vec_stl(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, __c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrxl(vector unsigned short __a, int __b, vector unsigned short *__c) +{ + return vec_stl(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrxl(vector bool short __a, int __b, vector bool short *__c) +{ + return vec_stl(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrxl(vector pixel __a, int __b, vector pixel *__c) +{ + return vec_stl(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrxl(vector int __a, int __b, int *__c) +{ + return vec_stl(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, __c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrxl(vector int __a, int __b, vector int *__c) +{ + return vec_stl(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrxl(vector unsigned int __a, int __b, unsigned int *__c) +{ + return vec_stl(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, __c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrxl(vector unsigned int __a, int __b, vector unsigned int *__c) +{ + return vec_stl(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrxl(vector bool int __a, int __b, vector bool int *__c) +{ + return vec_stl(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +static void __ATTRS_o_ai +vec_stvrxl(vector float __a, int __b, vector float *__c) +{ + return vec_stl(vec_perm(__a, + vec_lvlx(__b, __c), + vec_lvsr(__b, (unsigned char *)__c)), + __b, __c); +} + +/* vec_promote */ + +static vector signed char __ATTRS_o_ai +vec_promote(signed char __a, int __b) +{ + vector signed char __res = (vector signed char)(0); + __res[__b] = __a; + return __res; +} + +static vector unsigned char __ATTRS_o_ai +vec_promote(unsigned char __a, int __b) +{ + vector unsigned char __res = (vector unsigned char)(0); + __res[__b] = __a; + return __res; +} + +static vector short __ATTRS_o_ai +vec_promote(short __a, int __b) +{ + vector short __res = (vector short)(0); + __res[__b] = __a; + return __res; +} + +static vector unsigned short __ATTRS_o_ai +vec_promote(unsigned short __a, int __b) +{ + vector unsigned short __res = (vector unsigned short)(0); + __res[__b] = __a; + return __res; +} + +static vector int __ATTRS_o_ai +vec_promote(int __a, int __b) +{ + vector int __res = (vector int)(0); + __res[__b] = __a; + return __res; +} + +static vector unsigned int __ATTRS_o_ai +vec_promote(unsigned int __a, int __b) +{ + vector unsigned int __res = (vector unsigned int)(0); + __res[__b] = __a; + return __res; +} + +static vector float __ATTRS_o_ai +vec_promote(float __a, int __b) +{ + vector float __res = (vector float)(0); + __res[__b] = __a; + return __res; +} + +/* vec_splats */ + +static vector signed char __ATTRS_o_ai +vec_splats(signed char __a) +{ + return (vector signed char)(__a); +} + +static vector unsigned char __ATTRS_o_ai +vec_splats(unsigned char __a) +{ + return (vector unsigned char)(__a); +} + +static vector short __ATTRS_o_ai +vec_splats(short __a) +{ + return (vector short)(__a); +} + +static vector unsigned short __ATTRS_o_ai +vec_splats(unsigned short __a) +{ + return (vector unsigned short)(__a); +} + +static vector int __ATTRS_o_ai +vec_splats(int __a) +{ + return (vector int)(__a); +} + +static vector unsigned int __ATTRS_o_ai +vec_splats(unsigned int __a) +{ + return (vector unsigned int)(__a); +} + +static vector float __ATTRS_o_ai +vec_splats(float __a) +{ + return (vector float)(__a); +} + +/* ----------------------------- predicates --------------------------------- */ + +/* vec_all_eq */ + +static int __ATTRS_o_ai +vec_all_eq(vector signed char __a, vector signed char __b) +{ + return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_all_eq(vector signed char __a, vector bool char __b) +{ + return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_all_eq(vector unsigned char __a, vector unsigned char __b) +{ + return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_all_eq(vector unsigned char __a, vector bool char __b) +{ + return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_all_eq(vector bool char __a, vector signed char __b) +{ + return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_all_eq(vector bool char __a, vector unsigned char __b) +{ + return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_all_eq(vector bool char __a, vector bool char __b) +{ + return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_all_eq(vector short __a, vector short __b) +{ + return __builtin_altivec_vcmpequh_p(__CR6_LT, __a, __b); +} + +static int __ATTRS_o_ai +vec_all_eq(vector short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpequh_p(__CR6_LT, __a, (vector short)__b); +} + +static int __ATTRS_o_ai +vec_all_eq(vector unsigned short __a, vector unsigned short __b) +{ + return + __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a, (vector short)__b); +} + +static int __ATTRS_o_ai +vec_all_eq(vector unsigned short __a, vector bool short __b) +{ + return + __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a, (vector short)__b); +} + +static int __ATTRS_o_ai +vec_all_eq(vector bool short __a, vector short __b) +{ + return + __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a, (vector short)__b); +} + +static int __ATTRS_o_ai +vec_all_eq(vector bool short __a, vector unsigned short __b) +{ + return + __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a, (vector short)__b); +} + +static int __ATTRS_o_ai +vec_all_eq(vector bool short __a, vector bool short __b) +{ + return + __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a, (vector short)__b); +} + +static int __ATTRS_o_ai +vec_all_eq(vector pixel __a, vector pixel __b) +{ + return + __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a, (vector short)__b); +} + +static int __ATTRS_o_ai +vec_all_eq(vector int __a, vector int __b) +{ + return __builtin_altivec_vcmpequw_p(__CR6_LT, __a, __b); +} + +static int __ATTRS_o_ai +vec_all_eq(vector int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpequw_p(__CR6_LT, __a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_all_eq(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_all_eq(vector unsigned int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_all_eq(vector bool int __a, vector int __b) +{ + return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_all_eq(vector bool int __a, vector unsigned int __b) +{ + return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_all_eq(vector bool int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_all_eq(vector float __a, vector float __b) +{ + return __builtin_altivec_vcmpeqfp_p(__CR6_LT, __a, __b); +} + +/* vec_all_ge */ + +static int __ATTRS_o_ai +vec_all_ge(vector signed char __a, vector signed char __b) +{ + return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __b, __a); +} + +static int __ATTRS_o_ai +vec_all_ge(vector signed char __a, vector bool char __b) +{ + return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, (vector signed char)__b, __a); +} + +static int __ATTRS_o_ai +vec_all_ge(vector unsigned char __a, vector unsigned char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __b, __a); +} + +static int __ATTRS_o_ai +vec_all_ge(vector unsigned char __a, vector bool char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b, __a); +} + +static int __ATTRS_o_ai +vec_all_ge(vector bool char __a, vector signed char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_EQ, + (vector unsigned char)__b, + (vector unsigned char)__a); +} + +static int __ATTRS_o_ai +vec_all_ge(vector bool char __a, vector unsigned char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __b, (vector unsigned char)__a); +} + +static int __ATTRS_o_ai +vec_all_ge(vector bool char __a, vector bool char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_EQ, + (vector unsigned char)__b, + (vector unsigned char)__a); +} + +static int __ATTRS_o_ai +vec_all_ge(vector short __a, vector short __b) +{ + return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __b, __a); +} + +static int __ATTRS_o_ai +vec_all_ge(vector short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, (vector short)__b, __a); +} + +static int __ATTRS_o_ai +vec_all_ge(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __b, __a); +} + +static int __ATTRS_o_ai +vec_all_ge(vector unsigned short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b, __a); +} + +static int __ATTRS_o_ai +vec_all_ge(vector bool short __a, vector short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, + (vector unsigned short)__b, + (vector unsigned short)__a); +} + +static int __ATTRS_o_ai +vec_all_ge(vector bool short __a, vector unsigned short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __b, (vector unsigned short)__a); +} + +static int __ATTRS_o_ai +vec_all_ge(vector bool short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, + (vector unsigned short)__b, + (vector unsigned short)__a); +} + +static int __ATTRS_o_ai +vec_all_ge(vector int __a, vector int __b) +{ + return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __b, __a); +} + +static int __ATTRS_o_ai +vec_all_ge(vector int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, (vector int)__b, __a); +} + +static int __ATTRS_o_ai +vec_all_ge(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __b, __a); +} + +static int __ATTRS_o_ai +vec_all_ge(vector unsigned int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b, __a); +} + +static int __ATTRS_o_ai +vec_all_ge(vector bool int __a, vector int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, + (vector unsigned int)__b, + (vector unsigned int)__a); +} + +static int __ATTRS_o_ai +vec_all_ge(vector bool int __a, vector unsigned int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __b, (vector unsigned int)__a); +} + +static int __ATTRS_o_ai +vec_all_ge(vector bool int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, + (vector unsigned int)__b, + (vector unsigned int)__a); +} + +static int __ATTRS_o_ai +vec_all_ge(vector float __a, vector float __b) +{ + return __builtin_altivec_vcmpgefp_p(__CR6_LT, __a, __b); +} + +/* vec_all_gt */ + +static int __ATTRS_o_ai +vec_all_gt(vector signed char __a, vector signed char __b) +{ + return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __a, __b); +} + +static int __ATTRS_o_ai +vec_all_gt(vector signed char __a, vector bool char __b) +{ + return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __a, (vector signed char)__b); +} + +static int __ATTRS_o_ai +vec_all_gt(vector unsigned char __a, vector unsigned char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_LT, __a, __b); +} + +static int __ATTRS_o_ai +vec_all_gt(vector unsigned char __a, vector bool char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_LT, __a, (vector unsigned char)__b); +} + +static int __ATTRS_o_ai +vec_all_gt(vector bool char __a, vector signed char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_LT, + (vector unsigned char)__a, + (vector unsigned char)__b); +} + +static int __ATTRS_o_ai +vec_all_gt(vector bool char __a, vector unsigned char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a, __b); +} + +static int __ATTRS_o_ai +vec_all_gt(vector bool char __a, vector bool char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_LT, + (vector unsigned char)__a, + (vector unsigned char)__b); +} + +static int __ATTRS_o_ai +vec_all_gt(vector short __a, vector short __b) +{ + return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __a, __b); +} + +static int __ATTRS_o_ai +vec_all_gt(vector short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __a, (vector short)__b); +} + +static int __ATTRS_o_ai +vec_all_gt(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __a, __b); +} + +static int __ATTRS_o_ai +vec_all_gt(vector unsigned short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __a, (vector unsigned short)__b); +} + +static int __ATTRS_o_ai +vec_all_gt(vector bool short __a, vector short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_LT, + (vector unsigned short)__a, + (vector unsigned short)__b); +} + +static int __ATTRS_o_ai +vec_all_gt(vector bool short __a, vector unsigned short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a, __b); +} + +static int __ATTRS_o_ai +vec_all_gt(vector bool short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_LT, + (vector unsigned short)__a, + (vector unsigned short)__b); +} + +static int __ATTRS_o_ai +vec_all_gt(vector int __a, vector int __b) +{ + return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __a, __b); +} + +static int __ATTRS_o_ai +vec_all_gt(vector int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_all_gt(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __a, __b); +} + +static int __ATTRS_o_ai +vec_all_gt(vector unsigned int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __a, (vector unsigned int)__b); +} + +static int __ATTRS_o_ai +vec_all_gt(vector bool int __a, vector int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_LT, + (vector unsigned int)__a, + (vector unsigned int)__b); +} + +static int __ATTRS_o_ai +vec_all_gt(vector bool int __a, vector unsigned int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a, __b); +} + +static int __ATTRS_o_ai +vec_all_gt(vector bool int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_LT, + (vector unsigned int)__a, + (vector unsigned int)__b); +} + +static int __ATTRS_o_ai +vec_all_gt(vector float __a, vector float __b) +{ + return __builtin_altivec_vcmpgtfp_p(__CR6_LT, __a, __b); +} + +/* vec_all_in */ + +static int __attribute__((__always_inline__)) +vec_all_in(vector float __a, vector float __b) +{ + return __builtin_altivec_vcmpbfp_p(__CR6_EQ, __a, __b); +} + +/* vec_all_le */ + +static int __ATTRS_o_ai +vec_all_le(vector signed char __a, vector signed char __b) +{ + return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __a, __b); +} + +static int __ATTRS_o_ai +vec_all_le(vector signed char __a, vector bool char __b) +{ + return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __a, (vector signed char)__b); +} + +static int __ATTRS_o_ai +vec_all_le(vector unsigned char __a, vector unsigned char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __a, __b); +} + +static int __ATTRS_o_ai +vec_all_le(vector unsigned char __a, vector bool char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __a, (vector unsigned char)__b); +} + +static int __ATTRS_o_ai +vec_all_le(vector bool char __a, vector signed char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_EQ, + (vector unsigned char)__a, + (vector unsigned char)__b); +} + +static int __ATTRS_o_ai +vec_all_le(vector bool char __a, vector unsigned char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a, __b); +} + +static int __ATTRS_o_ai +vec_all_le(vector bool char __a, vector bool char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_EQ, + (vector unsigned char)__a, + (vector unsigned char)__b); +} + +static int __ATTRS_o_ai +vec_all_le(vector short __a, vector short __b) +{ + return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __a, __b); +} + +static int __ATTRS_o_ai +vec_all_le(vector short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __a, (vector short)__b); +} + +static int __ATTRS_o_ai +vec_all_le(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __a, __b); +} + +static int __ATTRS_o_ai +vec_all_le(vector unsigned short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __a, (vector unsigned short)__b); +} + +static int __ATTRS_o_ai +vec_all_le(vector bool short __a, vector short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, + (vector unsigned short)__a, + (vector unsigned short)__b); +} + +static int __ATTRS_o_ai +vec_all_le(vector bool short __a, vector unsigned short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a, __b); +} + +static int __ATTRS_o_ai +vec_all_le(vector bool short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, + (vector unsigned short)__a, + (vector unsigned short)__b); +} + +static int __ATTRS_o_ai +vec_all_le(vector int __a, vector int __b) +{ + return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __a, __b); +} + +static int __ATTRS_o_ai +vec_all_le(vector int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_all_le(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __a, __b); +} + +static int __ATTRS_o_ai +vec_all_le(vector unsigned int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __a, (vector unsigned int)__b); +} + +static int __ATTRS_o_ai +vec_all_le(vector bool int __a, vector int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, + (vector unsigned int)__a, + (vector unsigned int)__b); +} + +static int __ATTRS_o_ai +vec_all_le(vector bool int __a, vector unsigned int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a, __b); +} + +static int __ATTRS_o_ai +vec_all_le(vector bool int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, + (vector unsigned int)__a, + (vector unsigned int)__b); +} + +static int __ATTRS_o_ai +vec_all_le(vector float __a, vector float __b) +{ + return __builtin_altivec_vcmpgefp_p(__CR6_LT, __b, __a); +} + +/* vec_all_lt */ + +static int __ATTRS_o_ai +vec_all_lt(vector signed char __a, vector signed char __b) +{ + return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __b, __a); +} + +static int __ATTRS_o_ai +vec_all_lt(vector signed char __a, vector bool char __b) +{ + return __builtin_altivec_vcmpgtsb_p(__CR6_LT, (vector signed char)__b, __a); +} + +static int __ATTRS_o_ai +vec_all_lt(vector unsigned char __a, vector unsigned char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_LT, __b, __a); +} + +static int __ATTRS_o_ai +vec_all_lt(vector unsigned char __a, vector bool char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b, __a); +} + +static int __ATTRS_o_ai +vec_all_lt(vector bool char __a, vector signed char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_LT, + (vector unsigned char)__b, + (vector unsigned char)__a); +} + +static int __ATTRS_o_ai +vec_all_lt(vector bool char __a, vector unsigned char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_LT, __b, (vector unsigned char)__a); +} + +static int __ATTRS_o_ai +vec_all_lt(vector bool char __a, vector bool char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_LT, + (vector unsigned char)__b, + (vector unsigned char)__a); +} + +static int __ATTRS_o_ai +vec_all_lt(vector short __a, vector short __b) +{ + return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __b, __a); +} + +static int __ATTRS_o_ai +vec_all_lt(vector short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpgtsh_p(__CR6_LT, (vector short)__b, __a); +} + +static int __ATTRS_o_ai +vec_all_lt(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __b, __a); +} + +static int __ATTRS_o_ai +vec_all_lt(vector unsigned short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b, __a); +} + +static int __ATTRS_o_ai +vec_all_lt(vector bool short __a, vector short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_LT, + (vector unsigned short)__b, + (vector unsigned short)__a); +} + +static int __ATTRS_o_ai +vec_all_lt(vector bool short __a, vector unsigned short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __b, (vector unsigned short)__a); +} + +static int __ATTRS_o_ai +vec_all_lt(vector bool short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_LT, + (vector unsigned short)__b, + (vector unsigned short)__a); +} + +static int __ATTRS_o_ai +vec_all_lt(vector int __a, vector int __b) +{ + return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __b, __a); +} + +static int __ATTRS_o_ai +vec_all_lt(vector int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpgtsw_p(__CR6_LT, (vector int)__b, __a); +} + +static int __ATTRS_o_ai +vec_all_lt(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __b, __a); +} + +static int __ATTRS_o_ai +vec_all_lt(vector unsigned int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b, __a); +} + +static int __ATTRS_o_ai +vec_all_lt(vector bool int __a, vector int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_LT, + (vector unsigned int)__b, + (vector unsigned int)__a); +} + +static int __ATTRS_o_ai +vec_all_lt(vector bool int __a, vector unsigned int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __b, (vector unsigned int)__a); +} + +static int __ATTRS_o_ai +vec_all_lt(vector bool int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_LT, + (vector unsigned int)__b, + (vector unsigned int)__a); +} + +static int __ATTRS_o_ai +vec_all_lt(vector float __a, vector float __b) +{ + return __builtin_altivec_vcmpgtfp_p(__CR6_LT, __b, __a); +} + +/* vec_all_nan */ + +static int __attribute__((__always_inline__)) +vec_all_nan(vector float __a) +{ + return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, __a, __a); +} + +/* vec_all_ne */ + +static int __ATTRS_o_ai +vec_all_ne(vector signed char __a, vector signed char __b) +{ + return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_all_ne(vector signed char __a, vector bool char __b) +{ + return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_all_ne(vector unsigned char __a, vector unsigned char __b) +{ + return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_all_ne(vector unsigned char __a, vector bool char __b) +{ + return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_all_ne(vector bool char __a, vector signed char __b) +{ + return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_all_ne(vector bool char __a, vector unsigned char __b) +{ + return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_all_ne(vector bool char __a, vector bool char __b) +{ + return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_all_ne(vector short __a, vector short __b) +{ + return __builtin_altivec_vcmpequh_p(__CR6_EQ, __a, __b); +} + +static int __ATTRS_o_ai +vec_all_ne(vector short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpequh_p(__CR6_EQ, __a, (vector short)__b); +} + +static int __ATTRS_o_ai +vec_all_ne(vector unsigned short __a, vector unsigned short __b) +{ + return + __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a, (vector short)__b); +} + +static int __ATTRS_o_ai +vec_all_ne(vector unsigned short __a, vector bool short __b) +{ + return + __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a, (vector short)__b); +} + +static int __ATTRS_o_ai +vec_all_ne(vector bool short __a, vector short __b) +{ + return + __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a, (vector short)__b); +} + +static int __ATTRS_o_ai +vec_all_ne(vector bool short __a, vector unsigned short __b) +{ + return + __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a, (vector short)__b); +} + +static int __ATTRS_o_ai +vec_all_ne(vector bool short __a, vector bool short __b) +{ + return + __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a, (vector short)__b); +} + +static int __ATTRS_o_ai +vec_all_ne(vector pixel __a, vector pixel __b) +{ + return + __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a, (vector short)__b); +} + +static int __ATTRS_o_ai +vec_all_ne(vector int __a, vector int __b) +{ + return __builtin_altivec_vcmpequw_p(__CR6_EQ, __a, __b); +} + +static int __ATTRS_o_ai +vec_all_ne(vector int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpequw_p(__CR6_EQ, __a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_all_ne(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_all_ne(vector unsigned int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_all_ne(vector bool int __a, vector int __b) +{ + return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_all_ne(vector bool int __a, vector unsigned int __b) +{ + return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_all_ne(vector bool int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_all_ne(vector float __a, vector float __b) +{ + return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, __a, __b); +} + +/* vec_all_nge */ + +static int __attribute__((__always_inline__)) +vec_all_nge(vector float __a, vector float __b) +{ + return __builtin_altivec_vcmpgefp_p(__CR6_EQ, __a, __b); +} + +/* vec_all_ngt */ + +static int __attribute__((__always_inline__)) +vec_all_ngt(vector float __a, vector float __b) +{ + return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, __a, __b); +} + +/* vec_all_nle */ + +static int __attribute__((__always_inline__)) +vec_all_nle(vector float __a, vector float __b) +{ + return __builtin_altivec_vcmpgefp_p(__CR6_EQ, __b, __a); +} + +/* vec_all_nlt */ + +static int __attribute__((__always_inline__)) +vec_all_nlt(vector float __a, vector float __b) +{ + return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, __b, __a); +} + +/* vec_all_numeric */ + +static int __attribute__((__always_inline__)) +vec_all_numeric(vector float __a) +{ + return __builtin_altivec_vcmpeqfp_p(__CR6_LT, __a, __a); +} + +/* vec_any_eq */ + +static int __ATTRS_o_ai +vec_any_eq(vector signed char __a, vector signed char __b) +{ + return + __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_any_eq(vector signed char __a, vector bool char __b) +{ + return + __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_any_eq(vector unsigned char __a, vector unsigned char __b) +{ + return + __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_any_eq(vector unsigned char __a, vector bool char __b) +{ + return + __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_any_eq(vector bool char __a, vector signed char __b) +{ + return + __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_any_eq(vector bool char __a, vector unsigned char __b) +{ + return + __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_any_eq(vector bool char __a, vector bool char __b) +{ + return + __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_any_eq(vector short __a, vector short __b) +{ + return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, __a, __b); +} + +static int __ATTRS_o_ai +vec_any_eq(vector short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, __a, (vector short)__b); +} + +static int __ATTRS_o_ai +vec_any_eq(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, + (vector short)__a, + (vector short)__b); +} + +static int __ATTRS_o_ai +vec_any_eq(vector unsigned short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, + (vector short)__a, + (vector short)__b); +} + +static int __ATTRS_o_ai +vec_any_eq(vector bool short __a, vector short __b) +{ + return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, + (vector short)__a, + (vector short)__b); +} + +static int __ATTRS_o_ai +vec_any_eq(vector bool short __a, vector unsigned short __b) +{ + return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, + (vector short)__a, + (vector short)__b); +} + +static int __ATTRS_o_ai +vec_any_eq(vector bool short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, + (vector short)__a, + (vector short)__b); +} + +static int __ATTRS_o_ai +vec_any_eq(vector pixel __a, vector pixel __b) +{ + return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, + (vector short)__a, + (vector short)__b); +} + +static int __ATTRS_o_ai +vec_any_eq(vector int __a, vector int __b) +{ + return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, __a, __b); +} + +static int __ATTRS_o_ai +vec_any_eq(vector int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, __a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_any_eq(vector unsigned int __a, vector unsigned int __b) +{ + return + __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_any_eq(vector unsigned int __a, vector bool int __b) +{ + return + __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_any_eq(vector bool int __a, vector int __b) +{ + return + __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_any_eq(vector bool int __a, vector unsigned int __b) +{ + return + __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_any_eq(vector bool int __a, vector bool int __b) +{ + return + __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_any_eq(vector float __a, vector float __b) +{ + return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, __a, __b); +} + +/* vec_any_ge */ + +static int __ATTRS_o_ai +vec_any_ge(vector signed char __a, vector signed char __b) +{ + return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __b, __a); +} + +static int __ATTRS_o_ai +vec_any_ge(vector signed char __a, vector bool char __b) +{ + return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, (vector signed char)__b, __a); +} + +static int __ATTRS_o_ai +vec_any_ge(vector unsigned char __a, vector unsigned char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __b, __a); +} + +static int __ATTRS_o_ai +vec_any_ge(vector unsigned char __a, vector bool char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b, __a); +} + +static int __ATTRS_o_ai +vec_any_ge(vector bool char __a, vector signed char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, + (vector unsigned char)__b, + (vector unsigned char)__a); +} + +static int __ATTRS_o_ai +vec_any_ge(vector bool char __a, vector unsigned char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __b, (vector unsigned char)__a); +} + +static int __ATTRS_o_ai +vec_any_ge(vector bool char __a, vector bool char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, + (vector unsigned char)__b, + (vector unsigned char)__a); +} + +static int __ATTRS_o_ai +vec_any_ge(vector short __a, vector short __b) +{ + return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __b, __a); +} + +static int __ATTRS_o_ai +vec_any_ge(vector short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, (vector short)__b, __a); +} + +static int __ATTRS_o_ai +vec_any_ge(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __b, __a); +} + +static int __ATTRS_o_ai +vec_any_ge(vector unsigned short __a, vector bool short __b) +{ + return + __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b, __a); +} + +static int __ATTRS_o_ai +vec_any_ge(vector bool short __a, vector short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, + (vector unsigned short)__b, + (vector unsigned short)__a); +} + +static int __ATTRS_o_ai +vec_any_ge(vector bool short __a, vector unsigned short __b) +{ + return + __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __b, (vector unsigned short)__a); +} + +static int __ATTRS_o_ai +vec_any_ge(vector bool short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, + (vector unsigned short)__b, + (vector unsigned short)__a); +} + +static int __ATTRS_o_ai +vec_any_ge(vector int __a, vector int __b) +{ + return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __b, __a); +} + +static int __ATTRS_o_ai +vec_any_ge(vector int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, (vector int)__b, __a); +} + +static int __ATTRS_o_ai +vec_any_ge(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __b, __a); +} + +static int __ATTRS_o_ai +vec_any_ge(vector unsigned int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b, __a); +} + +static int __ATTRS_o_ai +vec_any_ge(vector bool int __a, vector int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, + (vector unsigned int)__b, + (vector unsigned int)__a); +} + +static int __ATTRS_o_ai +vec_any_ge(vector bool int __a, vector unsigned int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __b, (vector unsigned int)__a); +} + +static int __ATTRS_o_ai +vec_any_ge(vector bool int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, + (vector unsigned int)__b, + (vector unsigned int)__a); +} + +static int __ATTRS_o_ai +vec_any_ge(vector float __a, vector float __b) +{ + return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, __a, __b); +} + +/* vec_any_gt */ + +static int __ATTRS_o_ai +vec_any_gt(vector signed char __a, vector signed char __b) +{ + return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __a, __b); +} + +static int __ATTRS_o_ai +vec_any_gt(vector signed char __a, vector bool char __b) +{ + return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __a, (vector signed char)__b); +} + +static int __ATTRS_o_ai +vec_any_gt(vector unsigned char __a, vector unsigned char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __a, __b); +} + +static int __ATTRS_o_ai +vec_any_gt(vector unsigned char __a, vector bool char __b) +{ + return + __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __a, (vector unsigned char)__b); +} + +static int __ATTRS_o_ai +vec_any_gt(vector bool char __a, vector signed char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, + (vector unsigned char)__a, + (vector unsigned char)__b); +} + +static int __ATTRS_o_ai +vec_any_gt(vector bool char __a, vector unsigned char __b) +{ + return + __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a, __b); +} + +static int __ATTRS_o_ai +vec_any_gt(vector bool char __a, vector bool char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, + (vector unsigned char)__a, + (vector unsigned char)__b); +} + +static int __ATTRS_o_ai +vec_any_gt(vector short __a, vector short __b) +{ + return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __a, __b); +} + +static int __ATTRS_o_ai +vec_any_gt(vector short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __a, (vector short)__b); +} + +static int __ATTRS_o_ai +vec_any_gt(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __a, __b); +} + +static int __ATTRS_o_ai +vec_any_gt(vector unsigned short __a, vector bool short __b) +{ + return + __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __a, (vector unsigned short)__b); +} + +static int __ATTRS_o_ai +vec_any_gt(vector bool short __a, vector short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, + (vector unsigned short)__a, + (vector unsigned short)__b); +} + +static int __ATTRS_o_ai +vec_any_gt(vector bool short __a, vector unsigned short __b) +{ + return + __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a, __b); +} + +static int __ATTRS_o_ai +vec_any_gt(vector bool short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, + (vector unsigned short)__a, + (vector unsigned short)__b); +} + +static int __ATTRS_o_ai +vec_any_gt(vector int __a, vector int __b) +{ + return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __a, __b); +} + +static int __ATTRS_o_ai +vec_any_gt(vector int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_any_gt(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __a, __b); +} + +static int __ATTRS_o_ai +vec_any_gt(vector unsigned int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __a, (vector unsigned int)__b); +} + +static int __ATTRS_o_ai +vec_any_gt(vector bool int __a, vector int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, + (vector unsigned int)__a, + (vector unsigned int)__b); +} + +static int __ATTRS_o_ai +vec_any_gt(vector bool int __a, vector unsigned int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a, __b); +} + +static int __ATTRS_o_ai +vec_any_gt(vector bool int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, + (vector unsigned int)__a, + (vector unsigned int)__b); +} + +static int __ATTRS_o_ai +vec_any_gt(vector float __a, vector float __b) +{ + return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, __a, __b); +} + +/* vec_any_le */ + +static int __ATTRS_o_ai +vec_any_le(vector signed char __a, vector signed char __b) +{ + return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __a, __b); +} + +static int __ATTRS_o_ai +vec_any_le(vector signed char __a, vector bool char __b) +{ + return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __a, (vector signed char)__b); +} + +static int __ATTRS_o_ai +vec_any_le(vector unsigned char __a, vector unsigned char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __a, __b); +} + +static int __ATTRS_o_ai +vec_any_le(vector unsigned char __a, vector bool char __b) +{ + return + __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __a, (vector unsigned char)__b); +} + +static int __ATTRS_o_ai +vec_any_le(vector bool char __a, vector signed char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, + (vector unsigned char)__a, + (vector unsigned char)__b); +} + +static int __ATTRS_o_ai +vec_any_le(vector bool char __a, vector unsigned char __b) +{ + return + __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a, __b); +} + +static int __ATTRS_o_ai +vec_any_le(vector bool char __a, vector bool char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, + (vector unsigned char)__a, + (vector unsigned char)__b); +} + +static int __ATTRS_o_ai +vec_any_le(vector short __a, vector short __b) +{ + return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __a, __b); +} + +static int __ATTRS_o_ai +vec_any_le(vector short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __a, (vector short)__b); +} + +static int __ATTRS_o_ai +vec_any_le(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __a, __b); +} + +static int __ATTRS_o_ai +vec_any_le(vector unsigned short __a, vector bool short __b) +{ + return + __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __a, (vector unsigned short)__b); +} + +static int __ATTRS_o_ai +vec_any_le(vector bool short __a, vector short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, + (vector unsigned short)__a, + (vector unsigned short)__b); +} + +static int __ATTRS_o_ai +vec_any_le(vector bool short __a, vector unsigned short __b) +{ + return + __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a, __b); +} + +static int __ATTRS_o_ai +vec_any_le(vector bool short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, + (vector unsigned short)__a, + (vector unsigned short)__b); +} + +static int __ATTRS_o_ai +vec_any_le(vector int __a, vector int __b) +{ + return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __a, __b); +} + +static int __ATTRS_o_ai +vec_any_le(vector int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_any_le(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __a, __b); +} + +static int __ATTRS_o_ai +vec_any_le(vector unsigned int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __a, (vector unsigned int)__b); +} + +static int __ATTRS_o_ai +vec_any_le(vector bool int __a, vector int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, + (vector unsigned int)__a, + (vector unsigned int)__b); +} + +static int __ATTRS_o_ai +vec_any_le(vector bool int __a, vector unsigned int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a, __b); +} + +static int __ATTRS_o_ai +vec_any_le(vector bool int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, + (vector unsigned int)__a, + (vector unsigned int)__b); +} + +static int __ATTRS_o_ai +vec_any_le(vector float __a, vector float __b) +{ + return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, __b, __a); +} + +/* vec_any_lt */ + +static int __ATTRS_o_ai +vec_any_lt(vector signed char __a, vector signed char __b) +{ + return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __b, __a); +} + +static int __ATTRS_o_ai +vec_any_lt(vector signed char __a, vector bool char __b) +{ + return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, (vector signed char)__b, __a); +} + +static int __ATTRS_o_ai +vec_any_lt(vector unsigned char __a, vector unsigned char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __b, __a); +} + +static int __ATTRS_o_ai +vec_any_lt(vector unsigned char __a, vector bool char __b) +{ + return + __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b, __a); +} + +static int __ATTRS_o_ai +vec_any_lt(vector bool char __a, vector signed char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, + (vector unsigned char)__b, + (vector unsigned char)__a); +} + +static int __ATTRS_o_ai +vec_any_lt(vector bool char __a, vector unsigned char __b) +{ + return + __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __b, (vector unsigned char)__a); +} + +static int __ATTRS_o_ai +vec_any_lt(vector bool char __a, vector bool char __b) +{ + return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, + (vector unsigned char)__b, + (vector unsigned char)__a); +} + +static int __ATTRS_o_ai +vec_any_lt(vector short __a, vector short __b) +{ + return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __b, __a); +} + +static int __ATTRS_o_ai +vec_any_lt(vector short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, (vector short)__b, __a); +} + +static int __ATTRS_o_ai +vec_any_lt(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __b, __a); +} + +static int __ATTRS_o_ai +vec_any_lt(vector unsigned short __a, vector bool short __b) +{ + return + __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b, __a); +} + +static int __ATTRS_o_ai +vec_any_lt(vector bool short __a, vector short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, + (vector unsigned short)__b, + (vector unsigned short)__a); +} + +static int __ATTRS_o_ai +vec_any_lt(vector bool short __a, vector unsigned short __b) +{ + return + __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __b, (vector unsigned short)__a); +} + +static int __ATTRS_o_ai +vec_any_lt(vector bool short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, + (vector unsigned short)__b, + (vector unsigned short)__a); +} + +static int __ATTRS_o_ai +vec_any_lt(vector int __a, vector int __b) +{ + return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __b, __a); +} + +static int __ATTRS_o_ai +vec_any_lt(vector int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, (vector int)__b, __a); +} + +static int __ATTRS_o_ai +vec_any_lt(vector unsigned int __a, vector unsigned int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __b, __a); +} + +static int __ATTRS_o_ai +vec_any_lt(vector unsigned int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b, __a); +} + +static int __ATTRS_o_ai +vec_any_lt(vector bool int __a, vector int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, + (vector unsigned int)__b, + (vector unsigned int)__a); +} + +static int __ATTRS_o_ai +vec_any_lt(vector bool int __a, vector unsigned int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __b, (vector unsigned int)__a); +} + +static int __ATTRS_o_ai +vec_any_lt(vector bool int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, + (vector unsigned int)__b, + (vector unsigned int)__a); +} + +static int __ATTRS_o_ai +vec_any_lt(vector float __a, vector float __b) +{ + return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, __b, __a); +} + +/* vec_any_nan */ + +static int __attribute__((__always_inline__)) +vec_any_nan(vector float __a) +{ + return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, __a, __a); +} + +/* vec_any_ne */ + +static int __ATTRS_o_ai +vec_any_ne(vector signed char __a, vector signed char __b) +{ + return + __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_any_ne(vector signed char __a, vector bool char __b) +{ + return + __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_any_ne(vector unsigned char __a, vector unsigned char __b) +{ + return + __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_any_ne(vector unsigned char __a, vector bool char __b) +{ + return + __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_any_ne(vector bool char __a, vector signed char __b) +{ + return + __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_any_ne(vector bool char __a, vector unsigned char __b) +{ + return + __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_any_ne(vector bool char __a, vector bool char __b) +{ + return + __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, (vector char)__b); +} + +static int __ATTRS_o_ai +vec_any_ne(vector short __a, vector short __b) +{ + return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, __a, __b); +} + +static int __ATTRS_o_ai +vec_any_ne(vector short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, __a, (vector short)__b); +} + +static int __ATTRS_o_ai +vec_any_ne(vector unsigned short __a, vector unsigned short __b) +{ + return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, + (vector short)__a, + (vector short)__b); +} + +static int __ATTRS_o_ai +vec_any_ne(vector unsigned short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, + (vector short)__a, + (vector short)__b); +} + +static int __ATTRS_o_ai +vec_any_ne(vector bool short __a, vector short __b) +{ + return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, + (vector short)__a, + (vector short)__b); +} + +static int __ATTRS_o_ai +vec_any_ne(vector bool short __a, vector unsigned short __b) +{ + return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, + (vector short)__a, + (vector short)__b); +} + +static int __ATTRS_o_ai +vec_any_ne(vector bool short __a, vector bool short __b) +{ + return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, + (vector short)__a, + (vector short)__b); +} + +static int __ATTRS_o_ai +vec_any_ne(vector pixel __a, vector pixel __b) +{ + return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, + (vector short)__a, + (vector short)__b); +} + +static int __ATTRS_o_ai +vec_any_ne(vector int __a, vector int __b) +{ + return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, __a, __b); +} + +static int __ATTRS_o_ai +vec_any_ne(vector int __a, vector bool int __b) +{ + return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, __a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_any_ne(vector unsigned int __a, vector unsigned int __b) +{ + return + __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_any_ne(vector unsigned int __a, vector bool int __b) +{ + return + __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_any_ne(vector bool int __a, vector int __b) +{ + return + __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_any_ne(vector bool int __a, vector unsigned int __b) +{ + return + __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_any_ne(vector bool int __a, vector bool int __b) +{ + return + __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a, (vector int)__b); +} + +static int __ATTRS_o_ai +vec_any_ne(vector float __a, vector float __b) +{ + return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, __a, __b); +} + +/* vec_any_nge */ + +static int __attribute__((__always_inline__)) +vec_any_nge(vector float __a, vector float __b) +{ + return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, __a, __b); +} + +/* vec_any_ngt */ + +static int __attribute__((__always_inline__)) +vec_any_ngt(vector float __a, vector float __b) +{ + return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, __a, __b); +} + +/* vec_any_nle */ + +static int __attribute__((__always_inline__)) +vec_any_nle(vector float __a, vector float __b) +{ + return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, __b, __a); +} + +/* vec_any_nlt */ + +static int __attribute__((__always_inline__)) +vec_any_nlt(vector float __a, vector float __b) +{ + return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, __b, __a); +} + +/* vec_any_numeric */ + +static int __attribute__((__always_inline__)) +vec_any_numeric(vector float __a) +{ + return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, __a, __a); +} + +/* vec_any_out */ + +static int __attribute__((__always_inline__)) +vec_any_out(vector float __a, vector float __b) +{ + return __builtin_altivec_vcmpbfp_p(__CR6_EQ_REV, __a, __b); +} + +#undef __ATTRS_o_ai + +#endif /* __ALTIVEC_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/ammintrin.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/ammintrin.h new file mode 100644 index 0000000..d87b9cd --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/ammintrin.h @@ -0,0 +1,68 @@ +/*===---- ammintrin.h - SSE4a intrinsics -----------------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef __AMMINTRIN_H +#define __AMMINTRIN_H + +#ifndef __SSE4A__ +#error "SSE4A instruction set not enabled" +#else + +#include + +#define _mm_extracti_si64(x, len, idx) \ + ((__m128i)__builtin_ia32_extrqi((__v2di)(__m128i)(x), \ + (char)(len), (char)(idx))) + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_extract_si64(__m128i __x, __m128i __y) +{ + return (__m128i)__builtin_ia32_extrq((__v2di)__x, (__v16qi)__y); +} + +#define _mm_inserti_si64(x, y, len, idx) \ + ((__m128i)__builtin_ia32_insertqi((__v2di)(__m128i)(x), \ + (__v2di)(__m128i)(y), \ + (char)(len), (char)(idx))) + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_insert_si64(__m128i __x, __m128i __y) +{ + return (__m128i)__builtin_ia32_insertq((__v2di)__x, (__v2di)__y); +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_stream_sd(double *__p, __m128d __a) +{ + __builtin_ia32_movntsd(__p, (__v2df)__a); +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_stream_ss(float *__p, __m128 __a) +{ + __builtin_ia32_movntss(__p, (__v4sf)__a); +} + +#endif /* __SSE4A__ */ + +#endif /* __AMMINTRIN_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/avx2intrin.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/avx2intrin.h new file mode 100644 index 0000000..1887fc8 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/avx2intrin.h @@ -0,0 +1,1206 @@ +/*===---- avx2intrin.h - AVX2 intrinsics -----------------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef __IMMINTRIN_H +#error "Never use directly; include instead." +#endif + +#ifndef __AVX2INTRIN_H +#define __AVX2INTRIN_H + +/* SSE4 Multiple Packed Sums of Absolute Difference. */ +#define _mm256_mpsadbw_epu8(X, Y, M) __builtin_ia32_mpsadbw256((X), (Y), (M)) + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_abs_epi8(__m256i __a) +{ + return (__m256i)__builtin_ia32_pabsb256((__v32qi)__a); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_abs_epi16(__m256i __a) +{ + return (__m256i)__builtin_ia32_pabsw256((__v16hi)__a); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_abs_epi32(__m256i __a) +{ + return (__m256i)__builtin_ia32_pabsd256((__v8si)__a); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_packs_epi16(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_packsswb256((__v16hi)__a, (__v16hi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_packs_epi32(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_packssdw256((__v8si)__a, (__v8si)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_packus_epi16(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_packuswb256((__v16hi)__a, (__v16hi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_packus_epi32(__m256i __V1, __m256i __V2) +{ + return (__m256i) __builtin_ia32_packusdw256((__v8si)__V1, (__v8si)__V2); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_add_epi8(__m256i __a, __m256i __b) +{ + return (__m256i)((__v32qi)__a + (__v32qi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_add_epi16(__m256i __a, __m256i __b) +{ + return (__m256i)((__v16hi)__a + (__v16hi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_add_epi32(__m256i __a, __m256i __b) +{ + return (__m256i)((__v8si)__a + (__v8si)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_add_epi64(__m256i __a, __m256i __b) +{ + return __a + __b; +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_adds_epi8(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_paddsb256((__v32qi)__a, (__v32qi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_adds_epi16(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_paddsw256((__v16hi)__a, (__v16hi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_adds_epu8(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_paddusb256((__v32qi)__a, (__v32qi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_adds_epu16(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_paddusw256((__v16hi)__a, (__v16hi)__b); +} + +#define _mm256_alignr_epi8(a, b, n) __extension__ ({ \ + __m256i __a = (a); \ + __m256i __b = (b); \ + (__m256i)__builtin_ia32_palignr256((__v32qi)__a, (__v32qi)__b, (n)); }) + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_and_si256(__m256i __a, __m256i __b) +{ + return __a & __b; +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_andnot_si256(__m256i __a, __m256i __b) +{ + return ~__a & __b; +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_avg_epu8(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_pavgb256((__v32qi)__a, (__v32qi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_avg_epu16(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_pavgw256((__v16hi)__a, (__v16hi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_blendv_epi8(__m256i __V1, __m256i __V2, __m256i __M) +{ + return (__m256i)__builtin_ia32_pblendvb256((__v32qi)__V1, (__v32qi)__V2, + (__v32qi)__M); +} + +#define _mm256_blend_epi16(V1, V2, M) __extension__ ({ \ + __m256i __V1 = (V1); \ + __m256i __V2 = (V2); \ + (__m256i)__builtin_ia32_pblendw256((__v16hi)__V1, (__v16hi)__V2, (M)); }) + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_cmpeq_epi8(__m256i __a, __m256i __b) +{ + return (__m256i)((__v32qi)__a == (__v32qi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_cmpeq_epi16(__m256i __a, __m256i __b) +{ + return (__m256i)((__v16hi)__a == (__v16hi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_cmpeq_epi32(__m256i __a, __m256i __b) +{ + return (__m256i)((__v8si)__a == (__v8si)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_cmpeq_epi64(__m256i __a, __m256i __b) +{ + return (__m256i)(__a == __b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_cmpgt_epi8(__m256i __a, __m256i __b) +{ + return (__m256i)((__v32qi)__a > (__v32qi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_cmpgt_epi16(__m256i __a, __m256i __b) +{ + return (__m256i)((__v16hi)__a > (__v16hi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_cmpgt_epi32(__m256i __a, __m256i __b) +{ + return (__m256i)((__v8si)__a > (__v8si)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_cmpgt_epi64(__m256i __a, __m256i __b) +{ + return (__m256i)(__a > __b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_hadd_epi16(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_phaddw256((__v16hi)__a, (__v16hi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_hadd_epi32(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_phaddd256((__v8si)__a, (__v8si)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_hadds_epi16(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_phaddsw256((__v16hi)__a, (__v16hi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_hsub_epi16(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_phsubw256((__v16hi)__a, (__v16hi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_hsub_epi32(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_phsubd256((__v8si)__a, (__v8si)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_hsubs_epi16(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_phsubsw256((__v16hi)__a, (__v16hi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_maddubs_epi16(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_pmaddubsw256((__v32qi)__a, (__v32qi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_madd_epi16(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_pmaddwd256((__v16hi)__a, (__v16hi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_max_epi8(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_pmaxsb256((__v32qi)__a, (__v32qi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_max_epi16(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_pmaxsw256((__v16hi)__a, (__v16hi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_max_epi32(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_pmaxsd256((__v8si)__a, (__v8si)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_max_epu8(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_pmaxub256((__v32qi)__a, (__v32qi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_max_epu16(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_pmaxuw256((__v16hi)__a, (__v16hi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_max_epu32(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_pmaxud256((__v8si)__a, (__v8si)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_min_epi8(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_pminsb256((__v32qi)__a, (__v32qi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_min_epi16(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_pminsw256((__v16hi)__a, (__v16hi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_min_epi32(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_pminsd256((__v8si)__a, (__v8si)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_min_epu8(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_pminub256((__v32qi)__a, (__v32qi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_min_epu16(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_pminuw256 ((__v16hi)__a, (__v16hi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_min_epu32(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_pminud256((__v8si)__a, (__v8si)__b); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm256_movemask_epi8(__m256i __a) +{ + return __builtin_ia32_pmovmskb256((__v32qi)__a); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_cvtepi8_epi16(__m128i __V) +{ + return (__m256i)__builtin_ia32_pmovsxbw256((__v16qi)__V); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_cvtepi8_epi32(__m128i __V) +{ + return (__m256i)__builtin_ia32_pmovsxbd256((__v16qi)__V); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_cvtepi8_epi64(__m128i __V) +{ + return (__m256i)__builtin_ia32_pmovsxbq256((__v16qi)__V); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_cvtepi16_epi32(__m128i __V) +{ + return (__m256i)__builtin_ia32_pmovsxwd256((__v8hi)__V); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_cvtepi16_epi64(__m128i __V) +{ + return (__m256i)__builtin_ia32_pmovsxwq256((__v8hi)__V); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_cvtepi32_epi64(__m128i __V) +{ + return (__m256i)__builtin_ia32_pmovsxdq256((__v4si)__V); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_cvtepu8_epi16(__m128i __V) +{ + return (__m256i)__builtin_ia32_pmovzxbw256((__v16qi)__V); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_cvtepu8_epi32(__m128i __V) +{ + return (__m256i)__builtin_ia32_pmovzxbd256((__v16qi)__V); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_cvtepu8_epi64(__m128i __V) +{ + return (__m256i)__builtin_ia32_pmovzxbq256((__v16qi)__V); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_cvtepu16_epi32(__m128i __V) +{ + return (__m256i)__builtin_ia32_pmovzxwd256((__v8hi)__V); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_cvtepu16_epi64(__m128i __V) +{ + return (__m256i)__builtin_ia32_pmovzxwq256((__v8hi)__V); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_cvtepu32_epi64(__m128i __V) +{ + return (__m256i)__builtin_ia32_pmovzxdq256((__v4si)__V); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_mul_epi32(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_pmuldq256((__v8si)__a, (__v8si)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_mulhrs_epi16(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_pmulhrsw256((__v16hi)__a, (__v16hi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_mulhi_epu16(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_pmulhuw256((__v16hi)__a, (__v16hi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_mulhi_epi16(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_pmulhw256((__v16hi)__a, (__v16hi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_mullo_epi16(__m256i __a, __m256i __b) +{ + return (__m256i)((__v16hi)__a * (__v16hi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_mullo_epi32 (__m256i __a, __m256i __b) +{ + return (__m256i)((__v8si)__a * (__v8si)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_mul_epu32(__m256i __a, __m256i __b) +{ + return __builtin_ia32_pmuludq256((__v8si)__a, (__v8si)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_or_si256(__m256i __a, __m256i __b) +{ + return __a | __b; +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_sad_epu8(__m256i __a, __m256i __b) +{ + return __builtin_ia32_psadbw256((__v32qi)__a, (__v32qi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_shuffle_epi8(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_pshufb256((__v32qi)__a, (__v32qi)__b); +} + +#define _mm256_shuffle_epi32(a, imm) __extension__ ({ \ + __m256i __a = (a); \ + (__m256i)__builtin_shufflevector((__v8si)__a, (__v8si)_mm256_set1_epi32(0), \ + (imm) & 0x3, ((imm) & 0xc) >> 2, \ + ((imm) & 0x30) >> 4, ((imm) & 0xc0) >> 6, \ + 4 + (((imm) & 0x03) >> 0), \ + 4 + (((imm) & 0x0c) >> 2), \ + 4 + (((imm) & 0x30) >> 4), \ + 4 + (((imm) & 0xc0) >> 6)); }) + +#define _mm256_shufflehi_epi16(a, imm) __extension__ ({ \ + __m256i __a = (a); \ + (__m256i)__builtin_shufflevector((__v16hi)__a, (__v16hi)_mm256_set1_epi16(0), \ + 0, 1, 2, 3, \ + 4 + (((imm) & 0x03) >> 0), \ + 4 + (((imm) & 0x0c) >> 2), \ + 4 + (((imm) & 0x30) >> 4), \ + 4 + (((imm) & 0xc0) >> 6), \ + 8, 9, 10, 11, \ + 12 + (((imm) & 0x03) >> 0), \ + 12 + (((imm) & 0x0c) >> 2), \ + 12 + (((imm) & 0x30) >> 4), \ + 12 + (((imm) & 0xc0) >> 6)); }) + +#define _mm256_shufflelo_epi16(a, imm) __extension__ ({ \ + __m256i __a = (a); \ + (__m256i)__builtin_shufflevector((__v16hi)__a, (__v16hi)_mm256_set1_epi16(0), \ + (imm) & 0x3,((imm) & 0xc) >> 2, \ + ((imm) & 0x30) >> 4, ((imm) & 0xc0) >> 6, \ + 4, 5, 6, 7, \ + 8 + (((imm) & 0x03) >> 0), \ + 8 + (((imm) & 0x0c) >> 2), \ + 8 + (((imm) & 0x30) >> 4), \ + 8 + (((imm) & 0xc0) >> 6), \ + 12, 13, 14, 15); }) + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_sign_epi8(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_psignb256((__v32qi)__a, (__v32qi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_sign_epi16(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_psignw256((__v16hi)__a, (__v16hi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_sign_epi32(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_psignd256((__v8si)__a, (__v8si)__b); +} + +#define _mm256_slli_si256(a, count) __extension__ ({ \ + __m256i __a = (a); \ + (__m256i)__builtin_ia32_pslldqi256(__a, (count)*8); }) + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_slli_epi16(__m256i __a, int __count) +{ + return (__m256i)__builtin_ia32_psllwi256((__v16hi)__a, __count); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_sll_epi16(__m256i __a, __m128i __count) +{ + return (__m256i)__builtin_ia32_psllw256((__v16hi)__a, (__v8hi)__count); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_slli_epi32(__m256i __a, int __count) +{ + return (__m256i)__builtin_ia32_pslldi256((__v8si)__a, __count); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_sll_epi32(__m256i __a, __m128i __count) +{ + return (__m256i)__builtin_ia32_pslld256((__v8si)__a, (__v4si)__count); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_slli_epi64(__m256i __a, int __count) +{ + return __builtin_ia32_psllqi256(__a, __count); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_sll_epi64(__m256i __a, __m128i __count) +{ + return __builtin_ia32_psllq256(__a, __count); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_srai_epi16(__m256i __a, int __count) +{ + return (__m256i)__builtin_ia32_psrawi256((__v16hi)__a, __count); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_sra_epi16(__m256i __a, __m128i __count) +{ + return (__m256i)__builtin_ia32_psraw256((__v16hi)__a, (__v8hi)__count); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_srai_epi32(__m256i __a, int __count) +{ + return (__m256i)__builtin_ia32_psradi256((__v8si)__a, __count); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_sra_epi32(__m256i __a, __m128i __count) +{ + return (__m256i)__builtin_ia32_psrad256((__v8si)__a, (__v4si)__count); +} + +#define _mm256_srli_si256(a, count) __extension__ ({ \ + __m256i __a = (a); \ + (__m256i)__builtin_ia32_psrldqi256(__a, (count)*8); }) + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_srli_epi16(__m256i __a, int __count) +{ + return (__m256i)__builtin_ia32_psrlwi256((__v16hi)__a, __count); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_srl_epi16(__m256i __a, __m128i __count) +{ + return (__m256i)__builtin_ia32_psrlw256((__v16hi)__a, (__v8hi)__count); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_srli_epi32(__m256i __a, int __count) +{ + return (__m256i)__builtin_ia32_psrldi256((__v8si)__a, __count); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_srl_epi32(__m256i __a, __m128i __count) +{ + return (__m256i)__builtin_ia32_psrld256((__v8si)__a, (__v4si)__count); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_srli_epi64(__m256i __a, int __count) +{ + return __builtin_ia32_psrlqi256(__a, __count); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_srl_epi64(__m256i __a, __m128i __count) +{ + return __builtin_ia32_psrlq256(__a, __count); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_sub_epi8(__m256i __a, __m256i __b) +{ + return (__m256i)((__v32qi)__a - (__v32qi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_sub_epi16(__m256i __a, __m256i __b) +{ + return (__m256i)((__v16hi)__a - (__v16hi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_sub_epi32(__m256i __a, __m256i __b) +{ + return (__m256i)((__v8si)__a - (__v8si)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_sub_epi64(__m256i __a, __m256i __b) +{ + return __a - __b; +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_subs_epi8(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_psubsb256((__v32qi)__a, (__v32qi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_subs_epi16(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_psubsw256((__v16hi)__a, (__v16hi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_subs_epu8(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_psubusb256((__v32qi)__a, (__v32qi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_subs_epu16(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_psubusw256((__v16hi)__a, (__v16hi)__b); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_unpackhi_epi8(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_shufflevector((__v32qi)__a, (__v32qi)__b, 8, 32+8, 9, 32+9, 10, 32+10, 11, 32+11, 12, 32+12, 13, 32+13, 14, 32+14, 15, 32+15, 24, 32+24, 25, 32+25, 26, 32+26, 27, 32+27, 28, 32+28, 29, 32+29, 30, 32+30, 31, 32+31); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_unpackhi_epi16(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_shufflevector((__v16hi)__a, (__v16hi)__b, 4, 16+4, 5, 16+5, 6, 16+6, 7, 16+7, 12, 16+12, 13, 16+13, 14, 16+14, 15, 16+15); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_unpackhi_epi32(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_shufflevector((__v8si)__a, (__v8si)__b, 2, 8+2, 3, 8+3, 6, 8+6, 7, 8+7); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_unpackhi_epi64(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_shufflevector(__a, __b, 1, 4+1, 3, 4+3); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_unpacklo_epi8(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_shufflevector((__v32qi)__a, (__v32qi)__b, 0, 32+0, 1, 32+1, 2, 32+2, 3, 32+3, 4, 32+4, 5, 32+5, 6, 32+6, 7, 32+7, 16, 32+16, 17, 32+17, 18, 32+18, 19, 32+19, 20, 32+20, 21, 32+21, 22, 32+22, 23, 32+23); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_unpacklo_epi16(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_shufflevector((__v16hi)__a, (__v16hi)__b, 0, 16+0, 1, 16+1, 2, 16+2, 3, 16+3, 8, 16+8, 9, 16+9, 10, 16+10, 11, 16+11); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_unpacklo_epi32(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_shufflevector((__v8si)__a, (__v8si)__b, 0, 8+0, 1, 8+1, 4, 8+4, 5, 8+5); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_unpacklo_epi64(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_shufflevector(__a, __b, 0, 4+0, 2, 4+2); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_xor_si256(__m256i __a, __m256i __b) +{ + return __a ^ __b; +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_stream_load_si256(__m256i *__V) +{ + return (__m256i)__builtin_ia32_movntdqa256((__v4di *)__V); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_broadcastss_ps(__m128 __X) +{ + return (__m128)__builtin_ia32_vbroadcastss_ps((__v4sf)__X); +} + +static __inline__ __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_broadcastss_ps(__m128 __X) +{ + return (__m256)__builtin_ia32_vbroadcastss_ps256((__v4sf)__X); +} + +static __inline__ __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_broadcastsd_pd(__m128d __X) +{ + return (__m256d)__builtin_ia32_vbroadcastsd_pd256((__v2df)__X); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm_broadcastsi128_si256(__m128i const *__a) +{ + return (__m256i)__builtin_ia32_vbroadcastsi256(__a); +} + +#define _mm_blend_epi32(V1, V2, M) __extension__ ({ \ + __m128i __V1 = (V1); \ + __m128i __V2 = (V2); \ + (__m128i)__builtin_ia32_pblendd128((__v4si)__V1, (__v4si)__V2, (M)); }) + +#define _mm256_blend_epi32(V1, V2, M) __extension__ ({ \ + __m256i __V1 = (V1); \ + __m256i __V2 = (V2); \ + (__m256i)__builtin_ia32_pblendd256((__v8si)__V1, (__v8si)__V2, (M)); }) + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_broadcastb_epi8(__m128i __X) +{ + return (__m256i)__builtin_ia32_pbroadcastb256((__v16qi)__X); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_broadcastw_epi16(__m128i __X) +{ + return (__m256i)__builtin_ia32_pbroadcastw256((__v8hi)__X); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_broadcastd_epi32(__m128i __X) +{ + return (__m256i)__builtin_ia32_pbroadcastd256((__v4si)__X); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_broadcastq_epi64(__m128i __X) +{ + return (__m256i)__builtin_ia32_pbroadcastq256(__X); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_broadcastb_epi8(__m128i __X) +{ + return (__m128i)__builtin_ia32_pbroadcastb128((__v16qi)__X); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_broadcastw_epi16(__m128i __X) +{ + return (__m128i)__builtin_ia32_pbroadcastw128((__v8hi)__X); +} + + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_broadcastd_epi32(__m128i __X) +{ + return (__m128i)__builtin_ia32_pbroadcastd128((__v4si)__X); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_broadcastq_epi64(__m128i __X) +{ + return (__m128i)__builtin_ia32_pbroadcastq128(__X); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_permutevar8x32_epi32(__m256i __a, __m256i __b) +{ + return (__m256i)__builtin_ia32_permvarsi256((__v8si)__a, (__v8si)__b); +} + +#define _mm256_permute4x64_pd(V, M) __extension__ ({ \ + __m256d __V = (V); \ + (__m256d)__builtin_shufflevector((__v4df)__V, (__v4df) _mm256_setzero_pd(), \ + (M) & 0x3, ((M) & 0xc) >> 2, \ + ((M) & 0x30) >> 4, ((M) & 0xc0) >> 6); }) + +static __inline__ __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_permutevar8x32_ps(__m256 __a, __m256 __b) +{ + return (__m256)__builtin_ia32_permvarsf256((__v8sf)__a, (__v8sf)__b); +} + +#define _mm256_permute4x64_epi64(V, M) __extension__ ({ \ + __m256i __V = (V); \ + (__m256i)__builtin_shufflevector((__v4di)__V, (__v4di) _mm256_setzero_si256(), \ + (M) & 0x3, ((M) & 0xc) >> 2, \ + ((M) & 0x30) >> 4, ((M) & 0xc0) >> 6); }) + +#define _mm256_permute2x128_si256(V1, V2, M) __extension__ ({ \ + __m256i __V1 = (V1); \ + __m256i __V2 = (V2); \ + (__m256i)__builtin_ia32_permti256(__V1, __V2, (M)); }) + +#define _mm256_extracti128_si256(A, O) __extension__ ({ \ + __m256i __A = (A); \ + (__m128i)__builtin_ia32_extract128i256(__A, (O)); }) + +#define _mm256_inserti128_si256(V1, V2, O) __extension__ ({ \ + __m256i __V1 = (V1); \ + __m128i __V2 = (V2); \ + (__m256i)__builtin_ia32_insert128i256(__V1, __V2, (O)); }) + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_maskload_epi32(int const *__X, __m256i __M) +{ + return (__m256i)__builtin_ia32_maskloadd256((const __v8si *)__X, (__v8si)__M); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_maskload_epi64(long long const *__X, __m256i __M) +{ + return (__m256i)__builtin_ia32_maskloadq256((const __v4di *)__X, __M); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_maskload_epi32(int const *__X, __m128i __M) +{ + return (__m128i)__builtin_ia32_maskloadd((const __v4si *)__X, (__v4si)__M); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_maskload_epi64(long long const *__X, __m128i __M) +{ + return (__m128i)__builtin_ia32_maskloadq((const __v2di *)__X, (__v2di)__M); +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm256_maskstore_epi32(int *__X, __m256i __M, __m256i __Y) +{ + __builtin_ia32_maskstored256((__v8si *)__X, (__v8si)__M, (__v8si)__Y); +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm256_maskstore_epi64(long long *__X, __m256i __M, __m256i __Y) +{ + __builtin_ia32_maskstoreq256((__v4di *)__X, __M, __Y); +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_maskstore_epi32(int *__X, __m128i __M, __m128i __Y) +{ + __builtin_ia32_maskstored((__v4si *)__X, (__v4si)__M, (__v4si)__Y); +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_maskstore_epi64(long long *__X, __m128i __M, __m128i __Y) +{ + __builtin_ia32_maskstoreq(( __v2di *)__X, __M, __Y); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_sllv_epi32(__m256i __X, __m256i __Y) +{ + return (__m256i)__builtin_ia32_psllv8si((__v8si)__X, (__v8si)__Y); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_sllv_epi32(__m128i __X, __m128i __Y) +{ + return (__m128i)__builtin_ia32_psllv4si((__v4si)__X, (__v4si)__Y); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_sllv_epi64(__m256i __X, __m256i __Y) +{ + return (__m256i)__builtin_ia32_psllv4di(__X, __Y); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_sllv_epi64(__m128i __X, __m128i __Y) +{ + return (__m128i)__builtin_ia32_psllv2di(__X, __Y); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_srav_epi32(__m256i __X, __m256i __Y) +{ + return (__m256i)__builtin_ia32_psrav8si((__v8si)__X, (__v8si)__Y); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_srav_epi32(__m128i __X, __m128i __Y) +{ + return (__m128i)__builtin_ia32_psrav4si((__v4si)__X, (__v4si)__Y); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_srlv_epi32(__m256i __X, __m256i __Y) +{ + return (__m256i)__builtin_ia32_psrlv8si((__v8si)__X, (__v8si)__Y); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_srlv_epi32(__m128i __X, __m128i __Y) +{ + return (__m128i)__builtin_ia32_psrlv4si((__v4si)__X, (__v4si)__Y); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_srlv_epi64(__m256i __X, __m256i __Y) +{ + return (__m256i)__builtin_ia32_psrlv4di(__X, __Y); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_srlv_epi64(__m128i __X, __m128i __Y) +{ + return (__m128i)__builtin_ia32_psrlv2di(__X, __Y); +} + +#define _mm_mask_i32gather_pd(a, m, i, mask, s) __extension__ ({ \ + __m128d __a = (a); \ + double const *__m = (m); \ + __m128i __i = (i); \ + __m128d __mask = (mask); \ + (__m128d)__builtin_ia32_gatherd_pd((__v2df)__a, (const __v2df *)__m, \ + (__v4si)__i, (__v2df)__mask, (s)); }) + +#define _mm256_mask_i32gather_pd(a, m, i, mask, s) __extension__ ({ \ + __m256d __a = (a); \ + double const *__m = (m); \ + __m128i __i = (i); \ + __m256d __mask = (mask); \ + (__m256d)__builtin_ia32_gatherd_pd256((__v4df)__a, (const __v4df *)__m, \ + (__v4si)__i, (__v4df)__mask, (s)); }) + +#define _mm_mask_i64gather_pd(a, m, i, mask, s) __extension__ ({ \ + __m128d __a = (a); \ + double const *__m = (m); \ + __m128i __i = (i); \ + __m128d __mask = (mask); \ + (__m128d)__builtin_ia32_gatherq_pd((__v2df)__a, (const __v2df *)__m, \ + (__v2di)__i, (__v2df)__mask, (s)); }) + +#define _mm256_mask_i64gather_pd(a, m, i, mask, s) __extension__ ({ \ + __m256d __a = (a); \ + double const *__m = (m); \ + __m256i __i = (i); \ + __m256d __mask = (mask); \ + (__m256d)__builtin_ia32_gatherq_pd256((__v4df)__a, (const __v4df *)__m, \ + (__v4di)__i, (__v4df)__mask, (s)); }) + +#define _mm_mask_i32gather_ps(a, m, i, mask, s) __extension__ ({ \ + __m128 __a = (a); \ + float const *__m = (m); \ + __m128i __i = (i); \ + __m128 __mask = (mask); \ + (__m128)__builtin_ia32_gatherd_ps((__v4sf)__a, (const __v4sf *)__m, \ + (__v4si)__i, (__v4sf)__mask, (s)); }) + +#define _mm256_mask_i32gather_ps(a, m, i, mask, s) __extension__ ({ \ + __m256 __a = (a); \ + float const *__m = (m); \ + __m256i __i = (i); \ + __m256 __mask = (mask); \ + (__m256)__builtin_ia32_gatherd_ps256((__v8sf)__a, (const __v8sf *)__m, \ + (__v8si)__i, (__v8sf)__mask, (s)); }) + +#define _mm_mask_i64gather_ps(a, m, i, mask, s) __extension__ ({ \ + __m128 __a = (a); \ + float const *__m = (m); \ + __m128i __i = (i); \ + __m128 __mask = (mask); \ + (__m128)__builtin_ia32_gatherq_ps((__v4sf)__a, (const __v4sf *)__m, \ + (__v2di)__i, (__v4sf)__mask, (s)); }) + +#define _mm256_mask_i64gather_ps(a, m, i, mask, s) __extension__ ({ \ + __m128 __a = (a); \ + float const *__m = (m); \ + __m256i __i = (i); \ + __m128 __mask = (mask); \ + (__m128)__builtin_ia32_gatherq_ps256((__v4sf)__a, (const __v4sf *)__m, \ + (__v4di)__i, (__v4sf)__mask, (s)); }) + +#define _mm_mask_i32gather_epi32(a, m, i, mask, s) __extension__ ({ \ + __m128i __a = (a); \ + int const *__m = (m); \ + __m128i __i = (i); \ + __m128i __mask = (mask); \ + (__m128i)__builtin_ia32_gatherd_d((__v4si)__a, (const __v4si *)__m, \ + (__v4si)__i, (__v4si)__mask, (s)); }) + +#define _mm256_mask_i32gather_epi32(a, m, i, mask, s) __extension__ ({ \ + __m256i __a = (a); \ + int const *__m = (m); \ + __m256i __i = (i); \ + __m256i __mask = (mask); \ + (__m256i)__builtin_ia32_gatherd_d256((__v8si)__a, (const __v8si *)__m, \ + (__v8si)__i, (__v8si)__mask, (s)); }) + +#define _mm_mask_i64gather_epi32(a, m, i, mask, s) __extension__ ({ \ + __m128i __a = (a); \ + int const *__m = (m); \ + __m128i __i = (i); \ + __m128i __mask = (mask); \ + (__m128i)__builtin_ia32_gatherq_d((__v4si)__a, (const __v4si *)__m, \ + (__v2di)__i, (__v4si)__mask, (s)); }) + +#define _mm256_mask_i64gather_epi32(a, m, i, mask, s) __extension__ ({ \ + __m128i __a = (a); \ + int const *__m = (m); \ + __m256i __i = (i); \ + __m128i __mask = (mask); \ + (__m128i)__builtin_ia32_gatherq_d256((__v4si)__a, (const __v4si *)__m, \ + (__v4di)__i, (__v4si)__mask, (s)); }) + +#define _mm_mask_i32gather_epi64(a, m, i, mask, s) __extension__ ({ \ + __m128i __a = (a); \ + int const *__m = (m); \ + __m128i __i = (i); \ + __m128i __mask = (mask); \ + (__m128i)__builtin_ia32_gatherd_q((__v2di)__a, (const __v2di *)__m, \ + (__v4si)__i, (__v2di)__mask, (s)); }) + +#define _mm256_mask_i32gather_epi64(a, m, i, mask, s) __extension__ ({ \ + __m256i __a = (a); \ + int const *__m = (m); \ + __m128i __i = (i); \ + __m256i __mask = (mask); \ + (__m256i)__builtin_ia32_gatherd_q256((__v4di)__a, (const __v4di *)__m, \ + (__v4si)__i, (__v4di)__mask, (s)); }) + +#define _mm_mask_i64gather_epi64(a, m, i, mask, s) __extension__ ({ \ + __m128i __a = (a); \ + int const *__m = (m); \ + __m128i __i = (i); \ + __m128i __mask = (mask); \ + (__m128i)__builtin_ia32_gatherq_q((__v2di)__a, (const __v2di *)__m, \ + (__v2di)__i, (__v2di)__mask, (s)); }) + +#define _mm256_mask_i64gather_epi64(a, m, i, mask, s) __extension__ ({ \ + __m256i __a = (a); \ + int const *__m = (m); \ + __m256i __i = (i); \ + __m256i __mask = (mask); \ + (__m256i)__builtin_ia32_gatherq_q256((__v4di)__a, (const __v4di *)__m, \ + (__v4di)__i, (__v4di)__mask, (s)); }) + +#define _mm_i32gather_pd(m, i, s) __extension__ ({ \ + double const *__m = (m); \ + __m128i __i = (i); \ + (__m128d)__builtin_ia32_gatherd_pd((__v2df)_mm_setzero_pd(), \ + (const __v2df *)__m, (__v4si)__i, \ + (__v2df)_mm_set1_pd((double)(long long int)-1), (s)); }) + +#define _mm256_i32gather_pd(m, i, s) __extension__ ({ \ + double const *__m = (m); \ + __m128i __i = (i); \ + (__m256d)__builtin_ia32_gatherd_pd256((__v4df)_mm256_setzero_pd(), \ + (const __v4df *)__m, (__v4si)__i, \ + (__v4df)_mm256_set1_pd((double)(long long int)-1), (s)); }) + +#define _mm_i64gather_pd(m, i, s) __extension__ ({ \ + double const *__m = (m); \ + __m128i __i = (i); \ + (__m128d)__builtin_ia32_gatherq_pd((__v2df)_mm_setzero_pd(), \ + (const __v2df *)__m, (__v2di)__i, \ + (__v2df)_mm_set1_pd((double)(long long int)-1), (s)); }) + +#define _mm256_i64gather_pd(m, i, s) __extension__ ({ \ + double const *__m = (m); \ + __m256i __i = (i); \ + (__m256d)__builtin_ia32_gatherq_pd256((__v4df)_mm256_setzero_pd(), \ + (const __v4df *)__m, (__v4di)__i, \ + (__v4df)_mm256_set1_pd((double)(long long int)-1), (s)); }) + +#define _mm_i32gather_ps(m, i, s) __extension__ ({ \ + float const *__m = (m); \ + __m128i __i = (i); \ + (__m128)__builtin_ia32_gatherd_ps((__v4sf)_mm_setzero_ps(), \ + (const __v4sf *)__m, (__v4si)__i, \ + (__v4sf)_mm_set1_ps((float)(int)-1), (s)); }) + +#define _mm256_i32gather_ps(m, i, s) __extension__ ({ \ + float const *__m = (m); \ + __m256i __i = (i); \ + (__m256)__builtin_ia32_gatherd_ps256((__v8sf)_mm256_setzero_ps(), \ + (const __v8sf *)__m, (__v8si)__i, \ + (__v8sf)_mm256_set1_ps((float)(int)-1), (s)); }) + +#define _mm_i64gather_ps(m, i, s) __extension__ ({ \ + float const *__m = (m); \ + __m128i __i = (i); \ + (__m128)__builtin_ia32_gatherq_ps((__v4sf)_mm_setzero_ps(), \ + (const __v4sf *)__m, (__v2di)__i, \ + (__v4sf)_mm_set1_ps((float)(int)-1), (s)); }) + +#define _mm256_i64gather_ps(m, i, s) __extension__ ({ \ + float const *__m = (m); \ + __m256i __i = (i); \ + (__m128)__builtin_ia32_gatherq_ps256((__v4sf)_mm_setzero_ps(), \ + (const __v4sf *)__m, (__v4di)__i, \ + (__v4sf)_mm_set1_ps((float)(int)-1), (s)); }) + +#define _mm_i32gather_epi32(m, i, s) __extension__ ({ \ + int const *__m = (m); \ + __m128i __i = (i); \ + (__m128i)__builtin_ia32_gatherd_d((__v4si)_mm_setzero_si128(), \ + (const __v4si *)__m, (__v4si)__i, \ + (__v4si)_mm_set1_epi32(-1), (s)); }) + +#define _mm256_i32gather_epi32(m, i, s) __extension__ ({ \ + int const *__m = (m); \ + __m256i __i = (i); \ + (__m256i)__builtin_ia32_gatherd_d256((__v8si)_mm256_setzero_si256(), \ + (const __v8si *)__m, (__v8si)__i, \ + (__v8si)_mm256_set1_epi32(-1), (s)); }) + +#define _mm_i64gather_epi32(m, i, s) __extension__ ({ \ + int const *__m = (m); \ + __m128i __i = (i); \ + (__m128i)__builtin_ia32_gatherq_d((__v4si)_mm_setzero_si128(), \ + (const __v4si *)__m, (__v2di)__i, \ + (__v4si)_mm_set1_epi32(-1), (s)); }) + +#define _mm256_i64gather_epi32(m, i, s) __extension__ ({ \ + int const *__m = (m); \ + __m256i __i = (i); \ + (__m128i)__builtin_ia32_gatherq_d256((__v4si)_mm_setzero_si128(), \ + (const __v4si *)__m, (__v4di)__i, \ + (__v4si)_mm_set1_epi32(-1), (s)); }) + +#define _mm_i32gather_epi64(m, i, s) __extension__ ({ \ + int const *__m = (m); \ + __m128i __i = (i); \ + (__m128i)__builtin_ia32_gatherd_q((__v2di)_mm_setzero_si128(), \ + (const __v2di *)__m, (__v4si)__i, \ + (__v2di)_mm_set1_epi64x(-1), (s)); }) + +#define _mm256_i32gather_epi64(m, i, s) __extension__ ({ \ + int const *__m = (m); \ + __m128i __i = (i); \ + (__m256i)__builtin_ia32_gatherd_q256((__v4di)_mm256_setzero_si256(), \ + (const __v4di *)__m, (__v4si)__i, \ + (__v4di)_mm256_set1_epi64x(-1), (s)); }) + +#define _mm_i64gather_epi64(m, i, s) __extension__ ({ \ + int const *__m = (m); \ + __m128i __i = (i); \ + (__m128i)__builtin_ia32_gatherq_q((__v2di)_mm_setzero_si128(), \ + (const __v2di *)__m, (__v2di)__i, \ + (__v2di)_mm_set1_epi64x(-1), (s)); }) + +#define _mm256_i64gather_epi64(m, i, s) __extension__ ({ \ + int const *__m = (m); \ + __m256i __i = (i); \ + (__m256i)__builtin_ia32_gatherq_q256((__v4di)_mm256_setzero_si256(), \ + (const __v4di *)__m, (__v4di)__i, \ + (__v4di)_mm256_set1_epi64x(-1), (s)); }) + +#endif /* __AVX2INTRIN_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/avxintrin.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/avxintrin.h new file mode 100644 index 0000000..50454f2 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/avxintrin.h @@ -0,0 +1,1224 @@ +/*===---- avxintrin.h - AVX intrinsics -------------------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef __IMMINTRIN_H +#error "Never use directly; include instead." +#endif + +#ifndef __AVXINTRIN_H +#define __AVXINTRIN_H + +typedef double __v4df __attribute__ ((__vector_size__ (32))); +typedef float __v8sf __attribute__ ((__vector_size__ (32))); +typedef long long __v4di __attribute__ ((__vector_size__ (32))); +typedef int __v8si __attribute__ ((__vector_size__ (32))); +typedef short __v16hi __attribute__ ((__vector_size__ (32))); +typedef char __v32qi __attribute__ ((__vector_size__ (32))); + +typedef float __m256 __attribute__ ((__vector_size__ (32))); +typedef double __m256d __attribute__((__vector_size__(32))); +typedef long long __m256i __attribute__((__vector_size__(32))); + +/* Arithmetic */ +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_add_pd(__m256d __a, __m256d __b) +{ + return __a+__b; +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_add_ps(__m256 __a, __m256 __b) +{ + return __a+__b; +} + +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_sub_pd(__m256d __a, __m256d __b) +{ + return __a-__b; +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_sub_ps(__m256 __a, __m256 __b) +{ + return __a-__b; +} + +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_addsub_pd(__m256d __a, __m256d __b) +{ + return (__m256d)__builtin_ia32_addsubpd256((__v4df)__a, (__v4df)__b); +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_addsub_ps(__m256 __a, __m256 __b) +{ + return (__m256)__builtin_ia32_addsubps256((__v8sf)__a, (__v8sf)__b); +} + +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_div_pd(__m256d __a, __m256d __b) +{ + return __a / __b; +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_div_ps(__m256 __a, __m256 __b) +{ + return __a / __b; +} + +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_max_pd(__m256d __a, __m256d __b) +{ + return (__m256d)__builtin_ia32_maxpd256((__v4df)__a, (__v4df)__b); +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_max_ps(__m256 __a, __m256 __b) +{ + return (__m256)__builtin_ia32_maxps256((__v8sf)__a, (__v8sf)__b); +} + +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_min_pd(__m256d __a, __m256d __b) +{ + return (__m256d)__builtin_ia32_minpd256((__v4df)__a, (__v4df)__b); +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_min_ps(__m256 __a, __m256 __b) +{ + return (__m256)__builtin_ia32_minps256((__v8sf)__a, (__v8sf)__b); +} + +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_mul_pd(__m256d __a, __m256d __b) +{ + return __a * __b; +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_mul_ps(__m256 __a, __m256 __b) +{ + return __a * __b; +} + +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_sqrt_pd(__m256d __a) +{ + return (__m256d)__builtin_ia32_sqrtpd256((__v4df)__a); +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_sqrt_ps(__m256 __a) +{ + return (__m256)__builtin_ia32_sqrtps256((__v8sf)__a); +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_rsqrt_ps(__m256 __a) +{ + return (__m256)__builtin_ia32_rsqrtps256((__v8sf)__a); +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_rcp_ps(__m256 __a) +{ + return (__m256)__builtin_ia32_rcpps256((__v8sf)__a); +} + +#define _mm256_round_pd(V, M) __extension__ ({ \ + __m256d __V = (V); \ + (__m256d)__builtin_ia32_roundpd256((__v4df)__V, (M)); }) + +#define _mm256_round_ps(V, M) __extension__ ({ \ + __m256 __V = (V); \ + (__m256)__builtin_ia32_roundps256((__v8sf)__V, (M)); }) + +#define _mm256_ceil_pd(V) _mm256_round_pd((V), _MM_FROUND_CEIL) +#define _mm256_floor_pd(V) _mm256_round_pd((V), _MM_FROUND_FLOOR) +#define _mm256_ceil_ps(V) _mm256_round_ps((V), _MM_FROUND_CEIL) +#define _mm256_floor_ps(V) _mm256_round_ps((V), _MM_FROUND_FLOOR) + +/* Logical */ +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_and_pd(__m256d __a, __m256d __b) +{ + return (__m256d)((__v4di)__a & (__v4di)__b); +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_and_ps(__m256 __a, __m256 __b) +{ + return (__m256)((__v8si)__a & (__v8si)__b); +} + +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_andnot_pd(__m256d __a, __m256d __b) +{ + return (__m256d)(~(__v4di)__a & (__v4di)__b); +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_andnot_ps(__m256 __a, __m256 __b) +{ + return (__m256)(~(__v8si)__a & (__v8si)__b); +} + +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_or_pd(__m256d __a, __m256d __b) +{ + return (__m256d)((__v4di)__a | (__v4di)__b); +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_or_ps(__m256 __a, __m256 __b) +{ + return (__m256)((__v8si)__a | (__v8si)__b); +} + +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_xor_pd(__m256d __a, __m256d __b) +{ + return (__m256d)((__v4di)__a ^ (__v4di)__b); +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_xor_ps(__m256 __a, __m256 __b) +{ + return (__m256)((__v8si)__a ^ (__v8si)__b); +} + +/* Horizontal arithmetic */ +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_hadd_pd(__m256d __a, __m256d __b) +{ + return (__m256d)__builtin_ia32_haddpd256((__v4df)__a, (__v4df)__b); +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_hadd_ps(__m256 __a, __m256 __b) +{ + return (__m256)__builtin_ia32_haddps256((__v8sf)__a, (__v8sf)__b); +} + +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_hsub_pd(__m256d __a, __m256d __b) +{ + return (__m256d)__builtin_ia32_hsubpd256((__v4df)__a, (__v4df)__b); +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_hsub_ps(__m256 __a, __m256 __b) +{ + return (__m256)__builtin_ia32_hsubps256((__v8sf)__a, (__v8sf)__b); +} + +/* Vector permutations */ +static __inline __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_permutevar_pd(__m128d __a, __m128i __c) +{ + return (__m128d)__builtin_ia32_vpermilvarpd((__v2df)__a, (__v2di)__c); +} + +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_permutevar_pd(__m256d __a, __m256i __c) +{ + return (__m256d)__builtin_ia32_vpermilvarpd256((__v4df)__a, (__v4di)__c); +} + +static __inline __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_permutevar_ps(__m128 __a, __m128i __c) +{ + return (__m128)__builtin_ia32_vpermilvarps((__v4sf)__a, (__v4si)__c); +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_permutevar_ps(__m256 __a, __m256i __c) +{ + return (__m256)__builtin_ia32_vpermilvarps256((__v8sf)__a, + (__v8si)__c); +} + +#define _mm_permute_pd(A, C) __extension__ ({ \ + __m128d __A = (A); \ + (__m128d)__builtin_shufflevector((__v2df)__A, (__v2df) _mm_setzero_pd(), \ + (C) & 0x1, ((C) & 0x2) >> 1); }) + +#define _mm256_permute_pd(A, C) __extension__ ({ \ + __m256d __A = (A); \ + (__m256d)__builtin_shufflevector((__v4df)__A, (__v4df) _mm256_setzero_pd(), \ + (C) & 0x1, ((C) & 0x2) >> 1, \ + 2 + (((C) & 0x4) >> 2), \ + 2 + (((C) & 0x8) >> 3)); }) + +#define _mm_permute_ps(A, C) __extension__ ({ \ + __m128 __A = (A); \ + (__m128)__builtin_shufflevector((__v4sf)__A, (__v4sf) _mm_setzero_ps(), \ + (C) & 0x3, ((C) & 0xc) >> 2, \ + ((C) & 0x30) >> 4, ((C) & 0xc0) >> 6); }) + +#define _mm256_permute_ps(A, C) __extension__ ({ \ + __m256 __A = (A); \ + (__m256)__builtin_shufflevector((__v8sf)__A, (__v8sf) _mm256_setzero_ps(), \ + (C) & 0x3, ((C) & 0xc) >> 2, \ + ((C) & 0x30) >> 4, ((C) & 0xc0) >> 6, \ + 4 + (((C) & 0x03) >> 0), \ + 4 + (((C) & 0x0c) >> 2), \ + 4 + (((C) & 0x30) >> 4), \ + 4 + (((C) & 0xc0) >> 6)); }) + +#define _mm256_permute2f128_pd(V1, V2, M) __extension__ ({ \ + __m256d __V1 = (V1); \ + __m256d __V2 = (V2); \ + (__m256d)__builtin_ia32_vperm2f128_pd256((__v4df)__V1, (__v4df)__V2, (M)); }) + +#define _mm256_permute2f128_ps(V1, V2, M) __extension__ ({ \ + __m256 __V1 = (V1); \ + __m256 __V2 = (V2); \ + (__m256)__builtin_ia32_vperm2f128_ps256((__v8sf)__V1, (__v8sf)__V2, (M)); }) + +#define _mm256_permute2f128_si256(V1, V2, M) __extension__ ({ \ + __m256i __V1 = (V1); \ + __m256i __V2 = (V2); \ + (__m256i)__builtin_ia32_vperm2f128_si256((__v8si)__V1, (__v8si)__V2, (M)); }) + +/* Vector Blend */ +#define _mm256_blend_pd(V1, V2, M) __extension__ ({ \ + __m256d __V1 = (V1); \ + __m256d __V2 = (V2); \ + (__m256d)__builtin_ia32_blendpd256((__v4df)__V1, (__v4df)__V2, (M)); }) + +#define _mm256_blend_ps(V1, V2, M) __extension__ ({ \ + __m256 __V1 = (V1); \ + __m256 __V2 = (V2); \ + (__m256)__builtin_ia32_blendps256((__v8sf)__V1, (__v8sf)__V2, (M)); }) + +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_blendv_pd(__m256d __a, __m256d __b, __m256d __c) +{ + return (__m256d)__builtin_ia32_blendvpd256( + (__v4df)__a, (__v4df)__b, (__v4df)__c); +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c) +{ + return (__m256)__builtin_ia32_blendvps256( + (__v8sf)__a, (__v8sf)__b, (__v8sf)__c); +} + +/* Vector Dot Product */ +#define _mm256_dp_ps(V1, V2, M) __extension__ ({ \ + __m256 __V1 = (V1); \ + __m256 __V2 = (V2); \ + (__m256)__builtin_ia32_dpps256((__v8sf)__V1, (__v8sf)__V2, (M)); }) + +/* Vector shuffle */ +#define _mm256_shuffle_ps(a, b, mask) __extension__ ({ \ + __m256 __a = (a); \ + __m256 __b = (b); \ + (__m256)__builtin_shufflevector((__v8sf)__a, (__v8sf)__b, \ + (mask) & 0x3, ((mask) & 0xc) >> 2, \ + (((mask) & 0x30) >> 4) + 8, (((mask) & 0xc0) >> 6) + 8, \ + ((mask) & 0x3) + 4, (((mask) & 0xc) >> 2) + 4, \ + (((mask) & 0x30) >> 4) + 12, (((mask) & 0xc0) >> 6) + 12); }) + +#define _mm256_shuffle_pd(a, b, mask) __extension__ ({ \ + __m256d __a = (a); \ + __m256d __b = (b); \ + (__m256d)__builtin_shufflevector((__v4df)__a, (__v4df)__b, \ + (mask) & 0x1, \ + (((mask) & 0x2) >> 1) + 4, \ + (((mask) & 0x4) >> 2) + 2, \ + (((mask) & 0x8) >> 3) + 6); }) + +/* Compare */ +#define _CMP_EQ_OQ 0x00 /* Equal (ordered, non-signaling) */ +#define _CMP_LT_OS 0x01 /* Less-than (ordered, signaling) */ +#define _CMP_LE_OS 0x02 /* Less-than-or-equal (ordered, signaling) */ +#define _CMP_UNORD_Q 0x03 /* Unordered (non-signaling) */ +#define _CMP_NEQ_UQ 0x04 /* Not-equal (unordered, non-signaling) */ +#define _CMP_NLT_US 0x05 /* Not-less-than (unordered, signaling) */ +#define _CMP_NLE_US 0x06 /* Not-less-than-or-equal (unordered, signaling) */ +#define _CMP_ORD_Q 0x07 /* Ordered (nonsignaling) */ +#define _CMP_EQ_UQ 0x08 /* Equal (unordered, non-signaling) */ +#define _CMP_NGE_US 0x09 /* Not-greater-than-or-equal (unord, signaling) */ +#define _CMP_NGT_US 0x0a /* Not-greater-than (unordered, signaling) */ +#define _CMP_FALSE_OQ 0x0b /* False (ordered, non-signaling) */ +#define _CMP_NEQ_OQ 0x0c /* Not-equal (ordered, non-signaling) */ +#define _CMP_GE_OS 0x0d /* Greater-than-or-equal (ordered, signaling) */ +#define _CMP_GT_OS 0x0e /* Greater-than (ordered, signaling) */ +#define _CMP_TRUE_UQ 0x0f /* True (unordered, non-signaling) */ +#define _CMP_EQ_OS 0x10 /* Equal (ordered, signaling) */ +#define _CMP_LT_OQ 0x11 /* Less-than (ordered, non-signaling) */ +#define _CMP_LE_OQ 0x12 /* Less-than-or-equal (ordered, non-signaling) */ +#define _CMP_UNORD_S 0x13 /* Unordered (signaling) */ +#define _CMP_NEQ_US 0x14 /* Not-equal (unordered, signaling) */ +#define _CMP_NLT_UQ 0x15 /* Not-less-than (unordered, non-signaling) */ +#define _CMP_NLE_UQ 0x16 /* Not-less-than-or-equal (unord, non-signaling) */ +#define _CMP_ORD_S 0x17 /* Ordered (signaling) */ +#define _CMP_EQ_US 0x18 /* Equal (unordered, signaling) */ +#define _CMP_NGE_UQ 0x19 /* Not-greater-than-or-equal (unord, non-sign) */ +#define _CMP_NGT_UQ 0x1a /* Not-greater-than (unordered, non-signaling) */ +#define _CMP_FALSE_OS 0x1b /* False (ordered, signaling) */ +#define _CMP_NEQ_OS 0x1c /* Not-equal (ordered, signaling) */ +#define _CMP_GE_OQ 0x1d /* Greater-than-or-equal (ordered, non-signaling) */ +#define _CMP_GT_OQ 0x1e /* Greater-than (ordered, non-signaling) */ +#define _CMP_TRUE_US 0x1f /* True (unordered, signaling) */ + +#define _mm_cmp_pd(a, b, c) __extension__ ({ \ + __m128d __a = (a); \ + __m128d __b = (b); \ + (__m128d)__builtin_ia32_cmppd((__v2df)__a, (__v2df)__b, (c)); }) + +#define _mm_cmp_ps(a, b, c) __extension__ ({ \ + __m128 __a = (a); \ + __m128 __b = (b); \ + (__m128)__builtin_ia32_cmpps((__v4sf)__a, (__v4sf)__b, (c)); }) + +#define _mm256_cmp_pd(a, b, c) __extension__ ({ \ + __m256d __a = (a); \ + __m256d __b = (b); \ + (__m256d)__builtin_ia32_cmppd256((__v4df)__a, (__v4df)__b, (c)); }) + +#define _mm256_cmp_ps(a, b, c) __extension__ ({ \ + __m256 __a = (a); \ + __m256 __b = (b); \ + (__m256)__builtin_ia32_cmpps256((__v8sf)__a, (__v8sf)__b, (c)); }) + +#define _mm_cmp_sd(a, b, c) __extension__ ({ \ + __m128d __a = (a); \ + __m128d __b = (b); \ + (__m128d)__builtin_ia32_cmpsd((__v2df)__a, (__v2df)__b, (c)); }) + +#define _mm_cmp_ss(a, b, c) __extension__ ({ \ + __m128 __a = (a); \ + __m128 __b = (b); \ + (__m128)__builtin_ia32_cmpss((__v4sf)__a, (__v4sf)__b, (c)); }) + +/* Vector extract */ +#define _mm256_extractf128_pd(A, O) __extension__ ({ \ + __m256d __A = (A); \ + (__m128d)__builtin_ia32_vextractf128_pd256((__v4df)__A, (O)); }) + +#define _mm256_extractf128_ps(A, O) __extension__ ({ \ + __m256 __A = (A); \ + (__m128)__builtin_ia32_vextractf128_ps256((__v8sf)__A, (O)); }) + +#define _mm256_extractf128_si256(A, O) __extension__ ({ \ + __m256i __A = (A); \ + (__m128i)__builtin_ia32_vextractf128_si256((__v8si)__A, (O)); }) + +static __inline int __attribute__((__always_inline__, __nodebug__)) +_mm256_extract_epi32(__m256i __a, int const __imm) +{ + __v8si __b = (__v8si)__a; + return __b[__imm]; +} + +static __inline int __attribute__((__always_inline__, __nodebug__)) +_mm256_extract_epi16(__m256i __a, int const __imm) +{ + __v16hi __b = (__v16hi)__a; + return __b[__imm]; +} + +static __inline int __attribute__((__always_inline__, __nodebug__)) +_mm256_extract_epi8(__m256i __a, int const __imm) +{ + __v32qi __b = (__v32qi)__a; + return __b[__imm]; +} + +#ifdef __x86_64__ +static __inline long long __attribute__((__always_inline__, __nodebug__)) +_mm256_extract_epi64(__m256i __a, const int __imm) +{ + __v4di __b = (__v4di)__a; + return __b[__imm]; +} +#endif + +/* Vector insert */ +#define _mm256_insertf128_pd(V1, V2, O) __extension__ ({ \ + __m256d __V1 = (V1); \ + __m128d __V2 = (V2); \ + (__m256d)__builtin_ia32_vinsertf128_pd256((__v4df)__V1, (__v2df)__V2, (O)); }) + +#define _mm256_insertf128_ps(V1, V2, O) __extension__ ({ \ + __m256 __V1 = (V1); \ + __m128 __V2 = (V2); \ + (__m256)__builtin_ia32_vinsertf128_ps256((__v8sf)__V1, (__v4sf)__V2, (O)); }) + +#define _mm256_insertf128_si256(V1, V2, O) __extension__ ({ \ + __m256i __V1 = (V1); \ + __m128i __V2 = (V2); \ + (__m256i)__builtin_ia32_vinsertf128_si256((__v8si)__V1, (__v4si)__V2, (O)); }) + +static __inline __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_insert_epi32(__m256i __a, int __b, int const __imm) +{ + __v8si __c = (__v8si)__a; + __c[__imm & 7] = __b; + return (__m256i)__c; +} + +static __inline __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_insert_epi16(__m256i __a, int __b, int const __imm) +{ + __v16hi __c = (__v16hi)__a; + __c[__imm & 15] = __b; + return (__m256i)__c; +} + +static __inline __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_insert_epi8(__m256i __a, int __b, int const __imm) +{ + __v32qi __c = (__v32qi)__a; + __c[__imm & 31] = __b; + return (__m256i)__c; +} + +#ifdef __x86_64__ +static __inline __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_insert_epi64(__m256i __a, int __b, int const __imm) +{ + __v4di __c = (__v4di)__a; + __c[__imm & 3] = __b; + return (__m256i)__c; +} +#endif + +/* Conversion */ +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_cvtepi32_pd(__m128i __a) +{ + return (__m256d)__builtin_ia32_cvtdq2pd256((__v4si) __a); +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_cvtepi32_ps(__m256i __a) +{ + return (__m256)__builtin_ia32_cvtdq2ps256((__v8si) __a); +} + +static __inline __m128 __attribute__((__always_inline__, __nodebug__)) +_mm256_cvtpd_ps(__m256d __a) +{ + return (__m128)__builtin_ia32_cvtpd2ps256((__v4df) __a); +} + +static __inline __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_cvtps_epi32(__m256 __a) +{ + return (__m256i)__builtin_ia32_cvtps2dq256((__v8sf) __a); +} + +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_cvtps_pd(__m128 __a) +{ + return (__m256d)__builtin_ia32_cvtps2pd256((__v4sf) __a); +} + +static __inline __m128i __attribute__((__always_inline__, __nodebug__)) +_mm256_cvttpd_epi32(__m256d __a) +{ + return (__m128i)__builtin_ia32_cvttpd2dq256((__v4df) __a); +} + +static __inline __m128i __attribute__((__always_inline__, __nodebug__)) +_mm256_cvtpd_epi32(__m256d __a) +{ + return (__m128i)__builtin_ia32_cvtpd2dq256((__v4df) __a); +} + +static __inline __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_cvttps_epi32(__m256 __a) +{ + return (__m256i)__builtin_ia32_cvttps2dq256((__v8sf) __a); +} + +/* Vector replicate */ +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_movehdup_ps(__m256 __a) +{ + return __builtin_shufflevector(__a, __a, 1, 1, 3, 3, 5, 5, 7, 7); +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_moveldup_ps(__m256 __a) +{ + return __builtin_shufflevector(__a, __a, 0, 0, 2, 2, 4, 4, 6, 6); +} + +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_movedup_pd(__m256d __a) +{ + return __builtin_shufflevector(__a, __a, 0, 0, 2, 2); +} + +/* Unpack and Interleave */ +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_unpackhi_pd(__m256d __a, __m256d __b) +{ + return __builtin_shufflevector(__a, __b, 1, 5, 1+2, 5+2); +} + +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_unpacklo_pd(__m256d __a, __m256d __b) +{ + return __builtin_shufflevector(__a, __b, 0, 4, 0+2, 4+2); +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_unpackhi_ps(__m256 __a, __m256 __b) +{ + return __builtin_shufflevector(__a, __b, 2, 10, 2+1, 10+1, 6, 14, 6+1, 14+1); +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_unpacklo_ps(__m256 __a, __m256 __b) +{ + return __builtin_shufflevector(__a, __b, 0, 8, 0+1, 8+1, 4, 12, 4+1, 12+1); +} + +/* Bit Test */ +static __inline int __attribute__((__always_inline__, __nodebug__)) +_mm_testz_pd(__m128d __a, __m128d __b) +{ + return __builtin_ia32_vtestzpd((__v2df)__a, (__v2df)__b); +} + +static __inline int __attribute__((__always_inline__, __nodebug__)) +_mm_testc_pd(__m128d __a, __m128d __b) +{ + return __builtin_ia32_vtestcpd((__v2df)__a, (__v2df)__b); +} + +static __inline int __attribute__((__always_inline__, __nodebug__)) +_mm_testnzc_pd(__m128d __a, __m128d __b) +{ + return __builtin_ia32_vtestnzcpd((__v2df)__a, (__v2df)__b); +} + +static __inline int __attribute__((__always_inline__, __nodebug__)) +_mm_testz_ps(__m128 __a, __m128 __b) +{ + return __builtin_ia32_vtestzps((__v4sf)__a, (__v4sf)__b); +} + +static __inline int __attribute__((__always_inline__, __nodebug__)) +_mm_testc_ps(__m128 __a, __m128 __b) +{ + return __builtin_ia32_vtestcps((__v4sf)__a, (__v4sf)__b); +} + +static __inline int __attribute__((__always_inline__, __nodebug__)) +_mm_testnzc_ps(__m128 __a, __m128 __b) +{ + return __builtin_ia32_vtestnzcps((__v4sf)__a, (__v4sf)__b); +} + +static __inline int __attribute__((__always_inline__, __nodebug__)) +_mm256_testz_pd(__m256d __a, __m256d __b) +{ + return __builtin_ia32_vtestzpd256((__v4df)__a, (__v4df)__b); +} + +static __inline int __attribute__((__always_inline__, __nodebug__)) +_mm256_testc_pd(__m256d __a, __m256d __b) +{ + return __builtin_ia32_vtestcpd256((__v4df)__a, (__v4df)__b); +} + +static __inline int __attribute__((__always_inline__, __nodebug__)) +_mm256_testnzc_pd(__m256d __a, __m256d __b) +{ + return __builtin_ia32_vtestnzcpd256((__v4df)__a, (__v4df)__b); +} + +static __inline int __attribute__((__always_inline__, __nodebug__)) +_mm256_testz_ps(__m256 __a, __m256 __b) +{ + return __builtin_ia32_vtestzps256((__v8sf)__a, (__v8sf)__b); +} + +static __inline int __attribute__((__always_inline__, __nodebug__)) +_mm256_testc_ps(__m256 __a, __m256 __b) +{ + return __builtin_ia32_vtestcps256((__v8sf)__a, (__v8sf)__b); +} + +static __inline int __attribute__((__always_inline__, __nodebug__)) +_mm256_testnzc_ps(__m256 __a, __m256 __b) +{ + return __builtin_ia32_vtestnzcps256((__v8sf)__a, (__v8sf)__b); +} + +static __inline int __attribute__((__always_inline__, __nodebug__)) +_mm256_testz_si256(__m256i __a, __m256i __b) +{ + return __builtin_ia32_ptestz256((__v4di)__a, (__v4di)__b); +} + +static __inline int __attribute__((__always_inline__, __nodebug__)) +_mm256_testc_si256(__m256i __a, __m256i __b) +{ + return __builtin_ia32_ptestc256((__v4di)__a, (__v4di)__b); +} + +static __inline int __attribute__((__always_inline__, __nodebug__)) +_mm256_testnzc_si256(__m256i __a, __m256i __b) +{ + return __builtin_ia32_ptestnzc256((__v4di)__a, (__v4di)__b); +} + +/* Vector extract sign mask */ +static __inline int __attribute__((__always_inline__, __nodebug__)) +_mm256_movemask_pd(__m256d __a) +{ + return __builtin_ia32_movmskpd256((__v4df)__a); +} + +static __inline int __attribute__((__always_inline__, __nodebug__)) +_mm256_movemask_ps(__m256 __a) +{ + return __builtin_ia32_movmskps256((__v8sf)__a); +} + +/* Vector __zero */ +static __inline void __attribute__((__always_inline__, __nodebug__)) +_mm256_zeroall(void) +{ + __builtin_ia32_vzeroall(); +} + +static __inline void __attribute__((__always_inline__, __nodebug__)) +_mm256_zeroupper(void) +{ + __builtin_ia32_vzeroupper(); +} + +/* Vector load with broadcast */ +static __inline __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_broadcast_ss(float const *__a) +{ + return (__m128)__builtin_ia32_vbroadcastss(__a); +} + +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_broadcast_sd(double const *__a) +{ + return (__m256d)__builtin_ia32_vbroadcastsd256(__a); +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_broadcast_ss(float const *__a) +{ + return (__m256)__builtin_ia32_vbroadcastss256(__a); +} + +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_broadcast_pd(__m128d const *__a) +{ + return (__m256d)__builtin_ia32_vbroadcastf128_pd256(__a); +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_broadcast_ps(__m128 const *__a) +{ + return (__m256)__builtin_ia32_vbroadcastf128_ps256(__a); +} + +/* SIMD load ops */ +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_load_pd(double const *__p) +{ + return *(__m256d *)__p; +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_load_ps(float const *__p) +{ + return *(__m256 *)__p; +} + +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_loadu_pd(double const *__p) +{ + struct __loadu_pd { + __m256d __v; + } __attribute__((packed, may_alias)); + return ((struct __loadu_pd*)__p)->__v; +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_loadu_ps(float const *__p) +{ + struct __loadu_ps { + __m256 __v; + } __attribute__((packed, may_alias)); + return ((struct __loadu_ps*)__p)->__v; +} + +static __inline __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_load_si256(__m256i const *__p) +{ + return *__p; +} + +static __inline __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_loadu_si256(__m256i const *__p) +{ + struct __loadu_si256 { + __m256i __v; + } __attribute__((packed, may_alias)); + return ((struct __loadu_si256*)__p)->__v; +} + +static __inline __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_lddqu_si256(__m256i const *__p) +{ + return (__m256i)__builtin_ia32_lddqu256((char const *)__p); +} + +/* SIMD store ops */ +static __inline void __attribute__((__always_inline__, __nodebug__)) +_mm256_store_pd(double *__p, __m256d __a) +{ + *(__m256d *)__p = __a; +} + +static __inline void __attribute__((__always_inline__, __nodebug__)) +_mm256_store_ps(float *__p, __m256 __a) +{ + *(__m256 *)__p = __a; +} + +static __inline void __attribute__((__always_inline__, __nodebug__)) +_mm256_storeu_pd(double *__p, __m256d __a) +{ + __builtin_ia32_storeupd256(__p, (__v4df)__a); +} + +static __inline void __attribute__((__always_inline__, __nodebug__)) +_mm256_storeu_ps(float *__p, __m256 __a) +{ + __builtin_ia32_storeups256(__p, (__v8sf)__a); +} + +static __inline void __attribute__((__always_inline__, __nodebug__)) +_mm256_store_si256(__m256i *__p, __m256i __a) +{ + *__p = __a; +} + +static __inline void __attribute__((__always_inline__, __nodebug__)) +_mm256_storeu_si256(__m256i *__p, __m256i __a) +{ + __builtin_ia32_storedqu256((char *)__p, (__v32qi)__a); +} + +/* Conditional load ops */ +static __inline __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_maskload_pd(double const *__p, __m128d __m) +{ + return (__m128d)__builtin_ia32_maskloadpd((const __v2df *)__p, (__v2df)__m); +} + +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_maskload_pd(double const *__p, __m256d __m) +{ + return (__m256d)__builtin_ia32_maskloadpd256((const __v4df *)__p, + (__v4df)__m); +} + +static __inline __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_maskload_ps(float const *__p, __m128 __m) +{ + return (__m128)__builtin_ia32_maskloadps((const __v4sf *)__p, (__v4sf)__m); +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_maskload_ps(float const *__p, __m256 __m) +{ + return (__m256)__builtin_ia32_maskloadps256((const __v8sf *)__p, (__v8sf)__m); +} + +/* Conditional store ops */ +static __inline void __attribute__((__always_inline__, __nodebug__)) +_mm256_maskstore_ps(float *__p, __m256 __m, __m256 __a) +{ + __builtin_ia32_maskstoreps256((__v8sf *)__p, (__v8sf)__m, (__v8sf)__a); +} + +static __inline void __attribute__((__always_inline__, __nodebug__)) +_mm_maskstore_pd(double *__p, __m128d __m, __m128d __a) +{ + __builtin_ia32_maskstorepd((__v2df *)__p, (__v2df)__m, (__v2df)__a); +} + +static __inline void __attribute__((__always_inline__, __nodebug__)) +_mm256_maskstore_pd(double *__p, __m256d __m, __m256d __a) +{ + __builtin_ia32_maskstorepd256((__v4df *)__p, (__v4df)__m, (__v4df)__a); +} + +static __inline void __attribute__((__always_inline__, __nodebug__)) +_mm_maskstore_ps(float *__p, __m128 __m, __m128 __a) +{ + __builtin_ia32_maskstoreps((__v4sf *)__p, (__v4sf)__m, (__v4sf)__a); +} + +/* Cacheability support ops */ +static __inline void __attribute__((__always_inline__, __nodebug__)) +_mm256_stream_si256(__m256i *__a, __m256i __b) +{ + __builtin_ia32_movntdq256((__v4di *)__a, (__v4di)__b); +} + +static __inline void __attribute__((__always_inline__, __nodebug__)) +_mm256_stream_pd(double *__a, __m256d __b) +{ + __builtin_ia32_movntpd256(__a, (__v4df)__b); +} + +static __inline void __attribute__((__always_inline__, __nodebug__)) +_mm256_stream_ps(float *__p, __m256 __a) +{ + __builtin_ia32_movntps256(__p, (__v8sf)__a); +} + +/* Create vectors */ +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_set_pd(double __a, double __b, double __c, double __d) +{ + return (__m256d){ __d, __c, __b, __a }; +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_set_ps(float __a, float __b, float __c, float __d, + float __e, float __f, float __g, float __h) +{ + return (__m256){ __h, __g, __f, __e, __d, __c, __b, __a }; +} + +static __inline __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_set_epi32(int __i0, int __i1, int __i2, int __i3, + int __i4, int __i5, int __i6, int __i7) +{ + return (__m256i)(__v8si){ __i7, __i6, __i5, __i4, __i3, __i2, __i1, __i0 }; +} + +static __inline __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_set_epi16(short __w15, short __w14, short __w13, short __w12, + short __w11, short __w10, short __w09, short __w08, + short __w07, short __w06, short __w05, short __w04, + short __w03, short __w02, short __w01, short __w00) +{ + return (__m256i)(__v16hi){ __w00, __w01, __w02, __w03, __w04, __w05, __w06, + __w07, __w08, __w09, __w10, __w11, __w12, __w13, __w14, __w15 }; +} + +static __inline __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_set_epi8(char __b31, char __b30, char __b29, char __b28, + char __b27, char __b26, char __b25, char __b24, + char __b23, char __b22, char __b21, char __b20, + char __b19, char __b18, char __b17, char __b16, + char __b15, char __b14, char __b13, char __b12, + char __b11, char __b10, char __b09, char __b08, + char __b07, char __b06, char __b05, char __b04, + char __b03, char __b02, char __b01, char __b00) +{ + return (__m256i)(__v32qi){ + __b00, __b01, __b02, __b03, __b04, __b05, __b06, __b07, + __b08, __b09, __b10, __b11, __b12, __b13, __b14, __b15, + __b16, __b17, __b18, __b19, __b20, __b21, __b22, __b23, + __b24, __b25, __b26, __b27, __b28, __b29, __b30, __b31 + }; +} + +static __inline __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_set_epi64x(long long __a, long long __b, long long __c, long long __d) +{ + return (__m256i)(__v4di){ __d, __c, __b, __a }; +} + +/* Create vectors with elements in reverse order */ +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_setr_pd(double __a, double __b, double __c, double __d) +{ + return (__m256d){ __a, __b, __c, __d }; +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_setr_ps(float __a, float __b, float __c, float __d, + float __e, float __f, float __g, float __h) +{ + return (__m256){ __a, __b, __c, __d, __e, __f, __g, __h }; +} + +static __inline __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_setr_epi32(int __i0, int __i1, int __i2, int __i3, + int __i4, int __i5, int __i6, int __i7) +{ + return (__m256i)(__v8si){ __i0, __i1, __i2, __i3, __i4, __i5, __i6, __i7 }; +} + +static __inline __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_setr_epi16(short __w15, short __w14, short __w13, short __w12, + short __w11, short __w10, short __w09, short __w08, + short __w07, short __w06, short __w05, short __w04, + short __w03, short __w02, short __w01, short __w00) +{ + return (__m256i)(__v16hi){ __w15, __w14, __w13, __w12, __w11, __w10, __w09, + __w08, __w07, __w06, __w05, __w04, __w03, __w02, __w01, __w00 }; +} + +static __inline __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_setr_epi8(char __b31, char __b30, char __b29, char __b28, + char __b27, char __b26, char __b25, char __b24, + char __b23, char __b22, char __b21, char __b20, + char __b19, char __b18, char __b17, char __b16, + char __b15, char __b14, char __b13, char __b12, + char __b11, char __b10, char __b09, char __b08, + char __b07, char __b06, char __b05, char __b04, + char __b03, char __b02, char __b01, char __b00) +{ + return (__m256i)(__v32qi){ + __b31, __b30, __b29, __b28, __b27, __b26, __b25, __b24, + __b23, __b22, __b21, __b20, __b19, __b18, __b17, __b16, + __b15, __b14, __b13, __b12, __b11, __b10, __b09, __b08, + __b07, __b06, __b05, __b04, __b03, __b02, __b01, __b00 }; +} + +static __inline __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_setr_epi64x(long long __a, long long __b, long long __c, long long __d) +{ + return (__m256i)(__v4di){ __a, __b, __c, __d }; +} + +/* Create vectors with repeated elements */ +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_set1_pd(double __w) +{ + return (__m256d){ __w, __w, __w, __w }; +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_set1_ps(float __w) +{ + return (__m256){ __w, __w, __w, __w, __w, __w, __w, __w }; +} + +static __inline __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_set1_epi32(int __i) +{ + return (__m256i)(__v8si){ __i, __i, __i, __i, __i, __i, __i, __i }; +} + +static __inline __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_set1_epi16(short __w) +{ + return (__m256i)(__v16hi){ __w, __w, __w, __w, __w, __w, __w, __w, __w, __w, + __w, __w, __w, __w, __w, __w }; +} + +static __inline __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_set1_epi8(char __b) +{ + return (__m256i)(__v32qi){ __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, + __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, + __b, __b, __b, __b, __b, __b, __b }; +} + +static __inline __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_set1_epi64x(long long __q) +{ + return (__m256i)(__v4di){ __q, __q, __q, __q }; +} + +/* Create __zeroed vectors */ +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_setzero_pd(void) +{ + return (__m256d){ 0, 0, 0, 0 }; +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_setzero_ps(void) +{ + return (__m256){ 0, 0, 0, 0, 0, 0, 0, 0 }; +} + +static __inline __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_setzero_si256(void) +{ + return (__m256i){ 0LL, 0LL, 0LL, 0LL }; +} + +/* Cast between vector types */ +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_castpd_ps(__m256d __a) +{ + return (__m256)__a; +} + +static __inline __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_castpd_si256(__m256d __a) +{ + return (__m256i)__a; +} + +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_castps_pd(__m256 __a) +{ + return (__m256d)__a; +} + +static __inline __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_castps_si256(__m256 __a) +{ + return (__m256i)__a; +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_castsi256_ps(__m256i __a) +{ + return (__m256)__a; +} + +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_castsi256_pd(__m256i __a) +{ + return (__m256d)__a; +} + +static __inline __m128d __attribute__((__always_inline__, __nodebug__)) +_mm256_castpd256_pd128(__m256d __a) +{ + return __builtin_shufflevector(__a, __a, 0, 1); +} + +static __inline __m128 __attribute__((__always_inline__, __nodebug__)) +_mm256_castps256_ps128(__m256 __a) +{ + return __builtin_shufflevector(__a, __a, 0, 1, 2, 3); +} + +static __inline __m128i __attribute__((__always_inline__, __nodebug__)) +_mm256_castsi256_si128(__m256i __a) +{ + return __builtin_shufflevector(__a, __a, 0, 1); +} + +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_castpd128_pd256(__m128d __a) +{ + return __builtin_shufflevector(__a, __a, 0, 1, -1, -1); +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_castps128_ps256(__m128 __a) +{ + return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, -1, -1, -1, -1); +} + +static __inline __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_castsi128_si256(__m128i __a) +{ + return __builtin_shufflevector(__a, __a, 0, 1, -1, -1); +} + +/* SIMD load ops (unaligned) */ +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_loadu2_m128(float const *__addr_hi, float const *__addr_lo) +{ + struct __loadu_ps { + __m128 __v; + } __attribute__((__packed__, __may_alias__)); + + __m256 __v256 = _mm256_castps128_ps256(((struct __loadu_ps*)__addr_lo)->__v); + return _mm256_insertf128_ps(__v256, ((struct __loadu_ps*)__addr_hi)->__v, 1); +} + +static __inline __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_loadu2_m128d(double const *__addr_hi, double const *__addr_lo) +{ + struct __loadu_pd { + __m128d __v; + } __attribute__((__packed__, __may_alias__)); + + __m256d __v256 = _mm256_castpd128_pd256(((struct __loadu_pd*)__addr_lo)->__v); + return _mm256_insertf128_pd(__v256, ((struct __loadu_pd*)__addr_hi)->__v, 1); +} + +static __inline __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_loadu2_m128i(__m128i const *__addr_hi, __m128i const *__addr_lo) +{ + struct __loadu_si128 { + __m128i __v; + } __attribute__((packed, may_alias)); + __m256i __v256 = _mm256_castsi128_si256( + ((struct __loadu_si128*)__addr_lo)->__v); + return _mm256_insertf128_si256(__v256, + ((struct __loadu_si128*)__addr_hi)->__v, 1); +} + +/* SIMD store ops (unaligned) */ +static __inline void __attribute__((__always_inline__, __nodebug__)) +_mm256_storeu2_m128(float *__addr_hi, float *__addr_lo, __m256 __a) +{ + __m128 __v128; + + __v128 = _mm256_castps256_ps128(__a); + __builtin_ia32_storeups(__addr_lo, __v128); + __v128 = _mm256_extractf128_ps(__a, 1); + __builtin_ia32_storeups(__addr_hi, __v128); +} + +static __inline void __attribute__((__always_inline__, __nodebug__)) +_mm256_storeu2_m128d(double *__addr_hi, double *__addr_lo, __m256d __a) +{ + __m128d __v128; + + __v128 = _mm256_castpd256_pd128(__a); + __builtin_ia32_storeupd(__addr_lo, __v128); + __v128 = _mm256_extractf128_pd(__a, 1); + __builtin_ia32_storeupd(__addr_hi, __v128); +} + +static __inline void __attribute__((__always_inline__, __nodebug__)) +_mm256_storeu2_m128i(__m128i *__addr_hi, __m128i *__addr_lo, __m256i __a) +{ + __m128i __v128; + + __v128 = _mm256_castsi256_si128(__a); + __builtin_ia32_storedqu((char *)__addr_lo, (__v16qi)__v128); + __v128 = _mm256_extractf128_si256(__a, 1); + __builtin_ia32_storedqu((char *)__addr_hi, (__v16qi)__v128); +} + +#endif /* __AVXINTRIN_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/bmi2intrin.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/bmi2intrin.h new file mode 100644 index 0000000..a05cfad --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/bmi2intrin.h @@ -0,0 +1,94 @@ +/*===---- bmi2intrin.h - BMI2 intrinsics -----------------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#if !defined __X86INTRIN_H && !defined __IMMINTRIN_H +#error "Never use directly; include instead." +#endif + +#ifndef __BMI2__ +# error "BMI2 instruction set not enabled" +#endif /* __BMI2__ */ + +#ifndef __BMI2INTRIN_H +#define __BMI2INTRIN_H + +static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__)) +_bzhi_u32(unsigned int __X, unsigned int __Y) +{ + return __builtin_ia32_bzhi_si(__X, __Y); +} + +static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__)) +_pdep_u32(unsigned int __X, unsigned int __Y) +{ + return __builtin_ia32_pdep_si(__X, __Y); +} + +static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__)) +_pext_u32(unsigned int __X, unsigned int __Y) +{ + return __builtin_ia32_pext_si(__X, __Y); +} + +#ifdef __x86_64__ + +static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__)) +_bzhi_u64(unsigned long long __X, unsigned long long __Y) +{ + return __builtin_ia32_bzhi_di(__X, __Y); +} + +static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__)) +_pdep_u64(unsigned long long __X, unsigned long long __Y) +{ + return __builtin_ia32_pdep_di(__X, __Y); +} + +static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__)) +_pext_u64(unsigned long long __X, unsigned long long __Y) +{ + return __builtin_ia32_pext_di(__X, __Y); +} + +static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__)) +_mulx_u64 (unsigned long long __X, unsigned long long __Y, + unsigned long long *__P) +{ + unsigned __int128 __res = (unsigned __int128) __X * __Y; + *__P = (unsigned long long) (__res >> 64); + return (unsigned long long) __res; +} + +#else /* !__x86_64__ */ + +static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__)) +_mulx_u32 (unsigned int __X, unsigned int __Y, unsigned int *__P) +{ + unsigned long long __res = (unsigned long long) __X * __Y; + *__P = (unsigned int) (__res >> 32); + return (unsigned int) __res; +} + +#endif /* !__x86_64__ */ + +#endif /* __BMI2INTRIN_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/bmiintrin.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/bmiintrin.h new file mode 100644 index 0000000..8cb00f5 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/bmiintrin.h @@ -0,0 +1,115 @@ +/*===---- bmiintrin.h - BMI intrinsics -------------------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#if !defined __X86INTRIN_H && !defined __IMMINTRIN_H +#error "Never use directly; include instead." +#endif + +#ifndef __BMI__ +# error "BMI instruction set not enabled" +#endif /* __BMI__ */ + +#ifndef __BMIINTRIN_H +#define __BMIINTRIN_H + +static __inline__ unsigned short __attribute__((__always_inline__, __nodebug__)) +__tzcnt_u16(unsigned short __X) +{ + return __builtin_ctzs(__X); +} + +static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__)) +__andn_u32(unsigned int __X, unsigned int __Y) +{ + return ~__X & __Y; +} + +static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__)) +__bextr_u32(unsigned int __X, unsigned int __Y) +{ + return __builtin_ia32_bextr_u32(__X, __Y); +} + +static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__)) +__blsi_u32(unsigned int __X) +{ + return __X & -__X; +} + +static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__)) +__blsmsk_u32(unsigned int __X) +{ + return __X ^ (__X - 1); +} + +static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__)) +__blsr_u32(unsigned int __X) +{ + return __X & (__X - 1); +} + +static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__)) +__tzcnt_u32(unsigned int __X) +{ + return __builtin_ctz(__X); +} + +#ifdef __x86_64__ +static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__)) +__andn_u64 (unsigned long long __X, unsigned long long __Y) +{ + return ~__X & __Y; +} + +static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__)) +__bextr_u64(unsigned long long __X, unsigned long long __Y) +{ + return __builtin_ia32_bextr_u64(__X, __Y); +} + +static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__)) +__blsi_u64(unsigned long long __X) +{ + return __X & -__X; +} + +static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__)) +__blsmsk_u64(unsigned long long __X) +{ + return __X ^ (__X - 1); +} + +static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__)) +__blsr_u64(unsigned long long __X) +{ + return __X & (__X - 1); +} + +static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__)) +__tzcnt_u64(unsigned long long __X) +{ + return __builtin_ctzll(__X); +} +#endif + +#endif /* __BMIINTRIN_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/cpuid.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/cpuid.h new file mode 100644 index 0000000..8f12cae --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/cpuid.h @@ -0,0 +1,156 @@ +/*===---- cpuid.h - X86 cpu model detection --------------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#if !(__x86_64__ || __i386__) +#error this header is for x86 only +#endif + +/* Features in %ecx for level 1 */ +#define bit_SSE3 0x00000001 +#define bit_PCLMULQDQ 0x00000002 +#define bit_DTES64 0x00000004 +#define bit_MONITOR 0x00000008 +#define bit_DSCPL 0x00000010 +#define bit_VMX 0x00000020 +#define bit_SMX 0x00000040 +#define bit_EIST 0x00000080 +#define bit_TM2 0x00000100 +#define bit_SSSE3 0x00000200 +#define bit_CNXTID 0x00000400 +#define bit_FMA 0x00001000 +#define bit_CMPXCHG16B 0x00002000 +#define bit_xTPR 0x00004000 +#define bit_PDCM 0x00008000 +#define bit_PCID 0x00020000 +#define bit_DCA 0x00040000 +#define bit_SSE41 0x00080000 +#define bit_SSE42 0x00100000 +#define bit_x2APIC 0x00200000 +#define bit_MOVBE 0x00400000 +#define bit_POPCNT 0x00800000 +#define bit_TSCDeadline 0x01000000 +#define bit_AESNI 0x02000000 +#define bit_XSAVE 0x04000000 +#define bit_OSXSAVE 0x08000000 +#define bit_AVX 0x10000000 +#define bit_RDRAND 0x40000000 + +/* Features in %edx for level 1 */ +#define bit_FPU 0x00000001 +#define bit_VME 0x00000002 +#define bit_DE 0x00000004 +#define bit_PSE 0x00000008 +#define bit_TSC 0x00000010 +#define bit_MSR 0x00000020 +#define bit_PAE 0x00000040 +#define bit_MCE 0x00000080 +#define bit_CX8 0x00000100 +#define bit_APIC 0x00000200 +#define bit_SEP 0x00000800 +#define bit_MTRR 0x00001000 +#define bit_PGE 0x00002000 +#define bit_MCA 0x00004000 +#define bit_CMOV 0x00008000 +#define bit_PAT 0x00010000 +#define bit_PSE36 0x00020000 +#define bit_PSN 0x00040000 +#define bit_CLFSH 0x00080000 +#define bit_DS 0x00200000 +#define bit_ACPI 0x00400000 +#define bit_MMX 0x00800000 +#define bit_FXSR 0x01000000 +#define bit_SSE 0x02000000 +#define bit_SSE2 0x04000000 +#define bit_SS 0x08000000 +#define bit_HTT 0x10000000 +#define bit_TM 0x20000000 +#define bit_PBE 0x80000000 + +/* Features in %ebx for level 7 sub-leaf 0 */ +#define bit_FSGSBASE 0x00000001 +#define bit_SMEP 0x00000080 +#define bit_ENH_MOVSB 0x00000200 + +/* PIC on i386 uses %ebx, so preserve it. */ +#if __i386__ +#define __cpuid(__level, __eax, __ebx, __ecx, __edx) \ + __asm(" pushl %%ebx\n" \ + " cpuid\n" \ + " mov %%ebx,%1\n" \ + " popl %%ebx" \ + : "=a"(__eax), "=r" (__ebx), "=c"(__ecx), "=d"(__edx) \ + : "0"(__level)) + +#define __cpuid_count(__level, __count, __eax, __ebx, __ecx, __edx) \ + __asm(" pushl %%ebx\n" \ + " cpuid\n" \ + " mov %%ebx,%1\n" \ + " popl %%ebx" \ + : "=a"(__eax), "=r" (__ebx), "=c"(__ecx), "=d"(__edx) \ + : "0"(__level), "2"(__count)) +#else +#define __cpuid(__level, __eax, __ebx, __ecx, __edx) \ + __asm("cpuid" : "=a"(__eax), "=b" (__ebx), "=c"(__ecx), "=d"(__edx) \ + : "0"(__level)) + +#define __cpuid_count(__level, __count, __eax, __ebx, __ecx, __edx) \ + __asm("cpuid" : "=a"(__eax), "=b" (__ebx), "=c"(__ecx), "=d"(__edx) \ + : "0"(__level), "2"(__count)) +#endif + +static __inline int __get_cpuid (unsigned int __level, unsigned int *__eax, + unsigned int *__ebx, unsigned int *__ecx, + unsigned int *__edx) { + __cpuid(__level, *__eax, *__ebx, *__ecx, *__edx); + return 1; +} + +static __inline int __get_cpuid_max (unsigned int __level, unsigned int *__sig) +{ + unsigned int __eax, __ebx, __ecx, __edx; +#if __i386__ + int __cpuid_supported; + + __asm(" pushfl\n" + " popl %%eax\n" + " movl %%eax,%%ecx\n" + " xorl $0x00200000,%%eax\n" + " pushl %%eax\n" + " popfl\n" + " pushfl\n" + " popl %%eax\n" + " movl $0,%0\n" + " cmpl %%eax,%%ecx\n" + " je 1f\n" + " movl $1,%0\n" + "1:" + : "=r" (__cpuid_supported) : : "eax", "ecx"); + if (!__cpuid_supported) + return 0; +#endif + + __cpuid(__level, __eax, __ebx, __ecx, __edx); + if (__sig) + *__sig = __ebx; + return __eax; +} diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/emmintrin.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/emmintrin.h new file mode 100644 index 0000000..f965dce --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/emmintrin.h @@ -0,0 +1,1431 @@ +/*===---- emmintrin.h - SSE2 intrinsics ------------------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef __EMMINTRIN_H +#define __EMMINTRIN_H + +#ifndef __SSE2__ +#error "SSE2 instruction set not enabled" +#else + +#include + +typedef double __m128d __attribute__((__vector_size__(16))); +typedef long long __m128i __attribute__((__vector_size__(16))); + +/* Type defines. */ +typedef double __v2df __attribute__ ((__vector_size__ (16))); +typedef long long __v2di __attribute__ ((__vector_size__ (16))); +typedef short __v8hi __attribute__((__vector_size__(16))); +typedef char __v16qi __attribute__((__vector_size__(16))); + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_add_sd(__m128d __a, __m128d __b) +{ + __a[0] += __b[0]; + return __a; +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_add_pd(__m128d __a, __m128d __b) +{ + return __a + __b; +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_sub_sd(__m128d __a, __m128d __b) +{ + __a[0] -= __b[0]; + return __a; +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_sub_pd(__m128d __a, __m128d __b) +{ + return __a - __b; +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_mul_sd(__m128d __a, __m128d __b) +{ + __a[0] *= __b[0]; + return __a; +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_mul_pd(__m128d __a, __m128d __b) +{ + return __a * __b; +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_div_sd(__m128d __a, __m128d __b) +{ + __a[0] /= __b[0]; + return __a; +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_div_pd(__m128d __a, __m128d __b) +{ + return __a / __b; +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_sqrt_sd(__m128d __a, __m128d __b) +{ + __m128d __c = __builtin_ia32_sqrtsd(__b); + return (__m128d) { __c[0], __a[1] }; +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_sqrt_pd(__m128d __a) +{ + return __builtin_ia32_sqrtpd(__a); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_min_sd(__m128d __a, __m128d __b) +{ + return __builtin_ia32_minsd(__a, __b); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_min_pd(__m128d __a, __m128d __b) +{ + return __builtin_ia32_minpd(__a, __b); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_max_sd(__m128d __a, __m128d __b) +{ + return __builtin_ia32_maxsd(__a, __b); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_max_pd(__m128d __a, __m128d __b) +{ + return __builtin_ia32_maxpd(__a, __b); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_and_pd(__m128d __a, __m128d __b) +{ + return (__m128d)((__v4si)__a & (__v4si)__b); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_andnot_pd(__m128d __a, __m128d __b) +{ + return (__m128d)(~(__v4si)__a & (__v4si)__b); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_or_pd(__m128d __a, __m128d __b) +{ + return (__m128d)((__v4si)__a | (__v4si)__b); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_xor_pd(__m128d __a, __m128d __b) +{ + return (__m128d)((__v4si)__a ^ (__v4si)__b); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cmpeq_pd(__m128d __a, __m128d __b) +{ + return (__m128d)__builtin_ia32_cmppd(__a, __b, 0); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cmplt_pd(__m128d __a, __m128d __b) +{ + return (__m128d)__builtin_ia32_cmppd(__a, __b, 1); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cmple_pd(__m128d __a, __m128d __b) +{ + return (__m128d)__builtin_ia32_cmppd(__a, __b, 2); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cmpgt_pd(__m128d __a, __m128d __b) +{ + return (__m128d)__builtin_ia32_cmppd(__b, __a, 1); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cmpge_pd(__m128d __a, __m128d __b) +{ + return (__m128d)__builtin_ia32_cmppd(__b, __a, 2); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cmpord_pd(__m128d __a, __m128d __b) +{ + return (__m128d)__builtin_ia32_cmppd(__a, __b, 7); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cmpunord_pd(__m128d __a, __m128d __b) +{ + return (__m128d)__builtin_ia32_cmppd(__a, __b, 3); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cmpneq_pd(__m128d __a, __m128d __b) +{ + return (__m128d)__builtin_ia32_cmppd(__a, __b, 4); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cmpnlt_pd(__m128d __a, __m128d __b) +{ + return (__m128d)__builtin_ia32_cmppd(__a, __b, 5); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cmpnle_pd(__m128d __a, __m128d __b) +{ + return (__m128d)__builtin_ia32_cmppd(__a, __b, 6); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cmpngt_pd(__m128d __a, __m128d __b) +{ + return (__m128d)__builtin_ia32_cmppd(__b, __a, 5); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cmpnge_pd(__m128d __a, __m128d __b) +{ + return (__m128d)__builtin_ia32_cmppd(__b, __a, 6); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cmpeq_sd(__m128d __a, __m128d __b) +{ + return (__m128d)__builtin_ia32_cmpsd(__a, __b, 0); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cmplt_sd(__m128d __a, __m128d __b) +{ + return (__m128d)__builtin_ia32_cmpsd(__a, __b, 1); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cmple_sd(__m128d __a, __m128d __b) +{ + return (__m128d)__builtin_ia32_cmpsd(__a, __b, 2); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cmpgt_sd(__m128d __a, __m128d __b) +{ + __m128d __c = __builtin_ia32_cmpsd(__b, __a, 1); + return (__m128d) { __c[0], __a[1] }; +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cmpge_sd(__m128d __a, __m128d __b) +{ + __m128d __c = __builtin_ia32_cmpsd(__b, __a, 2); + return (__m128d) { __c[0], __a[1] }; +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cmpord_sd(__m128d __a, __m128d __b) +{ + return (__m128d)__builtin_ia32_cmpsd(__a, __b, 7); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cmpunord_sd(__m128d __a, __m128d __b) +{ + return (__m128d)__builtin_ia32_cmpsd(__a, __b, 3); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cmpneq_sd(__m128d __a, __m128d __b) +{ + return (__m128d)__builtin_ia32_cmpsd(__a, __b, 4); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cmpnlt_sd(__m128d __a, __m128d __b) +{ + return (__m128d)__builtin_ia32_cmpsd(__a, __b, 5); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cmpnle_sd(__m128d __a, __m128d __b) +{ + return (__m128d)__builtin_ia32_cmpsd(__a, __b, 6); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cmpngt_sd(__m128d __a, __m128d __b) +{ + __m128d __c = __builtin_ia32_cmpsd(__b, __a, 5); + return (__m128d) { __c[0], __a[1] }; +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cmpnge_sd(__m128d __a, __m128d __b) +{ + __m128d __c = __builtin_ia32_cmpsd(__b, __a, 6); + return (__m128d) { __c[0], __a[1] }; +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_comieq_sd(__m128d __a, __m128d __b) +{ + return __builtin_ia32_comisdeq(__a, __b); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_comilt_sd(__m128d __a, __m128d __b) +{ + return __builtin_ia32_comisdlt(__a, __b); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_comile_sd(__m128d __a, __m128d __b) +{ + return __builtin_ia32_comisdle(__a, __b); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_comigt_sd(__m128d __a, __m128d __b) +{ + return __builtin_ia32_comisdgt(__a, __b); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_comige_sd(__m128d __a, __m128d __b) +{ + return __builtin_ia32_comisdge(__a, __b); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_comineq_sd(__m128d __a, __m128d __b) +{ + return __builtin_ia32_comisdneq(__a, __b); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_ucomieq_sd(__m128d __a, __m128d __b) +{ + return __builtin_ia32_ucomisdeq(__a, __b); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_ucomilt_sd(__m128d __a, __m128d __b) +{ + return __builtin_ia32_ucomisdlt(__a, __b); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_ucomile_sd(__m128d __a, __m128d __b) +{ + return __builtin_ia32_ucomisdle(__a, __b); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_ucomigt_sd(__m128d __a, __m128d __b) +{ + return __builtin_ia32_ucomisdgt(__a, __b); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_ucomige_sd(__m128d __a, __m128d __b) +{ + return __builtin_ia32_ucomisdge(__a, __b); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_ucomineq_sd(__m128d __a, __m128d __b) +{ + return __builtin_ia32_ucomisdneq(__a, __b); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cvtpd_ps(__m128d __a) +{ + return __builtin_ia32_cvtpd2ps(__a); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cvtps_pd(__m128 __a) +{ + return __builtin_ia32_cvtps2pd(__a); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cvtepi32_pd(__m128i __a) +{ + return __builtin_ia32_cvtdq2pd((__v4si)__a); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cvtpd_epi32(__m128d __a) +{ + return __builtin_ia32_cvtpd2dq(__a); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_cvtsd_si32(__m128d __a) +{ + return __builtin_ia32_cvtsd2si(__a); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cvtsd_ss(__m128 __a, __m128d __b) +{ + __a[0] = __b[0]; + return __a; +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cvtsi32_sd(__m128d __a, int __b) +{ + __a[0] = __b; + return __a; +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cvtss_sd(__m128d __a, __m128 __b) +{ + __a[0] = __b[0]; + return __a; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cvttpd_epi32(__m128d __a) +{ + return (__m128i)__builtin_ia32_cvttpd2dq(__a); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_cvttsd_si32(__m128d __a) +{ + return __a[0]; +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_cvtpd_pi32(__m128d __a) +{ + return (__m64)__builtin_ia32_cvtpd2pi(__a); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_cvttpd_pi32(__m128d __a) +{ + return (__m64)__builtin_ia32_cvttpd2pi(__a); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cvtpi32_pd(__m64 __a) +{ + return __builtin_ia32_cvtpi2pd((__v2si)__a); +} + +static __inline__ double __attribute__((__always_inline__, __nodebug__)) +_mm_cvtsd_f64(__m128d __a) +{ + return __a[0]; +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_load_pd(double const *__dp) +{ + return *(__m128d*)__dp; +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_load1_pd(double const *__dp) +{ + struct __mm_load1_pd_struct { + double __u; + } __attribute__((__packed__, __may_alias__)); + double __u = ((struct __mm_load1_pd_struct*)__dp)->__u; + return (__m128d){ __u, __u }; +} + +#define _mm_load_pd1(dp) _mm_load1_pd(dp) + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_loadr_pd(double const *__dp) +{ + __m128d __u = *(__m128d*)__dp; + return __builtin_shufflevector(__u, __u, 1, 0); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_loadu_pd(double const *__dp) +{ + struct __loadu_pd { + __m128d __v; + } __attribute__((packed, may_alias)); + return ((struct __loadu_pd*)__dp)->__v; +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_load_sd(double const *__dp) +{ + struct __mm_load_sd_struct { + double __u; + } __attribute__((__packed__, __may_alias__)); + double __u = ((struct __mm_load_sd_struct*)__dp)->__u; + return (__m128d){ __u, 0 }; +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_loadh_pd(__m128d __a, double const *__dp) +{ + struct __mm_loadh_pd_struct { + double __u; + } __attribute__((__packed__, __may_alias__)); + double __u = ((struct __mm_loadh_pd_struct*)__dp)->__u; + return (__m128d){ __a[0], __u }; +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_loadl_pd(__m128d __a, double const *__dp) +{ + struct __mm_loadl_pd_struct { + double __u; + } __attribute__((__packed__, __may_alias__)); + double __u = ((struct __mm_loadl_pd_struct*)__dp)->__u; + return (__m128d){ __u, __a[1] }; +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_set_sd(double __w) +{ + return (__m128d){ __w, 0 }; +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_set1_pd(double __w) +{ + return (__m128d){ __w, __w }; +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_set_pd(double __w, double __x) +{ + return (__m128d){ __x, __w }; +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_setr_pd(double __w, double __x) +{ + return (__m128d){ __w, __x }; +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_setzero_pd(void) +{ + return (__m128d){ 0, 0 }; +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_move_sd(__m128d __a, __m128d __b) +{ + return (__m128d){ __b[0], __a[1] }; +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_store_sd(double *__dp, __m128d __a) +{ + struct __mm_store_sd_struct { + double __u; + } __attribute__((__packed__, __may_alias__)); + ((struct __mm_store_sd_struct*)__dp)->__u = __a[0]; +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_store1_pd(double *__dp, __m128d __a) +{ + struct __mm_store1_pd_struct { + double __u[2]; + } __attribute__((__packed__, __may_alias__)); + ((struct __mm_store1_pd_struct*)__dp)->__u[0] = __a[0]; + ((struct __mm_store1_pd_struct*)__dp)->__u[1] = __a[0]; +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_store_pd(double *__dp, __m128d __a) +{ + *(__m128d *)__dp = __a; +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_storeu_pd(double *__dp, __m128d __a) +{ + __builtin_ia32_storeupd(__dp, __a); +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_storer_pd(double *__dp, __m128d __a) +{ + __a = __builtin_shufflevector(__a, __a, 1, 0); + *(__m128d *)__dp = __a; +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_storeh_pd(double *__dp, __m128d __a) +{ + struct __mm_storeh_pd_struct { + double __u; + } __attribute__((__packed__, __may_alias__)); + ((struct __mm_storeh_pd_struct*)__dp)->__u = __a[1]; +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_storel_pd(double *__dp, __m128d __a) +{ + struct __mm_storeh_pd_struct { + double __u; + } __attribute__((__packed__, __may_alias__)); + ((struct __mm_storeh_pd_struct*)__dp)->__u = __a[0]; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_add_epi8(__m128i __a, __m128i __b) +{ + return (__m128i)((__v16qi)__a + (__v16qi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_add_epi16(__m128i __a, __m128i __b) +{ + return (__m128i)((__v8hi)__a + (__v8hi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_add_epi32(__m128i __a, __m128i __b) +{ + return (__m128i)((__v4si)__a + (__v4si)__b); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_add_si64(__m64 __a, __m64 __b) +{ + return __a + __b; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_add_epi64(__m128i __a, __m128i __b) +{ + return __a + __b; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_adds_epi8(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_paddsb128((__v16qi)__a, (__v16qi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_adds_epi16(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_paddsw128((__v8hi)__a, (__v8hi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_adds_epu8(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_paddusb128((__v16qi)__a, (__v16qi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_adds_epu16(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_paddusw128((__v8hi)__a, (__v8hi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_avg_epu8(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_pavgb128((__v16qi)__a, (__v16qi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_avg_epu16(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_pavgw128((__v8hi)__a, (__v8hi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_madd_epi16(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_pmaddwd128((__v8hi)__a, (__v8hi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_max_epi16(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_pmaxsw128((__v8hi)__a, (__v8hi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_max_epu8(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_pmaxub128((__v16qi)__a, (__v16qi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_min_epi16(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_pminsw128((__v8hi)__a, (__v8hi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_min_epu8(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_pminub128((__v16qi)__a, (__v16qi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_mulhi_epi16(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_pmulhw128((__v8hi)__a, (__v8hi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_mulhi_epu16(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_pmulhuw128((__v8hi)__a, (__v8hi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_mullo_epi16(__m128i __a, __m128i __b) +{ + return (__m128i)((__v8hi)__a * (__v8hi)__b); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_mul_su32(__m64 __a, __m64 __b) +{ + return __builtin_ia32_pmuludq((__v2si)__a, (__v2si)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_mul_epu32(__m128i __a, __m128i __b) +{ + return __builtin_ia32_pmuludq128((__v4si)__a, (__v4si)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_sad_epu8(__m128i __a, __m128i __b) +{ + return __builtin_ia32_psadbw128((__v16qi)__a, (__v16qi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_sub_epi8(__m128i __a, __m128i __b) +{ + return (__m128i)((__v16qi)__a - (__v16qi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_sub_epi16(__m128i __a, __m128i __b) +{ + return (__m128i)((__v8hi)__a - (__v8hi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_sub_epi32(__m128i __a, __m128i __b) +{ + return (__m128i)((__v4si)__a - (__v4si)__b); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_sub_si64(__m64 __a, __m64 __b) +{ + return __a - __b; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_sub_epi64(__m128i __a, __m128i __b) +{ + return __a - __b; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_subs_epi8(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_psubsb128((__v16qi)__a, (__v16qi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_subs_epi16(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_psubsw128((__v8hi)__a, (__v8hi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_subs_epu8(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_psubusb128((__v16qi)__a, (__v16qi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_subs_epu16(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_psubusw128((__v8hi)__a, (__v8hi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_and_si128(__m128i __a, __m128i __b) +{ + return __a & __b; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_andnot_si128(__m128i __a, __m128i __b) +{ + return ~__a & __b; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_or_si128(__m128i __a, __m128i __b) +{ + return __a | __b; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_xor_si128(__m128i __a, __m128i __b) +{ + return __a ^ __b; +} + +#define _mm_slli_si128(a, count) __extension__ ({ \ + __m128i __a = (a); \ + (__m128i)__builtin_ia32_pslldqi128(__a, (count)*8); }) + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_slli_epi16(__m128i __a, int __count) +{ + return (__m128i)__builtin_ia32_psllwi128((__v8hi)__a, __count); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_sll_epi16(__m128i __a, __m128i __count) +{ + return (__m128i)__builtin_ia32_psllw128((__v8hi)__a, (__v8hi)__count); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_slli_epi32(__m128i __a, int __count) +{ + return (__m128i)__builtin_ia32_pslldi128((__v4si)__a, __count); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_sll_epi32(__m128i __a, __m128i __count) +{ + return (__m128i)__builtin_ia32_pslld128((__v4si)__a, (__v4si)__count); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_slli_epi64(__m128i __a, int __count) +{ + return __builtin_ia32_psllqi128(__a, __count); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_sll_epi64(__m128i __a, __m128i __count) +{ + return __builtin_ia32_psllq128(__a, __count); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_srai_epi16(__m128i __a, int __count) +{ + return (__m128i)__builtin_ia32_psrawi128((__v8hi)__a, __count); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_sra_epi16(__m128i __a, __m128i __count) +{ + return (__m128i)__builtin_ia32_psraw128((__v8hi)__a, (__v8hi)__count); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_srai_epi32(__m128i __a, int __count) +{ + return (__m128i)__builtin_ia32_psradi128((__v4si)__a, __count); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_sra_epi32(__m128i __a, __m128i __count) +{ + return (__m128i)__builtin_ia32_psrad128((__v4si)__a, (__v4si)__count); +} + + +#define _mm_srli_si128(a, count) __extension__ ({ \ + __m128i __a = (a); \ + (__m128i)__builtin_ia32_psrldqi128(__a, (count)*8); }) + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_srli_epi16(__m128i __a, int __count) +{ + return (__m128i)__builtin_ia32_psrlwi128((__v8hi)__a, __count); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_srl_epi16(__m128i __a, __m128i __count) +{ + return (__m128i)__builtin_ia32_psrlw128((__v8hi)__a, (__v8hi)__count); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_srli_epi32(__m128i __a, int __count) +{ + return (__m128i)__builtin_ia32_psrldi128((__v4si)__a, __count); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_srl_epi32(__m128i __a, __m128i __count) +{ + return (__m128i)__builtin_ia32_psrld128((__v4si)__a, (__v4si)__count); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_srli_epi64(__m128i __a, int __count) +{ + return __builtin_ia32_psrlqi128(__a, __count); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_srl_epi64(__m128i __a, __m128i __count) +{ + return __builtin_ia32_psrlq128(__a, __count); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cmpeq_epi8(__m128i __a, __m128i __b) +{ + return (__m128i)((__v16qi)__a == (__v16qi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cmpeq_epi16(__m128i __a, __m128i __b) +{ + return (__m128i)((__v8hi)__a == (__v8hi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cmpeq_epi32(__m128i __a, __m128i __b) +{ + return (__m128i)((__v4si)__a == (__v4si)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cmpgt_epi8(__m128i __a, __m128i __b) +{ + /* This function always performs a signed comparison, but __v16qi is a char + which may be signed or unsigned. */ + typedef signed char __v16qs __attribute__((__vector_size__(16))); + return (__m128i)((__v16qs)__a > (__v16qs)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cmpgt_epi16(__m128i __a, __m128i __b) +{ + return (__m128i)((__v8hi)__a > (__v8hi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cmpgt_epi32(__m128i __a, __m128i __b) +{ + return (__m128i)((__v4si)__a > (__v4si)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cmplt_epi8(__m128i __a, __m128i __b) +{ + return _mm_cmpgt_epi8(__b, __a); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cmplt_epi16(__m128i __a, __m128i __b) +{ + return _mm_cmpgt_epi16(__b, __a); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cmplt_epi32(__m128i __a, __m128i __b) +{ + return _mm_cmpgt_epi32(__b, __a); +} + +#ifdef __x86_64__ +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_cvtsi64_sd(__m128d __a, long long __b) +{ + __a[0] = __b; + return __a; +} + +static __inline__ long long __attribute__((__always_inline__, __nodebug__)) +_mm_cvtsd_si64(__m128d __a) +{ + return __builtin_ia32_cvtsd2si64(__a); +} + +static __inline__ long long __attribute__((__always_inline__, __nodebug__)) +_mm_cvttsd_si64(__m128d __a) +{ + return __a[0]; +} +#endif + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cvtepi32_ps(__m128i __a) +{ + return __builtin_ia32_cvtdq2ps((__v4si)__a); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cvtps_epi32(__m128 __a) +{ + return (__m128i)__builtin_ia32_cvtps2dq(__a); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cvttps_epi32(__m128 __a) +{ + return (__m128i)__builtin_ia32_cvttps2dq(__a); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cvtsi32_si128(int __a) +{ + return (__m128i)(__v4si){ __a, 0, 0, 0 }; +} + +#ifdef __x86_64__ +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cvtsi64_si128(long long __a) +{ + return (__m128i){ __a, 0 }; +} +#endif + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_cvtsi128_si32(__m128i __a) +{ + __v4si __b = (__v4si)__a; + return __b[0]; +} + +#ifdef __x86_64__ +static __inline__ long long __attribute__((__always_inline__, __nodebug__)) +_mm_cvtsi128_si64(__m128i __a) +{ + return __a[0]; +} +#endif + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_load_si128(__m128i const *__p) +{ + return *__p; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_loadu_si128(__m128i const *__p) +{ + struct __loadu_si128 { + __m128i __v; + } __attribute__((packed, may_alias)); + return ((struct __loadu_si128*)__p)->__v; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_loadl_epi64(__m128i const *__p) +{ + struct __mm_loadl_epi64_struct { + long long __u; + } __attribute__((__packed__, __may_alias__)); + return (__m128i) { ((struct __mm_loadl_epi64_struct*)__p)->__u, 0}; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_set_epi64x(long long q1, long long q0) +{ + return (__m128i){ q0, q1 }; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_set_epi64(__m64 q1, __m64 q0) +{ + return (__m128i){ (long long)q0, (long long)q1 }; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_set_epi32(int i3, int i2, int i1, int i0) +{ + return (__m128i)(__v4si){ i0, i1, i2, i3}; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_set_epi16(short w7, short w6, short w5, short w4, short w3, short w2, short w1, short w0) +{ + return (__m128i)(__v8hi){ w0, w1, w2, w3, w4, w5, w6, w7 }; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_set_epi8(char b15, char b14, char b13, char b12, char b11, char b10, char b9, char b8, char b7, char b6, char b5, char b4, char b3, char b2, char b1, char b0) +{ + return (__m128i)(__v16qi){ b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15 }; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_set1_epi64x(long long __q) +{ + return (__m128i){ __q, __q }; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_set1_epi64(__m64 __q) +{ + return (__m128i){ (long long)__q, (long long)__q }; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_set1_epi32(int __i) +{ + return (__m128i)(__v4si){ __i, __i, __i, __i }; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_set1_epi16(short __w) +{ + return (__m128i)(__v8hi){ __w, __w, __w, __w, __w, __w, __w, __w }; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_set1_epi8(char __b) +{ + return (__m128i)(__v16qi){ __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b }; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_setr_epi64(__m64 q0, __m64 q1) +{ + return (__m128i){ (long long)q0, (long long)q1 }; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_setr_epi32(int i0, int i1, int i2, int i3) +{ + return (__m128i)(__v4si){ i0, i1, i2, i3}; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_setr_epi16(short w0, short w1, short w2, short w3, short w4, short w5, short w6, short w7) +{ + return (__m128i)(__v8hi){ w0, w1, w2, w3, w4, w5, w6, w7 }; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_setr_epi8(char b0, char b1, char b2, char b3, char b4, char b5, char b6, char b7, char b8, char b9, char b10, char b11, char b12, char b13, char b14, char b15) +{ + return (__m128i)(__v16qi){ b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15 }; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_setzero_si128(void) +{ + return (__m128i){ 0LL, 0LL }; +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_store_si128(__m128i *__p, __m128i __b) +{ + *__p = __b; +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_storeu_si128(__m128i *__p, __m128i __b) +{ + __builtin_ia32_storedqu((char *)__p, (__v16qi)__b); +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_maskmoveu_si128(__m128i __d, __m128i __n, char *__p) +{ + __builtin_ia32_maskmovdqu((__v16qi)__d, (__v16qi)__n, __p); +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_storel_epi64(__m128i *__p, __m128i __a) +{ + struct __mm_storel_epi64_struct { + long long __u; + } __attribute__((__packed__, __may_alias__)); + ((struct __mm_storel_epi64_struct*)__p)->__u = __a[0]; +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_stream_pd(double *__p, __m128d __a) +{ + __builtin_ia32_movntpd(__p, __a); +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_stream_si128(__m128i *__p, __m128i __a) +{ + __builtin_ia32_movntdq(__p, __a); +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_stream_si32(int *__p, int __a) +{ + __builtin_ia32_movnti(__p, __a); +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_clflush(void const *__p) +{ + __builtin_ia32_clflush(__p); +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_lfence(void) +{ + __builtin_ia32_lfence(); +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_mfence(void) +{ + __builtin_ia32_mfence(); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_packs_epi16(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_packsswb128((__v8hi)__a, (__v8hi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_packs_epi32(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_packssdw128((__v4si)__a, (__v4si)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_packus_epi16(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_packuswb128((__v8hi)__a, (__v8hi)__b); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_extract_epi16(__m128i __a, int __imm) +{ + __v8hi __b = (__v8hi)__a; + return (unsigned short)__b[__imm]; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_insert_epi16(__m128i __a, int __b, int __imm) +{ + __v8hi __c = (__v8hi)__a; + __c[__imm & 7] = __b; + return (__m128i)__c; +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_movemask_epi8(__m128i __a) +{ + return __builtin_ia32_pmovmskb128((__v16qi)__a); +} + +#define _mm_shuffle_epi32(a, imm) __extension__ ({ \ + __m128i __a = (a); \ + (__m128i)__builtin_shufflevector((__v4si)__a, (__v4si) _mm_set1_epi32(0), \ + (imm) & 0x3, ((imm) & 0xc) >> 2, \ + ((imm) & 0x30) >> 4, ((imm) & 0xc0) >> 6); }) + +#define _mm_shufflelo_epi16(a, imm) __extension__ ({ \ + __m128i __a = (a); \ + (__m128i)__builtin_shufflevector((__v8hi)__a, (__v8hi) _mm_set1_epi16(0), \ + (imm) & 0x3, ((imm) & 0xc) >> 2, \ + ((imm) & 0x30) >> 4, ((imm) & 0xc0) >> 6, \ + 4, 5, 6, 7); }) + +#define _mm_shufflehi_epi16(a, imm) __extension__ ({ \ + __m128i __a = (a); \ + (__m128i)__builtin_shufflevector((__v8hi)__a, (__v8hi) _mm_set1_epi16(0), \ + 0, 1, 2, 3, \ + 4 + (((imm) & 0x03) >> 0), \ + 4 + (((imm) & 0x0c) >> 2), \ + 4 + (((imm) & 0x30) >> 4), \ + 4 + (((imm) & 0xc0) >> 6)); }) + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_unpackhi_epi8(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_shufflevector((__v16qi)__a, (__v16qi)__b, 8, 16+8, 9, 16+9, 10, 16+10, 11, 16+11, 12, 16+12, 13, 16+13, 14, 16+14, 15, 16+15); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_unpackhi_epi16(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_shufflevector((__v8hi)__a, (__v8hi)__b, 4, 8+4, 5, 8+5, 6, 8+6, 7, 8+7); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_unpackhi_epi32(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_shufflevector((__v4si)__a, (__v4si)__b, 2, 4+2, 3, 4+3); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_unpackhi_epi64(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_shufflevector(__a, __b, 1, 2+1); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_unpacklo_epi8(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_shufflevector((__v16qi)__a, (__v16qi)__b, 0, 16+0, 1, 16+1, 2, 16+2, 3, 16+3, 4, 16+4, 5, 16+5, 6, 16+6, 7, 16+7); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_unpacklo_epi16(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_shufflevector((__v8hi)__a, (__v8hi)__b, 0, 8+0, 1, 8+1, 2, 8+2, 3, 8+3); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_unpacklo_epi32(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_shufflevector((__v4si)__a, (__v4si)__b, 0, 4+0, 1, 4+1); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_unpacklo_epi64(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_shufflevector(__a, __b, 0, 2+0); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_movepi64_pi64(__m128i __a) +{ + return (__m64)__a[0]; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_movpi64_pi64(__m64 __a) +{ + return (__m128i){ (long long)__a, 0 }; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_move_epi64(__m128i __a) +{ + return __builtin_shufflevector(__a, (__m128i){ 0 }, 0, 2); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_unpackhi_pd(__m128d __a, __m128d __b) +{ + return __builtin_shufflevector(__a, __b, 1, 2+1); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_unpacklo_pd(__m128d __a, __m128d __b) +{ + return __builtin_shufflevector(__a, __b, 0, 2+0); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_movemask_pd(__m128d __a) +{ + return __builtin_ia32_movmskpd(__a); +} + +#define _mm_shuffle_pd(a, b, i) __extension__ ({ \ + __m128d __a = (a); \ + __m128d __b = (b); \ + __builtin_shufflevector(__a, __b, (i) & 1, (((i) & 2) >> 1) + 2); }) + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_castpd_ps(__m128d __a) +{ + return (__m128)__a; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_castpd_si128(__m128d __a) +{ + return (__m128i)__a; +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_castps_pd(__m128 __a) +{ + return (__m128d)__a; +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_castps_si128(__m128 __a) +{ + return (__m128i)__a; +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_castsi128_ps(__m128i __a) +{ + return (__m128)__a; +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_castsi128_pd(__m128i __a) +{ + return (__m128d)__a; +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_pause(void) +{ + __asm__ volatile ("pause"); +} + +#define _MM_SHUFFLE2(x, y) (((x) << 1) | (y)) + +#endif /* __SSE2__ */ + +#endif /* __EMMINTRIN_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/f16cintrin.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/f16cintrin.h new file mode 100644 index 0000000..a6d7812 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/f16cintrin.h @@ -0,0 +1,58 @@ +/*===---- f16cintrin.h - F16C intrinsics ---------------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining __a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#if !defined __X86INTRIN_H && !defined __IMMINTRIN_H +#error "Never use directly; include instead." +#endif + +#ifndef __F16C__ +# error "F16C instruction is not enabled" +#endif /* __F16C__ */ + +#ifndef __F16CINTRIN_H +#define __F16CINTRIN_H + +typedef float __v8sf __attribute__ ((__vector_size__ (32))); +typedef float __m256 __attribute__ ((__vector_size__ (32))); + +#define _mm_cvtps_ph(a, imm) __extension__ ({ \ + __m128 __a = (a); \ + (__m128i)__builtin_ia32_vcvtps2ph((__v4sf)__a, (imm)); }) + +#define _mm256_cvtps_ph(a, imm) __extension__ ({ \ + __m256 __a = (a); \ + (__m128i)__builtin_ia32_vcvtps2ph256((__v8sf)__a, (imm)); }) + +static __inline __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cvtph_ps(__m128i __a) +{ + return (__m128)__builtin_ia32_vcvtph2ps((__v8hi)__a); +} + +static __inline __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_cvtph_ps(__m128i __a) +{ + return (__m256)__builtin_ia32_vcvtph2ps256((__v8hi)__a); +} + +#endif /* __F16CINTRIN_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/float.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/float.h new file mode 100644 index 0000000..2cb13d3 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/float.h @@ -0,0 +1,124 @@ +/*===---- float.h - Characteristics of floating point types ----------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef __FLOAT_H +#define __FLOAT_H + +/* If we're on MinGW, fall back to the system's float.h, which might have + * additional definitions provided for Windows. + * For more details see http://msdn.microsoft.com/en-us/library/y0ybw9fy.aspx + */ +#if (defined(__MINGW32__) || defined(_MSC_VER)) && \ + defined(__has_include_next) && __has_include_next() +# include_next + +/* Undefine anything that we'll be redefining below. */ +# undef FLT_EVAL_METHOD +# undef FLT_ROUNDS +# undef FLT_RADIX +# undef FLT_MANT_DIG +# undef DBL_MANT_DIG +# undef LDBL_MANT_DIG +# undef DECIMAL_DIG +# undef FLT_DIG +# undef DBL_DIG +# undef LDBL_DIG +# undef FLT_MIN_EXP +# undef DBL_MIN_EXP +# undef LDBL_MIN_EXP +# undef FLT_MIN_10_EXP +# undef DBL_MIN_10_EXP +# undef LDBL_MIN_10_EXP +# undef FLT_MAX_EXP +# undef DBL_MAX_EXP +# undef LDBL_MAX_EXP +# undef FLT_MAX_10_EXP +# undef DBL_MAX_10_EXP +# undef LDBL_MAX_10_EXP +# undef FLT_MAX +# undef DBL_MAX +# undef LDBL_MAX +# undef FLT_EPSILON +# undef DBL_EPSILON +# undef LDBL_EPSILON +# undef FLT_MIN +# undef DBL_MIN +# undef LDBL_MIN +# if __STDC_VERSION__ >= 201112L || !defined(__STRICT_ANSI__) +# undef FLT_TRUE_MIN +# undef DBL_TRUE_MIN +# undef LDBL_TRUE_MIN +# endif +#endif + +/* Characteristics of floating point types, C99 5.2.4.2.2 */ + +#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__ +#define FLT_ROUNDS (__builtin_flt_rounds()) +#define FLT_RADIX __FLT_RADIX__ + +#define FLT_MANT_DIG __FLT_MANT_DIG__ +#define DBL_MANT_DIG __DBL_MANT_DIG__ +#define LDBL_MANT_DIG __LDBL_MANT_DIG__ + +#define DECIMAL_DIG __DECIMAL_DIG__ + +#define FLT_DIG __FLT_DIG__ +#define DBL_DIG __DBL_DIG__ +#define LDBL_DIG __LDBL_DIG__ + +#define FLT_MIN_EXP __FLT_MIN_EXP__ +#define DBL_MIN_EXP __DBL_MIN_EXP__ +#define LDBL_MIN_EXP __LDBL_MIN_EXP__ + +#define FLT_MIN_10_EXP __FLT_MIN_10_EXP__ +#define DBL_MIN_10_EXP __DBL_MIN_10_EXP__ +#define LDBL_MIN_10_EXP __LDBL_MIN_10_EXP__ + +#define FLT_MAX_EXP __FLT_MAX_EXP__ +#define DBL_MAX_EXP __DBL_MAX_EXP__ +#define LDBL_MAX_EXP __LDBL_MAX_EXP__ + +#define FLT_MAX_10_EXP __FLT_MAX_10_EXP__ +#define DBL_MAX_10_EXP __DBL_MAX_10_EXP__ +#define LDBL_MAX_10_EXP __LDBL_MAX_10_EXP__ + +#define FLT_MAX __FLT_MAX__ +#define DBL_MAX __DBL_MAX__ +#define LDBL_MAX __LDBL_MAX__ + +#define FLT_EPSILON __FLT_EPSILON__ +#define DBL_EPSILON __DBL_EPSILON__ +#define LDBL_EPSILON __LDBL_EPSILON__ + +#define FLT_MIN __FLT_MIN__ +#define DBL_MIN __DBL_MIN__ +#define LDBL_MIN __LDBL_MIN__ + +#if __STDC_VERSION__ >= 201112L || !defined(__STRICT_ANSI__) +# define FLT_TRUE_MIN __FLT_DENORM_MIN__ +# define DBL_TRUE_MIN __DBL_DENORM_MIN__ +# define LDBL_TRUE_MIN __LDBL_DENORM_MIN__ +#endif + +#endif /* __FLOAT_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/fma4intrin.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/fma4intrin.h new file mode 100644 index 0000000..c30920d --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/fma4intrin.h @@ -0,0 +1,231 @@ +/*===---- fma4intrin.h - FMA4 intrinsics -----------------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef __X86INTRIN_H +#error "Never use directly; include instead." +#endif + +#ifndef __FMA4INTRIN_H +#define __FMA4INTRIN_H + +#ifndef __FMA4__ +# error "FMA4 instruction set is not enabled" +#else + +#include + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_macc_ps(__m128 __A, __m128 __B, __m128 __C) +{ + return (__m128)__builtin_ia32_vfmaddps(__A, __B, __C); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_macc_pd(__m128d __A, __m128d __B, __m128d __C) +{ + return (__m128d)__builtin_ia32_vfmaddpd(__A, __B, __C); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_macc_ss(__m128 __A, __m128 __B, __m128 __C) +{ + return (__m128)__builtin_ia32_vfmaddss(__A, __B, __C); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_macc_sd(__m128d __A, __m128d __B, __m128d __C) +{ + return (__m128d)__builtin_ia32_vfmaddsd(__A, __B, __C); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_msub_ps(__m128 __A, __m128 __B, __m128 __C) +{ + return (__m128)__builtin_ia32_vfmsubps(__A, __B, __C); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_msub_pd(__m128d __A, __m128d __B, __m128d __C) +{ + return (__m128d)__builtin_ia32_vfmsubpd(__A, __B, __C); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_msub_ss(__m128 __A, __m128 __B, __m128 __C) +{ + return (__m128)__builtin_ia32_vfmsubss(__A, __B, __C); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_msub_sd(__m128d __A, __m128d __B, __m128d __C) +{ + return (__m128d)__builtin_ia32_vfmsubsd(__A, __B, __C); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_nmacc_ps(__m128 __A, __m128 __B, __m128 __C) +{ + return (__m128)__builtin_ia32_vfnmaddps(__A, __B, __C); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_nmacc_pd(__m128d __A, __m128d __B, __m128d __C) +{ + return (__m128d)__builtin_ia32_vfnmaddpd(__A, __B, __C); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_nmacc_ss(__m128 __A, __m128 __B, __m128 __C) +{ + return (__m128)__builtin_ia32_vfnmaddss(__A, __B, __C); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_nmacc_sd(__m128d __A, __m128d __B, __m128d __C) +{ + return (__m128d)__builtin_ia32_vfnmaddsd(__A, __B, __C); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_nmsub_ps(__m128 __A, __m128 __B, __m128 __C) +{ + return (__m128)__builtin_ia32_vfnmsubps(__A, __B, __C); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_nmsub_pd(__m128d __A, __m128d __B, __m128d __C) +{ + return (__m128d)__builtin_ia32_vfnmsubpd(__A, __B, __C); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_nmsub_ss(__m128 __A, __m128 __B, __m128 __C) +{ + return (__m128)__builtin_ia32_vfnmsubss(__A, __B, __C); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_nmsub_sd(__m128d __A, __m128d __B, __m128d __C) +{ + return (__m128d)__builtin_ia32_vfnmsubsd(__A, __B, __C); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_maddsub_ps(__m128 __A, __m128 __B, __m128 __C) +{ + return (__m128)__builtin_ia32_vfmaddsubps(__A, __B, __C); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_maddsub_pd(__m128d __A, __m128d __B, __m128d __C) +{ + return (__m128d)__builtin_ia32_vfmaddsubpd(__A, __B, __C); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_msubadd_ps(__m128 __A, __m128 __B, __m128 __C) +{ + return (__m128)__builtin_ia32_vfmsubaddps(__A, __B, __C); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_msubadd_pd(__m128d __A, __m128d __B, __m128d __C) +{ + return (__m128d)__builtin_ia32_vfmsubaddpd(__A, __B, __C); +} + +static __inline__ __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_macc_ps(__m256 __A, __m256 __B, __m256 __C) +{ + return (__m256)__builtin_ia32_vfmaddps256(__A, __B, __C); +} + +static __inline__ __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_macc_pd(__m256d __A, __m256d __B, __m256d __C) +{ + return (__m256d)__builtin_ia32_vfmaddpd256(__A, __B, __C); +} + +static __inline__ __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_msub_ps(__m256 __A, __m256 __B, __m256 __C) +{ + return (__m256)__builtin_ia32_vfmsubps256(__A, __B, __C); +} + +static __inline__ __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_msub_pd(__m256d __A, __m256d __B, __m256d __C) +{ + return (__m256d)__builtin_ia32_vfmsubpd256(__A, __B, __C); +} + +static __inline__ __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_nmacc_ps(__m256 __A, __m256 __B, __m256 __C) +{ + return (__m256)__builtin_ia32_vfnmaddps256(__A, __B, __C); +} + +static __inline__ __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_nmacc_pd(__m256d __A, __m256d __B, __m256d __C) +{ + return (__m256d)__builtin_ia32_vfnmaddpd256(__A, __B, __C); +} + +static __inline__ __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_nmsub_ps(__m256 __A, __m256 __B, __m256 __C) +{ + return (__m256)__builtin_ia32_vfnmsubps256(__A, __B, __C); +} + +static __inline__ __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_nmsub_pd(__m256d __A, __m256d __B, __m256d __C) +{ + return (__m256d)__builtin_ia32_vfnmsubpd256(__A, __B, __C); +} + +static __inline__ __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_maddsub_ps(__m256 __A, __m256 __B, __m256 __C) +{ + return (__m256)__builtin_ia32_vfmaddsubps256(__A, __B, __C); +} + +static __inline__ __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_maddsub_pd(__m256d __A, __m256d __B, __m256d __C) +{ + return (__m256d)__builtin_ia32_vfmaddsubpd256(__A, __B, __C); +} + +static __inline__ __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_msubadd_ps(__m256 __A, __m256 __B, __m256 __C) +{ + return (__m256)__builtin_ia32_vfmsubaddps256(__A, __B, __C); +} + +static __inline__ __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_msubadd_pd(__m256d __A, __m256d __B, __m256d __C) +{ + return (__m256d)__builtin_ia32_vfmsubaddpd256(__A, __B, __C); +} + +#endif /* __FMA4__ */ + +#endif /* __FMA4INTRIN_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/fmaintrin.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/fmaintrin.h new file mode 100644 index 0000000..6bfd5a8 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/fmaintrin.h @@ -0,0 +1,229 @@ +/*===---- fma4intrin.h - FMA4 intrinsics -----------------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef __IMMINTRIN_H +#error "Never use directly; include instead." +#endif + +#ifndef __FMAINTRIN_H +#define __FMAINTRIN_H + +#ifndef __FMA__ +# error "FMA instruction set is not enabled" +#else + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_fmadd_ps(__m128 __A, __m128 __B, __m128 __C) +{ + return (__m128)__builtin_ia32_vfmaddps(__A, __B, __C); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_fmadd_pd(__m128d __A, __m128d __B, __m128d __C) +{ + return (__m128d)__builtin_ia32_vfmaddpd(__A, __B, __C); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_fmadd_ss(__m128 __A, __m128 __B, __m128 __C) +{ + return (__m128)__builtin_ia32_vfmaddss(__A, __B, __C); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_fmadd_sd(__m128d __A, __m128d __B, __m128d __C) +{ + return (__m128d)__builtin_ia32_vfmaddsd(__A, __B, __C); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_fmsub_ps(__m128 __A, __m128 __B, __m128 __C) +{ + return (__m128)__builtin_ia32_vfmsubps(__A, __B, __C); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_fmsub_pd(__m128d __A, __m128d __B, __m128d __C) +{ + return (__m128d)__builtin_ia32_vfmsubpd(__A, __B, __C); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_fmsub_ss(__m128 __A, __m128 __B, __m128 __C) +{ + return (__m128)__builtin_ia32_vfmsubss(__A, __B, __C); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_fmsub_sd(__m128d __A, __m128d __B, __m128d __C) +{ + return (__m128d)__builtin_ia32_vfmsubsd(__A, __B, __C); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_fnmadd_ps(__m128 __A, __m128 __B, __m128 __C) +{ + return (__m128)__builtin_ia32_vfnmaddps(__A, __B, __C); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_fnmadd_pd(__m128d __A, __m128d __B, __m128d __C) +{ + return (__m128d)__builtin_ia32_vfnmaddpd(__A, __B, __C); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_fnmadd_ss(__m128 __A, __m128 __B, __m128 __C) +{ + return (__m128)__builtin_ia32_vfnmaddss(__A, __B, __C); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_fnmadd_sd(__m128d __A, __m128d __B, __m128d __C) +{ + return (__m128d)__builtin_ia32_vfnmaddsd(__A, __B, __C); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_fnmsub_ps(__m128 __A, __m128 __B, __m128 __C) +{ + return (__m128)__builtin_ia32_vfnmsubps(__A, __B, __C); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_fnmsub_pd(__m128d __A, __m128d __B, __m128d __C) +{ + return (__m128d)__builtin_ia32_vfnmsubpd(__A, __B, __C); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_fnmsub_ss(__m128 __A, __m128 __B, __m128 __C) +{ + return (__m128)__builtin_ia32_vfnmsubss(__A, __B, __C); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_fnmsub_sd(__m128d __A, __m128d __B, __m128d __C) +{ + return (__m128d)__builtin_ia32_vfnmsubsd(__A, __B, __C); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_fmaddsub_ps(__m128 __A, __m128 __B, __m128 __C) +{ + return (__m128)__builtin_ia32_vfmaddsubps(__A, __B, __C); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_fmaddsub_pd(__m128d __A, __m128d __B, __m128d __C) +{ + return (__m128d)__builtin_ia32_vfmaddsubpd(__A, __B, __C); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_fmsubadd_ps(__m128 __A, __m128 __B, __m128 __C) +{ + return (__m128)__builtin_ia32_vfmsubaddps(__A, __B, __C); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_fmsubadd_pd(__m128d __A, __m128d __B, __m128d __C) +{ + return (__m128d)__builtin_ia32_vfmsubaddpd(__A, __B, __C); +} + +static __inline__ __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_fmadd_ps(__m256 __A, __m256 __B, __m256 __C) +{ + return (__m256)__builtin_ia32_vfmaddps256(__A, __B, __C); +} + +static __inline__ __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_fmadd_pd(__m256d __A, __m256d __B, __m256d __C) +{ + return (__m256d)__builtin_ia32_vfmaddpd256(__A, __B, __C); +} + +static __inline__ __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_fmsub_ps(__m256 __A, __m256 __B, __m256 __C) +{ + return (__m256)__builtin_ia32_vfmsubps256(__A, __B, __C); +} + +static __inline__ __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_fmsub_pd(__m256d __A, __m256d __B, __m256d __C) +{ + return (__m256d)__builtin_ia32_vfmsubpd256(__A, __B, __C); +} + +static __inline__ __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_fnmadd_ps(__m256 __A, __m256 __B, __m256 __C) +{ + return (__m256)__builtin_ia32_vfnmaddps256(__A, __B, __C); +} + +static __inline__ __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_fnmadd_pd(__m256d __A, __m256d __B, __m256d __C) +{ + return (__m256d)__builtin_ia32_vfnmaddpd256(__A, __B, __C); +} + +static __inline__ __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_fnmsub_ps(__m256 __A, __m256 __B, __m256 __C) +{ + return (__m256)__builtin_ia32_vfnmsubps256(__A, __B, __C); +} + +static __inline__ __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_fnmsub_pd(__m256d __A, __m256d __B, __m256d __C) +{ + return (__m256d)__builtin_ia32_vfnmsubpd256(__A, __B, __C); +} + +static __inline__ __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_fmaddsub_ps(__m256 __A, __m256 __B, __m256 __C) +{ + return (__m256)__builtin_ia32_vfmaddsubps256(__A, __B, __C); +} + +static __inline__ __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_fmaddsub_pd(__m256d __A, __m256d __B, __m256d __C) +{ + return (__m256d)__builtin_ia32_vfmaddsubpd256(__A, __B, __C); +} + +static __inline__ __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_fmsubadd_ps(__m256 __A, __m256 __B, __m256 __C) +{ + return (__m256)__builtin_ia32_vfmsubaddps256(__A, __B, __C); +} + +static __inline__ __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_fmsubadd_pd(__m256d __A, __m256d __B, __m256d __C) +{ + return (__m256d)__builtin_ia32_vfmsubaddpd256(__A, __B, __C); +} + +#endif /* __FMA__ */ + +#endif /* __FMAINTRIN_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/immintrin.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/immintrin.h new file mode 100644 index 0000000..fea7c3b --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/immintrin.h @@ -0,0 +1,114 @@ +/*===---- immintrin.h - Intel intrinsics -----------------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef __IMMINTRIN_H +#define __IMMINTRIN_H + +#ifdef __MMX__ +#include +#endif + +#ifdef __SSE__ +#include +#endif + +#ifdef __SSE2__ +#include +#endif + +#ifdef __SSE3__ +#include +#endif + +#ifdef __SSSE3__ +#include +#endif + +#if defined (__SSE4_2__) || defined (__SSE4_1__) +#include +#endif + +#if defined (__AES__) +#include +#endif + +#ifdef __AVX__ +#include +#endif + +#ifdef __AVX2__ +#include +#endif + +#ifdef __BMI__ +#include +#endif + +#ifdef __BMI2__ +#include +#endif + +#ifdef __LZCNT__ +#include +#endif + +#ifdef __FMA__ +#include +#endif + +#ifdef __RDRND__ +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_rdrand16_step(unsigned short *__p) +{ + return __builtin_ia32_rdrand16_step(__p); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_rdrand32_step(unsigned int *__p) +{ + return __builtin_ia32_rdrand32_step(__p); +} + +#ifdef __x86_64__ +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_rdrand64_step(unsigned long long *__p) +{ + return __builtin_ia32_rdrand64_step(__p); +} +#endif +#endif /* __RDRND__ */ + +#ifdef __RTM__ +#include +#endif + +/* FIXME: check __HLE__ as well when HLE is supported. */ +#if defined (__RTM__) +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_xtest(void) +{ + return __builtin_ia32_xtest(); +} +#endif + +#endif /* __IMMINTRIN_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/iso646.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/iso646.h new file mode 100644 index 0000000..dca13c5 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/iso646.h @@ -0,0 +1,43 @@ +/*===---- iso646.h - Standard header for alternate spellings of operators---=== + * + * Copyright (c) 2008 Eli Friedman + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef __ISO646_H +#define __ISO646_H + +#ifndef __cplusplus +#define and && +#define and_eq &= +#define bitand & +#define bitor | +#define compl ~ +#define not ! +#define not_eq != +#define or || +#define or_eq |= +#define xor ^ +#define xor_eq ^= +#endif + +#endif /* __ISO646_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/limits.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/limits.h new file mode 100644 index 0000000..ecd09a4 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/limits.h @@ -0,0 +1,117 @@ +/*===---- limits.h - Standard header for integer sizes --------------------===*\ + * + * Copyright (c) 2009 Chris Lattner + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * +\*===----------------------------------------------------------------------===*/ + +#ifndef __CLANG_LIMITS_H +#define __CLANG_LIMITS_H + +/* The system's limits.h may, in turn, try to #include_next GCC's limits.h. + Avert this #include_next madness. */ +#if defined __GNUC__ && !defined _GCC_LIMITS_H_ +#define _GCC_LIMITS_H_ +#endif + +/* System headers include a number of constants from POSIX in . + Include it if we're hosted. */ +#if __STDC_HOSTED__ && \ + defined(__has_include_next) && __has_include_next() +#include_next +#endif + +/* Many system headers try to "help us out" by defining these. No really, we + know how big each datatype is. */ +#undef SCHAR_MIN +#undef SCHAR_MAX +#undef UCHAR_MAX +#undef SHRT_MIN +#undef SHRT_MAX +#undef USHRT_MAX +#undef INT_MIN +#undef INT_MAX +#undef UINT_MAX +#undef LONG_MIN +#undef LONG_MAX +#undef ULONG_MAX + +#undef CHAR_BIT +#undef CHAR_MIN +#undef CHAR_MAX + +/* C90/99 5.2.4.2.1 */ +#define SCHAR_MAX __SCHAR_MAX__ +#define SHRT_MAX __SHRT_MAX__ +#define INT_MAX __INT_MAX__ +#define LONG_MAX __LONG_MAX__ + +#define SCHAR_MIN (-__SCHAR_MAX__-1) +#define SHRT_MIN (-__SHRT_MAX__ -1) +#define INT_MIN (-__INT_MAX__ -1) +#define LONG_MIN (-__LONG_MAX__ -1L) + +#define UCHAR_MAX (__SCHAR_MAX__*2 +1) +#define USHRT_MAX (__SHRT_MAX__ *2 +1) +#define UINT_MAX (__INT_MAX__ *2U +1U) +#define ULONG_MAX (__LONG_MAX__ *2UL+1UL) + +#ifndef MB_LEN_MAX +#define MB_LEN_MAX 1 +#endif + +#define CHAR_BIT __CHAR_BIT__ + +#ifdef __CHAR_UNSIGNED__ /* -funsigned-char */ +#define CHAR_MIN 0 +#define CHAR_MAX UCHAR_MAX +#else +#define CHAR_MIN SCHAR_MIN +#define CHAR_MAX __SCHAR_MAX__ +#endif + +/* C99 5.2.4.2.1: Added long long. */ +#if __STDC_VERSION__ >= 199901 + +#undef LLONG_MIN +#undef LLONG_MAX +#undef ULLONG_MAX + +#define LLONG_MAX __LONG_LONG_MAX__ +#define LLONG_MIN (-__LONG_LONG_MAX__-1LL) +#define ULLONG_MAX (__LONG_LONG_MAX__*2ULL+1ULL) +#endif + +/* LONG_LONG_MIN/LONG_LONG_MAX/ULONG_LONG_MAX are a GNU extension. It's too bad + that we don't have something like #pragma poison that could be used to + deprecate a macro - the code should just use LLONG_MAX and friends. + */ +#if defined(__GNU_LIBRARY__) ? defined(__USE_GNU) : !defined(__STRICT_ANSI__) + +#undef LONG_LONG_MIN +#undef LONG_LONG_MAX +#undef ULONG_LONG_MAX + +#define LONG_LONG_MAX __LONG_LONG_MAX__ +#define LONG_LONG_MIN (-__LONG_LONG_MAX__-1LL) +#define ULONG_LONG_MAX (__LONG_LONG_MAX__*2ULL+1ULL) +#endif + +#endif /* __CLANG_LIMITS_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/lzcntintrin.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/lzcntintrin.h new file mode 100644 index 0000000..62ab5ca --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/lzcntintrin.h @@ -0,0 +1,55 @@ +/*===---- lzcntintrin.h - LZCNT intrinsics ---------------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#if !defined __X86INTRIN_H && !defined __IMMINTRIN_H +#error "Never use directly; include instead." +#endif + +#ifndef __LZCNT__ +# error "LZCNT instruction is not enabled" +#endif /* __LZCNT__ */ + +#ifndef __LZCNTINTRIN_H +#define __LZCNTINTRIN_H + +static __inline__ unsigned short __attribute__((__always_inline__, __nodebug__)) +__lzcnt16(unsigned short __X) +{ + return __builtin_clzs(__X); +} + +static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__)) +__lzcnt32(unsigned int __X) +{ + return __builtin_clz(__X); +} + +#ifdef __x86_64__ +static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__)) +__lzcnt64(unsigned long long __X) +{ + return __builtin_clzll(__X); +} +#endif + +#endif /* __LZCNTINTRIN_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/mm3dnow.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/mm3dnow.h new file mode 100644 index 0000000..5242d99 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/mm3dnow.h @@ -0,0 +1,162 @@ +/*===---- mm3dnow.h - 3DNow! intrinsics ------------------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef _MM3DNOW_H_INCLUDED +#define _MM3DNOW_H_INCLUDED + +#include +#include + +typedef float __v2sf __attribute__((__vector_size__(8))); + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_m_femms() { + __builtin_ia32_femms(); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_m_pavgusb(__m64 __m1, __m64 __m2) { + return (__m64)__builtin_ia32_pavgusb((__v8qi)__m1, (__v8qi)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_m_pf2id(__m64 __m) { + return (__m64)__builtin_ia32_pf2id((__v2sf)__m); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_m_pfacc(__m64 __m1, __m64 __m2) { + return (__m64)__builtin_ia32_pfacc((__v2sf)__m1, (__v2sf)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_m_pfadd(__m64 __m1, __m64 __m2) { + return (__m64)__builtin_ia32_pfadd((__v2sf)__m1, (__v2sf)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_m_pfcmpeq(__m64 __m1, __m64 __m2) { + return (__m64)__builtin_ia32_pfcmpeq((__v2sf)__m1, (__v2sf)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_m_pfcmpge(__m64 __m1, __m64 __m2) { + return (__m64)__builtin_ia32_pfcmpge((__v2sf)__m1, (__v2sf)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_m_pfcmpgt(__m64 __m1, __m64 __m2) { + return (__m64)__builtin_ia32_pfcmpgt((__v2sf)__m1, (__v2sf)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_m_pfmax(__m64 __m1, __m64 __m2) { + return (__m64)__builtin_ia32_pfmax((__v2sf)__m1, (__v2sf)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_m_pfmin(__m64 __m1, __m64 __m2) { + return (__m64)__builtin_ia32_pfmin((__v2sf)__m1, (__v2sf)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_m_pfmul(__m64 __m1, __m64 __m2) { + return (__m64)__builtin_ia32_pfmul((__v2sf)__m1, (__v2sf)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_m_pfrcp(__m64 __m) { + return (__m64)__builtin_ia32_pfrcp((__v2sf)__m); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_m_pfrcpit1(__m64 __m1, __m64 __m2) { + return (__m64)__builtin_ia32_pfrcpit1((__v2sf)__m1, (__v2sf)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_m_pfrcpit2(__m64 __m1, __m64 __m2) { + return (__m64)__builtin_ia32_pfrcpit2((__v2sf)__m1, (__v2sf)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_m_pfrsqrt(__m64 __m) { + return (__m64)__builtin_ia32_pfrsqrt((__v2sf)__m); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_m_pfrsqrtit1(__m64 __m1, __m64 __m2) { + return (__m64)__builtin_ia32_pfrsqit1((__v2sf)__m1, (__v2sf)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_m_pfsub(__m64 __m1, __m64 __m2) { + return (__m64)__builtin_ia32_pfsub((__v2sf)__m1, (__v2sf)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_m_pfsubr(__m64 __m1, __m64 __m2) { + return (__m64)__builtin_ia32_pfsubr((__v2sf)__m1, (__v2sf)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_m_pi2fd(__m64 __m) { + return (__m64)__builtin_ia32_pi2fd((__v2si)__m); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_m_pmulhrw(__m64 __m1, __m64 __m2) { + return (__m64)__builtin_ia32_pmulhrw((__v4hi)__m1, (__v4hi)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_m_pf2iw(__m64 __m) { + return (__m64)__builtin_ia32_pf2iw((__v2sf)__m); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_m_pfnacc(__m64 __m1, __m64 __m2) { + return (__m64)__builtin_ia32_pfnacc((__v2sf)__m1, (__v2sf)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_m_pfpnacc(__m64 __m1, __m64 __m2) { + return (__m64)__builtin_ia32_pfpnacc((__v2sf)__m1, (__v2sf)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_m_pi2fw(__m64 __m) { + return (__m64)__builtin_ia32_pi2fw((__v2si)__m); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_m_pswapdsf(__m64 __m) { + return (__m64)__builtin_ia32_pswapdsf((__v2sf)__m); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_m_pswapdsi(__m64 __m) { + return (__m64)__builtin_ia32_pswapdsi((__v2si)__m); +} + +#endif diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/mm_malloc.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/mm_malloc.h new file mode 100644 index 0000000..305afd3 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/mm_malloc.h @@ -0,0 +1,75 @@ +/*===---- mm_malloc.h - Allocating and Freeing Aligned Memory Blocks -------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef __MM_MALLOC_H +#define __MM_MALLOC_H + +#include + +#ifdef _WIN32 +#include +#else +#ifndef __cplusplus +extern int posix_memalign(void **__memptr, size_t __alignment, size_t __size); +#else +// Some systems (e.g. those with GNU libc) declare posix_memalign with an +// exception specifier. Via an "egregious workaround" in +// Sema::CheckEquivalentExceptionSpec, Clang accepts the following as a valid +// redeclaration of glibc's declaration. +extern "C" int posix_memalign(void **__memptr, size_t __alignment, size_t __size); +#endif +#endif + +#if !(defined(_WIN32) && defined(_mm_malloc)) +static __inline__ void *__attribute__((__always_inline__, __nodebug__, + __malloc__)) +_mm_malloc(size_t __size, size_t __align) +{ + if (__align == 1) { + return malloc(__size); + } + + if (!(__align & (__align - 1)) && __align < sizeof(void *)) + __align = sizeof(void *); + + void *__mallocedMemory; +#if defined(__MINGW32__) + __mallocedMemory = __mingw_aligned_malloc(__size, __align); +#elif defined(_WIN32) + __mallocedMemory = _aligned_malloc(__size, __align); +#else + if (posix_memalign(&__mallocedMemory, __align, __size)) + return 0; +#endif + + return __mallocedMemory; +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_free(void *__p) +{ + free(__p); +} +#endif + +#endif /* __MM_MALLOC_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/mmintrin.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/mmintrin.h new file mode 100644 index 0000000..986870a --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/mmintrin.h @@ -0,0 +1,503 @@ +/*===---- mmintrin.h - MMX intrinsics --------------------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef __MMINTRIN_H +#define __MMINTRIN_H + +#ifndef __MMX__ +#error "MMX instruction set not enabled" +#else + +typedef long long __m64 __attribute__((__vector_size__(8))); + +typedef int __v2si __attribute__((__vector_size__(8))); +typedef short __v4hi __attribute__((__vector_size__(8))); +typedef char __v8qi __attribute__((__vector_size__(8))); + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_empty(void) +{ + __builtin_ia32_emms(); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_cvtsi32_si64(int __i) +{ + return (__m64)__builtin_ia32_vec_init_v2si(__i, 0); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_cvtsi64_si32(__m64 __m) +{ + return __builtin_ia32_vec_ext_v2si((__v2si)__m, 0); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_cvtsi64_m64(long long __i) +{ + return (__m64)__i; +} + +static __inline__ long long __attribute__((__always_inline__, __nodebug__)) +_mm_cvtm64_si64(__m64 __m) +{ + return (long long)__m; +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_packs_pi16(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_packsswb((__v4hi)__m1, (__v4hi)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_packs_pi32(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_packssdw((__v2si)__m1, (__v2si)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_packs_pu16(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_packuswb((__v4hi)__m1, (__v4hi)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_unpackhi_pi8(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_punpckhbw((__v8qi)__m1, (__v8qi)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_unpackhi_pi16(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_punpckhwd((__v4hi)__m1, (__v4hi)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_unpackhi_pi32(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_punpckhdq((__v2si)__m1, (__v2si)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_unpacklo_pi8(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_punpcklbw((__v8qi)__m1, (__v8qi)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_unpacklo_pi16(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_punpcklwd((__v4hi)__m1, (__v4hi)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_unpacklo_pi32(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_punpckldq((__v2si)__m1, (__v2si)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_add_pi8(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_paddb((__v8qi)__m1, (__v8qi)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_add_pi16(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_paddw((__v4hi)__m1, (__v4hi)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_add_pi32(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_paddd((__v2si)__m1, (__v2si)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_adds_pi8(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_paddsb((__v8qi)__m1, (__v8qi)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_adds_pi16(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_paddsw((__v4hi)__m1, (__v4hi)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_adds_pu8(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_paddusb((__v8qi)__m1, (__v8qi)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_adds_pu16(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_paddusw((__v4hi)__m1, (__v4hi)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_sub_pi8(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_psubb((__v8qi)__m1, (__v8qi)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_sub_pi16(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_psubw((__v4hi)__m1, (__v4hi)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_sub_pi32(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_psubd((__v2si)__m1, (__v2si)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_subs_pi8(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_psubsb((__v8qi)__m1, (__v8qi)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_subs_pi16(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_psubsw((__v4hi)__m1, (__v4hi)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_subs_pu8(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_psubusb((__v8qi)__m1, (__v8qi)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_subs_pu16(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_psubusw((__v4hi)__m1, (__v4hi)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_madd_pi16(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_pmaddwd((__v4hi)__m1, (__v4hi)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_mulhi_pi16(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_pmulhw((__v4hi)__m1, (__v4hi)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_mullo_pi16(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_pmullw((__v4hi)__m1, (__v4hi)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_sll_pi16(__m64 __m, __m64 __count) +{ + return (__m64)__builtin_ia32_psllw((__v4hi)__m, __count); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_slli_pi16(__m64 __m, int __count) +{ + return (__m64)__builtin_ia32_psllwi((__v4hi)__m, __count); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_sll_pi32(__m64 __m, __m64 __count) +{ + return (__m64)__builtin_ia32_pslld((__v2si)__m, __count); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_slli_pi32(__m64 __m, int __count) +{ + return (__m64)__builtin_ia32_pslldi((__v2si)__m, __count); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_sll_si64(__m64 __m, __m64 __count) +{ + return (__m64)__builtin_ia32_psllq(__m, __count); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_slli_si64(__m64 __m, int __count) +{ + return (__m64)__builtin_ia32_psllqi(__m, __count); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_sra_pi16(__m64 __m, __m64 __count) +{ + return (__m64)__builtin_ia32_psraw((__v4hi)__m, __count); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_srai_pi16(__m64 __m, int __count) +{ + return (__m64)__builtin_ia32_psrawi((__v4hi)__m, __count); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_sra_pi32(__m64 __m, __m64 __count) +{ + return (__m64)__builtin_ia32_psrad((__v2si)__m, __count); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_srai_pi32(__m64 __m, int __count) +{ + return (__m64)__builtin_ia32_psradi((__v2si)__m, __count); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_srl_pi16(__m64 __m, __m64 __count) +{ + return (__m64)__builtin_ia32_psrlw((__v4hi)__m, __count); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_srli_pi16(__m64 __m, int __count) +{ + return (__m64)__builtin_ia32_psrlwi((__v4hi)__m, __count); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_srl_pi32(__m64 __m, __m64 __count) +{ + return (__m64)__builtin_ia32_psrld((__v2si)__m, __count); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_srli_pi32(__m64 __m, int __count) +{ + return (__m64)__builtin_ia32_psrldi((__v2si)__m, __count); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_srl_si64(__m64 __m, __m64 __count) +{ + return (__m64)__builtin_ia32_psrlq(__m, __count); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_srli_si64(__m64 __m, int __count) +{ + return (__m64)__builtin_ia32_psrlqi(__m, __count); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_and_si64(__m64 __m1, __m64 __m2) +{ + return __builtin_ia32_pand(__m1, __m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_andnot_si64(__m64 __m1, __m64 __m2) +{ + return __builtin_ia32_pandn(__m1, __m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_or_si64(__m64 __m1, __m64 __m2) +{ + return __builtin_ia32_por(__m1, __m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_xor_si64(__m64 __m1, __m64 __m2) +{ + return __builtin_ia32_pxor(__m1, __m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_cmpeq_pi8(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_pcmpeqb((__v8qi)__m1, (__v8qi)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_cmpeq_pi16(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_pcmpeqw((__v4hi)__m1, (__v4hi)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_cmpeq_pi32(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_pcmpeqd((__v2si)__m1, (__v2si)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_cmpgt_pi8(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_pcmpgtb((__v8qi)__m1, (__v8qi)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_cmpgt_pi16(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_pcmpgtw((__v4hi)__m1, (__v4hi)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_cmpgt_pi32(__m64 __m1, __m64 __m2) +{ + return (__m64)__builtin_ia32_pcmpgtd((__v2si)__m1, (__v2si)__m2); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_setzero_si64(void) +{ + return (__m64){ 0LL }; +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_set_pi32(int __i1, int __i0) +{ + return (__m64)__builtin_ia32_vec_init_v2si(__i0, __i1); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_set_pi16(short __s3, short __s2, short __s1, short __s0) +{ + return (__m64)__builtin_ia32_vec_init_v4hi(__s0, __s1, __s2, __s3); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_set_pi8(char __b7, char __b6, char __b5, char __b4, char __b3, char __b2, + char __b1, char __b0) +{ + return (__m64)__builtin_ia32_vec_init_v8qi(__b0, __b1, __b2, __b3, + __b4, __b5, __b6, __b7); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_set1_pi32(int __i) +{ + return _mm_set_pi32(__i, __i); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_set1_pi16(short __w) +{ + return _mm_set_pi16(__w, __w, __w, __w); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_set1_pi8(char __b) +{ + return _mm_set_pi8(__b, __b, __b, __b, __b, __b, __b, __b); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_setr_pi32(int __i0, int __i1) +{ + return _mm_set_pi32(__i1, __i0); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_setr_pi16(short __w0, short __w1, short __w2, short __w3) +{ + return _mm_set_pi16(__w3, __w2, __w1, __w0); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_setr_pi8(char __b0, char __b1, char __b2, char __b3, char __b4, char __b5, + char __b6, char __b7) +{ + return _mm_set_pi8(__b7, __b6, __b5, __b4, __b3, __b2, __b1, __b0); +} + + +/* Aliases for compatibility. */ +#define _m_empty _mm_empty +#define _m_from_int _mm_cvtsi32_si64 +#define _m_to_int _mm_cvtsi64_si32 +#define _m_packsswb _mm_packs_pi16 +#define _m_packssdw _mm_packs_pi32 +#define _m_packuswb _mm_packs_pu16 +#define _m_punpckhbw _mm_unpackhi_pi8 +#define _m_punpckhwd _mm_unpackhi_pi16 +#define _m_punpckhdq _mm_unpackhi_pi32 +#define _m_punpcklbw _mm_unpacklo_pi8 +#define _m_punpcklwd _mm_unpacklo_pi16 +#define _m_punpckldq _mm_unpacklo_pi32 +#define _m_paddb _mm_add_pi8 +#define _m_paddw _mm_add_pi16 +#define _m_paddd _mm_add_pi32 +#define _m_paddsb _mm_adds_pi8 +#define _m_paddsw _mm_adds_pi16 +#define _m_paddusb _mm_adds_pu8 +#define _m_paddusw _mm_adds_pu16 +#define _m_psubb _mm_sub_pi8 +#define _m_psubw _mm_sub_pi16 +#define _m_psubd _mm_sub_pi32 +#define _m_psubsb _mm_subs_pi8 +#define _m_psubsw _mm_subs_pi16 +#define _m_psubusb _mm_subs_pu8 +#define _m_psubusw _mm_subs_pu16 +#define _m_pmaddwd _mm_madd_pi16 +#define _m_pmulhw _mm_mulhi_pi16 +#define _m_pmullw _mm_mullo_pi16 +#define _m_psllw _mm_sll_pi16 +#define _m_psllwi _mm_slli_pi16 +#define _m_pslld _mm_sll_pi32 +#define _m_pslldi _mm_slli_pi32 +#define _m_psllq _mm_sll_si64 +#define _m_psllqi _mm_slli_si64 +#define _m_psraw _mm_sra_pi16 +#define _m_psrawi _mm_srai_pi16 +#define _m_psrad _mm_sra_pi32 +#define _m_psradi _mm_srai_pi32 +#define _m_psrlw _mm_srl_pi16 +#define _m_psrlwi _mm_srli_pi16 +#define _m_psrld _mm_srl_pi32 +#define _m_psrldi _mm_srli_pi32 +#define _m_psrlq _mm_srl_si64 +#define _m_psrlqi _mm_srli_si64 +#define _m_pand _mm_and_si64 +#define _m_pandn _mm_andnot_si64 +#define _m_por _mm_or_si64 +#define _m_pxor _mm_xor_si64 +#define _m_pcmpeqb _mm_cmpeq_pi8 +#define _m_pcmpeqw _mm_cmpeq_pi16 +#define _m_pcmpeqd _mm_cmpeq_pi32 +#define _m_pcmpgtb _mm_cmpgt_pi8 +#define _m_pcmpgtw _mm_cmpgt_pi16 +#define _m_pcmpgtd _mm_cmpgt_pi32 + +#endif /* __MMX__ */ + +#endif /* __MMINTRIN_H */ + diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/module.map b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/module.map new file mode 100644 index 0000000..9f7944d --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/module.map @@ -0,0 +1,156 @@ +module _Builtin_intrinsics [system] { + explicit module altivec { + requires altivec + header "altivec.h" + } + + explicit module arm { + requires arm + + explicit module neon { + requires neon + header "arm_neon.h" + export * + } + } + + explicit module intel { + requires x86 + export * + + header "immintrin.h" + header "x86intrin.h" + + explicit module mm_malloc { + header "mm_malloc.h" + export * // note: for dependency + } + + explicit module cpuid { + requires x86 + header "cpuid.h" + } + + explicit module mmx { + requires mmx + header "mmintrin.h" + } + + explicit module f16c { + requires f16c + header "f16cintrin.h" + } + + explicit module sse { + requires sse + export mmx + export * // note: for hackish dependency + header "xmmintrin.h" + } + + explicit module sse2 { + requires sse2 + export sse + header "emmintrin.h" + } + + explicit module sse3 { + requires sse3 + export sse2 + header "pmmintrin.h" + } + + explicit module ssse3 { + requires ssse3 + export sse3 + header "tmmintrin.h" + } + + explicit module sse4_1 { + requires sse41 + export ssse3 + header "smmintrin.h" + } + + explicit module sse4_2 { + requires sse42 + export sse4_1 + header "nmmintrin.h" + } + + explicit module sse4a { + requires sse4a + export sse3 + header "ammintrin.h" + } + + explicit module avx { + requires avx + export sse4_2 + header "avxintrin.h" + } + + explicit module avx2 { + requires avx2 + export avx + header "avx2intrin.h" + } + + explicit module bmi { + requires bmi + header "bmiintrin.h" + } + + explicit module bmi2 { + requires bmi2 + header "bmi2intrin.h" + } + + explicit module fma { + requires fma + header "fmaintrin.h" + } + + explicit module fma4 { + requires fma4 + export sse3 + header "fma4intrin.h" + } + + explicit module lzcnt { + requires lzcnt + header "lzcntintrin.h" + } + + explicit module popcnt { + requires popcnt + header "popcntintrin.h" + } + + explicit module mm3dnow { + requires mm3dnow + header "mm3dnow.h" + } + + explicit module xop { + requires xop + export fma4 + header "xopintrin.h" + } + + explicit module aes_pclmul { + requires aes, pclmul + header "wmmintrin.h" + } + + explicit module aes { + requires aes + header "__wmmintrin_aes.h" + } + + explicit module pclmul { + requires pclmul + header "__wmmintrin_pclmul.h" + } + } +} diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/nmmintrin.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/nmmintrin.h new file mode 100644 index 0000000..f12622d --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/nmmintrin.h @@ -0,0 +1,35 @@ +/*===---- nmmintrin.h - SSE4 intrinsics ------------------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef _NMMINTRIN_H +#define _NMMINTRIN_H + +#ifndef __SSE4_2__ +#error "SSE4.2 instruction set not enabled" +#else + +/* To match expectations of gcc we put the sse4.2 definitions into smmintrin.h, + just include it now then. */ +#include +#endif /* __SSE4_2__ */ +#endif /* _NMMINTRIN_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/pmmintrin.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/pmmintrin.h new file mode 100644 index 0000000..6f1fc32 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/pmmintrin.h @@ -0,0 +1,117 @@ +/*===---- pmmintrin.h - SSE3 intrinsics ------------------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef __PMMINTRIN_H +#define __PMMINTRIN_H + +#ifndef __SSE3__ +#error "SSE3 instruction set not enabled" +#else + +#include + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_lddqu_si128(__m128i const *__p) +{ + return (__m128i)__builtin_ia32_lddqu((char const *)__p); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_addsub_ps(__m128 __a, __m128 __b) +{ + return __builtin_ia32_addsubps(__a, __b); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_hadd_ps(__m128 __a, __m128 __b) +{ + return __builtin_ia32_haddps(__a, __b); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_hsub_ps(__m128 __a, __m128 __b) +{ + return __builtin_ia32_hsubps(__a, __b); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_movehdup_ps(__m128 __a) +{ + return __builtin_shufflevector(__a, __a, 1, 1, 3, 3); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_moveldup_ps(__m128 __a) +{ + return __builtin_shufflevector(__a, __a, 0, 0, 2, 2); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_addsub_pd(__m128d __a, __m128d __b) +{ + return __builtin_ia32_addsubpd(__a, __b); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_hadd_pd(__m128d __a, __m128d __b) +{ + return __builtin_ia32_haddpd(__a, __b); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_hsub_pd(__m128d __a, __m128d __b) +{ + return __builtin_ia32_hsubpd(__a, __b); +} + +#define _mm_loaddup_pd(dp) _mm_load1_pd(dp) + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_movedup_pd(__m128d __a) +{ + return __builtin_shufflevector(__a, __a, 0, 0); +} + +#define _MM_DENORMALS_ZERO_ON (0x0040) +#define _MM_DENORMALS_ZERO_OFF (0x0000) + +#define _MM_DENORMALS_ZERO_MASK (0x0040) + +#define _MM_GET_DENORMALS_ZERO_MODE() (_mm_getcsr() & _MM_DENORMALS_ZERO_MASK) +#define _MM_SET_DENORMALS_ZERO_MODE(x) (_mm_setcsr((_mm_getcsr() & ~_MM_DENORMALS_ZERO_MASK) | (x))) + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_monitor(void const *__p, unsigned __extensions, unsigned __hints) +{ + __builtin_ia32_monitor((void *)__p, __extensions, __hints); +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_mwait(unsigned __extensions, unsigned __hints) +{ + __builtin_ia32_mwait(__extensions, __hints); +} + +#endif /* __SSE3__ */ + +#endif /* __PMMINTRIN_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/popcntintrin.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/popcntintrin.h new file mode 100644 index 0000000..d439daa --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/popcntintrin.h @@ -0,0 +1,45 @@ +/*===---- popcntintrin.h - POPCNT intrinsics -------------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef __POPCNT__ +#error "POPCNT instruction set not enabled" +#endif + +#ifndef _POPCNTINTRIN_H +#define _POPCNTINTRIN_H + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_popcnt_u32(unsigned int __A) +{ + return __builtin_popcount(__A); +} + +#ifdef __x86_64__ +static __inline__ long long __attribute__((__always_inline__, __nodebug__)) +_mm_popcnt_u64(unsigned long long __A) +{ + return __builtin_popcountll(__A); +} +#endif /* __x86_64__ */ + +#endif /* _POPCNTINTRIN_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/prfchwintrin.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/prfchwintrin.h new file mode 100644 index 0000000..9825bd8 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/prfchwintrin.h @@ -0,0 +1,39 @@ +/*===---- prfchwintrin.h - PREFETCHW intrinsic -----------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#if !defined(__X86INTRIN_H) && !defined(_MM3DNOW_H_INCLUDED) +#error "Never use directly; include or instead." +#endif + +#ifndef __PRFCHWINTRIN_H +#define __PRFCHWINTRIN_H + +#if defined(__PRFCHW__) || defined(__3dNOW__) +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_m_prefetchw(void *__P) +{ + __builtin_prefetch (__P, 1, 3 /* _MM_HINT_T0 */); +} +#endif + +#endif /* __PRFCHWINTRIN_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/rdseedintrin.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/rdseedintrin.h new file mode 100644 index 0000000..0fef1fa --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/rdseedintrin.h @@ -0,0 +1,52 @@ +/*===---- rdseedintrin.h - RDSEED intrinsics -------------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef __X86INTRIN_H +#error "Never use directly; include instead." +#endif + +#ifndef __RDSEEDINTRIN_H +#define __RDSEEDINTRIN_H + +#ifdef __RDSEED__ +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_rdseed16_step(unsigned short *__p) +{ + return __builtin_ia32_rdseed16_step(__p); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_rdseed32_step(unsigned int *__p) +{ + return __builtin_ia32_rdseed32_step(__p); +} + +#ifdef __x86_64__ +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_rdseed64_step(unsigned long long *__p) +{ + return __builtin_ia32_rdseed64_step(__p); +} +#endif +#endif /* __RDSEED__ */ +#endif /* __RDSEEDINTRIN_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/rtmintrin.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/rtmintrin.h new file mode 100644 index 0000000..26149ca --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/rtmintrin.h @@ -0,0 +1,54 @@ +/*===---- rtmintrin.h - RTM intrinsics -------------------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef __IMMINTRIN_H +#error "Never use directly; include instead." +#endif + +#ifndef __RTMINTRIN_H +#define __RTMINTRIN_H + +#define _XBEGIN_STARTED (~0u) +#define _XABORT_EXPLICIT (1 << 0) +#define _XABORT_RETRY (1 << 1) +#define _XABORT_CONFLICT (1 << 2) +#define _XABORT_CAPACITY (1 << 3) +#define _XABORT_DEBUG (1 << 4) +#define _XABORT_NESTED (1 << 5) +#define _XABORT_CODE(x) (((x) >> 24) & 0xFF) + +static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__)) +_xbegin(void) +{ + return __builtin_ia32_xbegin(); +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_xend(void) +{ + __builtin_ia32_xend(); +} + +#define _xabort(imm) __builtin_ia32_xabort((imm)) + +#endif /* __RTMINTRIN_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/smmintrin.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/smmintrin.h new file mode 100644 index 0000000..498f6f0 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/smmintrin.h @@ -0,0 +1,467 @@ +/*===---- smmintrin.h - SSE4 intrinsics ------------------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef _SMMINTRIN_H +#define _SMMINTRIN_H + +#ifndef __SSE4_1__ +#error "SSE4.1 instruction set not enabled" +#else + +#include + +/* SSE4 Rounding macros. */ +#define _MM_FROUND_TO_NEAREST_INT 0x00 +#define _MM_FROUND_TO_NEG_INF 0x01 +#define _MM_FROUND_TO_POS_INF 0x02 +#define _MM_FROUND_TO_ZERO 0x03 +#define _MM_FROUND_CUR_DIRECTION 0x04 + +#define _MM_FROUND_RAISE_EXC 0x00 +#define _MM_FROUND_NO_EXC 0x08 + +#define _MM_FROUND_NINT (_MM_FROUND_RAISE_EXC | _MM_FROUND_TO_NEAREST_INT) +#define _MM_FROUND_FLOOR (_MM_FROUND_RAISE_EXC | _MM_FROUND_TO_NEG_INF) +#define _MM_FROUND_CEIL (_MM_FROUND_RAISE_EXC | _MM_FROUND_TO_POS_INF) +#define _MM_FROUND_TRUNC (_MM_FROUND_RAISE_EXC | _MM_FROUND_TO_ZERO) +#define _MM_FROUND_RINT (_MM_FROUND_RAISE_EXC | _MM_FROUND_CUR_DIRECTION) +#define _MM_FROUND_NEARBYINT (_MM_FROUND_NO_EXC | _MM_FROUND_CUR_DIRECTION) + +#define _mm_ceil_ps(X) _mm_round_ps((X), _MM_FROUND_CEIL) +#define _mm_ceil_pd(X) _mm_round_pd((X), _MM_FROUND_CEIL) +#define _mm_ceil_ss(X, Y) _mm_round_ss((X), (Y), _MM_FROUND_CEIL) +#define _mm_ceil_sd(X, Y) _mm_round_sd((X), (Y), _MM_FROUND_CEIL) + +#define _mm_floor_ps(X) _mm_round_ps((X), _MM_FROUND_FLOOR) +#define _mm_floor_pd(X) _mm_round_pd((X), _MM_FROUND_FLOOR) +#define _mm_floor_ss(X, Y) _mm_round_ss((X), (Y), _MM_FROUND_FLOOR) +#define _mm_floor_sd(X, Y) _mm_round_sd((X), (Y), _MM_FROUND_FLOOR) + +#define _mm_round_ps(X, M) __extension__ ({ \ + __m128 __X = (X); \ + (__m128) __builtin_ia32_roundps((__v4sf)__X, (M)); }) + +#define _mm_round_ss(X, Y, M) __extension__ ({ \ + __m128 __X = (X); \ + __m128 __Y = (Y); \ + (__m128) __builtin_ia32_roundss((__v4sf)__X, (__v4sf)__Y, (M)); }) + +#define _mm_round_pd(X, M) __extension__ ({ \ + __m128d __X = (X); \ + (__m128d) __builtin_ia32_roundpd((__v2df)__X, (M)); }) + +#define _mm_round_sd(X, Y, M) __extension__ ({ \ + __m128d __X = (X); \ + __m128d __Y = (Y); \ + (__m128d) __builtin_ia32_roundsd((__v2df)__X, (__v2df)__Y, (M)); }) + +/* SSE4 Packed Blending Intrinsics. */ +#define _mm_blend_pd(V1, V2, M) __extension__ ({ \ + __m128d __V1 = (V1); \ + __m128d __V2 = (V2); \ + (__m128d) __builtin_ia32_blendpd ((__v2df)__V1, (__v2df)__V2, (M)); }) + +#define _mm_blend_ps(V1, V2, M) __extension__ ({ \ + __m128 __V1 = (V1); \ + __m128 __V2 = (V2); \ + (__m128) __builtin_ia32_blendps ((__v4sf)__V1, (__v4sf)__V2, (M)); }) + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_blendv_pd (__m128d __V1, __m128d __V2, __m128d __M) +{ + return (__m128d) __builtin_ia32_blendvpd ((__v2df)__V1, (__v2df)__V2, + (__v2df)__M); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_blendv_ps (__m128 __V1, __m128 __V2, __m128 __M) +{ + return (__m128) __builtin_ia32_blendvps ((__v4sf)__V1, (__v4sf)__V2, + (__v4sf)__M); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_blendv_epi8 (__m128i __V1, __m128i __V2, __m128i __M) +{ + return (__m128i) __builtin_ia32_pblendvb128 ((__v16qi)__V1, (__v16qi)__V2, + (__v16qi)__M); +} + +#define _mm_blend_epi16(V1, V2, M) __extension__ ({ \ + __m128i __V1 = (V1); \ + __m128i __V2 = (V2); \ + (__m128i) __builtin_ia32_pblendw128 ((__v8hi)__V1, (__v8hi)__V2, (M)); }) + +/* SSE4 Dword Multiply Instructions. */ +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_mullo_epi32 (__m128i __V1, __m128i __V2) +{ + return (__m128i) ((__v4si)__V1 * (__v4si)__V2); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_mul_epi32 (__m128i __V1, __m128i __V2) +{ + return (__m128i) __builtin_ia32_pmuldq128 ((__v4si)__V1, (__v4si)__V2); +} + +/* SSE4 Floating Point Dot Product Instructions. */ +#define _mm_dp_ps(X, Y, M) __extension__ ({ \ + __m128 __X = (X); \ + __m128 __Y = (Y); \ + (__m128) __builtin_ia32_dpps((__v4sf)__X, (__v4sf)__Y, (M)); }) + +#define _mm_dp_pd(X, Y, M) __extension__ ({\ + __m128d __X = (X); \ + __m128d __Y = (Y); \ + (__m128d) __builtin_ia32_dppd((__v2df)__X, (__v2df)__Y, (M)); }) + +/* SSE4 Streaming Load Hint Instruction. */ +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_stream_load_si128 (__m128i *__V) +{ + return (__m128i) __builtin_ia32_movntdqa ((__v2di *) __V); +} + +/* SSE4 Packed Integer Min/Max Instructions. */ +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_min_epi8 (__m128i __V1, __m128i __V2) +{ + return (__m128i) __builtin_ia32_pminsb128 ((__v16qi) __V1, (__v16qi) __V2); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_max_epi8 (__m128i __V1, __m128i __V2) +{ + return (__m128i) __builtin_ia32_pmaxsb128 ((__v16qi) __V1, (__v16qi) __V2); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_min_epu16 (__m128i __V1, __m128i __V2) +{ + return (__m128i) __builtin_ia32_pminuw128 ((__v8hi) __V1, (__v8hi) __V2); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_max_epu16 (__m128i __V1, __m128i __V2) +{ + return (__m128i) __builtin_ia32_pmaxuw128 ((__v8hi) __V1, (__v8hi) __V2); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_min_epi32 (__m128i __V1, __m128i __V2) +{ + return (__m128i) __builtin_ia32_pminsd128 ((__v4si) __V1, (__v4si) __V2); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_max_epi32 (__m128i __V1, __m128i __V2) +{ + return (__m128i) __builtin_ia32_pmaxsd128 ((__v4si) __V1, (__v4si) __V2); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_min_epu32 (__m128i __V1, __m128i __V2) +{ + return (__m128i) __builtin_ia32_pminud128((__v4si) __V1, (__v4si) __V2); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_max_epu32 (__m128i __V1, __m128i __V2) +{ + return (__m128i) __builtin_ia32_pmaxud128((__v4si) __V1, (__v4si) __V2); +} + +/* SSE4 Insertion and Extraction from XMM Register Instructions. */ +#define _mm_insert_ps(X, Y, N) __builtin_ia32_insertps128((X), (Y), (N)) +#define _mm_extract_ps(X, N) (__extension__ \ + ({ union { int __i; float __f; } __t; \ + __v4sf __a = (__v4sf)(X); \ + __t.__f = __a[N]; \ + __t.__i;})) + +/* Miscellaneous insert and extract macros. */ +/* Extract a single-precision float from X at index N into D. */ +#define _MM_EXTRACT_FLOAT(D, X, N) (__extension__ ({ __v4sf __a = (__v4sf)(X); \ + (D) = __a[N]; })) + +/* Or together 2 sets of indexes (X and Y) with the zeroing bits (Z) to create + an index suitable for _mm_insert_ps. */ +#define _MM_MK_INSERTPS_NDX(X, Y, Z) (((X) << 6) | ((Y) << 4) | (Z)) + +/* Extract a float from X at index N into the first index of the return. */ +#define _MM_PICK_OUT_PS(X, N) _mm_insert_ps (_mm_setzero_ps(), (X), \ + _MM_MK_INSERTPS_NDX((N), 0, 0x0e)) + +/* Insert int into packed integer array at index. */ +#define _mm_insert_epi8(X, I, N) (__extension__ ({ __v16qi __a = (__v16qi)(X); \ + __a[(N)] = (I); \ + __a;})) +#define _mm_insert_epi32(X, I, N) (__extension__ ({ __v4si __a = (__v4si)(X); \ + __a[(N)] = (I); \ + __a;})) +#ifdef __x86_64__ +#define _mm_insert_epi64(X, I, N) (__extension__ ({ __v2di __a = (__v2di)(X); \ + __a[(N)] = (I); \ + __a;})) +#endif /* __x86_64__ */ + +/* Extract int from packed integer array at index. This returns the element + * as a zero extended value, so it is unsigned. + */ +#define _mm_extract_epi8(X, N) (__extension__ ({ __v16qi __a = (__v16qi)(X); \ + (unsigned char)__a[(N)];})) +#define _mm_extract_epi32(X, N) (__extension__ ({ __v4si __a = (__v4si)(X); \ + (unsigned)__a[(N)];})) +#ifdef __x86_64__ +#define _mm_extract_epi64(X, N) (__extension__ ({ __v2di __a = (__v2di)(X); \ + __a[(N)];})) +#endif /* __x86_64 */ + +/* SSE4 128-bit Packed Integer Comparisons. */ +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_testz_si128(__m128i __M, __m128i __V) +{ + return __builtin_ia32_ptestz128((__v2di)__M, (__v2di)__V); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_testc_si128(__m128i __M, __m128i __V) +{ + return __builtin_ia32_ptestc128((__v2di)__M, (__v2di)__V); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_testnzc_si128(__m128i __M, __m128i __V) +{ + return __builtin_ia32_ptestnzc128((__v2di)__M, (__v2di)__V); +} + +#define _mm_test_all_ones(V) _mm_testc_si128((V), _mm_cmpeq_epi32((V), (V))) +#define _mm_test_mix_ones_zeros(M, V) _mm_testnzc_si128((M), (V)) +#define _mm_test_all_zeros(M, V) _mm_testz_si128 ((M), (V)) + +/* SSE4 64-bit Packed Integer Comparisons. */ +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cmpeq_epi64(__m128i __V1, __m128i __V2) +{ + return (__m128i)((__v2di)__V1 == (__v2di)__V2); +} + +/* SSE4 Packed Integer Sign-Extension. */ +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cvtepi8_epi16(__m128i __V) +{ + return (__m128i) __builtin_ia32_pmovsxbw128((__v16qi) __V); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cvtepi8_epi32(__m128i __V) +{ + return (__m128i) __builtin_ia32_pmovsxbd128((__v16qi) __V); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cvtepi8_epi64(__m128i __V) +{ + return (__m128i) __builtin_ia32_pmovsxbq128((__v16qi) __V); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cvtepi16_epi32(__m128i __V) +{ + return (__m128i) __builtin_ia32_pmovsxwd128((__v8hi) __V); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cvtepi16_epi64(__m128i __V) +{ + return (__m128i) __builtin_ia32_pmovsxwq128((__v8hi)__V); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cvtepi32_epi64(__m128i __V) +{ + return (__m128i) __builtin_ia32_pmovsxdq128((__v4si)__V); +} + +/* SSE4 Packed Integer Zero-Extension. */ +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cvtepu8_epi16(__m128i __V) +{ + return (__m128i) __builtin_ia32_pmovzxbw128((__v16qi) __V); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cvtepu8_epi32(__m128i __V) +{ + return (__m128i) __builtin_ia32_pmovzxbd128((__v16qi)__V); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cvtepu8_epi64(__m128i __V) +{ + return (__m128i) __builtin_ia32_pmovzxbq128((__v16qi)__V); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cvtepu16_epi32(__m128i __V) +{ + return (__m128i) __builtin_ia32_pmovzxwd128((__v8hi)__V); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cvtepu16_epi64(__m128i __V) +{ + return (__m128i) __builtin_ia32_pmovzxwq128((__v8hi)__V); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cvtepu32_epi64(__m128i __V) +{ + return (__m128i) __builtin_ia32_pmovzxdq128((__v4si)__V); +} + +/* SSE4 Pack with Unsigned Saturation. */ +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_packus_epi32(__m128i __V1, __m128i __V2) +{ + return (__m128i) __builtin_ia32_packusdw128((__v4si)__V1, (__v4si)__V2); +} + +/* SSE4 Multiple Packed Sums of Absolute Difference. */ +#define _mm_mpsadbw_epu8(X, Y, M) __extension__ ({ \ + __m128i __X = (X); \ + __m128i __Y = (Y); \ + (__m128i) __builtin_ia32_mpsadbw128((__v16qi)__X, (__v16qi)__Y, (M)); }) + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_minpos_epu16(__m128i __V) +{ + return (__m128i) __builtin_ia32_phminposuw128((__v8hi)__V); +} + +/* These definitions are normally in nmmintrin.h, but gcc puts them in here + so we'll do the same. */ +#ifdef __SSE4_2__ + +/* These specify the type of data that we're comparing. */ +#define _SIDD_UBYTE_OPS 0x00 +#define _SIDD_UWORD_OPS 0x01 +#define _SIDD_SBYTE_OPS 0x02 +#define _SIDD_SWORD_OPS 0x03 + +/* These specify the type of comparison operation. */ +#define _SIDD_CMP_EQUAL_ANY 0x00 +#define _SIDD_CMP_RANGES 0x04 +#define _SIDD_CMP_EQUAL_EACH 0x08 +#define _SIDD_CMP_EQUAL_ORDERED 0x0c + +/* These macros specify the polarity of the operation. */ +#define _SIDD_POSITIVE_POLARITY 0x00 +#define _SIDD_NEGATIVE_POLARITY 0x10 +#define _SIDD_MASKED_POSITIVE_POLARITY 0x20 +#define _SIDD_MASKED_NEGATIVE_POLARITY 0x30 + +/* These macros are used in _mm_cmpXstri() to specify the return. */ +#define _SIDD_LEAST_SIGNIFICANT 0x00 +#define _SIDD_MOST_SIGNIFICANT 0x40 + +/* These macros are used in _mm_cmpXstri() to specify the return. */ +#define _SIDD_BIT_MASK 0x00 +#define _SIDD_UNIT_MASK 0x40 + +/* SSE4.2 Packed Comparison Intrinsics. */ +#define _mm_cmpistrm(A, B, M) __builtin_ia32_pcmpistrm128((A), (B), (M)) +#define _mm_cmpistri(A, B, M) __builtin_ia32_pcmpistri128((A), (B), (M)) + +#define _mm_cmpestrm(A, LA, B, LB, M) \ + __builtin_ia32_pcmpestrm128((A), (LA), (B), (LB), (M)) +#define _mm_cmpestri(A, LA, B, LB, M) \ + __builtin_ia32_pcmpestri128((A), (LA), (B), (LB), (M)) + +/* SSE4.2 Packed Comparison Intrinsics and EFlag Reading. */ +#define _mm_cmpistra(A, B, M) \ + __builtin_ia32_pcmpistria128((A), (B), (M)) +#define _mm_cmpistrc(A, B, M) \ + __builtin_ia32_pcmpistric128((A), (B), (M)) +#define _mm_cmpistro(A, B, M) \ + __builtin_ia32_pcmpistrio128((A), (B), (M)) +#define _mm_cmpistrs(A, B, M) \ + __builtin_ia32_pcmpistris128((A), (B), (M)) +#define _mm_cmpistrz(A, B, M) \ + __builtin_ia32_pcmpistriz128((A), (B), (M)) + +#define _mm_cmpestra(A, LA, B, LB, M) \ + __builtin_ia32_pcmpestria128((A), (LA), (B), (LB), (M)) +#define _mm_cmpestrc(A, LA, B, LB, M) \ + __builtin_ia32_pcmpestric128((A), (LA), (B), (LB), (M)) +#define _mm_cmpestro(A, LA, B, LB, M) \ + __builtin_ia32_pcmpestrio128((A), (LA), (B), (LB), (M)) +#define _mm_cmpestrs(A, LA, B, LB, M) \ + __builtin_ia32_pcmpestris128((A), (LA), (B), (LB), (M)) +#define _mm_cmpestrz(A, LA, B, LB, M) \ + __builtin_ia32_pcmpestriz128((A), (LA), (B), (LB), (M)) + +/* SSE4.2 Compare Packed Data -- Greater Than. */ +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cmpgt_epi64(__m128i __V1, __m128i __V2) +{ + return (__m128i)((__v2di)__V1 > (__v2di)__V2); +} + +/* SSE4.2 Accumulate CRC32. */ +static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__)) +_mm_crc32_u8(unsigned int __C, unsigned char __D) +{ + return __builtin_ia32_crc32qi(__C, __D); +} + +static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__)) +_mm_crc32_u16(unsigned int __C, unsigned short __D) +{ + return __builtin_ia32_crc32hi(__C, __D); +} + +static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__)) +_mm_crc32_u32(unsigned int __C, unsigned int __D) +{ + return __builtin_ia32_crc32si(__C, __D); +} + +#ifdef __x86_64__ +static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__)) +_mm_crc32_u64(unsigned long long __C, unsigned long long __D) +{ + return __builtin_ia32_crc32di(__C, __D); +} +#endif /* __x86_64__ */ + +#ifdef __POPCNT__ +#include +#endif + +#endif /* __SSE4_2__ */ +#endif /* __SSE4_1__ */ + +#endif /* _SMMINTRIN_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/stdalign.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/stdalign.h new file mode 100644 index 0000000..3738d12 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/stdalign.h @@ -0,0 +1,35 @@ +/*===---- stdalign.h - Standard header for alignment ------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef __STDALIGN_H +#define __STDALIGN_H + +#ifndef __cplusplus +#define alignas _Alignas +#define alignof _Alignof +#endif + +#define __alignas_is_defined 1 +#define __alignof_is_defined 1 + +#endif /* __STDALIGN_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/stdarg.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/stdarg.h new file mode 100644 index 0000000..2957bf0 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/stdarg.h @@ -0,0 +1,50 @@ +/*===---- stdarg.h - Variable argument handling ----------------------------=== + * + * Copyright (c) 2008 Eli Friedman + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef __STDARG_H +#define __STDARG_H + +#ifndef _VA_LIST +typedef __builtin_va_list va_list; +#define _VA_LIST +#endif +#define va_start(ap, param) __builtin_va_start(ap, param) +#define va_end(ap) __builtin_va_end(ap) +#define va_arg(ap, type) __builtin_va_arg(ap, type) + +/* GCC always defines __va_copy, but does not define va_copy unless in c99 mode + * or -ansi is not specified, since it was not part of C90. + */ +#define __va_copy(d,s) __builtin_va_copy(d,s) + +#if __STDC_VERSION__ >= 199900L || __cplusplus >= 201103L || !defined(__STRICT_ANSI__) +#define va_copy(dest, src) __builtin_va_copy(dest, src) +#endif + +/* Hack required to make standard headers work, at least on Ubuntu */ +#define __GNUC_VA_LIST 1 +typedef __builtin_va_list __gnuc_va_list; + +#endif /* __STDARG_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/stdbool.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/stdbool.h new file mode 100644 index 0000000..0467893 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/stdbool.h @@ -0,0 +1,44 @@ +/*===---- stdbool.h - Standard header for booleans -------------------------=== + * + * Copyright (c) 2008 Eli Friedman + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef __STDBOOL_H +#define __STDBOOL_H + +/* Don't define bool, true, and false in C++, except as a GNU extension. */ +#ifndef __cplusplus +#define bool _Bool +#define true 1 +#define false 0 +#elif defined(__GNUC__) && !defined(__STRICT_ANSI__) +/* Define _Bool, bool, false, true as a GNU extension. */ +#define _Bool bool +#define bool bool +#define false false +#define true true +#endif + +#define __bool_true_false_are_defined 1 + +#endif /* __STDBOOL_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/stddef.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/stddef.h new file mode 100644 index 0000000..6a64d6d --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/stddef.h @@ -0,0 +1,102 @@ +/*===---- stddef.h - Basic type definitions --------------------------------=== + * + * Copyright (c) 2008 Eli Friedman + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef __STDDEF_H +#define __STDDEF_H + +#if !defined(_PTRDIFF_T) || __has_feature(modules) +/* Always define ptrdiff_t when modules are available. */ +#if !__has_feature(modules) +#define _PTRDIFF_T +#endif +typedef __PTRDIFF_TYPE__ ptrdiff_t; +#endif + +#if !defined(_SIZE_T) || __has_feature(modules) +/* Always define size_t when modules are available. */ +#if !__has_feature(modules) +#define _SIZE_T +#endif +typedef __SIZE_TYPE__ size_t; +#endif + +/* ISO9899:2011 7.20 (C11 Annex K): Define rsize_t if __STDC_WANT_LIB_EXT1__ is + * enabled. */ +#if (defined(__STDC_WANT_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ >= 1 && \ + !defined(_RSIZE_T)) || __has_feature(modules) +/* Always define rsize_t when modules are available. */ +#if !__has_feature(modules) +#define _RSIZE_T +#endif +typedef __SIZE_TYPE__ rsize_t; +#endif + +#ifndef __cplusplus +/* Always define wchar_t when modules are available. */ +#if !defined(_WCHAR_T) || __has_feature(modules) +#if !__has_feature(modules) +#define _WCHAR_T +#if defined(_MSC_EXTENSIONS) +#define _WCHAR_T_DEFINED +#endif +#endif +typedef __WCHAR_TYPE__ wchar_t; +#endif +#endif + +#undef NULL +#ifdef __cplusplus +# if !defined(__MINGW32__) && !defined(_MSC_VER) +# define NULL __null +# else +# define NULL 0 +# endif +#else +# define NULL ((void*)0) +#endif + +#ifdef __cplusplus +#if defined(_MSC_EXTENSIONS) && defined(_NATIVE_NULLPTR_SUPPORTED) +namespace std { typedef decltype(nullptr) nullptr_t; } +using ::std::nullptr_t; +#endif +#endif + +#define offsetof(t, d) __builtin_offsetof(t, d) + +#endif /* __STDDEF_H */ + +/* Some C libraries expect to see a wint_t here. Others (notably MinGW) will use +__WINT_TYPE__ directly; accommodate both by requiring __need_wint_t */ +#if defined(__need_wint_t) +/* Always define wint_t when modules are available. */ +#if !defined(_WINT_T) || __has_feature(modules) +#if !__has_feature(modules) +#define _WINT_T +#endif +typedef __WINT_TYPE__ wint_t; +#endif +#undef __need_wint_t +#endif /* __need_wint_t */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/stdint.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/stdint.h new file mode 100644 index 0000000..11529c0 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/stdint.h @@ -0,0 +1,708 @@ +/*===---- stdint.h - Standard header for sized integer types --------------===*\ + * + * Copyright (c) 2009 Chris Lattner + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * +\*===----------------------------------------------------------------------===*/ + +#ifndef __CLANG_STDINT_H +#define __CLANG_STDINT_H + +/* If we're hosted, fall back to the system's stdint.h, which might have + * additional definitions. + */ +#if __STDC_HOSTED__ && \ + defined(__has_include_next) && __has_include_next() + +// C99 7.18.3 Limits of other integer types +// +// Footnote 219, 220: C++ implementations should define these macros only when +// __STDC_LIMIT_MACROS is defined before is included. +// +// Footnote 222: C++ implementations should define these macros only when +// __STDC_CONSTANT_MACROS is defined before is included. +// +// C++11 [cstdint.syn]p2: +// +// The macros defined by are provided unconditionally. In particular, +// the symbols __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS (mentioned in +// footnotes 219, 220, and 222 in the C standard) play no role in C++. +// +// C11 removed the problematic footnotes. +// +// Work around this inconsistency by always defining those macros in C++ mode, +// so that a C library implementation which follows the C99 standard can be +// used in C++. +# ifdef __cplusplus +# if !defined(__STDC_LIMIT_MACROS) +# define __STDC_LIMIT_MACROS +# define __STDC_LIMIT_MACROS_DEFINED_BY_CLANG +# endif +# if !defined(__STDC_CONSTANT_MACROS) +# define __STDC_CONSTANT_MACROS +# define __STDC_CONSTANT_MACROS_DEFINED_BY_CLANG +# endif +# endif + +# include_next + +# ifdef __STDC_LIMIT_MACROS_DEFINED_BY_CLANG +# undef __STDC_LIMIT_MACROS +# undef __STDC_LIMIT_MACROS_DEFINED_BY_CLANG +# endif +# ifdef __STDC_CONSTANT_MACROS_DEFINED_BY_CLANG +# undef __STDC_CONSTANT_MACROS +# undef __STDC_CONSTANT_MACROS_DEFINED_BY_CLANG +# endif + +#else + +/* C99 7.18.1.1 Exact-width integer types. + * C99 7.18.1.2 Minimum-width integer types. + * C99 7.18.1.3 Fastest minimum-width integer types. + * + * The standard requires that exact-width type be defined for 8-, 16-, 32-, and + * 64-bit types if they are implemented. Other exact width types are optional. + * This implementation defines an exact-width types for every integer width + * that is represented in the standard integer types. + * + * The standard also requires minimum-width types be defined for 8-, 16-, 32-, + * and 64-bit widths regardless of whether there are corresponding exact-width + * types. + * + * To accommodate targets that are missing types that are exactly 8, 16, 32, or + * 64 bits wide, this implementation takes an approach of cascading + * redefintions, redefining __int_leastN_t to successively smaller exact-width + * types. It is therefore important that the types are defined in order of + * descending widths. + * + * We currently assume that the minimum-width types and the fastest + * minimum-width types are the same. This is allowed by the standard, but is + * suboptimal. + * + * In violation of the standard, some targets do not implement a type that is + * wide enough to represent all of the required widths (8-, 16-, 32-, 64-bit). + * To accommodate these targets, a required minimum-width type is only + * defined if there exists an exact-width type of equal or greater width. + */ + +#ifdef __INT64_TYPE__ +# ifndef __int8_t_defined /* glibc sys/types.h also defines int64_t*/ +typedef signed __INT64_TYPE__ int64_t; +# endif /* __int8_t_defined */ +typedef unsigned __INT64_TYPE__ uint64_t; +# define __int_least64_t int64_t +# define __uint_least64_t uint64_t +# define __int_least32_t int64_t +# define __uint_least32_t uint64_t +# define __int_least16_t int64_t +# define __uint_least16_t uint64_t +# define __int_least8_t int64_t +# define __uint_least8_t uint64_t +#endif /* __INT64_TYPE__ */ + +#ifdef __int_least64_t +typedef __int_least64_t int_least64_t; +typedef __uint_least64_t uint_least64_t; +typedef __int_least64_t int_fast64_t; +typedef __uint_least64_t uint_fast64_t; +#endif /* __int_least64_t */ + +#ifdef __INT56_TYPE__ +typedef signed __INT56_TYPE__ int56_t; +typedef unsigned __INT56_TYPE__ uint56_t; +typedef int56_t int_least56_t; +typedef uint56_t uint_least56_t; +typedef int56_t int_fast56_t; +typedef uint56_t uint_fast56_t; +# define __int_least32_t int56_t +# define __uint_least32_t uint56_t +# define __int_least16_t int56_t +# define __uint_least16_t uint56_t +# define __int_least8_t int56_t +# define __uint_least8_t uint56_t +#endif /* __INT56_TYPE__ */ + + +#ifdef __INT48_TYPE__ +typedef signed __INT48_TYPE__ int48_t; +typedef unsigned __INT48_TYPE__ uint48_t; +typedef int48_t int_least48_t; +typedef uint48_t uint_least48_t; +typedef int48_t int_fast48_t; +typedef uint48_t uint_fast48_t; +# define __int_least32_t int48_t +# define __uint_least32_t uint48_t +# define __int_least16_t int48_t +# define __uint_least16_t uint48_t +# define __int_least8_t int48_t +# define __uint_least8_t uint48_t +#endif /* __INT48_TYPE__ */ + + +#ifdef __INT40_TYPE__ +typedef signed __INT40_TYPE__ int40_t; +typedef unsigned __INT40_TYPE__ uint40_t; +typedef int40_t int_least40_t; +typedef uint40_t uint_least40_t; +typedef int40_t int_fast40_t; +typedef uint40_t uint_fast40_t; +# define __int_least32_t int40_t +# define __uint_least32_t uint40_t +# define __int_least16_t int40_t +# define __uint_least16_t uint40_t +# define __int_least8_t int40_t +# define __uint_least8_t uint40_t +#endif /* __INT40_TYPE__ */ + + +#ifdef __INT32_TYPE__ + +# ifndef __int8_t_defined /* glibc sys/types.h also defines int32_t*/ +typedef signed __INT32_TYPE__ int32_t; +# endif /* __int8_t_defined */ + +# ifndef __uint32_t_defined /* more glibc compatibility */ +# define __uint32_t_defined +typedef unsigned __INT32_TYPE__ uint32_t; +# endif /* __uint32_t_defined */ + +# define __int_least32_t int32_t +# define __uint_least32_t uint32_t +# define __int_least16_t int32_t +# define __uint_least16_t uint32_t +# define __int_least8_t int32_t +# define __uint_least8_t uint32_t +#endif /* __INT32_TYPE__ */ + +#ifdef __int_least32_t +typedef __int_least32_t int_least32_t; +typedef __uint_least32_t uint_least32_t; +typedef __int_least32_t int_fast32_t; +typedef __uint_least32_t uint_fast32_t; +#endif /* __int_least32_t */ + +#ifdef __INT24_TYPE__ +typedef signed __INT24_TYPE__ int24_t; +typedef unsigned __INT24_TYPE__ uint24_t; +typedef int24_t int_least24_t; +typedef uint24_t uint_least24_t; +typedef int24_t int_fast24_t; +typedef uint24_t uint_fast24_t; +# define __int_least16_t int24_t +# define __uint_least16_t uint24_t +# define __int_least8_t int24_t +# define __uint_least8_t uint24_t +#endif /* __INT24_TYPE__ */ + +#ifdef __INT16_TYPE__ +#ifndef __int8_t_defined /* glibc sys/types.h also defines int16_t*/ +typedef signed __INT16_TYPE__ int16_t; +#endif /* __int8_t_defined */ +typedef unsigned __INT16_TYPE__ uint16_t; +# define __int_least16_t int16_t +# define __uint_least16_t uint16_t +# define __int_least8_t int16_t +# define __uint_least8_t uint16_t +#endif /* __INT16_TYPE__ */ + +#ifdef __int_least16_t +typedef __int_least16_t int_least16_t; +typedef __uint_least16_t uint_least16_t; +typedef __int_least16_t int_fast16_t; +typedef __uint_least16_t uint_fast16_t; +#endif /* __int_least16_t */ + + +#ifdef __INT8_TYPE__ +#ifndef __int8_t_defined /* glibc sys/types.h also defines int8_t*/ +typedef signed __INT8_TYPE__ int8_t; +#endif /* __int8_t_defined */ +typedef unsigned __INT8_TYPE__ uint8_t; +# define __int_least8_t int8_t +# define __uint_least8_t uint8_t +#endif /* __INT8_TYPE__ */ + +#ifdef __int_least8_t +typedef __int_least8_t int_least8_t; +typedef __uint_least8_t uint_least8_t; +typedef __int_least8_t int_fast8_t; +typedef __uint_least8_t uint_fast8_t; +#endif /* __int_least8_t */ + +/* prevent glibc sys/types.h from defining conflicting types */ +#ifndef __int8_t_defined +# define __int8_t_defined +#endif /* __int8_t_defined */ + +/* C99 7.18.1.4 Integer types capable of holding object pointers. + */ +#define __stdint_join3(a,b,c) a ## b ## c + +#define __intn_t(n) __stdint_join3( int, n, _t) +#define __uintn_t(n) __stdint_join3(uint, n, _t) + +#ifndef _INTPTR_T +#ifndef __intptr_t_defined +typedef __intn_t(__INTPTR_WIDTH__) intptr_t; +#define __intptr_t_defined +#define _INTPTR_T +#endif +#endif + +#ifndef _UINTPTR_T +typedef __uintn_t(__INTPTR_WIDTH__) uintptr_t; +#define _UINTPTR_T +#endif + +/* C99 7.18.1.5 Greatest-width integer types. + */ +typedef __INTMAX_TYPE__ intmax_t; +typedef __UINTMAX_TYPE__ uintmax_t; + +/* C99 7.18.4 Macros for minimum-width integer constants. + * + * The standard requires that integer constant macros be defined for all the + * minimum-width types defined above. As 8-, 16-, 32-, and 64-bit minimum-width + * types are required, the corresponding integer constant macros are defined + * here. This implementation also defines minimum-width types for every other + * integer width that the target implements, so corresponding macros are + * defined below, too. + * + * These macros are defined using the same successive-shrinking approach as + * the type definitions above. It is likewise important that macros are defined + * in order of decending width. + * + * Note that C++ should not check __STDC_CONSTANT_MACROS here, contrary to the + * claims of the C standard (see C++ 18.3.1p2, [cstdint.syn]). + */ + +#define __int_c_join(a, b) a ## b +#define __int_c(v, suffix) __int_c_join(v, suffix) +#define __uint_c(v, suffix) __int_c_join(v##U, suffix) + + +#ifdef __INT64_TYPE__ +# ifdef __INT64_C_SUFFIX__ +# define __int64_c_suffix __INT64_C_SUFFIX__ +# define __int32_c_suffix __INT64_C_SUFFIX__ +# define __int16_c_suffix __INT64_C_SUFFIX__ +# define __int8_c_suffix __INT64_C_SUFFIX__ +# else +# undef __int64_c_suffix +# undef __int32_c_suffix +# undef __int16_c_suffix +# undef __int8_c_suffix +# endif /* __INT64_C_SUFFIX__ */ +#endif /* __INT64_TYPE__ */ + +#ifdef __int_least64_t +# ifdef __int64_c_suffix +# define INT64_C(v) __int_c(v, __int64_c_suffix) +# define UINT64_C(v) __uint_c(v, __int64_c_suffix) +# else +# define INT64_C(v) v +# define UINT64_C(v) v ## U +# endif /* __int64_c_suffix */ +#endif /* __int_least64_t */ + + +#ifdef __INT56_TYPE__ +# ifdef __INT56_C_SUFFIX__ +# define INT56_C(v) __int_c(v, __INT56_C_SUFFIX__) +# define UINT56_C(v) __uint_c(v, __INT56_C_SUFFIX__) +# define __int32_c_suffix __INT56_C_SUFFIX__ +# define __int16_c_suffix __INT56_C_SUFFIX__ +# define __int8_c_suffix __INT56_C_SUFFIX__ +# else +# define INT56_C(v) v +# define UINT56_C(v) v ## U +# undef __int32_c_suffix +# undef __int16_c_suffix +# undef __int8_c_suffix +# endif /* __INT56_C_SUFFIX__ */ +#endif /* __INT56_TYPE__ */ + + +#ifdef __INT48_TYPE__ +# ifdef __INT48_C_SUFFIX__ +# define INT48_C(v) __int_c(v, __INT48_C_SUFFIX__) +# define UINT48_C(v) __uint_c(v, __INT48_C_SUFFIX__) +# define __int32_c_suffix __INT48_C_SUFFIX__ +# define __int16_c_suffix __INT48_C_SUFFIX__ +# define __int8_c_suffix __INT48_C_SUFFIX__ +# else +# define INT48_C(v) v +# define UINT48_C(v) v ## U +# undef __int32_c_suffix +# undef __int16_c_suffix +# undef __int8_c_suffix +# endif /* __INT48_C_SUFFIX__ */ +#endif /* __INT48_TYPE__ */ + + +#ifdef __INT40_TYPE__ +# ifdef __INT40_C_SUFFIX__ +# define INT40_C(v) __int_c(v, __INT40_C_SUFFIX__) +# define UINT40_C(v) __uint_c(v, __INT40_C_SUFFIX__) +# define __int32_c_suffix __INT40_C_SUFFIX__ +# define __int16_c_suffix __INT40_C_SUFFIX__ +# define __int8_c_suffix __INT40_C_SUFFIX__ +# else +# define INT40_C(v) v +# define UINT40_C(v) v ## U +# undef __int32_c_suffix +# undef __int16_c_suffix +# undef __int8_c_suffix +# endif /* __INT40_C_SUFFIX__ */ +#endif /* __INT40_TYPE__ */ + + +#ifdef __INT32_TYPE__ +# ifdef __INT32_C_SUFFIX__ +# define __int32_c_suffix __INT32_C_SUFFIX__ +# define __int16_c_suffix __INT32_C_SUFFIX__ +# define __int8_c_suffix __INT32_C_SUFFIX__ +#else +# undef __int32_c_suffix +# undef __int16_c_suffix +# undef __int8_c_suffix +# endif /* __INT32_C_SUFFIX__ */ +#endif /* __INT32_TYPE__ */ + +#ifdef __int_least32_t +# ifdef __int32_c_suffix +# define INT32_C(v) __int_c(v, __int32_c_suffix) +# define UINT32_C(v) __uint_c(v, __int32_c_suffix) +# else +# define INT32_C(v) v +# define UINT32_C(v) v ## U +# endif /* __int32_c_suffix */ +#endif /* __int_least32_t */ + + +#ifdef __INT24_TYPE__ +# ifdef __INT24_C_SUFFIX__ +# define INT24_C(v) __int_c(v, __INT24_C_SUFFIX__) +# define UINT24_C(v) __uint_c(v, __INT24_C_SUFFIX__) +# define __int16_c_suffix __INT24_C_SUFFIX__ +# define __int8_c_suffix __INT24_C_SUFFIX__ +# else +# define INT24_C(v) v +# define UINT24_C(v) v ## U +# undef __int16_c_suffix +# undef __int8_c_suffix +# endif /* __INT24_C_SUFFIX__ */ +#endif /* __INT24_TYPE__ */ + + +#ifdef __INT16_TYPE__ +# ifdef __INT16_C_SUFFIX__ +# define __int16_c_suffix __INT16_C_SUFFIX__ +# define __int8_c_suffix __INT16_C_SUFFIX__ +#else +# undef __int16_c_suffix +# undef __int8_c_suffix +# endif /* __INT16_C_SUFFIX__ */ +#endif /* __INT16_TYPE__ */ + +#ifdef __int_least16_t +# ifdef __int16_c_suffix +# define INT16_C(v) __int_c(v, __int16_c_suffix) +# define UINT16_C(v) __uint_c(v, __int16_c_suffix) +# else +# define INT16_C(v) v +# define UINT16_C(v) v ## U +# endif /* __int16_c_suffix */ +#endif /* __int_least16_t */ + + +#ifdef __INT8_TYPE__ +# ifdef __INT8_C_SUFFIX__ +# define __int8_c_suffix __INT8_C_SUFFIX__ +#else +# undef __int8_c_suffix +# endif /* __INT8_C_SUFFIX__ */ +#endif /* __INT8_TYPE__ */ + +#ifdef __int_least8_t +# ifdef __int8_c_suffix +# define INT8_C(v) __int_c(v, __int8_c_suffix) +# define UINT8_C(v) __uint_c(v, __int8_c_suffix) +# else +# define INT8_C(v) v +# define UINT8_C(v) v ## U +# endif /* __int8_c_suffix */ +#endif /* __int_least8_t */ + + +/* C99 7.18.2.1 Limits of exact-width integer types. + * C99 7.18.2.2 Limits of minimum-width integer types. + * C99 7.18.2.3 Limits of fastest minimum-width integer types. + * + * The presence of limit macros are completely optional in C99. This + * implementation defines limits for all of the types (exact- and + * minimum-width) that it defines above, using the limits of the minimum-width + * type for any types that do not have exact-width representations. + * + * As in the type definitions, this section takes an approach of + * successive-shrinking to determine which limits to use for the standard (8, + * 16, 32, 64) bit widths when they don't have exact representations. It is + * therefore important that the defintions be kept in order of decending + * widths. + * + * Note that C++ should not check __STDC_LIMIT_MACROS here, contrary to the + * claims of the C standard (see C++ 18.3.1p2, [cstdint.syn]). + */ + +#ifdef __INT64_TYPE__ +# define INT64_MAX INT64_C( 9223372036854775807) +# define INT64_MIN (-INT64_C( 9223372036854775807)-1) +# define UINT64_MAX UINT64_C(18446744073709551615) +# define __INT_LEAST64_MIN INT64_MIN +# define __INT_LEAST64_MAX INT64_MAX +# define __UINT_LEAST64_MAX UINT64_MAX +# define __INT_LEAST32_MIN INT64_MIN +# define __INT_LEAST32_MAX INT64_MAX +# define __UINT_LEAST32_MAX UINT64_MAX +# define __INT_LEAST16_MIN INT64_MIN +# define __INT_LEAST16_MAX INT64_MAX +# define __UINT_LEAST16_MAX UINT64_MAX +# define __INT_LEAST8_MIN INT64_MIN +# define __INT_LEAST8_MAX INT64_MAX +# define __UINT_LEAST8_MAX UINT64_MAX +#endif /* __INT64_TYPE__ */ + +#ifdef __INT_LEAST64_MIN +# define INT_LEAST64_MIN __INT_LEAST64_MIN +# define INT_LEAST64_MAX __INT_LEAST64_MAX +# define UINT_LEAST64_MAX __UINT_LEAST64_MAX +# define INT_FAST64_MIN __INT_LEAST64_MIN +# define INT_FAST64_MAX __INT_LEAST64_MAX +# define UINT_FAST64_MAX __UINT_LEAST64_MAX +#endif /* __INT_LEAST64_MIN */ + + +#ifdef __INT56_TYPE__ +# define INT56_MAX INT56_C(36028797018963967) +# define INT56_MIN (-INT56_C(36028797018963967)-1) +# define UINT56_MAX UINT56_C(72057594037927935) +# define INT_LEAST56_MIN INT56_MIN +# define INT_LEAST56_MAX INT56_MAX +# define UINT_LEAST56_MAX UINT56_MAX +# define INT_FAST56_MIN INT56_MIN +# define INT_FAST56_MAX INT56_MAX +# define UINT_FAST56_MAX UINT56_MAX +# define __INT_LEAST32_MIN INT56_MIN +# define __INT_LEAST32_MAX INT56_MAX +# define __UINT_LEAST32_MAX UINT56_MAX +# define __INT_LEAST16_MIN INT56_MIN +# define __INT_LEAST16_MAX INT56_MAX +# define __UINT_LEAST16_MAX UINT56_MAX +# define __INT_LEAST8_MIN INT56_MIN +# define __INT_LEAST8_MAX INT56_MAX +# define __UINT_LEAST8_MAX UINT56_MAX +#endif /* __INT56_TYPE__ */ + + +#ifdef __INT48_TYPE__ +# define INT48_MAX INT48_C(140737488355327) +# define INT48_MIN (-INT48_C(140737488355327)-1) +# define UINT48_MAX UINT48_C(281474976710655) +# define INT_LEAST48_MIN INT48_MIN +# define INT_LEAST48_MAX INT48_MAX +# define UINT_LEAST48_MAX UINT48_MAX +# define INT_FAST48_MIN INT48_MIN +# define INT_FAST48_MAX INT48_MAX +# define UINT_FAST48_MAX UINT48_MAX +# define __INT_LEAST32_MIN INT48_MIN +# define __INT_LEAST32_MAX INT48_MAX +# define __UINT_LEAST32_MAX UINT48_MAX +# define __INT_LEAST16_MIN INT48_MIN +# define __INT_LEAST16_MAX INT48_MAX +# define __UINT_LEAST16_MAX UINT48_MAX +# define __INT_LEAST8_MIN INT48_MIN +# define __INT_LEAST8_MAX INT48_MAX +# define __UINT_LEAST8_MAX UINT48_MAX +#endif /* __INT48_TYPE__ */ + + +#ifdef __INT40_TYPE__ +# define INT40_MAX INT40_C(549755813887) +# define INT40_MIN (-INT40_C(549755813887)-1) +# define UINT40_MAX UINT40_C(1099511627775) +# define INT_LEAST40_MIN INT40_MIN +# define INT_LEAST40_MAX INT40_MAX +# define UINT_LEAST40_MAX UINT40_MAX +# define INT_FAST40_MIN INT40_MIN +# define INT_FAST40_MAX INT40_MAX +# define UINT_FAST40_MAX UINT40_MAX +# define __INT_LEAST32_MIN INT40_MIN +# define __INT_LEAST32_MAX INT40_MAX +# define __UINT_LEAST32_MAX UINT40_MAX +# define __INT_LEAST16_MIN INT40_MIN +# define __INT_LEAST16_MAX INT40_MAX +# define __UINT_LEAST16_MAX UINT40_MAX +# define __INT_LEAST8_MIN INT40_MIN +# define __INT_LEAST8_MAX INT40_MAX +# define __UINT_LEAST8_MAX UINT40_MAX +#endif /* __INT40_TYPE__ */ + + +#ifdef __INT32_TYPE__ +# define INT32_MAX INT32_C(2147483647) +# define INT32_MIN (-INT32_C(2147483647)-1) +# define UINT32_MAX UINT32_C(4294967295) +# define __INT_LEAST32_MIN INT32_MIN +# define __INT_LEAST32_MAX INT32_MAX +# define __UINT_LEAST32_MAX UINT32_MAX +# define __INT_LEAST16_MIN INT32_MIN +# define __INT_LEAST16_MAX INT32_MAX +# define __UINT_LEAST16_MAX UINT32_MAX +# define __INT_LEAST8_MIN INT32_MIN +# define __INT_LEAST8_MAX INT32_MAX +# define __UINT_LEAST8_MAX UINT32_MAX +#endif /* __INT32_TYPE__ */ + +#ifdef __INT_LEAST32_MIN +# define INT_LEAST32_MIN __INT_LEAST32_MIN +# define INT_LEAST32_MAX __INT_LEAST32_MAX +# define UINT_LEAST32_MAX __UINT_LEAST32_MAX +# define INT_FAST32_MIN __INT_LEAST32_MIN +# define INT_FAST32_MAX __INT_LEAST32_MAX +# define UINT_FAST32_MAX __UINT_LEAST32_MAX +#endif /* __INT_LEAST32_MIN */ + + +#ifdef __INT24_TYPE__ +# define INT24_MAX INT24_C(8388607) +# define INT24_MIN (-INT24_C(8388607)-1) +# define UINT24_MAX UINT24_C(16777215) +# define INT_LEAST24_MIN INT24_MIN +# define INT_LEAST24_MAX INT24_MAX +# define UINT_LEAST24_MAX UINT24_MAX +# define INT_FAST24_MIN INT24_MIN +# define INT_FAST24_MAX INT24_MAX +# define UINT_FAST24_MAX UINT24_MAX +# define __INT_LEAST16_MIN INT24_MIN +# define __INT_LEAST16_MAX INT24_MAX +# define __UINT_LEAST16_MAX UINT24_MAX +# define __INT_LEAST8_MIN INT24_MIN +# define __INT_LEAST8_MAX INT24_MAX +# define __UINT_LEAST8_MAX UINT24_MAX +#endif /* __INT24_TYPE__ */ + + +#ifdef __INT16_TYPE__ +#define INT16_MAX INT16_C(32767) +#define INT16_MIN (-INT16_C(32767)-1) +#define UINT16_MAX UINT16_C(65535) +# define __INT_LEAST16_MIN INT16_MIN +# define __INT_LEAST16_MAX INT16_MAX +# define __UINT_LEAST16_MAX UINT16_MAX +# define __INT_LEAST8_MIN INT16_MIN +# define __INT_LEAST8_MAX INT16_MAX +# define __UINT_LEAST8_MAX UINT16_MAX +#endif /* __INT16_TYPE__ */ + +#ifdef __INT_LEAST16_MIN +# define INT_LEAST16_MIN __INT_LEAST16_MIN +# define INT_LEAST16_MAX __INT_LEAST16_MAX +# define UINT_LEAST16_MAX __UINT_LEAST16_MAX +# define INT_FAST16_MIN __INT_LEAST16_MIN +# define INT_FAST16_MAX __INT_LEAST16_MAX +# define UINT_FAST16_MAX __UINT_LEAST16_MAX +#endif /* __INT_LEAST16_MIN */ + + +#ifdef __INT8_TYPE__ +# define INT8_MAX INT8_C(127) +# define INT8_MIN (-INT8_C(127)-1) +# define UINT8_MAX UINT8_C(255) +# define __INT_LEAST8_MIN INT8_MIN +# define __INT_LEAST8_MAX INT8_MAX +# define __UINT_LEAST8_MAX UINT8_MAX +#endif /* __INT8_TYPE__ */ + +#ifdef __INT_LEAST8_MIN +# define INT_LEAST8_MIN __INT_LEAST8_MIN +# define INT_LEAST8_MAX __INT_LEAST8_MAX +# define UINT_LEAST8_MAX __UINT_LEAST8_MAX +# define INT_FAST8_MIN __INT_LEAST8_MIN +# define INT_FAST8_MAX __INT_LEAST8_MAX +# define UINT_FAST8_MAX __UINT_LEAST8_MAX +#endif /* __INT_LEAST8_MIN */ + +/* Some utility macros */ +#define __INTN_MIN(n) __stdint_join3( INT, n, _MIN) +#define __INTN_MAX(n) __stdint_join3( INT, n, _MAX) +#define __UINTN_MAX(n) __stdint_join3(UINT, n, _MAX) +#define __INTN_C(n, v) __stdint_join3( INT, n, _C(v)) +#define __UINTN_C(n, v) __stdint_join3(UINT, n, _C(v)) + +/* C99 7.18.2.4 Limits of integer types capable of holding object pointers. */ +/* C99 7.18.3 Limits of other integer types. */ + +#define INTPTR_MIN __INTN_MIN(__INTPTR_WIDTH__) +#define INTPTR_MAX __INTN_MAX(__INTPTR_WIDTH__) +#define UINTPTR_MAX __UINTN_MAX(__INTPTR_WIDTH__) +#define PTRDIFF_MIN __INTN_MIN(__PTRDIFF_WIDTH__) +#define PTRDIFF_MAX __INTN_MAX(__PTRDIFF_WIDTH__) +#define SIZE_MAX __UINTN_MAX(__SIZE_WIDTH__) + +/* ISO9899:2011 7.20 (C11 Annex K): Define RSIZE_MAX if __STDC_WANT_LIB_EXT1__ + * is enabled. */ +#if defined(__STDC_WANT_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ >= 1 +#define RSIZE_MAX (SIZE_MAX >> 1) +#endif + +/* C99 7.18.2.5 Limits of greatest-width integer types. */ +#define INTMAX_MIN __INTN_MIN(__INTMAX_WIDTH__) +#define INTMAX_MAX __INTN_MAX(__INTMAX_WIDTH__) +#define UINTMAX_MAX __UINTN_MAX(__INTMAX_WIDTH__) + +/* C99 7.18.3 Limits of other integer types. */ +#define SIG_ATOMIC_MIN __INTN_MIN(__SIG_ATOMIC_WIDTH__) +#define SIG_ATOMIC_MAX __INTN_MAX(__SIG_ATOMIC_WIDTH__) +#ifdef __WINT_UNSIGNED__ +# define WINT_MIN __UINTN_C(__WINT_WIDTH__, 0) +# define WINT_MAX __UINTN_MAX(__WINT_WIDTH__) +#else +# define WINT_MIN __INTN_MIN(__WINT_WIDTH__) +# define WINT_MAX __INTN_MAX(__WINT_WIDTH__) +#endif + +#ifndef WCHAR_MAX +# define WCHAR_MAX __WCHAR_MAX__ +#endif +#ifndef WCHAR_MIN +# if __WCHAR_MAX__ == __INTN_MAX(__WCHAR_WIDTH__) +# define WCHAR_MIN __INTN_MIN(__WCHAR_WIDTH__) +# else +# define WCHAR_MIN __UINTN_C(__WCHAR_WIDTH__, 0) +# endif +#endif + +/* 7.18.4.2 Macros for greatest-width integer constants. */ +#define INTMAX_C(v) __INTN_C(__INTMAX_WIDTH__, v) +#define UINTMAX_C(v) __UINTN_C(__INTMAX_WIDTH__, v) + +#endif /* __STDC_HOSTED__ */ +#endif /* __CLANG_STDINT_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/stdnoreturn.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/stdnoreturn.h new file mode 100644 index 0000000..a7a301d --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/stdnoreturn.h @@ -0,0 +1,30 @@ +/*===---- stdnoreturn.h - Standard header for noreturn macro ---------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef __STDNORETURN_H +#define __STDNORETURN_H + +#define noreturn _Noreturn +#define __noreturn_is_defined 1 + +#endif /* __STDNORETURN_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/tgmath.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/tgmath.h new file mode 100644 index 0000000..a48e267 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/tgmath.h @@ -0,0 +1,1374 @@ +/*===---- tgmath.h - Standard header for type generic math ----------------===*\ + * + * Copyright (c) 2009 Howard Hinnant + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * +\*===----------------------------------------------------------------------===*/ + +#ifndef __TGMATH_H +#define __TGMATH_H + +/* C99 7.22 Type-generic math . */ +#include + +/* C++ handles type genericity with overloading in math.h. */ +#ifndef __cplusplus +#include + +#define _TG_ATTRSp __attribute__((__overloadable__)) +#define _TG_ATTRS __attribute__((__overloadable__, __always_inline__)) + +// promotion + +typedef void _Argument_type_is_not_arithmetic; +static _Argument_type_is_not_arithmetic __tg_promote(...) + __attribute__((__unavailable__,__overloadable__)); +static double _TG_ATTRSp __tg_promote(int); +static double _TG_ATTRSp __tg_promote(unsigned int); +static double _TG_ATTRSp __tg_promote(long); +static double _TG_ATTRSp __tg_promote(unsigned long); +static double _TG_ATTRSp __tg_promote(long long); +static double _TG_ATTRSp __tg_promote(unsigned long long); +static float _TG_ATTRSp __tg_promote(float); +static double _TG_ATTRSp __tg_promote(double); +static long double _TG_ATTRSp __tg_promote(long double); +static float _Complex _TG_ATTRSp __tg_promote(float _Complex); +static double _Complex _TG_ATTRSp __tg_promote(double _Complex); +static long double _Complex _TG_ATTRSp __tg_promote(long double _Complex); + +#define __tg_promote1(__x) (__typeof__(__tg_promote(__x))) +#define __tg_promote2(__x, __y) (__typeof__(__tg_promote(__x) + \ + __tg_promote(__y))) +#define __tg_promote3(__x, __y, __z) (__typeof__(__tg_promote(__x) + \ + __tg_promote(__y) + \ + __tg_promote(__z))) + +// acos + +static float + _TG_ATTRS + __tg_acos(float __x) {return acosf(__x);} + +static double + _TG_ATTRS + __tg_acos(double __x) {return acos(__x);} + +static long double + _TG_ATTRS + __tg_acos(long double __x) {return acosl(__x);} + +static float _Complex + _TG_ATTRS + __tg_acos(float _Complex __x) {return cacosf(__x);} + +static double _Complex + _TG_ATTRS + __tg_acos(double _Complex __x) {return cacos(__x);} + +static long double _Complex + _TG_ATTRS + __tg_acos(long double _Complex __x) {return cacosl(__x);} + +#undef acos +#define acos(__x) __tg_acos(__tg_promote1((__x))(__x)) + +// asin + +static float + _TG_ATTRS + __tg_asin(float __x) {return asinf(__x);} + +static double + _TG_ATTRS + __tg_asin(double __x) {return asin(__x);} + +static long double + _TG_ATTRS + __tg_asin(long double __x) {return asinl(__x);} + +static float _Complex + _TG_ATTRS + __tg_asin(float _Complex __x) {return casinf(__x);} + +static double _Complex + _TG_ATTRS + __tg_asin(double _Complex __x) {return casin(__x);} + +static long double _Complex + _TG_ATTRS + __tg_asin(long double _Complex __x) {return casinl(__x);} + +#undef asin +#define asin(__x) __tg_asin(__tg_promote1((__x))(__x)) + +// atan + +static float + _TG_ATTRS + __tg_atan(float __x) {return atanf(__x);} + +static double + _TG_ATTRS + __tg_atan(double __x) {return atan(__x);} + +static long double + _TG_ATTRS + __tg_atan(long double __x) {return atanl(__x);} + +static float _Complex + _TG_ATTRS + __tg_atan(float _Complex __x) {return catanf(__x);} + +static double _Complex + _TG_ATTRS + __tg_atan(double _Complex __x) {return catan(__x);} + +static long double _Complex + _TG_ATTRS + __tg_atan(long double _Complex __x) {return catanl(__x);} + +#undef atan +#define atan(__x) __tg_atan(__tg_promote1((__x))(__x)) + +// acosh + +static float + _TG_ATTRS + __tg_acosh(float __x) {return acoshf(__x);} + +static double + _TG_ATTRS + __tg_acosh(double __x) {return acosh(__x);} + +static long double + _TG_ATTRS + __tg_acosh(long double __x) {return acoshl(__x);} + +static float _Complex + _TG_ATTRS + __tg_acosh(float _Complex __x) {return cacoshf(__x);} + +static double _Complex + _TG_ATTRS + __tg_acosh(double _Complex __x) {return cacosh(__x);} + +static long double _Complex + _TG_ATTRS + __tg_acosh(long double _Complex __x) {return cacoshl(__x);} + +#undef acosh +#define acosh(__x) __tg_acosh(__tg_promote1((__x))(__x)) + +// asinh + +static float + _TG_ATTRS + __tg_asinh(float __x) {return asinhf(__x);} + +static double + _TG_ATTRS + __tg_asinh(double __x) {return asinh(__x);} + +static long double + _TG_ATTRS + __tg_asinh(long double __x) {return asinhl(__x);} + +static float _Complex + _TG_ATTRS + __tg_asinh(float _Complex __x) {return casinhf(__x);} + +static double _Complex + _TG_ATTRS + __tg_asinh(double _Complex __x) {return casinh(__x);} + +static long double _Complex + _TG_ATTRS + __tg_asinh(long double _Complex __x) {return casinhl(__x);} + +#undef asinh +#define asinh(__x) __tg_asinh(__tg_promote1((__x))(__x)) + +// atanh + +static float + _TG_ATTRS + __tg_atanh(float __x) {return atanhf(__x);} + +static double + _TG_ATTRS + __tg_atanh(double __x) {return atanh(__x);} + +static long double + _TG_ATTRS + __tg_atanh(long double __x) {return atanhl(__x);} + +static float _Complex + _TG_ATTRS + __tg_atanh(float _Complex __x) {return catanhf(__x);} + +static double _Complex + _TG_ATTRS + __tg_atanh(double _Complex __x) {return catanh(__x);} + +static long double _Complex + _TG_ATTRS + __tg_atanh(long double _Complex __x) {return catanhl(__x);} + +#undef atanh +#define atanh(__x) __tg_atanh(__tg_promote1((__x))(__x)) + +// cos + +static float + _TG_ATTRS + __tg_cos(float __x) {return cosf(__x);} + +static double + _TG_ATTRS + __tg_cos(double __x) {return cos(__x);} + +static long double + _TG_ATTRS + __tg_cos(long double __x) {return cosl(__x);} + +static float _Complex + _TG_ATTRS + __tg_cos(float _Complex __x) {return ccosf(__x);} + +static double _Complex + _TG_ATTRS + __tg_cos(double _Complex __x) {return ccos(__x);} + +static long double _Complex + _TG_ATTRS + __tg_cos(long double _Complex __x) {return ccosl(__x);} + +#undef cos +#define cos(__x) __tg_cos(__tg_promote1((__x))(__x)) + +// sin + +static float + _TG_ATTRS + __tg_sin(float __x) {return sinf(__x);} + +static double + _TG_ATTRS + __tg_sin(double __x) {return sin(__x);} + +static long double + _TG_ATTRS + __tg_sin(long double __x) {return sinl(__x);} + +static float _Complex + _TG_ATTRS + __tg_sin(float _Complex __x) {return csinf(__x);} + +static double _Complex + _TG_ATTRS + __tg_sin(double _Complex __x) {return csin(__x);} + +static long double _Complex + _TG_ATTRS + __tg_sin(long double _Complex __x) {return csinl(__x);} + +#undef sin +#define sin(__x) __tg_sin(__tg_promote1((__x))(__x)) + +// tan + +static float + _TG_ATTRS + __tg_tan(float __x) {return tanf(__x);} + +static double + _TG_ATTRS + __tg_tan(double __x) {return tan(__x);} + +static long double + _TG_ATTRS + __tg_tan(long double __x) {return tanl(__x);} + +static float _Complex + _TG_ATTRS + __tg_tan(float _Complex __x) {return ctanf(__x);} + +static double _Complex + _TG_ATTRS + __tg_tan(double _Complex __x) {return ctan(__x);} + +static long double _Complex + _TG_ATTRS + __tg_tan(long double _Complex __x) {return ctanl(__x);} + +#undef tan +#define tan(__x) __tg_tan(__tg_promote1((__x))(__x)) + +// cosh + +static float + _TG_ATTRS + __tg_cosh(float __x) {return coshf(__x);} + +static double + _TG_ATTRS + __tg_cosh(double __x) {return cosh(__x);} + +static long double + _TG_ATTRS + __tg_cosh(long double __x) {return coshl(__x);} + +static float _Complex + _TG_ATTRS + __tg_cosh(float _Complex __x) {return ccoshf(__x);} + +static double _Complex + _TG_ATTRS + __tg_cosh(double _Complex __x) {return ccosh(__x);} + +static long double _Complex + _TG_ATTRS + __tg_cosh(long double _Complex __x) {return ccoshl(__x);} + +#undef cosh +#define cosh(__x) __tg_cosh(__tg_promote1((__x))(__x)) + +// sinh + +static float + _TG_ATTRS + __tg_sinh(float __x) {return sinhf(__x);} + +static double + _TG_ATTRS + __tg_sinh(double __x) {return sinh(__x);} + +static long double + _TG_ATTRS + __tg_sinh(long double __x) {return sinhl(__x);} + +static float _Complex + _TG_ATTRS + __tg_sinh(float _Complex __x) {return csinhf(__x);} + +static double _Complex + _TG_ATTRS + __tg_sinh(double _Complex __x) {return csinh(__x);} + +static long double _Complex + _TG_ATTRS + __tg_sinh(long double _Complex __x) {return csinhl(__x);} + +#undef sinh +#define sinh(__x) __tg_sinh(__tg_promote1((__x))(__x)) + +// tanh + +static float + _TG_ATTRS + __tg_tanh(float __x) {return tanhf(__x);} + +static double + _TG_ATTRS + __tg_tanh(double __x) {return tanh(__x);} + +static long double + _TG_ATTRS + __tg_tanh(long double __x) {return tanhl(__x);} + +static float _Complex + _TG_ATTRS + __tg_tanh(float _Complex __x) {return ctanhf(__x);} + +static double _Complex + _TG_ATTRS + __tg_tanh(double _Complex __x) {return ctanh(__x);} + +static long double _Complex + _TG_ATTRS + __tg_tanh(long double _Complex __x) {return ctanhl(__x);} + +#undef tanh +#define tanh(__x) __tg_tanh(__tg_promote1((__x))(__x)) + +// exp + +static float + _TG_ATTRS + __tg_exp(float __x) {return expf(__x);} + +static double + _TG_ATTRS + __tg_exp(double __x) {return exp(__x);} + +static long double + _TG_ATTRS + __tg_exp(long double __x) {return expl(__x);} + +static float _Complex + _TG_ATTRS + __tg_exp(float _Complex __x) {return cexpf(__x);} + +static double _Complex + _TG_ATTRS + __tg_exp(double _Complex __x) {return cexp(__x);} + +static long double _Complex + _TG_ATTRS + __tg_exp(long double _Complex __x) {return cexpl(__x);} + +#undef exp +#define exp(__x) __tg_exp(__tg_promote1((__x))(__x)) + +// log + +static float + _TG_ATTRS + __tg_log(float __x) {return logf(__x);} + +static double + _TG_ATTRS + __tg_log(double __x) {return log(__x);} + +static long double + _TG_ATTRS + __tg_log(long double __x) {return logl(__x);} + +static float _Complex + _TG_ATTRS + __tg_log(float _Complex __x) {return clogf(__x);} + +static double _Complex + _TG_ATTRS + __tg_log(double _Complex __x) {return clog(__x);} + +static long double _Complex + _TG_ATTRS + __tg_log(long double _Complex __x) {return clogl(__x);} + +#undef log +#define log(__x) __tg_log(__tg_promote1((__x))(__x)) + +// pow + +static float + _TG_ATTRS + __tg_pow(float __x, float __y) {return powf(__x, __y);} + +static double + _TG_ATTRS + __tg_pow(double __x, double __y) {return pow(__x, __y);} + +static long double + _TG_ATTRS + __tg_pow(long double __x, long double __y) {return powl(__x, __y);} + +static float _Complex + _TG_ATTRS + __tg_pow(float _Complex __x, float _Complex __y) {return cpowf(__x, __y);} + +static double _Complex + _TG_ATTRS + __tg_pow(double _Complex __x, double _Complex __y) {return cpow(__x, __y);} + +static long double _Complex + _TG_ATTRS + __tg_pow(long double _Complex __x, long double _Complex __y) + {return cpowl(__x, __y);} + +#undef pow +#define pow(__x, __y) __tg_pow(__tg_promote2((__x), (__y))(__x), \ + __tg_promote2((__x), (__y))(__y)) + +// sqrt + +static float + _TG_ATTRS + __tg_sqrt(float __x) {return sqrtf(__x);} + +static double + _TG_ATTRS + __tg_sqrt(double __x) {return sqrt(__x);} + +static long double + _TG_ATTRS + __tg_sqrt(long double __x) {return sqrtl(__x);} + +static float _Complex + _TG_ATTRS + __tg_sqrt(float _Complex __x) {return csqrtf(__x);} + +static double _Complex + _TG_ATTRS + __tg_sqrt(double _Complex __x) {return csqrt(__x);} + +static long double _Complex + _TG_ATTRS + __tg_sqrt(long double _Complex __x) {return csqrtl(__x);} + +#undef sqrt +#define sqrt(__x) __tg_sqrt(__tg_promote1((__x))(__x)) + +// fabs + +static float + _TG_ATTRS + __tg_fabs(float __x) {return fabsf(__x);} + +static double + _TG_ATTRS + __tg_fabs(double __x) {return fabs(__x);} + +static long double + _TG_ATTRS + __tg_fabs(long double __x) {return fabsl(__x);} + +static float + _TG_ATTRS + __tg_fabs(float _Complex __x) {return cabsf(__x);} + +static double + _TG_ATTRS + __tg_fabs(double _Complex __x) {return cabs(__x);} + +static long double + _TG_ATTRS + __tg_fabs(long double _Complex __x) {return cabsl(__x);} + +#undef fabs +#define fabs(__x) __tg_fabs(__tg_promote1((__x))(__x)) + +// atan2 + +static float + _TG_ATTRS + __tg_atan2(float __x, float __y) {return atan2f(__x, __y);} + +static double + _TG_ATTRS + __tg_atan2(double __x, double __y) {return atan2(__x, __y);} + +static long double + _TG_ATTRS + __tg_atan2(long double __x, long double __y) {return atan2l(__x, __y);} + +#undef atan2 +#define atan2(__x, __y) __tg_atan2(__tg_promote2((__x), (__y))(__x), \ + __tg_promote2((__x), (__y))(__y)) + +// cbrt + +static float + _TG_ATTRS + __tg_cbrt(float __x) {return cbrtf(__x);} + +static double + _TG_ATTRS + __tg_cbrt(double __x) {return cbrt(__x);} + +static long double + _TG_ATTRS + __tg_cbrt(long double __x) {return cbrtl(__x);} + +#undef cbrt +#define cbrt(__x) __tg_cbrt(__tg_promote1((__x))(__x)) + +// ceil + +static float + _TG_ATTRS + __tg_ceil(float __x) {return ceilf(__x);} + +static double + _TG_ATTRS + __tg_ceil(double __x) {return ceil(__x);} + +static long double + _TG_ATTRS + __tg_ceil(long double __x) {return ceill(__x);} + +#undef ceil +#define ceil(__x) __tg_ceil(__tg_promote1((__x))(__x)) + +// copysign + +static float + _TG_ATTRS + __tg_copysign(float __x, float __y) {return copysignf(__x, __y);} + +static double + _TG_ATTRS + __tg_copysign(double __x, double __y) {return copysign(__x, __y);} + +static long double + _TG_ATTRS + __tg_copysign(long double __x, long double __y) {return copysignl(__x, __y);} + +#undef copysign +#define copysign(__x, __y) __tg_copysign(__tg_promote2((__x), (__y))(__x), \ + __tg_promote2((__x), (__y))(__y)) + +// erf + +static float + _TG_ATTRS + __tg_erf(float __x) {return erff(__x);} + +static double + _TG_ATTRS + __tg_erf(double __x) {return erf(__x);} + +static long double + _TG_ATTRS + __tg_erf(long double __x) {return erfl(__x);} + +#undef erf +#define erf(__x) __tg_erf(__tg_promote1((__x))(__x)) + +// erfc + +static float + _TG_ATTRS + __tg_erfc(float __x) {return erfcf(__x);} + +static double + _TG_ATTRS + __tg_erfc(double __x) {return erfc(__x);} + +static long double + _TG_ATTRS + __tg_erfc(long double __x) {return erfcl(__x);} + +#undef erfc +#define erfc(__x) __tg_erfc(__tg_promote1((__x))(__x)) + +// exp2 + +static float + _TG_ATTRS + __tg_exp2(float __x) {return exp2f(__x);} + +static double + _TG_ATTRS + __tg_exp2(double __x) {return exp2(__x);} + +static long double + _TG_ATTRS + __tg_exp2(long double __x) {return exp2l(__x);} + +#undef exp2 +#define exp2(__x) __tg_exp2(__tg_promote1((__x))(__x)) + +// expm1 + +static float + _TG_ATTRS + __tg_expm1(float __x) {return expm1f(__x);} + +static double + _TG_ATTRS + __tg_expm1(double __x) {return expm1(__x);} + +static long double + _TG_ATTRS + __tg_expm1(long double __x) {return expm1l(__x);} + +#undef expm1 +#define expm1(__x) __tg_expm1(__tg_promote1((__x))(__x)) + +// fdim + +static float + _TG_ATTRS + __tg_fdim(float __x, float __y) {return fdimf(__x, __y);} + +static double + _TG_ATTRS + __tg_fdim(double __x, double __y) {return fdim(__x, __y);} + +static long double + _TG_ATTRS + __tg_fdim(long double __x, long double __y) {return fdiml(__x, __y);} + +#undef fdim +#define fdim(__x, __y) __tg_fdim(__tg_promote2((__x), (__y))(__x), \ + __tg_promote2((__x), (__y))(__y)) + +// floor + +static float + _TG_ATTRS + __tg_floor(float __x) {return floorf(__x);} + +static double + _TG_ATTRS + __tg_floor(double __x) {return floor(__x);} + +static long double + _TG_ATTRS + __tg_floor(long double __x) {return floorl(__x);} + +#undef floor +#define floor(__x) __tg_floor(__tg_promote1((__x))(__x)) + +// fma + +static float + _TG_ATTRS + __tg_fma(float __x, float __y, float __z) + {return fmaf(__x, __y, __z);} + +static double + _TG_ATTRS + __tg_fma(double __x, double __y, double __z) + {return fma(__x, __y, __z);} + +static long double + _TG_ATTRS + __tg_fma(long double __x,long double __y, long double __z) + {return fmal(__x, __y, __z);} + +#undef fma +#define fma(__x, __y, __z) \ + __tg_fma(__tg_promote3((__x), (__y), (__z))(__x), \ + __tg_promote3((__x), (__y), (__z))(__y), \ + __tg_promote3((__x), (__y), (__z))(__z)) + +// fmax + +static float + _TG_ATTRS + __tg_fmax(float __x, float __y) {return fmaxf(__x, __y);} + +static double + _TG_ATTRS + __tg_fmax(double __x, double __y) {return fmax(__x, __y);} + +static long double + _TG_ATTRS + __tg_fmax(long double __x, long double __y) {return fmaxl(__x, __y);} + +#undef fmax +#define fmax(__x, __y) __tg_fmax(__tg_promote2((__x), (__y))(__x), \ + __tg_promote2((__x), (__y))(__y)) + +// fmin + +static float + _TG_ATTRS + __tg_fmin(float __x, float __y) {return fminf(__x, __y);} + +static double + _TG_ATTRS + __tg_fmin(double __x, double __y) {return fmin(__x, __y);} + +static long double + _TG_ATTRS + __tg_fmin(long double __x, long double __y) {return fminl(__x, __y);} + +#undef fmin +#define fmin(__x, __y) __tg_fmin(__tg_promote2((__x), (__y))(__x), \ + __tg_promote2((__x), (__y))(__y)) + +// fmod + +static float + _TG_ATTRS + __tg_fmod(float __x, float __y) {return fmodf(__x, __y);} + +static double + _TG_ATTRS + __tg_fmod(double __x, double __y) {return fmod(__x, __y);} + +static long double + _TG_ATTRS + __tg_fmod(long double __x, long double __y) {return fmodl(__x, __y);} + +#undef fmod +#define fmod(__x, __y) __tg_fmod(__tg_promote2((__x), (__y))(__x), \ + __tg_promote2((__x), (__y))(__y)) + +// frexp + +static float + _TG_ATTRS + __tg_frexp(float __x, int* __y) {return frexpf(__x, __y);} + +static double + _TG_ATTRS + __tg_frexp(double __x, int* __y) {return frexp(__x, __y);} + +static long double + _TG_ATTRS + __tg_frexp(long double __x, int* __y) {return frexpl(__x, __y);} + +#undef frexp +#define frexp(__x, __y) __tg_frexp(__tg_promote1((__x))(__x), __y) + +// hypot + +static float + _TG_ATTRS + __tg_hypot(float __x, float __y) {return hypotf(__x, __y);} + +static double + _TG_ATTRS + __tg_hypot(double __x, double __y) {return hypot(__x, __y);} + +static long double + _TG_ATTRS + __tg_hypot(long double __x, long double __y) {return hypotl(__x, __y);} + +#undef hypot +#define hypot(__x, __y) __tg_hypot(__tg_promote2((__x), (__y))(__x), \ + __tg_promote2((__x), (__y))(__y)) + +// ilogb + +static int + _TG_ATTRS + __tg_ilogb(float __x) {return ilogbf(__x);} + +static int + _TG_ATTRS + __tg_ilogb(double __x) {return ilogb(__x);} + +static int + _TG_ATTRS + __tg_ilogb(long double __x) {return ilogbl(__x);} + +#undef ilogb +#define ilogb(__x) __tg_ilogb(__tg_promote1((__x))(__x)) + +// ldexp + +static float + _TG_ATTRS + __tg_ldexp(float __x, int __y) {return ldexpf(__x, __y);} + +static double + _TG_ATTRS + __tg_ldexp(double __x, int __y) {return ldexp(__x, __y);} + +static long double + _TG_ATTRS + __tg_ldexp(long double __x, int __y) {return ldexpl(__x, __y);} + +#undef ldexp +#define ldexp(__x, __y) __tg_ldexp(__tg_promote1((__x))(__x), __y) + +// lgamma + +static float + _TG_ATTRS + __tg_lgamma(float __x) {return lgammaf(__x);} + +static double + _TG_ATTRS + __tg_lgamma(double __x) {return lgamma(__x);} + +static long double + _TG_ATTRS + __tg_lgamma(long double __x) {return lgammal(__x);} + +#undef lgamma +#define lgamma(__x) __tg_lgamma(__tg_promote1((__x))(__x)) + +// llrint + +static long long + _TG_ATTRS + __tg_llrint(float __x) {return llrintf(__x);} + +static long long + _TG_ATTRS + __tg_llrint(double __x) {return llrint(__x);} + +static long long + _TG_ATTRS + __tg_llrint(long double __x) {return llrintl(__x);} + +#undef llrint +#define llrint(__x) __tg_llrint(__tg_promote1((__x))(__x)) + +// llround + +static long long + _TG_ATTRS + __tg_llround(float __x) {return llroundf(__x);} + +static long long + _TG_ATTRS + __tg_llround(double __x) {return llround(__x);} + +static long long + _TG_ATTRS + __tg_llround(long double __x) {return llroundl(__x);} + +#undef llround +#define llround(__x) __tg_llround(__tg_promote1((__x))(__x)) + +// log10 + +static float + _TG_ATTRS + __tg_log10(float __x) {return log10f(__x);} + +static double + _TG_ATTRS + __tg_log10(double __x) {return log10(__x);} + +static long double + _TG_ATTRS + __tg_log10(long double __x) {return log10l(__x);} + +#undef log10 +#define log10(__x) __tg_log10(__tg_promote1((__x))(__x)) + +// log1p + +static float + _TG_ATTRS + __tg_log1p(float __x) {return log1pf(__x);} + +static double + _TG_ATTRS + __tg_log1p(double __x) {return log1p(__x);} + +static long double + _TG_ATTRS + __tg_log1p(long double __x) {return log1pl(__x);} + +#undef log1p +#define log1p(__x) __tg_log1p(__tg_promote1((__x))(__x)) + +// log2 + +static float + _TG_ATTRS + __tg_log2(float __x) {return log2f(__x);} + +static double + _TG_ATTRS + __tg_log2(double __x) {return log2(__x);} + +static long double + _TG_ATTRS + __tg_log2(long double __x) {return log2l(__x);} + +#undef log2 +#define log2(__x) __tg_log2(__tg_promote1((__x))(__x)) + +// logb + +static float + _TG_ATTRS + __tg_logb(float __x) {return logbf(__x);} + +static double + _TG_ATTRS + __tg_logb(double __x) {return logb(__x);} + +static long double + _TG_ATTRS + __tg_logb(long double __x) {return logbl(__x);} + +#undef logb +#define logb(__x) __tg_logb(__tg_promote1((__x))(__x)) + +// lrint + +static long + _TG_ATTRS + __tg_lrint(float __x) {return lrintf(__x);} + +static long + _TG_ATTRS + __tg_lrint(double __x) {return lrint(__x);} + +static long + _TG_ATTRS + __tg_lrint(long double __x) {return lrintl(__x);} + +#undef lrint +#define lrint(__x) __tg_lrint(__tg_promote1((__x))(__x)) + +// lround + +static long + _TG_ATTRS + __tg_lround(float __x) {return lroundf(__x);} + +static long + _TG_ATTRS + __tg_lround(double __x) {return lround(__x);} + +static long + _TG_ATTRS + __tg_lround(long double __x) {return lroundl(__x);} + +#undef lround +#define lround(__x) __tg_lround(__tg_promote1((__x))(__x)) + +// nearbyint + +static float + _TG_ATTRS + __tg_nearbyint(float __x) {return nearbyintf(__x);} + +static double + _TG_ATTRS + __tg_nearbyint(double __x) {return nearbyint(__x);} + +static long double + _TG_ATTRS + __tg_nearbyint(long double __x) {return nearbyintl(__x);} + +#undef nearbyint +#define nearbyint(__x) __tg_nearbyint(__tg_promote1((__x))(__x)) + +// nextafter + +static float + _TG_ATTRS + __tg_nextafter(float __x, float __y) {return nextafterf(__x, __y);} + +static double + _TG_ATTRS + __tg_nextafter(double __x, double __y) {return nextafter(__x, __y);} + +static long double + _TG_ATTRS + __tg_nextafter(long double __x, long double __y) {return nextafterl(__x, __y);} + +#undef nextafter +#define nextafter(__x, __y) __tg_nextafter(__tg_promote2((__x), (__y))(__x), \ + __tg_promote2((__x), (__y))(__y)) + +// nexttoward + +static float + _TG_ATTRS + __tg_nexttoward(float __x, long double __y) {return nexttowardf(__x, __y);} + +static double + _TG_ATTRS + __tg_nexttoward(double __x, long double __y) {return nexttoward(__x, __y);} + +static long double + _TG_ATTRS + __tg_nexttoward(long double __x, long double __y) {return nexttowardl(__x, __y);} + +#undef nexttoward +#define nexttoward(__x, __y) __tg_nexttoward(__tg_promote1((__x))(__x), (__y)) + +// remainder + +static float + _TG_ATTRS + __tg_remainder(float __x, float __y) {return remainderf(__x, __y);} + +static double + _TG_ATTRS + __tg_remainder(double __x, double __y) {return remainder(__x, __y);} + +static long double + _TG_ATTRS + __tg_remainder(long double __x, long double __y) {return remainderl(__x, __y);} + +#undef remainder +#define remainder(__x, __y) __tg_remainder(__tg_promote2((__x), (__y))(__x), \ + __tg_promote2((__x), (__y))(__y)) + +// remquo + +static float + _TG_ATTRS + __tg_remquo(float __x, float __y, int* __z) + {return remquof(__x, __y, __z);} + +static double + _TG_ATTRS + __tg_remquo(double __x, double __y, int* __z) + {return remquo(__x, __y, __z);} + +static long double + _TG_ATTRS + __tg_remquo(long double __x,long double __y, int* __z) + {return remquol(__x, __y, __z);} + +#undef remquo +#define remquo(__x, __y, __z) \ + __tg_remquo(__tg_promote2((__x), (__y))(__x), \ + __tg_promote2((__x), (__y))(__y), \ + (__z)) + +// rint + +static float + _TG_ATTRS + __tg_rint(float __x) {return rintf(__x);} + +static double + _TG_ATTRS + __tg_rint(double __x) {return rint(__x);} + +static long double + _TG_ATTRS + __tg_rint(long double __x) {return rintl(__x);} + +#undef rint +#define rint(__x) __tg_rint(__tg_promote1((__x))(__x)) + +// round + +static float + _TG_ATTRS + __tg_round(float __x) {return roundf(__x);} + +static double + _TG_ATTRS + __tg_round(double __x) {return round(__x);} + +static long double + _TG_ATTRS + __tg_round(long double __x) {return roundl(__x);} + +#undef round +#define round(__x) __tg_round(__tg_promote1((__x))(__x)) + +// scalbn + +static float + _TG_ATTRS + __tg_scalbn(float __x, int __y) {return scalbnf(__x, __y);} + +static double + _TG_ATTRS + __tg_scalbn(double __x, int __y) {return scalbn(__x, __y);} + +static long double + _TG_ATTRS + __tg_scalbn(long double __x, int __y) {return scalbnl(__x, __y);} + +#undef scalbn +#define scalbn(__x, __y) __tg_scalbn(__tg_promote1((__x))(__x), __y) + +// scalbln + +static float + _TG_ATTRS + __tg_scalbln(float __x, long __y) {return scalblnf(__x, __y);} + +static double + _TG_ATTRS + __tg_scalbln(double __x, long __y) {return scalbln(__x, __y);} + +static long double + _TG_ATTRS + __tg_scalbln(long double __x, long __y) {return scalblnl(__x, __y);} + +#undef scalbln +#define scalbln(__x, __y) __tg_scalbln(__tg_promote1((__x))(__x), __y) + +// tgamma + +static float + _TG_ATTRS + __tg_tgamma(float __x) {return tgammaf(__x);} + +static double + _TG_ATTRS + __tg_tgamma(double __x) {return tgamma(__x);} + +static long double + _TG_ATTRS + __tg_tgamma(long double __x) {return tgammal(__x);} + +#undef tgamma +#define tgamma(__x) __tg_tgamma(__tg_promote1((__x))(__x)) + +// trunc + +static float + _TG_ATTRS + __tg_trunc(float __x) {return truncf(__x);} + +static double + _TG_ATTRS + __tg_trunc(double __x) {return trunc(__x);} + +static long double + _TG_ATTRS + __tg_trunc(long double __x) {return truncl(__x);} + +#undef trunc +#define trunc(__x) __tg_trunc(__tg_promote1((__x))(__x)) + +// carg + +static float + _TG_ATTRS + __tg_carg(float __x) {return atan2f(0.F, __x);} + +static double + _TG_ATTRS + __tg_carg(double __x) {return atan2(0., __x);} + +static long double + _TG_ATTRS + __tg_carg(long double __x) {return atan2l(0.L, __x);} + +static float + _TG_ATTRS + __tg_carg(float _Complex __x) {return cargf(__x);} + +static double + _TG_ATTRS + __tg_carg(double _Complex __x) {return carg(__x);} + +static long double + _TG_ATTRS + __tg_carg(long double _Complex __x) {return cargl(__x);} + +#undef carg +#define carg(__x) __tg_carg(__tg_promote1((__x))(__x)) + +// cimag + +static float + _TG_ATTRS + __tg_cimag(float __x) {return 0;} + +static double + _TG_ATTRS + __tg_cimag(double __x) {return 0;} + +static long double + _TG_ATTRS + __tg_cimag(long double __x) {return 0;} + +static float + _TG_ATTRS + __tg_cimag(float _Complex __x) {return cimagf(__x);} + +static double + _TG_ATTRS + __tg_cimag(double _Complex __x) {return cimag(__x);} + +static long double + _TG_ATTRS + __tg_cimag(long double _Complex __x) {return cimagl(__x);} + +#undef cimag +#define cimag(__x) __tg_cimag(__tg_promote1((__x))(__x)) + +// conj + +static float _Complex + _TG_ATTRS + __tg_conj(float __x) {return __x;} + +static double _Complex + _TG_ATTRS + __tg_conj(double __x) {return __x;} + +static long double _Complex + _TG_ATTRS + __tg_conj(long double __x) {return __x;} + +static float _Complex + _TG_ATTRS + __tg_conj(float _Complex __x) {return conjf(__x);} + +static double _Complex + _TG_ATTRS + __tg_conj(double _Complex __x) {return conj(__x);} + +static long double _Complex + _TG_ATTRS + __tg_conj(long double _Complex __x) {return conjl(__x);} + +#undef conj +#define conj(__x) __tg_conj(__tg_promote1((__x))(__x)) + +// cproj + +static float _Complex + _TG_ATTRS + __tg_cproj(float __x) {return cprojf(__x);} + +static double _Complex + _TG_ATTRS + __tg_cproj(double __x) {return cproj(__x);} + +static long double _Complex + _TG_ATTRS + __tg_cproj(long double __x) {return cprojl(__x);} + +static float _Complex + _TG_ATTRS + __tg_cproj(float _Complex __x) {return cprojf(__x);} + +static double _Complex + _TG_ATTRS + __tg_cproj(double _Complex __x) {return cproj(__x);} + +static long double _Complex + _TG_ATTRS + __tg_cproj(long double _Complex __x) {return cprojl(__x);} + +#undef cproj +#define cproj(__x) __tg_cproj(__tg_promote1((__x))(__x)) + +// creal + +static float + _TG_ATTRS + __tg_creal(float __x) {return __x;} + +static double + _TG_ATTRS + __tg_creal(double __x) {return __x;} + +static long double + _TG_ATTRS + __tg_creal(long double __x) {return __x;} + +static float + _TG_ATTRS + __tg_creal(float _Complex __x) {return crealf(__x);} + +static double + _TG_ATTRS + __tg_creal(double _Complex __x) {return creal(__x);} + +static long double + _TG_ATTRS + __tg_creal(long double _Complex __x) {return creall(__x);} + +#undef creal +#define creal(__x) __tg_creal(__tg_promote1((__x))(__x)) + +#undef _TG_ATTRSp +#undef _TG_ATTRS + +#endif /* __cplusplus */ +#endif /* __TGMATH_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/tmmintrin.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/tmmintrin.h new file mode 100644 index 0000000..4238f5b --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/tmmintrin.h @@ -0,0 +1,225 @@ +/*===---- tmmintrin.h - SSSE3 intrinsics -----------------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef __TMMINTRIN_H +#define __TMMINTRIN_H + +#ifndef __SSSE3__ +#error "SSSE3 instruction set not enabled" +#else + +#include + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_abs_pi8(__m64 __a) +{ + return (__m64)__builtin_ia32_pabsb((__v8qi)__a); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_abs_epi8(__m128i __a) +{ + return (__m128i)__builtin_ia32_pabsb128((__v16qi)__a); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_abs_pi16(__m64 __a) +{ + return (__m64)__builtin_ia32_pabsw((__v4hi)__a); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_abs_epi16(__m128i __a) +{ + return (__m128i)__builtin_ia32_pabsw128((__v8hi)__a); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_abs_pi32(__m64 __a) +{ + return (__m64)__builtin_ia32_pabsd((__v2si)__a); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_abs_epi32(__m128i __a) +{ + return (__m128i)__builtin_ia32_pabsd128((__v4si)__a); +} + +#define _mm_alignr_epi8(a, b, n) __extension__ ({ \ + __m128i __a = (a); \ + __m128i __b = (b); \ + (__m128i)__builtin_ia32_palignr128((__v16qi)__a, (__v16qi)__b, (n)); }) + +#define _mm_alignr_pi8(a, b, n) __extension__ ({ \ + __m64 __a = (a); \ + __m64 __b = (b); \ + (__m64)__builtin_ia32_palignr((__v8qi)__a, (__v8qi)__b, (n)); }) + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_hadd_epi16(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_phaddw128((__v8hi)__a, (__v8hi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_hadd_epi32(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_phaddd128((__v4si)__a, (__v4si)__b); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_hadd_pi16(__m64 __a, __m64 __b) +{ + return (__m64)__builtin_ia32_phaddw((__v4hi)__a, (__v4hi)__b); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_hadd_pi32(__m64 __a, __m64 __b) +{ + return (__m64)__builtin_ia32_phaddd((__v2si)__a, (__v2si)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_hadds_epi16(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_phaddsw128((__v8hi)__a, (__v8hi)__b); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_hadds_pi16(__m64 __a, __m64 __b) +{ + return (__m64)__builtin_ia32_phaddsw((__v4hi)__a, (__v4hi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_hsub_epi16(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_phsubw128((__v8hi)__a, (__v8hi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_hsub_epi32(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_phsubd128((__v4si)__a, (__v4si)__b); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_hsub_pi16(__m64 __a, __m64 __b) +{ + return (__m64)__builtin_ia32_phsubw((__v4hi)__a, (__v4hi)__b); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_hsub_pi32(__m64 __a, __m64 __b) +{ + return (__m64)__builtin_ia32_phsubd((__v2si)__a, (__v2si)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_hsubs_epi16(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_phsubsw128((__v8hi)__a, (__v8hi)__b); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_hsubs_pi16(__m64 __a, __m64 __b) +{ + return (__m64)__builtin_ia32_phsubsw((__v4hi)__a, (__v4hi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_maddubs_epi16(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_pmaddubsw128((__v16qi)__a, (__v16qi)__b); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_maddubs_pi16(__m64 __a, __m64 __b) +{ + return (__m64)__builtin_ia32_pmaddubsw((__v8qi)__a, (__v8qi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_mulhrs_epi16(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_pmulhrsw128((__v8hi)__a, (__v8hi)__b); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_mulhrs_pi16(__m64 __a, __m64 __b) +{ + return (__m64)__builtin_ia32_pmulhrsw((__v4hi)__a, (__v4hi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_shuffle_epi8(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_pshufb128((__v16qi)__a, (__v16qi)__b); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_shuffle_pi8(__m64 __a, __m64 __b) +{ + return (__m64)__builtin_ia32_pshufb((__v8qi)__a, (__v8qi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_sign_epi8(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_psignb128((__v16qi)__a, (__v16qi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_sign_epi16(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_psignw128((__v8hi)__a, (__v8hi)__b); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_sign_epi32(__m128i __a, __m128i __b) +{ + return (__m128i)__builtin_ia32_psignd128((__v4si)__a, (__v4si)__b); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_sign_pi8(__m64 __a, __m64 __b) +{ + return (__m64)__builtin_ia32_psignb((__v8qi)__a, (__v8qi)__b); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_sign_pi16(__m64 __a, __m64 __b) +{ + return (__m64)__builtin_ia32_psignw((__v4hi)__a, (__v4hi)__b); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_sign_pi32(__m64 __a, __m64 __b) +{ + return (__m64)__builtin_ia32_psignd((__v2si)__a, (__v2si)__b); +} + +#endif /* __SSSE3__ */ + +#endif /* __TMMINTRIN_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/unwind.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/unwind.h new file mode 100644 index 0000000..e94fd70 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/unwind.h @@ -0,0 +1,133 @@ +/*===---- unwind.h - Stack unwinding ----------------------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +/* See "Data Definitions for libgcc_s" in the Linux Standard Base.*/ + +#ifndef __CLANG_UNWIND_H +#define __CLANG_UNWIND_H + +#if __has_include_next() +/* Darwin and libunwind provide an unwind.h. If that's available, use + * it. libunwind wraps some of its definitions in #ifdef _GNU_SOURCE, + * so define that around the include.*/ +# ifndef _GNU_SOURCE +# define _SHOULD_UNDEFINE_GNU_SOURCE +# define _GNU_SOURCE +# endif +// libunwind's unwind.h reflects the current visibility. However, Mozilla +// builds with -fvisibility=hidden and relies on gcc's unwind.h to reset the +// visibility to default and export its contents. gcc also allows users to +// override its override by #defining HIDE_EXPORTS (but note, this only obeys +// the user's -fvisibility setting; it doesn't hide any exports on its own). We +// imitate gcc's header here: +# ifdef HIDE_EXPORTS +# include_next +# else +# pragma GCC visibility push(default) +# include_next +# pragma GCC visibility pop +# endif +# ifdef _SHOULD_UNDEFINE_GNU_SOURCE +# undef _GNU_SOURCE +# undef _SHOULD_UNDEFINE_GNU_SOURCE +# endif +#else + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* It is a bit strange for a header to play with the visibility of the + symbols it declares, but this matches gcc's behavior and some programs + depend on it */ +#ifndef HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +struct _Unwind_Context; +typedef enum { + _URC_NO_REASON = 0, + _URC_FOREIGN_EXCEPTION_CAUGHT = 1, + + _URC_FATAL_PHASE2_ERROR = 2, + _URC_FATAL_PHASE1_ERROR = 3, + _URC_NORMAL_STOP = 4, + + _URC_END_OF_STACK = 5, + _URC_HANDLER_FOUND = 6, + _URC_INSTALL_CONTEXT = 7, + _URC_CONTINUE_UNWIND = 8 +} _Unwind_Reason_Code; + + +#ifdef __arm__ + +typedef enum { + _UVRSC_CORE = 0, /* integer register */ + _UVRSC_VFP = 1, /* vfp */ + _UVRSC_WMMXD = 3, /* Intel WMMX data register */ + _UVRSC_WMMXC = 4 /* Intel WMMX control register */ +} _Unwind_VRS_RegClass; + +typedef enum { + _UVRSD_UINT32 = 0, + _UVRSD_VFPX = 1, + _UVRSD_UINT64 = 3, + _UVRSD_FLOAT = 4, + _UVRSD_DOUBLE = 5 +} _Unwind_VRS_DataRepresentation; + +typedef enum { + _UVRSR_OK = 0, + _UVRSR_NOT_IMPLEMENTED = 1, + _UVRSR_FAILED = 2 +} _Unwind_VRS_Result; + +_Unwind_VRS_Result _Unwind_VRS_Get(struct _Unwind_Context *__context, + _Unwind_VRS_RegClass __regclass, + uint32_t __regno, + _Unwind_VRS_DataRepresentation __representation, + void *__valuep); + +#else + +uintptr_t _Unwind_GetIP(struct _Unwind_Context* __context); + +#endif + +typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn)(struct _Unwind_Context*, void*); +_Unwind_Reason_Code _Unwind_Backtrace(_Unwind_Trace_Fn, void*); + +#ifndef HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#ifdef __cplusplus +} +#endif + +#endif + +#endif /* __CLANG_UNWIND_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/varargs.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/varargs.h new file mode 100644 index 0000000..b5477d0 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/varargs.h @@ -0,0 +1,26 @@ +/*===---- varargs.h - Variable argument handling -------------------------------------=== +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +* THE SOFTWARE. +* +*===-----------------------------------------------------------------------=== +*/ +#ifndef __VARARGS_H +#define __VARARGS_H + #error "Please use instead of " +#endif diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/wmmintrin.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/wmmintrin.h new file mode 100644 index 0000000..369e3c2 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/wmmintrin.h @@ -0,0 +1,42 @@ +/*===---- wmmintrin.h - AES intrinsics ------------------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef _WMMINTRIN_H +#define _WMMINTRIN_H + +#include + +#if !defined (__AES__) && !defined (__PCLMUL__) +# error "AES/PCLMUL instructions not enabled" +#else + +#ifdef __AES__ +#include <__wmmintrin_aes.h> +#endif /* __AES__ */ + +#ifdef __PCLMUL__ +#include <__wmmintrin_pclmul.h> +#endif /* __PCLMUL__ */ + +#endif /* __AES__ || __PCLMUL__ */ +#endif /* _WMMINTRIN_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/x86intrin.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/x86intrin.h new file mode 100644 index 0000000..94fbe2f --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/x86intrin.h @@ -0,0 +1,75 @@ +/*===---- x86intrin.h - X86 intrinsics -------------------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef __X86INTRIN_H +#define __X86INTRIN_H + +#include + +#ifdef __3dNOW__ +#include +#endif + +#ifdef __BMI__ +#include +#endif + +#ifdef __BMI2__ +#include +#endif + +#ifdef __LZCNT__ +#include +#endif + +#ifdef __POPCNT__ +#include +#endif + +#ifdef __RDSEED__ +#include +#endif + +#ifdef __PRFCHW__ +#include +#endif + +#ifdef __SSE4A__ +#include +#endif + +#ifdef __FMA4__ +#include +#endif + +#ifdef __XOP__ +#include +#endif + +#ifdef __F16C__ +#include +#endif + +// FIXME: LWP + +#endif /* __X86INTRIN_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/xmmintrin.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/xmmintrin.h new file mode 100644 index 0000000..c68d3ed --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/xmmintrin.h @@ -0,0 +1,1001 @@ +/*===---- xmmintrin.h - SSE intrinsics -------------------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef __XMMINTRIN_H +#define __XMMINTRIN_H + +#ifndef __SSE__ +#error "SSE instruction set not enabled" +#else + +#include + +typedef int __v4si __attribute__((__vector_size__(16))); +typedef float __v4sf __attribute__((__vector_size__(16))); +typedef float __m128 __attribute__((__vector_size__(16))); + +// This header should only be included in a hosted environment as it depends on +// a standard library to provide allocation routines. +#if __STDC_HOSTED__ +#include +#endif + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_add_ss(__m128 __a, __m128 __b) +{ + __a[0] += __b[0]; + return __a; +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_add_ps(__m128 __a, __m128 __b) +{ + return __a + __b; +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_sub_ss(__m128 __a, __m128 __b) +{ + __a[0] -= __b[0]; + return __a; +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_sub_ps(__m128 __a, __m128 __b) +{ + return __a - __b; +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_mul_ss(__m128 __a, __m128 __b) +{ + __a[0] *= __b[0]; + return __a; +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_mul_ps(__m128 __a, __m128 __b) +{ + return __a * __b; +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_div_ss(__m128 __a, __m128 __b) +{ + __a[0] /= __b[0]; + return __a; +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_div_ps(__m128 __a, __m128 __b) +{ + return __a / __b; +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_sqrt_ss(__m128 __a) +{ + __m128 __c = __builtin_ia32_sqrtss(__a); + return (__m128) { __c[0], __a[1], __a[2], __a[3] }; +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_sqrt_ps(__m128 __a) +{ + return __builtin_ia32_sqrtps(__a); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_rcp_ss(__m128 __a) +{ + __m128 __c = __builtin_ia32_rcpss(__a); + return (__m128) { __c[0], __a[1], __a[2], __a[3] }; +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_rcp_ps(__m128 __a) +{ + return __builtin_ia32_rcpps(__a); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_rsqrt_ss(__m128 __a) +{ + __m128 __c = __builtin_ia32_rsqrtss(__a); + return (__m128) { __c[0], __a[1], __a[2], __a[3] }; +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_rsqrt_ps(__m128 __a) +{ + return __builtin_ia32_rsqrtps(__a); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_min_ss(__m128 __a, __m128 __b) +{ + return __builtin_ia32_minss(__a, __b); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_min_ps(__m128 __a, __m128 __b) +{ + return __builtin_ia32_minps(__a, __b); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_max_ss(__m128 __a, __m128 __b) +{ + return __builtin_ia32_maxss(__a, __b); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_max_ps(__m128 __a, __m128 __b) +{ + return __builtin_ia32_maxps(__a, __b); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_and_ps(__m128 __a, __m128 __b) +{ + return (__m128)((__v4si)__a & (__v4si)__b); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_andnot_ps(__m128 __a, __m128 __b) +{ + return (__m128)(~(__v4si)__a & (__v4si)__b); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_or_ps(__m128 __a, __m128 __b) +{ + return (__m128)((__v4si)__a | (__v4si)__b); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_xor_ps(__m128 __a, __m128 __b) +{ + return (__m128)((__v4si)__a ^ (__v4si)__b); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cmpeq_ss(__m128 __a, __m128 __b) +{ + return (__m128)__builtin_ia32_cmpss(__a, __b, 0); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cmpeq_ps(__m128 __a, __m128 __b) +{ + return (__m128)__builtin_ia32_cmpps(__a, __b, 0); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cmplt_ss(__m128 __a, __m128 __b) +{ + return (__m128)__builtin_ia32_cmpss(__a, __b, 1); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cmplt_ps(__m128 __a, __m128 __b) +{ + return (__m128)__builtin_ia32_cmpps(__a, __b, 1); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cmple_ss(__m128 __a, __m128 __b) +{ + return (__m128)__builtin_ia32_cmpss(__a, __b, 2); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cmple_ps(__m128 __a, __m128 __b) +{ + return (__m128)__builtin_ia32_cmpps(__a, __b, 2); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cmpgt_ss(__m128 __a, __m128 __b) +{ + return (__m128)__builtin_shufflevector(__a, + __builtin_ia32_cmpss(__b, __a, 1), + 4, 1, 2, 3); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cmpgt_ps(__m128 __a, __m128 __b) +{ + return (__m128)__builtin_ia32_cmpps(__b, __a, 1); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cmpge_ss(__m128 __a, __m128 __b) +{ + return (__m128)__builtin_shufflevector(__a, + __builtin_ia32_cmpss(__b, __a, 2), + 4, 1, 2, 3); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cmpge_ps(__m128 __a, __m128 __b) +{ + return (__m128)__builtin_ia32_cmpps(__b, __a, 2); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cmpneq_ss(__m128 __a, __m128 __b) +{ + return (__m128)__builtin_ia32_cmpss(__a, __b, 4); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cmpneq_ps(__m128 __a, __m128 __b) +{ + return (__m128)__builtin_ia32_cmpps(__a, __b, 4); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cmpnlt_ss(__m128 __a, __m128 __b) +{ + return (__m128)__builtin_ia32_cmpss(__a, __b, 5); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cmpnlt_ps(__m128 __a, __m128 __b) +{ + return (__m128)__builtin_ia32_cmpps(__a, __b, 5); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cmpnle_ss(__m128 __a, __m128 __b) +{ + return (__m128)__builtin_ia32_cmpss(__a, __b, 6); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cmpnle_ps(__m128 __a, __m128 __b) +{ + return (__m128)__builtin_ia32_cmpps(__a, __b, 6); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cmpngt_ss(__m128 __a, __m128 __b) +{ + return (__m128)__builtin_shufflevector(__a, + __builtin_ia32_cmpss(__b, __a, 5), + 4, 1, 2, 3); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cmpngt_ps(__m128 __a, __m128 __b) +{ + return (__m128)__builtin_ia32_cmpps(__b, __a, 5); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cmpnge_ss(__m128 __a, __m128 __b) +{ + return (__m128)__builtin_shufflevector(__a, + __builtin_ia32_cmpss(__b, __a, 6), + 4, 1, 2, 3); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cmpnge_ps(__m128 __a, __m128 __b) +{ + return (__m128)__builtin_ia32_cmpps(__b, __a, 6); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cmpord_ss(__m128 __a, __m128 __b) +{ + return (__m128)__builtin_ia32_cmpss(__a, __b, 7); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cmpord_ps(__m128 __a, __m128 __b) +{ + return (__m128)__builtin_ia32_cmpps(__a, __b, 7); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cmpunord_ss(__m128 __a, __m128 __b) +{ + return (__m128)__builtin_ia32_cmpss(__a, __b, 3); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cmpunord_ps(__m128 __a, __m128 __b) +{ + return (__m128)__builtin_ia32_cmpps(__a, __b, 3); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_comieq_ss(__m128 __a, __m128 __b) +{ + return __builtin_ia32_comieq(__a, __b); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_comilt_ss(__m128 __a, __m128 __b) +{ + return __builtin_ia32_comilt(__a, __b); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_comile_ss(__m128 __a, __m128 __b) +{ + return __builtin_ia32_comile(__a, __b); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_comigt_ss(__m128 __a, __m128 __b) +{ + return __builtin_ia32_comigt(__a, __b); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_comige_ss(__m128 __a, __m128 __b) +{ + return __builtin_ia32_comige(__a, __b); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_comineq_ss(__m128 __a, __m128 __b) +{ + return __builtin_ia32_comineq(__a, __b); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_ucomieq_ss(__m128 __a, __m128 __b) +{ + return __builtin_ia32_ucomieq(__a, __b); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_ucomilt_ss(__m128 __a, __m128 __b) +{ + return __builtin_ia32_ucomilt(__a, __b); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_ucomile_ss(__m128 __a, __m128 __b) +{ + return __builtin_ia32_ucomile(__a, __b); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_ucomigt_ss(__m128 __a, __m128 __b) +{ + return __builtin_ia32_ucomigt(__a, __b); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_ucomige_ss(__m128 __a, __m128 __b) +{ + return __builtin_ia32_ucomige(__a, __b); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_ucomineq_ss(__m128 __a, __m128 __b) +{ + return __builtin_ia32_ucomineq(__a, __b); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_cvtss_si32(__m128 __a) +{ + return __builtin_ia32_cvtss2si(__a); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_cvt_ss2si(__m128 __a) +{ + return _mm_cvtss_si32(__a); +} + +#ifdef __x86_64__ + +static __inline__ long long __attribute__((__always_inline__, __nodebug__)) +_mm_cvtss_si64(__m128 __a) +{ + return __builtin_ia32_cvtss2si64(__a); +} + +#endif + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_cvtps_pi32(__m128 __a) +{ + return (__m64)__builtin_ia32_cvtps2pi(__a); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_cvt_ps2pi(__m128 __a) +{ + return _mm_cvtps_pi32(__a); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_cvttss_si32(__m128 __a) +{ + return __a[0]; +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_cvtt_ss2si(__m128 __a) +{ + return _mm_cvttss_si32(__a); +} + +static __inline__ long long __attribute__((__always_inline__, __nodebug__)) +_mm_cvttss_si64(__m128 __a) +{ + return __a[0]; +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_cvttps_pi32(__m128 __a) +{ + return (__m64)__builtin_ia32_cvttps2pi(__a); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_cvtt_ps2pi(__m128 __a) +{ + return _mm_cvttps_pi32(__a); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cvtsi32_ss(__m128 __a, int __b) +{ + __a[0] = __b; + return __a; +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cvt_si2ss(__m128 __a, int __b) +{ + return _mm_cvtsi32_ss(__a, __b); +} + +#ifdef __x86_64__ + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cvtsi64_ss(__m128 __a, long long __b) +{ + __a[0] = __b; + return __a; +} + +#endif + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cvtpi32_ps(__m128 __a, __m64 __b) +{ + return __builtin_ia32_cvtpi2ps(__a, (__v2si)__b); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cvt_pi2ps(__m128 __a, __m64 __b) +{ + return _mm_cvtpi32_ps(__a, __b); +} + +static __inline__ float __attribute__((__always_inline__, __nodebug__)) +_mm_cvtss_f32(__m128 __a) +{ + return __a[0]; +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_loadh_pi(__m128 __a, const __m64 *__p) +{ + typedef float __mm_loadh_pi_v2f32 __attribute__((__vector_size__(8))); + struct __mm_loadh_pi_struct { + __mm_loadh_pi_v2f32 __u; + } __attribute__((__packed__, __may_alias__)); + __mm_loadh_pi_v2f32 __b = ((struct __mm_loadh_pi_struct*)__p)->__u; + __m128 __bb = __builtin_shufflevector(__b, __b, 0, 1, 0, 1); + return __builtin_shufflevector(__a, __bb, 0, 1, 4, 5); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_loadl_pi(__m128 __a, const __m64 *__p) +{ + typedef float __mm_loadl_pi_v2f32 __attribute__((__vector_size__(8))); + struct __mm_loadl_pi_struct { + __mm_loadl_pi_v2f32 __u; + } __attribute__((__packed__, __may_alias__)); + __mm_loadl_pi_v2f32 __b = ((struct __mm_loadl_pi_struct*)__p)->__u; + __m128 __bb = __builtin_shufflevector(__b, __b, 0, 1, 0, 1); + return __builtin_shufflevector(__a, __bb, 4, 5, 2, 3); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_load_ss(const float *__p) +{ + struct __mm_load_ss_struct { + float __u; + } __attribute__((__packed__, __may_alias__)); + float __u = ((struct __mm_load_ss_struct*)__p)->__u; + return (__m128){ __u, 0, 0, 0 }; +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_load1_ps(const float *__p) +{ + struct __mm_load1_ps_struct { + float __u; + } __attribute__((__packed__, __may_alias__)); + float __u = ((struct __mm_load1_ps_struct*)__p)->__u; + return (__m128){ __u, __u, __u, __u }; +} + +#define _mm_load_ps1(p) _mm_load1_ps(p) + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_load_ps(const float *__p) +{ + return *(__m128*)__p; +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_loadu_ps(const float *__p) +{ + struct __loadu_ps { + __m128 __v; + } __attribute__((__packed__, __may_alias__)); + return ((struct __loadu_ps*)__p)->__v; +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_loadr_ps(const float *__p) +{ + __m128 __a = _mm_load_ps(__p); + return __builtin_shufflevector(__a, __a, 3, 2, 1, 0); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_set_ss(float __w) +{ + return (__m128){ __w, 0, 0, 0 }; +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_set1_ps(float __w) +{ + return (__m128){ __w, __w, __w, __w }; +} + +// Microsoft specific. +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_set_ps1(float __w) +{ + return _mm_set1_ps(__w); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_set_ps(float __z, float __y, float __x, float __w) +{ + return (__m128){ __w, __x, __y, __z }; +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_setr_ps(float __z, float __y, float __x, float __w) +{ + return (__m128){ __z, __y, __x, __w }; +} + +static __inline__ __m128 __attribute__((__always_inline__)) +_mm_setzero_ps(void) +{ + return (__m128){ 0, 0, 0, 0 }; +} + +static __inline__ void __attribute__((__always_inline__)) +_mm_storeh_pi(__m64 *__p, __m128 __a) +{ + __builtin_ia32_storehps((__v2si *)__p, __a); +} + +static __inline__ void __attribute__((__always_inline__)) +_mm_storel_pi(__m64 *__p, __m128 __a) +{ + __builtin_ia32_storelps((__v2si *)__p, __a); +} + +static __inline__ void __attribute__((__always_inline__)) +_mm_store_ss(float *__p, __m128 __a) +{ + struct __mm_store_ss_struct { + float __u; + } __attribute__((__packed__, __may_alias__)); + ((struct __mm_store_ss_struct*)__p)->__u = __a[0]; +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_storeu_ps(float *__p, __m128 __a) +{ + __builtin_ia32_storeups(__p, __a); +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_store1_ps(float *__p, __m128 __a) +{ + __a = __builtin_shufflevector(__a, __a, 0, 0, 0, 0); + _mm_storeu_ps(__p, __a); +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_store_ps1(float *__p, __m128 __a) +{ + return _mm_store1_ps(__p, __a); +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_store_ps(float *__p, __m128 __a) +{ + *(__m128 *)__p = __a; +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_storer_ps(float *__p, __m128 __a) +{ + __a = __builtin_shufflevector(__a, __a, 3, 2, 1, 0); + _mm_store_ps(__p, __a); +} + +#define _MM_HINT_T0 3 +#define _MM_HINT_T1 2 +#define _MM_HINT_T2 1 +#define _MM_HINT_NTA 0 + +/* FIXME: We have to #define this because "sel" must be a constant integer, and + Sema doesn't do any form of constant propagation yet. */ + +#define _mm_prefetch(a, sel) (__builtin_prefetch((void *)(a), 0, (sel))) + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_stream_pi(__m64 *__p, __m64 __a) +{ + __builtin_ia32_movntq(__p, __a); +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_stream_ps(float *__p, __m128 __a) +{ + __builtin_ia32_movntps(__p, __a); +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_sfence(void) +{ + __builtin_ia32_sfence(); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_extract_pi16(__m64 __a, int __n) +{ + __v4hi __b = (__v4hi)__a; + return (unsigned short)__b[__n & 3]; +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_insert_pi16(__m64 __a, int __d, int __n) +{ + __v4hi __b = (__v4hi)__a; + __b[__n & 3] = __d; + return (__m64)__b; +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_max_pi16(__m64 __a, __m64 __b) +{ + return (__m64)__builtin_ia32_pmaxsw((__v4hi)__a, (__v4hi)__b); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_max_pu8(__m64 __a, __m64 __b) +{ + return (__m64)__builtin_ia32_pmaxub((__v8qi)__a, (__v8qi)__b); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_min_pi16(__m64 __a, __m64 __b) +{ + return (__m64)__builtin_ia32_pminsw((__v4hi)__a, (__v4hi)__b); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_min_pu8(__m64 __a, __m64 __b) +{ + return (__m64)__builtin_ia32_pminub((__v8qi)__a, (__v8qi)__b); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_movemask_pi8(__m64 __a) +{ + return __builtin_ia32_pmovmskb((__v8qi)__a); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_mulhi_pu16(__m64 __a, __m64 __b) +{ + return (__m64)__builtin_ia32_pmulhuw((__v4hi)__a, (__v4hi)__b); +} + +#define _mm_shuffle_pi16(a, n) __extension__ ({ \ + __m64 __a = (a); \ + (__m64)__builtin_ia32_pshufw((__v4hi)__a, (n)); }) + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_maskmove_si64(__m64 __d, __m64 __n, char *__p) +{ + __builtin_ia32_maskmovq((__v8qi)__d, (__v8qi)__n, __p); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_avg_pu8(__m64 __a, __m64 __b) +{ + return (__m64)__builtin_ia32_pavgb((__v8qi)__a, (__v8qi)__b); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_avg_pu16(__m64 __a, __m64 __b) +{ + return (__m64)__builtin_ia32_pavgw((__v4hi)__a, (__v4hi)__b); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_sad_pu8(__m64 __a, __m64 __b) +{ + return (__m64)__builtin_ia32_psadbw((__v8qi)__a, (__v8qi)__b); +} + +static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__)) +_mm_getcsr(void) +{ + return __builtin_ia32_stmxcsr(); +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_mm_setcsr(unsigned int __i) +{ + __builtin_ia32_ldmxcsr(__i); +} + +#define _mm_shuffle_ps(a, b, mask) __extension__ ({ \ + __m128 __a = (a); \ + __m128 __b = (b); \ + (__m128)__builtin_shufflevector((__v4sf)__a, (__v4sf)__b, \ + (mask) & 0x3, ((mask) & 0xc) >> 2, \ + (((mask) & 0x30) >> 4) + 4, \ + (((mask) & 0xc0) >> 6) + 4); }) + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_unpackhi_ps(__m128 __a, __m128 __b) +{ + return __builtin_shufflevector(__a, __b, 2, 6, 3, 7); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_unpacklo_ps(__m128 __a, __m128 __b) +{ + return __builtin_shufflevector(__a, __b, 0, 4, 1, 5); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_move_ss(__m128 __a, __m128 __b) +{ + return __builtin_shufflevector(__a, __b, 4, 1, 2, 3); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_movehl_ps(__m128 __a, __m128 __b) +{ + return __builtin_shufflevector(__a, __b, 6, 7, 2, 3); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_movelh_ps(__m128 __a, __m128 __b) +{ + return __builtin_shufflevector(__a, __b, 0, 1, 4, 5); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cvtpi16_ps(__m64 __a) +{ + __m64 __b, __c; + __m128 __r; + + __b = _mm_setzero_si64(); + __b = _mm_cmpgt_pi16(__b, __a); + __c = _mm_unpackhi_pi16(__a, __b); + __r = _mm_setzero_ps(); + __r = _mm_cvtpi32_ps(__r, __c); + __r = _mm_movelh_ps(__r, __r); + __c = _mm_unpacklo_pi16(__a, __b); + __r = _mm_cvtpi32_ps(__r, __c); + + return __r; +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cvtpu16_ps(__m64 __a) +{ + __m64 __b, __c; + __m128 __r; + + __b = _mm_setzero_si64(); + __c = _mm_unpackhi_pi16(__a, __b); + __r = _mm_setzero_ps(); + __r = _mm_cvtpi32_ps(__r, __c); + __r = _mm_movelh_ps(__r, __r); + __c = _mm_unpacklo_pi16(__a, __b); + __r = _mm_cvtpi32_ps(__r, __c); + + return __r; +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cvtpi8_ps(__m64 __a) +{ + __m64 __b; + + __b = _mm_setzero_si64(); + __b = _mm_cmpgt_pi8(__b, __a); + __b = _mm_unpacklo_pi8(__a, __b); + + return _mm_cvtpi16_ps(__b); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cvtpu8_ps(__m64 __a) +{ + __m64 __b; + + __b = _mm_setzero_si64(); + __b = _mm_unpacklo_pi8(__a, __b); + + return _mm_cvtpi16_ps(__b); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_cvtpi32x2_ps(__m64 __a, __m64 __b) +{ + __m128 __c; + + __c = _mm_setzero_ps(); + __c = _mm_cvtpi32_ps(__c, __b); + __c = _mm_movelh_ps(__c, __c); + + return _mm_cvtpi32_ps(__c, __a); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_cvtps_pi16(__m128 __a) +{ + __m64 __b, __c; + + __b = _mm_cvtps_pi32(__a); + __a = _mm_movehl_ps(__a, __a); + __c = _mm_cvtps_pi32(__a); + + return _mm_packs_pi16(__b, __c); +} + +static __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) +_mm_cvtps_pi8(__m128 __a) +{ + __m64 __b, __c; + + __b = _mm_cvtps_pi16(__a); + __c = _mm_setzero_si64(); + + return _mm_packs_pi16(__b, __c); +} + +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_mm_movemask_ps(__m128 __a) +{ + return __builtin_ia32_movmskps(__a); +} + +#define _MM_SHUFFLE(z, y, x, w) (((z) << 6) | ((y) << 4) | ((x) << 2) | (w)) + +#define _MM_EXCEPT_INVALID (0x0001) +#define _MM_EXCEPT_DENORM (0x0002) +#define _MM_EXCEPT_DIV_ZERO (0x0004) +#define _MM_EXCEPT_OVERFLOW (0x0008) +#define _MM_EXCEPT_UNDERFLOW (0x0010) +#define _MM_EXCEPT_INEXACT (0x0020) +#define _MM_EXCEPT_MASK (0x003f) + +#define _MM_MASK_INVALID (0x0080) +#define _MM_MASK_DENORM (0x0100) +#define _MM_MASK_DIV_ZERO (0x0200) +#define _MM_MASK_OVERFLOW (0x0400) +#define _MM_MASK_UNDERFLOW (0x0800) +#define _MM_MASK_INEXACT (0x1000) +#define _MM_MASK_MASK (0x1f80) + +#define _MM_ROUND_NEAREST (0x0000) +#define _MM_ROUND_DOWN (0x2000) +#define _MM_ROUND_UP (0x4000) +#define _MM_ROUND_TOWARD_ZERO (0x6000) +#define _MM_ROUND_MASK (0x6000) + +#define _MM_FLUSH_ZERO_MASK (0x8000) +#define _MM_FLUSH_ZERO_ON (0x8000) +#define _MM_FLUSH_ZERO_OFF (0x0000) + +#define _MM_GET_EXCEPTION_MASK() (_mm_getcsr() & _MM_MASK_MASK) +#define _MM_GET_EXCEPTION_STATE() (_mm_getcsr() & _MM_EXCEPT_MASK) +#define _MM_GET_FLUSH_ZERO_MODE() (_mm_getcsr() & _MM_FLUSH_ZERO_MASK) +#define _MM_GET_ROUNDING_MODE() (_mm_getcsr() & _MM_ROUND_MASK) + +#define _MM_SET_EXCEPTION_MASK(x) (_mm_setcsr((_mm_getcsr() & ~_MM_MASK_MASK) | (x))) +#define _MM_SET_EXCEPTION_STATE(x) (_mm_setcsr((_mm_getcsr() & ~_MM_EXCEPT_MASK) | (x))) +#define _MM_SET_FLUSH_ZERO_MODE(x) (_mm_setcsr((_mm_getcsr() & ~_MM_FLUSH_ZERO_MASK) | (x))) +#define _MM_SET_ROUNDING_MODE(x) (_mm_setcsr((_mm_getcsr() & ~_MM_ROUND_MASK) | (x))) + +#define _MM_TRANSPOSE4_PS(row0, row1, row2, row3) \ +do { \ + __m128 tmp3, tmp2, tmp1, tmp0; \ + tmp0 = _mm_unpacklo_ps((row0), (row1)); \ + tmp2 = _mm_unpacklo_ps((row2), (row3)); \ + tmp1 = _mm_unpackhi_ps((row0), (row1)); \ + tmp3 = _mm_unpackhi_ps((row2), (row3)); \ + (row0) = _mm_movelh_ps(tmp0, tmp2); \ + (row1) = _mm_movehl_ps(tmp2, tmp0); \ + (row2) = _mm_movelh_ps(tmp1, tmp3); \ + (row3) = _mm_movehl_ps(tmp3, tmp1); \ +} while (0) + +/* Aliases for compatibility. */ +#define _m_pextrw _mm_extract_pi16 +#define _m_pinsrw _mm_insert_pi16 +#define _m_pmaxsw _mm_max_pi16 +#define _m_pmaxub _mm_max_pu8 +#define _m_pminsw _mm_min_pi16 +#define _m_pminub _mm_min_pu8 +#define _m_pmovmskb _mm_movemask_pi8 +#define _m_pmulhuw _mm_mulhi_pu16 +#define _m_pshufw _mm_shuffle_pi16 +#define _m_maskmovq _mm_maskmove_si64 +#define _m_pavgb _mm_avg_pu8 +#define _m_pavgw _mm_avg_pu16 +#define _m_psadbw _mm_sad_pu8 +#define _m_ _mm_ +#define _m_ _mm_ + +/* Ugly hack for backwards-compatibility (compatible with gcc) */ +#ifdef __SSE2__ +#include +#endif + +#endif /* __SSE__ */ + +#endif /* __XMMINTRIN_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/xopintrin.h b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/xopintrin.h new file mode 100644 index 0000000..cc94ca0 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/clang-include/xopintrin.h @@ -0,0 +1,804 @@ +/*===---- xopintrin.h - XOP intrinsics -------------------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef __X86INTRIN_H +#error "Never use directly; include instead." +#endif + +#ifndef __XOPINTRIN_H +#define __XOPINTRIN_H + +#ifndef __XOP__ +# error "XOP instruction set is not enabled" +#else + +#include + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_maccs_epi16(__m128i __A, __m128i __B, __m128i __C) +{ + return (__m128i)__builtin_ia32_vpmacssww((__v8hi)__A, (__v8hi)__B, (__v8hi)__C); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_macc_epi16(__m128i __A, __m128i __B, __m128i __C) +{ + return (__m128i)__builtin_ia32_vpmacsww((__v8hi)__A, (__v8hi)__B, (__v8hi)__C); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_maccsd_epi16(__m128i __A, __m128i __B, __m128i __C) +{ + return (__m128i)__builtin_ia32_vpmacsswd((__v8hi)__A, (__v8hi)__B, (__v4si)__C); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_maccd_epi16(__m128i __A, __m128i __B, __m128i __C) +{ + return (__m128i)__builtin_ia32_vpmacswd((__v8hi)__A, (__v8hi)__B, (__v4si)__C); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_maccs_epi32(__m128i __A, __m128i __B, __m128i __C) +{ + return (__m128i)__builtin_ia32_vpmacssdd((__v4si)__A, (__v4si)__B, (__v4si)__C); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_macc_epi32(__m128i __A, __m128i __B, __m128i __C) +{ + return (__m128i)__builtin_ia32_vpmacsdd((__v4si)__A, (__v4si)__B, (__v4si)__C); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_maccslo_epi32(__m128i __A, __m128i __B, __m128i __C) +{ + return (__m128i)__builtin_ia32_vpmacssdql((__v4si)__A, (__v4si)__B, (__v2di)__C); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_macclo_epi32(__m128i __A, __m128i __B, __m128i __C) +{ + return (__m128i)__builtin_ia32_vpmacsdql((__v4si)__A, (__v4si)__B, (__v2di)__C); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_maccshi_epi32(__m128i __A, __m128i __B, __m128i __C) +{ + return (__m128i)__builtin_ia32_vpmacssdqh((__v4si)__A, (__v4si)__B, (__v2di)__C); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_macchi_epi32(__m128i __A, __m128i __B, __m128i __C) +{ + return (__m128i)__builtin_ia32_vpmacsdqh((__v4si)__A, (__v4si)__B, (__v2di)__C); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_maddsd_epi16(__m128i __A, __m128i __B, __m128i __C) +{ + return (__m128i)__builtin_ia32_vpmadcsswd((__v8hi)__A, (__v8hi)__B, (__v4si)__C); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_maddd_epi16(__m128i __A, __m128i __B, __m128i __C) +{ + return (__m128i)__builtin_ia32_vpmadcswd((__v8hi)__A, (__v8hi)__B, (__v4si)__C); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_haddw_epi8(__m128i __A) +{ + return (__m128i)__builtin_ia32_vphaddbw((__v16qi)__A); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_haddd_epi8(__m128i __A) +{ + return (__m128i)__builtin_ia32_vphaddbd((__v16qi)__A); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_haddq_epi8(__m128i __A) +{ + return (__m128i)__builtin_ia32_vphaddbq((__v16qi)__A); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_haddd_epi16(__m128i __A) +{ + return (__m128i)__builtin_ia32_vphaddwd((__v8hi)__A); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_haddq_epi16(__m128i __A) +{ + return (__m128i)__builtin_ia32_vphaddwq((__v8hi)__A); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_haddq_epi32(__m128i __A) +{ + return (__m128i)__builtin_ia32_vphadddq((__v4si)__A); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_haddw_epu8(__m128i __A) +{ + return (__m128i)__builtin_ia32_vphaddubw((__v16qi)__A); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_haddd_epu8(__m128i __A) +{ + return (__m128i)__builtin_ia32_vphaddubd((__v16qi)__A); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_haddq_epu8(__m128i __A) +{ + return (__m128i)__builtin_ia32_vphaddubq((__v16qi)__A); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_haddd_epu16(__m128i __A) +{ + return (__m128i)__builtin_ia32_vphadduwd((__v8hi)__A); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_haddq_epu16(__m128i __A) +{ + return (__m128i)__builtin_ia32_vphadduwq((__v8hi)__A); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_haddq_epu32(__m128i __A) +{ + return (__m128i)__builtin_ia32_vphaddudq((__v4si)__A); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_hsubw_epi8(__m128i __A) +{ + return (__m128i)__builtin_ia32_vphsubbw((__v16qi)__A); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_hsubd_epi16(__m128i __A) +{ + return (__m128i)__builtin_ia32_vphsubwd((__v8hi)__A); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_hsubq_epi32(__m128i __A) +{ + return (__m128i)__builtin_ia32_vphsubdq((__v4si)__A); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_cmov_si128(__m128i __A, __m128i __B, __m128i __C) +{ + return (__m128i)__builtin_ia32_vpcmov(__A, __B, __C); +} + +static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) +_mm256_cmov_si256(__m256i __A, __m256i __B, __m256i __C) +{ + return (__m256i)__builtin_ia32_vpcmov_256(__A, __B, __C); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_perm_epi8(__m128i __A, __m128i __B, __m128i __C) +{ + return (__m128i)__builtin_ia32_vpperm((__v16qi)__A, (__v16qi)__B, (__v16qi)__C); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_rot_epi8(__m128i __A, __m128i __B) +{ + return (__m128i)__builtin_ia32_vprotb((__v16qi)__A, (__v16qi)__B); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_rot_epi16(__m128i __A, __m128i __B) +{ + return (__m128i)__builtin_ia32_vprotw((__v8hi)__A, (__v8hi)__B); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_rot_epi32(__m128i __A, __m128i __B) +{ + return (__m128i)__builtin_ia32_vprotd((__v4si)__A, (__v4si)__B); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_rot_epi64(__m128i __A, __m128i __B) +{ + return (__m128i)__builtin_ia32_vprotq((__v2di)__A, (__v2di)__B); +} + +#define _mm_roti_epi8(A, N) __extension__ ({ \ + __m128i __A = (A); \ + (__m128i)__builtin_ia32_vprotbi((__v16qi)__A, (N)); }) + +#define _mm_roti_epi16(A, N) __extension__ ({ \ + __m128i __A = (A); \ + (__m128i)__builtin_ia32_vprotwi((__v8hi)__A, (N)); }) + +#define _mm_roti_epi32(A, N) __extension__ ({ \ + __m128i __A = (A); \ + (__m128i)__builtin_ia32_vprotdi((__v4si)__A, (N)); }) + +#define _mm_roti_epi64(A, N) __extension__ ({ \ + __m128i __A = (A); \ + (__m128i)__builtin_ia32_vprotqi((__v2di)__A, (N)); }) + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_shl_epi8(__m128i __A, __m128i __B) +{ + return (__m128i)__builtin_ia32_vpshlb((__v16qi)__A, (__v16qi)__B); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_shl_epi16(__m128i __A, __m128i __B) +{ + return (__m128i)__builtin_ia32_vpshlw((__v8hi)__A, (__v8hi)__B); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_shl_epi32(__m128i __A, __m128i __B) +{ + return (__m128i)__builtin_ia32_vpshld((__v4si)__A, (__v4si)__B); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_shl_epi64(__m128i __A, __m128i __B) +{ + return (__m128i)__builtin_ia32_vpshlq((__v2di)__A, (__v2di)__B); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_sha_epi8(__m128i __A, __m128i __B) +{ + return (__m128i)__builtin_ia32_vpshab((__v16qi)__A, (__v16qi)__B); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_sha_epi16(__m128i __A, __m128i __B) +{ + return (__m128i)__builtin_ia32_vpshaw((__v8hi)__A, (__v8hi)__B); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_sha_epi32(__m128i __A, __m128i __B) +{ + return (__m128i)__builtin_ia32_vpshad((__v4si)__A, (__v4si)__B); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_sha_epi64(__m128i __A, __m128i __B) +{ + return (__m128i)__builtin_ia32_vpshaq((__v2di)__A, (__v2di)__B); +} + +#define _mm_com_epu8(A, B, N) __extension__ ({ \ + __m128i __A = (A); \ + __m128i __B = (B); \ + (__m128i)__builtin_ia32_vpcomub((__v16qi)__A, (__v16qi)__B, (N)); }) + +#define _mm_com_epu16(A, B, N) __extension__ ({ \ + __m128i __A = (A); \ + __m128i __B = (B); \ + (__m128i)__builtin_ia32_vpcomuw((__v8hi)__A, (__v8hi)__B, (N)); }) + +#define _mm_com_epu32(A, B, N) __extension__ ({ \ + __m128i __A = (A); \ + __m128i __B = (B); \ + (__m128i)__builtin_ia32_vpcomud((__v4si)__A, (__v4si)__B, (N)); }) + +#define _mm_com_epu64(A, B, N) __extension__ ({ \ + __m128i __A = (A); \ + __m128i __B = (B); \ + (__m128i)__builtin_ia32_vpcomuq((__v2di)__A, (__v2di)__B, (N)); }) + +#define _mm_com_epi8(A, B, N) __extension__ ({ \ + __m128i __A = (A); \ + __m128i __B = (B); \ + (__m128i)__builtin_ia32_vpcomb((__v16qi)__A, (__v16qi)__B, (N)); }) + +#define _mm_com_epi16(A, B, N) __extension__ ({ \ + __m128i __A = (A); \ + __m128i __B = (B); \ + (__m128i)__builtin_ia32_vpcomw((__v8hi)__A, (__v8hi)__B, (N)); }) + +#define _mm_com_epi32(A, B, N) __extension__ ({ \ + __m128i __A = (A); \ + __m128i __B = (B); \ + (__m128i)__builtin_ia32_vpcomd((__v4si)__A, (__v4si)__B, (N)); }) + +#define _mm_com_epi64(A, B, N) __extension__ ({ \ + __m128i __A = (A); \ + __m128i __B = (B); \ + (__m128i)__builtin_ia32_vpcomq((__v2di)__A, (__v2di)__B, (N)); }) + +#define _MM_PCOMCTRL_LT 0 +#define _MM_PCOMCTRL_LE 1 +#define _MM_PCOMCTRL_GT 2 +#define _MM_PCOMCTRL_GE 3 +#define _MM_PCOMCTRL_EQ 4 +#define _MM_PCOMCTRL_NEQ 5 +#define _MM_PCOMCTRL_FALSE 6 +#define _MM_PCOMCTRL_TRUE 7 + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comlt_epu8(__m128i __A, __m128i __B) +{ + return _mm_com_epu8(__A, __B, _MM_PCOMCTRL_LT); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comle_epu8(__m128i __A, __m128i __B) +{ + return _mm_com_epu8(__A, __B, _MM_PCOMCTRL_LE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comgt_epu8(__m128i __A, __m128i __B) +{ + return _mm_com_epu8(__A, __B, _MM_PCOMCTRL_GT); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comge_epu8(__m128i __A, __m128i __B) +{ + return _mm_com_epu8(__A, __B, _MM_PCOMCTRL_GE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comeq_epu8(__m128i __A, __m128i __B) +{ + return _mm_com_epu8(__A, __B, _MM_PCOMCTRL_EQ); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comneq_epu8(__m128i __A, __m128i __B) +{ + return _mm_com_epu8(__A, __B, _MM_PCOMCTRL_NEQ); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comfalse_epu8(__m128i __A, __m128i __B) +{ + return _mm_com_epu8(__A, __B, _MM_PCOMCTRL_FALSE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comtrue_epu8(__m128i __A, __m128i __B) +{ + return _mm_com_epu8(__A, __B, _MM_PCOMCTRL_TRUE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comlt_epu16(__m128i __A, __m128i __B) +{ + return _mm_com_epu16(__A, __B, _MM_PCOMCTRL_LT); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comle_epu16(__m128i __A, __m128i __B) +{ + return _mm_com_epu16(__A, __B, _MM_PCOMCTRL_LE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comgt_epu16(__m128i __A, __m128i __B) +{ + return _mm_com_epu16(__A, __B, _MM_PCOMCTRL_GT); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comge_epu16(__m128i __A, __m128i __B) +{ + return _mm_com_epu16(__A, __B, _MM_PCOMCTRL_GE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comeq_epu16(__m128i __A, __m128i __B) +{ + return _mm_com_epu16(__A, __B, _MM_PCOMCTRL_EQ); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comneq_epu16(__m128i __A, __m128i __B) +{ + return _mm_com_epu16(__A, __B, _MM_PCOMCTRL_NEQ); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comfalse_epu16(__m128i __A, __m128i __B) +{ + return _mm_com_epu16(__A, __B, _MM_PCOMCTRL_FALSE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comtrue_epu16(__m128i __A, __m128i __B) +{ + return _mm_com_epu16(__A, __B, _MM_PCOMCTRL_TRUE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comlt_epu32(__m128i __A, __m128i __B) +{ + return _mm_com_epu32(__A, __B, _MM_PCOMCTRL_LT); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comle_epu32(__m128i __A, __m128i __B) +{ + return _mm_com_epu32(__A, __B, _MM_PCOMCTRL_LE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comgt_epu32(__m128i __A, __m128i __B) +{ + return _mm_com_epu32(__A, __B, _MM_PCOMCTRL_GT); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comge_epu32(__m128i __A, __m128i __B) +{ + return _mm_com_epu32(__A, __B, _MM_PCOMCTRL_GE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comeq_epu32(__m128i __A, __m128i __B) +{ + return _mm_com_epu32(__A, __B, _MM_PCOMCTRL_EQ); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comneq_epu32(__m128i __A, __m128i __B) +{ + return _mm_com_epu32(__A, __B, _MM_PCOMCTRL_NEQ); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comfalse_epu32(__m128i __A, __m128i __B) +{ + return _mm_com_epu32(__A, __B, _MM_PCOMCTRL_FALSE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comtrue_epu32(__m128i __A, __m128i __B) +{ + return _mm_com_epu32(__A, __B, _MM_PCOMCTRL_TRUE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comlt_epu64(__m128i __A, __m128i __B) +{ + return _mm_com_epu64(__A, __B, _MM_PCOMCTRL_LT); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comle_epu64(__m128i __A, __m128i __B) +{ + return _mm_com_epu64(__A, __B, _MM_PCOMCTRL_LE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comgt_epu64(__m128i __A, __m128i __B) +{ + return _mm_com_epu64(__A, __B, _MM_PCOMCTRL_GT); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comge_epu64(__m128i __A, __m128i __B) +{ + return _mm_com_epu64(__A, __B, _MM_PCOMCTRL_GE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comeq_epu64(__m128i __A, __m128i __B) +{ + return _mm_com_epu64(__A, __B, _MM_PCOMCTRL_EQ); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comneq_epu64(__m128i __A, __m128i __B) +{ + return _mm_com_epu64(__A, __B, _MM_PCOMCTRL_NEQ); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comfalse_epu64(__m128i __A, __m128i __B) +{ + return _mm_com_epu64(__A, __B, _MM_PCOMCTRL_FALSE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comtrue_epu64(__m128i __A, __m128i __B) +{ + return _mm_com_epu64(__A, __B, _MM_PCOMCTRL_TRUE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comlt_epi8(__m128i __A, __m128i __B) +{ + return _mm_com_epi8(__A, __B, _MM_PCOMCTRL_LT); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comle_epi8(__m128i __A, __m128i __B) +{ + return _mm_com_epi8(__A, __B, _MM_PCOMCTRL_LE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comgt_epi8(__m128i __A, __m128i __B) +{ + return _mm_com_epi8(__A, __B, _MM_PCOMCTRL_GT); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comge_epi8(__m128i __A, __m128i __B) +{ + return _mm_com_epi8(__A, __B, _MM_PCOMCTRL_GE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comeq_epi8(__m128i __A, __m128i __B) +{ + return _mm_com_epi8(__A, __B, _MM_PCOMCTRL_EQ); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comneq_epi8(__m128i __A, __m128i __B) +{ + return _mm_com_epi8(__A, __B, _MM_PCOMCTRL_NEQ); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comfalse_epi8(__m128i __A, __m128i __B) +{ + return _mm_com_epi8(__A, __B, _MM_PCOMCTRL_FALSE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comtrue_epi8(__m128i __A, __m128i __B) +{ + return _mm_com_epi8(__A, __B, _MM_PCOMCTRL_TRUE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comlt_epi16(__m128i __A, __m128i __B) +{ + return _mm_com_epi16(__A, __B, _MM_PCOMCTRL_LT); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comle_epi16(__m128i __A, __m128i __B) +{ + return _mm_com_epi16(__A, __B, _MM_PCOMCTRL_LE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comgt_epi16(__m128i __A, __m128i __B) +{ + return _mm_com_epi16(__A, __B, _MM_PCOMCTRL_GT); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comge_epi16(__m128i __A, __m128i __B) +{ + return _mm_com_epi16(__A, __B, _MM_PCOMCTRL_GE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comeq_epi16(__m128i __A, __m128i __B) +{ + return _mm_com_epi16(__A, __B, _MM_PCOMCTRL_EQ); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comneq_epi16(__m128i __A, __m128i __B) +{ + return _mm_com_epi16(__A, __B, _MM_PCOMCTRL_NEQ); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comfalse_epi16(__m128i __A, __m128i __B) +{ + return _mm_com_epi16(__A, __B, _MM_PCOMCTRL_FALSE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comtrue_epi16(__m128i __A, __m128i __B) +{ + return _mm_com_epi16(__A, __B, _MM_PCOMCTRL_TRUE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comlt_epi32(__m128i __A, __m128i __B) +{ + return _mm_com_epi32(__A, __B, _MM_PCOMCTRL_LT); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comle_epi32(__m128i __A, __m128i __B) +{ + return _mm_com_epi32(__A, __B, _MM_PCOMCTRL_LE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comgt_epi32(__m128i __A, __m128i __B) +{ + return _mm_com_epi32(__A, __B, _MM_PCOMCTRL_GT); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comge_epi32(__m128i __A, __m128i __B) +{ + return _mm_com_epi32(__A, __B, _MM_PCOMCTRL_GE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comeq_epi32(__m128i __A, __m128i __B) +{ + return _mm_com_epi32(__A, __B, _MM_PCOMCTRL_EQ); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comneq_epi32(__m128i __A, __m128i __B) +{ + return _mm_com_epi32(__A, __B, _MM_PCOMCTRL_NEQ); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comfalse_epi32(__m128i __A, __m128i __B) +{ + return _mm_com_epi32(__A, __B, _MM_PCOMCTRL_FALSE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comtrue_epi32(__m128i __A, __m128i __B) +{ + return _mm_com_epi32(__A, __B, _MM_PCOMCTRL_TRUE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comlt_epi64(__m128i __A, __m128i __B) +{ + return _mm_com_epi64(__A, __B, _MM_PCOMCTRL_LT); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comle_epi64(__m128i __A, __m128i __B) +{ + return _mm_com_epi64(__A, __B, _MM_PCOMCTRL_LE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comgt_epi64(__m128i __A, __m128i __B) +{ + return _mm_com_epi64(__A, __B, _MM_PCOMCTRL_GT); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comge_epi64(__m128i __A, __m128i __B) +{ + return _mm_com_epi64(__A, __B, _MM_PCOMCTRL_GE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comeq_epi64(__m128i __A, __m128i __B) +{ + return _mm_com_epi64(__A, __B, _MM_PCOMCTRL_EQ); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comneq_epi64(__m128i __A, __m128i __B) +{ + return _mm_com_epi64(__A, __B, _MM_PCOMCTRL_NEQ); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comfalse_epi64(__m128i __A, __m128i __B) +{ + return _mm_com_epi64(__A, __B, _MM_PCOMCTRL_FALSE); +} + +static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) +_mm_comtrue_epi64(__m128i __A, __m128i __B) +{ + return _mm_com_epi64(__A, __B, _MM_PCOMCTRL_TRUE); +} + +#define _mm_permute2_pd(X, Y, C, I) __extension__ ({ \ + __m128d __X = (X); \ + __m128d __Y = (Y); \ + __m128i __C = (C); \ + (__m128d)__builtin_ia32_vpermil2pd((__v2df)__X, (__v2df)__Y, \ + (__v2di)__C, (I)); }) + +#define _mm256_permute2_pd(X, Y, C, I) __extension__ ({ \ + __m256d __X = (X); \ + __m256d __Y = (Y); \ + __m256i __C = (C); \ + (__m256d)__builtin_ia32_vpermil2pd256((__v4df)__X, (__v4df)__Y, \ + (__v4di)__C, (I)); }) + +#define _mm_permute2_ps(X, Y, C, I) __extension__ ({ \ + __m128 __X = (X); \ + __m128 __Y = (Y); \ + __m128i __C = (C); \ + (__m128)__builtin_ia32_vpermil2ps((__v4sf)__X, (__v4sf)__Y, \ + (__v4si)__C, (I)); }) + +#define _mm256_permute2_ps(X, Y, C, I) __extension__ ({ \ + __m256 __X = (X); \ + __m256 __Y = (Y); \ + __m256i __C = (C); \ + (__m256)__builtin_ia32_vpermil2ps256((__v8sf)__X, (__v8sf)__Y, \ + (__v8si)__C, (I)); }) + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_frcz_ss(__m128 __A) +{ + return (__m128)__builtin_ia32_vfrczss((__v4sf)__A); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_frcz_sd(__m128d __A) +{ + return (__m128d)__builtin_ia32_vfrczsd((__v2df)__A); +} + +static __inline__ __m128 __attribute__((__always_inline__, __nodebug__)) +_mm_frcz_ps(__m128 __A) +{ + return (__m128)__builtin_ia32_vfrczps((__v4sf)__A); +} + +static __inline__ __m128d __attribute__((__always_inline__, __nodebug__)) +_mm_frcz_pd(__m128d __A) +{ + return (__m128d)__builtin_ia32_vfrczpd((__v2df)__A); +} + +static __inline__ __m256 __attribute__((__always_inline__, __nodebug__)) +_mm256_frcz_ps(__m256 __A) +{ + return (__m256)__builtin_ia32_vfrczps256((__v8sf)__A); +} + +static __inline__ __m256d __attribute__((__always_inline__, __nodebug__)) +_mm256_frcz_pd(__m256d __A) +{ + return (__m256d)__builtin_ia32_vfrczpd256((__v4df)__A); +} + +#endif /* __XOP__ */ + +#endif /* __XOPINTRIN_H */ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_allocation.rsh b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_allocation.rsh new file mode 100644 index 0000000..7dffa54 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_allocation.rsh @@ -0,0 +1,378 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** @file rs_allocation.rsh + * \brief Allocation routines + * + * + */ + +#ifndef __RS_ALLOCATION_RSH__ +#define __RS_ALLOCATION_RSH__ + +/** + * Returns the Allocation for a given pointer. The pointer should point within + * a valid allocation. The results are undefined if the pointer is not from a + * valid allocation. + * + * This function is deprecated and will be removed in the SDK from a future + * release. + */ +extern rs_allocation __attribute__((overloadable)) + rsGetAllocation(const void *); + +/** + * Query the dimension of an allocation. + * + * @return uint32_t The X dimension of the allocation. + */ +extern uint32_t __attribute__((overloadable)) + rsAllocationGetDimX(rs_allocation); + +/** + * Query the dimension of an allocation. + * + * @return uint32_t The Y dimension of the allocation. + */ +extern uint32_t __attribute__((overloadable)) + rsAllocationGetDimY(rs_allocation); + +/** + * Query the dimension of an allocation. + * + * @return uint32_t The Z dimension of the allocation. + */ +extern uint32_t __attribute__((overloadable)) + rsAllocationGetDimZ(rs_allocation); + +/** + * Query an allocation for the presence of more than one LOD. + * + * @return uint32_t Returns 1 if more than one LOD is present, 0 otherwise. + */ +extern uint32_t __attribute__((overloadable)) + rsAllocationGetDimLOD(rs_allocation); + +/** + * Query an allocation for the presence of more than one face. + * + * @return uint32_t Returns 1 if more than one face is present, 0 otherwise. + */ +extern uint32_t __attribute__((overloadable)) + rsAllocationGetDimFaces(rs_allocation); + +#if (defined(RS_VERSION) && (RS_VERSION >= 14)) + +/** + * Copy part of an allocation from another allocation. + * + * @param dstAlloc Allocation to copy data into. + * @param dstOff The offset of the first element to be copied in + * the destination allocation. + * @param dstMip Mip level in the destination allocation. + * @param count The number of elements to be copied. + * @param srcAlloc The source data allocation. + * @param srcOff The offset of the first element in data to be + * copied in the source allocation. + * @param srcMip Mip level in the source allocation. + */ +extern void __attribute__((overloadable)) + rsAllocationCopy1DRange(rs_allocation dstAlloc, + uint32_t dstOff, uint32_t dstMip, + uint32_t count, + rs_allocation srcAlloc, + uint32_t srcOff, uint32_t srcMip); + +/** + * Copy a rectangular region into the allocation from another + * allocation. + * + * @param dstAlloc allocation to copy data into. + * @param dstXoff X offset of the region to update in the + * destination allocation. + * @param dstYoff Y offset of the region to update in the + * destination allocation. + * @param dstMip Mip level in the destination allocation. + * @param dstFace Cubemap face of the destination allocation, + * ignored for allocations that aren't cubemaps. + * @param width Width of the incoming region to update. + * @param height Height of the incoming region to update. + * @param srcAlloc The source data allocation. + * @param srcXoff X offset in data of the source allocation. + * @param srcYoff Y offset in data of the source allocation. + * @param srcMip Mip level in the source allocation. + * @param srcFace Cubemap face of the source allocation, + * ignored for allocations that aren't cubemaps. + */ +extern void __attribute__((overloadable)) + rsAllocationCopy2DRange(rs_allocation dstAlloc, + uint32_t dstXoff, uint32_t dstYoff, + uint32_t dstMip, + rs_allocation_cubemap_face dstFace, + uint32_t width, uint32_t height, + rs_allocation srcAlloc, + uint32_t srcXoff, uint32_t srcYoff, + uint32_t srcMip, + rs_allocation_cubemap_face srcFace); + +#endif //defined(RS_VERSION) && (RS_VERSION >= 14) + +/** + * Extract a single element from an allocation. + */ +extern const void * __attribute__((overloadable)) + rsGetElementAt(rs_allocation a, uint32_t x); +/** + * \overload + */ +extern const void * __attribute__((overloadable)) + rsGetElementAt(rs_allocation a, uint32_t x, uint32_t y); +/** + * \overload + */ +extern const void * __attribute__((overloadable)) + rsGetElementAt(rs_allocation a, uint32_t x, uint32_t y, uint32_t z); + + +#if (defined(RS_VERSION) && (RS_VERSION >= 18)) + #define GET_ELEMENT_AT(T) \ + extern T __attribute__((overloadable)) \ + rsGetElementAt_##T(rs_allocation a, uint32_t x); \ + extern T __attribute__((overloadable)) \ + rsGetElementAt_##T(rs_allocation a, uint32_t x, uint32_t y); \ + extern T __attribute__((overloadable)) \ + rsGetElementAt_##T(rs_allocation a, uint32_t x, uint32_t y, uint32_t z); +#else + #define GET_ELEMENT_AT(T) \ + static inline T __attribute__((overloadable)) \ + rsGetElementAt_##T(rs_allocation a, uint32_t x) { \ + return ((T *)rsGetElementAt(a, x))[0]; \ + } \ + static inline T __attribute__((overloadable)) \ + rsGetElementAt_##T(rs_allocation a, uint32_t x, uint32_t y) { \ + return ((T *)rsGetElementAt(a, x, y))[0]; \ + } \ + static inline T __attribute__((overloadable)) \ + rsGetElementAt_##T(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) { \ + return ((T *)rsGetElementAt(a, x, y, z))[0]; \ + } +#endif + +GET_ELEMENT_AT(char) +GET_ELEMENT_AT(char2) +GET_ELEMENT_AT(char3) +GET_ELEMENT_AT(char4) +GET_ELEMENT_AT(uchar) +GET_ELEMENT_AT(uchar2) +GET_ELEMENT_AT(uchar3) +GET_ELEMENT_AT(uchar4) +GET_ELEMENT_AT(short) +GET_ELEMENT_AT(short2) +GET_ELEMENT_AT(short3) +GET_ELEMENT_AT(short4) +GET_ELEMENT_AT(ushort) +GET_ELEMENT_AT(ushort2) +GET_ELEMENT_AT(ushort3) +GET_ELEMENT_AT(ushort4) +GET_ELEMENT_AT(int) +GET_ELEMENT_AT(int2) +GET_ELEMENT_AT(int3) +GET_ELEMENT_AT(int4) +GET_ELEMENT_AT(uint) +GET_ELEMENT_AT(uint2) +GET_ELEMENT_AT(uint3) +GET_ELEMENT_AT(uint4) +GET_ELEMENT_AT(long) +GET_ELEMENT_AT(long2) +GET_ELEMENT_AT(long3) +GET_ELEMENT_AT(long4) +GET_ELEMENT_AT(ulong) +GET_ELEMENT_AT(ulong2) +GET_ELEMENT_AT(ulong3) +GET_ELEMENT_AT(ulong4) +GET_ELEMENT_AT(float) +GET_ELEMENT_AT(float2) +GET_ELEMENT_AT(float3) +GET_ELEMENT_AT(float4) +GET_ELEMENT_AT(double) +GET_ELEMENT_AT(double2) +GET_ELEMENT_AT(double3) +GET_ELEMENT_AT(double4) + +#undef GET_ELEMENT_AT + +// Jelly Bean +#if (defined(RS_VERSION) && (RS_VERSION >= 16)) + +/** + * Send the contents of the Allocation to the queue. + * @param a allocation to work on + */ +extern const void __attribute__((overloadable)) + rsAllocationIoSend(rs_allocation a); + +/** + * Receive a new set of contents from the queue. + * @param a allocation to work on + */ +extern const void __attribute__((overloadable)) + rsAllocationIoReceive(rs_allocation a); + + +/** + * Get the element object describing the allocation's layout + * @param a allocation to get data from + * @return element describing allocation layout + */ +extern rs_element __attribute__((overloadable)) + rsAllocationGetElement(rs_allocation a); + +/** + * Fetch allocation in a way described by the sampler + * @param a 1D allocation to sample from + * @param s sampler state + * @param location to sample from + */ +extern const float4 __attribute__((overloadable)) + rsSample(rs_allocation a, rs_sampler s, float location); +/** + * Fetch allocation in a way described by the sampler + * @param a 1D allocation to sample from + * @param s sampler state + * @param location to sample from + * @param lod mip level to sample from, for fractional values + * mip levels will be interpolated if + * RS_SAMPLER_LINEAR_MIP_LINEAR is used + */ +extern const float4 __attribute__((overloadable)) + rsSample(rs_allocation a, rs_sampler s, float location, float lod); + +/** + * Fetch allocation in a way described by the sampler + * @param a 2D allocation to sample from + * @param s sampler state + * @param location to sample from + */ +extern const float4 __attribute__((overloadable)) + rsSample(rs_allocation a, rs_sampler s, float2 location); + +/** + * Fetch allocation in a way described by the sampler + * @param a 2D allocation to sample from + * @param s sampler state + * @param location to sample from + * @param lod mip level to sample from, for fractional values + * mip levels will be interpolated if + * RS_SAMPLER_LINEAR_MIP_LINEAR is used + */ +extern const float4 __attribute__((overloadable)) + rsSample(rs_allocation a, rs_sampler s, float2 location, float lod); + +#endif // (defined(RS_VERSION) && (RS_VERSION >= 16)) + +#if (defined(RS_VERSION) && (RS_VERSION >= 18)) + +/** + * Set single element of an allocation. + */ +extern void __attribute__((overloadable)) + rsSetElementAt(rs_allocation a, void* ptr, uint32_t x); + +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsSetElementAt(rs_allocation a, void* ptr, uint32_t x, uint32_t y); + +#define SET_ELEMENT_AT(T) \ + extern void __attribute__((overloadable)) \ + rsSetElementAt_##T(rs_allocation a, T val, uint32_t x); \ + extern void __attribute__((overloadable)) \ + rsSetElementAt_##T(rs_allocation a, T val, uint32_t x, uint32_t y); \ + extern void __attribute__((overloadable)) \ + rsSetElementAt_##T(rs_allocation a, T val, uint32_t x, uint32_t y, uint32_t z); + + +SET_ELEMENT_AT(char) +SET_ELEMENT_AT(char2) +SET_ELEMENT_AT(char3) +SET_ELEMENT_AT(char4) +SET_ELEMENT_AT(uchar) +SET_ELEMENT_AT(uchar2) +SET_ELEMENT_AT(uchar3) +SET_ELEMENT_AT(uchar4) +SET_ELEMENT_AT(short) +SET_ELEMENT_AT(short2) +SET_ELEMENT_AT(short3) +SET_ELEMENT_AT(short4) +SET_ELEMENT_AT(ushort) +SET_ELEMENT_AT(ushort2) +SET_ELEMENT_AT(ushort3) +SET_ELEMENT_AT(ushort4) +SET_ELEMENT_AT(int) +SET_ELEMENT_AT(int2) +SET_ELEMENT_AT(int3) +SET_ELEMENT_AT(int4) +SET_ELEMENT_AT(uint) +SET_ELEMENT_AT(uint2) +SET_ELEMENT_AT(uint3) +SET_ELEMENT_AT(uint4) +SET_ELEMENT_AT(long) +SET_ELEMENT_AT(long2) +SET_ELEMENT_AT(long3) +SET_ELEMENT_AT(long4) +SET_ELEMENT_AT(ulong) +SET_ELEMENT_AT(ulong2) +SET_ELEMENT_AT(ulong3) +SET_ELEMENT_AT(ulong4) +SET_ELEMENT_AT(float) +SET_ELEMENT_AT(float2) +SET_ELEMENT_AT(float3) +SET_ELEMENT_AT(float4) +SET_ELEMENT_AT(double) +SET_ELEMENT_AT(double2) +SET_ELEMENT_AT(double3) +SET_ELEMENT_AT(double4) + +#undef SET_ELEMENT_AT + + +/** + * Extract a single element from an allocation. + */ +extern const uchar __attribute__((overloadable)) + rsGetElementAtYuv_uchar_Y(rs_allocation a, uint32_t x, uint32_t y); + +/** + * Extract a single element from an allocation. + * + * Coordinates are in the dimensions of the Y plane + */ +extern const uchar __attribute__((overloadable)) + rsGetElementAtYuv_uchar_U(rs_allocation a, uint32_t x, uint32_t y); + +/** + * Extract a single element from an allocation. + * + * Coordinates are in the dimensions of the Y plane + */ +extern const uchar __attribute__((overloadable)) + rsGetElementAtYuv_uchar_V(rs_allocation a, uint32_t x, uint32_t y); + +#endif // (defined(RS_VERSION) && (RS_VERSION >= 18)) + +#endif + diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_atomic.rsh b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_atomic.rsh new file mode 100644 index 0000000..a455edd --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_atomic.rsh @@ -0,0 +1,250 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** @file rs_atomic.rsh + * \brief Atomic routines + * + * + */ + +#ifndef __RS_ATOMIC_RSH__ +#define __RS_ATOMIC_RSH__ + +#if (defined(RS_VERSION) && (RS_VERSION >= 14)) + +/** + * Atomic add one to the value at addr. + * Equal to rsAtomicAdd(addr, 1) + * + * @param addr Address of value to increment + * + * @return old value + */ +extern int32_t __attribute__((overloadable)) + rsAtomicInc(volatile int32_t* addr); +/** + * Atomic add one to the value at addr. + * Equal to rsAtomicAdd(addr, 1) + * + * @param addr Address of value to increment + * + * @return old value + */ +extern uint32_t __attribute__((overloadable)) + rsAtomicInc(volatile uint32_t* addr); + +/** + * Atomic subtract one from the value at addr. Equal to rsAtomicSub(addr, 1) + * + * @param addr Address of value to decrement + * + * @return old value + */ +extern int32_t __attribute__((overloadable)) + rsAtomicDec(volatile int32_t* addr); +/** + * Atomic subtract one from the value at addr. Equal to rsAtomicSub(addr, 1) + * + * @param addr Address of value to decrement + * + * @return old value + */ +extern uint32_t __attribute__((overloadable)) + rsAtomicDec(volatile uint32_t* addr); + +/** + * Atomic add a value to the value at addr. addr[0] += value + * + * @param addr Address of value to modify + * @param value Amount to add to the value at addr + * + * @return old value + */ +extern int32_t __attribute__((overloadable)) + rsAtomicAdd(volatile int32_t* addr, int32_t value); +/** + * Atomic add a value to the value at addr. addr[0] += value + * + * @param addr Address of value to modify + * @param value Amount to add to the value at addr + * + * @return old value + */ +extern uint32_t __attribute__((overloadable)) + rsAtomicAdd(volatile uint32_t* addr, uint32_t value); + +/** + * Atomic Subtract a value from the value at addr. addr[0] -= value + * + * @param addr Address of value to modify + * @param value Amount to subtract from the value at addr + * + * @return old value + */ +extern int32_t __attribute__((overloadable)) + rsAtomicSub(volatile int32_t* addr, int32_t value); +/** + * Atomic Subtract a value from the value at addr. addr[0] -= value + * + * @param addr Address of value to modify + * @param value Amount to subtract from the value at addr + * + * @return old value + */ +extern uint32_t __attribute__((overloadable)) + rsAtomicSub(volatile uint32_t* addr, uint32_t value); + +/** + * Atomic Bitwise and a value from the value at addr. addr[0] &= value + * + * @param addr Address of value to modify + * @param value Amount to and with the value at addr + * + * @return old value + */ +extern int32_t __attribute__((overloadable)) + rsAtomicAnd(volatile int32_t* addr, int32_t value); +/** + * Atomic Bitwise and a value from the value at addr. addr[0] &= value + * + * @param addr Address of value to modify + * @param value Amount to and with the value at addr + * + * @return old value + */ +extern uint32_t __attribute__((overloadable)) + rsAtomicAnd(volatile uint32_t* addr, uint32_t value); + +/** + * Atomic Bitwise or a value from the value at addr. addr[0] |= value + * + * @param addr Address of value to modify + * @param value Amount to or with the value at addr + * + * @return old value + */ +extern int32_t __attribute__((overloadable)) + rsAtomicOr(volatile int32_t* addr, int32_t value); +/** + * Atomic Bitwise or a value from the value at addr. addr[0] |= value + * + * @param addr Address of value to modify + * @param value Amount to or with the value at addr + * + * @return old value + */ +extern uint32_t __attribute__((overloadable)) + rsAtomicOr(volatile uint32_t* addr, uint32_t value); + +/** + * Atomic Bitwise xor a value from the value at addr. addr[0] ^= value + * + * @param addr Address of value to modify + * @param value Amount to xor with the value at addr + * + * @return old value + */ +extern uint32_t __attribute__((overloadable)) + rsAtomicXor(volatile uint32_t* addr, uint32_t value); +/** + * Atomic Bitwise xor a value from the value at addr. addr[0] ^= value + * + * @param addr Address of value to modify + * @param value Amount to xor with the value at addr + * + * @return old value + */ +extern int32_t __attribute__((overloadable)) + rsAtomicXor(volatile int32_t* addr, int32_t value); + +/** + * Atomic Set the value at addr to the min of addr and value + * addr[0] = rsMin(addr[0], value) + * + * @param addr Address of value to modify + * @param value comparison value + * + * @return old value + */ +extern uint32_t __attribute__((overloadable)) + rsAtomicMin(volatile uint32_t* addr, uint32_t value); +/** + * Atomic Set the value at addr to the min of addr and value + * addr[0] = rsMin(addr[0], value) + * + * @param addr Address of value to modify + * @param value comparison value + * + * @return old value + */ +extern int32_t __attribute__((overloadable)) + rsAtomicMin(volatile int32_t* addr, int32_t value); + +/** + * Atomic Set the value at addr to the max of addr and value + * addr[0] = rsMax(addr[0], value) + * + * @param addr Address of value to modify + * @param value comparison value + * + * @return old value + */ +extern uint32_t __attribute__((overloadable)) + rsAtomicMax(volatile uint32_t* addr, uint32_t value); +/** + * Atomic Set the value at addr to the max of addr and value + * addr[0] = rsMin(addr[0], value) + * + * @param addr Address of value to modify + * @param value comparison value + * + * @return old value + */ +extern int32_t __attribute__((overloadable)) + rsAtomicMax(volatile int32_t* addr, int32_t value); + +/** + * Compare-and-set operation with a full memory barrier. + * + * If the value at addr matches compareValue then newValue is written. + * + * @param addr The address to compare and replace if the compare passes. + * @param compareValue The value to test addr[0] against. + * @param newValue The value to write if the test passes. + * + * @return old value + */ +extern int32_t __attribute__((overloadable)) + rsAtomicCas(volatile int32_t* addr, int32_t compareValue, int32_t newValue); + +/** + * Compare-and-set operation with a full memory barrier. + * + * If the value at addr matches compareValue then newValue is written. + * + * @param addr The address to compare and replace if the compare passes. + * @param compareValue The value to test addr[0] against. + * @param newValue The value to write if the test passes. + * + * @return old value + */ +extern uint32_t __attribute__((overloadable)) + rsAtomicCas(volatile uint32_t* addr, uint32_t compareValue, uint32_t newValue); + +#endif //defined(RS_VERSION) && (RS_VERSION >= 14) + +#endif + diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_cl.rsh b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_cl.rsh new file mode 100644 index 0000000..2ff5d8b --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_cl.rsh @@ -0,0 +1,1120 @@ +/* + * Copyright (C) 2011-2012 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** @file rs_cl.rsh + * \brief Basic math functions + * + * + */ + +#ifndef __RS_CL_RSH__ +#define __RS_CL_RSH__ + +// Conversions +#define CVT_FUNC_2(typeout, typein) \ +_RS_RUNTIME typeout##2 __attribute__((const, overloadable)) \ + convert_##typeout##2(typein##2 v); \ +_RS_RUNTIME typeout##3 __attribute__((const, overloadable)) \ + convert_##typeout##3(typein##3 v); \ +_RS_RUNTIME typeout##4 __attribute__((const, overloadable)) \ + convert_##typeout##4(typein##4 v); + + +#define CVT_FUNC(type) CVT_FUNC_2(type, uchar) \ + CVT_FUNC_2(type, char) \ + CVT_FUNC_2(type, ushort) \ + CVT_FUNC_2(type, short) \ + CVT_FUNC_2(type, uint) \ + CVT_FUNC_2(type, int) \ + CVT_FUNC_2(type, float) + +/** + * Convert to char. + * + * Supports 2,3,4 components of uchar, char, ushort, short, uint, int, float. + */ +CVT_FUNC(char) + +/** + * Convert to unsigned char. + * + * Supports 2,3,4 components of uchar, char, ushort, short, uint, int, float. + */ +CVT_FUNC(uchar) + +/** + * Convert to short. + * + * Supports 2,3,4 components of uchar, char, ushort, short, uint, int, float. + */ +CVT_FUNC(short) + +/** + * Convert to unsigned short. + * + * Supports 2,3,4 components of uchar, char, ushort, short, uint, int, float. + */ +CVT_FUNC(ushort) + +/** + * Convert to int. + * + * Supports 2,3,4 components of uchar, char, ushort, short, uint, int, float. + */ +CVT_FUNC(int) + +/** + * Convert to unsigned int. + * + * Supports 2,3,4 components of uchar, char, ushort, short, uint, int, float. + */ +CVT_FUNC(uint) + +/** + * Convert to float. + * + * Supports 2,3,4 components of uchar, char, ushort, short, uint, int, float. + */ +CVT_FUNC(float) + +// Float ops, 6.11.2 + +#ifdef DOXYGEN + +#define FN_FUNC_FN(fnc) +#define F_FUNC_FN(fnc) +#define IN_FUNC_FN(fnc) +#define FN_FUNC_FN_FN(fnc) +#define F_FUNC_FN_FN(fnc) +#define FN_FUNC_FN_F(fnc) +#define FN_FUNC_FN_IN(fnc) +#define FN_FUNC_FN_I(fnc) +#define FN_FUNC_FN_PFN(fnc) +#define FN_FUNC_FN_PIN(fnc) +#define FN_FUNC_FN_FN_FN(fnc) +#define FN_FUNC_FN_FN_F(fnc) +#define FN_FUNC_FN_F_F(fnc) +#define FN_FUNC_FN_FN_PIN(fnc) + +#else + +#define FN_FUNC_FN(fnc) \ +_RS_RUNTIME float2 __attribute__((const, overloadable)) fnc(float2 v); \ +_RS_RUNTIME float3 __attribute__((const, overloadable)) fnc(float3 v); \ +_RS_RUNTIME float4 __attribute__((const, overloadable)) fnc(float4 v); + +#define F_FUNC_FN(fnc) \ +_RS_RUNTIME float __attribute__((const, overloadable)) fnc(float2 v); \ +_RS_RUNTIME float __attribute__((const, overloadable)) fnc(float3 v); \ +_RS_RUNTIME float __attribute__((const, overloadable)) fnc(float4 v); + +#define IN_FUNC_FN(fnc) \ +_RS_RUNTIME int2 __attribute__((const, overloadable)) fnc(float2 v); \ +_RS_RUNTIME int3 __attribute__((const, overloadable)) fnc(float3 v); \ +_RS_RUNTIME int4 __attribute__((const, overloadable)) fnc(float4 v); + +#define FN_FUNC_FN_FN(fnc) \ +_RS_RUNTIME float2 __attribute__((const, overloadable)) fnc(float2 v1, float2 v2); \ +_RS_RUNTIME float3 __attribute__((const, overloadable)) fnc(float3 v1, float3 v2); \ +_RS_RUNTIME float4 __attribute__((const, overloadable)) fnc(float4 v1, float4 v2); + +#define F_FUNC_FN_FN(fnc) \ +_RS_RUNTIME float __attribute__((const, overloadable)) fnc(float2 v1, float2 v2); \ +_RS_RUNTIME float __attribute__((const, overloadable)) fnc(float3 v1, float3 v2); \ +_RS_RUNTIME float __attribute__((const, overloadable)) fnc(float4 v1, float4 v2); + +#define FN_FUNC_FN_F(fnc) \ +_RS_RUNTIME float2 __attribute__((const, overloadable)) fnc(float2 v1, float v2); \ +_RS_RUNTIME float3 __attribute__((const, overloadable)) fnc(float3 v1, float v2); \ +_RS_RUNTIME float4 __attribute__((const, overloadable)) fnc(float4 v1, float v2); + +#define FN_FUNC_FN_IN(fnc) \ +_RS_RUNTIME float2 __attribute__((const, overloadable)) fnc(float2 v1, int2 v2); \ +_RS_RUNTIME float3 __attribute__((const, overloadable)) fnc(float3 v1, int3 v2); \ +_RS_RUNTIME float4 __attribute__((const, overloadable)) fnc(float4 v1, int4 v2); + +#define FN_FUNC_FN_I(fnc) \ +_RS_RUNTIME float2 __attribute__((const, overloadable)) fnc(float2 v1, int v2); \ +_RS_RUNTIME float3 __attribute__((const, overloadable)) fnc(float3 v1, int v2); \ +_RS_RUNTIME float4 __attribute__((const, overloadable)) fnc(float4 v1, int v2); + +#define FN_FUNC_FN_PFN(fnc) \ +_RS_RUNTIME float2 __attribute__((pure, overloadable)) \ + fnc(float2 v1, float2 *v2); \ +_RS_RUNTIME float3 __attribute__((pure, overloadable)) \ + fnc(float3 v1, float3 *v2); \ +_RS_RUNTIME float4 __attribute__((pure, overloadable)) \ + fnc(float4 v1, float4 *v2); + +#define FN_FUNC_FN_PIN(fnc) \ +_RS_RUNTIME float2 __attribute__((pure, overloadable)) fnc(float2 v1, int2 *v2); \ +_RS_RUNTIME float3 __attribute__((pure, overloadable)) fnc(float3 v1, int3 *v2); \ +_RS_RUNTIME float4 __attribute__((pure, overloadable)) fnc(float4 v1, int4 *v2); + +#define FN_FUNC_FN_FN_FN(fnc) \ +_RS_RUNTIME float2 __attribute__((const, overloadable)) \ + fnc(float2 v1, float2 v2, float2 v3); \ +_RS_RUNTIME float3 __attribute__((const, overloadable)) \ + fnc(float3 v1, float3 v2, float3 v3); \ +_RS_RUNTIME float4 __attribute__((const, overloadable)) \ + fnc(float4 v1, float4 v2, float4 v3); + +#define FN_FUNC_FN_FN_F(fnc) \ +_RS_RUNTIME float2 __attribute__((const, overloadable)) \ + fnc(float2 v1, float2 v2, float v3); \ +_RS_RUNTIME float3 __attribute__((const, overloadable)) \ + fnc(float3 v1, float3 v2, float v3); \ +_RS_RUNTIME float4 __attribute__((const, overloadable)) \ + fnc(float4 v1, float4 v2, float v3); + +#define FN_FUNC_FN_F_F(fnc) \ +_RS_RUNTIME float2 __attribute__((const, overloadable)) \ + fnc(float2 v1, float v2, float v3); \ +_RS_RUNTIME float3 __attribute__((const, overloadable)) \ + fnc(float3 v1, float v2, float v3); \ +_RS_RUNTIME float4 __attribute__((const, overloadable)) \ + fnc(float4 v1, float v2, float v3); + +#define FN_FUNC_FN_FN_PIN(fnc) \ +_RS_RUNTIME float2 __attribute__((pure, overloadable)) \ + fnc(float2 v1, float2 v2, int2 *v3); \ +_RS_RUNTIME float3 __attribute__((pure, overloadable)) \ + fnc(float3 v1, float3 v2, int3 *v3); \ +_RS_RUNTIME float4 __attribute__((pure, overloadable)) \ + fnc(float4 v1, float4 v2, int4 *v3); + +#endif // DOXYGEN + + +/** + * Return the inverse cosine. + * + * Supports float, float2, float3, float4 + */ +extern float __attribute__((const, overloadable)) acos(float); +FN_FUNC_FN(acos) + +/** + * Return the inverse hyperbolic cosine. + * + * Supports float, float2, float3, float4 + */ +extern float __attribute__((const, overloadable)) acosh(float); +FN_FUNC_FN(acosh) + +/** + * Return the inverse cosine divided by PI. + * + * Supports float, float2, float3, float4 + */ +_RS_RUNTIME float __attribute__((const, overloadable)) acospi(float v); +FN_FUNC_FN(acospi) + +/** + * Return the inverse sine. + * + * Supports float, float2, float3, float4 + */ +extern float __attribute__((const, overloadable)) asin(float); +FN_FUNC_FN(asin) + +/** + * Return the inverse hyperbolic sine. + * + * Supports float, float2, float3, float4 + */ +extern float __attribute__((const, overloadable)) asinh(float); +FN_FUNC_FN(asinh) + + +/** + * Return the inverse sine divided by PI. + * + * Supports float, float2, float3, float4 + */ +_RS_RUNTIME float __attribute__((const, overloadable)) asinpi(float v); +FN_FUNC_FN(asinpi) + +/** + * Return the inverse tangent. + * + * Supports float, float2, float3, float4 + */ +extern float __attribute__((const, overloadable)) atan(float); +FN_FUNC_FN(atan) + +/** + * Return the inverse tangent of y / x. + * + * Supports float, float2, float3, float4. Both arguments must be of the same + * type. + * + * @param y + * @param x + */ +extern float __attribute__((const, overloadable)) atan2(float y, float x); +FN_FUNC_FN_FN(atan2) + +/** + * Return the inverse hyperbolic tangent. + * + * Supports float, float2, float3, float4 + */ +extern float __attribute__((const, overloadable)) atanh(float); +FN_FUNC_FN(atanh) + +/** + * Return the inverse tangent divided by PI. + * + * Supports float, float2, float3, float4 + */ +_RS_RUNTIME float __attribute__((const, overloadable)) atanpi(float v); +FN_FUNC_FN(atanpi) + +/** + * Return the inverse tangent of y / x, divided by PI. + * + * Supports float, float2, float3, float4. Both arguments must be of the same + * type. + * + * @param y + * @param x + */ +_RS_RUNTIME float __attribute__((const, overloadable)) atan2pi(float y, float x); +FN_FUNC_FN_FN(atan2pi) + + +/** + * Return the cube root. + * + * Supports float, float2, float3, float4. + */ +extern float __attribute__((const, overloadable)) cbrt(float); +FN_FUNC_FN(cbrt) + +/** + * Return the smallest integer not less than a value. + * + * Supports float, float2, float3, float4. + */ +extern float __attribute__((const, overloadable)) ceil(float); +FN_FUNC_FN(ceil) + +/** + * Copy the sign bit from y to x. + * + * Supports float, float2, float3, float4. Both arguments must be of the same + * type. + * + * @param x + * @param y + */ +extern float __attribute__((const, overloadable)) copysign(float x, float y); +FN_FUNC_FN_FN(copysign) + +/** + * Return the cosine. + * + * Supports float, float2, float3, float4. + */ +extern float __attribute__((const, overloadable)) cos(float); +FN_FUNC_FN(cos) + +/** + * Return the hypebolic cosine. + * + * Supports float, float2, float3, float4. + */ +extern float __attribute__((const, overloadable)) cosh(float); +FN_FUNC_FN(cosh) + +/** + * Return the cosine of the value * PI. + * + * Supports float, float2, float3, float4. + */ +_RS_RUNTIME float __attribute__((const, overloadable)) cospi(float v); +FN_FUNC_FN(cospi) + +/** + * Return the complementary error function. + * + * Supports float, float2, float3, float4. + */ +extern float __attribute__((const, overloadable)) erfc(float); +FN_FUNC_FN(erfc) + +/** + * Return the error function. + * + * Supports float, float2, float3, float4. + */ +extern float __attribute__((const, overloadable)) erf(float); +FN_FUNC_FN(erf) + +/** + * Return e ^ value. + * + * Supports float, float2, float3, float4. + */ +extern float __attribute__((const, overloadable)) exp(float); +FN_FUNC_FN(exp) + +/** + * Return 2 ^ value. + * + * Supports float, float2, float3, float4. + */ +extern float __attribute__((const, overloadable)) exp2(float); +FN_FUNC_FN(exp2) + +/** + * Return x ^ y. + * + * Supports float, float2, float3, float4. Both arguments must be of the same + * type. + */ +extern float __attribute__((const, overloadable)) pow(float x, float y); +FN_FUNC_FN_FN(pow) + +/** + * Return 10 ^ value. + * + * Supports float, float2, float3, float4. + */ +_RS_RUNTIME float __attribute__((const, overloadable)) exp10(float v); +FN_FUNC_FN(exp10) + +/** + * Return (e ^ value) - 1. + * + * Supports float, float2, float3, float4. + */ +extern float __attribute__((const, overloadable)) expm1(float); +FN_FUNC_FN(expm1) + +/** + * Return the absolute value of a value. + * + * Supports float, float2, float3, float4. + */ +extern float __attribute__((const, overloadable)) fabs(float); +FN_FUNC_FN(fabs) + +/** + * Return the positive difference between two values. + * + * Supports float, float2, float3, float4. Both arguments must be of the same + * type. + */ +extern float __attribute__((const, overloadable)) fdim(float, float); +FN_FUNC_FN_FN(fdim) + +/** + * Return the smallest integer not greater than a value. + * + * Supports float, float2, float3, float4. + */ +extern float __attribute__((const, overloadable)) floor(float); +FN_FUNC_FN(floor) + +/** + * Return a*b + c. + * + * Supports float, float2, float3, float4. + */ +extern float __attribute__((const, overloadable)) fma(float a, float b, float c); +FN_FUNC_FN_FN_FN(fma) + +/** + * Return (x < y ? y : x) + * + * Supports float, float2, float3, float4. + * @param x: may be float, float2, float3, float4 + * @param y: may be float or vector. If vector must match type of x. + */ +extern float __attribute__((const, overloadable)) fmax(float x, float y); +FN_FUNC_FN_FN(fmax); +FN_FUNC_FN_F(fmax); + +/** + * Return (x > y ? y : x) + * + * @param x: may be float, float2, float3, float4 + * @param y: may be float or vector. If vector must match type of x. + */ +extern float __attribute__((const, overloadable)) fmin(float x, float y); +FN_FUNC_FN_FN(fmin); +FN_FUNC_FN_F(fmin); + +/** + * Return the remainder from x / y + * + * Supports float, float2, float3, float4. + */ +extern float __attribute__((const, overloadable)) fmod(float x, float y); +FN_FUNC_FN_FN(fmod) + +/** + * Return fractional part of v + * + * @param iptr iptr[0] will be set to the floor of the input value. + * Supports float, float2, float3, float4. + */ +_RS_RUNTIME float __attribute__((pure, overloadable)) fract(float v, float *iptr); +FN_FUNC_FN_PFN(fract) + +/** + * Return fractional part of v + * + * Supports float, float2, float3, float4. + */ +static inline float __attribute__((const, overloadable)) fract(float v) { + float unused; + return fract(v, &unused); +} + +static inline float2 __attribute__((const, overloadable)) fract(float2 v) { + float2 unused; + return fract(v, &unused); +} + +static inline float3 __attribute__((const, overloadable)) fract(float3 v) { + float3 unused; + return fract(v, &unused); +} + +static inline float4 __attribute__((const, overloadable)) fract(float4 v) { + float4 unused; + return fract(v, &unused); +} + +/** + * Return the mantissa and place the exponent into iptr[0] + * + * @param v Supports float, float2, float3, float4. + * @param iptr Must have the same vector size as v. + */ +extern float __attribute__((pure, overloadable)) frexp(float v, int *iptr); +FN_FUNC_FN_PIN(frexp) + +/** + * Return sqrt(x*x + y*y) + * + * Supports float, float2, float3, float4. + */ +extern float __attribute__((const, overloadable)) hypot(float x, float y); +FN_FUNC_FN_FN(hypot) + +/** + * Return the integer exponent of a value + * + * Supports 1,2,3,4 components + */ +extern int __attribute__((const, overloadable)) ilogb(float); +IN_FUNC_FN(ilogb) + +/** + * Return (x * 2^y) + * + * @param x Supports 1,2,3,4 components + * @param y Supports single component or matching vector. + */ +extern float __attribute__((const, overloadable)) ldexp(float x, int y); +FN_FUNC_FN_IN(ldexp) +FN_FUNC_FN_I(ldexp) + +/** + * Return the log gamma + * + * Supports 1,2,3,4 components + */ +extern float __attribute__((const, overloadable)) lgamma(float); +FN_FUNC_FN(lgamma) + +/** + * Return the log gamma and sign + * + * @param x Supports 1,2,3,4 components + * @param y Supports matching vector. + */ +extern float __attribute__((pure, overloadable)) lgamma(float x, int* y); +FN_FUNC_FN_PIN(lgamma) + +/** + * Return the natural logarithm + * + * Supports 1,2,3,4 components + */ +extern float __attribute__((const, overloadable)) log(float); +FN_FUNC_FN(log) + +/** + * Return the base 10 logarithm + * + * Supports 1,2,3,4 components + */ +extern float __attribute__((const, overloadable)) log10(float); +FN_FUNC_FN(log10) + +/** + * Return the base 2 logarithm + * + * Supports 1,2,3,4 components + */ +_RS_RUNTIME float __attribute__((const, overloadable)) log2(float v); +FN_FUNC_FN(log2) + +/** + * Return the natural logarithm of (v + 1.0f) + * + * Supports 1,2,3,4 components + */ +extern float __attribute__((const, overloadable)) log1p(float v); +FN_FUNC_FN(log1p) + +/** + * Compute the exponent of the value. + * + * Supports 1,2,3,4 components + */ +extern float __attribute__((const, overloadable)) logb(float); +FN_FUNC_FN(logb) + +/** + * Compute (a * b) + c + * + * Supports 1,2,3,4 components + */ +extern float __attribute__((const, overloadable)) mad(float a, float b, float c); +FN_FUNC_FN_FN_FN(mad) + +/** + * Return the integral and fractional components of a number. + * Supports 1,2,3,4 components + * + * @param x Source value + * @param iret iret[0] will be set to the integral portion of the number. + * @return The floating point portion of the value. + */ +extern float __attribute__((pure, overloadable)) modf(float x, float *iret); +FN_FUNC_FN_PFN(modf); + +extern float __attribute__((const, overloadable)) nan(uint); + +/** + * Return the next floating point number from x towards y. + * + * Supports 1,2,3,4 components + */ +extern float __attribute__((const, overloadable)) nextafter(float x, float y); +FN_FUNC_FN_FN(nextafter) + +/** + * Return (v ^ p). + * + * Supports 1,2,3,4 components + */ +_RS_RUNTIME float __attribute__((const, overloadable)) pown(float v, int p); +FN_FUNC_FN_IN(pown) + +/** + * Return (v ^ p). + * @param v must be greater than 0. + * + * Supports 1,2,3,4 components + */ +_RS_RUNTIME float __attribute__((const, overloadable)) powr(float v, float p); +FN_FUNC_FN_FN(powr) + +/** + * Return round x/y to the nearest integer then compute the remander. + * + * Supports 1,2,3,4 components + */ +extern float __attribute__((const, overloadable)) remainder(float x, float y); +FN_FUNC_FN_FN(remainder) + +// document once we know the precision of bionic +extern float __attribute__((pure, overloadable)) remquo(float, float, int *); +FN_FUNC_FN_FN_PIN(remquo) + +/** + * Round to the nearest integral value. + * + * Supports 1,2,3,4 components + */ +extern float __attribute__((const, overloadable)) rint(float); +FN_FUNC_FN(rint) + +/** + * Compute the Nth root of a value. + * + * Supports 1,2,3,4 components + */ +_RS_RUNTIME float __attribute__((const, overloadable)) rootn(float v, int n); +FN_FUNC_FN_IN(rootn) + +/** + * Round to the nearest integral value. Half values are rounded away from zero. + * + * Supports 1,2,3,4 components + */ +extern float __attribute__((const, overloadable)) round(float); +FN_FUNC_FN(round) + +/** + * Return the square root of a value. + * + * Supports 1,2,3,4 components + */ +extern float __attribute__((const, overloadable)) sqrt(float); +FN_FUNC_FN(sqrt) + +/** + * Return (1 / sqrt(value)). + * + * Supports 1,2,3,4 components + */ +_RS_RUNTIME float __attribute__((const, overloadable)) rsqrt(float v); +FN_FUNC_FN(rsqrt) + +/** + * Return the sine of a value specified in radians. + * + * @param v The incoming value in radians + * Supports 1,2,3,4 components + */ +extern float __attribute__((const, overloadable)) sin(float v); +FN_FUNC_FN(sin) + +/** + * Return the sine and cosine of a value. + * + * @return sine + * @param v The incoming value in radians + * @param *cosptr cosptr[0] will be set to the cosine value. + * + * Supports 1,2,3,4 components + */ +_RS_RUNTIME float __attribute__((pure, overloadable)) sincos(float v, float *cosptr); +FN_FUNC_FN_PFN(sincos); + +/** + * Return the hyperbolic sine of a value specified in radians. + * + * Supports 1,2,3,4 components + */ +extern float __attribute__((const, overloadable)) sinh(float); +FN_FUNC_FN(sinh) + +/** + * Return the sin(v * PI). + * + * Supports 1,2,3,4 components + */ +_RS_RUNTIME float __attribute__((const, overloadable)) sinpi(float v); +FN_FUNC_FN(sinpi) + +/** + * Return the tangent of a value. + * + * Supports 1,2,3,4 components + * @param v The incoming value in radians + */ +extern float __attribute__((const, overloadable)) tan(float v); +FN_FUNC_FN(tan) + +/** + * Return the hyperbolic tangent of a value. + * + * Supports 1,2,3,4 components + * @param v The incoming value in radians + */ +extern float __attribute__((const, overloadable)) tanh(float); +FN_FUNC_FN(tanh) + +/** + * Return tan(v * PI) + * + * Supports 1,2,3,4 components + */ +_RS_RUNTIME float __attribute__((const, overloadable)) tanpi(float v); +FN_FUNC_FN(tanpi) + +/** + * Compute the gamma function of a value. + * + * Supports 1,2,3,4 components + */ +extern float __attribute__((const, overloadable)) tgamma(float); +FN_FUNC_FN(tgamma) + +/** + * Round to integral using truncation. + * + * Supports 1,2,3,4 components + */ +extern float __attribute__((const, overloadable)) trunc(float); +FN_FUNC_FN(trunc) + +#ifdef DOXYGEN + +#define XN_FUNC_YN(typeout, fnc, typein) \ +extern typeout __attribute__((overloadable)) fnc(typein v); + +#define XN_FUNC_XN_XN_BODY(type, fnc, body) \ +_RS_RUNTIME type __attribute__((overloadable)) \ + fnc(type v1, type v2); + +#else + +#define XN_FUNC_YN(typeout, fnc, typein) \ +extern typeout __attribute__((const, overloadable)) fnc(typein v); \ +_RS_RUNTIME typeout##2 __attribute__((const, overloadable)) fnc(typein##2 v); \ +_RS_RUNTIME typeout##3 __attribute__((const, overloadable)) fnc(typein##3 v); \ +_RS_RUNTIME typeout##4 __attribute__((const, overloadable)) fnc(typein##4 v); + +#define XN_FUNC_XN_XN_BODY(type, fnc, body) \ +_RS_RUNTIME type __attribute__((const, overloadable)) \ + fnc(type v1, type v2); \ +_RS_RUNTIME type##2 __attribute__((const, overloadable)) \ + fnc(type##2 v1, type##2 v2); \ +_RS_RUNTIME type##3 __attribute__((const, overloadable)) \ + fnc(type##3 v1, type##3 v2); \ +_RS_RUNTIME type##4 __attribute__((const, overloadable)) \ + fnc(type##4 v1, type##4 v2); + +#endif // DOXYGEN + +#define UIN_FUNC_IN(fnc) \ +XN_FUNC_YN(uchar, fnc, char) \ +XN_FUNC_YN(ushort, fnc, short) \ +XN_FUNC_YN(uint, fnc, int) + +#define IN_FUNC_IN(fnc) \ +XN_FUNC_YN(uchar, fnc, uchar) \ +XN_FUNC_YN(char, fnc, char) \ +XN_FUNC_YN(ushort, fnc, ushort) \ +XN_FUNC_YN(short, fnc, short) \ +XN_FUNC_YN(uint, fnc, uint) \ +XN_FUNC_YN(int, fnc, int) + +#define IN_FUNC_IN_IN_BODY(fnc, body) \ +XN_FUNC_XN_XN_BODY(uchar, fnc, body) \ +XN_FUNC_XN_XN_BODY(char, fnc, body) \ +XN_FUNC_XN_XN_BODY(ushort, fnc, body) \ +XN_FUNC_XN_XN_BODY(short, fnc, body) \ +XN_FUNC_XN_XN_BODY(uint, fnc, body) \ +XN_FUNC_XN_XN_BODY(int, fnc, body) \ +XN_FUNC_XN_XN_BODY(float, fnc, body) + +/** + * \fn uchar abs(char) + * Return the absolute value of a value. + * + * Supports 1,2,3,4 components of char, short, int. + */ +UIN_FUNC_IN(abs) + +/** + * Return the number of leading 0-bits in a value. + * + * Supports 1,2,3,4 components of uchar, char, ushort, short, uint, int. + */ +IN_FUNC_IN(clz) + +/** + * Return the minimum of two values. + * + * Supports 1,2,3,4 components of uchar, char, ushort, short, uint, int, float. + */ +IN_FUNC_IN_IN_BODY(min, (v1 < v2 ? v1 : v2)) +FN_FUNC_FN_F(min) + +/** + * Return the maximum of two values. + * + * Supports 1,2,3,4 components of uchar, char, ushort, short, uint, int, float. + */ +IN_FUNC_IN_IN_BODY(max, (v1 > v2 ? v1 : v2)) +FN_FUNC_FN_F(max) + +/** + * Clamp a value to a specified high and low bound. + * + * @param amount value to be clamped. Supports 1,2,3,4 components + * @param low Lower bound, must be scalar or matching vector. + * @param high High bound, must match type of low + */ + +#if !defined(RS_VERSION) || (RS_VERSION < 19) +_RS_RUNTIME float __attribute__((const, overloadable)) clamp(float amount, float low, float high); +FN_FUNC_FN_FN_FN(clamp) +FN_FUNC_FN_F_F(clamp) +#else +#define _CLAMP(T) \ +extern T __attribute__((overloadable)) clamp(T amount, T low, T high); \ +extern T##2 __attribute__((overloadable)) clamp(T##2 amount, T##2 low, T##2 high); \ +extern T##3 __attribute__((overloadable)) clamp(T##3 amount, T##3 low, T##3 high); \ +extern T##4 __attribute__((overloadable)) clamp(T##4 amount, T##4 low, T##4 high); \ +extern T##2 __attribute__((overloadable)) clamp(T##2 amount, T low, T high); \ +extern T##3 __attribute__((overloadable)) clamp(T##3 amount, T low, T high); \ +extern T##4 __attribute__((overloadable)) clamp(T##4 amount, T low, T high) + +_CLAMP(float); +_CLAMP(double); +_CLAMP(char); +_CLAMP(uchar); +_CLAMP(short); +_CLAMP(ushort); +_CLAMP(int); +_CLAMP(uint); +_CLAMP(long); +_CLAMP(ulong); + +#undef _CLAMP +#endif + +/** + * Convert from radians to degrees. + * + * Supports 1,2,3,4 components + */ +_RS_RUNTIME float __attribute__((const, overloadable)) degrees(float radians); +FN_FUNC_FN(degrees) + +/** + * return start + ((stop - start) * amount); + * + * Supports 1,2,3,4 components + */ +_RS_RUNTIME float __attribute__((const, overloadable)) mix(float start, float stop, float amount); +FN_FUNC_FN_FN_FN(mix) +FN_FUNC_FN_FN_F(mix) + +/** + * Convert from degrees to radians. + * + * Supports 1,2,3,4 components + */ +_RS_RUNTIME float __attribute__((const, overloadable)) radians(float degrees); +FN_FUNC_FN(radians) + +/** + * if (v < edge) + * return 0.f; + * else + * return 1.f; + * + * Supports 1,2,3,4 components + */ +_RS_RUNTIME float __attribute__((const, overloadable)) step(float edge, float v); +FN_FUNC_FN_FN(step) +FN_FUNC_FN_F(step) + +// not implemented +extern float __attribute__((const, overloadable)) smoothstep(float, float, float); +extern float2 __attribute__((const, overloadable)) smoothstep(float2, float2, float2); +extern float3 __attribute__((const, overloadable)) smoothstep(float3, float3, float3); +extern float4 __attribute__((const, overloadable)) smoothstep(float4, float4, float4); +extern float2 __attribute__((const, overloadable)) smoothstep(float, float, float2); +extern float3 __attribute__((const, overloadable)) smoothstep(float, float, float3); +extern float4 __attribute__((const, overloadable)) smoothstep(float, float, float4); + +/** + * Return the sign of a value. + * + * if (v < 0) return -1.f; + * else if (v > 0) return 1.f; + * else return 0.f; + * + * Supports 1,2,3,4 components + */ +_RS_RUNTIME float __attribute__((const, overloadable)) sign(float v); +FN_FUNC_FN(sign) + +/** + * Compute the cross product of two vectors. + * + * Supports 3,4 components + */ +_RS_RUNTIME float3 __attribute__((const, overloadable)) cross(float3 lhs, float3 rhs); +_RS_RUNTIME float4 __attribute__((const, overloadable)) cross(float4 lhs, float4 rhs); + +/** + * Compute the dot product of two vectors. + * + * Supports 1,2,3,4 components + */ +_RS_RUNTIME float __attribute__((const, overloadable)) dot(float lhs, float rhs); +F_FUNC_FN_FN(dot) + +/** + * Compute the length of a vector. + * + * Supports 1,2,3,4 components + */ +_RS_RUNTIME float __attribute__((const, overloadable)) length(float v); +F_FUNC_FN(length) + +/** + * Compute the distance between two points. + * + * Supports 1,2,3,4 components + */ +_RS_RUNTIME float __attribute__((const, overloadable)) distance(float lhs, float rhs); +F_FUNC_FN_FN(distance) + +/** + * Normalize a vector. + * + * Supports 1,2,3,4 components + */ +_RS_RUNTIME float __attribute__((const, overloadable)) normalize(float v); +FN_FUNC_FN(normalize) + + +// New approx API functions +#if (defined(RS_VERSION) && (RS_VERSION >= 17)) + +/** + * Return the approximate reciprocal of a value. + * + * Supports 1,2,3,4 components + */ +_RS_RUNTIME float __attribute__((const, overloadable)) half_recip(float); +FN_FUNC_FN(half_recip) + +/** + * Return the approximate square root of a value. + * + * Supports 1,2,3,4 components + */ +_RS_RUNTIME float __attribute__((const, overloadable)) half_sqrt(float); +FN_FUNC_FN(half_sqrt) + +/** + * Return the approximate value of (1 / sqrt(value)). + * + * Supports 1,2,3,4 components + */ +_RS_RUNTIME float __attribute__((const, overloadable)) half_rsqrt(float v); +FN_FUNC_FN(half_rsqrt) + +/** + * Compute the approximate length of a vector. + * + * Supports 1,2,3,4 components + */ +_RS_RUNTIME float __attribute__((const, overloadable)) fast_length(float v); +F_FUNC_FN(fast_length) + +/** + * Compute the approximate distance between two points. + * + * Supports 1,2,3,4 components + */ +_RS_RUNTIME float __attribute__((const, overloadable)) fast_distance(float lhs, float rhs); +F_FUNC_FN_FN(fast_distance) + +/** + * Approximately normalize a vector. + * + * Supports 1,2,3,4 components + */ +_RS_RUNTIME float __attribute__((const, overloadable)) fast_normalize(float v); +F_FUNC_FN(fast_normalize) + +#endif // (defined(RS_VERSION) && (RS_VERSION >= 17)) + + + +#if (defined(RS_VERSION) && (RS_VERSION >= 18)) +// Fast native math functions. + + +/** + * Fast approximate exp2 + * valid for inputs -125.f to 125.f + * Max 8192 ulps of error + * + * Supports 1,2,3,4 components + */ +_RS_RUNTIME float __attribute__((const, overloadable)) native_exp2(float v); +FN_FUNC_FN(native_exp2) + +/** + * Fast approximate exp + * valid for inputs -86.f to 86.f + * Max 8192 ulps of error + * + * Supports 1,2,3,4 components + */ +_RS_RUNTIME float __attribute__((const, overloadable)) native_exp(float v); +FN_FUNC_FN(native_exp) + +/** + * Fast approximate exp10 + * valid for inputs -37.f to 37.f + * Max 8192 ulps of error + * + * Supports 1,2,3,4 components + */ +_RS_RUNTIME float __attribute__((const, overloadable)) native_exp10(float v); +FN_FUNC_FN(native_exp10) + + +_RS_RUNTIME float __attribute__((const, overloadable)) native_log2(float v); +FN_FUNC_FN(native_log2) + +_RS_RUNTIME float __attribute__((const, overloadable)) native_log(float v); +FN_FUNC_FN(native_log) + +_RS_RUNTIME float __attribute__((const, overloadable)) native_log10(float v); +FN_FUNC_FN(native_log10) + + +_RS_RUNTIME float __attribute__((const, overloadable)) native_powr(float v, float y); +FN_FUNC_FN_FN(native_powr) + + +#endif // (defined(RS_VERSION) && (RS_VERSION >= 18)) + + +#undef CVT_FUNC +#undef CVT_FUNC_2 +#undef FN_FUNC_FN +#undef F_FUNC_FN +#undef IN_FUNC_FN +#undef FN_FUNC_FN_FN +#undef F_FUNC_FN_FN +#undef FN_FUNC_FN_F +#undef FN_FUNC_FN_IN +#undef FN_FUNC_FN_I +#undef FN_FUNC_FN_PFN +#undef FN_FUNC_FN_PIN +#undef FN_FUNC_FN_FN_FN +#undef FN_FUNC_FN_FN_F +#undef FN_FUNC_FN_F_F +#undef FN_FUNC_FN_FN_PIN +#undef XN_FUNC_YN +#undef UIN_FUNC_IN +#undef IN_FUNC_IN +#undef XN_FUNC_XN_XN_BODY +#undef IN_FUNC_IN_IN_BODY + +#endif diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_core.rsh b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_core.rsh new file mode 100644 index 0000000..9caf355 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_core.rsh @@ -0,0 +1,189 @@ +/* + * Copyright (C) 2011-2012 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /*! \mainpage notitle + * + * RenderScript is a high-performance runtime that provides + * compute operations at the native level. RenderScript code is compiled on devices + * at runtime to allow platform-independence as well. + * This reference documentation describes the RenderScript runtime APIs, which you + * can utilize to write RenderScript code in C99. The RenderScript compute header + * files are automatically included for you. + * + * To use RenderScript, you need to utilize the RenderScript runtime APIs documented here + * as well as the Android framework APIs for RenderScript. + * For documentation on the Android framework APIs, see the + * android.renderscript package reference. + * For more information on how to develop with RenderScript and how the runtime and + * Android framework APIs interact, see the RenderScript + * developer guide and the + * RenderScript samples. + */ + +/** @file rs_core.rsh + * \brief todo-jsams + * + * todo-jsams + * + */ + +#ifndef __RS_CORE_RSH__ +#define __RS_CORE_RSH__ + +#define _RS_RUNTIME extern + +#include "rs_types.rsh" +#include "rs_allocation.rsh" +#include "rs_atomic.rsh" +#include "rs_cl.rsh" +#include "rs_debug.rsh" +#include "rs_element.rsh" +#include "rs_math.rsh" +#include "rs_matrix.rsh" +#include "rs_object.rsh" +#include "rs_quaternion.rsh" +#include "rs_sampler.rsh" +#include "rs_time.rsh" + +/** + * Send a message back to the client. Will not block and returns true + * if the message was sendable and false if the fifo was full. + * A message ID is required. Data payload is optional. + */ +extern bool __attribute__((overloadable)) + rsSendToClient(int cmdID); +/** + * \overload + */ +extern bool __attribute__((overloadable)) + rsSendToClient(int cmdID, const void *data, uint len); +/** + * Send a message back to the client, blocking until the message is queued. + * A message ID is required. Data payload is optional. + */ +extern void __attribute__((overloadable)) + rsSendToClientBlocking(int cmdID); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsSendToClientBlocking(int cmdID, const void *data, uint len); + + +/** + * Launch order hint for rsForEach calls. This provides a hint to the system to + * determine in which order the root function of the target is called with each + * cell of the allocation. + * + * This is a hint and implementations may not obey the order. + */ +enum rs_for_each_strategy { + RS_FOR_EACH_STRATEGY_SERIAL = 0, + RS_FOR_EACH_STRATEGY_DONT_CARE = 1, + RS_FOR_EACH_STRATEGY_DST_LINEAR = 2, + RS_FOR_EACH_STRATEGY_TILE_SMALL= 3, + RS_FOR_EACH_STRATEGY_TILE_MEDIUM = 4, + RS_FOR_EACH_STRATEGY_TILE_LARGE = 5 +}; + + +/** + * Structure to provide extra information to a rsForEach call. Primarly used to + * restrict the call to a subset of cells in the allocation. + */ +typedef struct rs_script_call { + enum rs_for_each_strategy strategy; + uint32_t xStart; + uint32_t xEnd; + uint32_t yStart; + uint32_t yEnd; + uint32_t zStart; + uint32_t zEnd; + uint32_t arrayStart; + uint32_t arrayEnd; +} rs_script_call_t; + +/** + * Make a script to script call to launch work. One of the input or output is + * required to be a valid object. The input and output must be of the same + * dimensions. + * API 10-13 + * + * @param script The target script to call + * @param input The allocation to source data from + * @param output the allocation to write date into + * @param usrData The user definied params to pass to the root script. May be + * NULL. + * @param sc Extra control infomation used to select a sub-region of the + * allocation to be processed or suggest a walking strategy. May be + * NULL. + * + * */ +#if !defined(RS_VERSION) || (RS_VERSION < 14) +extern void __attribute__((overloadable)) + rsForEach(rs_script script, rs_allocation input, + rs_allocation output, const void * usrData, + const rs_script_call_t *sc); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsForEach(rs_script script, rs_allocation input, + rs_allocation output, const void * usrData); +#else + +/** + * Make a script to script call to launch work. One of the input or output is + * required to be a valid object. The input and output must be of the same + * dimensions. + * API 14+ + * + * @param script The target script to call + * @param input The allocation to source data from + * @param output the allocation to write date into + * @param usrData The user definied params to pass to the root script. May be + * NULL. + * @param usrDataLen The size of the userData structure. This will be used to + * perform a shallow copy of the data if necessary. + * @param sc Extra control infomation used to select a sub-region of the + * allocation to be processed or suggest a walking strategy. May be + * NULL. + * + */ +extern void __attribute__((overloadable)) + rsForEach(rs_script script, rs_allocation input, rs_allocation output, + const void * usrData, size_t usrDataLen, const rs_script_call_t *); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsForEach(rs_script script, rs_allocation input, rs_allocation output, + const void * usrData, size_t usrDataLen); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsForEach(rs_script script, rs_allocation input, rs_allocation output); +#endif + + + +#undef _RS_RUNTIME + +#endif diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_debug.rsh b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_debug.rsh new file mode 100644 index 0000000..7a13c9d --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_debug.rsh @@ -0,0 +1,267 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** @file rs_debug.rsh + * \brief Utility debugging routines + * + * Routines intended to be used during application developement. These should + * not be used in shipping applications. All print a string and value pair to + * the standard log. + * + */ + +#ifndef __RS_DEBUG_RSH__ +#define __RS_DEBUG_RSH__ + + +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, float); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, float, float); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, float, float, float); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, float, float, float, float); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, float2); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, float3); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, float4); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, double); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, const rs_matrix4x4 *); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, const rs_matrix3x3 *); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, const rs_matrix2x2 *); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, int); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, uint); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, long); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, unsigned long); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, long long); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, unsigned long long); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, const void *); + +#if (defined(RS_VERSION) && (RS_VERSION >= 17)) +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, char); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, char2); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, char3); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, char4); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, unsigned char); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, uchar2); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, uchar3); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, uchar4); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, short); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, short2); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, short3); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, short4); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, unsigned short); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, ushort2); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, ushort3); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, ushort4); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, int2); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, int3); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, int4); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, uint2); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, uint3); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, uint4); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, long2); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, long3); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, long4); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, ulong2); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, ulong3); +/** + * Debug function. Prints a string and value to the log. + */ +extern void __attribute__((overloadable)) + rsDebug(const char *, ulong4); +#endif // (defined(RS_VERSION) && (RS_VERSION >= 17)) + +#define RS_DEBUG(a) rsDebug(#a, a) +#define RS_DEBUG_MARKER rsDebug(__FILE__, __LINE__) + +#endif diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_element.rsh b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_element.rsh new file mode 100644 index 0000000..0230f10 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_element.rsh @@ -0,0 +1,143 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** @file rs_element.rsh + * \brief Element routines + * + * + */ + +#ifndef __RS_ELEMENT_RSH__ +#define __RS_ELEMENT_RSH__ + +// New API's +#if (defined(RS_VERSION) && (RS_VERSION >= 16)) + +/** + * Elements could be simple, such as an int or a float, or a + * structure with multiple sub elements, such as a collection of + * floats, float2, float4. This function returns zero for simple + * elements or the number of sub-elements otherwise. + * + * @param e element to get data from + * @return number of sub-elements in this element + */ +extern uint32_t __attribute__((overloadable)) + rsElementGetSubElementCount(rs_element e); + +/** + * For complex elements, this function will return the + * sub-element at index + * + * @param e element to get data from + * @param index index of the sub-element to return + * @return sub-element in this element at given index + */ +extern rs_element __attribute__((overloadable)) + rsElementGetSubElement(rs_element, uint32_t index); + +/** + * For complex elements, this function will return the length of + * sub-element name at index + * + * @param e element to get data from + * @param index index of the sub-element to return + * @return length of the sub-element name including the null + * terminator (size of buffer needed to write the name) + */ +extern uint32_t __attribute__((overloadable)) + rsElementGetSubElementNameLength(rs_element e, uint32_t index); + +/** + * For complex elements, this function will return the + * sub-element name at index + * + * @param e element to get data from + * @param index index of the sub-element + * @param name array to store the name into + * @param nameLength length of the provided name array + * @return number of characters actually written, excluding the + * null terminator + */ +extern uint32_t __attribute__((overloadable)) + rsElementGetSubElementName(rs_element e, uint32_t index, char *name, uint32_t nameLength); + +/** + * For complex elements, some sub-elements could be statically + * sized arrays. This function will return the array size for + * sub-element at index + * + * @param e element to get data from + * @param index index of the sub-element + * @return array size of sub-element in this element at given + * index + */ +extern uint32_t __attribute__((overloadable)) + rsElementGetSubElementArraySize(rs_element e, uint32_t index); + +/** + * This function specifies the location of a sub-element within + * the element + * + * @param e element to get data from + * @param index index of the sub-element + * @return offset in bytes of sub-element in this element at + * given index + */ +extern uint32_t __attribute__((overloadable)) + rsElementGetSubElementOffsetBytes(rs_element e, uint32_t index); + +/** + * Returns the size of element in bytes + * + * @param e element to get data from + * @return total size of the element in bytes + */ +extern uint32_t __attribute__((overloadable)) + rsElementGetBytesSize(rs_element e); + +/** + * Returns the element's data type + * + * @param e element to get data from + * @return element's data type + */ +extern rs_data_type __attribute__((overloadable)) + rsElementGetDataType(rs_element e); + +/** + * Returns the element's data kind + * + * @param e element to get data from + * @return element's data size + */ +extern rs_data_kind __attribute__((overloadable)) + rsElementGetDataKind(rs_element e); + +/** + * Returns the element's vector size + * + * @param e element to get data from + * @return length of the element vector (for float2, float3, + * etc.) + */ +extern uint32_t __attribute__((overloadable)) + rsElementGetVectorSize(rs_element e); + +#endif // (defined(RS_VERSION) && (RS_VERSION >= 16)) + +#endif // __RS_ELEMENT_RSH__ + diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_graphics.rsh b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_graphics.rsh new file mode 100644 index 0000000..782b27f --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_graphics.rsh @@ -0,0 +1,421 @@ +/* + * Copyright (C) 2011-2012 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** @file rs_graphics.rsh + * \brief RenderScript graphics API + * + * A set of graphics functions used by RenderScript. + * + */ +#ifndef __RS_GRAPHICS_RSH__ +#define __RS_GRAPHICS_RSH__ + +#include "rs_mesh.rsh" +#include "rs_program.rsh" + +#if (defined(RS_VERSION) && (RS_VERSION >= 14)) +/** + * Set the color target used for all subsequent rendering calls + * @param colorTarget + * @param slot + */ +extern void __attribute__((overloadable)) + rsgBindColorTarget(rs_allocation colorTarget, uint slot); + +/** + * Clear the previously set color target + * @param slot + */ +extern void __attribute__((overloadable)) + rsgClearColorTarget(uint slot); + +/** + * Set the depth target used for all subsequent rendering calls + * @param depthTarget + */ +extern void __attribute__((overloadable)) + rsgBindDepthTarget(rs_allocation depthTarget); + +/** + * Clear the previously set depth target + */ +extern void __attribute__((overloadable)) + rsgClearDepthTarget(void); + +/** + * Clear all color and depth targets and resume rendering into + * the framebuffer + */ +extern void __attribute__((overloadable)) + rsgClearAllRenderTargets(void); + +/** + * Force RenderScript to finish all rendering commands + */ +extern uint __attribute__((overloadable)) + rsgFinish(void); + +#endif //defined(RS_VERSION) && (RS_VERSION >= 14) + +/** + * Bind a new ProgramFragment to the rendering context. + * + * @param pf + */ +extern void __attribute__((overloadable)) + rsgBindProgramFragment(rs_program_fragment pf); + +/** + * Bind a new ProgramStore to the rendering context. + * + * @param ps + */ +extern void __attribute__((overloadable)) + rsgBindProgramStore(rs_program_store ps); + +/** + * Bind a new ProgramVertex to the rendering context. + * + * @param pv + */ +extern void __attribute__((overloadable)) + rsgBindProgramVertex(rs_program_vertex pv); + +/** + * Bind a new ProgramRaster to the rendering context. + * + * @param pr + */ +extern void __attribute__((overloadable)) + rsgBindProgramRaster(rs_program_raster pr); + +/** + * Bind a new Sampler object to a ProgramFragment. The sampler will + * operate on the texture bound at the matching slot. + * + * @param slot + */ +extern void __attribute__((overloadable)) + rsgBindSampler(rs_program_fragment, uint slot, rs_sampler); + +/** + * Bind a new Allocation object to a ProgramFragment. The + * Allocation must be a valid texture for the Program. The sampling + * of the texture will be controled by the Sampler bound at the + * matching slot. + * + * @param slot + */ +extern void __attribute__((overloadable)) + rsgBindTexture(rs_program_fragment, uint slot, rs_allocation); + +/** + * Load the projection matrix for a currently bound fixed function + * vertex program. Calling this function with a custom vertex shader + * would result in an error. + * @param proj projection matrix + */ +extern void __attribute__((overloadable)) + rsgProgramVertexLoadProjectionMatrix(const rs_matrix4x4 *proj); +/** + * Load the model matrix for a currently bound fixed function + * vertex program. Calling this function with a custom vertex shader + * would result in an error. + * @param model model matrix + */ +extern void __attribute__((overloadable)) + rsgProgramVertexLoadModelMatrix(const rs_matrix4x4 *model); +/** + * Load the texture matrix for a currently bound fixed function + * vertex program. Calling this function with a custom vertex shader + * would result in an error. + * @param tex texture matrix + */ +extern void __attribute__((overloadable)) + rsgProgramVertexLoadTextureMatrix(const rs_matrix4x4 *tex); +/** + * Get the projection matrix for a currently bound fixed function + * vertex program. Calling this function with a custom vertex shader + * would result in an error. + * @param proj matrix to store the current projection matrix into + */ +extern void __attribute__((overloadable)) + rsgProgramVertexGetProjectionMatrix(rs_matrix4x4 *proj); + +/** + * Set the constant color for a fixed function emulation program. + * + * @param pf + * @param r + * @param g + * @param b + * @param a + */ +extern void __attribute__((overloadable)) + rsgProgramFragmentConstantColor(rs_program_fragment pf, float r, float g, float b, float a); + +/** + * Bind a new Allocation object to a ProgramFragment. The + * Allocation must be a valid constant input for the Program. + * + * @param ps program object + * @param slot index of the constant buffer on the program + * @param c constants to bind + */ +extern void __attribute__((overloadable)) + rsgBindConstant(rs_program_fragment ps, uint slot, rs_allocation c); + +/** + * Bind a new Allocation object to a ProgramVertex. The + * Allocation must be a valid constant input for the Program. + * + * @param pv program object + * @param slot index of the constant buffer on the program + * @param c constants to bind + */ +extern void __attribute__((overloadable)) + rsgBindConstant(rs_program_vertex pv, uint slot, rs_allocation c); + +/** + * Get the width of the current rendering surface. + * + * @return uint + */ +extern uint __attribute__((overloadable)) + rsgGetWidth(void); + +/** + * Get the height of the current rendering surface. + * + * @return uint + */ +extern uint __attribute__((overloadable)) + rsgGetHeight(void); + + +/** + * Sync the contents of an allocation from its SCRIPT memory space to its HW + * memory spaces. + * + * @param alloc + */ +extern void __attribute__((overloadable)) + rsgAllocationSyncAll(rs_allocation alloc); + +#if (defined(RS_VERSION) && (RS_VERSION >= 14)) + +/** + * Sync the contents of an allocation from memory space + * specified by source. + * + * @param alloc + * @param source + */ +extern void __attribute__((overloadable)) + rsgAllocationSyncAll(rs_allocation alloc, + rs_allocation_usage_type source); + +#endif //defined(RS_VERSION) && (RS_VERSION >= 14) + +/** + * Low performance utility function for drawing a simple rectangle. Not + * intended for drawing large quantities of geometry. + * + * @param x1 + * @param y1 + * @param x2 + * @param y2 + * @param z + */ +extern void __attribute__((overloadable)) + rsgDrawRect(float x1, float y1, float x2, float y2, float z); + +/** + * Low performance utility function for drawing a simple quad. Not intended for + * drawing large quantities of geometry. + * + * @param x1 + * @param y1 + * @param z1 + * @param x2 + * @param y2 + * @param z2 + * @param x3 + * @param y3 + * @param z3 + * @param x4 + * @param y4 + * @param z4 + */ +extern void __attribute__((overloadable)) + rsgDrawQuad(float x1, float y1, float z1, + float x2, float y2, float z2, + float x3, float y3, float z3, + float x4, float y4, float z4); + + +/** + * Low performance utility function for drawing a textured quad. Not intended + * for drawing large quantities of geometry. + * + * @param x1 + * @param y1 + * @param z1 + * @param u1 + * @param v1 + * @param x2 + * @param y2 + * @param z2 + * @param u2 + * @param v2 + * @param x3 + * @param y3 + * @param z3 + * @param u3 + * @param v3 + * @param x4 + * @param y4 + * @param z4 + * @param u4 + * @param v4 + */ +extern void __attribute__((overloadable)) + rsgDrawQuadTexCoords(float x1, float y1, float z1, float u1, float v1, + float x2, float y2, float z2, float u2, float v2, + float x3, float y3, float z3, float u3, float v3, + float x4, float y4, float z4, float u4, float v4); + + +/** + * Low performance function for drawing rectangles in screenspace. This + * function uses the default passthough ProgramVertex. Any bound ProgramVertex + * is ignored. This function has considerable overhead and should not be used + * for drawing in shipping applications. + * + * @param x + * @param y + * @param z + * @param w + * @param h + */ +extern void __attribute__((overloadable)) + rsgDrawSpriteScreenspace(float x, float y, float z, float w, float h); + +extern void __attribute__((overloadable)) + rsgDrawPath(rs_path p); + +/** + * Draw a mesh using the current context state. The whole mesh is + * rendered. + * + * @param ism + */ +extern void __attribute__((overloadable)) + rsgDrawMesh(rs_mesh ism); +/** + * Draw part of a mesh using the current context state. + * @param ism mesh object to render + * @param primitiveIndex for meshes that contain multiple primitive groups + * this parameter specifies the index of the group to draw. + */ +extern void __attribute__((overloadable)) + rsgDrawMesh(rs_mesh ism, uint primitiveIndex); +/** + * Draw specified index range of part of a mesh using the current context state. + * @param ism mesh object to render + * @param primitiveIndex for meshes that contain multiple primitive groups + * this parameter specifies the index of the group to draw. + * @param start starting index in the range + * @param len number of indices to draw + */ +extern void __attribute__((overloadable)) + rsgDrawMesh(rs_mesh ism, uint primitiveIndex, uint start, uint len); + +/** + * Clears the rendering surface to the specified color. + * + * @param r + * @param g + * @param b + * @param a + */ +extern void __attribute__((overloadable)) + rsgClearColor(float r, float g, float b, float a); + +/** + * Clears the depth suface to the specified value. + */ +extern void __attribute__((overloadable)) + rsgClearDepth(float value); +/** + * Draws text given a string and location + */ +extern void __attribute__((overloadable)) + rsgDrawText(const char *, int x, int y); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsgDrawText(rs_allocation, int x, int y); +/** + * Binds the font object to be used for all subsequent font rendering calls + * @param font object to bind + */ +extern void __attribute__((overloadable)) + rsgBindFont(rs_font font); +/** + * Sets the font color for all subsequent rendering calls + * @param r red component + * @param g green component + * @param b blue component + * @param a alpha component + */ +extern void __attribute__((overloadable)) + rsgFontColor(float r, float g, float b, float a); +/** + * Returns the bounding box of the text relative to (0, 0) + * Any of left, right, top, bottom could be NULL + */ +extern void __attribute__((overloadable)) + rsgMeasureText(const char *, int *left, int *right, int *top, int *bottom); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsgMeasureText(rs_allocation, int *left, int *right, int *top, int *bottom); +/** + * Computes an axis aligned bounding box of a mesh object + */ +extern void __attribute__((overloadable)) + rsgMeshComputeBoundingBox(rs_mesh mesh, float *minX, float *minY, float *minZ, + float *maxX, float *maxY, float *maxZ); +/** + * \overload + */ +__inline__ static void __attribute__((overloadable, always_inline)) +rsgMeshComputeBoundingBox(rs_mesh mesh, float3 *bBoxMin, float3 *bBoxMax) { + float x1, y1, z1, x2, y2, z2; + rsgMeshComputeBoundingBox(mesh, &x1, &y1, &z1, &x2, &y2, &z2); + bBoxMin->x = x1; + bBoxMin->y = y1; + bBoxMin->z = z1; + bBoxMax->x = x2; + bBoxMax->y = y2; + bBoxMax->z = z2; +} + +#endif + diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_math.rsh b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_math.rsh new file mode 100644 index 0000000..4d3124c --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_math.rsh @@ -0,0 +1,251 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** @file rs_math.rsh + * \brief todo-jsams + * + * todo-jsams + * + */ + +#ifndef __RS_MATH_RSH__ +#define __RS_MATH_RSH__ + + +/** + * Return a random value between 0 (or min_value) and max_malue. + */ +extern int __attribute__((overloadable)) + rsRand(int max_value); +/** + * \overload + */ +extern int __attribute__((overloadable)) + rsRand(int min_value, int max_value); +/** + * \overload + */ +extern float __attribute__((overloadable)) + rsRand(float max_value); +/** + * \overload + */ +extern float __attribute__((overloadable)) + rsRand(float min_value, float max_value); + +/** + * Returns the fractional part of a float + */ +extern float __attribute__((const, overloadable)) + rsFrac(float); + + +///////////////////////////////////////////////////// +// int ops +///////////////////////////////////////////////////// + +/** + * Clamp the value amount between low and high. + * + * @param amount The value to clamp + * @param low + * @param high + */ +_RS_RUNTIME uint __attribute__((const, overloadable, always_inline)) rsClamp(uint amount, uint low, uint high); + +/** + * \overload + */ +_RS_RUNTIME int __attribute__((const, overloadable, always_inline)) rsClamp(int amount, int low, int high); +/** + * \overload + */ +_RS_RUNTIME ushort __attribute__((const, overloadable, always_inline)) rsClamp(ushort amount, ushort low, ushort high); +/** + * \overload + */ +_RS_RUNTIME short __attribute__((const, overloadable, always_inline)) rsClamp(short amount, short low, short high); +/** + * \overload + */ +_RS_RUNTIME uchar __attribute__((const, overloadable, always_inline)) rsClamp(uchar amount, uchar low, uchar high); +/** + * \overload + */ +_RS_RUNTIME char __attribute__((const, overloadable, always_inline)) rsClamp(char amount, char low, char high); + + +/** + * Computes 6 frustum planes from the view projection matrix + * @param viewProj matrix to extract planes from + * @param left plane + * @param right plane + * @param top plane + * @param bottom plane + * @param near plane + * @param far plane + */ +__inline__ static void __attribute__((overloadable, always_inline)) +rsExtractFrustumPlanes(const rs_matrix4x4 *viewProj, + float4 *left, float4 *right, + float4 *top, float4 *bottom, + float4 *near, float4 *far) { + // x y z w = a b c d in the plane equation + left->x = viewProj->m[3] + viewProj->m[0]; + left->y = viewProj->m[7] + viewProj->m[4]; + left->z = viewProj->m[11] + viewProj->m[8]; + left->w = viewProj->m[15] + viewProj->m[12]; + + right->x = viewProj->m[3] - viewProj->m[0]; + right->y = viewProj->m[7] - viewProj->m[4]; + right->z = viewProj->m[11] - viewProj->m[8]; + right->w = viewProj->m[15] - viewProj->m[12]; + + top->x = viewProj->m[3] - viewProj->m[1]; + top->y = viewProj->m[7] - viewProj->m[5]; + top->z = viewProj->m[11] - viewProj->m[9]; + top->w = viewProj->m[15] - viewProj->m[13]; + + bottom->x = viewProj->m[3] + viewProj->m[1]; + bottom->y = viewProj->m[7] + viewProj->m[5]; + bottom->z = viewProj->m[11] + viewProj->m[9]; + bottom->w = viewProj->m[15] + viewProj->m[13]; + + near->x = viewProj->m[3] + viewProj->m[2]; + near->y = viewProj->m[7] + viewProj->m[6]; + near->z = viewProj->m[11] + viewProj->m[10]; + near->w = viewProj->m[15] + viewProj->m[14]; + + far->x = viewProj->m[3] - viewProj->m[2]; + far->y = viewProj->m[7] - viewProj->m[6]; + far->z = viewProj->m[11] - viewProj->m[10]; + far->w = viewProj->m[15] - viewProj->m[14]; + + float len = length(left->xyz); + *left /= len; + len = length(right->xyz); + *right /= len; + len = length(top->xyz); + *top /= len; + len = length(bottom->xyz); + *bottom /= len; + len = length(near->xyz); + *near /= len; + len = length(far->xyz); + *far /= len; +} + +/** + * Checks if a sphere is withing the 6 frustum planes + * @param sphere float4 representing the sphere + * @param left plane + * @param right plane + * @param top plane + * @param bottom plane + * @param near plane + * @param far plane + */ +__inline__ static bool __attribute__((overloadable, always_inline)) +rsIsSphereInFrustum(float4 *sphere, + float4 *left, float4 *right, + float4 *top, float4 *bottom, + float4 *near, float4 *far) { + + float distToCenter = dot(left->xyz, sphere->xyz) + left->w; + if (distToCenter < -sphere->w) { + return false; + } + distToCenter = dot(right->xyz, sphere->xyz) + right->w; + if (distToCenter < -sphere->w) { + return false; + } + distToCenter = dot(top->xyz, sphere->xyz) + top->w; + if (distToCenter < -sphere->w) { + return false; + } + distToCenter = dot(bottom->xyz, sphere->xyz) + bottom->w; + if (distToCenter < -sphere->w) { + return false; + } + distToCenter = dot(near->xyz, sphere->xyz) + near->w; + if (distToCenter < -sphere->w) { + return false; + } + distToCenter = dot(far->xyz, sphere->xyz) + far->w; + if (distToCenter < -sphere->w) { + return false; + } + return true; +} + + +/** + * Pack floating point (0-1) RGB values into a uchar4. The alpha component is + * set to 255 (1.0). + * + * @param r + * @param g + * @param b + * + * @return uchar4 + */ +_RS_RUNTIME uchar4 __attribute__((const, overloadable)) rsPackColorTo8888(float r, float g, float b); + +/** + * Pack floating point (0-1) RGBA values into a uchar4. + * + * @param r + * @param g + * @param b + * @param a + * + * @return uchar4 + */ +_RS_RUNTIME uchar4 __attribute__((const, overloadable)) rsPackColorTo8888(float r, float g, float b, float a); + +/** + * Pack floating point (0-1) RGB values into a uchar4. The alpha component is + * set to 255 (1.0). + * + * @param color + * + * @return uchar4 + */ +_RS_RUNTIME uchar4 __attribute__((const, overloadable)) rsPackColorTo8888(float3 color); + +/** + * Pack floating point (0-1) RGBA values into a uchar4. + * + * @param color + * + * @return uchar4 + */ +_RS_RUNTIME uchar4 __attribute__((const, overloadable)) rsPackColorTo8888(float4 color); + +/** + * Unpack a uchar4 color to float4. The resulting float range will be (0-1). + * + * @param c + * + * @return float4 + */ +_RS_RUNTIME float4 __attribute__((const)) rsUnpackColor8888(uchar4 c); + +_RS_RUNTIME uchar4 __attribute__((const, overloadable)) rsYuvToRGBA_uchar4(uchar y, uchar u, uchar v); +_RS_RUNTIME float4 __attribute__((const, overloadable)) rsYuvToRGBA_float4(uchar y, uchar u, uchar v); + + +#endif diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_matrix.rsh b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_matrix.rsh new file mode 100644 index 0000000..ebff7f4 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_matrix.rsh @@ -0,0 +1,378 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** @file rs_matrix.rsh + * \brief Matrix routines + * + * + */ + +#ifndef __RS_MATRIX_RSH__ +#define __RS_MATRIX_RSH__ + +/** + * Set one element of a matrix. + * + * @param m The matrix to be set + * @param row + * @param col + * @param v + * + * @return void + */ +_RS_RUNTIME void __attribute__((overloadable)) +rsMatrixSet(rs_matrix4x4 *m, uint32_t row, uint32_t col, float v); +/** + * \overload + */ +_RS_RUNTIME void __attribute__((overloadable)) +rsMatrixSet(rs_matrix3x3 *m, uint32_t row, uint32_t col, float v); +/** + * \overload + */ +_RS_RUNTIME void __attribute__((overloadable)) +rsMatrixSet(rs_matrix2x2 *m, uint32_t row, uint32_t col, float v); + +/** + * Get one element of a matrix. + * + * @param m The matrix to read from + * @param row + * @param col + * + * @return float + */ +_RS_RUNTIME float __attribute__((overloadable)) +rsMatrixGet(const rs_matrix4x4 *m, uint32_t row, uint32_t col); +/** + * \overload + */ +_RS_RUNTIME float __attribute__((overloadable)) +rsMatrixGet(const rs_matrix3x3 *m, uint32_t row, uint32_t col); +/** + * \overload + */ +_RS_RUNTIME float __attribute__((overloadable)) +rsMatrixGet(const rs_matrix2x2 *m, uint32_t row, uint32_t col); + +/** + * Set the elements of a matrix to the identity matrix. + * + * @param m + */ +extern void __attribute__((overloadable)) rsMatrixLoadIdentity(rs_matrix4x4 *m); +/** + * \overload + */ +extern void __attribute__((overloadable)) rsMatrixLoadIdentity(rs_matrix3x3 *m); +/** + * \overload + */ +extern void __attribute__((overloadable)) rsMatrixLoadIdentity(rs_matrix2x2 *m); + +/** + * Set the elements of a matrix from an array of floats. + * + * @param m + */ +extern void __attribute__((overloadable)) rsMatrixLoad(rs_matrix4x4 *m, const float *v); +/** + * \overload + */ +extern void __attribute__((overloadable)) rsMatrixLoad(rs_matrix3x3 *m, const float *v); +/** + * \overload + */ +extern void __attribute__((overloadable)) rsMatrixLoad(rs_matrix2x2 *m, const float *v); +/** + * \overload + */ +extern void __attribute__((overloadable)) rsMatrixLoad(rs_matrix4x4 *m, const rs_matrix4x4 *v); +/** + * \overload + */ +extern void __attribute__((overloadable)) rsMatrixLoad(rs_matrix4x4 *m, const rs_matrix3x3 *v); + +/** + * Set the elements of a matrix from another matrix. + * + * @param m + */ +extern void __attribute__((overloadable)) rsMatrixLoad(rs_matrix4x4 *m, const rs_matrix2x2 *v); +/** + * \overload + */ +extern void __attribute__((overloadable)) rsMatrixLoad(rs_matrix3x3 *m, const rs_matrix3x3 *v); +/** + * \overload + */ +extern void __attribute__((overloadable)) rsMatrixLoad(rs_matrix2x2 *m, const rs_matrix2x2 *v); + +/** + * Load a rotation matrix. + * + * @param m + * @param rot + * @param x + * @param y + * @param z + */ +extern void __attribute__((overloadable)) +rsMatrixLoadRotate(rs_matrix4x4 *m, float rot, float x, float y, float z); + +/** + * Load a scale matrix. + * + * @param m + * @param x + * @param y + * @param z + */ +extern void __attribute__((overloadable)) +rsMatrixLoadScale(rs_matrix4x4 *m, float x, float y, float z); + +/** + * Load a translation matrix. + * + * @param m + * @param x + * @param y + * @param z + */ +extern void __attribute__((overloadable)) +rsMatrixLoadTranslate(rs_matrix4x4 *m, float x, float y, float z); + +/** + * Multiply two matrix (lhs, rhs) and place the result in m. + * + * @param m + * @param lhs + * @param rhs + */ +extern void __attribute__((overloadable)) +rsMatrixLoadMultiply(rs_matrix4x4 *m, const rs_matrix4x4 *lhs, const rs_matrix4x4 *rhs); +/** + * \overload + */ +extern void __attribute__((overloadable)) +rsMatrixLoadMultiply(rs_matrix3x3 *m, const rs_matrix3x3 *lhs, const rs_matrix3x3 *rhs); +/** + * \overload + */ +extern void __attribute__((overloadable)) +rsMatrixLoadMultiply(rs_matrix2x2 *m, const rs_matrix2x2 *lhs, const rs_matrix2x2 *rhs); + +/** + * Multiply the matrix m by rhs and place the result back into m. + * + * @param m (lhs) + * @param rhs + */ +extern void __attribute__((overloadable)) +rsMatrixMultiply(rs_matrix4x4 *m, const rs_matrix4x4 *rhs); +/** + * \overload + */ +extern void __attribute__((overloadable)) +rsMatrixMultiply(rs_matrix3x3 *m, const rs_matrix3x3 *rhs); +/** + * \overload + */ +extern void __attribute__((overloadable)) +rsMatrixMultiply(rs_matrix2x2 *m, const rs_matrix2x2 *rhs); + +/** + * Multiple matrix m with a rotation matrix + * + * @param m + * @param rot + * @param x + * @param y + * @param z + */ +extern void __attribute__((overloadable)) +rsMatrixRotate(rs_matrix4x4 *m, float rot, float x, float y, float z); + +/** + * Multiple matrix m with a scale matrix + * + * @param m + * @param x + * @param y + * @param z + */ +extern void __attribute__((overloadable)) +rsMatrixScale(rs_matrix4x4 *m, float x, float y, float z); + +/** + * Multiple matrix m with a translation matrix + * + * @param m + * @param x + * @param y + * @param z + */ +extern void __attribute__((overloadable)) +rsMatrixTranslate(rs_matrix4x4 *m, float x, float y, float z); + +/** + * Load an Ortho projection matrix constructed from the 6 planes + * + * @param m + * @param left + * @param right + * @param bottom + * @param top + * @param near + * @param far + */ +extern void __attribute__((overloadable)) +rsMatrixLoadOrtho(rs_matrix4x4 *m, float left, float right, float bottom, float top, float near, float far); + +/** + * Load an Frustum projection matrix constructed from the 6 planes + * + * @param m + * @param left + * @param right + * @param bottom + * @param top + * @param near + * @param far + */ +extern void __attribute__((overloadable)) +rsMatrixLoadFrustum(rs_matrix4x4 *m, float left, float right, float bottom, float top, float near, float far); + +/** + * Load an perspective projection matrix constructed from the 6 planes + * + * @param m + * @param fovy Field of view, in degrees along the Y axis. + * @param aspect Ratio of x / y. + * @param near + * @param far + */ +extern void __attribute__((overloadable)) +rsMatrixLoadPerspective(rs_matrix4x4* m, float fovy, float aspect, float near, float far); + +#if !defined(RS_VERSION) || (RS_VERSION < 14) +/** + * Multiply a vector by a matrix and return the result vector. + * API version 10-13 + */ +_RS_RUNTIME float4 __attribute__((overloadable)) +rsMatrixMultiply(rs_matrix4x4 *m, float4 in); + +/** + * \overload + */ +_RS_RUNTIME float4 __attribute__((overloadable)) +rsMatrixMultiply(rs_matrix4x4 *m, float3 in); + +/** + * \overload + */ +_RS_RUNTIME float4 __attribute__((overloadable)) +rsMatrixMultiply(rs_matrix4x4 *m, float2 in); + +/** + * \overload + */ +_RS_RUNTIME float3 __attribute__((overloadable)) +rsMatrixMultiply(rs_matrix3x3 *m, float3 in); + +/** + * \overload + */ +_RS_RUNTIME float3 __attribute__((overloadable)) +rsMatrixMultiply(rs_matrix3x3 *m, float2 in); + +/** + * \overload + */ +_RS_RUNTIME float2 __attribute__((overloadable)) +rsMatrixMultiply(rs_matrix2x2 *m, float2 in); +#else +/** + * Multiply a vector by a matrix and return the result vector. + * API version 14+ + */ +_RS_RUNTIME float4 __attribute__((overloadable)) +rsMatrixMultiply(const rs_matrix4x4 *m, float4 in); + +/** + * \overload + */ +_RS_RUNTIME float4 __attribute__((overloadable)) +rsMatrixMultiply(const rs_matrix4x4 *m, float3 in); + +/** + * \overload + */ +_RS_RUNTIME float4 __attribute__((overloadable)) +rsMatrixMultiply(const rs_matrix4x4 *m, float2 in); + +/** + * \overload + */ +_RS_RUNTIME float3 __attribute__((overloadable)) +rsMatrixMultiply(const rs_matrix3x3 *m, float3 in); + +/** + * \overload + */ +_RS_RUNTIME float3 __attribute__((overloadable)) +rsMatrixMultiply(const rs_matrix3x3 *m, float2 in); + +/** + * \overload + */ +_RS_RUNTIME float2 __attribute__((overloadable)) +rsMatrixMultiply(const rs_matrix2x2 *m, float2 in); +#endif + + +/** + * Returns true if the matrix was successfully inversed + * + * @param m + */ +extern bool __attribute__((overloadable)) rsMatrixInverse(rs_matrix4x4 *m); + +/** + * Returns true if the matrix was successfully inversed and transposed. + * + * @param m + */ +extern bool __attribute__((overloadable)) rsMatrixInverseTranspose(rs_matrix4x4 *m); + +/** + * Transpose the matrix m. + * + * @param m + */ +extern void __attribute__((overloadable)) rsMatrixTranspose(rs_matrix4x4 *m); +/** + * \overload + */ +extern void __attribute__((overloadable)) rsMatrixTranspose(rs_matrix3x3 *m); +/** + * \overload + */ +extern void __attribute__((overloadable)) rsMatrixTranspose(rs_matrix2x2 *m); + + +#endif diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_mesh.rsh b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_mesh.rsh new file mode 100644 index 0000000..0ecd786 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_mesh.rsh @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** @file rs_mesh.rsh + * \brief Mesh routines + * + * + */ + +#ifndef __RS_MESH_RSH__ +#define __RS_MESH_RSH__ + +// New API's +#if (defined(RS_VERSION) && (RS_VERSION >= 16)) + +/** + * Returns the number of allocations in the mesh that contain + * vertex data + * + * @param m mesh to get data from + * @return number of allocations in the mesh that contain vertex + * data + */ +extern uint32_t __attribute__((overloadable)) + rsgMeshGetVertexAllocationCount(rs_mesh m); + +/** + * Meshes could have multiple index sets, this function returns + * the number. + * + * @param m mesh to get data from + * @return number of primitive groups in the mesh. This would + * include simple primitives as well as allocations + * containing index data + */ +extern uint32_t __attribute__((overloadable)) + rsgMeshGetPrimitiveCount(rs_mesh m); + +/** + * Returns an allocation that is part of the mesh and contains + * vertex data, e.g. positions, normals, texcoords + * + * @param m mesh to get data from + * @param index index of the vertex allocation + * @return allocation containing vertex data + */ +extern rs_allocation __attribute__((overloadable)) + rsgMeshGetVertexAllocation(rs_mesh m, uint32_t index); + +/** + * Returns an allocation containing index data or a null + * allocation if only the primitive is specified + * + * @param m mesh to get data from + * @param index index of the index allocation + * @return allocation containing index data + */ +extern rs_allocation __attribute__((overloadable)) + rsgMeshGetIndexAllocation(rs_mesh m, uint32_t index); + +/** + * Returns the primitive describing how a part of the mesh is + * rendered + * + * @param m mesh to get data from + * @param index index of the primitive + * @return primitive describing how the mesh is rendered + */ +extern rs_primitive __attribute__((overloadable)) + rsgMeshGetPrimitive(rs_mesh m, uint32_t index); + +#endif // (defined(RS_VERSION) && (RS_VERSION >= 16)) + +#endif // __RS_MESH_RSH__ + diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_object.rsh b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_object.rsh new file mode 100644 index 0000000..1fc3f83 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_object.rsh @@ -0,0 +1,220 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** @file rs_object.rsh + * \brief Object routines + * + * + */ + +#ifndef __RS_OBJECT_RSH__ +#define __RS_OBJECT_RSH__ + + +/** + * Copy reference to the specified object. + * + * @param dst + * @param src + */ +extern void __attribute__((overloadable)) + rsSetObject(rs_element *dst, rs_element src); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsSetObject(rs_type *dst, rs_type src); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsSetObject(rs_allocation *dst, rs_allocation src); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsSetObject(rs_sampler *dst, rs_sampler src); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsSetObject(rs_script *dst, rs_script src); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsSetObject(rs_path *dst, rs_path src); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsSetObject(rs_mesh *dst, rs_mesh src); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsSetObject(rs_program_fragment *dst, rs_program_fragment src); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsSetObject(rs_program_vertex *dst, rs_program_vertex src); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsSetObject(rs_program_raster *dst, rs_program_raster src); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsSetObject(rs_program_store *dst, rs_program_store src); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsSetObject(rs_font *dst, rs_font src); + +/** + * Sets the object to NULL. + * + * @return bool + */ +extern void __attribute__((overloadable)) + rsClearObject(rs_element *dst); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsClearObject(rs_type *dst); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsClearObject(rs_allocation *dst); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsClearObject(rs_sampler *dst); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsClearObject(rs_script *dst); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsClearObject(rs_path *dst); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsClearObject(rs_mesh *dst); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsClearObject(rs_program_fragment *dst); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsClearObject(rs_program_vertex *dst); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsClearObject(rs_program_raster *dst); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsClearObject(rs_program_store *dst); +/** + * \overload + */ +extern void __attribute__((overloadable)) + rsClearObject(rs_font *dst); + + + +/** + * Tests if the object is valid. Returns true if the object is valid, false if + * it is NULL. + * + * @return bool + */ +extern bool __attribute__((overloadable)) + rsIsObject(rs_element); +/** + * \overload + */ +extern bool __attribute__((overloadable)) + rsIsObject(rs_type); +/** + * \overload + */ +extern bool __attribute__((overloadable)) + rsIsObject(rs_allocation); +/** + * \overload + */ +extern bool __attribute__((overloadable)) + rsIsObject(rs_sampler); +/** + * \overload + */ +extern bool __attribute__((overloadable)) + rsIsObject(rs_script); +/** + * \overload + */ +extern bool __attribute__((overloadable)) + rsIsObject(rs_path); +/** + * \overload + */ +extern bool __attribute__((overloadable)) + rsIsObject(rs_mesh); +/** + * \overload + */ +extern bool __attribute__((overloadable)) + rsIsObject(rs_program_fragment); +/** + * \overload + */ +extern bool __attribute__((overloadable)) + rsIsObject(rs_program_vertex); +/** + * \overload + */ +extern bool __attribute__((overloadable)) + rsIsObject(rs_program_raster); +/** + * \overload + */ +extern bool __attribute__((overloadable)) + rsIsObject(rs_program_store); +/** + * \overload + */ +extern bool __attribute__((overloadable)) + rsIsObject(rs_font); + +#endif diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_program.rsh b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_program.rsh new file mode 100644 index 0000000..299aae6 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_program.rsh @@ -0,0 +1,118 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** @file rs_program.rsh + * \brief Program object routines + * + * + */ + +#ifndef __RS_PROGRAM_RSH__ +#define __RS_PROGRAM_RSH__ + +#if (defined(RS_VERSION) && (RS_VERSION >= 16)) + +/** + * Get program store depth function + * + * @param ps program store to query + */ +extern rs_depth_func __attribute__((overloadable)) + rsgProgramStoreGetDepthFunc(rs_program_store ps); + +/** + * Get program store depth mask + * + * @param ps program store to query + */ +extern bool __attribute__((overloadable)) + rsgProgramStoreIsDepthMaskEnabled(rs_program_store ps); +/** + * Get program store red component color mask + * + * @param ps program store to query + */ +extern bool __attribute__((overloadable)) + rsgProgramStoreIsColorMaskRedEnabled(rs_program_store ps); + +/** + * Get program store green component color mask + * + * @param ps program store to query + */ +extern bool __attribute__((overloadable)) + rsgProgramStoreIsColorMaskGreenEnabled(rs_program_store ps); + +/** + * Get program store blur component color mask + * + * @param ps program store to query + */ +extern bool __attribute__((overloadable)) + rsgProgramStoreIsColorMaskBlueEnabled(rs_program_store ps); + +/** + * Get program store alpha component color mask + * + * @param ps program store to query + */ +extern bool __attribute__((overloadable)) + rsgProgramStoreIsColorMaskAlphaEnabled(rs_program_store ps); + +/** + * Get program store blend source function + * + * @param ps program store to query + */ +extern rs_blend_src_func __attribute__((overloadable)) + rsgProgramStoreGetBlendSrcFunc(rs_program_store ps); + +/** + * Get program store blend destination function + * + * @param ps program store to query + */ +extern rs_blend_dst_func __attribute__((overloadable)) + rsgProgramStoreGetBlendDstFunc(rs_program_store ps); + +/** + * Get program store dither state + * + * @param ps program store to query + */ +extern bool __attribute__((overloadable)) + rsgProgramStoreIsDitherEnabled(rs_program_store ps); + +/** + * Get program raster point sprite state + * + * @param pr program raster to query + */ +extern bool __attribute__((overloadable)) + rsgProgramRasterIsPointSpriteEnabled(rs_program_raster pr); + +/** + * Get program raster cull mode + * + * @param pr program raster to query + */ +extern rs_cull_mode __attribute__((overloadable)) + rsgProgramRasterGetCullMode(rs_program_raster pr); + +#endif // (defined(RS_VERSION) && (RS_VERSION >= 16)) + +#endif // __RS_PROGRAM_RSH__ + diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_quaternion.rsh b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_quaternion.rsh new file mode 100644 index 0000000..4e08d2f --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_quaternion.rsh @@ -0,0 +1,253 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** @file rs_quaternion.rsh + * \brief Quaternion routines + * + * + */ + +#ifndef __RS_QUATERNION_RSH__ +#define __RS_QUATERNION_RSH__ + + +/** + * Set the quaternion components + * @param w component + * @param x component + * @param y component + * @param z component + */ +static void __attribute__((overloadable)) +rsQuaternionSet(rs_quaternion *q, float w, float x, float y, float z) { + q->w = w; + q->x = x; + q->y = y; + q->z = z; +} + +/** + * Set the quaternion from another quaternion + * @param q destination quaternion + * @param rhs source quaternion + */ +static void __attribute__((overloadable)) +rsQuaternionSet(rs_quaternion *q, const rs_quaternion *rhs) { + q->w = rhs->w; + q->x = rhs->x; + q->y = rhs->y; + q->z = rhs->z; +} + +/** + * Multiply quaternion by a scalar + * @param q quaternion to multiply + * @param s scalar + */ +static void __attribute__((overloadable)) +rsQuaternionMultiply(rs_quaternion *q, float s) { + q->w *= s; + q->x *= s; + q->y *= s; + q->z *= s; +} + +/** + * Add two quaternions + * @param q destination quaternion to add to + * @param rsh right hand side quaternion to add + */ +static void +rsQuaternionAdd(rs_quaternion *q, const rs_quaternion *rhs) { + q->w *= rhs->w; + q->x *= rhs->x; + q->y *= rhs->y; + q->z *= rhs->z; +} + +/** + * Loads a quaternion that represents a rotation about an arbitrary unit vector + * @param q quaternion to set + * @param rot angle to rotate by + * @param x component of a vector + * @param y component of a vector + * @param x component of a vector + */ +static void +rsQuaternionLoadRotateUnit(rs_quaternion *q, float rot, float x, float y, float z) { + rot *= (float)(M_PI / 180.0f) * 0.5f; + float c = cos(rot); + float s = sin(rot); + + q->w = c; + q->x = x * s; + q->y = y * s; + q->z = z * s; +} + +/** + * Loads a quaternion that represents a rotation about an arbitrary vector + * (doesn't have to be unit) + * @param q quaternion to set + * @param rot angle to rotate by + * @param x component of a vector + * @param y component of a vector + * @param x component of a vector + */ +static void +rsQuaternionLoadRotate(rs_quaternion *q, float rot, float x, float y, float z) { + const float len = x*x + y*y + z*z; + if (len != 1) { + const float recipLen = 1.f / sqrt(len); + x *= recipLen; + y *= recipLen; + z *= recipLen; + } + rsQuaternionLoadRotateUnit(q, rot, x, y, z); +} + +/** + * Conjugates the quaternion + * @param q quaternion to conjugate + */ +static void +rsQuaternionConjugate(rs_quaternion *q) { + q->x = -q->x; + q->y = -q->y; + q->z = -q->z; +} + +/** + * Dot product of two quaternions + * @param q0 first quaternion + * @param q1 second quaternion + * @return dot product between q0 and q1 + */ +static float +rsQuaternionDot(const rs_quaternion *q0, const rs_quaternion *q1) { + return q0->w*q1->w + q0->x*q1->x + q0->y*q1->y + q0->z*q1->z; +} + +/** + * Normalizes the quaternion + * @param q quaternion to normalize + */ +static void +rsQuaternionNormalize(rs_quaternion *q) { + const float len = rsQuaternionDot(q, q); + if (len != 1) { + const float recipLen = 1.f / sqrt(len); + rsQuaternionMultiply(q, recipLen); + } +} + +/** + * Multiply quaternion by another quaternion + * @param q destination quaternion + * @param rhs right hand side quaternion to multiply by + */ +static void __attribute__((overloadable)) +rsQuaternionMultiply(rs_quaternion *q, const rs_quaternion *rhs) { + rs_quaternion qtmp; + rsQuaternionSet(&qtmp, q); + + q->w = qtmp.w*rhs->w - qtmp.x*rhs->x - qtmp.y*rhs->y - qtmp.z*rhs->z; + q->x = qtmp.w*rhs->x + qtmp.x*rhs->w + qtmp.y*rhs->z - qtmp.z*rhs->y; + q->y = qtmp.w*rhs->y + qtmp.y*rhs->w + qtmp.z*rhs->x - qtmp.x*rhs->z; + q->z = qtmp.w*rhs->z + qtmp.z*rhs->w + qtmp.x*rhs->y - qtmp.y*rhs->x; + rsQuaternionNormalize(q); +} + +/** + * Performs spherical linear interpolation between two quaternions + * @param q result quaternion from interpolation + * @param q0 first param + * @param q1 second param + * @param t how much to interpolate by + */ +static void +rsQuaternionSlerp(rs_quaternion *q, const rs_quaternion *q0, const rs_quaternion *q1, float t) { + if (t <= 0.0f) { + rsQuaternionSet(q, q0); + return; + } + if (t >= 1.0f) { + rsQuaternionSet(q, q1); + return; + } + + rs_quaternion tempq0, tempq1; + rsQuaternionSet(&tempq0, q0); + rsQuaternionSet(&tempq1, q1); + + float angle = rsQuaternionDot(q0, q1); + if (angle < 0) { + rsQuaternionMultiply(&tempq0, -1.0f); + angle *= -1.0f; + } + + float scale, invScale; + if (angle + 1.0f > 0.05f) { + if (1.0f - angle >= 0.05f) { + float theta = acos(angle); + float invSinTheta = 1.0f / sin(theta); + scale = sin(theta * (1.0f - t)) * invSinTheta; + invScale = sin(theta * t) * invSinTheta; + } else { + scale = 1.0f - t; + invScale = t; + } + } else { + rsQuaternionSet(&tempq1, tempq0.z, -tempq0.y, tempq0.x, -tempq0.w); + scale = sin(M_PI * (0.5f - t)); + invScale = sin(M_PI * t); + } + + rsQuaternionSet(q, tempq0.w*scale + tempq1.w*invScale, tempq0.x*scale + tempq1.x*invScale, + tempq0.y*scale + tempq1.y*invScale, tempq0.z*scale + tempq1.z*invScale); +} + +/** + * Computes rotation matrix from the normalized quaternion + * @param m resulting matrix + * @param p normalized quaternion + */ +static void rsQuaternionGetMatrixUnit(rs_matrix4x4 *m, const rs_quaternion *q) { + float xx = q->x * q->x; + float xy = q->x * q->y; + float xz = q->x * q->z; + float xw = q->x * q->w; + float yy = q->y * q->y; + float yz = q->y * q->z; + float yw = q->y * q->w; + float zz = q->z * q->z; + float zw = q->z * q->w; + + m->m[0] = 1.0f - 2.0f * ( yy + zz ); + m->m[4] = 2.0f * ( xy - zw ); + m->m[8] = 2.0f * ( xz + yw ); + m->m[1] = 2.0f * ( xy + zw ); + m->m[5] = 1.0f - 2.0f * ( xx + zz ); + m->m[9] = 2.0f * ( yz - xw ); + m->m[2] = 2.0f * ( xz - yw ); + m->m[6] = 2.0f * ( yz + xw ); + m->m[10] = 1.0f - 2.0f * ( xx + yy ); + m->m[3] = m->m[7] = m->m[11] = m->m[12] = m->m[13] = m->m[14] = 0.0f; + m->m[15] = 1.0f; +} + +#endif + diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_sampler.rsh b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_sampler.rsh new file mode 100644 index 0000000..2ff426c --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_sampler.rsh @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** @file rs_sampler.rsh + * \brief Sampler routines + * + * + */ + +#ifndef __RS_SAMPLER_RSH__ +#define __RS_SAMPLER_RSH__ + +// New API's +#if (defined(RS_VERSION) && (RS_VERSION >= 16)) + +/** + * Get sampler minification value + * + * @param s sampler to query + * @return minification value + */ +extern rs_sampler_value __attribute__((overloadable)) + rsSamplerGetMinification(rs_sampler s); + +/** + * Get sampler magnification value + * + * @param s sampler to query + * @return magnification value + */ +extern rs_sampler_value __attribute__((overloadable)) + rsSamplerGetMagnification(rs_sampler s); + +/** + * Get sampler wrap S value + * + * @param s sampler to query + * @return wrap S value + */ +extern rs_sampler_value __attribute__((overloadable)) + rsSamplerGetWrapS(rs_sampler s); + +/** + * Get sampler wrap T value + * + * @param s sampler to query + * @return wrap T value + */ +extern rs_sampler_value __attribute__((overloadable)) + rsSamplerGetWrapT(rs_sampler s); + +/** + Get sampler anisotropy + * + * @param s sampler to query + * @return anisotropy + */ +extern float __attribute__((overloadable)) + rsSamplerGetAnisotropy(rs_sampler s); + +#endif // (defined(RS_VERSION) && (RS_VERSION >= 16)) + +#endif // __RS_SAMPLER_RSH__ + diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_time.rsh b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_time.rsh new file mode 100644 index 0000000..1e6ab99 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_time.rsh @@ -0,0 +1,111 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** @file rs_time.rsh + * \brief RenderScript time routines + * + * This file contains RenderScript functions relating to time and date + * manipulation. + */ + +#ifndef __RS_TIME_RSH__ +#define __RS_TIME_RSH__ + +/** + * Calendar time interpreted as seconds elapsed since the Epoch (00:00:00 on + * January 1, 1970, Coordinated Universal Time (UTC)). + */ +typedef int rs_time_t; + +/** + * Data structure for broken-down time components. + * + * tm_sec - Seconds after the minute. This ranges from 0 to 59, but possibly + * up to 60 for leap seconds. + * tm_min - Minutes after the hour. This ranges from 0 to 59. + * tm_hour - Hours past midnight. This ranges from 0 to 23. + * tm_mday - Day of the month. This ranges from 1 to 31. + * tm_mon - Months since January. This ranges from 0 to 11. + * tm_year - Years since 1900. + * tm_wday - Days since Sunday. This ranges from 0 to 6. + * tm_yday - Days since January 1. This ranges from 0 to 365. + * tm_isdst - Flag to indicate whether daylight saving time is in effect. The + * value is positive if it is in effect, zero if it is not, and + * negative if the information is not available. + */ +typedef struct { + int tm_sec; ///< seconds + int tm_min; ///< minutes + int tm_hour; ///< hours + int tm_mday; ///< day of the month + int tm_mon; ///< month + int tm_year; ///< year + int tm_wday; ///< day of the week + int tm_yday; ///< day of the year + int tm_isdst; ///< daylight savings time +} rs_tm; + +/** + * Returns the number of seconds since the Epoch (00:00:00 UTC, January 1, + * 1970). If @p timer is non-NULL, the result is also stored in the memory + * pointed to by this variable. If an error occurs, a value of -1 is returned. + * + * @param timer Location to also store the returned calendar time. + * + * @return Seconds since the Epoch. + */ +extern rs_time_t __attribute__((overloadable)) + rsTime(rs_time_t *timer); + +/** + * Converts the time specified by @p timer into broken-down time and stores it + * in @p local. This function also returns a pointer to @p local. If @p local + * is NULL, this function does nothing and returns NULL. + * + * @param local Broken-down time. + * @param timer Input time as calendar time. + * + * @return Pointer to broken-down time (same as input @p local). + */ +extern rs_tm * __attribute__((overloadable)) + rsLocaltime(rs_tm *local, const rs_time_t *timer); + +/** + * Returns the current system clock (uptime) in milliseconds. + * + * @return Uptime in milliseconds. + */ +extern int64_t __attribute__((overloadable)) + rsUptimeMillis(void); + +/** + * Returns the current system clock (uptime) in nanoseconds. + * + * @return Uptime in nanoseconds. + */ +extern int64_t __attribute__((overloadable)) + rsUptimeNanos(void); + +/** + * Returns the time in seconds since this function was last called in this + * script. + * + * @return Time in seconds. + */ +extern float __attribute__((overloadable)) + rsGetDt(void); + +#endif diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_types.rsh b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_types.rsh new file mode 100644 index 0000000..de09279 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/include/rs_types.rsh @@ -0,0 +1,628 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** @file rs_types.rsh + * + * Define the standard RenderScript types + * + * Integers + * 8 bit: char, int8_t + * 16 bit: short, int16_t + * 32 bit: int, in32_t + * 64 bit: long, long long, int64_t + * + * Unsigned Integers + * 8 bit: uchar, uint8_t + * 16 bit: ushort, uint16_t + * 32 bit: uint, uint32_t + * 64 bit: ulong, uint64_t + * + * Floating point + * 32 bit: float + * 64 bit: double + * + * Vectors of length 2, 3, and 4 are supported for all the types above. + * + */ + +#ifndef __RS_TYPES_RSH__ +#define __RS_TYPES_RSH__ + +/* Constants */ +#define M_E 2.718281828459045235360287471352662498f /* e */ +#define M_LOG2E 1.442695040888963407359924681001892137f /* log_2 e */ +#define M_LOG10E 0.434294481903251827651128918916605082f /* log_10 e */ +#define M_LN2 0.693147180559945309417232121458176568f /* log_e 2 */ +#define M_LN10 2.302585092994045684017991454684364208f /* log_e 10 */ +#define M_PI 3.141592653589793238462643383279502884f /* pi */ +#define M_PI_2 1.570796326794896619231321691639751442f /* pi/2 */ +#define M_PI_4 0.785398163397448309615660845819875721f /* pi/4 */ +#define M_1_PI 0.318309886183790671537767526745028724f /* 1/pi */ +#define M_2_PIl 0.636619772367581343075535053490057448f /* 2/pi */ +#define M_2_SQRTPI 1.128379167095512573896158903121545172f /* 2/sqrt(pi) */ +#define M_SQRT2 1.414213562373095048801688724209698079f /* sqrt(2) */ +#define M_SQRT1_2 0.707106781186547524400844362104849039f /* 1/sqrt(2) */ + +#include "stdbool.h" +/** + * 8 bit integer type + */ +typedef char int8_t; +/** + * 16 bit integer type + */ +typedef short int16_t; +/** + * 32 bit integer type + */ +typedef int int32_t; +/** + * 64 bit integer type + */ +typedef long long int64_t; +/** + * 8 bit unsigned integer type + */ +typedef unsigned char uint8_t; +/** + * 16 bit unsigned integer type + */ +typedef unsigned short uint16_t; +/** + * 32 bit unsigned integer type + */ +typedef unsigned int uint32_t; +/** + * 64 bit unsigned integer type + */ +typedef unsigned long long uint64_t; +/** + * 8 bit unsigned integer type + */ +typedef uint8_t uchar; +/** + * 16 bit unsigned integer type + */ +typedef uint16_t ushort; +/** + * 32 bit unsigned integer type + */ +typedef uint32_t uint; +/** + * Typedef for unsigned long (use for 64-bit unsigned integers) + */ +typedef uint64_t ulong; +/** + * Typedef for unsigned int + */ +typedef uint32_t size_t; +/** + * Typedef for int (use for 32-bit integers) + */ +typedef int32_t ssize_t; + +/** + * \brief Opaque handle to a RenderScript element. + * + * See: android.renderscript.Element + */ +typedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_element; +/** + * \brief Opaque handle to a RenderScript type. + * + * See: android.renderscript.Type + */ +typedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_type; +/** + * \brief Opaque handle to a RenderScript allocation. + * + * See: android.renderscript.Allocation + */ +typedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_allocation; +/** + * \brief Opaque handle to a RenderScript sampler object. + * + * See: android.renderscript.Sampler + */ +typedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_sampler; +/** + * \brief Opaque handle to a RenderScript script object. + * + * See: android.renderscript.ScriptC + */ +typedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_script; +/** + * \brief Opaque handle to a RenderScript mesh object. + * + * See: android.renderscript.Mesh + */ +typedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_mesh; +/** + * \brief Opaque handle to a RenderScript Path object. + * + * See: android.renderscript.Path + */ +typedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_path; +/** + * \brief Opaque handle to a RenderScript ProgramFragment object. + * + * See: android.renderscript.ProgramFragment + */ +typedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_program_fragment; +/** + * \brief Opaque handle to a RenderScript ProgramVertex object. + * + * See: android.renderscript.ProgramVertex + */ +typedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_program_vertex; +/** + * \brief Opaque handle to a RenderScript ProgramRaster object. + * + * See: android.renderscript.ProgramRaster + */ +typedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_program_raster; +/** + * \brief Opaque handle to a RenderScript ProgramStore object. + * + * See: android.renderscript.ProgramStore + */ +typedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_program_store; +/** + * \brief Opaque handle to a RenderScript font object. + * + * See: android.renderscript.Font + */ +typedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_font; + +/** + * Vector version of the basic float type. + * Provides two float fields packed into a single 64 bit field with 64 bit + * alignment. + */ +typedef float float2 __attribute__((ext_vector_type(2))); +/** + * Vector version of the basic float type. Provides three float fields packed + * into a single 128 bit field with 128 bit alignment. + */ +typedef float float3 __attribute__((ext_vector_type(3))); +/** + * Vector version of the basic float type. + * Provides four float fields packed into a single 128 bit field with 128 bit + * alignment. + */ +typedef float float4 __attribute__((ext_vector_type(4))); + +/** + * Vector version of the basic double type. Provides two double fields packed + * into a single 128 bit field with 128 bit alignment. + */ +typedef double double2 __attribute__((ext_vector_type(2))); +/** + * Vector version of the basic double type. Provides three double fields packed + * into a single 256 bit field with 256 bit alignment. + */ +typedef double double3 __attribute__((ext_vector_type(3))); +/** + * Vector version of the basic double type. Provides four double fields packed + * into a single 256 bit field with 256 bit alignment. + */ +typedef double double4 __attribute__((ext_vector_type(4))); + +/** + * Vector version of the basic uchar type. Provides two uchar fields packed + * into a single 16 bit field with 16 bit alignment. + */ +typedef uchar uchar2 __attribute__((ext_vector_type(2))); +/** + * Vector version of the basic uchar type. Provides three uchar fields packed + * into a single 32 bit field with 32 bit alignment. + */ +typedef uchar uchar3 __attribute__((ext_vector_type(3))); +/** + * Vector version of the basic uchar type. Provides four uchar fields packed + * into a single 32 bit field with 32 bit alignment. + */ +typedef uchar uchar4 __attribute__((ext_vector_type(4))); + +/** + * Vector version of the basic ushort type. Provides two ushort fields packed + * into a single 32 bit field with 32 bit alignment. + */ +typedef ushort ushort2 __attribute__((ext_vector_type(2))); +/** + * Vector version of the basic ushort type. Provides three ushort fields packed + * into a single 64 bit field with 64 bit alignment. + */ +typedef ushort ushort3 __attribute__((ext_vector_type(3))); +/** + * Vector version of the basic ushort type. Provides four ushort fields packed + * into a single 64 bit field with 64 bit alignment. + */ +typedef ushort ushort4 __attribute__((ext_vector_type(4))); + +/** + * Vector version of the basic uint type. Provides two uint fields packed into a + * single 64 bit field with 64 bit alignment. + */ +typedef uint uint2 __attribute__((ext_vector_type(2))); +/** + * Vector version of the basic uint type. Provides three uint fields packed into + * a single 128 bit field with 128 bit alignment. + */ +typedef uint uint3 __attribute__((ext_vector_type(3))); +/** + * Vector version of the basic uint type. Provides four uint fields packed into + * a single 128 bit field with 128 bit alignment. + */ +typedef uint uint4 __attribute__((ext_vector_type(4))); + +/** + * Vector version of the basic ulong type. Provides two ulong fields packed into + * a single 128 bit field with 128 bit alignment. + */ +typedef ulong ulong2 __attribute__((ext_vector_type(2))); +/** + * Vector version of the basic ulong type. Provides three ulong fields packed + * into a single 256 bit field with 256 bit alignment. + */ +typedef ulong ulong3 __attribute__((ext_vector_type(3))); +/** + * Vector version of the basic ulong type. Provides four ulong fields packed + * into a single 256 bit field with 256 bit alignment. + */ +typedef ulong ulong4 __attribute__((ext_vector_type(4))); + +/** + * Vector version of the basic char type. Provides two char fields packed into a + * single 16 bit field with 16 bit alignment. + */ +typedef char char2 __attribute__((ext_vector_type(2))); +/** + * Vector version of the basic char type. Provides three char fields packed into + * a single 32 bit field with 32 bit alignment. + */ +typedef char char3 __attribute__((ext_vector_type(3))); +/** + * Vector version of the basic char type. Provides four char fields packed into + * a single 32 bit field with 32 bit alignment. + */ +typedef char char4 __attribute__((ext_vector_type(4))); + +/** + * Vector version of the basic short type. Provides two short fields packed into + * a single 32 bit field with 32 bit alignment. + */ +typedef short short2 __attribute__((ext_vector_type(2))); +/** + * Vector version of the basic short type. Provides three short fields packed + * into a single 64 bit field with 64 bit alignment. + */ +typedef short short3 __attribute__((ext_vector_type(3))); +/** + * Vector version of the basic short type. Provides four short fields packed + * into a single 64 bit field with 64 bit alignment. + */ +typedef short short4 __attribute__((ext_vector_type(4))); + +/** + * Vector version of the basic int type. Provides two int fields packed into a + * single 64 bit field with 64 bit alignment. + */ +typedef int int2 __attribute__((ext_vector_type(2))); +/** + * Vector version of the basic int type. Provides three int fields packed into a + * single 128 bit field with 128 bit alignment. + */ +typedef int int3 __attribute__((ext_vector_type(3))); +/** + * Vector version of the basic int type. Provides two four fields packed into a + * single 128 bit field with 128 bit alignment. + */ +typedef int int4 __attribute__((ext_vector_type(4))); + +/** + * Vector version of the basic long type. Provides two long fields packed into a + * single 128 bit field with 128 bit alignment. + */ +typedef long long2 __attribute__((ext_vector_type(2))); +/** + * Vector version of the basic long type. Provides three long fields packed into + * a single 256 bit field with 256 bit alignment. + */ +typedef long long3 __attribute__((ext_vector_type(3))); +/** + * Vector version of the basic long type. Provides four long fields packed into + * a single 256 bit field with 256 bit alignment. + */ +typedef long long4 __attribute__((ext_vector_type(4))); + +/** + * \brief 4x4 float matrix + * + * Native holder for RS matrix. Elements are stored in the array at the + * location [row*4 + col] + */ +typedef struct { + float m[16]; +} rs_matrix4x4; +/** + * \brief 3x3 float matrix + * + * Native holder for RS matrix. Elements are stored in the array at the + * location [row*3 + col] + */ +typedef struct { + float m[9]; +} rs_matrix3x3; +/** + * \brief 2x2 float matrix + * + * Native holder for RS matrix. Elements are stored in the array at the + * location [row*2 + col] + */ +typedef struct { + float m[4]; +} rs_matrix2x2; + +/** + * quaternion type for use with the quaternion functions + */ +typedef float4 rs_quaternion; + +#define RS_PACKED __attribute__((packed, aligned(4))) +#define NULL ((void *)0) + +#if (defined(RS_VERSION) && (RS_VERSION >= 14)) + +/** + * \brief Enum for selecting cube map faces + */ +typedef enum { + RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X = 0, + RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_X = 1, + RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Y = 2, + RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Y = 3, + RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Z = 4, + RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Z = 5 +} rs_allocation_cubemap_face; + +/** + * \brief Bitfield to specify the usage types for an allocation. + * + * These values are ORed together to specify which usages or memory spaces are + * relevant to an allocation or an operation on an allocation. + */ +typedef enum { + RS_ALLOCATION_USAGE_SCRIPT = 0x0001, + RS_ALLOCATION_USAGE_GRAPHICS_TEXTURE = 0x0002, + RS_ALLOCATION_USAGE_GRAPHICS_VERTEX = 0x0004, + RS_ALLOCATION_USAGE_GRAPHICS_CONSTANTS = 0x0008, + RS_ALLOCATION_USAGE_GRAPHICS_RENDER_TARGET = 0x0010 +} rs_allocation_usage_type; + +#endif //defined(RS_VERSION) && (RS_VERSION >= 14) + +// New API's +#if (defined(RS_VERSION) && (RS_VERSION >= 16)) + +/** + * Describes the way mesh vertex data is interpreted when rendering + * + **/ +typedef enum { + /** + * Vertex data will be rendered as a series of points + */ + RS_PRIMITIVE_POINT = 0, + /** + * Vertex pairs will be rendered as lines + */ + RS_PRIMITIVE_LINE = 1, + /** + * Vertex data will be rendered as a connected line strip + */ + RS_PRIMITIVE_LINE_STRIP = 2, + /** + * Vertices will be rendered as individual triangles + */ + RS_PRIMITIVE_TRIANGLE = 3, + /** + * Vertices will be rendered as a connected triangle strip + * defined by the first three vertices with each additional + * triangle defined by a new vertex + */ + RS_PRIMITIVE_TRIANGLE_STRIP = 4, + /** + * Vertices will be rendered as a sequence of triangles that all + * share first vertex as the origin + */ + RS_PRIMITIVE_TRIANGLE_FAN = 5, + + /** + * Invalid primitive + */ + RS_PRIMITIVE_INVALID = 100, +} rs_primitive; + +/** + * \brief Enumeration for possible element data types + * + * DataType represents the basic type information for a basic element. The + * naming convention follows. For numeric types it is FLOAT, + * SIGNED, or UNSIGNED followed by the _BITS where BITS is the + * size of the data. BOOLEAN is a true / false (1,0) + * represented in an 8 bit container. The UNSIGNED variants + * with multiple bit definitions are for packed graphical data + * formats and represent vectors with per vector member sizes + * which are treated as a single unit for packing and alignment + * purposes. + * + * MATRIX the three matrix types contain FLOAT_32 elements and are treated + * as 32 bits for alignment purposes. + * + * RS_* objects. 32 bit opaque handles. + */ +typedef enum { + RS_TYPE_NONE = 0, + RS_TYPE_FLOAT_32 = 2, + RS_TYPE_FLOAT_64 = 3, + RS_TYPE_SIGNED_8 = 4, + RS_TYPE_SIGNED_16 = 5, + RS_TYPE_SIGNED_32 = 6, + RS_TYPE_SIGNED_64 = 7, + RS_TYPE_UNSIGNED_8 = 8, + RS_TYPE_UNSIGNED_16 = 9, + RS_TYPE_UNSIGNED_32 = 10, + RS_TYPE_UNSIGNED_64 = 11, + + RS_TYPE_BOOLEAN = 12, + + RS_TYPE_UNSIGNED_5_6_5 = 13, + RS_TYPE_UNSIGNED_5_5_5_1 = 14, + RS_TYPE_UNSIGNED_4_4_4_4 = 15, + + RS_TYPE_MATRIX_4X4 = 16, + RS_TYPE_MATRIX_3X3 = 17, + RS_TYPE_MATRIX_2X2 = 18, + + RS_TYPE_ELEMENT = 1000, + RS_TYPE_TYPE = 1001, + RS_TYPE_ALLOCATION = 1002, + RS_TYPE_SAMPLER = 1003, + RS_TYPE_SCRIPT = 1004, + RS_TYPE_MESH = 1005, + RS_TYPE_PROGRAM_FRAGMENT = 1006, + RS_TYPE_PROGRAM_VERTEX = 1007, + RS_TYPE_PROGRAM_RASTER = 1008, + RS_TYPE_PROGRAM_STORE = 1009, + RS_TYPE_FONT = 1010, + + RS_TYPE_INVALID = 10000, +} rs_data_type; + +/** + * \brief Enumeration for possible element data kind + * + * The special interpretation of the data if required. This is primarly + * useful for graphical data. USER indicates no special interpretation is + * expected. PIXEL is used in conjunction with the standard data types for + * representing texture formats. + */ +typedef enum { + RS_KIND_USER = 0, + + RS_KIND_PIXEL_L = 7, + RS_KIND_PIXEL_A = 8, + RS_KIND_PIXEL_LA = 9, + RS_KIND_PIXEL_RGB = 10, + RS_KIND_PIXEL_RGBA = 11, + RS_KIND_PIXEL_DEPTH = 12, + RS_KIND_PIXEL_YUV = 13, + + RS_KIND_INVALID = 100, +} rs_data_kind; + +typedef enum { + /** + * Always drawn + */ + RS_DEPTH_FUNC_ALWAYS = 0, + /** + * Drawn if the incoming depth value is less than that in the + * depth buffer + */ + RS_DEPTH_FUNC_LESS = 1, + /** + * Drawn if the incoming depth value is less or equal to that in + * the depth buffer + */ + RS_DEPTH_FUNC_LEQUAL = 2, + /** + * Drawn if the incoming depth value is greater than that in the + * depth buffer + */ + RS_DEPTH_FUNC_GREATER = 3, + /** + * Drawn if the incoming depth value is greater or equal to that + * in the depth buffer + */ + RS_DEPTH_FUNC_GEQUAL = 4, + /** + * Drawn if the incoming depth value is equal to that in the + * depth buffer + */ + RS_DEPTH_FUNC_EQUAL = 5, + /** + * Drawn if the incoming depth value is not equal to that in the + * depth buffer + */ + RS_DEPTH_FUNC_NOTEQUAL = 6, + /** + * Invalid depth function + */ + RS_DEPTH_FUNC_INVALID = 100, +} rs_depth_func; + +typedef enum { + RS_BLEND_SRC_ZERO = 0, + RS_BLEND_SRC_ONE = 1, + RS_BLEND_SRC_DST_COLOR = 2, + RS_BLEND_SRC_ONE_MINUS_DST_COLOR = 3, + RS_BLEND_SRC_SRC_ALPHA = 4, + RS_BLEND_SRC_ONE_MINUS_SRC_ALPHA = 5, + RS_BLEND_SRC_DST_ALPHA = 6, + RS_BLEND_SRC_ONE_MINUS_DST_ALPHA = 7, + RS_BLEND_SRC_SRC_ALPHA_SATURATE = 8, + + RS_BLEND_SRC_INVALID = 100, +} rs_blend_src_func; + +typedef enum { + RS_BLEND_DST_ZERO = 0, + RS_BLEND_DST_ONE = 1, + RS_BLEND_DST_SRC_COLOR = 2, + RS_BLEND_DST_ONE_MINUS_SRC_COLOR = 3, + RS_BLEND_DST_SRC_ALPHA = 4, + RS_BLEND_DST_ONE_MINUS_SRC_ALPHA = 5, + RS_BLEND_DST_DST_ALPHA = 6, + RS_BLEND_DST_ONE_MINUS_DST_ALPHA = 7, + + RS_BLEND_DST_INVALID = 100, +} rs_blend_dst_func; + +typedef enum { + RS_CULL_BACK = 0, + RS_CULL_FRONT = 1, + RS_CULL_NONE = 2, + + RS_CULL_INVALID = 100, +} rs_cull_mode; + +typedef enum { + RS_SAMPLER_NEAREST = 0, + RS_SAMPLER_LINEAR = 1, + RS_SAMPLER_LINEAR_MIP_LINEAR = 2, + RS_SAMPLER_WRAP = 3, + RS_SAMPLER_CLAMP = 4, + RS_SAMPLER_LINEAR_MIP_NEAREST = 5, + RS_SAMPLER_MIRRORED_REPEAT = 6, + + RS_SAMPLER_INVALID = 100, +} rs_sampler_value; + +#endif // (defined(RS_VERSION) && (RS_VERSION >= 16)) + +#endif // __RS_TYPES_RSH__ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/bc/armeabi-v7a/libclcore.bc b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/bc/armeabi-v7a/libclcore.bc new file mode 100644 index 0000000..5c53b2f Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/bc/armeabi-v7a/libclcore.bc differ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/bc/mips/libclcore.bc b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/bc/mips/libclcore.bc new file mode 100644 index 0000000..5c53b2f Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/bc/mips/libclcore.bc differ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/intermediates/armeabi-v7a/libc.so b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/intermediates/armeabi-v7a/libc.so new file mode 100644 index 0000000..e832f6f Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/intermediates/armeabi-v7a/libc.so differ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/intermediates/armeabi-v7a/libcompiler_rt.a b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/intermediates/armeabi-v7a/libcompiler_rt.a new file mode 100644 index 0000000..8913a9f Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/intermediates/armeabi-v7a/libcompiler_rt.a differ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/intermediates/armeabi-v7a/libm.so b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/intermediates/armeabi-v7a/libm.so new file mode 100644 index 0000000..c777400 Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/intermediates/armeabi-v7a/libm.so differ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/intermediates/mips/libc.so b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/intermediates/mips/libc.so new file mode 100644 index 0000000..74a6a25 Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/intermediates/mips/libc.so differ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/intermediates/mips/libcompiler_rt.a b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/intermediates/mips/libcompiler_rt.a new file mode 100644 index 0000000..81f81f2 Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/intermediates/mips/libcompiler_rt.a differ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/intermediates/mips/libm.so b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/intermediates/mips/libm.so new file mode 100644 index 0000000..e8ce741 Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/intermediates/mips/libm.so differ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/packaged/armeabi-v7a/libRSSupport.so b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/packaged/armeabi-v7a/libRSSupport.so new file mode 100644 index 0000000..5b303bc Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/packaged/armeabi-v7a/libRSSupport.so differ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/packaged/armeabi-v7a/librsjni.so b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/packaged/armeabi-v7a/librsjni.so new file mode 100644 index 0000000..0d4c150 Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/packaged/armeabi-v7a/librsjni.so differ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/packaged/mips/libRSSupport.so b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/packaged/mips/libRSSupport.so new file mode 100644 index 0000000..b31817d Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/packaged/mips/libRSSupport.so differ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/packaged/mips/librsjni.so b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/packaged/mips/librsjni.so new file mode 100644 index 0000000..9875a8b Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/packaged/mips/librsjni.so differ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/renderscript-v8.jar b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/renderscript-v8.jar new file mode 100644 index 0000000..daac526 Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/renderscript/lib/renderscript-v8.jar differ diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/source.properties b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/source.properties new file mode 100644 index 0000000..859d4d4 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/source.properties @@ -0,0 +1,7 @@ +### Android Tool: Source of this archive. +#Thu Jul 09 05:19:19 CEST 2015 +Archive.HostOs=windows +Pkg.License=To get started with the Android SDK, you must agree to the following terms and conditions.\n\nThis is the Android SDK License Agreement (the "License Agreement").\n\n1. Introduction\n\n1.1 The Android SDK (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and SDK library files and tools , if and when they are made available) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.\n\n1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL\: http\://source.android.com/, as updated from time to time.\n\n1.3 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.\n\n2. Accepting the License Agreement\n\n2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.\n\n2.2 By clicking to accept and/or using the SDK, you hereby agree to the terms of the License Agreement.\n\n2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries including the country in which you are resident or from which you use the SDK.\n\n2.4 If you will use the SDK internally within your company or organization you agree to be bound by the License Agreement on behalf of your employer or other entity, and you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.\n\n3. SDK License from Google\n\n3.1 Subject to the terms of the License Agreement, Google grants you a royalty-free, non-assignable, non-exclusive, non-sublicensable, limited, revocable license to use the SDK, personally or internally within your company or organization, solely to develop and distribute applications to run on the Android platform.\n\n3.2 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.\n\n3.3 You may not use the SDK for any purpose not expressly permitted by the License Agreement. Except to the extent required by applicable third party licenses, you may not\: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.\n\n3.4 You agree that you will not take any actions that may cause or result in the fragmentation of Android, including but not limited to distributing, participating in the creation of, or promoting in any way a software development kit derived from the SDK.\n\n3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement. You agree to remain a licensee in good standing in regard to such open source software licenses under all the rights granted and to refrain from any actions that may terminate, suspend, or breach such rights.\n\n3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.\n\n3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.\n\n3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.\n\n4. Use of the SDK by You\n\n4.1 Google agrees that nothing in the License Agreement gives Google any right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.\n\n4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement, and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).\n\n4.3 You agree that if you use the SDK to develop applications, you will protect the privacy and legal rights of users. If users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If users provide you with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, each user has given you permission to do so.\n\n4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of Google or any third party.\n\n4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.\n\n4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.\n\n5. Your Developer Credentials\n\n5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.\n\n6. Privacy and Information\n\n6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.\n\n6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy located at http\://www.google.com/policies/privacy/.\n\n7. Third Party Applications\n\n7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.\n\n7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.\n\n7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party.\n\n8. Using Google APIs\n\n8.1 Google APIs\n\n8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.\n\n8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.\n\n9. Terminating the License Agreement\n\n9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.\n\n9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.\n\n9.3 Google may at any time, terminate the License Agreement, with or without cause, upon notice to you.\n\n9.4 The License Agreement will automatically terminate without notice or other action when Google ceases to provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service.\n\n9.5 When the License Agreement is terminated, the license granted to you in the License Agreement will terminate, you will immediately cease all use of the SDK, and the provisions of paragraphs 10, 11, 12 and 14 shall survive indefinitely.\n\n10. DISCLAIMERS\n\n10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.\n\n10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE. WITHOUT LIMITING THE FOREGOING, YOU UNDERSTAND THAT THE SDK MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.\n\n10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.\n\n11. LIMITATION OF LIABILITY\n\n11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.\n\n12. Indemnification\n\n12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys\u2019 fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any Intellectual Property Rights of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you of the License Agreement.\n\n13. Changes to the License Agreement\n\n13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.\n\n14. General Legal Terms\n\n14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.\n\n14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.\n\n14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.\n\n14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.\n\n14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.\n\n14.6 The License Agreement may not be assigned or transferred by you without the prior written approval of Google, and any attempted assignment without such approval will be void. You shall not delegate your responsibilities or obligations under the License Agreement without the prior written approval of Google.\n\n14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.\n\nJune 2014.\n +Pkg.LicenseRef=android-sdk-license +Pkg.Revision=19.1 +Pkg.SourceUrl=https\://dl.google.com/android/repository/repository-11.xml diff --git a/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/zipalign.exe b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/zipalign.exe new file mode 100644 index 0000000..c7d2e88 Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/build-tools/19.1.0/zipalign.exe differ diff --git a/love2dToAPK/tools/tools/android-win/platform-tools/AdbWinApi.dll b/love2dToAPK/tools/tools/android-win/platform-tools/AdbWinApi.dll new file mode 100644 index 0000000..b5586eb Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/platform-tools/AdbWinApi.dll differ diff --git a/love2dToAPK/tools/tools/android-win/platform-tools/AdbWinUsbApi.dll b/love2dToAPK/tools/tools/android-win/platform-tools/AdbWinUsbApi.dll new file mode 100644 index 0000000..0c9e00b Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/platform-tools/AdbWinUsbApi.dll differ diff --git a/love2dToAPK/tools/tools/android-win/platform-tools/NOTICE.txt b/love2dToAPK/tools/tools/android-win/platform-tools/NOTICE.txt new file mode 100644 index 0000000..afe2446 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/platform-tools/NOTICE.txt @@ -0,0 +1,15551 @@ +Notices for files contained in the tools directory: +============================================================ +Notices for file(s): +/usr/icu/icudt53l.dat +------------------------------------------------------------ +ICU License - ICU 1.8.1 and later + +COPYRIGHT AND PERMISSION NOTICE + +Copyright (c) 1995-2008 International Business Machines Corporation and others + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, provided that the above copyright notice(s) and this permission notice appear in all copies of the Software and that both the above copyright notice(s) and this permission notice appear in supporting documentation. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder. + +All trademarks and registered trademarks mentioned herein are the property of their respective owners. + +============================================================================== + +UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE + + Unicode Data Files include all data files under the directories +http://www.unicode.org/Public/, http://www.unicode.org/reports/, and +http://www.unicode.org/cldr/data/ . Unicode Software includes any source code +published in the Unicode Standard or under the directories +http://www.unicode.org/Public/, http://www.unicode.org/reports/, and +http://www.unicode.org/cldr/data/. + + NOTICE TO USER: Carefully read the following legal agreement. BY +DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES +("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND +AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU +DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES +OR SOFTWARE. + + COPYRIGHT AND PERMISSION NOTICE + + Copyright ¬© 1991-2007 Unicode, Inc. All rights reserved. Distributed under +the Terms of Use in http://www.unicode.org/copyright.html. + + Permission is hereby granted, free of charge, to any person obtaining a copy +of the Unicode data files and any associated documentation (the "Data Files") or +Unicode software and any associated documentation (the "Software") to deal in +the Data Files or Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, and/or sell copies of +the Data Files or Software, and to permit persons to whom the Data Files or +Software are furnished to do so, provided that (a) the above copyright notice(s) +and this permission notice appear with all copies of the Data Files or Software, +(b) both the above copyright notice(s) and this permission notice appear in +associated documentation, and (c) there is clear notice in each modified Data +File or in the Software as well as in the documentation associated with the Data +File(s) or Software that the data or software has been modified. + + THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD +PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS +NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL +DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING +OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR +SOFTWARE. + + Except as contained in this notice, the name of a copyright holder shall not +be used in advertising or otherwise to promote the sale, use or other dealings +in these Data Files or Software without prior written authorization of the +copyright holder. + +=============================================================================== + + +/* This ICU code derived from: */ +/* +punycode.c 0.4.0 (2001-Nov-17-Sat) +http://www.cs.berkeley.edu/~amc/idn/ +Adam M. Costello +http://www.nicemice.net/amc/ + +Disclaimer and license + +Regarding this entire document or any portion of it (including +the pseudocode and C code), the author makes no guarantees and +is not responsible for any damage resulting from its use. The +author grants irrevocable permission to anyone to use, modify, +and distribute it in any way that does not diminish the rights +of anyone else to use, modify, and distribute it, provided that +redistributed derivative works do not contain misleading author or +version information. Derivative works need not be licensed under +similar terms. +*/ + + +/* +** This file is in the public domain, so clarified as of +** 2006-07-17 by Arthur David Olson. +*/ + +============================================================ +Notices for file(s): +/bin/make_ext4fs +/bin/mkuserimg.sh +/lib/libext4_utils_host.a +/lib/libf2fs_dlutils_host.a +/lib/libf2fs_ioutils_host.a +/lib/libf2fs_utils_host.a +------------------------------------------------------------ + + Copyright (c) 2010, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + +============================================================ +Notices for file(s): +/lib/libsqlite_jni.so +------------------------------------------------------------ +This software is copyrighted by Christian Werner +and others. The following terms apply to all files associated with the +software unless explicitly disclaimed in individual files. + +The authors hereby grant permission to use, copy, modify, distribute, +and license this software and its documentation for any purpose, provided +that existing copyright notices are retained in all copies and that this +notice is included verbatim in any distributions. No written agreement, +license, or royalty fee is required for any of the authorized uses. +Modifications to this software may be copyrighted by their authors +and need not follow the licensing terms described here, provided that +the new terms are clearly indicated on the first page of each file where +they apply. + +IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY +FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY +DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE +IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE +NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR +MODIFICATIONS. + +============================================================ +Notices for file(s): +/lib/libgccdemangle.a +------------------------------------------------------------ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. + +============================================================ +Notices for file(s): +/bin/aapt +/bin/aidl +/bin/dexdump +/bin/dx +/bin/jasmin +/framework/jasmin.jar +/lib/libaapt.a +/lib/libandroidfw.a +/lib/libcutils.a +/lib/libnativehelper.so +/lib/libsqlite3_android.a +/lib/libutils.a +/lib/libzipfile.a +/lib64/libcutils.a +/lib64/libnativehelper.so +/lib64/libutils.a +/lib64/libzipfile.a +------------------------------------------------------------ + + Copyright (c) 2005-2008, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + +============================================================ +Notices for file(s): +/framework/commons-compress-1.0.jar +------------------------------------------------------------ +Apache Commons Compress +Copyright 2002-2009 The Apache Software Foundation + +This product includes software developed by +The Apache Software Foundation (http://www.apache.org/). + +Original BZip2 classes contributed by Keiron Liddle +, Aftex Software to the Apache Ant project + +Original Tar classes from contributors of the Apache Ant project + +Original Zip classes from contributors of the Apache Ant project + +Original CPIO classes contributed by Markus Kuss and the jRPM project +(jrpm.sourceforge.net) + +============================================================ +Notices for file(s): +/lib/libbcc.so +------------------------------------------------------------ +========================== +NOTICE file for libbcc.git +========================== + +* NOTICE for lib/ExecutionEngine/, lib/ScriptCRT/, include and helper/. + + Copyright (c) 2005-2011, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + + +* NOTICE for runtime/ and lib/CodeGen/. + Note: The NOTICE is the same for another git project, external/llvm.git. + +============================================================================== +LLVM Release License +============================================================================== +University of Illinois/NCSA +Open Source License + +Copyright (c) 2003-2011 University of Illinois at Urbana-Champaign. +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + +============================================================================== +Copyrights and Licenses for Third Party Software Distributed with LLVM: +============================================================================== +The LLVM software contains code written by third parties. Such software will +have its own individual LICENSE.TXT file in the directory in which it appears. +This file will describe the copyrights, license, and restrictions which apply +to that code. + +The disclaimer of warranty in the University of Illinois Open Source License +applies to all code in the LLVM Distribution, and nothing in any of the +other licenses gives permission to use the names of the LLVM Team or the +University of Illinois to endorse or promote products derived from this +Software. + +The following pieces of software have additional or alternate copyrights, +licenses, and/or restrictions: + +Program Directory +------- --------- +Autoconf llvm/autoconf + llvm/projects/ModuleMaker/autoconf + llvm/projects/sample/autoconf +CellSPU backend llvm/lib/Target/CellSPU/README.txt +Google Test llvm/utils/unittest/googletest +OpenBSD regex llvm/lib/Support/{reg*, COPYRIGHT.regex} + + + +* NOTICE for tests/disassem.cpp and tests/disassem.h. + +/* $NetBSD: disassem.c,v 1.14 2003/03/27 16:58:36 mycroft Exp $ */ + +/*- + * Copyright (c) 1996 Mark Brinicombe. + * Copyright (c) 1996 Brini. + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Brini. + * 4. The name of the company nor the name of the author may be used to + * endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY BRINI ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL BRINI OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * RiscBSD kernel project + * + * db_disasm.c + * + * Kernel disassembler + * + * Created : 10/02/96 + * + * Structured after the sparc/sparc/db_disasm.c by David S. Miller & + * Paul Kranenburg + * + * This code is not complete. Not all instructions are disassembled. + */ + +============================================================ +Notices for file(s): +/lib/libjavacore.so +/lib64/libjavacore.so +------------------------------------------------------------ + ========================================================================= + == NOTICE file corresponding to the section 4 d of == + == the Apache License, Version 2.0, == + == in this case for the Android-specific code. == + ========================================================================= + +Android Code +Copyright 2005-2008 The Android Open Source Project + +This product includes software developed as part of +The Android Open Source Project (http://source.android.com). + + ========================================================================= + == NOTICE file corresponding to the section 4 d of == + == the Apache License, Version 2.0, == + == in this case for the Apache Harmony distribution. == + ========================================================================= + +Apache Harmony +Copyright 2006 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +Portions of Harmony were originally developed by +Intel Corporation and are licensed to the Apache Software +Foundation under the "Software Grant and Corporate Contribution +License Agreement", informally known as the "Intel Harmony CLA". + + + ========================================================================= + == NOTICE file for the ICU License. == + ========================================================================= + +Copyright (c) 1995-2014 International Business Machines Corporation and others + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, and/or sell copies of the Software, and to permit persons +to whom the Software is furnished to do so, provided that the above +copyright notice(s) and this permission notice appear in all copies of +the Software and that both the above copyright notice(s) and this +permission notice appear in supporting documentation. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY +SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER +RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF +CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Except as contained in this notice, the name of a copyright holder +shall not be used in advertising or otherwise to promote the sale, use +or other dealings in this Software without prior written authorization +of the copyright holder. + +All trademarks and registered trademarks mentioned herein are the +property of their respective owners. + + + ========================================================================= + == NOTICE file for the KXML License. == + ========================================================================= + +Copyright (c) 2002,2003, Stefan Haustein, Oberhausen, Rhld., Germany + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + ========================================================================= + == NOTICE file for the W3C License. == + ========================================================================= + +Copyright (c) 2000 World Wide Web Consortium, (Massachusetts Institute +of Technology, Institut National de Recherche en Informatique et en +Automatique, Keio University). All Rights Reserved. This program is +distributed under the W3C's Software Intellectual Property License. +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See W3C License http://www.w3.org/Consortium/Legal/ for more details. + +============================================================ +Notices for file(s): +/lib/libfdlibm.a +/lib64/libfdlibm.a +------------------------------------------------------------ +Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + +Developed at SunSoft, a Sun Microsystems, Inc. business. +Permission to use, copy, modify, and distribute this +software is freely granted, provided that this notice +is preserved. + +============================================================ +Notices for file(s): +/framework/guavalib.jar +------------------------------------------------------------ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +============================================================ +Notices for file(s): +/lib/third_party_icu_icudata_arm_host_gyp.a +/lib/third_party_icu_icui18n_arm_host_gyp.a +/lib/third_party_icu_icuuc_arm_host_gyp.a +/lib/third_party_protobuf_protobuf_full_do_not_use_arm_host_gyp.a +/lib/v8_tools_gyp_v8_base_arm_host_gyp.a +/lib/v8_tools_gyp_v8_libbase_arm_host_gyp.a +/lib/v8_tools_gyp_v8_libplatform_arm_host_gyp.a +/lib/v8_tools_gyp_v8_nosnapshot_arm_host_gyp.a +/obj/GYP/shared_intermediates/libvpx_obj_int_extract +/obj/GYP/shared_intermediates/mksnapshot +/obj/GYP/shared_intermediates/protoc +------------------------------------------------------------ +// Copyright 2014 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +/**************************************************************** + * + * The author of this software is David M. Gay. + * + * Copyright (c) 1991, 2000, 2001 by Lucent Technologies. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose without fee is hereby granted, provided that this entire notice + * is included in all copies of any software which is or includes a copy + * or modification of this software and in all copies of the supporting + * documentation for such software. + * + * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR LUCENT MAKES ANY + * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY + * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. + * + ***************************************************************/ + +/* Copyright (c) 2008-2009, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * --- + * Author: Kostya Serebryany + */ + +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is the Netscape Portable Runtime (NSPR). + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1998-2000 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +Paul Hsieh OLD BSD license + +Copyright (c) 2010, Paul Hsieh +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. +* Neither my name, Paul Hsieh, nor the names of any other contributors to the + code use may not be used to endorse or promote products derived from this + software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Copyright (c) 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Notice that the following BSD-style license applies to the Valgrind header + files used by Chromium (valgrind.h and memcheck.h). However, the rest of + Valgrind is licensed under the terms of the GNU General Public License, + version 2, unless otherwise indicated. + + ---------------------------------------------------------------- + + Copyright (C) 2000-2008 Julian Seward. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + + 4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Copyright (c) 2007 Red Hat, inc + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation files + (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +Copyright 2003-2005 Colin Percival +All rights reserved + +Redistribution and use in source and binary forms, with or without +modification, are permitted providing that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2007-2009 Google Inc. + Copyright 2007-2009 WebDriver committers + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +// Copyright 2013 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +Copyright (C) 2009 by Tung Mac. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is the Netscape security libraries. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 2000 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is the Netscape security libraries. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1994-2000 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +Name: fancy_urllib +URL: http://googleappengine.googlecode.com/svn/trunk/python/lib/fancy_urllib +License: Apache 2.0 +License File: README.chromium +Security Critical: no + +The fancy_urllib library was obtained from +http://googleappengine.googlecode.com/svn/trunk/python/lib/fancy_urllib/fancy_urllib/__init__.py +under the following license (http://googleappengine.googlecode.com/svn/trunk/python/LICENSE): + +GOOGLE APP ENGINE SDK +===================== +Copyright 2008 Google Inc. +All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + README for newlib-2.0.0 release + (mostly cribbed from the README in the gdb-4.13 release) + +This is `newlib', a simple ANSI C library, math library, and collection +of board support packages. + +The newlib and libgloss subdirectories are a collection of software from +several sources, each wi6h their own copyright and license. See the file +COPYING.NEWLIB for details. The rest of the release tree is under either +the GNU GPL or LGPL licenses. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +Unpacking and Installation -- quick overview +========================== + +When you unpack the newlib-2.0.0.tar.gz file, you'll find a directory +called `newlib-2.0.0', which contains: + +COPYING config/ install-sh* mpw-configure +COPYING.LIB config-ml.in libgloss/ mpw-install +COPYING.NEWLIB config.guess* mkinstalldirs* newlib/ +CYGNUS config.sub* move-if-change* symlink-tree* +ChangeLog configure* mpw-README texinfo/ +Makefile.in configure.in mpw-build.in +README etc/ mpw-config.in + +To build NEWLIB, you must follow the instructions in the section entitled +"Compiling NEWLIB". + +This will configure and build all the libraries and crt0 (if one exists). +If `configure' can't determine your host system type, specify one as its +argument, e.g., sun4 or sun4sol2. NEWLIB is most often used in cross +environments. + +NOTE THAT YOU MUST HAVE ALREADY BUILT AND INSTALLED GCC and BINUTILS. + + +More Documentation +================== + + Newlib documentation is available on the net via: + http://sourceware.org/newlib/docs.html + + All the documentation for NEWLIB comes as part of the machine-readable +distribution. The documentation is written in Texinfo format, which is +a documentation system that uses a single source file to produce both +on-line information and a printed manual. You can use one of the Info +formatting commands to create the on-line version of the documentation +and TeX (or `texi2roff') to typeset the printed version. + + If you want to format these Info files yourself, you need one of the +Info formatting programs, such as `texinfo-format-buffer' or `makeinfo'. + + If you want to typeset and print copies of this manual, you need TeX, +a program to print its DVI output files, and `texinfo.tex', the Texinfo +definitions file. + + TeX is a typesetting program; it does not print files directly, but +produces output files called DVI files. To print a typeset document, +you need a program to print DVI files. If your system has TeX +installed, chances are it has such a program. The precise command to +use depends on your system; `lpr -d' is common; another (for PostScript +devices) is `dvips'. The DVI print command may require a file name +without any extension or a `.dvi' extension. + + TeX also requires a macro definitions file called `texinfo.tex'. +This file tells TeX how to typeset a document written in Texinfo +format. On its own, TeX cannot read, much less typeset a Texinfo file. +`texinfo.tex' is distributed with NEWLIB and is located in the +`newlib-VERSION-NUMBER/texinfo' directory. + + + +Compiling NEWLIB +================ + + To compile NEWLIB, you must build it in a directory separate from +the source directory. If you want to run NEWLIB versions for several host +or target machines, you need a different `newlib' compiled for each combination +of host and target. `configure' is designed to make this easy by allowing +you to generate each configuration in a separate subdirectory. +If your `make' program handles the `VPATH' feature correctly (like GNU `make') +running `make' in each of these directories builds the `newlib' libraries +specified there. + + To build `newlib' in a specific directory, run `configure' with the +`--srcdir' option to specify where to find the source. (You also need +to specify a path to find `configure' itself from your working +directory. If the path to `configure' would be the same as the +argument to `--srcdir', you can leave out the `--srcdir' option; it +will be assumed.) + + For example, with version 2.0.0, you can build NEWLIB in a separate +directory for a Sun 4 cross m68k-aout environment like this: + + cd newlib-2.0.0 + mkdir ../newlib-m68k-aout + cd ../newlib-m68k-aout + ../newlib-2.0.0/configure --host=sun4 --target=m68k-aout + make + + When `configure' builds a configuration using a remote source +directory, it creates a tree for the binaries with the same structure +(and using the same names) as the tree under the source directory. In +the example, you'd find the Sun 4 library `libiberty.a' in the +directory `newlib-m68k-aout/libiberty', and NEWLIB itself in +`newlib-m68k-aout/newlib'. + + When you run `make' to build a program or library, you must run it +in a configured directory--whatever directory you were in when you +called `configure' (or one of its subdirectories). + + The `Makefile' that `configure' generates in each source directory +also runs recursively. If you type `make' in a source directory such +as `newlib-2.0.0' (or in a separate configured directory configured with +`--srcdir=PATH/newlib-2.0.0'), you will build all the required libraries. + + When you have multiple hosts or targets configured in separate +directories, you can run `make' on them in parallel (for example, if +they are NFS-mounted on each of the hosts); they will not interfere +with each other. + + +Specifying names for hosts and targets +====================================== + + The specifications used for hosts and targets in the `configure' +script are based on a three-part naming scheme, but some short +predefined aliases are also supported. The full naming scheme encodes +three pieces of information in the following pattern: + + ARCHITECTURE-VENDOR-OS + + For example, you can use the alias `sun4' as a HOST argument or in a +`--target=TARGET' option. The equivalent full name is +`sparc-sun-sunos4'. + + The `configure' script accompanying NEWLIB does not provide any query +facility to list all supported host and target names or aliases. +`configure' calls the Bourne shell script `config.sub' to map +abbreviations to full names; you can read the script, if you wish, or +you can use it to test your guesses on abbreviations--for example: + + % sh config.sub sun4 + sparc-sun-sunos4.1.1 + % sh config.sub sun3 + m68k-sun-sunos4.1.1 + % sh config.sub decstation + mips-dec-ultrix4.2 + % sh config.sub hp300bsd + m68k-hp-bsd + % sh config.sub i386v + i386-pc-sysv + % sh config.sub i786v + Invalid configuration `i786v': machine `i786v' not recognized + +The Build, Host and Target Concepts in newlib +============================================= + +The build, host and target concepts are defined for gcc as follows: + +build: the platform on which gcc is built. +host: the platform on which gcc is run. +target: the platform for which gcc generates code. + +Since newlib is a library, the target concept does not apply to it, and the +build, host, and target options given to the top-level configure script must +be changed for newlib's use. + +The options are shifted according to these correspondences: + +gcc's build platform has no equivalent in newlib. +gcc's host platform is newlib's build platform. +gcc's target platform is newlib's host platform. +and as mentioned before, newlib has no concept of target. + +`configure' options +=================== + + Here is a summary of the `configure' options and arguments that are +most often useful for building NEWLIB. `configure' also has several other +options not listed here. + + configure [--help] + [--prefix=DIR] + [--srcdir=PATH] + [--target=TARGET] HOST + +You may introduce options with a single `-' rather than `--' if you +prefer; but you may abbreviate option names if you use `--'. + +`--help' + Display a quick summary of how to invoke `configure'. + +`--prefix=DIR' + Configure the source to install programs and files in directory + `DIR'. + +`--exec-prefix=DIR' + Configure the source to install host-dependent files in directory + `DIR'. + +`--srcdir=PATH' + *Warning: using this option requires GNU `make', or another `make' + that compatibly implements the `VPATH' feature. + Use this option to make configurations in directories separate + from the NEWLIB source directories. Among other things, you can use + this to build (or maintain) several configurations simultaneously, + in separate directories. `configure' writes configuration + specific files in the current directory, but arranges for them to + use the source in the directory PATH. `configure' will create + directories under the working directory in parallel to the source + directories below PATH. + +`--norecursion' + Configure only the directory level where `configure' is executed; + do not propagate configuration to subdirectories. + +`--target=TARGET' + Configure NEWLIB for running on the specified TARGET. + + There is no convenient way to generate a list of all available + targets. + +`HOST ...' + Configure NEWLIB to be built using a cross compiler running on + the specified HOST. + + There is no convenient way to generate a list of all available + hosts. + +To fit diverse usage models, NEWLIB supports a group of configuration +options so that library features can be turned on/off according to +target system's requirements. + +One feature can be enabled by specifying `--enable-FEATURE=yes' or +`--enable-FEATURE'. Or it can be disable by `--enable-FEATURE=no' or +`--disable-FEATURE'. + +`--enable-newlib-io-pos-args' + Enable printf-family positional arg support. + Disabled by default, but some hosts enable it in configure.host. + +`--enable-newlib-io-c99-formats' + Enable C99 support in IO functions like printf/scanf. + Disabled by default, but some hosts enable it in configure.host. + +`--enable-newlib-register-fini' + Enable finalization function registration using atexit. + Disabled by default. + +`--enable-newlib-io-long-long' + Enable long long type support in IO functions like printf/scanf. + Disabled by default, but many hosts enable it in configure.host. + +`--enable-newlib-io-long-double' + Enable long double type support in IO functions printf/scanf. + Disabled by default, but some hosts enable it in configure.host. + +`--enable-newlib-mb' + Enable multibyte support. + Disabled by default. + +`--enable-newlib-iconv-encodings' + Enable specific comma-separated list of bidirectional iconv + encodings to be built-in. + Disabled by default. + +`--enable-newlib-iconv-from-encodings' + Enable specific comma-separated list of \"from\" iconv encodings + to be built-in. + Disabled by default. + +`--enable-newlib-iconv-to-encodings' + Enable specific comma-separated list of \"to\" iconv encodings + to be built-in. + Disabled by default. + +`--enable-newlib-iconv-external-ccs' + Enable capabilities to load external CCS files for iconv. + Disabled by default. + +`--disable-newlib-atexit-dynamic-alloc' + Disable dynamic allocation of atexit entries. + Most hosts and targets have it enabled in configure.host. + +`--enable-newlib-reent-small' + Enable small reentrant struct support. + Disabled by default. + +`--disable-newlib-fvwrite-in-streamio' + NEWLIB implements the vector buffer mechanism to support stream IO + buffering required by C standard. This feature is possibly + unnecessary for embedded systems which won't change file buffering + with functions like `setbuf' or `setvbuf'. The buffering mechanism + still acts as default for STDIN/STDOUT/STDERR even if this option + is specified. + Enabled by default. + +`--disable-newlib-fseek-optimization' + Disable fseek optimization. It can decrease code size of application + calling `fseek`. + Enabled by default. + +`--disable-newlib-wide-orient' + C99 states that each stream has an orientation, wide or byte. This + feature is possibly unnecessary for embedded systems which only do + byte input/output operations on stream. It can decrease code size + by disable the feature. + Enabled by default. + +`--enable-newlib-nano-malloc' + NEWLIB has two implementations of malloc family's functions, one in + `mallocr.c' and the other one in `nano-mallocr.c'. This options + enables the nano-malloc implementation, which is for small systems + with very limited memory. Note that this implementation does not + support `--enable-malloc-debugging' any more. + Disabled by default. + +`--disable-newlib-unbuf-stream-opt' + NEWLIB does optimization when `fprintf to write only unbuffered unix + file'. It creates a temorary buffer to do the optimization that + increases stack consumption by about `BUFSIZ' bytes. This option + disables the optimization and saves size of text and stack. + Enabled by default. + +`--enable-multilib' + Build many library versions. + Enabled by default. + +`--enable-target-optspace' + Optimize for space. + Disabled by default. + +`--enable-malloc-debugging' + Indicate malloc debugging requested. + Disabled by default. + +`--enable-newlib-multithread' + Enable support for multiple threads. + Enabled by default. + +`--enable-newlib-iconv' + Enable iconv library support. + Disabled by default. + +`--enable-newlib-elix-level' + Supply desired elix library level (1-4). Please refer to HOWTO for + more information about this option. + Set to level 0 by default. + +`--disable-newlib-io-float' + Disable printf/scanf family float support. + Enabled by default. + +`--disable-newlib-supplied-syscalls' + Disable newlib from supplying syscalls. + Enabled by default. + +`--enable-lite-exit' + Enable lite exit, a size-reduced implementation of exit that doesn't + invoke clean-up functions such as _fini or global destructors. + Disabled by default. + +Running the Testsuite +===================== + +To run newlib's testsuite, you'll need a site.exp in your home +directory which points dejagnu to the proper baseboards directory and +the proper exp file for your target. + +Before running make check-target-newlib, set the DEJAGNU environment +variable to point to ~/site.exp. + +Here is a sample site.exp: + +# Make sure we look in the right place for the board description files. +if ![info exists boards_dir] { + set boards_dir {} +} +lappend boards_dir "your dejagnu/baseboards here" + +verbose "Global Config File: target_triplet is $target_triplet" 2 + +global target_list +case "$target_triplet" in { + + { "mips-*elf*" } { + set target_list "mips-sim" + } + + default { + set target_list { "unix" } + } +} + +mips-sim refers to an exp file in the baseboards directory. You'll +need to add the other targets you're testing to the case statement. + +Now type make check-target-newlib in the top-level build directory to +run the testsuite. + +Shared newlib +============= + +newlib uses libtool when it is being compiled natively (with +--target=i[34567]86-pc-linux-gnu) on an i[34567]86-pc-linux-gnu +host. This allows newlib to be compiled as a shared library. + +To configure newlib, do the following from your build directory: + +$(source_dir)/src/configure --with-newlib --prefix=$(install_dir) + +configure will recognize that host == target == +i[34567]86-pc-linux-gnu, so it will tell newlib to compile itself using +libtool. By default, libtool will build shared and static versions of +newlib. + +To compile a program against shared newlib, do the following (where +target_install_dir = $(install_dir)/i[34567]86-pc-linux-gnu): + +gcc -nostdlib $(target_install_dir)/lib/crt0.o progname.c -I $(target_install_dir)/include -L $(target_install_dir)/lib -lc -lm -lgcc + +To run the program, make sure that $(target_install_dir)/lib is listed +in the LD_LIBRARY_PATH environment variable. + +To create a static binary linked against newlib, do the following: + +gcc -nostdlib -static $(target_install_dir)/lib/crt0.o progname.c -I $(target_install_dir)/include -L $(target_install_dir)/lib -lc -lm + +libtool can be instructed to produce only static libraries. To build +newlib as a static library only, do the following from your build +directory: + +$(source_dir)/src/configure --with-newlib --prefix=$(install_dir) --disable-shared + +Regenerating Configuration Files +================================ + +At times you will need to make changes to configure.in and Makefile.am files. +This will mean that configure and Makefile.in files will need to be +regenerated. + +At the top level of newlib is the file: acinclude.m4. This file contains +the definition of the NEWLIB_CONFIGURE macro which is used by all configure.in +files in newlib. You will notice that each directory in newlib containing +a configure.in file also contains an aclocal.m4 file. This file is +generated by issuing: aclocal -I${relative_path_to_toplevel_newlib_dir} +-I${relative_path_to_toplevel_src_dir} +The first relative directory is to access acinclude.m4. The second relative +directory is to access libtool information in the top-level src directory. + +For example, to regenerate aclocal.m4 in newlib/libc/machine/arm: + + aclocal -I ../../.. -I ../../../.. + +Note that if the top level acinclude.m4 is altered, every aclocal.m4 file +in newlib should be regenerated. + +If the aclocal.m4 file is regenerated due to a change in acinclude.m4 or +if a configure.in file is modified, the corresponding configure file in the +directory must be regenerated using autoconf. No parameters are necessary. +In the previous example, we would issue: + + autoconf + +from the newlib/libc/machine/arm directory. + +If you have regenerated a configure file or if you have modified a Makefile.am +file, you will need to regenerate the appropriate Makefile.in file(s). +For newlib, automake is a bit trickier. First of all, all Makefile.in +files in newlib (and libgloss) are generated using the --cygnus option +of automake. + +Makefile.in files are generated from the nearest directory up the chain +which contains a configure.in file. In most cases, this is the same +directory containing configure.in, but there are exceptions. +For example, the newlib/libc directory has a number of +subdirectories that do not contain their own configure.in files (e.g. stdio). +For these directories, you must issue the automake command from newlib/libc +which is the nearest parent directory that contains a configure.in. +When you issue the automake command, you specify the subdirectory for +the Makefile.in you are regenerating. For example: + + automake --cygnus stdio/Makefile stdlib/Makefile + +Note how multiple Makefile.in files can be created in the same step. You +would not specify machine/Makefile or sys/Makefile in the previous example +because both of these subdirectories contain their own configure.in files. +One would change to each of these subdirectories and in turn issue: + + automake --cygnus Makefile + +Let's say you create a new machine directory XXXX off of newlib/libc/machine. +After creating a new configure.in and Makefile.am file, you would issue: + + aclocal -I ../../.. + autoconf + automake --cygnus Makefile + +from newlib/libc/machine/XXXX + +It is strongly advised that you use an adequate version of autotools. +For this latest release, the following were used: autoconf 2.68, aclocal 1.11.6, and +automake 1.11.6. + +Reporting Bugs +============== + +The correct address for reporting bugs found in NEWLIB is +"newlib@sourceware.org". Please email all bug reports to that +address. Please include the NEWLIB version number (e.g., newlib-2.0.0), +and how you configured it (e.g., "sun4 host and m68k-aout target"). +Since NEWLIB supports many different configurations, it is important +that you be precise about this. + +Archives of the newlib mailing list are on-line, see + http://sourceware.org/ml/newlib/ + + pthreads-win32 - a POSIX threads library for Microsoft Windows + + +This file is Copyrighted +------------------------ + + This file is covered under the following Copyright: + + Copyright (C) 2001,2006 Ross P. Johnson + All rights reserved. + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +Pthreads-win32 is covered by the GNU Lesser General Public License +------------------------------------------------------------------ + + Pthreads-win32 is open software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation version 2.1 of the + License. + + Pthreads-win32 is several binary link libraries, several modules, + associated interface definition files and scripts used to control + its compilation and installation. + + Pthreads-win32 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + A copy of the GNU Lesser General Public License is distributed with + pthreads-win32 under the filename: + + COPYING.LIB + + You should have received a copy of the version 2.1 GNU Lesser General + Public License with pthreads-win32; if not, write to: + + Free Software Foundation, Inc. + 59 Temple Place + Suite 330 + Boston, MA 02111-1307 + USA + + The contact addresses for pthreads-win32 is as follows: + + Web: http://sources.redhat.com/pthreads-win32 + Email: Ross Johnson + Please use: Firstname.Lastname@homemail.com.au + + + +Pthreads-win32 copyrights and exception files +--------------------------------------------- + + With the exception of the files listed below, Pthreads-win32 + is covered under the following GNU Lesser General Public License + Copyrights: + + Pthreads-win32 - POSIX Threads Library for Win32 + Copyright(C) 1998 John E. Bossom + Copyright(C) 1999,2006 Pthreads-win32 contributors + + The current list of contributors is contained + in the file CONTRIBUTORS included with the source + code distribution. The current list of CONTRIBUTORS + can also be seen at the following WWW location: + http://sources.redhat.com/pthreads-win32/contributors.html + + Contact Email: Ross Johnson + Please use: Firstname.Lastname@homemail.com.au + + These files are not covered under one of the Copyrights listed above: + + COPYING + COPYING.LIB + tests/rwlock7.c + + This file, COPYING, is distributed under the Copyright found at the + top of this file. It is important to note that you may distribute + verbatim copies of this file but you may not modify this file. + + The file COPYING.LIB, which contains a copy of the version 2.1 + GNU Lesser General Public License, is itself copyrighted by the + Free Software Foundation, Inc. Please note that the Free Software + Foundation, Inc. does NOT have a copyright over Pthreads-win32, + only the COPYING.LIB that is supplied with pthreads-win32. + + The file tests/rwlock7.c is derived from code written by + Dave Butenhof for his book 'Programming With POSIX(R) Threads'. + The original code was obtained by free download from his website + http://home.earthlink.net/~anneart/family/Threads/source.html + and did not contain a copyright or author notice. It is assumed to + be freely distributable. + + In all cases one may use and distribute these exception files freely. + And because one may freely distribute the LGPL covered files, the + entire pthreads-win32 source may be freely used and distributed. + + + +General Copyleft and License info +--------------------------------- + + For general information on Copylefts, see: + + http://www.gnu.org/copyleft/ + + For information on GNU Lesser General Public Licenses, see: + + http://www.gnu.org/copyleft/lesser.html + http://www.gnu.org/copyleft/lesser.txt + + +Why pthreads-win32 did not use the GNU General Public License +------------------------------------------------------------- + + The goal of the pthreads-win32 project has been to + provide a quality and complete implementation of the POSIX + threads API for Microsoft Windows within the limits imposed + by virtue of it being a stand-alone library and not + linked directly to other POSIX compliant libraries. For + example, some functions and features, such as those based + on POSIX signals, are missing. + + Pthreads-win32 is a library, available in several different + versions depending on supported compilers, and may be used + as a dynamically linked module or a statically linked set of + binary modules. It is not an application on it's own. + + It was fully intended that pthreads-win32 be usable with + commercial software not covered by either the GPL or the LGPL + licenses. Pthreads-win32 has many contributors to it's + code base, many of whom have done so because they have + used the library in commercial or proprietry software + projects. + + Releasing pthreads-win32 under the LGPL ensures that the + library can be used widely, while at the same time ensures + that bug fixes and improvements to the pthreads-win32 code + itself is returned to benefit all current and future users + of the library. + + Although pthreads-win32 makes it possible for applications + that use POSIX threads to be ported to Win32 platforms, the + broader goal of the project is to encourage the use of open + standards, and in particular, to make it just a little easier + for developers writing Win32 applications to consider + widening the potential market for their products. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright (c) 2008, Google Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +(WebKit doesn't distribute an explicit license. This LICENSE is derived from +license text in the source.) + +Copyright (c) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +2006, 2007 Alexander Kellett, Alexey Proskuryakov, Alex Mathews, Allan +Sandfeld Jensen, Alp Toker, Anders Carlsson, Andrew Wellington, Antti +Koivisto, Apple Inc., Arthur Langereis, Baron Schwartz, Bjoern Graf, +Brent Fulgham, Cameron Zwarich, Charles Samuels, Christian Dywan, +Collabora Ltd., Cyrus Patel, Daniel Molkentin, Dave Maclachlan, David +Smith, Dawit Alemayehu, Dirk Mueller, Dirk Schulze, Don Gibson, Enrico +Ros, Eric Seidel, Frederik Holljen, Frerich Raabe, Friedmann Kleint, +George Staikos, Google Inc., Graham Dennis, Harri Porten, Henry Mason, +Hiroyuki Ikezoe, Holger Hans Peter Freyther, IBM, James G. Speth, Jan +Alonzo, Jean-Loup Gailly, John Reis, Jonas Witt, Jon Shier, Jonas +Witt, Julien Chaffraix, Justin Haygood, Kevin Ollivier, Kevin Watters, +Kimmo Kinnunen, Kouhei Sutou, Krzysztof Kowalczyk, Lars Knoll, Luca +Bruno, Maks Orlovich, Malte Starostik, Mark Adler, Martin Jones, +Marvin Decker, Matt Lilek, Michael Emmel, Mitz Pettel, mozilla.org, +Netscape Communications Corporation, Nicholas Shanks, Nikolas +Zimmermann, Nokia, Oliver Hunt, Opened Hand, Paul Johnston, Peter +Kelly, Pioneer Research Center USA, Rich Moore, Rob Buis, Robin Dunn, +Ronald Tschalär, Samuel Weinig, Simon Hausmann, Staikos Computing +Services Inc., Stefan Schimanski, Symantec Corporation, The Dojo +Foundation, The Karbon Developers, Thomas Boyer, Tim Copperfield, +Tobias Anton, Torben Weis, Trolltech, University of Cambridge, Vaclav +Slavik, Waldo Bastian, Xan Lopez, Zack Rusin + +The terms and conditions vary from file to file, but are one of: + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the + distribution. + +*OR* + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the + distribution. +3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of + its contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + +OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + GNU LIBRARY GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the library GPL. It is + numbered 2 because it goes with version 2 of the ordinary GPL.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Library General Public License, applies to some +specially designated Free Software Foundation software, and to any +other libraries whose authors decide to use it. You can use it for +your libraries, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if +you distribute copies of the library, or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link a program with the library, you must provide +complete object files to the recipients so that they can relink them +with the library, after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + Our method of protecting your rights has two steps: (1) copyright +the library, and (2) offer you this license which gives you legal +permission to copy, distribute and/or modify the library. + + Also, for each distributor's protection, we want to make certain +that everyone understands that there is no warranty for this free +library. If the library is modified by someone else and passed on, we +want its recipients to know that what they have is not the original +version, so that any problems introduced by others will not reflect on +the original authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that companies distributing free +software will individually obtain patent licenses, thus in effect +transforming the program into proprietary software. To prevent this, +we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + + Most GNU software, including some libraries, is covered by the ordinary +GNU General Public License, which was designed for utility programs. This +license, the GNU Library General Public License, applies to certain +designated libraries. This license is quite different from the ordinary +one; be sure to read it in full, and don't assume that anything in it is +the same as in the ordinary license. + + The reason we have a separate public license for some libraries is that +they blur the distinction we usually make between modifying or adding to a +program and simply using it. Linking a program with a library, without +changing the library, is in some sense simply using the library, and is +analogous to running a utility program or application program. However, in +a textual and legal sense, the linked executable is a combined work, a +derivative of the original library, and the ordinary General Public License +treats it as such. + + Because of this blurred distinction, using the ordinary General +Public License for libraries did not effectively promote software +sharing, because most developers did not use the libraries. We +concluded that weaker conditions might promote sharing better. + + However, unrestricted linking of non-free programs would deprive the +users of those programs of all benefit from the free status of the +libraries themselves. This Library General Public License is intended to +permit developers of non-free programs to use free libraries, while +preserving your freedom as a user of such programs to change the free +libraries that are incorporated in them. (We have not seen how to achieve +this as regards changes in header files, but we have achieved it as regards +changes in the actual functions of the Library.) The hope is that this +will lead to faster development of free libraries. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, while the latter only +works together with the library. + + Note that it is possible for a library to be covered by the ordinary +General Public License rather than by this special one. + + GNU LIBRARY GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library which +contains a notice placed by the copyright holder or other authorized +party saying it may be distributed under the terms of this Library +General Public License (also called "this License"). Each licensee is +addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also compile or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + c) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + d) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the source code distributed need not include anything that is normally +distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Library General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +// Copyright 2014 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +/* + * Copyright (C) 2012 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * Copyright (C) 2009 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Copyright (C) 2002-2013 The ANGLE Project Authors. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// +// Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc. +// Ltd., nor the names of their contributors may be used to endorse +// or promote products derived from this software without specific +// prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +// COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +Copyright (c) 2012, Manfred Moitzi + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Deutsche Übersetzung: + +Copyright (c) 2012, Manfred Moitzi + +Hiermit wird unentgeltlich, jeder Person, die eine Kopie der Software +und der zugehörigen Dokumentationen (die "Software") erhält, die +Erlaubnis erteilt, uneingeschränkt zu benutzen, inklusive und ohne +Ausnahme, dem Recht, sie zu verwenden, kopieren, ändern, fusionieren, +verlegen, verbreiten, unterlizenzieren und/oder zu verkaufen, und +Personen, die diese Software erhalten, diese Rechte zu geben, unter den +folgenden Bedingungen: + +Der obige Urheberrechtsvermerk und dieser Erlaubnisvermerk sind in allen +Kopien oder Teilkopien der Software beizulegen. + +DIE SOFTWARE WIRD OHNE JEDE AUSDRÜCKLICHE ODER IMPLIZIERTE GARANTIE +BEREITGESTELLT, EINSCHLIESSLICH DER GARANTIE ZUR BENUTZUNG FÜR DEN +VORGESEHENEN ODER EINEM BESTIMMTEN ZWECK SOWIE JEGLICHER +RECHTSVERLETZUNG, JEDOCH NICHT DARAUF BESCHRÄNKT. IN KEINEM FALL SIND +DIE AUTOREN ODER COPYRIGHTINHABER FÜR JEGLICHEN SCHADEN ODER SONSTIGE +ANSPRÜCHE HAFTBAR ZU MACHEN, OB INFOLGE DER ERFÜLLUNG EINES VERTRAGES, +EINES DELIKTES ODER ANDERS IM ZUSAMMENHANG MIT DER SOFTWARE ODER +SONSTIGER VERWENDUNG DER SOFTWARE ENTSTANDEN. + + +Copyright (c) 2013 Alex Seville + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + + + LICENSE ISSUES + ============== + + The OpenSSL toolkit stays under a dual license, i.e. both the conditions of + the OpenSSL License and the original SSLeay license apply to the toolkit. + See below for the actual license texts. Actually both licenses are BSD-style + Open Source licenses. In case of any license issues related to OpenSSL + please contact openssl-core@openssl.org. + + OpenSSL License + --------------- + +/* ==================================================================== + * Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + + Original SSLeay License + ----------------------- + +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + + +// Copyright (c) 2011 Google Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + + +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + MOZILLA PUBLIC LICENSE + Version 1.1 + + --------------- + +1. Definitions. + + 1.0.1. "Commercial Use" means distribution or otherwise making the + Covered Code available to a third party. + + 1.1. "Contributor" means each entity that creates or contributes to + the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the Original + Code, prior Modifications used by a Contributor, and the Modifications + made by that particular Contributor. + + 1.3. "Covered Code" means the Original Code or Modifications or the + combination of the Original Code and Modifications, in each case + including portions thereof. + + 1.4. "Electronic Distribution Mechanism" means a mechanism generally + accepted in the software development community for the electronic + transfer of data. + + 1.5. "Executable" means Covered Code in any form other than Source + Code. + + 1.6. "Initial Developer" means the individual or entity identified + as the Initial Developer in the Source Code notice required by Exhibit + A. + + 1.7. "Larger Work" means a work which combines Covered Code or + portions thereof with code not governed by the terms of this License. + + 1.8. "License" means this document. + + 1.8.1. "Licensable" means having the right to grant, to the maximum + extent possible, whether at the time of the initial grant or + subsequently acquired, any and all of the rights conveyed herein. + + 1.9. "Modifications" means any addition to or deletion from the + substance or structure of either the Original Code or any previous + Modifications. When Covered Code is released as a series of files, a + Modification is: + A. Any addition to or deletion from the contents of a file + containing Original Code or previous Modifications. + + B. Any new file that contains any part of the Original Code or + previous Modifications. + + 1.10. "Original Code" means Source Code of computer software code + which is described in the Source Code notice required by Exhibit A as + Original Code, and which, at the time of its release under this + License is not already Covered Code governed by this License. + + 1.10.1. "Patent Claims" means any patent claim(s), now owned or + hereafter acquired, including without limitation, method, process, + and apparatus claims, in any patent Licensable by grantor. + + 1.11. "Source Code" means the preferred form of the Covered Code for + making modifications to it, including all modules it contains, plus + any associated interface definition files, scripts used to control + compilation and installation of an Executable, or source code + differential comparisons against either the Original Code or another + well known, available Covered Code of the Contributor's choice. The + Source Code can be in a compressed or archival form, provided the + appropriate decompression or de-archiving software is widely available + for no charge. + + 1.12. "You" (or "Your") means an individual or a legal entity + exercising rights under, and complying with all of the terms of, this + License or a future version of this License issued under Section 6.1. + For legal entities, "You" includes any entity which controls, is + controlled by, or is under common control with You. For purposes of + this definition, "control" means (a) the power, direct or indirect, + to cause the direction or management of such entity, whether by + contract or otherwise, or (b) ownership of more than fifty percent + (50%) of the outstanding shares or beneficial ownership of such + entity. + +2. Source Code License. + + 2.1. The Initial Developer Grant. + The Initial Developer hereby grants You a world-wide, royalty-free, + non-exclusive license, subject to third party intellectual property + claims: + (a) under intellectual property rights (other than patent or + trademark) Licensable by Initial Developer to use, reproduce, + modify, display, perform, sublicense and distribute the Original + Code (or portions thereof) with or without Modifications, and/or + as part of a Larger Work; and + + (b) under Patents Claims infringed by the making, using or + selling of Original Code, to make, have made, use, practice, + sell, and offer for sale, and/or otherwise dispose of the + Original Code (or portions thereof). + + (c) the licenses granted in this Section 2.1(a) and (b) are + effective on the date Initial Developer first distributes + Original Code under the terms of this License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is + granted: 1) for code that You delete from the Original Code; 2) + separate from the Original Code; or 3) for infringements caused + by: i) the modification of the Original Code or ii) the + combination of the Original Code with other software or devices. + + 2.2. Contributor Grant. + Subject to third party intellectual property claims, each Contributor + hereby grants You a world-wide, royalty-free, non-exclusive license + + (a) under intellectual property rights (other than patent or + trademark) Licensable by Contributor, to use, reproduce, modify, + display, perform, sublicense and distribute the Modifications + created by such Contributor (or portions thereof) either on an + unmodified basis, with other Modifications, as Covered Code + and/or as part of a Larger Work; and + + (b) under Patent Claims infringed by the making, using, or + selling of Modifications made by that Contributor either alone + and/or in combination with its Contributor Version (or portions + of such combination), to make, use, sell, offer for sale, have + made, and/or otherwise dispose of: 1) Modifications made by that + Contributor (or portions thereof); and 2) the combination of + Modifications made by that Contributor with its Contributor + Version (or portions of such combination). + + (c) the licenses granted in Sections 2.2(a) and 2.2(b) are + effective on the date Contributor first makes Commercial Use of + the Covered Code. + + (d) Notwithstanding Section 2.2(b) above, no patent license is + granted: 1) for any code that Contributor has deleted from the + Contributor Version; 2) separate from the Contributor Version; + 3) for infringements caused by: i) third party modifications of + Contributor Version or ii) the combination of Modifications made + by that Contributor with other software (except as part of the + Contributor Version) or other devices; or 4) under Patent Claims + infringed by Covered Code in the absence of Modifications made by + that Contributor. + +3. Distribution Obligations. + + 3.1. Application of License. + The Modifications which You create or to which You contribute are + governed by the terms of this License, including without limitation + Section 2.2. The Source Code version of Covered Code may be + distributed only under the terms of this License or a future version + of this License released under Section 6.1, and You must include a + copy of this License with every copy of the Source Code You + distribute. You may not offer or impose any terms on any Source Code + version that alters or restricts the applicable version of this + License or the recipients' rights hereunder. However, You may include + an additional document offering the additional rights described in + Section 3.5. + + 3.2. Availability of Source Code. + Any Modification which You create or to which You contribute must be + made available in Source Code form under the terms of this License + either on the same media as an Executable version or via an accepted + Electronic Distribution Mechanism to anyone to whom you made an + Executable version available; and if made available via Electronic + Distribution Mechanism, must remain available for at least twelve (12) + months after the date it initially became available, or at least six + (6) months after a subsequent version of that particular Modification + has been made available to such recipients. You are responsible for + ensuring that the Source Code version remains available even if the + Electronic Distribution Mechanism is maintained by a third party. + + 3.3. Description of Modifications. + You must cause all Covered Code to which You contribute to contain a + file documenting the changes You made to create that Covered Code and + the date of any change. You must include a prominent statement that + the Modification is derived, directly or indirectly, from Original + Code provided by the Initial Developer and including the name of the + Initial Developer in (a) the Source Code, and (b) in any notice in an + Executable version or related documentation in which You describe the + origin or ownership of the Covered Code. + + 3.4. Intellectual Property Matters + (a) Third Party Claims. + If Contributor has knowledge that a license under a third party's + intellectual property rights is required to exercise the rights + granted by such Contributor under Sections 2.1 or 2.2, + Contributor must include a text file with the Source Code + distribution titled "LEGAL" which describes the claim and the + party making the claim in sufficient detail that a recipient will + know whom to contact. If Contributor obtains such knowledge after + the Modification is made available as described in Section 3.2, + Contributor shall promptly modify the LEGAL file in all copies + Contributor makes available thereafter and shall take other steps + (such as notifying appropriate mailing lists or newsgroups) + reasonably calculated to inform those who received the Covered + Code that new knowledge has been obtained. + + (b) Contributor APIs. + If Contributor's Modifications include an application programming + interface and Contributor has knowledge of patent licenses which + are reasonably necessary to implement that API, Contributor must + also include this information in the LEGAL file. + + (c) Representations. + Contributor represents that, except as disclosed pursuant to + Section 3.4(a) above, Contributor believes that Contributor's + Modifications are Contributor's original creation(s) and/or + Contributor has sufficient rights to grant the rights conveyed by + this License. + + 3.5. Required Notices. + You must duplicate the notice in Exhibit A in each file of the Source + Code. If it is not possible to put such notice in a particular Source + Code file due to its structure, then You must include such notice in a + location (such as a relevant directory) where a user would be likely + to look for such a notice. If You created one or more Modification(s) + You may add your name as a Contributor to the notice described in + Exhibit A. You must also duplicate this License in any documentation + for the Source Code where You describe recipients' rights or ownership + rights relating to Covered Code. You may choose to offer, and to + charge a fee for, warranty, support, indemnity or liability + obligations to one or more recipients of Covered Code. However, You + may do so only on Your own behalf, and not on behalf of the Initial + Developer or any Contributor. You must make it absolutely clear than + any such warranty, support, indemnity or liability obligation is + offered by You alone, and You hereby agree to indemnify the Initial + Developer and every Contributor for any liability incurred by the + Initial Developer or such Contributor as a result of warranty, + support, indemnity or liability terms You offer. + + 3.6. Distribution of Executable Versions. + You may distribute Covered Code in Executable form only if the + requirements of Section 3.1-3.5 have been met for that Covered Code, + and if You include a notice stating that the Source Code version of + the Covered Code is available under the terms of this License, + including a description of how and where You have fulfilled the + obligations of Section 3.2. The notice must be conspicuously included + in any notice in an Executable version, related documentation or + collateral in which You describe recipients' rights relating to the + Covered Code. You may distribute the Executable version of Covered + Code or ownership rights under a license of Your choice, which may + contain terms different from this License, provided that You are in + compliance with the terms of this License and that the license for the + Executable version does not attempt to limit or alter the recipient's + rights in the Source Code version from the rights set forth in this + License. If You distribute the Executable version under a different + license You must make it absolutely clear that any terms which differ + from this License are offered by You alone, not by the Initial + Developer or any Contributor. You hereby agree to indemnify the + Initial Developer and every Contributor for any liability incurred by + the Initial Developer or such Contributor as a result of any such + terms You offer. + + 3.7. Larger Works. + You may create a Larger Work by combining Covered Code with other code + not governed by the terms of this License and distribute the Larger + Work as a single product. In such a case, You must make sure the + requirements of this License are fulfilled for the Covered Code. + +4. Inability to Comply Due to Statute or Regulation. + + If it is impossible for You to comply with any of the terms of this + License with respect to some or all of the Covered Code due to + statute, judicial order, or regulation then You must: (a) comply with + the terms of this License to the maximum extent possible; and (b) + describe the limitations and the code they affect. Such description + must be included in the LEGAL file described in Section 3.4 and must + be included with all distributions of the Source Code. Except to the + extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to + understand it. + +5. Application of this License. + + This License applies to code to which the Initial Developer has + attached the notice in Exhibit A and to related Covered Code. + +6. Versions of the License. + + 6.1. New Versions. + Netscape Communications Corporation ("Netscape") may publish revised + and/or new versions of the License from time to time. Each version + will be given a distinguishing version number. + + 6.2. Effect of New Versions. + Once Covered Code has been published under a particular version of the + License, You may always continue to use it under the terms of that + version. You may also choose to use such Covered Code under the terms + of any subsequent version of the License published by Netscape. No one + other than Netscape has the right to modify the terms applicable to + Covered Code created under this License. + + 6.3. Derivative Works. + If You create or use a modified version of this License (which you may + only do in order to apply it to code which is not already Covered Code + governed by this License), You must (a) rename Your license so that + the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", + "MPL", "NPL" or any confusingly similar phrase do not appear in your + license (except to note that your license differs from this License) + and (b) otherwise make it clear that Your version of the license + contains terms which differ from the Mozilla Public License and + Netscape Public License. (Filling in the name of the Initial + Developer, Original Code or Contributor in the notice described in + Exhibit A shall not of themselves be deemed to be modifications of + this License.) + +7. DISCLAIMER OF WARRANTY. + + COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF + DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. + THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE + IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, + YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE + COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER + OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF + ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +8. TERMINATION. + + 8.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to cure + such breach within 30 days of becoming aware of the breach. All + sublicenses to the Covered Code which are properly granted shall + survive any termination of this License. Provisions which, by their + nature, must remain in effect beyond the termination of this License + shall survive. + + 8.2. If You initiate litigation by asserting a patent infringement + claim (excluding declatory judgment actions) against Initial Developer + or a Contributor (the Initial Developer or Contributor against whom + You file such action is referred to as "Participant") alleging that: + + (a) such Participant's Contributor Version directly or indirectly + infringes any patent, then any and all rights granted by such + Participant to You under Sections 2.1 and/or 2.2 of this License + shall, upon 60 days notice from Participant terminate prospectively, + unless if within 60 days after receipt of notice You either: (i) + agree in writing to pay Participant a mutually agreeable reasonable + royalty for Your past and future use of Modifications made by such + Participant, or (ii) withdraw Your litigation claim with respect to + the Contributor Version against such Participant. If within 60 days + of notice, a reasonable royalty and payment arrangement are not + mutually agreed upon in writing by the parties or the litigation claim + is not withdrawn, the rights granted by Participant to You under + Sections 2.1 and/or 2.2 automatically terminate at the expiration of + the 60 day notice period specified above. + + (b) any software, hardware, or device, other than such Participant's + Contributor Version, directly or indirectly infringes any patent, then + any rights granted to You by such Participant under Sections 2.1(b) + and 2.2(b) are revoked effective as of the date You first made, used, + sold, distributed, or had made, Modifications made by that + Participant. + + 8.3. If You assert a patent infringement claim against Participant + alleging that such Participant's Contributor Version directly or + indirectly infringes any patent where such claim is resolved (such as + by license or settlement) prior to the initiation of patent + infringement litigation, then the reasonable value of the licenses + granted by such Participant under Sections 2.1 or 2.2 shall be taken + into account in determining the amount or value of any payment or + license. + + 8.4. In the event of termination under Sections 8.1 or 8.2 above, + all end user license agreements (excluding distributors and resellers) + which have been validly granted by You or any distributor hereunder + prior to termination shall survive termination. + +9. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT + (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL + DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, + OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR + ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY + CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, + WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER + COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN + INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF + LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY + RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW + PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE + EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO + THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +10. U.S. GOVERNMENT END USERS. + + The Covered Code is a "commercial item," as that term is defined in + 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer + software" and "commercial computer software documentation," as such + terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 + C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), + all U.S. Government End Users acquire Covered Code with only those + rights set forth herein. + +11. MISCELLANEOUS. + + This License represents the complete agreement concerning subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. This License shall be governed by + California law provisions (except to the extent applicable law, if + any, provides otherwise), excluding its conflict-of-law provisions. + With respect to disputes in which at least one party is a citizen of, + or an entity chartered or registered to do business in the United + States of America, any litigation relating to this License shall be + subject to the jurisdiction of the Federal Courts of the Northern + District of California, with venue lying in Santa Clara County, + California, with the losing party responsible for costs, including + without limitation, court costs and reasonable attorneys' fees and + expenses. The application of the United Nations Convention on + Contracts for the International Sale of Goods is expressly excluded. + Any law or regulation which provides that the language of a contract + shall be construed against the drafter shall not apply to this + License. + +12. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is + responsible for claims and damages arising, directly or indirectly, + out of its utilization of rights under this License and You agree to + work with Initial Developer and Contributors to distribute such + responsibility on an equitable basis. Nothing herein is intended or + shall be deemed to constitute any admission of liability. + +13. MULTIPLE-LICENSED CODE. + + Initial Developer may designate portions of the Covered Code as + "Multiple-Licensed". "Multiple-Licensed" means that the Initial + Developer permits you to utilize portions of the Covered Code under + Your choice of the NPL or the alternative licenses, if any, specified + by the Initial Developer in the file described in Exhibit A. + +EXHIBIT A -Mozilla Public License. + + ``The contents of this file are subject to the Mozilla Public License + Version 1.1 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + License for the specific language governing rights and limitations + under the License. + + The Original Code is ______________________________________. + + The Initial Developer of the Original Code is ________________________. + Portions created by ______________________ are Copyright (C) ______ + _______________________. All Rights Reserved. + + Contributor(s): ______________________________________. + + Alternatively, the contents of this file may be used under the terms + of the _____ license (the "[___] License"), in which case the + provisions of [______] License are applicable instead of those + above. If you wish to allow use of your version of this file only + under the terms of the [____] License and not to allow others to use + your version of this file under the MPL, indicate your decision by + deleting the provisions above and replace them with the notice and + other provisions required by the [___] License. If you do not delete + the provisions above, a recipient may use your version of this file + under either the MPL or the [___] License." + + [NOTE: The text of this Exhibit A may differ slightly from the text of + the notices in the Source Code files of the Original Code. You should + use the text of this Exhibit A rather than the text found in the + Original Code Source Code for Your Modifications.] + + ---------------------------------------------------------------------- + + AMENDMENTS + + The Netscape Public License Version 1.1 ("NPL") consists of the + Mozilla Public License Version 1.1 with the following Amendments, + including Exhibit A-Netscape Public License. Files identified with + "Exhibit A-Netscape Public License" are governed by the Netscape + Public License Version 1.1. + + Additional Terms applicable to the Netscape Public License. + I. Effect. + These additional terms described in this Netscape Public + License -- Amendments shall apply to the Mozilla Communicator + client code and to all Covered Code under this License. + + II. "Netscape's Branded Code" means Covered Code that Netscape + distributes and/or permits others to distribute under one or more + trademark(s) which are controlled by Netscape but which are not + licensed for use under this License. + + III. Netscape and logo. + This License does not grant any rights to use the trademarks + "Netscape", the "Netscape N and horizon" logo or the "Netscape + lighthouse" logo, "Netcenter", "Gecko", "Java" or "JavaScript", + "Smart Browsing" even if such marks are included in the Original + Code or Modifications. + + IV. Inability to Comply Due to Contractual Obligation. + Prior to licensing the Original Code under this License, Netscape + has licensed third party code for use in Netscape's Branded Code. + To the extent that Netscape is limited contractually from making + such third party code available under this License, Netscape may + choose to reintegrate such code into Covered Code without being + required to distribute such code in Source Code form, even if + such code would otherwise be considered "Modifications" under + this License. + + V. Use of Modifications and Covered Code by Initial Developer. + V.1. In General. + The obligations of Section 3 apply to Netscape, except to + the extent specified in this Amendment, Section V.2 and V.3. + + V.2. Other Products. + Netscape may include Covered Code in products other than the + Netscape's Branded Code which are released by Netscape + during the two (2) years following the release date of the + Original Code, without such additional products becoming + subject to the terms of this License, and may license such + additional products on different terms from those contained + in this License. + + V.3. Alternative Licensing. + Netscape may license the Source Code of Netscape's Branded + Code, including Modifications incorporated therein, without + such Netscape Branded Code becoming subject to the terms of + this License, and may license such Netscape Branded Code on + different terms from those contained in this License. + + VI. Litigation. + Notwithstanding the limitations of Section 11 above, the + provisions regarding litigation in Section 11(a), (b) and (c) of + the License shall apply to all disputes relating to this License. + + EXHIBIT A-Netscape Public License. + + "The contents of this file are subject to the Netscape Public + License Version 1.1 (the "License"); you may not use this file + except in compliance with the License. You may obtain a copy of + the License at http://www.mozilla.org/NPL/ + + Software distributed under the License is distributed on an "AS + IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + implied. See the License for the specific language governing + rights and limitations under the License. + + The Original Code is Mozilla Communicator client code, released + March 31, 1998. + + The Initial Developer of the Original Code is Netscape + Communications Corporation. Portions created by Netscape are + Copyright (C) 1998-1999 Netscape Communications Corporation. All + Rights Reserved. + + Contributor(s): ______________________________________. + + Alternatively, the contents of this file may be used under the + terms of the _____ license (the "[___] License"), in which case + the provisions of [______] License are applicable instead of + those above. If you wish to allow use of your version of this + file only under the terms of the [____] License and not to allow + others to use your version of this file under the NPL, indicate + your decision by deleting the provisions above and replace them + with the notice and other provisions required by the [___] + License. If you do not delete the provisions above, a recipient + may use your version of this file under either the NPL or the + [___] License." + +Copyright (c) 2010 Jonathan Hartley +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holders, nor those of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +Copyright (c) 2010-2014, Michael Bostock +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* The name Michael Bostock may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL MICHAEL BOSTOCK BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Extracted from mac/include/DeckLinkAPI.h: + +** Copyright (c) 2014 Blackmagic Design +** +** Permission is hereby granted, free of charge, to any person or organization +** obtaining a copy of the software and accompanying documentation covered by +** this license (the "Software") to use, reproduce, display, distribute, +** execute, and transmit the Software, and to prepare derivative works of the +** Software, and to permit third-parties to whom the Software is furnished to +** do so, all subject to the following: +** +** The copyright notices in the Software and this entire statement, including +** the above license grant, this restriction and the following disclaimer, +** must be included in all copies of the Software, in whole or in part, and +** all derivative works of the Software, unless such copies or derivative +** works are solely in the form of machine-executable object code generated by +** a source language processor. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +** SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +** FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +** ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +** DEALINGS IN THE SOFTWARE. + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. + +Copyright 2014 The Chromium Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +Parts of the following directories are available under Apache v2.0 + +src/de +Copyright (c) 2009-2011 Christian Kohlschütter + +third_party/gwt_exporter +Copyright 2007 Timepedia.org + +third_party/gwt-2.5.1 +Copyright 2008 Google + +Apache License + +Version 2.0, January 2004 + +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of this License; and +You must cause any modified files to carry prominent notices stating that You changed the files; and +You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and +If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + +You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd + and Clark Cooper +Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2011 Google Inc. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +Copyright (c) 1999, 2000, 2001, 2002 +Adel I. Mirzazhanov. All rights reserved + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + 1.Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + 2.Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3.The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 2007-2013 IOLA and Ole Laursen + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +This software is based in part on the work of the FreeType Team. + +---------------------- + + The FreeType Project LICENSE + ---------------------------- + + 2006-Jan-27 + + Copyright 1996-2002, 2006 by + David Turner, Robert Wilhelm, and Werner Lemberg + + + +Introduction +============ + + The FreeType Project is distributed in several archive packages; + some of them may contain, in addition to the FreeType font engine, + various tools and contributions which rely on, or relate to, the + FreeType Project. + + This license applies to all files found in such packages, and + which do not fall under their own explicit license. The license + affects thus the FreeType font engine, the test programs, + documentation and makefiles, at the very least. + + This license was inspired by the BSD, Artistic, and IJG + (Independent JPEG Group) licenses, which all encourage inclusion + and use of free software in commercial and freeware products + alike. As a consequence, its main points are that: + + o We don't promise that this software works. However, we will be + interested in any kind of bug reports. (`as is' distribution) + + o You can use this software for whatever you want, in parts or + full form, without having to pay us. (`royalty-free' usage) + + o You may not pretend that you wrote this software. If you use + it, or only parts of it, in a program, you must acknowledge + somewhere in your documentation that you have used the + FreeType code. (`credits') + + We specifically permit and encourage the inclusion of this + software, with or without modifications, in commercial products. + We disclaim all warranties covering The FreeType Project and + assume no liability related to The FreeType Project. + + + Finally, many people asked us for a preferred form for a + credit/disclaimer to use in compliance with this license. We thus + encourage you to use the following text: + + """ + Portions of this software are copyright The FreeType + Project (www.freetype.org). All rights reserved. + """ + + Please replace with the value from the FreeType version you + actually use. + + +Legal Terms +=========== + +0. Definitions +-------------- + + Throughout this license, the terms `package', `FreeType Project', + and `FreeType archive' refer to the set of files originally + distributed by the authors (David Turner, Robert Wilhelm, and + Werner Lemberg) as the `FreeType Project', be they named as alpha, + beta or final release. + + `You' refers to the licensee, or person using the project, where + `using' is a generic term including compiling the project's source + code as well as linking it to form a `program' or `executable'. + This program is referred to as `a program using the FreeType + engine'. + + This license applies to all files distributed in the original + FreeType Project, including all source code, binaries and + documentation, unless otherwise stated in the file in its + original, unmodified form as distributed in the original archive. + If you are unsure whether or not a particular file is covered by + this license, you must contact us to verify this. + + The FreeType Project is copyright (C) 1996-2000 by David Turner, + Robert Wilhelm, and Werner Lemberg. All rights reserved except as + specified below. + +1. No Warranty +-------------- + + THE FREETYPE PROJECT IS PROVIDED `AS IS' WITHOUT WARRANTY OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS + BE LIABLE FOR ANY DAMAGES CAUSED BY THE USE OR THE INABILITY TO + USE, OF THE FREETYPE PROJECT. + +2. Redistribution +----------------- + + This license grants a worldwide, royalty-free, perpetual and + irrevocable right and license to use, execute, perform, compile, + display, copy, create derivative works of, distribute and + sublicense the FreeType Project (in both source and object code + forms) and derivative works thereof for any purpose; and to + authorize others to exercise some or all of the rights granted + herein, subject to the following conditions: + + o Redistribution of source code must retain this license file + (`FTL.TXT') unaltered; any additions, deletions or changes to + the original files must be clearly indicated in accompanying + documentation. The copyright notices of the unaltered, + original files must be preserved in all copies of source + files. + + o Redistribution in binary form must provide a disclaimer that + states that the software is based in part of the work of the + FreeType Team, in the distribution documentation. We also + encourage you to put an URL to the FreeType web page in your + documentation, though this isn't mandatory. + + These conditions apply to any software derived from or based on + the FreeType Project, not just the unmodified files. If you use + our work, you must acknowledge us. However, no fee need be paid + to us. + +3. Advertising +-------------- + + Neither the FreeType authors and contributors nor you shall use + the name of the other for commercial, advertising, or promotional + purposes without specific prior written permission. + + We suggest, but do not require, that you use one or more of the + following phrases to refer to this software in your documentation + or advertising materials: `FreeType Project', `FreeType Engine', + `FreeType library', or `FreeType Distribution'. + + As you have not signed this license, you are not required to + accept it. However, as the FreeType Project is copyrighted + material, only this license, or another one contracted with the + authors, grants you the right to use, distribute, and modify it. + Therefore, by using, distributing, or modifying the FreeType + Project, you indicate that you understand and accept all the terms + of this license. + +4. Contacts +----------- + + There are two mailing lists related to FreeType: + + o freetype@nongnu.org + + Discusses general use and applications of FreeType, as well as + future and wanted additions to the library and distribution. + If you are looking for support, start in this list if you + haven't found anything to help you in the documentation. + + o freetype-devel@nongnu.org + + Discusses bugs, as well as engine internals, design issues, + specific licenses, porting, etc. + + Our home page can be found at + + http://www.freetype.org + + +--- end of FTL.TXT --- + +// Copyright 2014 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +See src/COPYING + + GNU LIBRARY GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the library GPL. It is + numbered 2 because it goes with version 2 of the ordinary GPL.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Library General Public License, applies to some +specially designated Free Software Foundation software, and to any +other libraries whose authors decide to use it. You can use it for +your libraries, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if +you distribute copies of the library, or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link a program with the library, you must provide +complete object files to the recipients so that they can relink them +with the library, after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + Our method of protecting your rights has two steps: (1) copyright +the library, and (2) offer you this license which gives you legal +permission to copy, distribute and/or modify the library. + + Also, for each distributor's protection, we want to make certain +that everyone understands that there is no warranty for this free +library. If the library is modified by someone else and passed on, we +want its recipients to know that what they have is not the original +version, so that any problems introduced by others will not reflect on +the original authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that companies distributing free +software will individually obtain patent licenses, thus in effect +transforming the program into proprietary software. To prevent this, +we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + + Most GNU software, including some libraries, is covered by the ordinary +GNU General Public License, which was designed for utility programs. This +license, the GNU Library General Public License, applies to certain +designated libraries. This license is quite different from the ordinary +one; be sure to read it in full, and don't assume that anything in it is +the same as in the ordinary license. + + The reason we have a separate public license for some libraries is that +they blur the distinction we usually make between modifying or adding to a +program and simply using it. Linking a program with a library, without +changing the library, is in some sense simply using the library, and is +analogous to running a utility program or application program. However, in +a textual and legal sense, the linked executable is a combined work, a +derivative of the original library, and the ordinary General Public License +treats it as such. + + Because of this blurred distinction, using the ordinary General +Public License for libraries did not effectively promote software +sharing, because most developers did not use the libraries. We +concluded that weaker conditions might promote sharing better. + + However, unrestricted linking of non-free programs would deprive the +users of those programs of all benefit from the free status of the +libraries themselves. This Library General Public License is intended to +permit developers of non-free programs to use free libraries, while +preserving your freedom as a user of such programs to change the free +libraries that are incorporated in them. (We have not seen how to achieve +this as regards changes in header files, but we have achieved it as regards +changes in the actual functions of the Library.) The hope is that this +will lead to faster development of free libraries. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, while the latter only +works together with the library. + + Note that it is possible for a library to be covered by the ordinary +General Public License rather than by this special one. + + GNU LIBRARY GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library which +contains a notice placed by the copyright holder or other authorized +party saying it may be distributed under the terms of this Library +General Public License (also called "this License"). Each licensee is +addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also compile or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + c) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + d) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the source code distributed need not include anything that is normally +distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Library General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307 USA. + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + +HarfBuzz is licensed under the so-called "Old MIT" license. Details follow. +For parts of HarfBuzz that are licensed under different licenses see individual +files names COPYING in subdirectories where applicable. + +Copyright © 2010,2011,2012 Google, Inc. +Copyright © 2012 Mozilla Foundation +Copyright © 2011 Codethink Limited +Copyright © 2008,2010 Nokia Corporation and/or its subsidiary(-ies) +Copyright © 2009 Keith Stribley +Copyright © 2009 Martin Hosken and SIL International +Copyright © 2007 Chris Wilson +Copyright © 2006 Behdad Esfahbod +Copyright © 2005 David Turner +Copyright © 2004,2007,2008,2009,2010 Red Hat, Inc. +Copyright © 1998-2004 David Turner and Werner Lemberg + +For full copyright notices consult the individual files in the package. + + +Permission is hereby granted, without written agreement and without +license or royalty fees, to use, copy, modify, and distribute this +software and its documentation for any purpose, provided that the +above copyright notice and the following two paragraphs appear in +all copies of this software. + +IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR +DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN +IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + +THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS +ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO +PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + +// Copyright 2014 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +/************************************************************************* + * + * IAccessible2 IDL Specification + * + * Copyright (c) 2007, 2010 Linux Foundation + * Copyright (c) 2006 IBM Corporation + * Copyright (c) 2000, 2006 Sun Microsystems, Inc. + * All rights reserved. + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the Linux Foundation nor the names of its + * contributors may be used to endorse or promote products + * derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This BSD License conforms to the Open Source Initiative "Simplified + * BSD License" as published at: + * http://www.opensource.org/licenses/bsd-license.php + * + * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 + * mark may be used in accordance with the Linux Foundation Trademark + * Policy to indicate compliance with the IAccessible2 specification. + * + ************************************************************************/ + +LICENSE extracted from IJG's jpeg distribution: +----------------------------------------------- + +In plain English: + +1. We don't promise that this software works. (But if you find any bugs, + please let us know!) +2. You can use this software for whatever you want. You don't have to pay us. +3. You may not pretend that you wrote this software. If you use it in a + program, you must acknowledge somewhere in your documentation that + you've used the IJG code. + +In legalese: + +The authors make NO WARRANTY or representation, either express or implied, +with respect to this software, its quality, accuracy, merchantability, or +fitness for a particular purpose. This software is provided "AS IS", and you, +its user, assume the entire risk as to its quality and accuracy. + +This software is copyright (C) 1991-1998, Thomas G. Lane. +All Rights Reserved except as specified below. + +Permission is hereby granted to use, copy, modify, and distribute this +software (or portions thereof) for any purpose, without fee, subject to these +conditions: +(1) If any part of the source code for this software is distributed, then this +README file must be included, with this copyright and no-warranty notice +unaltered; and any additions, deletions, or changes to the original files +must be clearly indicated in accompanying documentation. +(2) If only executable code is distributed, then the accompanying +documentation must state that "this software is based in part on the work of +the Independent JPEG Group". +(3) Permission for use of this software is granted only if the user accepts +full responsibility for any undesirable consequences; the authors accept +NO LIABILITY for damages of any kind. + +These conditions apply to any software derived from or based on the IJG code, +not just to the unmodified library. If you use our work, you ought to +acknowledge us. + +Permission is NOT granted for the use of any IJG author's name or company name +in advertising or publicity relating to this software or products derived from +it. This software may be referred to only as "the Independent JPEG Group's +software". + +We specifically permit and encourage the use of this software as the basis of +commercial products, provided that all warranty or liability claims are +assumed by the product vendor. + + +ICU License - ICU 1.8.1 and later + +COPYRIGHT AND PERMISSION NOTICE + +Copyright (c) 1995-2013 International Business Machines Corporation and +others + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, and/or sell copies of the Software, and to permit persons +to whom the Software is furnished to do so, provided that the above +copyright notice(s) and this permission notice appear in all copies of +the Software and that both the above copyright notice(s) and this +permission notice appear in supporting documentation. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Except as contained in this notice, the name of a copyright holder +shall not be used in advertising or otherwise to promote the sale, use +or other dealings in this Software without prior written authorization +of the copyright holder. + __________________________________________________________________ + +All trademarks and registered trademarks mentioned herein are the +property of their respective owners. + __________________________________________________________________ + +Third-Party Software Licenses + + This section contains third-party software notices and/or additional + terms for licensed third-party software components included within ICU + libraries. + +1. Unicode Data Files and Software + + EXHIBIT 1 + UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE + + Unicode Data Files include all data files under the directories + http://www.unicode.org/Public/, http://www.unicode.org/reports/, and + http://www.unicode.org/cldr/data/. Unicode Data Files do not include + PDF online code charts under the directory + http://www.unicode.org/Public/. Software includes any source code + published in the Unicode Standard or under the directories + http://www.unicode.org/Public/, http://www.unicode.org/reports/, and + http://www.unicode.org/cldr/data/. + + NOTICE TO USER: Carefully read the following legal agreement. BY + DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S + DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU + UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE TERMS AND + CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT DOWNLOAD, + INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE. + + COPYRIGHT AND PERMISSION NOTICE + + Copyright © 1991-2013 Unicode, Inc. All rights reserved. Distributed + under the Terms of Use in http://www.unicode.org/copyright.html. + + Permission is hereby granted, free of charge, to any person + obtaining a copy of the Unicode data files and any associated + documentation (the "Data Files") or Unicode software and any + associated documentation (the "Software") to deal in the Data Files + or Software without restriction, including without limitation the + rights to use, copy, modify, merge, publish, distribute, and/or sell + copies of the Data Files or Software, and to permit persons to whom + the Data Files or Software are furnished to do so, provided that (a) + the above copyright notice(s) and this permission notice appear with + all copies of the Data Files or Software, (b) both the above + copyright notice(s) and this permission notice appear in associated + documentation, and (c) there is clear notice in each modified Data + File or in the Software as well as in the documentation associated + with the Data File(s) or Software that the data or software has been + modified. + + THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY + OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE + WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE + COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR + ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY + DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS + ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE + OF THE DATA FILES OR SOFTWARE. + + Except as contained in this notice, the name of a copyright holder + shall not be used in advertising or otherwise to promote the sale, + use or other dealings in these Data Files or Software without prior + written authorization of the copyright holder. + ______________________________________________________ + + Unicode and the Unicode logo are trademarks of Unicode, Inc. in the + United States and other countries. All third party trademarks + referenced herein are the property of their respective owners. + +2. Chinese/Japanese Word Break Dictionary Data (cjdict.txt) + + # The Google Chrome software developed by Google is licensed under the BSD l +icense. Other software included in this distribution is provided under other lic +enses, as set forth below. + # + # The BSD License + # http://opensource.org/licenses/bsd-license.php + # Copyright (C) 2006-2008, Google Inc. + # + # All rights reserved. + # + # Redistribution and use in source and binary forms, with or without modif +ication, are permitted provided that the following conditions are met: + # + # Redistributions of source code must retain the above copyright notice, t +his list of conditions and the following disclaimer. + # Redistributions in binary form must reproduce the above copyright notice +, this list of conditions and the following disclaimer in the documentation and/ +or other materials provided with the distribution. + # Neither the name of Google Inc. nor the names of its contributors may b +e used to endorse or promote products derived from this software without specifi +c prior written permission. + # + # + # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IM +PLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DIS +CLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INC +LUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEO +RY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLI +GENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + # + # + # The word list in cjdict.txt are generated by combining three word lists +listed + # below with further processing for compound word breaking. The frequency +is generated + # with an iterative training against Google web corpora. + # + # * Libtabe (Chinese) + # - https://sourceforge.net/project/?group_id=1519 + # - Its license terms and conditions are shown below. + # + # * IPADIC (Japanese) + # - http://chasen.aist-nara.ac.jp/chasen/distribution.html + # - Its license terms and conditions are shown below. + # + # ---------COPYING.libtabe ---- BEGIN-------------------- + # + # /* + # * Copyrighy (c) 1999 TaBE Project. + # * Copyright (c) 1999 Pai-Hsiang Hsiao. + # * All rights reserved. + # * + # * Redistribution and use in source and binary forms, with or without + # * modification, are permitted provided that the following conditions + # * are met: + # * + # * . Redistributions of source code must retain the above copyright + # * notice, this list of conditions and the following disclaimer. + # * . Redistributions in binary form must reproduce the above copyright + # * notice, this list of conditions and the following disclaimer in + # * the documentation and/or other materials provided with the + # * distribution. + # * . Neither the name of the TaBE Project nor the names of its + # * contributors may be used to endorse or promote products derived + # * from this software without specific prior written permission. + # * + # * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + # * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + # * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + # * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + # * REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + # * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + # * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + # * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + # * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + # * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + # * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + # * OF THE POSSIBILITY OF SUCH DAMAGE. + # */ + # + # /* + # * Copyright (c) 1999 Computer Systems and Communication Lab, + # * Institute of Information Science, Academia Sinica. + # * All rights reserved. + # * + # * Redistribution and use in source and binary forms, with or without + # * modification, are permitted provided that the following conditions + # * are met: + # * + # * . Redistributions of source code must retain the above copyright + # * notice, this list of conditions and the following disclaimer. + # * . Redistributions in binary form must reproduce the above copyright + # * notice, this list of conditions and the following disclaimer in + # * the documentation and/or other materials provided with the + # * distribution. + # * . Neither the name of the Computer Systems and Communication Lab + # * nor the names of its contributors may be used to endorse or + # * promote products derived from this software without specific + # * prior written permission. + # * + # * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + # * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + # * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + # * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + # * REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + # * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + # * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + # * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + # * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + # * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + # * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + # * OF THE POSSIBILITY OF SUCH DAMAGE. + # */ + # + # Copyright 1996 Chih-Hao Tsai @ Beckman Institute, University of Illinois + # c-tsai4@uiuc.edu http://casper.beckman.uiuc.edu/~c-tsai4 + # + # ---------------COPYING.libtabe-----END---------------------------------- +-- + # + # + # ---------------COPYING.ipadic-----BEGIN--------------------------------- +--- + # + # Copyright 2000, 2001, 2002, 2003 Nara Institute of Science + # and Technology. All Rights Reserved. + # + # Use, reproduction, and distribution of this software is permitted. + # Any copy of this software, whether in its original form or modified, + # must include both the above copyright notice and the following + # paragraphs. + # + # Nara Institute of Science and Technology (NAIST), + # the copyright holders, disclaims all warranties with regard to this + # software, including all implied warranties of merchantability and + # fitness, in no event shall NAIST be liable for + # any special, indirect or consequential damages or any damages + # whatsoever resulting from loss of use, data or profits, whether in an + # action of contract, negligence or other tortuous action, arising out + # of or in connection with the use or performance of this software. + # + # A large portion of the dictionary entries + # originate from ICOT Free Software. The following conditions for ICOT + # Free Software applies to the current dictionary as well. + # + # Each User may also freely distribute the Program, whether in its + # original form or modified, to any third party or parties, PROVIDED + # that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear + # on, or be attached to, the Program, which is distributed substantially + # in the same form as set out herein and that such intended + # distribution, if actually made, will neither violate or otherwise + # contravene any of the laws and regulations of the countries having + # jurisdiction over the User or the intended distribution itself. + # + # NO WARRANTY + # + # The program was produced on an experimental basis in the course of the + # research and development conducted during the project and is provided + # to users as so produced on an experimental basis. Accordingly, the + # program is provided without any warranty whatsoever, whether express, + # implied, statutory or otherwise. The term "warranty" used herein + # includes, but is not limited to, any warranty of the quality, + # performance, merchantability and fitness for a particular purpose of + # the program and the nonexistence of any infringement or violation of + # any right of any third party. + # + # Each user of the program will agree and understand, and be deemed to + # have agreed and understood, that there is no warranty whatsoever for + # the program and, accordingly, the entire risk arising from or + # otherwise connected with the program is assumed by the user. + # + # Therefore, neither ICOT, the copyright holder, or any other + # organization that participated in or was otherwise related to the + # development of the program and their respective officials, directors, + # officers and other employees shall be held liable for any and all + # damages, including, without limitation, general, special, incidental + # and consequential damages, arising out of or otherwise in connection + # with the use or inability to use the program or any product, material + # or result produced or otherwise obtained by using the program, + # regardless of whether they have been advised of, or otherwise had + # knowledge of, the possibility of such damages at any time during the + # project or thereafter. Each user will be deemed to have agreed to the + # foregoing by his or her commencement of use of the program. The term + # "use" as used herein includes, but is not limited to, the use, + # modification, copying and distribution of the program and the + # production of secondary products from the program. + # + # In the case where the program, whether in its original form or + # modified, was distributed or delivered to or received by a user from + # any person, organization or entity other than ICOT, unless it makes or + # grants independently of ICOT any specific warranty to the user in + # writing, such person, organization or entity, will also be exempted + # from and not be held liable to the user for any such damages as noted + # above as far as the program is concerned. + # + # ---------------COPYING.ipadic-----END----------------------------------- +- + +3. Lao Word Break Dictionary Data (laodict.txt) + + # Copyright (c) 2013 International Business Machines Corporation + # and others. All Rights Reserved. + # + # Project: http://code.google.com/p/lao-dictionary/ + # Dictionary: http://lao-dictionary.googlecode.com/git/Lao-Dictionary.txt + # License: http://lao-dictionary.googlecode.com/git/Lao-Dictionary-LICE +NSE.txt + # (copied below) + # + # This file is derived from the above dictionary, with slight modification +s. + # ------------------------------------------------------------------------ +-------- + # Copyright (C) 2013 Brian Eugene Wilson, Robert Martin Campbell. + # All rights reserved. + # + # Redistribution and use in source and binary forms, with or without modif +ication, + # are permitted provided that the following conditions are met: + # + # Redistributions of source code must retain the above copyright n +otice, this + # list of conditions and the following disclaimer. Redistributions + in binary + # form must reproduce the above copyright notice, this list of con +ditions and + # the following disclaimer in the documentation and/or other mater +ials + # provided with the distribution. + # + # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND + # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IM +PLIED + # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LI +ABLE FOR + # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL D +AMAGES + # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVI +CES; + # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +AND ON + # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS + # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + # ------------------------------------------------------------------------ +-------- + +4. Time Zone Database + + ICU uses the public domain data and code derived from Time Zone + Database for its time zone support. The ownership of the TZ database is + explained in BCP 175: Procedure for Maintaining the Time Zone Database + section 7. + + 7. Database Ownership + + The TZ database itself is not an IETF Contribution or an IETF + document. Rather it is a pre-existing and regularly updated work + that is in the public domain, and is intended to remain in the public + domain. Therefore, BCPs 78 [RFC5378] and 79 [RFC3979] do not apply + to the TZ Database or contributions that individuals make to it. + Should any claims be made and substantiated against the TZ Database, + the organization that is providing the IANA Considerations defined in + this RFC, under the memorandum of understanding with the IETF, + currently ICANN, may act in accordance with all competent court + orders. No ownership claims will be made by ICANN or the IETF Trust + on the database or the code. Any person making a contribution to the + database or code waives all rights to future claims in that + contribution or in the TZ Database. + +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is mozilla.org code. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 2002 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +The JsonCpp library's source code, including accompanying documentation, +tests and demonstration applications, are licensed under the following +conditions... + +The author (Baptiste Lepilleur) explicitly disclaims copyright in all +jurisdictions which recognize such a disclaimer. In such jurisdictions, +this software is released into the Public Domain. + +In jurisdictions which do not recognize Public Domain property (e.g. Germany as of +2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur, and is +released under the terms of the MIT License (see below). + +In jurisdictions which recognize Public Domain property, the user of this +software may choose to accept it either as 1) Public Domain, 2) under the +conditions of the MIT License (see below), or 3) under the terms of dual +Public Domain/MIT License conditions described here, as they choose. + +The MIT License is about as close to Public Domain as a license can get, and is +described in clear, concise terms at: + + http://en.wikipedia.org/wiki/MIT_License + +The full text of the MIT License follows: + +======================================================================== +Copyright (c) 2007-2010 Baptiste Lepilleur + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +======================================================================== +(END LICENSE TEXT) + +The MIT license is compatible with both the GPL and commercial +software, affording one all of the rights of Public Domain with the +minor nuisance of being required to keep the above copyright notice +and license text in the source code. Note also that by accepting the +Public Domain "license" you can re-license your copy using whatever +license you like. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +Copyright (c) 2007-2010 The Khronos Group Inc. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and/or associated documentation files (the +"Materials"), to deal in the Materials without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Materials, and to +permit persons to whom the Materials are furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Materials. + +THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. + + +SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) + +Copyright (C) 1992 Silicon Graphics, Inc. All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice including the dates of first publication and either +this permission notice or a reference to http://oss.sgi.com/projects/FreeB/ +shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL SILICON +GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of Silicon Graphics, Inc. shall +not be used in advertising or otherwise to promote the sale, use or other +dealings in this Software without prior written authorization from Silicon +Graphics, Inc. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. + +Copyright (c) 2011 The LevelDB Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +/* + * Copyright (c) 2008 NVIDIA, Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +Copyright 2000-2007 Niels Provos +Copyright 2007-2009 Niels Provos and Nick Mathewson + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 2013, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY +WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. +(Copied from the README.) + +-------------------------------------------------------------------------------- + +The authors make NO WARRANTY or representation, either express or implied, +with respect to this software, its quality, accuracy, merchantability, or +fitness for a particular purpose. This software is provided "AS IS", and you, +its user, assume the entire risk as to its quality and accuracy. + +This software is copyright (C) 1991-1998, Thomas G. Lane. +All Rights Reserved except as specified below. + +Permission is hereby granted to use, copy, modify, and distribute this +software (or portions thereof) for any purpose, without fee, subject to these +conditions: +(1) If any part of the source code for this software is distributed, then this +README file must be included, with this copyright and no-warranty notice +unaltered; and any additions, deletions, or changes to the original files +must be clearly indicated in accompanying documentation. +(2) If only executable code is distributed, then the accompanying +documentation must state that "this software is based in part on the work of +the Independent JPEG Group". +(3) Permission for use of this software is granted only if the user accepts +full responsibility for any undesirable consequences; the authors accept +NO LIABILITY for damages of any kind. + +These conditions apply to any software derived from or based on the IJG code, +not just to the unmodified library. If you use our work, you ought to +acknowledge us. + +Permission is NOT granted for the use of any IJG author's name or company name +in advertising or publicity relating to this software or products derived from +it. This software may be referred to only as "the Independent JPEG Group's +software". + +We specifically permit and encourage the use of this software as the basis of +commercial products, provided that all warranty or liability claims are +assumed by the product vendor. + + +ansi2knr.c is included in this distribution by permission of L. Peter Deutsch, +sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA. +ansi2knr.c is NOT covered by the above copyright and conditions, but instead +by the usual distribution terms of the Free Software Foundation; principally, +that you must include source code if you redistribute it. (See the file +ansi2knr.c for full details.) However, since ansi2knr.c is not needed as part +of any program generated from the IJG code, this does not limit you more than +the foregoing paragraphs do. + +The Unix configuration script "configure" was produced with GNU Autoconf. +It is copyright by the Free Software Foundation but is freely distributable. +The same holds for its supporting scripts (config.guess, config.sub, +ltconfig, ltmain.sh). Another support script, install-sh, is copyright +by M.I.T. but is also freely distributable. + +It appears that the arithmetic coding option of the JPEG spec is covered by +patents owned by IBM, AT&T, and Mitsubishi. Hence arithmetic coding cannot +legally be used without obtaining one or more licenses. For this reason, +support for arithmetic coding has been removed from the free JPEG software. +(Since arithmetic coding provides only a marginal gain over the unpatented +Huffman mode, it is unlikely that very many implementations will support it.) +So far as we are aware, there are no patent restrictions on the remaining +code. + +The IJG distribution formerly included code to read and write GIF files. +To avoid entanglement with the Unisys LZW patent, GIF reading support has +been removed altogether, and the GIF writer has been simplified to produce +"uncompressed GIFs". This technique does not use the LZW algorithm; the +resulting GIF files are larger than usual, but are readable by all standard +GIF decoders. + +We are required to state that + "The Graphics Interchange Format(c) is the Copyright property of + CompuServe Incorporated. GIF(sm) is a Service Mark property of + CompuServe Incorporated." + +libjpeg-turbo is licensed under a non-restrictive, BSD-style license +(see README.) The TurboJPEG/OSS wrapper (both C and Java versions) and +associated test programs bear a similar license, which is reproduced below: + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. +- Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +- Neither the name of the libjpeg-turbo Project nor the names of its + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS", +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +Copyright (C) 2011 Google Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + +This copy of the libpng notices is provided for your convenience. In case of +any discrepancy between this copy and the notices in the file png.h that is +included in the libpng distribution, the latter shall prevail. + +COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: + +If you modify libpng you may insert additional notices immediately following +this sentence. + +This code is released under the libpng license. + +libpng versions 1.2.6, August 15, 2004, through 1.2.45, July 7, 2011, are +Copyright (c) 2004, 2006-2009 Glenn Randers-Pehrson, and are +distributed according to the same disclaimer and license as libpng-1.2.5 +with the following individual added to the list of Contributing Authors + + Cosmin Truta + +libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, are +Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are +distributed according to the same disclaimer and license as libpng-1.0.6 +with the following individuals added to the list of Contributing Authors + + Simon-Pierre Cadieux + Eric S. Raymond + Gilles Vollant + +and with the following additions to the disclaimer: + + There is no warranty against interference with your enjoyment of the + library or against infringement. There is no warranty that our + efforts or the library will fulfill any of your particular purposes + or needs. This library is provided with all faults, and the entire + risk of satisfactory quality, performance, accuracy, and effort is with + the user. + +libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are +Copyright (c) 1998, 1999 Glenn Randers-Pehrson, and are +distributed according to the same disclaimer and license as libpng-0.96, +with the following individuals added to the list of Contributing Authors: + + Tom Lane + Glenn Randers-Pehrson + Willem van Schaik + +libpng versions 0.89, June 1996, through 0.96, May 1997, are +Copyright (c) 1996, 1997 Andreas Dilger +Distributed according to the same disclaimer and license as libpng-0.88, +with the following individuals added to the list of Contributing Authors: + + John Bowler + Kevin Bracey + Sam Bushell + Magnus Holmgren + Greg Roelofs + Tom Tanner + +libpng versions 0.5, May 1995, through 0.88, January 1996, are +Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. + +For the purposes of this copyright and license, "Contributing Authors" +is defined as the following set of individuals: + + Andreas Dilger + Dave Martindale + Guy Eric Schalnat + Paul Schmidt + Tim Wegner + +The PNG Reference Library is supplied "AS IS". The Contributing Authors +and Group 42, Inc. disclaim all warranties, expressed or implied, +including, without limitation, the warranties of merchantability and of +fitness for any purpose. The Contributing Authors and Group 42, Inc. +assume no liability for direct, indirect, incidental, special, exemplary, +or consequential damages, which may result from the use of the PNG +Reference Library, even if advised of the possibility of such damage. + +Permission is hereby granted to use, copy, modify, and distribute this +source code, or portions hereof, for any purpose, without fee, subject +to the following restrictions: + +1. The origin of this source code must not be misrepresented. + +2. Altered versions must be plainly marked as such and must not + be misrepresented as being the original source. + +3. This Copyright notice may not be removed or altered from any + source or altered source distribution. + +The Contributing Authors and Group 42, Inc. specifically permit, without +fee, and encourage the use of this source code as a component to +supporting the PNG file format in commercial products. If you use this +source code in a product, acknowledgment is not required but would be +appreciated. + + +A "png_get_copyright" function is available, for convenient use in "about" +boxes and the like: + + printf("%s",png_get_copyright(NULL)); + +Also, the PNG logo (in PNG format, of course) is supplied in the +files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31). + +Libpng is OSI Certified Open Source Software. OSI Certified Open Source is a +certification mark of the Open Source Initiative. + +Glenn Randers-Pehrson +glennrp at users.sourceforge.net +July 7, 2011 + +/* + * + * Copyright (c) 2001-2006 Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sub license, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice (including the + next paragraph) shall be included in all copies or substantial portions + of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Copyright (c) 2010, The WebM Project authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of Google, nor the WebM Project, nor the names + of its contributors may be used to endorse or promote products + derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +Copyright (c) 2010, Google Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of Google nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Additional IP Rights Grant (Patents) + +"This implementation" means the copyrightable works distributed by +Google as part of the WebM Project. + +Google hereby grants to you a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) +patent license to make, have made, use, offer to sell, sell, import, +transfer, and otherwise run, modify and propagate the contents of this +implementation of VP8, where such license applies only to those patent +claims, both currently owned by Google and acquired in the future, +licensable by Google that are necessarily infringed by this +implementation of VP8. This grant does not include claims that would be +infringed only as a consequence of further modification of this +implementation. If you or your agent or exclusive licensee institute or +order or agree to the institution of patent litigation against any +entity (including a cross-claim or counterclaim in a lawsuit) alleging +that this implementation of VP8 or any code incorporated within this +implementation of VP8 constitutes direct or contributory patent +infringement, or inducement of patent infringement, then any patent +rights granted to you under this License for this implementation of VP8 +shall terminate as of the date such litigation is filed. + +Except where otherwise noted in the source code (e.g. the files hash.c, +list.c and the trio files, which are covered by a similar licence but +with different Copyright notices) all the files are: + + Copyright (C) 1998-2003 Daniel Veillard. All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is fur- +nished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT- +NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +DANIEL VEILLARD BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON- +NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of Daniel Veillard shall not +be used in advertising or otherwise to promote the sale, use or other deal- +ings in this Software without prior written authorization from him. + + +Licence for libxslt except libexslt +---------------------------------------------------------------------- + Copyright (C) 2001-2002 Daniel Veillard. All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is fur- +nished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT- +NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +DANIEL VEILLARD BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON- +NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of Daniel Veillard shall not +be used in advertising or otherwise to promote the sale, use or other deal- +ings in this Software without prior written authorization from him. + +---------------------------------------------------------------------- + +Licence for libexslt +---------------------------------------------------------------------- + Copyright (C) 2001-2002 Thomas Broyer, Charlie Bozeman and Daniel Veillard. + All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is fur- +nished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT- +NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON- +NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of the authors shall not +be used in advertising or otherwise to promote the sale, use or other deal- +ings in this Software without prior written authorization from him. +---------------------------------------------------------------------- + +Copyright 2011 The LibYuv Project Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of Google nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +LZMA SDK is placed in the public domain. + +Copyright (c) 2003-2012 Jonathan 'Wolf' Rentzsch: http://rentzsch.com +Some rights reserved: http://opensource.org/licenses/mit + +mach_override includes a copy of libudis86, licensed as follows: + +Copyright (c) 2002-2009 Vivek Thampi +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Copyright 2007, 2008 The Python Markdown Project (v. 1.7 and later) +Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b) +Copyright 2004 Manfred Stienstra (the original version) + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of the nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE PYTHON MARKDOWN PROJECT ''AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL ANY CONTRIBUTORS TO THE PYTHON MARKDOWN PROJECT +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + + +The default Mesa license is as follows: + +Copyright (C) 1999-2007 Brian Paul All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +Some parts of Mesa are copyrighted under the GNU LGPL. See the +Mesa/docs/COPYRIGHT file for details. + +The following is the standard GNU copyright file. +---------------------------------------------------------------------- + + + GNU LIBRARY GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the library GPL. It is + numbered 2 because it goes with version 2 of the ordinary GPL.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Library General Public License, applies to some +specially designated Free Software Foundation software, and to any +other libraries whose authors decide to use it. You can use it for +your libraries, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if +you distribute copies of the library, or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link a program with the library, you must provide +complete object files to the recipients so that they can relink them +with the library, after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + Our method of protecting your rights has two steps: (1) copyright +the library, and (2) offer you this license which gives you legal +permission to copy, distribute and/or modify the library. + + Also, for each distributor's protection, we want to make certain +that everyone understands that there is no warranty for this free +library. If the library is modified by someone else and passed on, we +want its recipients to know that what they have is not the original +version, so that any problems introduced by others will not reflect on +the original authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that companies distributing free +software will individually obtain patent licenses, thus in effect +transforming the program into proprietary software. To prevent this, +we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + + Most GNU software, including some libraries, is covered by the ordinary +GNU General Public License, which was designed for utility programs. This +license, the GNU Library General Public License, applies to certain +designated libraries. This license is quite different from the ordinary +one; be sure to read it in full, and don't assume that anything in it is +the same as in the ordinary license. + + The reason we have a separate public license for some libraries is that +they blur the distinction we usually make between modifying or adding to a +program and simply using it. Linking a program with a library, without +changing the library, is in some sense simply using the library, and is +analogous to running a utility program or application program. However, in +a textual and legal sense, the linked executable is a combined work, a +derivative of the original library, and the ordinary General Public License +treats it as such. + + Because of this blurred distinction, using the ordinary General +Public License for libraries did not effectively promote software +sharing, because most developers did not use the libraries. We +concluded that weaker conditions might promote sharing better. + + However, unrestricted linking of non-free programs would deprive the +users of those programs of all benefit from the free status of the +libraries themselves. This Library General Public License is intended to +permit developers of non-free programs to use free libraries, while +preserving your freedom as a user of such programs to change the free +libraries that are incorporated in them. (We have not seen how to achieve +this as regards changes in header files, but we have achieved it as regards +changes in the actual functions of the Library.) The hope is that this +will lead to faster development of free libraries. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, while the latter only +works together with the library. + + Note that it is possible for a library to be covered by the ordinary +General Public License rather than by this special one. + + GNU LIBRARY GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library which +contains a notice placed by the copyright holder or other authorized +party saying it may be distributed under the terms of this Library +General Public License (also called "this License"). Each licensee is +addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also compile or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + c) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + d) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the source code distributed need not include anything that is normally +distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Library General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + + * MODP_B64 - High performance base64 encoder/decoder + * Version 1.3 -- 17-Mar-2006 + * http://modp.com/release/base64 + * + * Copyright (c) 2005, 2006 Nick Galbreath -- nickg [at] modp [dot] com + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the modp.com nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Copyright 2008 MolokoCacao +All rights reserved + +Redistribution and use in source and binary forms, with or without +modification, are permitted providing that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +Copyright 2010-2011, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. +* Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is mozilla.org code. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 2002 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + + A C-program for MT19937, with initialization improved 2002/1/26. + Coded by Takuji Nishimura and Makoto Matsumoto. + + Before using, initialize the state by using init_genrand(seed) + or init_by_array(init_key, key_length). + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Version: MPL 1.1/GPL 2.0/LGPL 2.1 + +The contents of this file are subject to the Mozilla Public License Version +1.1 (the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at +http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is mozilla.org code. + +The Initial Developer of the Original Code is +Netscape Communications Corporation. +Portions created by the Initial Developer are Copyright (C) 1998 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + + + Copyright (c) 2004-2012 by Mulle Kybernetik. All rights reserved. + + Permission to use, copy, modify and distribute this software and its documentation + is hereby granted, provided that both the copyright notice and this permission + notice appear in all copies of the software, derivative works or modified versions, + and any portions thereof, and that both notices appear in supporting documentation, + and that credit is given to Mulle Kybernetik in all documents and publicity + pertaining to direct or indirect use of this code or its derivatives. + + THIS IS EXPERIMENTAL SOFTWARE AND IT IS KNOWN TO HAVE BUGS, SOME OF WHICH MAY HAVE + SERIOUS CONSEQUENCES. THE COPYRIGHT HOLDER ALLOWS FREE USE OF THIS SOFTWARE IN ITS + "AS IS" CONDITION. THE COPYRIGHT HOLDER DISCLAIMS ANY LIABILITY OF ANY KIND FOR ANY + DAMAGES WHATSOEVER RESULTING DIRECTLY OR INDIRECTLY FROM THE USE OF THIS SOFTWARE + OR OF ANY DERIVATIVE WORK. +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file in the root of the source tree. All +contributing project authors may be found in the AUTHORS file in the +root of the source tree. + +The files were originally licensed by ARM Limited. + +The following files: + + * dl/api/omxtypes.h + * dl/sp/api/omxSP.h + +are licensed by Khronos: + +Copyright © 2005-2008 The Khronos Group Inc. All Rights Reserved. + +These materials are protected by copyright laws and contain material +proprietary to the Khronos Group, Inc. You may use these materials +for implementing Khronos specifications, without altering or removing +any trademark, copyright or other notice from the specification. + +Khronos Group makes no, and expressly disclaims any, representations +or warranties, express or implied, regarding these materials, including, +without limitation, any implied warranties of merchantability or fitness +for a particular purpose or non-infringement of any intellectual property. +Khronos Group makes no, and expressly disclaims any, warranties, express +or implied, regarding the correctness, accuracy, completeness, timeliness, +and reliability of these materials. + +Under no circumstances will the Khronos Group, or any of its Promoters, +Contributors or Members or their respective partners, officers, directors, +employees, agents or representatives be liable for any damages, whether +direct, indirect, special or consequential damages for lost revenues, +lost profits, or otherwise, arising from or in connection with these +materials. + +Khronos and OpenMAX are trademarks of the Khronos Group Inc. + +Copyright 2001-2011 Xiph.Org, Skype Limited, Octasic, + Jean-Marc Valin, Timothy B. Terriberry, + CSIRO, Gregory Maxwell, Mark Borgerding, + Erik de Castro Lopo + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +- Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +- Neither the name of Internet Society, IETF or IETF Trust, nor the +names of specific contributors, may be used to endorse or promote +products derived from this software without specific prior written +permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER +OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Opus is subject to the royalty-free patent licenses which are +specified at: + +Xiph.Org Foundation: +https://datatracker.ietf.org/ipr/1524/ + +Microsoft Corporation: +https://datatracker.ietf.org/ipr/1914/ + +Broadcom Corporation: +https://datatracker.ietf.org/ipr/1526/ + +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PLY (Python Lex-Yacc) Version 3.4 + +Copyright (C) 2001-2011, +David M. Beazley (Dabeaz LLC) +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +* Neither the name of the David Beazley or Dabeaz LLC may be used to + endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Copyright (c) 2012 The Polymer Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Copyright (c) 2012 The Polymer Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 2014, Intel Corporation +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Intel Corporation nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright 2008, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Code generated by the Protocol Buffer compiler is owned by the owner +of the input file used when generating it. This code is not +standalone and requires a support library to be linked with it. This +support library is itself covered by the above license. + +Copyright (c) 2003-2012, Michael Foord +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +qcms +Copyright (C) 2009 Mozilla Corporation +Copyright (C) 1998-2007 Marti Maria + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Copyright 2014 jQuery Foundation and other contributors +http://jquery.com/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// Copyright (c) 2009 The RE2 Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Copyright 2010 Arc90 Inc + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2011 Google Inc. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +Copyright (c) 2006 Bob Ippolito + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +(The BSD License) + +Copyright (c) 2010-2014, Christian Johansen, christian@cjohansen.no +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of Christian Johansen nor the names of his contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Copyright (c) 2011 Google Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +All MurmurHash source files are placed in the public domain. + +The license below applies to all other code in SMHasher: + +Copyright (c) 2011 Google, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +Copyright 2002-2008 Xiph.org Foundation +Copyright 2002-2008 Jean-Marc Valin +Copyright 2005-2007 Analog Devices Inc. +Copyright 2005-2008 Commonwealth Scientific and Industrial Research + Organisation (CSIRO) +Copyright 1993, 2002, 2006 David Rowe +Copyright 2003 EpicGames +Copyright 1992-1994 Jutta Degener, Carsten Bormann + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +- Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +- Neither the name of the Xiph.org Foundation nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The author disclaims copyright to this source code. In place of +a legal notice, here is a blessing: + + May you do good and not evil. + May you find forgiveness for yourself and forgive others. + May you share freely, never taking more than you give. + +SWIG is distributed under the following terms: + +I. + +Copyright (c) 1995-1998 +The University of Utah and the Regents of the University of California +All Rights Reserved + +Permission is hereby granted, without written agreement and without +license or royalty fees, to use, copy, modify, and distribute this +software and its documentation for any purpose, provided that +(1) The above copyright notice and the following two paragraphs +appear in all copies of the source code and (2) redistributions +including binaries reproduces these notices in the supporting +documentation. Substantial modifications to this software may be +copyrighted by their authors and need not follow the licensing terms +described here, provided that the new terms are clearly indicated in +all files where they apply. + +IN NO EVENT SHALL THE AUTHOR, THE UNIVERSITY OF CALIFORNIA, THE +UNIVERSITY OF UTAH OR DISTRIBUTORS OF THIS SOFTWARE BE LIABLE TO ANY +PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, +EVEN IF THE AUTHORS OR ANY OF THE ABOVE PARTIES HAVE BEEN ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +THE AUTHOR, THE UNIVERSITY OF CALIFORNIA, AND THE UNIVERSITY OF UTAH +SPECIFICALLY DISCLAIM ANY WARRANTIES,INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND +THE AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE MAINTENANCE, +SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + + +II. + +This software includes contributions that are Copyright (c) 1998-2005 +University of Chicago. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the University of Chicago nor the names of its contributors may be +used to endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF CHICAGO AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF +CHICAGO OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +III. + +This software includes contributions that are Copyright (c) 2005-2006 +Arizona Board of Regents (University of Arizona). +All Rights Reserved + +Permission is hereby granted, without written agreement and without +license or royalty fees, to use, copy, modify, and distribute this +software and its documentation for any purpose, provided that +(1) The above copyright notice and the following two paragraphs +appear in all copies of the source code and (2) redistributions +including binaries reproduces these notices in the supporting +documentation. Substantial modifications to this software may be +copyrighted by their authors and need not follow the licensing terms +described here, provided that the new terms are clearly indicated in +all files where they apply. + +THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF ARIZONA AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF +ARIZONA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +// Copyright (c) 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +TLS Lite includes code from different sources. All code is either dedicated to +the public domain by its authors, or available under a BSD-style license. In +particular: + +- + +Code written by Trevor Perrin, Kees Bos, Sam Rushing, Dimitris Moraitis, +Marcelo Fernandez, Martin von Loewis, and Dave Baggett is available under the +following terms: + +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or distribute +this software, either in source code form or as a compiled binary, for any +purpose, commercial or non-commercial, and by any means. + +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +- + +Code written by Bram Cohen (rijndael.py) was dedicated to the public domain by +its author. See rijndael.py for details. + +- + +Code written by Google is available under the following terms: + +Copyright (c) 2008, The Chromium Authors +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of the Google Inc. nor the names of its contributors may + be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 2012, Linux USB Project +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +o Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + +o Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +o Neither the name of the Linux USB Project nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +(Copied from the COPYRIGHT file of +https://code.google.com/p/sctp-refimpl/source/browse/trunk/COPYRIGHT) +-------------------------------------------------------------------------------- + +Copyright (c) 2001, 2002 Cisco Systems, Inc. +Copyright (c) 2002-12 Randall R. Stewart +Copyright (c) 2002-12 Michael Tuexen +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +Copyright (c) 2011, The WebRTC project authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of Google nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Apache License + Version 2.0, January 2010 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +// Copyright (c) 2013 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +;***************************************************************************** +;* x86inc.asm +;***************************************************************************** +;* Copyright (C) 2005-2011 x264 project +;* +;* Authors: Loren Merritt +;* Anton Mitrofanov +;* Jason Garrett-Glaser +;* +;* Permission to use, copy, modify, and/or distribute this software for any +;* purpose with or without fee is hereby granted, provided that the above +;* copyright notice and this permission notice appear in all copies. +;* +;* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +;* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +;* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +;* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +;* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +;* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +;* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +;***************************************************************************** + +; This is a header file for the x264ASM assembly language, which uses +; NASM/YASM syntax combined with a large number of macros to provide easy +; abstraction between different calling conventions (x86_32, win64, linux64). +; It also has various other useful features to simplify writing the kind of +; DSP functions that are most often used in x264. + +; Unlike the rest of x264, this file is available under an ISC license, as it +; has significant usefulness outside of x264 and we want it to be available +; to the largest audience possible. Of course, if you modify it for your own +; purposes to add a new feature, we strongly encourage contributing a patch +; as this feature might be useful for others as well. Send patches or ideas +; to x264-devel@videolan.org . + +Yasm is Copyright (c) 2001-2010 Peter Johnson and other Yasm developers. + +Yasm developers and/or contributors include: + Peter Johnson + Michael Urman + Brian Gladman (Visual Studio build files, other fixes) + Stanislav Karchebny (options parser) + Mathieu Monnier (SSE4 instruction patches, NASM preprocessor additions) + Anonymous "NASM64" developer (NASM preprocessor fixes) + Stephen Polkowski (x86 instruction patches) + Henryk Richter (Mach-O object format) + Ben Skeggs (patches, bug reports) + Alexei Svitkine (GAS preprocessor) + Samuel Thibault (TASM parser and frontend) + +----------------------------------- +Yasm licensing overview and summary +----------------------------------- + +Note: This document does not provide legal advice nor is it the actual +license of any part of Yasm. See the individual licenses for complete +details. Consult a lawyer for legal advice. + +The primary license of Yasm is the 2-clause BSD license. Please use this +license if you plan on submitting code to the project. + +Yasm has absolutely no warranty; not even for merchantibility or fitness +for a particular purpose. + +------- +Libyasm +------- +Libyasm is 2-clause or 3-clause BSD licensed, with the exception of +bitvect, which is triple-licensed under the Artistic license, GPL, and +LGPL. Libyasm is thus GPL and LGPL compatible. In addition, this also +means that libyasm is free for binary-only distribution as long as the +terms of the 3-clause BSD license and Artistic license (as it applies to +bitvect) are fulfilled. + +------- +Modules +------- +The modules are 2-clause or 3-clause BSD licensed. + +--------- +Frontends +--------- +The frontends are 2-clause BSD licensed. + +------------- +License Texts +------------- +The full text of all licenses are provided in separate files in the source +distribution. Each source file may include the entire license (in the case +of the BSD and Artistic licenses), or may reference the GPL or LGPL license +file. + +BSD.txt - 2-clause and 3-clause BSD licenses +Artistic.txt - Artistic license +GNU_GPL-2.0 - GNU General Public License +GNU_LGPL-2.0 - GNU Library General Public License + +/* zlib.h -- interface of the 'zlib' general purpose compression library + version 1.2.4, March 14th, 2010 + + Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly + Mark Adler + +*/ + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2011 Marco Braak + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +Copyright (c) 2011, The WebRTC project authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of Google nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +Copyright (c) 2001-2013 Chris Liechti ; +All Rights Reserved. + +This is the Python license. In short, you can use this product in +commercial and non-commercial applications, modify it, redistribute it. +A notification to the author when you use and/or modify it is welcome. + + +TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING THIS SOFTWARE +=================================================================== + +LICENSE AGREEMENT +----------------- + +1. This LICENSE AGREEMENT is between the copyright holder of this +product, and the Individual or Organization ("Licensee") accessing +and otherwise using this product in source or binary form and its +associated documentation. + +2. Subject to the terms and conditions of this License Agreement, +the copyright holder hereby grants Licensee a nonexclusive, +royalty-free, world-wide license to reproduce, analyze, test, +perform and/or display publicly, prepare derivative works, distribute, +and otherwise use this product alone or in any derivative version, +provided, however, that copyright holders License Agreement and +copyright holders notice of copyright are retained in this product +alone or in any derivative version prepared by Licensee. + +3. In the event Licensee prepares a derivative work that is based on +or incorporates this product or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to this product. + +4. The copyright holder is making this product available to Licensee on +an "AS IS" basis. THE COPYRIGHT HOLDER MAKES NO REPRESENTATIONS OR +WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, +THE COPYRIGHT HOLDER MAKES NO AND DISCLAIMS ANY REPRESENTATION OR +WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR +THAT THE USE OF THIS PRODUCT WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. + +5. THE COPYRIGHT HOLDER SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER +USERS OF THIS PRODUCT FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL +DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE +USING THIS PRODUCT, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE +POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. Nothing in this License Agreement shall be deemed to create any +relationship of agency, partnership, or joint venture between the +copyright holder and Licensee. This License Agreement does not grant +permission to use trademarks or trade names from the copyright holder +in a trademark sense to endorse or promote products or services of +Licensee, or any third party. + +8. By copying, installing or otherwise using this product, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. + + +Copyright 2007, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------- + +The file url_parse.cc is based on nsURLParsers.cc from Mozilla. This file is +licensed separately as follows: + +The contents of this file are subject to the Mozilla Public License Version +1.1 (the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at +http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is mozilla.org code. + +The Initial Developer of the Original Code is +Netscape Communications Corporation. +Portions created by the Initial Developer are Copyright (C) 1998 +the Initial Developer. All Rights Reserved. + +Contributor(s): + Darin Fisher (original author) + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +This license applies to all parts of V8 that are not externally +maintained libraries. The externally maintained libraries used by V8 +are: + + - PCRE test suite, located in + test/mjsunit/third_party/regexp-pcre.js. This is based on the + test suite from PCRE-7.3, which is copyrighted by the University + of Cambridge and Google, Inc. The copyright notice and license + are embedded in regexp-pcre.js. + + - Layout tests, located in test/mjsunit/third_party. These are + based on layout tests from webkit.org which are copyrighted by + Apple Computer, Inc. and released under a 3-clause BSD license. + + - Strongtalk assembler, the basis of the files assembler-arm-inl.h, + assembler-arm.cc, assembler-arm.h, assembler-ia32-inl.h, + assembler-ia32.cc, assembler-ia32.h, assembler-x64-inl.h, + assembler-x64.cc, assembler-x64.h, assembler-mips-inl.h, + assembler-mips.cc, assembler-mips.h, assembler.cc and assembler.h. + This code is copyrighted by Sun Microsystems Inc. and released + under a 3-clause BSD license. + + - Valgrind client API header, located at third_party/valgrind/valgrind.h + This is release under the BSD license. + +These libraries have their own licenses; we recommend you read them, +as their terms may differ from the terms below. + +Copyright 2014, the V8 project authors. All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (C) 1993-2004 by Sun Microsystems, Inc. All rights reserved. + +Developed at SunSoft, a Sun Microsystems, Inc. business. +Permission to use, copy, modify, and distribute this +software is freely granted, provided that this notice +is preserved. + +============================================================ +Notices for file(s): +/lib/libpng.a +------------------------------------------------------------ + +This copy of the libpng notices is provided for your convenience. In case of +any discrepancy between this copy and the notices in the file png.h that is +included in the libpng distribution, the latter shall prevail. + +COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: + +If you modify libpng you may insert additional notices immediately following +this sentence. + +This code is released under the libpng license. + +libpng versions 1.2.6, August 15, 2004, through 1.6.3, July 18, 2013, are +Copyright (c) 2004, 2006-2013 Glenn Randers-Pehrson, and are +distributed according to the same disclaimer and license as libpng-1.2.5 +with the following individual added to the list of Contributing Authors + + Cosmin Truta + +libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, are +Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are +distributed according to the same disclaimer and license as libpng-1.0.6 +with the following individuals added to the list of Contributing Authors + + Simon-Pierre Cadieux + Eric S. Raymond + Gilles Vollant + +and with the following additions to the disclaimer: + + There is no warranty against interference with your enjoyment of the + library or against infringement. There is no warranty that our + efforts or the library will fulfill any of your particular purposes + or needs. This library is provided with all faults, and the entire + risk of satisfactory quality, performance, accuracy, and effort is with + the user. + +libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are +Copyright (c) 1998, 1999 Glenn Randers-Pehrson, and are +distributed according to the same disclaimer and license as libpng-0.96, +with the following individuals added to the list of Contributing Authors: + + Tom Lane + Glenn Randers-Pehrson + Willem van Schaik + +libpng versions 0.89, June 1996, through 0.96, May 1997, are +Copyright (c) 1996, 1997 Andreas Dilger +Distributed according to the same disclaimer and license as libpng-0.88, +with the following individuals added to the list of Contributing Authors: + + John Bowler + Kevin Bracey + Sam Bushell + Magnus Holmgren + Greg Roelofs + Tom Tanner + +libpng versions 0.5, May 1995, through 0.88, January 1996, are +Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. + +For the purposes of this copyright and license, "Contributing Authors" +is defined as the following set of individuals: + + Andreas Dilger + Dave Martindale + Guy Eric Schalnat + Paul Schmidt + Tim Wegner + +The PNG Reference Library is supplied "AS IS". The Contributing Authors +and Group 42, Inc. disclaim all warranties, expressed or implied, +including, without limitation, the warranties of merchantability and of +fitness for any purpose. The Contributing Authors and Group 42, Inc. +assume no liability for direct, indirect, incidental, special, exemplary, +or consequential damages, which may result from the use of the PNG +Reference Library, even if advised of the possibility of such damage. + +Permission is hereby granted to use, copy, modify, and distribute this +source code, or portions hereof, for any purpose, without fee, subject +to the following restrictions: + +1. The origin of this source code must not be misrepresented. + +2. Altered versions must be plainly marked as such and must not + be misrepresented as being the original source. + +3. This Copyright notice may not be removed or altered from any + source or altered source distribution. + +The Contributing Authors and Group 42, Inc. specifically permit, without +fee, and encourage the use of this source code as a component to +supporting the PNG file format in commercial products. If you use this +source code in a product, acknowledgment is not required but would be +appreciated. + + +A "png_get_copyright" function is available, for convenient use in "about" +boxes and the like: + + printf("%s",png_get_copyright(NULL)); + +Also, the PNG logo (in PNG format, of course) is supplied in the +files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31). + +Libpng is OSI Certified Open Source Software. OSI Certified Open Source is a +certification mark of the Open Source Initiative. + +Glenn Randers-Pehrson +glennrp at users.sourceforge.net +July 18, 2013 + +============================================================ +Notices for file(s): +/lib/libf2fs_fmt_host_dyn.so +------------------------------------------------------------ +The tools for F2FS are covered by GNU Public License version 2. +Exceptionally, the following files are also covered by the GNU Lesser General +Public License Version 2.1 as the dual licenses. +- include/f2fs_fs.h +- lib/libf2fs.c +- lib/libf2fs_io.c +- mkfs/f2fs_format.c +- mkfs/f2fs_format_main.c +- mkfs/f2fs_format_utils.c +- mkfs/f2fs_format_utils.h + +================================================================================ +Copyright (c) 2012 Samsung Electronics Co., Ltd. + http://www.samsung.com/ + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License version 2 as +published by the Free Software Foundation. + +================================================================================ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. + +================================================================================ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + +============================================================ +Notices for file(s): +/framework/doclava.jar +------------------------------------------------------------ + + Copyright (C) 2010 Google Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +====================================================================== + +jQuery 1.2.6 - New Wave Javascript + +Copyright (c) 2008 John Resig (jquery.com) +Dual licensed under the MIT (MIT-LICENSE.txt) +and GPL (GPL-LICENSE.txt) licenses. + +Copyright (c) 2009 John Resig, http://jquery.com/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +============================================================ +Notices for file(s): +/bin/sqlite3 +/lib/libsqlite.so +------------------------------------------------------------ +2001 September 15 + +The author disclaims copyright to this source code. In place of +a legal notice, here is a blessing: + + May you do good and not evil. + May you find forgiveness for yourself and forgive others. + May you share freely, never taking more than you give. + + +============================================================ +Notices for file(s): +/lib/libcrypto-host.so +/lib/libcrypto_static.a +/lib/libssl-host.so +/lib64/libcrypto-host.so +------------------------------------------------------------ + + LICENSE ISSUES + ============== + + The OpenSSL toolkit stays under a dual license, i.e. both the conditions of + the OpenSSL License and the original SSLeay license apply to the toolkit. + See below for the actual license texts. Actually both licenses are BSD-style + Open Source licenses. In case of any license issues related to OpenSSL + please contact openssl-core@openssl.org. + + OpenSSL License + --------------- + +/* ==================================================================== + * Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + + Original SSLeay License + ----------------------- + +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + + +============================================================ +Notices for file(s): +/lib/libexpat-host.so +/lib/libexpat.a +/lib64/libexpat-host.so +------------------------------------------------------------ +Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd + and Clark Cooper +Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +============================================================ +Notices for file(s): +/framework/emmalib.jar +------------------------------------------------------------ +Common Public License - v 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S +ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + + a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and + b) in the case of each subsequent Contributor: + + i) changes to the Program, and + + ii) additions to the Program; + + where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was +added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules +of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. + +"Program" means the Contributions distributed in accordance with this Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, including all Contributors. + +2. GRANT OF RIGHTS + + a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative +works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form. + + b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, +use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the +combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered +by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. + + c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the +Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other +entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole +responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the +Program, it is Recipient's responsibility to acquire that license before distributing the Program. + + d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this +Agreement. + +3. REQUIREMENTS + +A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: + + a) it complies with the terms and conditions of this Agreement; and + + b) its license agreement: + + i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, +and implied warranties or conditions of merchantability and fitness for a particular purpose; + + ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost +profits; + + iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and + + iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium +customarily used for software exchange. + +When the Program is made available in source code form: + + a) it must be made available under this Agreement; and + + b) a copy of this Agreement must be included with each copy of the Program. + +Contributors may not remove or alter any copyright notices contained within the Program. + +Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the +Contribution. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the +commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other +Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify +every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a +third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a +commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to +qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate +with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor +then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this +section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other +Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, +WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for +determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to +the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this +Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any +patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, if Recipient institutes +patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other +software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a +reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the +Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and +survive. + +Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following +manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the +right to modify this Agreement. IBM is the initial Agreement Steward. IBM may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new +version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under +which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new +version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, +whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal +action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. + +============================================================ +Notices for file(s): +/lib/liblog.a +/lib/liblog.so +/lib64/liblog.a +/lib64/liblog.so +------------------------------------------------------------ + + Copyright (c) 2005-2014, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + +============================================================ +Notices for file(s): +/lib/libselinux.a +------------------------------------------------------------ +This library (libselinux) is public domain software, i.e. not copyrighted. + +Warranty Exclusion +------------------ +You agree that this software is a +non-commercially developed program that may contain "bugs" (as that +term is used in the industry) and that it may not function as intended. +The software is licensed "as is". NSA makes no, and hereby expressly +disclaims all, warranties, express, implied, statutory, or otherwise +with respect to the software, including noninfringement and the implied +warranties of merchantability and fitness for a particular purpose. + +Limitation of Liability +----------------------- +In no event will NSA be liable for any damages, including loss of data, +lost profits, cost of cover, or other special, incidental, +consequential, direct or indirect damages arising from the software or +the use thereof, however caused and on any theory of liability. This +limitation will apply even if NSA has been advised of the possibility +of such damage. You acknowledge that this is a reasonable allocation of +risk. + +============================================================ +Notices for file(s): +/framework/org-netbeans-api-visual.jar +/framework/org-openide-util.jar +------------------------------------------------------------ +The GNU General Public License (GPL) Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. + +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + +Preamble + +The licenses for most software are designed to take away +your freedom to share and change it. By contrast, the GNU +General Public License is intended to guarantee your freedom +to share and change free software--to make sure the software +is free for all its users. This General Public License +applies to most of the Free Software Foundation's software +and to any other program whose authors commit to using it. +(Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can +apply it to your programs, too. When we speak of free +software, we are referring to freedom, not price. Our +General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and +charge for this service if you wish), that you receive +source code or can get it if you want it, that you can +change the software or use pieces of it in new free +programs; and that you know you can do these things. To +protect your rights, we need to make restrictions that +forbid anyone to deny you these rights or to ask you to +surrender the rights. These restrictions translate to +certain responsibilities for you if you distribute copies of +the software, or if you modify it. + +For example, if you distribute copies of such a program, +whether gratis or for a fee, you must give the recipients +all the rights that you have. You must make sure that they, +too, receive or can get the source code. And you must show +them these terms so they know their rights. + +We protect your rights with two steps: (1) copyright the +software, and (2) offer you this license which gives you +legal permission to copy, distribute and/or modify the +software. + +Also, for each author's protection and ours, we want to make +certain that everyone understands that there is no warranty +for this free software. If the software is modified by +someone else and passed on, we want its recipients to know +that what they have is not the original, so that any +problems introduced by others will not reflect on the +original authors' reputations. + +Finally, any free program is threatened constantly by +software patents. We wish to avoid the danger that +redistributors of a free program will individually obtain +patent licenses, in effect making the program proprietary. +To prevent this, we have made it clear that any patent must +be licensed for everyone's free use or not licensed at all. + +The precise terms and conditions for copying, distribution +and modification follow. + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND +MODIFICATION + +0. This License applies to any program or other work which +contains a notice placed by the copyright holder saying it +may be distributed under the terms of this General Public +License. The "Program", below, refers to any such program or +work, and a "work based on the Program" means either the +Program or any derivative work under copyright law: that is +to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into +another language. (Hereinafter, translation is included +without limitation in the term "modification".) Each +licensee is addressed as "you". + +Activities other than copying, distribution and modification +are not covered by this License; they are outside its scope. +The act of running the Program is not restricted, and the +output from the Program is covered only if its contents +constitute a work based on the Program (independent of +having been made by running the Program). Whether that is +true depends on what the Program does. + +1. You may copy and distribute verbatim copies of the +Program's source code as you receive it, in any medium, +provided that you conspicuously and appropriately publish on +each copy an appropriate copyright notice and disclaimer of +warranty; keep intact all the notices that refer to this +License and to the absence of any warranty; and give any +other recipients of the Program a copy of this License along +with the Program. + +You may charge a fee for the physical act of transferring a +copy, and you may at your option offer warranty protection +in exchange for a fee. + +2. You may modify your copy or copies of the Program or any +portion of it, thus forming a work based on the Program, and +copy and distribute such modifications or work under the +terms of Section 1 above, provided that you also meet all of +these conditions: + +a) You must cause the modified files to carry prominent +notices stating that you changed the files and the date of +any change. + +b) You must cause any work that you distribute or publish, +that in whole or in part contains or is derived from the +Program or any part thereof, to be licensed as a whole at no +charge to all third parties under the terms of this License. + +c) If the modified program normally reads commands +interactively when run, you must cause it, when started +running for such interactive use in the most ordinary way, +to print or display an announcement including an appropriate +copyright notice and a notice that there is no warranty (or +else, saying that you provide a warranty) and that users may +redistribute the program under these conditions, and telling +the user how to view a copy of this License. (Exception: if +the Program itself is interactive but does not normally +print such an announcement, your work based on the Program +is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the +Program, and can be reasonably considered independent and +separate works in themselves, then this License, and its +terms, do not apply to those sections when you distribute +them as separate works. But when you distribute the same +sections as part of a whole which is a work based on the +Program, the distribution of the whole must be on the terms +of this License, whose permissions for other licensees +extend to the entire whole, and thus to each and every part +regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights +or contest your rights to work written entirely by you; +rather, the intent is to exercise the right to control the +distribution of derivative or collective works based on the +Program. In addition, mere aggregation of another work not +based on the Program with the Program (or with a work based +on the Program) on a volume of a storage or distribution +medium does not bring the other work under the scope of this +License. + +3. You may copy and distribute the Program (or a work based +on it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you +also do one of the following: + +a) Accompany it with the complete corresponding +machine-readable source code, which must be distributed +under the terms of Sections 1 and 2 above on a medium +customarily used for software interchange; or, + +b) Accompany it with a written offer, valid for at least +three years, to give any third party, for a charge no more +than your cost of physically performing source distribution, +a complete machine-readable copy of the corresponding source +code, to be distributed under the terms of Sections 1 and 2 +above on a medium customarily used for software interchange; +or, + +c) Accompany it with the information you received as to the +offer to distribute corresponding source code. (This +alternative is allowed only for noncommercial distribution +and only if you received the program in object code or +executable form with such an offer, in accord with +Subsection b above.) + +The source code for a work means the preferred form of the +work for making modifications to it. For an executable work, +complete source code means all the source code for all +modules it contains, plus any associated interface +definition files, plus the scripts used to control +compilation and installation of the executable. However, as +a special exception, the source code distributed need not +include anything that is normally distributed (in either +source or binary form) with the major components (compiler, +kernel, and so on) of the operating system on which the +executable runs, unless that component itself accompanies +the executable. If distribution of executable or object code +is made by offering access to copy from a designated place, +then offering equivalent access to copy the source code from +the same place counts as distribution of the source code, +even though third parties are not compelled to copy the +source along with the object code. + +4. You may not copy, modify, sublicense, or distribute the +Program except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense or distribute +the Program is void, and will automatically terminate your +rights under this License. However, parties who have +received copies, or rights, from you under this License will +not have their licenses terminated so long as such parties +remain in full compliance. + +5. You are not required to accept this License, since you +have not signed it. However, nothing else grants you +permission to modify or distribute the Program or its +derivative works. These actions are prohibited by law if you +do not accept this License. Therefore, by modifying or +distributing the Program (or any work based on the Program), +you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or +modifying the Program or works based on it. + +6. Each time you redistribute the Program (or any work based +on the Program), the recipient automatically receives a +license from the original licensor to copy, distribute or +modify the Program subject to these terms and conditions. +You may not impose any further restrictions on the +recipients' exercise of the rights granted herein. You are +not responsible for enforcing compliance by third parties to +this License. + +7. If, as a consequence of a court judgment or allegation of +patent infringement or for any other reason (not limited to +patent issues), conditions are imposed on you (whether by +court order, agreement or otherwise) that contradict the +conditions of this License, they do not excuse you from the +conditions of this License. If you cannot distribute so as +to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a +consequence you may not distribute the Program at all. For +example, if a patent license would not permit royalty-free +redistribution of the Program by all those who receive +copies directly or indirectly through you, then the only way +you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or +unenforceable under any particular circumstance, the balance +of the section is intended to apply and the section as a +whole is intended to apply in other circumstances. It is not +the purpose of this section to induce you to infringe any +patents or other property right claims or to contest +validity of any such claims; this section has the sole +purpose of protecting the integrity of the free software +distribution system, which is implemented by public license +practices. Many people have made generous contributions to +the wide range of software distributed through that system +in reliance on consistent application of that system; it is +up to the author/donor to decide if he or she is willing to +distribute software through any other system and a licensee +cannot impose that choice. + +This section is intended to make thoroughly clear what is +believed to be a consequence of the rest of this License. + +8. If the distribution and/or use of the Program is +restricted in certain countries either by patents or by +copyrighted interfaces, the original copyright holder who +places the Program under this License may add an explicit +geographical distribution limitation excluding those +countries, so that distribution is permitted only in or +among countries not thus excluded. In such case, this +License incorporates the limitation as if written in the +body of this License. + +9. The Free Software Foundation may publish revised and/or +new versions of the General Public License from time to +time. Such new versions will be similar in spirit to the +present version, but may differ in detail to address new +problems or concerns. + +Each version is given a distinguishing version number. If +the Program specifies a version number of this License which +applies to it and "any later version", you have the option +of following the terms and conditions either of that version +or of any later version published by the Free Software +Foundation. If the Program does not specify a version number +of this License, you may choose any version ever published +by the Free Software Foundation. + +10. If you wish to incorporate parts of the Program into +other free programs whose distribution conditions are +different, write to the author to ask for permission. For +software which is copyrighted by the Free Software +Foundation, write to the Free Software Foundation; we +sometimes make exceptions for this. Our decision will be +guided by the two goals of preserving the free status of all +derivatives of our free software and of promoting the +sharing and reuse of software generally. + +NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS +NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE +COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM +"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR +IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE +OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE +DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED +TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY +WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED +ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, +SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF +THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT +LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR +LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE +PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH +HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the +greatest possible use to the public, the best way to achieve +this is to make it free software which everyone can +redistribute and change under these terms. + +To do so, attach the following notices to the program. It is +safest to attach them to the start of each source file to +most effectively convey the exclusion of warranty; and each +file should have at least the "copyright" line and a pointer +to where the full notice is found. + +One line to give the program's name and a brief idea of what +it does. + +Copyright (C) +This program is free software; you can redistribute it +and/or modify it under the terms of the GNU General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later +version. This program is distributed in the hope that it +will be useful, but WITHOUT ANY WARRANTY; without even the +implied warranty of MERCHANTABILITY or FITNESS FOR A +PARTICULAR PURPOSE. See the GNU General Public License for +more details. You should have received a copy of the GNU +General Public License along with this program; if not, +write to the Free Software Foundation, Inc., 59 Temple +Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and +paper mail. If the program is interactive, make it output a +short notice like this when it starts in an interactive +mode: + +Gnomovision version 69, Copyright (C) year name of author +Gnomovision comes with ABSOLUTELY NO WARRANTY; for details +type `show w'. This is free software, and you are welcome to +redistribute it under certain conditions; type `show c' for +details. The hypothetical commands `show w' and `show c' +should show the appropriate parts of the General Public +License. Of course, the commands you use may be called +something other than `show w' and `show c'; they could even +be mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a +programmer) or your school, if any, to sign a "copyright +disclaimer" for the program, if necessary. Here is a sample; +alter the names: + +Yoyodyne, Inc., hereby disclaims all copyright interest in +the program `Gnomovision' (which makes passes at compilers) +written by James Hacker. + +signature of Ty Coon, 1 April 1989 +Ty Coon, President of Vice +This General Public License does not permit incorporating +your program into proprietary programs. If your program is a +subroutine library, you may consider it more useful to +permit linking proprietary applications with the library. If +this is what you want to do, use the GNU Library General +Public License instead of this License. + +"CLASSPATH" EXCEPTION TO THE GPL VERSION 2 + +Certain source files distributed by Sun Microsystems, Inc. +are subject to the following clarification and special +exception to the GPL Version 2, but only where Sun has +expressly included in the particular source file's header +the words "Sun designates this particular file as subject +to the "Classpath" exception as provided by Sun in the +License file that accompanied this code." + + Linking this library statically or dynamically with other +modules is making a combined work based on this library. +Thus, the terms and conditions of the GNU General Public +License Version 2 cover the whole combination. + + As a special exception, the copyright holders of this +library give you permission to link this library with +independent modules to produce an executable, regardless of +the license terms of these independent modules, and to copy +and distribute the resulting executable under terms of your +choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license +of that module. An independent module is a module which is +not derived from or based on this library. If you modify +this library, you may extend this exception to your version +of the library, but you are not obligated to do so. If you +do not wish to do so, delete this exception statement from +your version. +============================================================ +Notices for file(s): +/bin/adb +------------------------------------------------------------ + + Copyright (c) 2006-2009, The Android Open Source Project + Copyright 2006, Brian Swetland + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + +============================================================ +Notices for file(s): +/bin/llvm-rs-cc +/lib/libslang.a +------------------------------------------------------------ +========================= +NOTICE file for slang.git +========================= + + Copyright (c) 2005-2011, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + + +=========================================== +NOTICE file for external/clang (clang.git). +Note: libclang*.a are statically linked. +=========================================== + +============================================================================== +LLVM Release License +============================================================================== +University of Illinois/NCSA +Open Source License + +Copyright (c) 2007-2011 University of Illinois at Urbana-Champaign. +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + +============================================================================== +The LLVM software contains code written by third parties. Such software will +have its own individual LICENSE.TXT file in the directory in which it appears. +This file will describe the copyrights, license, and restrictions which apply +to that code. + +The disclaimer of warranty in the University of Illinois Open Source License +applies to all code in the LLVM Distribution, and nothing in any of the +other licenses gives permission to use the names of the LLVM Team or the +University of Illinois to endorse or promote products derived from this +Software. + +The following pieces of software have additional or alternate copyrights, +licenses, and/or restrictions: + +Program Directory +------- --------- + + + + +========================================= +NOTICE file for external/llvm (llvm.git). +Note: libLLVM*.a are statically linked. +========================================= + +============================================================================== +LLVM Release License +============================================================================== +University of Illinois/NCSA +Open Source License + +Copyright (c) 2003-2011 University of Illinois at Urbana-Champaign. +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + +============================================================================== +Copyrights and Licenses for Third Party Software Distributed with LLVM: +============================================================================== +The LLVM software contains code written by third parties. Such software will +have its own individual LICENSE.TXT file in the directory in which it appears. +This file will describe the copyrights, license, and restrictions which apply +to that code. + +The disclaimer of warranty in the University of Illinois Open Source License +applies to all code in the LLVM Distribution, and nothing in any of the +other licenses gives permission to use the names of the LLVM Team or the +University of Illinois to endorse or promote products derived from this +Software. + +The following pieces of software have additional or alternate copyrights, +licenses, and/or restrictions: + +Program Directory +------- --------- +Autoconf llvm/autoconf + llvm/projects/ModuleMaker/autoconf + llvm/projects/sample/autoconf +CellSPU backend llvm/lib/Target/CellSPU/README.txt +Google Test llvm/utils/unittest/googletest +OpenBSD regex llvm/lib/Support/{reg*, COPYRIGHT.regex} + +============================================================ +Notices for file(s): +/bin/minigzip +/lib/libunz.a +/lib/libz-host.so +/lib/libz.a +/lib64/libunz.a +/lib64/libz-host.so +/lib64/libz.a +------------------------------------------------------------ + (C) 1995-2013 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + +============================================================ +Notices for file(s): +/framework/antlr-runtime.jar +------------------------------------------------------------ +[The "BSD license"] +Copyright (c) 201 Terence Parr +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +============================================================ +Notices for file(s): +/framework/junit.jar +------------------------------------------------------------ +Common Public License - v 1.0 + + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + + +1. DEFINITIONS + +"Contribution" means: + +a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and +b) in the case of each subsequent Contributor: +i) changes to the Program, and +ii) additions to the Program; +where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program. + +"Contributor" means any person or entity that distributes the Program. + + +"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. + + +"Program" means the Contributions distributed in accordance with this Agreement. + + +"Recipient" means anyone who receives the Program under this Agreement, including all Contributors. + + +2. GRANT OF RIGHTS + +a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form. +b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. +c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program. +d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. +3. REQUIREMENTS + +A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: + +a) it complies with the terms and conditions of this Agreement; and +b) its license agreement: +i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; +ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; +iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and +iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange. +When the Program is made available in source code form: + +a) it must be made available under this Agreement; and +b) a copy of this Agreement must be included with each copy of the Program. + +Contributors may not remove or alter any copyright notices contained within the Program. + + +Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution. + + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. + + +For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. + + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. + + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. + + +If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, if Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. + + +All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive. + + +Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. IBM is the initial Agreement Steward. IBM may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. + + +This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. +============================================================ +Notices for file(s): +/framework/bouncycastle-host.jar +------------------------------------------------------------ +Copyright (c) 2000-2013 The Legion of the Bouncy Castle Inc. (http://www.bouncycastle.org) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and +associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/love2dToAPK/tools/tools/android-win/platform-tools/adb.exe b/love2dToAPK/tools/tools/android-win/platform-tools/adb.exe new file mode 100644 index 0000000..6717685 Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/platform-tools/adb.exe differ diff --git a/love2dToAPK/tools/tools/android-win/platform-tools/api/api-versions.xml b/love2dToAPK/tools/tools/android-win/platform-tools/api/api-versions.xml new file mode 100644 index 0000000..5738759 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/platform-tools/api/api-versions.xml @@ -0,0 +1,57543 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/love2dToAPK/tools/tools/android-win/platform-tools/dmtracedump.exe b/love2dToAPK/tools/tools/android-win/platform-tools/dmtracedump.exe new file mode 100644 index 0000000..bfbf29b Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/platform-tools/dmtracedump.exe differ diff --git a/love2dToAPK/tools/tools/android-win/platform-tools/etc1tool.exe b/love2dToAPK/tools/tools/android-win/platform-tools/etc1tool.exe new file mode 100644 index 0000000..c323f5a Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/platform-tools/etc1tool.exe differ diff --git a/love2dToAPK/tools/tools/android-win/platform-tools/fastboot.exe b/love2dToAPK/tools/tools/android-win/platform-tools/fastboot.exe new file mode 100644 index 0000000..82fd88f Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/platform-tools/fastboot.exe differ diff --git a/love2dToAPK/tools/tools/android-win/platform-tools/hprof-conv.exe b/love2dToAPK/tools/tools/android-win/platform-tools/hprof-conv.exe new file mode 100644 index 0000000..e0a125e Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/platform-tools/hprof-conv.exe differ diff --git a/love2dToAPK/tools/tools/android-win/platform-tools/source.properties b/love2dToAPK/tools/tools/android-win/platform-tools/source.properties new file mode 100644 index 0000000..8235bd0 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/platform-tools/source.properties @@ -0,0 +1,7 @@ +### Android Tool: Source of this archive. +#Thu Jul 09 05:17:47 CEST 2015 +Archive.HostOs=windows +Pkg.License=To get started with the Android SDK, you must agree to the following terms and conditions.\n\nThis is the Android SDK License Agreement (the "License Agreement").\n\n1. Introduction\n\n1.1 The Android SDK (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and SDK library files and tools , if and when they are made available) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.\n\n1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL\: http\://source.android.com/, as updated from time to time.\n\n1.3 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.\n\n2. Accepting the License Agreement\n\n2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.\n\n2.2 By clicking to accept and/or using the SDK, you hereby agree to the terms of the License Agreement.\n\n2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries including the country in which you are resident or from which you use the SDK.\n\n2.4 If you will use the SDK internally within your company or organization you agree to be bound by the License Agreement on behalf of your employer or other entity, and you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.\n\n3. SDK License from Google\n\n3.1 Subject to the terms of the License Agreement, Google grants you a royalty-free, non-assignable, non-exclusive, non-sublicensable, limited, revocable license to use the SDK, personally or internally within your company or organization, solely to develop and distribute applications to run on the Android platform.\n\n3.2 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.\n\n3.3 You may not use the SDK for any purpose not expressly permitted by the License Agreement. Except to the extent required by applicable third party licenses, you may not\: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.\n\n3.4 You agree that you will not take any actions that may cause or result in the fragmentation of Android, including but not limited to distributing, participating in the creation of, or promoting in any way a software development kit derived from the SDK.\n\n3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement. You agree to remain a licensee in good standing in regard to such open source software licenses under all the rights granted and to refrain from any actions that may terminate, suspend, or breach such rights.\n\n3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.\n\n3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.\n\n3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.\n\n4. Use of the SDK by You\n\n4.1 Google agrees that nothing in the License Agreement gives Google any right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.\n\n4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement, and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).\n\n4.3 You agree that if you use the SDK to develop applications, you will protect the privacy and legal rights of users. If users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If users provide you with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, each user has given you permission to do so.\n\n4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of Google or any third party.\n\n4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.\n\n4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.\n\n5. Your Developer Credentials\n\n5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.\n\n6. Privacy and Information\n\n6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.\n\n6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy located at http\://www.google.com/policies/privacy/.\n\n7. Third Party Applications\n\n7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.\n\n7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.\n\n7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party.\n\n8. Using Google APIs\n\n8.1 Google APIs\n\n8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.\n\n8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.\n\n9. Terminating the License Agreement\n\n9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.\n\n9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.\n\n9.3 Google may at any time, terminate the License Agreement, with or without cause, upon notice to you.\n\n9.4 The License Agreement will automatically terminate without notice or other action when Google ceases to provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service.\n\n9.5 When the License Agreement is terminated, the license granted to you in the License Agreement will terminate, you will immediately cease all use of the SDK, and the provisions of paragraphs 10, 11, 12 and 14 shall survive indefinitely.\n\n10. DISCLAIMERS\n\n10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.\n\n10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE. WITHOUT LIMITING THE FOREGOING, YOU UNDERSTAND THAT THE SDK MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.\n\n10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.\n\n11. LIMITATION OF LIABILITY\n\n11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.\n\n12. Indemnification\n\n12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys\u2019 fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any Intellectual Property Rights of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you of the License Agreement.\n\n13. Changes to the License Agreement\n\n13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.\n\n14. General Legal Terms\n\n14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.\n\n14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.\n\n14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.\n\n14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.\n\n14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.\n\n14.6 The License Agreement may not be assigned or transferred by you without the prior written approval of Google, and any attempted assignment without such approval will be void. You shall not delegate your responsibilities or obligations under the License Agreement without the prior written approval of Google.\n\n14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.\n\nJune 2014.\n +Pkg.LicenseRef=android-sdk-license +Pkg.Revision=22 +Pkg.SourceUrl=https\://dl.google.com/android/repository/repository-11.xml diff --git a/love2dToAPK/tools/tools/android-win/platform-tools/sqlite3.exe b/love2dToAPK/tools/tools/android-win/platform-tools/sqlite3.exe new file mode 100644 index 0000000..a16d018 Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/platform-tools/sqlite3.exe differ diff --git a/love2dToAPK/tools/tools/android-win/platform-tools/systrace/AUTHORS b/love2dToAPK/tools/tools/android-win/platform-tools/systrace/AUTHORS new file mode 100644 index 0000000..5a7ed82 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/platform-tools/systrace/AUTHORS @@ -0,0 +1,12 @@ +# Names should be added to this file with this pattern: +# +# For individuals: +# Name +# +# For organizations: +# Organization +# +# See python fnmatch module documentation for more information. + +The Chromium Authors <*@chromium.org> +Google Inc. <*@google.com> diff --git a/love2dToAPK/tools/tools/android-win/platform-tools/systrace/LICENSE b/love2dToAPK/tools/tools/android-win/platform-tools/systrace/LICENSE new file mode 100644 index 0000000..8dc3504 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/platform-tools/systrace/LICENSE @@ -0,0 +1,27 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/love2dToAPK/tools/tools/android-win/platform-tools/systrace/NOTICE b/love2dToAPK/tools/tools/android-win/platform-tools/systrace/NOTICE new file mode 100644 index 0000000..624b6da --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/platform-tools/systrace/NOTICE @@ -0,0 +1,205 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/love2dToAPK/tools/tools/android-win/platform-tools/systrace/UPSTREAM_REVISION b/love2dToAPK/tools/tools/android-win/platform-tools/systrace/UPSTREAM_REVISION new file mode 100644 index 0000000..1e25699 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/platform-tools/systrace/UPSTREAM_REVISION @@ -0,0 +1 @@ +775 diff --git a/love2dToAPK/tools/tools/android-win/platform-tools/systrace/prefix.html b/love2dToAPK/tools/tools/android-win/platform-tools/systrace/prefix.html new file mode 100644 index 0000000..21bf427 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/platform-tools/systrace/prefix.html @@ -0,0 +1,38 @@ + + + + +Android System Trace +%s +%s + + + + +
%s
+
+
+ + + + + diff --git a/love2dToAPK/tools/tools/android-win/platform-tools/systrace/systrace-legacy.py b/love2dToAPK/tools/tools/android-win/platform-tools/systrace/systrace-legacy.py new file mode 100644 index 0000000..a20f6b5 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/platform-tools/systrace/systrace-legacy.py @@ -0,0 +1,251 @@ +#!/usr/bin/env python + +# Copyright (c) 2011 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Android system-wide tracing utility. + +This is a tool for capturing a trace that includes data from both userland and +the kernel. It creates an HTML file for visualizing the trace. +""" + +import errno, optparse, os, select, subprocess, sys, time, zlib + +# This list is based on the tags in frameworks/native/include/utils/Trace.h. +trace_tag_bits = { + 'gfx': 1<<1, + 'input': 1<<2, + 'view': 1<<3, + 'webview': 1<<4, + 'wm': 1<<5, + 'am': 1<<6, + 'sync': 1<<7, + 'audio': 1<<8, + 'video': 1<<9, + 'camera': 1<<10, +} + +flattened_css_file = 'style.css' +flattened_js_file = 'script.js' + +def add_adb_serial(command, serial): + if serial != None: + command.insert(1, serial) + command.insert(1, '-s') + +def main(): + parser = optparse.OptionParser() + parser.add_option('-o', dest='output_file', help='write HTML to FILE', + default='trace.html', metavar='FILE') + parser.add_option('-t', '--time', dest='trace_time', type='int', + help='trace for N seconds', metavar='N') + parser.add_option('-b', '--buf-size', dest='trace_buf_size', type='int', + help='use a trace buffer size of N KB', metavar='N') + parser.add_option('-d', '--disk', dest='trace_disk', default=False, + action='store_true', help='trace disk I/O (requires root)') + parser.add_option('-f', '--cpu-freq', dest='trace_cpu_freq', default=False, + action='store_true', help='trace CPU frequency changes') + parser.add_option('-i', '--cpu-idle', dest='trace_cpu_idle', default=False, + action='store_true', help='trace CPU idle events') + parser.add_option('-l', '--cpu-load', dest='trace_cpu_load', default=False, + action='store_true', help='trace CPU load') + parser.add_option('-s', '--no-cpu-sched', dest='trace_cpu_sched', default=True, + action='store_false', help='inhibit tracing CPU ' + + 'scheduler (allows longer trace times by reducing data ' + + 'rate into buffer)') + parser.add_option('-u', '--bus-utilization', dest='trace_bus_utilization', + default=False, action='store_true', + help='trace bus utilization (requires root)') + parser.add_option('-w', '--workqueue', dest='trace_workqueue', default=False, + action='store_true', help='trace the kernel workqueues ' + + '(requires root)') + parser.add_option('--set-tags', dest='set_tags', action='store', + help='set the enabled trace tags and exit; set to a ' + + 'comma separated list of: ' + + ', '.join(trace_tag_bits.iterkeys())) + parser.add_option('--link-assets', dest='link_assets', default=False, + action='store_true', help='link to original CSS or JS resources ' + 'instead of embedding them') + parser.add_option('--from-file', dest='from_file', action='store', + help='read the trace from a file rather than running a live trace') + parser.add_option('--asset-dir', dest='asset_dir', default='trace-viewer', + type='string', help='') + parser.add_option('-e', '--serial', dest='device_serial', type='string', + help='adb device serial number') + options, args = parser.parse_args() + + if options.set_tags: + flags = 0 + tags = options.set_tags.split(',') + for tag in tags: + try: + flags |= trace_tag_bits[tag] + except KeyError: + parser.error('unrecognized tag: %s\nknown tags are: %s' % + (tag, ', '.join(trace_tag_bits.iterkeys()))) + atrace_args = ['adb', 'shell', 'setprop', 'debug.atrace.tags.enableflags', hex(flags)] + add_adb_serial(atrace_args, options.device_serial) + try: + subprocess.check_call(atrace_args) + except subprocess.CalledProcessError, e: + print >> sys.stderr, 'unable to set tags: %s' % e + print '\nSet enabled tags to: %s\n' % ', '.join(tags) + print ('You will likely need to restart the Android framework for this to ' + + 'take effect:\n\n adb shell stop\n adb shell ' + + 'start\n') + return + + atrace_args = ['adb', 'shell', 'atrace', '-z'] + add_adb_serial(atrace_args, options.device_serial) + + if options.trace_disk: + atrace_args.append('-d') + if options.trace_cpu_freq: + atrace_args.append('-f') + if options.trace_cpu_idle: + atrace_args.append('-i') + if options.trace_cpu_load: + atrace_args.append('-l') + if options.trace_cpu_sched: + atrace_args.append('-s') + if options.trace_bus_utilization: + atrace_args.append('-u') + if options.trace_workqueue: + atrace_args.append('-w') + if options.trace_time is not None: + if options.trace_time > 0: + atrace_args.extend(['-t', str(options.trace_time)]) + else: + parser.error('the trace time must be a positive number') + if options.trace_buf_size is not None: + if options.trace_buf_size > 0: + atrace_args.extend(['-b', str(options.trace_buf_size)]) + else: + parser.error('the trace buffer size must be a positive number') + + if options.from_file is not None: + atrace_args = ['cat', options.from_file] + + script_dir = os.path.dirname(os.path.abspath(sys.argv[0])) + + if options.link_assets: + src_dir = os.path.join(script_dir, options.asset_dir, 'src') + build_dir = os.path.join(script_dir, options.asset_dir, 'build') + + js_files, js_flattenizer, css_files, templates = get_assets(src_dir, build_dir) + + css = '\n'.join(linked_css_tag % (os.path.join(src_dir, f)) for f in css_files) + js = '\n' % js_flattenizer + js += '\n'.join(linked_js_tag % (os.path.join(src_dir, f)) for f in js_files) + + else: + css_filename = os.path.join(script_dir, flattened_css_file) + js_filename = os.path.join(script_dir, flattened_js_file) + css = compiled_css_tag % (open(css_filename).read()) + js = compiled_js_tag % (open(js_filename).read()) + templates = '' + + html_filename = options.output_file + + trace_started = False + leftovers = '' + adb = subprocess.Popen(atrace_args, stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + dec = zlib.decompressobj() + while True: + ready = select.select([adb.stdout, adb.stderr], [], [adb.stdout, adb.stderr]) + if adb.stderr in ready[0]: + err = os.read(adb.stderr.fileno(), 4096) + sys.stderr.write(err) + sys.stderr.flush() + if adb.stdout in ready[0]: + out = leftovers + os.read(adb.stdout.fileno(), 4096) + if options.from_file is None: + out = out.replace('\r\n', '\n') + if out.endswith('\r'): + out = out[:-1] + leftovers = '\r' + else: + leftovers = '' + if not trace_started: + lines = out.splitlines(True) + out = '' + for i, line in enumerate(lines): + if line == 'TRACE:\n': + sys.stdout.write("downloading trace...") + sys.stdout.flush() + out = ''.join(lines[i+1:]) + html_prefix = read_asset(script_dir, 'prefix.html') + html_file = open(html_filename, 'w') + html_file.write(html_prefix % (css, js, templates)) + trace_started = True + break + elif 'TRACE:'.startswith(line) and i == len(lines) - 1: + leftovers = line + leftovers + else: + sys.stdout.write(line) + sys.stdout.flush() + if len(out) > 0: + out = dec.decompress(out) + html_out = out.replace('\n', '\\n\\\n') + if len(html_out) > 0: + html_file.write(html_out) + result = adb.poll() + if result is not None: + break + if result != 0: + print >> sys.stderr, 'adb returned error code %d' % result + elif trace_started: + html_out = dec.flush().replace('\n', '\\n\\\n').replace('\r', '') + if len(html_out) > 0: + html_file.write(html_out) + html_suffix = read_asset(script_dir, 'suffix.html') + html_file.write(html_suffix) + html_file.close() + print " done\n\n wrote file://%s\n" % (os.path.abspath(options.output_file)) + else: + print >> sys.stderr, ('An error occured while capturing the trace. Output ' + + 'file was not written.') + +def read_asset(src_dir, filename): + return open(os.path.join(src_dir, filename)).read() + +def get_assets(src_dir, build_dir): + sys.path.append(build_dir) + gen = __import__('generate_standalone_timeline_view', {}, {}) + parse_deps = __import__('parse_deps', {}, {}) + gen_templates = __import__('generate_template_contents', {}, {}) + filenames = gen._get_input_filenames() + load_sequence = parse_deps.calc_load_sequence(filenames, src_dir) + + js_files = [] + js_flattenizer = "window.FLATTENED = {};\n" + js_flattenizer += "window.FLATTENED_RAW_SCRIPTS = {};\n" + css_files = [] + + for module in load_sequence: + js_files.append(os.path.relpath(module.filename, src_dir)) + js_flattenizer += "window.FLATTENED['%s'] = true;\n" % module.name + for dependent_raw_script_name in module.dependent_raw_script_names: + js_flattenizer += ( + "window.FLATTENED_RAW_SCRIPTS['%s'] = true;\n" % + dependent_raw_script_name) + + for style_sheet in module.style_sheets: + css_files.append(os.path.relpath(style_sheet.filename, src_dir)) + + templates = gen_templates.generate_templates() + + sys.path.pop() + + return (js_files, js_flattenizer, css_files, templates) + +compiled_css_tag = """""" +compiled_js_tag = """""" + +linked_css_tag = """""" +linked_js_tag = """""" + +if __name__ == '__main__': + main() diff --git a/love2dToAPK/tools/tools/android-win/platform-tools/systrace/systrace.py b/love2dToAPK/tools/tools/android-win/platform-tools/systrace/systrace.py new file mode 100644 index 0000000..d89c35d --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/platform-tools/systrace/systrace.py @@ -0,0 +1,313 @@ +#!/usr/bin/env python + +# Copyright (c) 2011 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Android system-wide tracing utility. + +This is a tool for capturing a trace that includes data from both userland and +the kernel. It creates an HTML file for visualizing the trace. +""" + +import errno, optparse, os, re, select, subprocess, sys, time, zlib + +flattened_css_file = 'style.css' +flattened_js_file = 'script.js' + +class OptionParserIgnoreErrors(optparse.OptionParser): + def error(self, msg): + pass + + def exit(self): + pass + + def print_usage(self): + pass + + def print_help(self): + pass + + def print_version(self): + pass + +def get_device_sdk_version(): + getprop_args = ['adb', 'shell', 'getprop', 'ro.build.version.sdk'] + + parser = OptionParserIgnoreErrors() + parser.add_option('-e', '--serial', dest='device_serial', type='string') + options, args = parser.parse_args() + if options.device_serial is not None: + getprop_args[1:1] = ['-s', options.device_serial] + + adb = subprocess.Popen(getprop_args, stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + out, err = adb.communicate() + if adb.returncode != 0: + print >> sys.stderr, 'Error querying device SDK-version:' + print >> sys.stderr, err + sys.exit(1) + + version = int(out) + return version + +def add_adb_serial(command, serial): + if serial is not None: + command.insert(1, serial) + command.insert(1, '-s') + +def main(): + device_sdk_version = get_device_sdk_version() + if device_sdk_version < 18: + legacy_script = os.path.join(os.path.dirname(sys.argv[0]), 'systrace-legacy.py') + os.execv(legacy_script, sys.argv) + + usage = "Usage: %prog [options] [category1 [category2 ...]]" + desc = "Example: %prog -b 32768 -t 15 gfx input view sched freq" + parser = optparse.OptionParser(usage=usage, description=desc) + parser.add_option('-o', dest='output_file', help='write HTML to FILE', + default='trace.html', metavar='FILE') + parser.add_option('-t', '--time', dest='trace_time', type='int', + help='trace for N seconds', metavar='N') + parser.add_option('-b', '--buf-size', dest='trace_buf_size', type='int', + help='use a trace buffer size of N KB', metavar='N') + parser.add_option('-k', '--ktrace', dest='kfuncs', action='store', + help='specify a comma-separated list of kernel functions to trace') + parser.add_option('-l', '--list-categories', dest='list_categories', default=False, + action='store_true', help='list the available categories and exit') + parser.add_option('-a', '--app', dest='app_name', default=None, type='string', + action='store', help='enable application-level tracing for comma-separated ' + + 'list of app cmdlines') + parser.add_option('--no-fix-threads', dest='fix_threads', default=True, + action='store_false', help='don\'t fix missing or truncated thread names') + + parser.add_option('--link-assets', dest='link_assets', default=False, + action='store_true', help='link to original CSS or JS resources ' + 'instead of embedding them') + parser.add_option('--from-file', dest='from_file', action='store', + help='read the trace from a file (compressed) rather than running a live trace') + parser.add_option('--asset-dir', dest='asset_dir', default='trace-viewer', + type='string', help='') + parser.add_option('-e', '--serial', dest='device_serial', type='string', + help='adb device serial number') + + options, args = parser.parse_args() + + if options.list_categories: + atrace_args = ['adb', 'shell', 'atrace', '--list_categories'] + expect_trace = False + elif options.from_file is not None: + atrace_args = ['cat', options.from_file] + expect_trace = True + else: + atrace_args = ['adb', 'shell', 'atrace', '-z'] + expect_trace = True + + if options.trace_time is not None: + if options.trace_time > 0: + atrace_args.extend(['-t', str(options.trace_time)]) + else: + parser.error('the trace time must be a positive number') + + if options.trace_buf_size is not None: + if options.trace_buf_size > 0: + atrace_args.extend(['-b', str(options.trace_buf_size)]) + else: + parser.error('the trace buffer size must be a positive number') + + if options.app_name is not None: + atrace_args.extend(['-a', options.app_name]) + + if options.kfuncs is not None: + atrace_args.extend(['-k', options.kfuncs]) + + atrace_args.extend(args) + + if options.fix_threads: + atrace_args.extend([';', 'ps', '-t']) + + if atrace_args[0] == 'adb': + add_adb_serial(atrace_args, options.device_serial) + + script_dir = os.path.dirname(os.path.abspath(sys.argv[0])) + + if options.link_assets: + src_dir = os.path.join(script_dir, options.asset_dir, 'src') + build_dir = os.path.join(script_dir, options.asset_dir, 'build') + + js_files, js_flattenizer, css_files, templates = get_assets(src_dir, build_dir) + + css = '\n'.join(linked_css_tag % (os.path.join(src_dir, f)) for f in css_files) + js = '\n' % js_flattenizer + js += '\n'.join(linked_js_tag % (os.path.join(src_dir, f)) for f in js_files) + + else: + css_filename = os.path.join(script_dir, flattened_css_file) + js_filename = os.path.join(script_dir, flattened_js_file) + css = compiled_css_tag % (open(css_filename).read()) + js = compiled_js_tag % (open(js_filename).read()) + templates = '' + + html_filename = options.output_file + + adb = subprocess.Popen(atrace_args, stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + + result = None + data = [] + + # Read the text portion of the output and watch for the 'TRACE:' marker that + # indicates the start of the trace data. + while result is None: + ready = select.select([adb.stdout, adb.stderr], [], [adb.stdout, adb.stderr]) + if adb.stderr in ready[0]: + err = os.read(adb.stderr.fileno(), 4096) + sys.stderr.write(err) + sys.stderr.flush() + if adb.stdout in ready[0]: + out = os.read(adb.stdout.fileno(), 4096) + parts = out.split('\nTRACE:', 1) + + txt = parts[0].replace('\r', '') + if len(parts) == 2: + # The '\nTRACE:' match stole the last newline from the text, so add it + # back here. + txt += '\n' + sys.stdout.write(txt) + sys.stdout.flush() + + if len(parts) == 2: + data.append(parts[1]) + sys.stdout.write("downloading trace...") + sys.stdout.flush() + break + + result = adb.poll() + + # Read and buffer the data portion of the output. + while True: + ready = select.select([adb.stdout, adb.stderr], [], [adb.stdout, adb.stderr]) + keepReading = False + if adb.stderr in ready[0]: + err = os.read(adb.stderr.fileno(), 4096) + if len(err) > 0: + keepReading = True + sys.stderr.write(err) + sys.stderr.flush() + if adb.stdout in ready[0]: + out = os.read(adb.stdout.fileno(), 4096) + if len(out) > 0: + keepReading = True + data.append(out) + + if result is not None and not keepReading: + break + + result = adb.poll() + + if result == 0: + if expect_trace: + data = ''.join(data) + + # Collapse CRLFs that are added by adb shell. + if data.startswith('\r\n'): + data = data.replace('\r\n', '\n') + + # Skip the initial newline. + data = data[1:] + + if not data: + print >> sys.stderr, ('No data was captured. Output file was not ' + + 'written.') + sys.exit(1) + else: + # Indicate to the user that the data download is complete. + print " done\n" + + # Extract the thread list dumped by ps. + threads = {} + if options.fix_threads: + parts = data.split('USER PID PPID VSIZE RSS WCHAN PC NAME', 1) + if len(parts) == 2: + data = parts[0] + for line in parts[1].splitlines(): + cols = line.split(None, 8) + if len(cols) == 9: + tid = int(cols[1]) + name = cols[8] + threads[tid] = name + + # Decompress and preprocess the data. + out = zlib.decompress(data) + if options.fix_threads: + def repl(m): + tid = int(m.group(2)) + if tid > 0: + name = threads.get(tid) + if name is None: + name = m.group(1) + if name == '<...>': + name = '<' + str(tid) + '>' + threads[tid] = name + return name + '-' + m.group(2) + else: + return m.group(0) + out = re.sub(r'^\s*(\S+)-(\d+)', repl, out, flags=re.MULTILINE) + + html_prefix = read_asset(script_dir, 'prefix.html') + html_suffix = read_asset(script_dir, 'suffix.html') + + html_file = open(html_filename, 'w') + html_file.write(html_prefix % (css, js, templates)) + html_out = out.replace('\n', '\\n\\\n') + html_file.write(html_out) + html_file.write(html_suffix) + html_file.close() + print "\n wrote file://%s\n" % os.path.abspath(options.output_file) + + else: # i.e. result != 0 + print >> sys.stderr, 'adb returned error code %d' % result + sys.exit(1) + +def read_asset(src_dir, filename): + return open(os.path.join(src_dir, filename)).read() + +def get_assets(src_dir, build_dir): + sys.path.append(build_dir) + gen = __import__('generate_standalone_timeline_view', {}, {}) + parse_deps = __import__('parse_deps', {}, {}) + gen_templates = __import__('generate_template_contents', {}, {}) + filenames = gen._get_input_filenames() + load_sequence = parse_deps.calc_load_sequence(filenames, src_dir) + + js_files = [] + js_flattenizer = "window.FLATTENED = {};\n" + js_flattenizer += "window.FLATTENED_RAW_SCRIPTS = {};\n" + css_files = [] + + for module in load_sequence: + js_files.append(os.path.relpath(module.filename, src_dir)) + js_flattenizer += "window.FLATTENED['%s'] = true;\n" % module.name + for dependent_raw_script_name in module.dependent_raw_script_names: + js_flattenizer += ( + "window.FLATTENED_RAW_SCRIPTS['%s'] = true;\n" % + dependent_raw_script_name) + + for style_sheet in module.style_sheets: + css_files.append(os.path.relpath(style_sheet.filename, src_dir)) + + templates = gen_templates.generate_templates() + + sys.path.pop() + + return (js_files, js_flattenizer, css_files, templates) + + +compiled_css_tag = """""" +compiled_js_tag = """""" + +linked_css_tag = """""" +linked_js_tag = """""" + +if __name__ == '__main__': + main() diff --git a/love2dToAPK/tools/tools/android-win/platforms/android-19/android.jar b/love2dToAPK/tools/tools/android-win/platforms/android-19/android.jar new file mode 100644 index 0000000..ca5ceca Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/platforms/android-19/android.jar differ diff --git a/love2dToAPK/tools/tools/android-win/platforms/android-19/build.prop b/love2dToAPK/tools/tools/android-win/platforms/android-19/build.prop new file mode 100644 index 0000000..5be5872 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/platforms/android-19/build.prop @@ -0,0 +1,54 @@ +# begin build properties +# autogenerated by buildinfo.sh +ro.build.id=KK +ro.build.display.id=sdk-eng 4.4.2 KK 1456859 test-keys +ro.build.version.incremental=1456859 +ro.build.version.sdk=19 +ro.build.version.codename=REL +ro.build.version.release=4.4.2 +ro.build.date=Mon Sep 22 20:54:27 UTC 2014 +ro.build.date.utc=1411419267 +ro.build.type=eng +ro.build.tags=test-keys +ro.product.model=sdk +ro.product.name=sdk +ro.product.board= +ro.product.cpu.abi=armeabi-v7a +ro.product.cpu.abi2=armeabi +ro.product.locale.language=en +ro.product.locale.region=US +ro.wifi.channels= +ro.board.platform= +# ro.build.product is obsolete; use ro.product.device +# Do not try to parse ro.build.description or .fingerprint +ro.build.description=sdk-eng 4.4.2 KK 1456859 test-keys +ro.build.fingerprint=generic/sdk/generic:4.4.2/KK/1456859:eng/test-keys +ro.build.characteristics=default +# end build properties +# +# from build/target/board/generic/system.prop +# +# +# system.prop for generic sdk +# + +rild.libpath=/system/lib/libreference-ril.so +rild.libargs=-d /dev/ttyS0 + +# +# ADDITIONAL_BUILD_PROPERTIES +# +ro.config.notification_sound=OnTheHunt.ogg +ro.config.alarm_alert=Alarm_Classic.ogg +persist.sys.dalvik.vm.lib=libdvm.so +ro.kernel.android.checkjni=1 +xmpp.auto-presence=true +ro.config.nocheckin=yes +net.bt.name=Android +dalvik.vm.stack-trace-file=/data/anr/traces.txt +ro.build.user=generic +ro.build.host=generic +ro.product.brand=generic +ro.product.manufacturer=generic +ro.product.device=generic +ro.build.product=generic diff --git a/love2dToAPK/tools/tools/android-win/platforms/android-19/framework.aidl b/love2dToAPK/tools/tools/android-win/platforms/android-19/framework.aidl new file mode 100644 index 0000000..9bccbe1 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/platforms/android-19/framework.aidl @@ -0,0 +1,57 @@ +interface android.accounts.IAccountManager; +interface android.accounts.IAccountManagerResponse; +interface android.accounts.IAccountAuthenticator; +interface android.accounts.IAccountAuthenticatorResponse; +parcelable android.app.Notification; +parcelable android.app.PendingIntent; +parcelable android.appwidget.AppWidgetProviderInfo; +parcelable android.bluetooth.BluetoothDevice; +parcelable android.bluetooth.BluetoothHealthAppConfiguration; +parcelable android.content.ComponentName; +parcelable android.content.ContentValues; +parcelable android.content.Intent; +parcelable android.content.IntentSender; +parcelable android.content.PeriodicSync; +parcelable android.content.SyncRequest; +parcelable android.content.SyncStats; +parcelable android.content.res.Configuration; +parcelable android.database.CursorWindow; +parcelable android.hardware.location.GeofenceHardwareRequestParcelable; +parcelable android.net.Uri; +parcelable android.nfc.NdefMessage; +parcelable android.nfc.NdefRecord; +parcelable android.nfc.Tag; +parcelable android.os.Bundle; +parcelable android.os.DropBoxManager.Entry; +parcelable android.os.ParcelFileDescriptor; +parcelable android.os.ParcelUuid; +parcelable android.view.KeyEvent; +parcelable android.view.MotionEvent; +parcelable android.view.Surface; +parcelable android.view.WindowManager.LayoutParams; +parcelable android.widget.RemoteViews; +interface com.android.internal.textservice.ISpellCheckerService; +interface com.android.internal.textservice.ISpellCheckerSession; +interface com.android.internal.textservice.ISpellCheckerSessionListener; +interface com.android.internal.textservice.ITextServicesManager; +interface com.android.internal.textservice.ITextServicesSessionListener; +interface com.android.internal.view.IInputContext; +interface com.android.internal.view.IInputMethod; +interface com.android.internal.view.IInputMethodClient; +interface com.android.internal.view.IInputMethodManager; +interface com.android.internal.view.IInputMethodSession; +parcelable android.graphics.Bitmap; +parcelable android.graphics.Rect; +parcelable android.graphics.Region; +parcelable android.location.Criteria; +parcelable android.location.Geofence; +parcelable android.location.Location; +parcelable android.location.LocationRequest; +parcelable android.location.FusedBatchOptions; +parcelable com.android.internal.location.ProviderProperties; +parcelable com.android.internal.location.ProviderRequest; +parcelable android.telephony.ServiceState; +interface com.android.internal.telephony.IPhoneSubInfo; +interface com.android.internal.telephony.ITelephony; +parcelable android.net.wifi.BatchedScanSettings; +parcelable android.net.wifi.BatchedScanResult; diff --git a/love2dToAPK/tools/tools/android-win/platforms/android-19/sdk.properties b/love2dToAPK/tools/tools/android-win/platforms/android-19/sdk.properties new file mode 100644 index 0000000..c22e3e3 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/platforms/android-19/sdk.properties @@ -0,0 +1,5 @@ +# SDK properties +# This file is copied in the root folder of each platform component. +# If it used by various tools to figure out what the platform can do. +sdk.ant.templates.revision=1 +sdk.skin.default=WVGA800 \ No newline at end of file diff --git a/love2dToAPK/tools/tools/android-win/platforms/android-19/source.properties b/love2dToAPK/tools/tools/android-win/platforms/android-19/source.properties new file mode 100644 index 0000000..3dcb595 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/platforms/android-19/source.properties @@ -0,0 +1,12 @@ +### Android Tool: Source of this archive. +#Sat Feb 28 13:51:16 CET 2015 +AndroidVersion.ApiLevel=19 +Layoutlib.Api=12 +Layoutlib.Revision=1 +Pkg.Desc=Android SDK Platform 4.4.2 +Pkg.License=To get started with the Android SDK, you must agree to the following terms and conditions.\n\nThis is the Android SDK License Agreement (the "License Agreement").\n\n1. Introduction\n\n1.1 The Android SDK (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and SDK library files and tools , if and when they are made available) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.\n\n1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL\: http\://source.android.com/, as updated from time to time.\n\n1.3 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.\n\n2. Accepting the License Agreement\n\n2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.\n\n2.2 By clicking to accept and/or using the SDK, you hereby agree to the terms of the License Agreement.\n\n2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries including the country in which you are resident or from which you use the SDK.\n\n2.4 If you will use the SDK internally within your company or organization you agree to be bound by the License Agreement on behalf of your employer or other entity, and you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.\n\n3. SDK License from Google\n\n3.1 Subject to the terms of the License Agreement, Google grants you a royalty-free, non-assignable, non-exclusive, non-sublicensable, limited, revocable license to use the SDK, personally or internally within your company or organization, solely to develop and distribute applications to run on the Android platform.\n\n3.2 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.\n\n3.3 You may not use the SDK for any purpose not expressly permitted by the License Agreement. Except to the extent required by applicable third party licenses, you may not\: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.\n\n3.4 You agree that you will not take any actions that may cause or result in the fragmentation of Android, including but not limited to distributing, participating in the creation of, or promoting in any way a software development kit derived from the SDK.\n\n3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement. You agree to remain a licensee in good standing in regard to such open source software licenses under all the rights granted and to refrain from any actions that may terminate, suspend, or breach such rights.\n\n3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.\n\n3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.\n\n3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.\n\n4. Use of the SDK by You\n\n4.1 Google agrees that nothing in the License Agreement gives Google any right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.\n\n4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement, and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).\n\n4.3 You agree that if you use the SDK to develop applications, you will protect the privacy and legal rights of users. If users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If users provide you with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, each user has given you permission to do so.\n\n4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of Google or any third party.\n\n4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.\n\n4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.\n\n5. Your Developer Credentials\n\n5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.\n\n6. Privacy and Information\n\n6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.\n\n6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy located at http\://www.google.com/policies/privacy/.\n\n7. Third Party Applications\n\n7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.\n\n7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.\n\n7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party.\n\n8. Using Google APIs\n\n8.1 Google APIs\n\n8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.\n\n8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.\n\n9. Terminating the License Agreement\n\n9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.\n\n9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.\n\n9.3 Google may at any time, terminate the License Agreement, with or without cause, upon notice to you.\n\n9.4 The License Agreement will automatically terminate without notice or other action when Google ceases to provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service.\n\n9.5 When the License Agreement is terminated, the license granted to you in the License Agreement will terminate, you will immediately cease all use of the SDK, and the provisions of paragraphs 10, 11, 12 and 14 shall survive indefinitely.\n\n10. DISCLAIMERS\n\n10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.\n\n10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE. WITHOUT LIMITING THE FOREGOING, YOU UNDERSTAND THAT THE SDK MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.\n\n10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.\n\n11. LIMITATION OF LIABILITY\n\n11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.\n\n12. Indemnification\n\n12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys\u2019 fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any Intellectual Property Rights of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you of the License Agreement.\n\n13. Changes to the License Agreement\n\n13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.\n\n14. General Legal Terms\n\n14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.\n\n14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.\n\n14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.\n\n14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.\n\n14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.\n\n14.6 The License Agreement may not be assigned or transferred by you without the prior written approval of Google, and any attempted assignment without such approval will be void. You shall not delegate your responsibilities or obligations under the License Agreement without the prior written approval of Google.\n\n14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.\n\nJune 2014.\n +Pkg.LicenseRef=android-sdk-license +Pkg.Revision=4 +Pkg.SourceUrl=https\://dl-ssl.google.com/android/repository/repository-10.xml +Platform.MinToolsRev=22 +Platform.Version=4.4.2 diff --git a/love2dToAPK/tools/tools/android-win/platforms/android-19/uiautomator.jar b/love2dToAPK/tools/tools/android-win/platforms/android-19/uiautomator.jar new file mode 100644 index 0000000..24a9da5 Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/platforms/android-19/uiautomator.jar differ diff --git a/love2dToAPK/tools/tools/android-win/tools/NOTICE.txt b/love2dToAPK/tools/tools/android-win/tools/NOTICE.txt new file mode 100644 index 0000000..2a810ff --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/tools/NOTICE.txt @@ -0,0 +1,15749 @@ +============================================================ +Notices for file(s): +emulator.exe +qemu/windows-x86/qemu-system-x86_64.exe +qemu/windows-x86/qemu-system-aarch64.exe +qemu/windows-x86/qemu-system-mips64el.exe +qemu/windows-x86_64/qemu-system-x86_64.exe +qemu/windows-x86_64/qemu-system-aarch64.exe +qemu/windows-x86_64/qemu-system-mips64el.exe +lib/libGLES_CM_translator.dll +lib/pc-bios/bios.bin +lib/pc-bios/vgabios-cirrus.bin +lib/libemugl_test_shared_library.dll +lib/libEGL_translator.dll +lib/libGLES_V2_translator.dll +lib/gles_mesa/opengl32.dll +lib/gles_mesa/osmesa.dll +lib/libOpenglRender.dll +lib/pc-bios/bios.bin +lib/pc-bios/vgabios-cirrus.bin +emulator64-ranchu-arm64.exe +emulator64-ranchu-mips64.exe +emulator-ranchu-arm64.exe +emulator-ranchu-mips64.exe +emulator-arm.exe +emulator-mips.exe +emulator-x86.exe +------------------------------------------------------------ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. + +============================================================ +Notices for file(s): +mksdcard.exe +------------------------------------------------------------ + + Copyright (c) 2005-2014, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +ant/NOTICE +ant/build.xml +ant/uibuild.xml +------------------------------------------------------------ + + Copyright (c) 2005-2014, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +apps/SdkController/.project +apps/SdkController/.classpath +apps/SdkController/bin/SdkControllerApp.apk +apps/SdkController/NOTICE +apps/SdkController/assets/intro_help.html +apps/SdkController/project.properties +apps/SdkController/AndroidManifest.xml +apps/SdkController/res/drawable-mdpi/ic_launcher.png +apps/SdkController/res/drawable-ldpi/ic_launcher.png +apps/SdkController/res/layout/multitouch.xml +apps/SdkController/res/layout/main.xml +apps/SdkController/res/layout/sensors.xml +apps/SdkController/res/layout/sensor_row.xml +apps/SdkController/res/values-v11/styles_v11.xml +apps/SdkController/res/drawable-hdpi/ic_launcher.png +apps/SdkController/res/drawable-xhdpi/ic_launcher.png +apps/SdkController/res/layout-land/sensors.xml +apps/SdkController/res/values/strings.xml +apps/SdkController/res/values/styles.xml +apps/SdkController/.settings/org.eclipse.jdt.core.prefs +apps/SdkController/proguard-project.txt +apps/SdkController/src/com/android/tools/sdkcontroller/views/MultiTouchView.java +apps/SdkController/src/com/android/tools/sdkcontroller/activities/MultiTouchActivity.java +apps/SdkController/src/com/android/tools/sdkcontroller/activities/MainActivity.java +apps/SdkController/src/com/android/tools/sdkcontroller/activities/SensorActivity.java +apps/SdkController/src/com/android/tools/sdkcontroller/activities/BaseBindingActivity.java +apps/SdkController/src/com/android/tools/sdkcontroller/service/ControllerService.java +apps/SdkController/src/com/android/tools/sdkcontroller/utils/ApiHelper.java +apps/SdkController/src/com/android/tools/sdkcontroller/utils/ApiHelper_11.java +apps/SdkController/src/com/android/tools/sdkcontroller/handlers/MultiTouchChannel.java +apps/SdkController/src/com/android/tools/sdkcontroller/handlers/SensorChannel.java +apps/SdkController/src/com/android/tools/sdkcontroller/lib/ProtocolConstants.java +apps/SdkController/src/com/android/tools/sdkcontroller/lib/Connection.java +apps/SdkController/src/com/android/tools/sdkcontroller/lib/Channel.java +apps/SdkController/src/com/android/tools/sdkcontroller/lib/Socket.java +apps/SdkController/Implementation.txt +------------------------------------------------------------ + + Copyright (c) 2005-2014, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/devices.xml +lib/android.el +support/typos-en.txt +support/typos-es.txt +support/typos-pt.txt +support/typos-it.txt +support/typos-de.txt +support/typos-tr.txt +support/typos-nb.txt +support/typos-hu.txt +------------------------------------------------------------ + + Copyright (c) 2005-2014, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/emulator/snapshots.img +lib/emulator/skins/dynamic/select.png +lib/emulator/skins/dynamic/arrow_down.png +lib/emulator/skins/dynamic/keyboard_on.png +lib/emulator/skins/dynamic/arrow_left.png +lib/emulator/skins/dynamic/arrow_up.png +lib/emulator/skins/dynamic/layout +lib/emulator/skins/dynamic/hwkeys_on.png +lib/emulator/skins/dynamic/arrow_right.png +lib/emulator/skins/dynamic/button.png +lib/emulator/skins/dynamic/hwkeys_off.png +lib/emulator/skins/dynamic/basic.png +lib/emulator/skins/dynamic/dpad_on.png +lib/emulator/skins/dynamic/keyboard_off.png +lib/emulator/skins/dynamic/dpad_off.png +------------------------------------------------------------ + + Copyright (c) 2005-2014, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/build.template +lib/uibuild.template +lib/build_gradle.template +------------------------------------------------------------ + + Copyright (c) 2005-2014, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/x86/swt.jar +------------------------------------------------------------ + + Eclipse Public License - v 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE +PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF +THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +*1. DEFINITIONS* + +"Contribution" means: + +a) in the case of the initial Contributor, the initial code and +documentation distributed under this Agreement, and + +b) in the case of each subsequent Contributor: + +i) changes to the Program, and + +ii) additions to the Program; + +where such changes and/or additions to the Program originate from and +are distributed by that particular Contributor. A Contribution +'originates' from a Contributor if it was added to the Program by such +Contributor itself or anyone acting on such Contributor's behalf. +Contributions do not include additions to the Program which: (i) are +separate modules of software distributed in conjunction with the Program +under their own license agreement, and (ii) are not derivative works of +the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents" mean patent claims licensable by a Contributor which +are necessarily infringed by the use or sale of its Contribution alone +or when combined with the Program. + +"Program" means the Contributions distributed in accordance with this +Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, +including all Contributors. + +*2. GRANT OF RIGHTS* + +a) Subject to the terms of this Agreement, each Contributor hereby +grants Recipient a non-exclusive, worldwide, royalty-free copyright +license to reproduce, prepare derivative works of, publicly display, +publicly perform, distribute and sublicense the Contribution of such +Contributor, if any, and such derivative works, in source code and +object code form. + +b) Subject to the terms of this Agreement, each Contributor hereby +grants Recipient a non-exclusive, worldwide, royalty-free patent license +under Licensed Patents to make, use, sell, offer to sell, import and +otherwise transfer the Contribution of such Contributor, if any, in +source code and object code form. This patent license shall apply to the +combination of the Contribution and the Program if, at the time the +Contribution is added by the Contributor, such addition of the +Contribution causes such combination to be covered by the Licensed +Patents. The patent license shall not apply to any other combinations +which include the Contribution. No hardware per se is licensed hereunder. + +c) Recipient understands that although each Contributor grants the +licenses to its Contributions set forth herein, no assurances are +provided by any Contributor that the Program does not infringe the +patent or other intellectual property rights of any other entity. Each +Contributor disclaims any liability to Recipient for claims brought by +any other entity based on infringement of intellectual property rights +or otherwise. As a condition to exercising the rights and licenses +granted hereunder, each Recipient hereby assumes sole responsibility to +secure any other intellectual property rights needed, if any. For +example, if a third party patent license is required to allow Recipient +to distribute the Program, it is Recipient's responsibility to acquire +that license before distributing the Program. + +d) Each Contributor represents that to its knowledge it has sufficient +copyright rights in its Contribution, if any, to grant the copyright +license set forth in this Agreement. + +*3. REQUIREMENTS* + +A Contributor may choose to distribute the Program in object code form +under its own license agreement, provided that: + +a) it complies with the terms and conditions of this Agreement; and + +b) its license agreement: + +i) effectively disclaims on behalf of all Contributors all warranties +and conditions, express and implied, including warranties or conditions +of title and non-infringement, and implied warranties or conditions of +merchantability and fitness for a particular purpose; + +ii) effectively excludes on behalf of all Contributors all liability for +damages, including direct, indirect, special, incidental and +consequential damages, such as lost profits; + +iii) states that any provisions which differ from this Agreement are +offered by that Contributor alone and not by any other party; and + +iv) states that source code for the Program is available from such +Contributor, and informs licensees how to obtain it in a reasonable +manner on or through a medium customarily used for software exchange. + +When the Program is made available in source code form: + +a) it must be made available under this Agreement; and + +b) a copy of this Agreement must be included with each copy of the Program. + +Contributors may not remove or alter any copyright notices contained +within the Program. + +Each Contributor must identify itself as the originator of its +Contribution, if any, in a manner that reasonably allows subsequent +Recipients to identify the originator of the Contribution. + +*4. COMMERCIAL DISTRIBUTION* + +Commercial distributors of software may accept certain responsibilities +with respect to end users, business partners and the like. While this +license is intended to facilitate the commercial use of the Program, the +Contributor who includes the Program in a commercial product offering +should do so in a manner which does not create potential liability for +other Contributors. Therefore, if a Contributor includes the Program in +a commercial product offering, such Contributor ("Commercial +Contributor") hereby agrees to defend and indemnify every other +Contributor ("Indemnified Contributor") against any losses, damages and +costs (collectively "Losses") arising from claims, lawsuits and other +legal actions brought by a third party against the Indemnified +Contributor to the extent caused by the acts or omissions of such +Commercial Contributor in connection with its distribution of the +Program in a commercial product offering. The obligations in this +section do not apply to any claims or Losses relating to any actual or +alleged intellectual property infringement. In order to qualify, an +Indemnified Contributor must: a) promptly notify the Commercial +Contributor in writing of such claim, and b) allow the Commercial +Contributor to control, and cooperate with the Commercial Contributor +in, the defense and any related settlement negotiations. The Indemnified +Contributor may participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those +performance claims and warranties, and if a court requires any other +Contributor to pay any damages as a result, the Commercial Contributor +must pay those damages. + +*5. NO WARRANTY* + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED +ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES +OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR +A PARTICULAR PURPOSE. Each Recipient is solely responsible for +determining the appropriateness of using and distributing the Program +and assumes all risks associated with its exercise of rights under this +Agreement , including but not limited to the risks and costs of program +errors, compliance with applicable laws, damage to or loss of data, +programs or equipment, and unavailability or interruption of operations. + +*6. DISCLAIMER OF LIABILITY* + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR +ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING +WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR +DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED +HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +*7. GENERAL* + +If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further action +by the parties hereto, such provision shall be reformed to the minimum +extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity (including +a cross-claim or counterclaim in a lawsuit) alleging that the Program +itself (excluding combinations of the Program with other software or +hardware) infringes such Recipient's patent(s), then such Recipient's +rights granted under Section 2(b) shall terminate as of the date such +litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails +to comply with any of the material terms or conditions of this Agreement +and does not cure such failure in a reasonable period of time after +becoming aware of such noncompliance. If all Recipient's rights under +this Agreement terminate, Recipient agrees to cease use and distribution +of the Program as soon as reasonably practicable. However, Recipient's +obligations under this Agreement and any licenses granted by Recipient +relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, +but in order to avoid inconsistency the Agreement is copyrighted and may +only be modified in the following manner. The Agreement Steward reserves +the right to publish new versions (including revisions) of this +Agreement from time to time. No one other than the Agreement Steward has +the right to modify this Agreement. The Eclipse Foundation is the +initial Agreement Steward. The Eclipse Foundation may assign the +responsibility to serve as the Agreement Steward to a suitable separate +entity. Each new version of the Agreement will be given a distinguishing +version number. The Program (including Contributions) may always be +distributed subject to the version of the Agreement under which it was +received. In addition, after a new version of the Agreement is +published, Contributor may elect to distribute the Program (including +its Contributions) under the new version. Except as expressly stated in +Sections 2(a) and 2(b) above, Recipient receives no rights or licenses +to the intellectual property of any Contributor under this Agreement, +whether expressly, by implication, estoppel or otherwise. All rights in +the Program not expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the +intellectual property laws of the United States of America. No party to +this Agreement will bring a legal action under this Agreement more than +one year after the cause of action arose. Each party waives its rights +to a jury trial in any resulting litigation. + +============================================================ +Notices for file(s): +lib/x86_64/swt.jar +------------------------------------------------------------ + + Eclipse Public License - v 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE +PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF +THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +*1. DEFINITIONS* + +"Contribution" means: + +a) in the case of the initial Contributor, the initial code and +documentation distributed under this Agreement, and + +b) in the case of each subsequent Contributor: + +i) changes to the Program, and + +ii) additions to the Program; + +where such changes and/or additions to the Program originate from and +are distributed by that particular Contributor. A Contribution +'originates' from a Contributor if it was added to the Program by such +Contributor itself or anyone acting on such Contributor's behalf. +Contributions do not include additions to the Program which: (i) are +separate modules of software distributed in conjunction with the Program +under their own license agreement, and (ii) are not derivative works of +the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents" mean patent claims licensable by a Contributor which +are necessarily infringed by the use or sale of its Contribution alone +or when combined with the Program. + +"Program" means the Contributions distributed in accordance with this +Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, +including all Contributors. + +*2. GRANT OF RIGHTS* + +a) Subject to the terms of this Agreement, each Contributor hereby +grants Recipient a non-exclusive, worldwide, royalty-free copyright +license to reproduce, prepare derivative works of, publicly display, +publicly perform, distribute and sublicense the Contribution of such +Contributor, if any, and such derivative works, in source code and +object code form. + +b) Subject to the terms of this Agreement, each Contributor hereby +grants Recipient a non-exclusive, worldwide, royalty-free patent license +under Licensed Patents to make, use, sell, offer to sell, import and +otherwise transfer the Contribution of such Contributor, if any, in +source code and object code form. This patent license shall apply to the +combination of the Contribution and the Program if, at the time the +Contribution is added by the Contributor, such addition of the +Contribution causes such combination to be covered by the Licensed +Patents. The patent license shall not apply to any other combinations +which include the Contribution. No hardware per se is licensed hereunder. + +c) Recipient understands that although each Contributor grants the +licenses to its Contributions set forth herein, no assurances are +provided by any Contributor that the Program does not infringe the +patent or other intellectual property rights of any other entity. Each +Contributor disclaims any liability to Recipient for claims brought by +any other entity based on infringement of intellectual property rights +or otherwise. As a condition to exercising the rights and licenses +granted hereunder, each Recipient hereby assumes sole responsibility to +secure any other intellectual property rights needed, if any. For +example, if a third party patent license is required to allow Recipient +to distribute the Program, it is Recipient's responsibility to acquire +that license before distributing the Program. + +d) Each Contributor represents that to its knowledge it has sufficient +copyright rights in its Contribution, if any, to grant the copyright +license set forth in this Agreement. + +*3. REQUIREMENTS* + +A Contributor may choose to distribute the Program in object code form +under its own license agreement, provided that: + +a) it complies with the terms and conditions of this Agreement; and + +b) its license agreement: + +i) effectively disclaims on behalf of all Contributors all warranties +and conditions, express and implied, including warranties or conditions +of title and non-infringement, and implied warranties or conditions of +merchantability and fitness for a particular purpose; + +ii) effectively excludes on behalf of all Contributors all liability for +damages, including direct, indirect, special, incidental and +consequential damages, such as lost profits; + +iii) states that any provisions which differ from this Agreement are +offered by that Contributor alone and not by any other party; and + +iv) states that source code for the Program is available from such +Contributor, and informs licensees how to obtain it in a reasonable +manner on or through a medium customarily used for software exchange. + +When the Program is made available in source code form: + +a) it must be made available under this Agreement; and + +b) a copy of this Agreement must be included with each copy of the Program. + +Contributors may not remove or alter any copyright notices contained +within the Program. + +Each Contributor must identify itself as the originator of its +Contribution, if any, in a manner that reasonably allows subsequent +Recipients to identify the originator of the Contribution. + +*4. COMMERCIAL DISTRIBUTION* + +Commercial distributors of software may accept certain responsibilities +with respect to end users, business partners and the like. While this +license is intended to facilitate the commercial use of the Program, the +Contributor who includes the Program in a commercial product offering +should do so in a manner which does not create potential liability for +other Contributors. Therefore, if a Contributor includes the Program in +a commercial product offering, such Contributor ("Commercial +Contributor") hereby agrees to defend and indemnify every other +Contributor ("Indemnified Contributor") against any losses, damages and +costs (collectively "Losses") arising from claims, lawsuits and other +legal actions brought by a third party against the Indemnified +Contributor to the extent caused by the acts or omissions of such +Commercial Contributor in connection with its distribution of the +Program in a commercial product offering. The obligations in this +section do not apply to any claims or Losses relating to any actual or +alleged intellectual property infringement. In order to qualify, an +Indemnified Contributor must: a) promptly notify the Commercial +Contributor in writing of such claim, and b) allow the Commercial +Contributor to control, and cooperate with the Commercial Contributor +in, the defense and any related settlement negotiations. The Indemnified +Contributor may participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those +performance claims and warranties, and if a court requires any other +Contributor to pay any damages as a result, the Commercial Contributor +must pay those damages. + +*5. NO WARRANTY* + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED +ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES +OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR +A PARTICULAR PURPOSE. Each Recipient is solely responsible for +determining the appropriateness of using and distributing the Program +and assumes all risks associated with its exercise of rights under this +Agreement , including but not limited to the risks and costs of program +errors, compliance with applicable laws, damage to or loss of data, +programs or equipment, and unavailability or interruption of operations. + +*6. DISCLAIMER OF LIABILITY* + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR +ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING +WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR +DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED +HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +*7. GENERAL* + +If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further action +by the parties hereto, such provision shall be reformed to the minimum +extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity (including +a cross-claim or counterclaim in a lawsuit) alleging that the Program +itself (excluding combinations of the Program with other software or +hardware) infringes such Recipient's patent(s), then such Recipient's +rights granted under Section 2(b) shall terminate as of the date such +litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails +to comply with any of the material terms or conditions of this Agreement +and does not cure such failure in a reasonable period of time after +becoming aware of such noncompliance. If all Recipient's rights under +this Agreement terminate, Recipient agrees to cease use and distribution +of the Program as soon as reasonably practicable. However, Recipient's +obligations under this Agreement and any licenses granted by Recipient +relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, +but in order to avoid inconsistency the Agreement is copyrighted and may +only be modified in the following manner. The Agreement Steward reserves +the right to publish new versions (including revisions) of this +Agreement from time to time. No one other than the Agreement Steward has +the right to modify this Agreement. The Eclipse Foundation is the +initial Agreement Steward. The Eclipse Foundation may assign the +responsibility to serve as the Agreement Steward to a suitable separate +entity. Each new version of the Agreement will be given a distinguishing +version number. The Program (including Contributions) may always be +distributed subject to the version of the Agreement under which it was +received. In addition, after a new version of the Agreement is +published, Contributor may elect to distribute the Program (including +its Contributions) under the new version. Except as expressly stated in +Sections 2(a) and 2(b) above, Recipient receives no rights or licenses +to the intellectual property of any Contributor under this Agreement, +whether expressly, by implication, estoppel or otherwise. All rights in +the Program not expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the +intellectual property laws of the United States of America. No party to +this Agreement will bring a legal action under this Agreement more than +one year after the cause of action arose. Each party waives its rights +to a jury trial in any resulting litigation. + +============================================================ +Notices for file(s): +lib/annotations.jar +------------------------------------------------------------ + + Copyright (c) 2005-2013, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/ant-tasks.jar +------------------------------------------------------------ + + Copyright (c) 2005-2008, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/archquery.jar +------------------------------------------------------------ + + Copyright (c) 2005-2008, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/asset-studio.jar +------------------------------------------------------------ + + Copyright (c) 2005-2013, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/builder-model.jar +------------------------------------------------------------ + + Copyright (c) 2005-2013, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/common.jar +------------------------------------------------------------ + + Copyright (c) 2005-2013, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/ddmlib.jar +------------------------------------------------------------ + + Copyright (c) 2005-2008, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +draw9patch.bat +lib/draw9patch.jar +------------------------------------------------------------ + + Copyright (c) 2005-2008, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/dvlib.jar +------------------------------------------------------------ + + Copyright (c) 2005-2013, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +jobb.bat +lib/jobb.jar +------------------------------------------------------------ +Portions of this code: +------------------------------------------------------------------------------- +Copyright (c) 2000 The Legion Of The Bouncy Castle +(http://www.bouncycastle.org) + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the "Software") +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense +and/or sell copies of the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +------------------------------------------------------------------------------- +Twofish is uncopyrighted and license-free, and was created and analyzed by: +Bruce Schneier - John Kelsey - Doug Whiting +David Wagner - Chris Hall - Niels Ferguson +------------------------------------------------------------------------------- +Cryptix General License + +Copyright (c) 1995-2005 The Cryptix Foundation Limited. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + 1. Redistributions of source code must retain the copyright notice, + this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. +------------------------------------------------------------------------------- +All other code is: + +Copyright (C) 2012 The Android Open Source Project + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +============================================================ +Notices for file(s): +lib/layoutlib-api.jar +------------------------------------------------------------ + + Copyright (c) 2005-2008, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lint.bat +lib/lint.jar +------------------------------------------------------------ + + Copyright (c) 2011, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/lint-api.jar +------------------------------------------------------------ + + Copyright (c) 2011, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/lint-checks.jar +------------------------------------------------------------ + + Copyright (c) 2011, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/lint-tests.jar +------------------------------------------------------------ + + Copyright (c) 2011, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/manifest-merger.jar +------------------------------------------------------------ + + Copyright (c) 2011, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/ninepatch.jar +------------------------------------------------------------ + + Copyright (c) 2005-2008, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/rule-api.jar +------------------------------------------------------------ + + Copyright (c) 2011, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/screenshot2.jar +------------------------------------------------------------ + + Copyright (c) 2005-2008, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/sdk-common.jar +------------------------------------------------------------ + + Copyright (c) 2005-2008, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/sdklib.jar +------------------------------------------------------------ + + Copyright (c) 2005-2008, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +templates/projects/NewAndroidLibrary/template.xml +templates/projects/NewAndroidLibrary/recipe.xml.ftl +templates/projects/NewAndroidLibrary/template_new_project.png +templates/projects/NewAndroidLibrary/globals.xml.ftl +templates/projects/NewAndroidLibrary/root/res/drawable-mdpi/ic_launcher.png +templates/projects/NewAndroidLibrary/root/res/values-v14/styles_ics.xml.ftl +templates/projects/NewAndroidLibrary/root/res/values-v11/styles_hc.xml.ftl +templates/projects/NewAndroidLibrary/root/res/drawable-hdpi/ic_launcher.png +templates/projects/NewAndroidLibrary/root/res/drawable-xhdpi/ic_launcher.png +templates/projects/NewAndroidLibrary/root/res/values/styles.xml.ftl +templates/projects/NewAndroidLibrary/root/res/values/strings.xml.ftl +templates/projects/NewAndroidLibrary/root/settings.gradle.ftl +templates/projects/NewAndroidLibrary/root/AndroidManifest.xml.ftl +templates/projects/NewAndroidLibrary/root/build.gradle.ftl +templates/projects/NewJavaLibrary/template.xml +templates/projects/NewJavaLibrary/recipe.xml.ftl +templates/projects/NewJavaLibrary/template_new_project.png +templates/projects/NewJavaLibrary/globals.xml.ftl +templates/projects/NewJavaLibrary/root/settings.gradle.ftl +templates/projects/NewJavaLibrary/root/src/library_package/Placeholder.java.ftl +templates/projects/NewJavaLibrary/root/build.gradle.ftl +templates/projects/NewAndroidApplication/template.xml +templates/projects/NewAndroidApplication/recipe.xml.ftl +templates/projects/NewAndroidApplication/template_new_project.png +templates/projects/NewAndroidApplication/globals.xml.ftl +templates/projects/NewAndroidApplication/root/res/drawable-mdpi/ic_launcher.png +templates/projects/NewAndroidApplication/root/res/values-v14/styles_ics.xml.ftl +templates/projects/NewAndroidApplication/root/res/values-v11/styles_hc.xml.ftl +templates/projects/NewAndroidApplication/root/res/drawable-hdpi/ic_launcher.png +templates/projects/NewAndroidApplication/root/res/drawable-xhdpi/ic_launcher.png +templates/projects/NewAndroidApplication/root/res/values/styles.xml.ftl +templates/projects/NewAndroidApplication/root/res/values/strings.xml.ftl +templates/projects/NewAndroidApplication/root/settings.gradle.ftl +templates/projects/NewAndroidApplication/root/AndroidManifest.xml.ftl +templates/projects/NewAndroidApplication/root/build.gradle.ftl +templates/activities/LoginActivity/template.xml +templates/activities/LoginActivity/recipe.xml.ftl +templates/activities/LoginActivity/globals.xml.ftl +templates/activities/LoginActivity/template_login_activity.png +templates/activities/LoginActivity/root/res/layout/activity_login.xml.ftl +templates/activities/LoginActivity/root/res/values/dimens.xml +templates/activities/LoginActivity/root/res/values/strings.xml.ftl +templates/activities/LoginActivity/root/src/app_package/PlusBaseActivity.java.ftl +templates/activities/LoginActivity/root/src/app_package/LoginActivity.java.ftl +templates/activities/LoginActivity/root/AndroidManifest.xml.ftl +templates/activities/NavigationDrawerActivity/template.xml +templates/activities/NavigationDrawerActivity/template_blank_activity_drawer.png +templates/activities/NavigationDrawerActivity/recipe.xml.ftl +templates/activities/NavigationDrawerActivity/globals.xml.ftl +templates/activities/NavigationDrawerActivity/root/res/drawable-mdpi/drawer_shadow.9.png +templates/activities/NavigationDrawerActivity/root/res/drawable-mdpi/ic_drawer.png +templates/activities/NavigationDrawerActivity/root/res/drawable-xxhdpi/drawer_shadow.9.png +templates/activities/NavigationDrawerActivity/root/res/drawable-xxhdpi/ic_drawer.png +templates/activities/NavigationDrawerActivity/root/res/layout/fragment_simple.xml.ftl +templates/activities/NavigationDrawerActivity/root/res/layout/fragment_navigation_drawer.xml.ftl +templates/activities/NavigationDrawerActivity/root/res/layout/activity_drawer.xml.ftl +templates/activities/NavigationDrawerActivity/root/res/drawable-hdpi/drawer_shadow.9.png +templates/activities/NavigationDrawerActivity/root/res/drawable-hdpi/ic_drawer.png +templates/activities/NavigationDrawerActivity/root/res/drawable-xhdpi/drawer_shadow.9.png +templates/activities/NavigationDrawerActivity/root/res/drawable-xhdpi/ic_drawer.png +templates/activities/NavigationDrawerActivity/root/res/values-w820dp/dimens.xml +templates/activities/NavigationDrawerActivity/root/res/values/dimens.xml.ftl +templates/activities/NavigationDrawerActivity/root/res/values/strings.xml.ftl +templates/activities/NavigationDrawerActivity/root/res/menu/global.xml.ftl +templates/activities/NavigationDrawerActivity/root/res/menu/main.xml.ftl +templates/activities/NavigationDrawerActivity/root/src/app_package/NavigationDrawerFragment.java.ftl +templates/activities/NavigationDrawerActivity/root/src/app_package/include_options_menu.java.ftl +templates/activities/NavigationDrawerActivity/root/src/app_package/DrawerActivity.java.ftl +templates/activities/NavigationDrawerActivity/root/src/app_package/include_fragment.java.ftl +templates/activities/NavigationDrawerActivity/root/AndroidManifest.xml.ftl +templates/activities/NavigationDrawerActivity/root/build.gradle.ftl +templates/activities/EmptyActivity/template.xml +templates/activities/EmptyActivity/template_blank_activity.png +templates/activities/EmptyActivity/recipe.xml.ftl +templates/activities/EmptyActivity/globals.xml.ftl +templates/activities/EmptyActivity/root/res/layout/activity_simple.xml +templates/activities/EmptyActivity/root/res/values/strings.xml.ftl +templates/activities/EmptyActivity/root/src/app_package/SimpleActivity.java.ftl +templates/activities/EmptyActivity/root/AndroidManifest.xml.ftl +templates/activities/MasterDetailFlow/template.xml +templates/activities/MasterDetailFlow/template_master_detail.png +templates/activities/MasterDetailFlow/recipe.xml.ftl +templates/activities/MasterDetailFlow/globals.xml.ftl +templates/activities/MasterDetailFlow/root/res/values-sw600dp/refs.xml.ftl +templates/activities/MasterDetailFlow/root/res/layout/activity_content_twopane.xml.ftl +templates/activities/MasterDetailFlow/root/res/layout/activity_content_list.xml.ftl +templates/activities/MasterDetailFlow/root/res/layout/activity_content_detail.xml.ftl +templates/activities/MasterDetailFlow/root/res/layout/fragment_content_detail.xml.ftl +templates/activities/MasterDetailFlow/root/res/values-large/refs.xml.ftl +templates/activities/MasterDetailFlow/root/res/values/strings.xml.ftl +templates/activities/MasterDetailFlow/root/src/app_package/dummy/DummyContent.java.ftl +templates/activities/MasterDetailFlow/root/src/app_package/ContentDetailFragment.java.ftl +templates/activities/MasterDetailFlow/root/src/app_package/ContentListActivity.java.ftl +templates/activities/MasterDetailFlow/root/src/app_package/ContentDetailActivity.java.ftl +templates/activities/MasterDetailFlow/root/src/app_package/ContentListFragment.java.ftl +templates/activities/MasterDetailFlow/root/AndroidManifest.xml.ftl +templates/activities/BlankActivityWithFragment/template_blank_activity_fragment.png +templates/activities/BlankActivityWithFragment/template.xml +templates/activities/BlankActivityWithFragment/recipe.xml.ftl +templates/activities/BlankActivityWithFragment/globals.xml.ftl +templates/activities/BlankActivityWithFragment/root/res/layout/fragment_simple.xml.ftl +templates/activities/BlankActivityWithFragment/root/res/layout/activity_fragment_container.xml.ftl +templates/activities/BlankActivityWithFragment/root/res/values-w820dp/dimens.xml +templates/activities/BlankActivityWithFragment/root/res/values/dimens.xml.ftl +templates/activities/BlankActivityWithFragment/root/res/values/strings.xml.ftl +templates/activities/BlankActivityWithFragment/root/res/menu/main.xml.ftl +templates/activities/BlankActivityWithFragment/root/src/app_package/SimpleActivity.java.ftl +templates/activities/BlankActivityWithFragment/root/src/app_package/include_options_menu.java.ftl +templates/activities/BlankActivityWithFragment/root/src/app_package/include_fragment.java.ftl +templates/activities/BlankActivityWithFragment/root/AndroidManifest.xml.ftl +templates/activities/TabbedActivity/template.xml +templates/activities/TabbedActivity/template_blank_activity_tabs.png +templates/activities/TabbedActivity/template_blank_activity_dropdown.png +templates/activities/TabbedActivity/recipe.xml.ftl +templates/activities/TabbedActivity/globals.xml.ftl +templates/activities/TabbedActivity/template_blank_activity_pager.png +templates/activities/TabbedActivity/root/res/layout/fragment_simple.xml.ftl +templates/activities/TabbedActivity/root/res/layout/activity_fragment_container.xml.ftl +templates/activities/TabbedActivity/root/res/layout/activity_pager.xml.ftl +templates/activities/TabbedActivity/root/res/values-w820dp/dimens.xml +templates/activities/TabbedActivity/root/res/values/dimens.xml.ftl +templates/activities/TabbedActivity/root/res/values/strings.xml.ftl +templates/activities/TabbedActivity/root/res/menu/main.xml.ftl +templates/activities/TabbedActivity/root/src/app_package/include_options_menu.java.ftl +templates/activities/TabbedActivity/root/src/app_package/TabsAndPagerActivity.java.ftl +templates/activities/TabbedActivity/root/src/app_package/DropdownActivity.java.ftl +templates/activities/TabbedActivity/root/src/app_package/include_fragment.java.ftl +templates/activities/TabbedActivity/root/AndroidManifest.xml.ftl +templates/activities/SettingsActivity/template.xml +templates/activities/SettingsActivity/template_settings_activity.png +templates/activities/SettingsActivity/recipe.xml.ftl +templates/activities/SettingsActivity/globals.xml.ftl +templates/activities/SettingsActivity/root/res/xml/pref_data_sync.xml +templates/activities/SettingsActivity/root/res/xml/pref_general.xml +templates/activities/SettingsActivity/root/res/xml/pref_headers.xml.ftl +templates/activities/SettingsActivity/root/res/xml/pref_notification.xml +templates/activities/SettingsActivity/root/res/values/strings.xml.ftl +templates/activities/SettingsActivity/root/src/app_package/SettingsActivity.java.ftl +templates/activities/SettingsActivity/root/AndroidManifest.xml.ftl +templates/activities/FullscreenActivity/template.xml +templates/activities/FullscreenActivity/template_fullscreen_activity.png +templates/activities/FullscreenActivity/recipe.xml.ftl +templates/activities/FullscreenActivity/globals.xml.ftl +templates/activities/FullscreenActivity/root/res/layout/activity_fullscreen.xml.ftl +templates/activities/FullscreenActivity/root/res/values-v11/styles.xml +templates/activities/FullscreenActivity/root/res/values/styles.xml +templates/activities/FullscreenActivity/root/res/values/colors.xml +templates/activities/FullscreenActivity/root/res/values/strings.xml.ftl +templates/activities/FullscreenActivity/root/res/values/attrs.xml +templates/activities/FullscreenActivity/root/src/app_package/FullscreenActivity.java.ftl +templates/activities/FullscreenActivity/root/src/app_package/util/SystemUiHiderBase.java.ftl +templates/activities/FullscreenActivity/root/src/app_package/util/SystemUiHider.java.ftl +templates/activities/FullscreenActivity/root/src/app_package/util/SystemUiHiderHoneycomb.java.ftl +templates/activities/FullscreenActivity/root/AndroidManifest.xml.ftl +templates/activities/BlankActivity/template.xml +templates/activities/BlankActivity/template_blank_activity.png +templates/activities/BlankActivity/recipe.xml.ftl +templates/activities/BlankActivity/globals.xml.ftl +templates/activities/BlankActivity/root/res/layout/activity_simple.xml.ftl +templates/activities/BlankActivity/root/res/values-w820dp/dimens.xml +templates/activities/BlankActivity/root/res/values/dimens.xml.ftl +templates/activities/BlankActivity/root/res/values/strings.xml.ftl +templates/activities/BlankActivity/root/res/menu/main.xml.ftl +templates/activities/BlankActivity/root/src/app_package/SimpleActivity.java.ftl +templates/activities/BlankActivity/root/AndroidManifest.xml.ftl +templates/gradle/utils/dependencies.gradle.ftl +templates/gradle/wrapper/gradlew +templates/gradle/wrapper/gradlew.bat +templates/gradle/wrapper/gradle/wrapper/gradle-wrapper.jar +templates/gradle/wrapper/gradle/wrapper/gradle-wrapper.properties +templates/other/Notification/template.xml +templates/other/Notification/template_notification_text.png +templates/other/Notification/template_notification_picture_actions.png +templates/other/Notification/template_notification_list_actions.png +templates/other/Notification/template_notification_text_actions.png +templates/other/Notification/template_notification_none.png +templates/other/Notification/template_notification_picture.png +templates/other/Notification/recipe.xml.ftl +templates/other/Notification/globals.xml.ftl +templates/other/Notification/template_notification_list.png +templates/other/Notification/template_notification_none_actions.png +templates/other/Notification/root/res/drawable-mdpi/ic_action_stat_share.png +templates/other/Notification/root/res/drawable-mdpi/ic_action_stat_reply.png +templates/other/Notification/root/res/drawable-hdpi/ic_action_stat_share.png +templates/other/Notification/root/res/drawable-hdpi/ic_action_stat_reply.png +templates/other/Notification/root/res/drawable-xhdpi/ic_action_stat_share.png +templates/other/Notification/root/res/drawable-xhdpi/ic_action_stat_reply.png +templates/other/Notification/root/res/drawable-nodpi/example_picture_large.png +templates/other/Notification/root/res/drawable-nodpi/example_picture_small.png +templates/other/Notification/root/res/values/strings.xml.ftl +templates/other/Notification/root/src/app_package/NotificationHelper.java.ftl +templates/other/Notification/root/AndroidManifest.xml.ftl +templates/other/AidlFile/template.xml +templates/other/AidlFile/recipe.xml.ftl +templates/other/AidlFile/root/src/app_package/interface.aidl.ftl +templates/other/Service/template.xml +templates/other/Service/recipe.xml.ftl +templates/other/Service/globals.xml.ftl +templates/other/Service/root/src/app_package/Service.java.ftl +templates/other/Service/root/AndroidManifest.xml.ftl +templates/other/ListFragment/templates_list_fragment.png +templates/other/ListFragment/template.xml +templates/other/ListFragment/recipe.xml.ftl +templates/other/ListFragment/globals.xml.ftl +templates/other/ListFragment/root/res/values-sw600dp/refs_lrg.xml.ftl +templates/other/ListFragment/root/res/layout/fragment_list.xml +templates/other/ListFragment/root/res/layout/fragment_grid.xml +templates/other/ListFragment/root/res/values-large/refs_lrg.xml.ftl +templates/other/ListFragment/root/res/values/refs_lrg.xml.ftl +templates/other/ListFragment/root/res/values/refs.xml.ftl +templates/other/ListFragment/root/src/app_package/dummy/DummyContent.java.ftl +templates/other/ListFragment/root/src/app_package/ListFragment.java.ftl +templates/other/ContentProvider/template.xml +templates/other/ContentProvider/recipe.xml.ftl +templates/other/ContentProvider/globals.xml.ftl +templates/other/ContentProvider/root/src/app_package/ContentProvider.java.ftl +templates/other/ContentProvider/root/AndroidManifest.xml.ftl +templates/other/ResFolder/template.xml +templates/other/ResFolder/recipe.xml.ftl +templates/other/ResFolder/root/build.gradle.ftl +templates/other/Daydream/template.xml +templates/other/Daydream/recipe.xml.ftl +templates/other/Daydream/globals.xml.ftl +templates/other/Daydream/root/res/layout-v17/dream.xml +templates/other/Daydream/root/res/xml/xml_dream.xml.ftl +templates/other/Daydream/root/res/xml/dream_prefs.xml +templates/other/Daydream/root/res/values/strings.xml.ftl +templates/other/Daydream/root/src/app_package/SettingsActivity.java.ftl +templates/other/Daydream/root/src/app_package/DreamService.java.ftl +templates/other/Daydream/root/AndroidManifest.xml.ftl +templates/other/IntentService/template.xml +templates/other/IntentService/recipe.xml.ftl +templates/other/IntentService/globals.xml.ftl +templates/other/IntentService/root/src/app_package/IntentService.java.ftl +templates/other/IntentService/root/AndroidManifest.xml.ftl +templates/other/AssetsFolder/template.xml +templates/other/AssetsFolder/recipe.xml.ftl +templates/other/AssetsFolder/root/build.gradle.ftl +templates/other/AidlFolder/template.xml +templates/other/AidlFolder/recipe.xml.ftl +templates/other/AidlFolder/root/build.gradle.ftl +templates/other/RsFolder/template.xml +templates/other/RsFolder/recipe.xml.ftl +templates/other/RsFolder/root/build.gradle.ftl +templates/other/BlankFragment/template.xml +templates/other/BlankFragment/recipe.xml.ftl +templates/other/BlankFragment/globals.xml.ftl +templates/other/BlankFragment/template_blank_fragment.png +templates/other/BlankFragment/root/res/layout/fragment_blank.xml.ftl +templates/other/BlankFragment/root/res/values/strings.xml +templates/other/BlankFragment/root/src/app_package/BlankFragment.java.ftl +templates/other/LayoutResourceFile/template.xml +templates/other/LayoutResourceFile/recipe.xml.ftl +templates/other/LayoutResourceFile/root/res/layout.xml.ftl +templates/other/BroadcastReceiver/template.xml +templates/other/BroadcastReceiver/recipe.xml.ftl +templates/other/BroadcastReceiver/globals.xml.ftl +templates/other/BroadcastReceiver/root/src/app_package/BroadcastReceiver.java.ftl +templates/other/BroadcastReceiver/root/AndroidManifest.xml.ftl +templates/other/ValueResourceFile/template.xml +templates/other/ValueResourceFile/recipe.xml.ftl +templates/other/ValueResourceFile/root/res/values.xml.ftl +templates/other/JavaFolder/template.xml +templates/other/JavaFolder/recipe.xml.ftl +templates/other/JavaFolder/root/build.gradle.ftl +templates/other/JniFolder/template.xml +templates/other/JniFolder/recipe.xml.ftl +templates/other/JniFolder/root/build.gradle.ftl +templates/other/AndroidManifest/template.xml +templates/other/AndroidManifest/recipe.xml.ftl +templates/other/AndroidManifest/root/AndroidManifest.xml.ftl +templates/other/AndroidManifest/root/build.gradle.ftl +templates/other/PlusOneFragment/template.xml +templates/other/PlusOneFragment/recipe.xml.ftl +templates/other/PlusOneFragment/templates_plusone_fragment.png +templates/other/PlusOneFragment/globals.xml.ftl +templates/other/PlusOneFragment/root/res/layout/fragment_plus_one.xml.ftl +templates/other/PlusOneFragment/root/src/app_package/PlusOneFragment.java.ftl +templates/other/PlusOneFragment/root/AndroidManifest.xml.ftl +templates/other/ResourcesFolder/template.xml +templates/other/ResourcesFolder/recipe.xml.ftl +templates/other/ResourcesFolder/root/build.gradle.ftl +templates/other/AppWidget/template.xml +templates/other/AppWidget/recipe.xml.ftl +templates/other/AppWidget/globals.xml.ftl +templates/other/AppWidget/thumbs/template_widget_2x1_v.png +templates/other/AppWidget/thumbs/template_widget_2x3.png +templates/other/AppWidget/thumbs/template_widget_3x4_h.png +templates/other/AppWidget/thumbs/template_widget_1x1.png +templates/other/AppWidget/thumbs/template_widget_1x1_vh.png +templates/other/AppWidget/thumbs/template_widget_1x1_v.png +templates/other/AppWidget/thumbs/template_widget_4x4_vh.png +templates/other/AppWidget/thumbs/template_widget_4x3_v.png +templates/other/AppWidget/thumbs/template_widget_4x1_vh.png +templates/other/AppWidget/thumbs/template_widget_2x3_v.png +templates/other/AppWidget/thumbs/template_widget_3x3_vh.png +templates/other/AppWidget/thumbs/template_widget_3x3_v.png +templates/other/AppWidget/thumbs/template_widget_3x1_vh.png +templates/other/AppWidget/thumbs/template_widget_4x3_vh.png +templates/other/AppWidget/thumbs/template_widget_3x1_v.png +templates/other/AppWidget/thumbs/template_widget_3x2_vh.png +templates/other/AppWidget/thumbs/template_widget_3x2_h.png +templates/other/AppWidget/thumbs/template_widget_3x1_h.png +templates/other/AppWidget/thumbs/template_widget_1x2_h.png +templates/other/AppWidget/thumbs/template_widget_4x3_h.png +templates/other/AppWidget/thumbs/template_widget_2x2_h.png +templates/other/AppWidget/thumbs/template_widget_2x4_v.png +templates/other/AppWidget/thumbs/template_widget_1x2.png +templates/other/AppWidget/thumbs/template_widget_4x4.png +templates/other/AppWidget/thumbs/template_widget_1x4.png +templates/other/AppWidget/thumbs/template_widget_4x2_v.png +templates/other/AppWidget/thumbs/template_widget_3x3_h.png +templates/other/AppWidget/thumbs/template_widget_3x2_v.png +templates/other/AppWidget/thumbs/template_widget_4x4_v.png +templates/other/AppWidget/thumbs/template_widget_1x1_h.png +templates/other/AppWidget/thumbs/template_widget_3x4_v.png +templates/other/AppWidget/thumbs/template_widget_2x3_vh.png +templates/other/AppWidget/thumbs/template_widget_2x2.png +templates/other/AppWidget/thumbs/template_widget_4x3.png +templates/other/AppWidget/thumbs/template_widget_4x2.png +templates/other/AppWidget/thumbs/template_widget_1x3_h.png +templates/other/AppWidget/thumbs/template_widget_2x1_vh.png +templates/other/AppWidget/thumbs/template_widget_2x2_vh.png +templates/other/AppWidget/thumbs/template_widget_2x1_h.png +templates/other/AppWidget/thumbs/template_widget_4x1_h.png +templates/other/AppWidget/thumbs/template_widget_3x1.png +templates/other/AppWidget/thumbs/template_widget_2x4_h.png +templates/other/AppWidget/thumbs/template_widget_1x4_v.png +templates/other/AppWidget/thumbs/template_widget_1x2_v.png +templates/other/AppWidget/thumbs/template_widget_4x4_h.png +templates/other/AppWidget/thumbs/template_widget_1x3_v.png +templates/other/AppWidget/thumbs/template_widget_2x4_vh.png +templates/other/AppWidget/thumbs/template_widget_1x3_vh.png +templates/other/AppWidget/thumbs/template_widget_1x3.png +templates/other/AppWidget/thumbs/template_widget_2x2_v.png +templates/other/AppWidget/thumbs/template_widget_4x1_v.png +templates/other/AppWidget/thumbs/template_widget_3x2.png +templates/other/AppWidget/thumbs/template_widget_4x2_h.png +templates/other/AppWidget/thumbs/template_widget_1x2_vh.png +templates/other/AppWidget/thumbs/template_widget_3x4.png +templates/other/AppWidget/thumbs/template_widget_1x4_h.png +templates/other/AppWidget/thumbs/template_widget_3x4_vh.png +templates/other/AppWidget/thumbs/template_widget_4x2_vh.png +templates/other/AppWidget/thumbs/template_widget_2x1.png +templates/other/AppWidget/thumbs/template_widget_4x1.png +templates/other/AppWidget/thumbs/template_widget_1x4_vh.png +templates/other/AppWidget/thumbs/template_widget_3x3.png +templates/other/AppWidget/thumbs/template_widget_2x4.png +templates/other/AppWidget/thumbs/template_widget_2x3_h.png +templates/other/AppWidget/root/res/xml/appwidget_info.xml.ftl +templates/other/AppWidget/root/res/values-v14/dimens.xml +templates/other/AppWidget/root/res/layout/appwidget_configure.xml +templates/other/AppWidget/root/res/layout/appwidget.xml +templates/other/AppWidget/root/res/drawable-nodpi/example_appwidget_preview.png +templates/other/AppWidget/root/res/values/dimens.xml +templates/other/AppWidget/root/res/values/strings.xml.ftl +templates/other/AppWidget/root/src/app_package/AppWidget.java.ftl +templates/other/AppWidget/root/src/app_package/AppWidgetConfigureActivity.java.ftl +templates/other/AppWidget/root/AndroidManifest.xml.ftl +templates/other/CustomView/template.xml +templates/other/CustomView/recipe.xml.ftl +templates/other/CustomView/globals.xml.ftl +templates/other/CustomView/root/res/layout/sample.xml.ftl +templates/other/CustomView/root/res/values/attrs.xml.ftl +templates/other/CustomView/root/src/app_package/CustomView.java.ftl +------------------------------------------------------------ + + Copyright (c) 2005-2014, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/emma.jar +lib/emma_ant.jar +lib/emma_device.jar +------------------------------------------------------------ +Common Public License - v 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S +ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + + a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and + b) in the case of each subsequent Contributor: + + i) changes to the Program, and + + ii) additions to the Program; + + where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was +added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules +of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. + +"Program" means the Contributions distributed in accordance with this Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, including all Contributors. + +2. GRANT OF RIGHTS + + a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative +works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form. + + b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, +use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the +combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered +by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. + + c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the +Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other +entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole +responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the +Program, it is Recipient's responsibility to acquire that license before distributing the Program. + + d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this +Agreement. + +3. REQUIREMENTS + +A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: + + a) it complies with the terms and conditions of this Agreement; and + + b) its license agreement: + + i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, +and implied warranties or conditions of merchantability and fitness for a particular purpose; + + ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost +profits; + + iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and + + iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium +customarily used for software exchange. + +When the Program is made available in source code form: + + a) it must be made available under this Agreement; and + + b) a copy of this Agreement must be included with each copy of the Program. + +Contributors may not remove or alter any copyright notices contained within the Program. + +Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the +Contribution. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the +commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other +Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify +every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a +third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a +commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to +qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate +with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor +then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this +section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other +Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, +WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for +determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to +the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this +Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any +patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, if Recipient institutes +patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other +software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a +reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the +Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and +survive. + +Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following +manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the +right to modify this Agreement. IBM is the initial Agreement Steward. IBM may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new +version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under +which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new +version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, +whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal +action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. + +============================================================ +Notices for file(s): +lib/fat32lib.jar +------------------------------------------------------------ +GNU LESSER GENERAL PUBLIC LICENSE + +Version 2.1, February 1999 + +Copyright (C) 1991, 1999 Free Software Foundation, Inc. +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] +Preamble + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + +This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. + +For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + +To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. + +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + +Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. + +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". + +A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + +The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + +"Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + +Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. + +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. + +You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + +a) The modified work must itself be a software library. +b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. +c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. +d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. +(For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. + +Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + +This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. + +If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. + +5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + +However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + +When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + +If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) + +Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. + +You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + +a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) +b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. +c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. +d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. +e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. +For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + +It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: + +a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. +b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. + +This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + +NO WARRANTY + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +support/annotations.jar +------------------------------------------------------------ + + Copyright (c) 2012-2014, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/AVD Manager.exe +------------------------------------------------------------ + + Copyright (c) 2005-2008, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/find_java32.exe +lib/find_java64.exe +lib/find_java.bat +------------------------------------------------------------ + + Copyright (c) 2005-2011, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/SDK Manager.exe +------------------------------------------------------------ + + Copyright (c) 2005-2008, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/chimpchat.jar +------------------------------------------------------------ + + Copyright (c) 2005-2011, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +ddms.bat +lib/ddms.jar +------------------------------------------------------------ + + Copyright (c) 2005-2008, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/ddmuilib.jar +------------------------------------------------------------ + + Copyright (c) 2005-2008, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +hierarchyviewer.bat +lib/hierarchyviewer2.jar +------------------------------------------------------------ + + Copyright (c) 2005-2008, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/hierarchyviewer2lib.jar +------------------------------------------------------------ + + Copyright (c) 2005-2008, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +monkeyrunner.bat +lib/monkeyrunner.jar +------------------------------------------------------------ + + Copyright (c) 2005-2008, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +android.bat +lib/sdkmanager.jar +------------------------------------------------------------ + + Copyright (c) 2005-2008, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/sdkstats.jar +------------------------------------------------------------ + + Copyright (c) 2005-2008, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/sdkuilib.jar +------------------------------------------------------------ + + Copyright (c) 2005-2008, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/swtmenubar.jar +------------------------------------------------------------ +*Eclipse Public License - v 1.0* + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE +PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF +THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +*1. DEFINITIONS* + +"Contribution" means: + +a) in the case of the initial Contributor, the initial code and +documentation distributed under this Agreement, and +b) in the case of each subsequent Contributor: + +i) changes to the Program, and + +ii) additions to the Program; + +where such changes and/or additions to the Program originate from and +are distributed by that particular Contributor. A Contribution +'originates' from a Contributor if it was added to the Program by such +Contributor itself or anyone acting on such Contributor's behalf. +Contributions do not include additions to the Program which: (i) are +separate modules of software distributed in conjunction with the Program +under their own license agreement, and (ii) are not derivative works of +the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents " mean patent claims licensable by a Contributor which +are necessarily infringed by the use or sale of its Contribution alone +or when combined with the Program. + +"Program" means the Contributions distributed in accordance with this +Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, +including all Contributors. + +*2. GRANT OF RIGHTS* + +a) Subject to the terms of this Agreement, each Contributor hereby +grants Recipient a non-exclusive, worldwide, royalty-free copyright +license to reproduce, prepare derivative works of, publicly display, +publicly perform, distribute and sublicense the Contribution of such +Contributor, if any, and such derivative works, in source code and +object code form. + +b) Subject to the terms of this Agreement, each Contributor hereby +grants Recipient a non-exclusive, worldwide, royalty-free patent license +under Licensed Patents to make, use, sell, offer to sell, import and +otherwise transfer the Contribution of such Contributor, if any, in +source code and object code form. This patent license shall apply to the +combination of the Contribution and the Program if, at the time the +Contribution is added by the Contributor, such addition of the +Contribution causes such combination to be covered by the Licensed +Patents. The patent license shall not apply to any other combinations +which include the Contribution. No hardware per se is licensed hereunder. + +c) Recipient understands that although each Contributor grants the +licenses to its Contributions set forth herein, no assurances are +provided by any Contributor that the Program does not infringe the +patent or other intellectual property rights of any other entity. Each +Contributor disclaims any liability to Recipient for claims brought by +any other entity based on infringement of intellectual property rights +or otherwise. As a condition to exercising the rights and licenses +granted hereunder, each Recipient hereby assumes sole responsibility to +secure any other intellectual property rights needed, if any. For +example, if a third party patent license is required to allow Recipient +to distribute the Program, it is Recipient's responsibility to acquire +that license before distributing the Program. + +d) Each Contributor represents that to its knowledge it has sufficient +copyright rights in its Contribution, if any, to grant the copyright +license set forth in this Agreement. + +*3. REQUIREMENTS* + +A Contributor may choose to distribute the Program in object code form +under its own license agreement, provided that: + +a) it complies with the terms and conditions of this Agreement; and + +b) its license agreement: + +i) effectively disclaims on behalf of all Contributors all warranties +and conditions, express and implied, including warranties or conditions +of title and non-infringement, and implied warranties or conditions of +merchantability and fitness for a particular purpose; + +ii) effectively excludes on behalf of all Contributors all liability for +damages, including direct, indirect, special, incidental and +consequential damages, such as lost profits; + +iii) states that any provisions which differ from this Agreement are +offered by that Contributor alone and not by any other party; and + +iv) states that source code for the Program is available from such +Contributor, and informs licensees how to obtain it in a reasonable +manner on or through a medium customarily used for software exchange. + +When the Program is made available in source code form: + +a) it must be made available under this Agreement; and + +b) a copy of this Agreement must be included with each copy of the Program. + +Contributors may not remove or alter any copyright notices contained +within the Program. + +Each Contributor must identify itself as the originator of its +Contribution, if any, in a manner that reasonably allows subsequent +Recipients to identify the originator of the Contribution. + +*4. COMMERCIAL DISTRIBUTION* + +Commercial distributors of software may accept certain responsibilities +with respect to end users, business partners and the like. While this +license is intended to facilitate the commercial use of the Program, the +Contributor who includes the Program in a commercial product offering +should do so in a manner which does not create potential liability for +other Contributors. Therefore, if a Contributor includes the Program in +a commercial product offering, such Contributor ("Commercial +Contributor") hereby agrees to defend and indemnify every other +Contributor ("Indemnified Contributor") against any losses, damages and +costs (collectively "Losses") arising from claims, lawsuits and other +legal actions brought by a third party against the Indemnified +Contributor to the extent caused by the acts or omissions of such +Commercial Contributor in connection with its distribution of the +Program in a commercial product offering. The obligations in this +section do not apply to any claims or Losses relating to any actual or +alleged intellectual property infringement. In order to qualify, an +Indemnified Contributor must: a) promptly notify the Commercial +Contributor in writing of such claim, and b) allow the Commercial +Contributor to control, and cooperate with the Commercial Contributor +in, the defense and any related settlement negotiations. The Indemnified +Contributor may participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those +performance claims and warranties, and if a court requires any other +Contributor to pay any damages as a result, the Commercial Contributor +must pay those damages. + +*5. NO WARRANTY* + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED +ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES +OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR +A PARTICULAR PURPOSE. Each Recipient is solely responsible for +determining the appropriateness of using and distributing the Program +and assumes all risks associated with its exercise of rights under this +Agreement , including but not limited to the risks and costs of program +errors, compliance with applicable laws, damage to or loss of data, +programs or equipment, and unavailability or interruption of operations. + +*6. DISCLAIMER OF LIABILITY* + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR +ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING +WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR +DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED +HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +*7. GENERAL* + +If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further action +by the parties hereto, such provision shall be reformed to the minimum +extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity (including +a cross-claim or counterclaim in a lawsuit) alleging that the Program +itself (excluding combinations of the Program with other software or +hardware) infringes such Recipient's patent(s), then such Recipient's +rights granted under Section 2(b) shall terminate as of the date such +litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails +to comply with any of the material terms or conditions of this Agreement +and does not cure such failure in a reasonable period of time after +becoming aware of such noncompliance. If all Recipient's rights under +this Agreement terminate, Recipient agrees to cease use and distribution +of the Program as soon as reasonably practicable. However, Recipient's +obligations under this Agreement and any licenses granted by Recipient +relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, +but in order to avoid inconsistency the Agreement is copyrighted and may +only be modified in the following manner. The Agreement Steward reserves +the right to publish new versions (including revisions) of this +Agreement from time to time. No one other than the Agreement Steward has +the right to modify this Agreement. The Eclipse Foundation is the +initial Agreement Steward. The Eclipse Foundation may assign the +responsibility to serve as the Agreement Steward to a suitable separate +entity. Each new version of the Agreement will be given a distinguishing +version number. The Program (including Contributions) may always be +distributed subject to the version of the Agreement under which it was +received. In addition, after a new version of the Agreement is +published, Contributor may elect to distribute the Program (including +its Contributions) under the new version. Except as expressly stated in +Sections 2(a) and 2(b) above, Recipient receives no rights or licenses +to the intellectual property of any Contributor under this Agreement, +whether expressly, by implication, estoppel or otherwise. All rights in +the Program not expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the +intellectual property laws of the United States of America. No party to +this Agreement will bring a legal action under this Agreement more than +one year after the cause of action arose. Each party waives its rights +to a jury trial in any resulting litigation. + + + +============================================================ +Notices for file(s): +traceview.bat +lib/traceview.jar +------------------------------------------------------------ + + Copyright (c) 2005-2008, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +uiautomatorviewer.bat +lib/uiautomatorviewer.jar +------------------------------------------------------------ + + Copyright (c) 2005-2008, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================ +Notices for file(s): +lib/commons-codec-1.4.jar +------------------------------------------------------------ +Apache HttpComponents Client +Copyright 1999-2011 The Apache Software Foundation + +This product includes software developed by +The Apache Software Foundation (http://www.apache.org/). + +This project contains annotations derived from JCIP-ANNOTATIONS +Copyright (c) 2005 Brian Goetz and Tim Peierls. See http://www.jcip.net + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +This project contains annotations derived from JCIP-ANNOTATIONS +Copyright (c) 2005 Brian Goetz and Tim Peierls. +See http://www.jcip.net and the Creative Commons Attribution License +(http://creativecommons.org/licenses/by/2.5) + +============================================================ +Notices for file(s): +lib/commons-compress-1.8.1.jar +------------------------------------------------------------ +Apache Commons Compress +Copyright 2002-2014 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +The files in the package org.apache.commons.compress.archivers.sevenz +were derived from the LZMA SDK, version 9.20 (C/ and CPP/7zip/), +which has been placed in the public domain: + +"LZMA SDK is placed in the public domain." (http://www.7-zip.org/sdk.html) + + +------- + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +============================================================ +Notices for file(s): +lib/httpclient-4.1.1.jar +------------------------------------------------------------ +Apache HttpComponents Client +Copyright 1999-2011 The Apache Software Foundation + +This product includes software developed by +The Apache Software Foundation (http://www.apache.org/). + +This project contains annotations derived from JCIP-ANNOTATIONS +Copyright (c) 2005 Brian Goetz and Tim Peierls. See http://www.jcip.net + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +This project contains annotations derived from JCIP-ANNOTATIONS +Copyright (c) 2005 Brian Goetz and Tim Peierls. +See http://www.jcip.net and the Creative Commons Attribution License +(http://creativecommons.org/licenses/by/2.5) + +============================================================ +Notices for file(s): +lib/annotations-12.0.jar +------------------------------------------------------------ +/* + * Apache License + * Version 2.0, January 2004 + * http://www.apache.org/licenses/ + * + * TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + * + * 1. Definitions. + * + * "License" shall mean the terms and conditions for use, reproduction, + * and distribution as defined by Sections 1 through 9 of this document. + * + * "Licensor" shall mean the copyright owner or entity authorized by + * the copyright owner that is granting the License. + * + * "Legal Entity" shall mean the union of the acting entity and all + * other entities that control, are controlled by, or are under common + * control with that entity. For the purposes of this definition, + * "control" means (i) the power, direct or indirect, to cause the + * direction or management of such entity, whether by contract or + * otherwise, or (ii) ownership of fifty percent (50%) or more of the + * outstanding shares, or (iii) beneficial ownership of such entity. + * + * "You" (or "Your") shall mean an individual or Legal Entity + * exercising permissions granted by this License. + * + * "Source" form shall mean the preferred form for making modifications, + * including but not limited to software source code, documentation + * source, and configuration files. + * + * "Object" form shall mean any form resulting from mechanical + * transformation or translation of a Source form, including but + * not limited to compiled object code, generated documentation, + * and conversions to other media types. + * + * "Work" shall mean the work of authorship, whether in Source or + * Object form, made available under the License, as indicated by a + * copyright notice that is included in or attached to the work + * (an example is provided in the Appendix below). + * + * "Derivative Works" shall mean any work, whether in Source or Object + * form, that is based on (or derived from) the Work and for which the + * editorial revisions, annotations, elaborations, or other modifications + * represent, as a whole, an original work of authorship. For the purposes + * of this License, Derivative Works shall not include works that remain + * separable from, or merely link (or bind by name) to the interfaces of, + * the Work and Derivative Works thereof. + * + * "Contribution" shall mean any work of authorship, including + * the original version of the Work and any modifications or additions + * to that Work or Derivative Works thereof, that is intentionally + * submitted to Licensor for inclusion in the Work by the copyright owner + * or by an individual or Legal Entity authorized to submit on behalf of + * the copyright owner. For the purposes of this definition, "submitted" + * means any form of electronic, verbal, or written communication sent + * to the Licensor or its representatives, including but not limited to + * communication on electronic mailing lists, source code control systems, + * and issue tracking systems that are managed by, or on behalf of, the + * Licensor for the purpose of discussing and improving the Work, but + * excluding communication that is conspicuously marked or otherwise + * designated in writing by the copyright owner as "Not a Contribution." + * + * "Contributor" shall mean Licensor and any individual or Legal Entity + * on behalf of whom a Contribution has been received by Licensor and + * subsequently incorporated within the Work. + * + * 2. Grant of Copyright License. Subject to the terms and conditions of + * this License, each Contributor hereby grants to You a perpetual, + * worldwide, non-exclusive, no-charge, royalty-free, irrevocable + * copyright license to reproduce, prepare Derivative Works of, + * publicly display, publicly perform, sublicense, and distribute the + * Work and such Derivative Works in Source or Object form. + * + * 3. Grant of Patent License. Subject to the terms and conditions of + * this License, each Contributor hereby grants to You a perpetual, + * worldwide, non-exclusive, no-charge, royalty-free, irrevocable + * (except as stated in this section) patent license to make, have made, + * use, offer to sell, sell, import, and otherwise transfer the Work, + * where such license applies only to those patent claims licensable + * by such Contributor that are necessarily infringed by their + * Contribution(s) alone or by combination of their Contribution(s) + * with the Work to which such Contribution(s) was submitted. If You + * institute patent litigation against any entity (including a + * cross-claim or counterclaim in a lawsuit) alleging that the Work + * or a Contribution incorporated within the Work constitutes direct + * or contributory patent infringement, then any patent licenses + * granted to You under this License for that Work shall terminate + * as of the date such litigation is filed. + * + * 4. Redistribution. You may reproduce and distribute copies of the + * Work or Derivative Works thereof in any medium, with or without + * modifications, and in Source or Object form, provided that You + * meet the following conditions: + * + * (a) You must give any other recipients of the Work or + * Derivative Works a copy of this License; and + * + * (b) You must cause any modified files to carry prominent notices + * stating that You changed the files; and + * + * (c) You must retain, in the Source form of any Derivative Works + * that You distribute, all copyright, patent, trademark, and + * attribution notices from the Source form of the Work, + * excluding those notices that do not pertain to any part of + * the Derivative Works; and + * + * (d) If the Work includes a "NOTICE" text file as part of its + * distribution, then any Derivative Works that You distribute must + * include a readable copy of the attribution notices contained + * within such NOTICE file, excluding those notices that do not + * pertain to any part of the Derivative Works, in at least one + * of the following places: within a NOTICE text file distributed + * as part of the Derivative Works; within the Source form or + * documentation, if provided along with the Derivative Works; or, + * within a display generated by the Derivative Works, if and + * wherever such third-party notices normally appear. The contents + * of the NOTICE file are for informational purposes only and + * do not modify the License. You may add Your own attribution + * notices within Derivative Works that You distribute, alongside + * or as an addendum to the NOTICE text from the Work, provided + * that such additional attribution notices cannot be construed + * as modifying the License. + * + * You may add Your own copyright statement to Your modifications and + * may provide additional or different license terms and conditions + * for use, reproduction, or distribution of Your modifications, or + * for any such Derivative Works as a whole, provided Your use, + * reproduction, and distribution of the Work otherwise complies with + * the conditions stated in this License. + * + * 5. Submission of Contributions. Unless You explicitly state otherwise, + * any Contribution intentionally submitted for inclusion in the Work + * by You to the Licensor shall be under the terms and conditions of + * this License, without any additional terms or conditions. + * Notwithstanding the above, nothing herein shall supersede or modify + * the terms of any separate license agreement you may have executed + * with Licensor regarding such Contributions. + * + * 6. Trademarks. This License does not grant permission to use the trade + * names, trademarks, service marks, or product names of the Licensor, + * except as required for reasonable and customary use in describing the + * origin of the Work and reproducing the content of the NOTICE file. + * + * 7. Disclaimer of Warranty. Unless required by applicable law or + * agreed to in writing, Licensor provides the Work (and each + * Contributor provides its Contributions) on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied, including, without limitation, any warranties or conditions + * of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + * PARTICULAR PURPOSE. You are solely responsible for determining the + * appropriateness of using or redistributing the Work and assume any + * risks associated with Your exercise of permissions under this License. + * + * 8. Limitation of Liability. In no event and under no legal theory, + * whether in tort (including negligence), contract, or otherwise, + * unless required by applicable law (such as deliberate and grossly + * negligent acts) or agreed to in writing, shall any Contributor be + * liable to You for damages, including any direct, indirect, special, + * incidental, or consequential damages of any character arising as a + * result of this License or out of the use or inability to use the + * Work (including but not limited to damages for loss of goodwill, + * work stoppage, computer failure or malfunction, or any and all + * other commercial damages or losses), even if such Contributor + * has been advised of the possibility of such damages. + * + * 9. Accepting Warranty or Additional Liability. While redistributing + * the Work or Derivative Works thereof, You may choose to offer, + * and charge a fee for, acceptance of support, warranty, indemnity, + * or other liability obligations and/or rights consistent with this + * License. However, in accepting such obligations, You may act only + * on Your own behalf and on Your sole responsibility, not on behalf + * of any other Contributor, and only if You agree to indemnify, + * defend, and hold each Contributor harmless for any liability + * incurred by, or claims asserted against, such Contributor by reason + * of your accepting any such warranty or additional liability. + * + * END OF TERMS AND CONDITIONS + * + * APPENDIX: How to apply the Apache License to your work. + * + * To apply the Apache License to your work, attach the following + * boilerplate notice, with the fields enclosed by brackets "[]" + * replaced with your own identifying information. (Don't include + * the brackets!) The text should be enclosed in the appropriate + * comment syntax for the file format. We also recommend that a + * file or class name and description of purpose be included on the + * same "printed page" as the copyright notice for easier + * identification within third-party archives. + * + * Copyright [yyyy] [name of copyright owner] + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +W3C� SOFTWARE NOTICE AND LICENSE +http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 + +This work (and included software, documentation such as READMEs, or other +related items) is being provided by the copyright holders under the following +license. By obtaining, using and/or copying this work, you (the licensee) agree +that you have read, understood, and will comply with the following terms and +conditions. + +Permission to copy, modify, and distribute this software and its documentation, +with or without modification, for any purpose and without fee or royalty is +hereby granted, provided that you include the following on ALL copies of the +software and documentation or portions thereof, including modifications: + + 1. The full text of this NOTICE in a location viewable to users of the + redistributed or derivative work. + 2. Any pre-existing intellectual property disclaimers, notices, or terms + and conditions. If none exist, the W3C Software Short Notice should be + included (hypertext is preferred, text is permitted) within the body + of any redistributed or derivative code. + 3. Notice of any changes or modifications to the files, including the date + changes were made. (We recommend you provide URIs to the location from + which the code is derived.) + +THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE +NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT +THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY +PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. + +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION. + +The name and trademarks of copyright holders may NOT be used in advertising or +publicity pertaining to the software without specific, written prior permission. +Title to copyright in this software and any associated documentation will at +all times remain with copyright holders. + +____________________________________ + +This formulation of W3C's notice and license became active on December 31 2002. +This version removes the copyright ownership notice such that this license can +be used with materials other than those owned by the W3C, reflects that ERCIM +is now a host of the W3C, includes references to this specific dated version of +the license, and removes the ambiguous grant of "use". Otherwise, this version +is the same as the previous version and is written so as to preserve the Free +Software Foundation's assessment of GPL compatibility and OSI's certification +under the Open Source Definition. Please see our Copyright FAQ for common +questions about using materials from our site, including specific terms and +conditions for packages like libwww, Amaya, and Jigsaw. Other questions about +this notice can be directed to site-policy@w3.org. + +Joseph Reagle + +This license came from: http://www.megginson.com/SAX/copying.html + However please note future versions of SAX may be covered + under http://saxproject.org/?selected=pd + +SAX2 is Free! + +I hereby abandon any property rights to SAX 2.0 (the Simple API for +XML), and release all of the SAX 2.0 source code, compiled code, and +documentation contained in this distribution into the Public Domain. +SAX comes with NO WARRANTY or guarantee of fitness for any +purpose. + +David Megginson, david@megginson.com +2000-05-05 + +============================================================ +Notices for file(s): +lib/httpmime-4.1.jar +------------------------------------------------------------ +Apache HttpComponents Client +Copyright 1999-2011 The Apache Software Foundation + +This product includes software developed by +The Apache Software Foundation (http://www.apache.org/). + +This project contains annotations derived from JCIP-ANNOTATIONS +Copyright (c) 2005 Brian Goetz and Tim Peierls. See http://www.jcip.net + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +This project contains annotations derived from JCIP-ANNOTATIONS +Copyright (c) 2005 Brian Goetz and Tim Peierls. +See http://www.jcip.net and the Creative Commons Attribution License +(http://creativecommons.org/licenses/by/2.5) + +============================================================ +Notices for file(s): +lib/httpcore-4.1.jar +------------------------------------------------------------ +Apache HttpComponents Client +Copyright 1999-2011 The Apache Software Foundation + +This product includes software developed by +The Apache Software Foundation (http://www.apache.org/). + +This project contains annotations derived from JCIP-ANNOTATIONS +Copyright (c) 2005 Brian Goetz and Tim Peierls. See http://www.jcip.net + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +This project contains annotations derived from JCIP-ANNOTATIONS +Copyright (c) 2005 Brian Goetz and Tim Peierls. +See http://www.jcip.net and the Creative Commons Attribution License +(http://creativecommons.org/licenses/by/2.5) + +============================================================ +Notices for file(s): +lib/kxml2-2.3.0.jar +------------------------------------------------------------ +Copyright (c) 2002,2003, Stefan Haustein, Oberhausen, Rhld., Germany + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. + + +============================================================ +Notices for file(s): +lib/guava-17.0.jar +------------------------------------------------------------ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +============================================================ +Notices for file(s): +lib/commons-logging-1.1.1.jar +------------------------------------------------------------ +Apache HttpComponents Client +Copyright 1999-2011 The Apache Software Foundation + +This product includes software developed by +The Apache Software Foundation (http://www.apache.org/). + +This project contains annotations derived from JCIP-ANNOTATIONS +Copyright (c) 2005 Brian Goetz and Tim Peierls. See http://www.jcip.net + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +This project contains annotations derived from JCIP-ANNOTATIONS +Copyright (c) 2005 Brian Goetz and Tim Peierls. +See http://www.jcip.net and the Creative Commons Attribution License +(http://creativecommons.org/licenses/by/2.5) + +============================================================ +Notices for file(s): +lib/gson-2.2.4.jar +------------------------------------------------------------ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2008-2011 Google Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +============================================================ +Notices for file(s): +lib/lombok-ast-0.2.3.jar +------------------------------------------------------------ +Copyright (C) 2010-2011 The Project Lombok Authors. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +============================================================ +Notices for file(s): +lib/asm-5.0.3.jar +------------------------------------------------------------ + + ASM: a very small and fast Java bytecode manipulation framework + Copyright (c) 2000-2005 INRIA, France Telecom + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + +============================================================ +Notices for file(s): +lib/ecj-4.4.2.jar +------------------------------------------------------------ + + Eclipse Public License - v 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE +PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF +THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +*1. DEFINITIONS* + +"Contribution" means: + +a) in the case of the initial Contributor, the initial code and +documentation distributed under this Agreement, and + +b) in the case of each subsequent Contributor: + +i) changes to the Program, and + +ii) additions to the Program; + +where such changes and/or additions to the Program originate from and +are distributed by that particular Contributor. A Contribution +'originates' from a Contributor if it was added to the Program by such +Contributor itself or anyone acting on such Contributor's behalf. +Contributions do not include additions to the Program which: (i) are +separate modules of software distributed in conjunction with the Program +under their own license agreement, and (ii) are not derivative works of +the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents" mean patent claims licensable by a Contributor which +are necessarily infringed by the use or sale of its Contribution alone +or when combined with the Program. + +"Program" means the Contributions distributed in accordance with this +Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, +including all Contributors. + +*2. GRANT OF RIGHTS* + +a) Subject to the terms of this Agreement, each Contributor hereby +grants Recipient a non-exclusive, worldwide, royalty-free copyright +license to reproduce, prepare derivative works of, publicly display, +publicly perform, distribute and sublicense the Contribution of such +Contributor, if any, and such derivative works, in source code and +object code form. + +b) Subject to the terms of this Agreement, each Contributor hereby +grants Recipient a non-exclusive, worldwide, royalty-free patent license +under Licensed Patents to make, use, sell, offer to sell, import and +otherwise transfer the Contribution of such Contributor, if any, in +source code and object code form. This patent license shall apply to the +combination of the Contribution and the Program if, at the time the +Contribution is added by the Contributor, such addition of the +Contribution causes such combination to be covered by the Licensed +Patents. The patent license shall not apply to any other combinations +which include the Contribution. No hardware per se is licensed hereunder. + +c) Recipient understands that although each Contributor grants the +licenses to its Contributions set forth herein, no assurances are +provided by any Contributor that the Program does not infringe the +patent or other intellectual property rights of any other entity. Each +Contributor disclaims any liability to Recipient for claims brought by +any other entity based on infringement of intellectual property rights +or otherwise. As a condition to exercising the rights and licenses +granted hereunder, each Recipient hereby assumes sole responsibility to +secure any other intellectual property rights needed, if any. For +example, if a third party patent license is required to allow Recipient +to distribute the Program, it is Recipient's responsibility to acquire +that license before distributing the Program. + +d) Each Contributor represents that to its knowledge it has sufficient +copyright rights in its Contribution, if any, to grant the copyright +license set forth in this Agreement. + +*3. REQUIREMENTS* + +A Contributor may choose to distribute the Program in object code form +under its own license agreement, provided that: + +a) it complies with the terms and conditions of this Agreement; and + +b) its license agreement: + +i) effectively disclaims on behalf of all Contributors all warranties +and conditions, express and implied, including warranties or conditions +of title and non-infringement, and implied warranties or conditions of +merchantability and fitness for a particular purpose; + +ii) effectively excludes on behalf of all Contributors all liability for +damages, including direct, indirect, special, incidental and +consequential damages, such as lost profits; + +iii) states that any provisions which differ from this Agreement are +offered by that Contributor alone and not by any other party; and + +iv) states that source code for the Program is available from such +Contributor, and informs licensees how to obtain it in a reasonable +manner on or through a medium customarily used for software exchange. + +When the Program is made available in source code form: + +a) it must be made available under this Agreement; and + +b) a copy of this Agreement must be included with each copy of the Program. + +Contributors may not remove or alter any copyright notices contained +within the Program. + +Each Contributor must identify itself as the originator of its +Contribution, if any, in a manner that reasonably allows subsequent +Recipients to identify the originator of the Contribution. + +*4. COMMERCIAL DISTRIBUTION* + +Commercial distributors of software may accept certain responsibilities +with respect to end users, business partners and the like. While this +license is intended to facilitate the commercial use of the Program, the +Contributor who includes the Program in a commercial product offering +should do so in a manner which does not create potential liability for +other Contributors. Therefore, if a Contributor includes the Program in +a commercial product offering, such Contributor ("Commercial +Contributor") hereby agrees to defend and indemnify every other +Contributor ("Indemnified Contributor") against any losses, damages and +costs (collectively "Losses") arising from claims, lawsuits and other +legal actions brought by a third party against the Indemnified +Contributor to the extent caused by the acts or omissions of such +Commercial Contributor in connection with its distribution of the +Program in a commercial product offering. The obligations in this +section do not apply to any claims or Losses relating to any actual or +alleged intellectual property infringement. In order to qualify, an +Indemnified Contributor must: a) promptly notify the Commercial +Contributor in writing of such claim, and b) allow the Commercial +Contributor to control, and cooperate with the Commercial Contributor +in, the defense and any related settlement negotiations. The Indemnified +Contributor may participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those +performance claims and warranties, and if a court requires any other +Contributor to pay any damages as a result, the Commercial Contributor +must pay those damages. + +*5. NO WARRANTY* + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED +ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES +OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR +A PARTICULAR PURPOSE. Each Recipient is solely responsible for +determining the appropriateness of using and distributing the Program +and assumes all risks associated with its exercise of rights under this +Agreement , including but not limited to the risks and costs of program +errors, compliance with applicable laws, damage to or loss of data, +programs or equipment, and unavailability or interruption of operations. + +*6. DISCLAIMER OF LIABILITY* + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR +ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING +WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR +DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED +HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +*7. GENERAL* + +If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further action +by the parties hereto, such provision shall be reformed to the minimum +extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity (including +a cross-claim or counterclaim in a lawsuit) alleging that the Program +itself (excluding combinations of the Program with other software or +hardware) infringes such Recipient's patent(s), then such Recipient's +rights granted under Section 2(b) shall terminate as of the date such +litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails +to comply with any of the material terms or conditions of this Agreement +and does not cure such failure in a reasonable period of time after +becoming aware of such noncompliance. If all Recipient's rights under +this Agreement terminate, Recipient agrees to cease use and distribution +of the Program as soon as reasonably practicable. However, Recipient's +obligations under this Agreement and any licenses granted by Recipient +relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, +but in order to avoid inconsistency the Agreement is copyrighted and may +only be modified in the following manner. The Agreement Steward reserves +the right to publish new versions (including revisions) of this +Agreement from time to time. No one other than the Agreement Steward has +the right to modify this Agreement. The Eclipse Foundation is the +initial Agreement Steward. The Eclipse Foundation may assign the +responsibility to serve as the Agreement Steward to a suitable separate +entity. Each new version of the Agreement will be given a distinguishing +version number. The Program (including Contributions) may always be +distributed subject to the version of the Agreement under which it was +received. In addition, after a new version of the Agreement is +published, Contributor may elect to distribute the Program (including +its Contributions) under the new version. Except as expressly stated in +Sections 2(a) and 2(b) above, Recipient receives no rights or licenses +to the intellectual property of any Contributor under this Agreement, +whether expressly, by implication, estoppel or otherwise. All rights in +the Program not expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the +intellectual property laws of the United States of America. No party to +this Agreement will bring a legal action under this Agreement more than +one year after the cause of action arose. Each party waives its rights +to a jury trial in any resulting litigation. + +============================================================ +Notices for file(s): +lib/asm-analysis-5.0.3.jar +------------------------------------------------------------ + + ASM: a very small and fast Java bytecode manipulation framework + Copyright (c) 2000-2005 INRIA, France Telecom + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + +============================================================ +Notices for file(s): +lib/asm-tree-5.0.3.jar +------------------------------------------------------------ + + ASM: a very small and fast Java bytecode manipulation framework + Copyright (c) 2000-2005 INRIA, France Telecom + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + +============================================================ +Notices for file(s): +lib/hamcrest-core-1.3.jar +------------------------------------------------------------ +BSD License + +Copyright (c) 2000-2015 www.hamcrest.org +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of +conditions and the following disclaimer. Redistributions in binary form must reproduce +the above copyright notice, this list of conditions and the following disclaimer in +the documentation and/or other materials provided with the distribution. + +Neither the name of Hamcrest nor the names of its contributors may be used to endorse +or promote products derived from this software without specific prior written +permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY +WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + +============================================================ +Notices for file(s): +lib/objenesis-2.1.jar +------------------------------------------------------------ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +============================================================ +Notices for file(s): +lib/cglib-nodep-3.1.jar +------------------------------------------------------------ +This product includes software developed by +The Apache Software Foundation (http://www.apache.org/). + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +============================================================ +Notices for file(s): +lib/easymock-3.3.jar +------------------------------------------------------------ +Easymock is from http://easymock.org/ +Contributors: http://easymock.org/contributors.html + +See LICENSE file for details. + +============================================================ +Notices for file(s): +lib/junit-4.12.jar +------------------------------------------------------------ +JUnit + +Eclipse Public License - v 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC +LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM +CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + + a) in the case of the initial Contributor, the initial code and + documentation distributed under this Agreement, and + b) in the case of each subsequent Contributor: + + i) changes to the Program, and + + ii) additions to the Program; + + where such changes and/or additions to the Program originate from and are +distributed by that particular Contributor. A Contribution 'originates' from a +Contributor if it was added to the Program by such Contributor itself or anyone +acting on such Contributor's behalf. Contributions do not include additions to +the Program which: (i) are separate modules of software distributed in +conjunction with the Program under their own license agreement, and (ii) are +not derivative works of the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents " mean patent claims licensable by a Contributor which are +necessarily infringed by the use or sale of its Contribution alone or when +combined with the Program. + +"Program" means the Contributions distributed in accordance with this Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, +including all Contributors. + +2. GRANT OF RIGHTS + + a) Subject to the terms of this Agreement, each Contributor hereby grants +Recipient a non-exclusive, worldwide, royalty-free copyright license to +reproduce, prepare derivative works of, publicly display, publicly perform, +distribute and sublicense the Contribution of such Contributor, if any, and +such derivative works, in source code and object code form. + + b) Subject to the terms of this Agreement, each Contributor hereby grants +Recipient a non-exclusive, worldwide, royalty-free patent license under +Licensed Patents to make, use, sell, offer to sell, import and otherwise +transfer the Contribution of such Contributor, if any, in source code and +object code form. This patent license shall apply to the combination of the +Contribution and the Program if, at the time the Contribution is added by the +Contributor, such addition of the Contribution causes such combination to be +covered by the Licensed Patents. The patent license shall not apply to any +other combinations which include the Contribution. No hardware per se is +licensed hereunder. + + c) Recipient understands that although each Contributor grants the +licenses to its Contributions set forth herein, no assurances are provided by +any Contributor that the Program does not infringe the patent or other +intellectual property rights of any other entity. Each Contributor disclaims +any liability to Recipient for claims brought by any other entity based on +infringement of intellectual property rights or otherwise. As a condition to +exercising the rights and licenses granted hereunder, each Recipient hereby +assumes sole responsibility to secure any other intellectual property rights +needed, if any. For example, if a third party patent license is required to +allow Recipient to distribute the Program, it is Recipient's responsibility to +acquire that license before distributing the Program. + + d) Each Contributor represents that to its knowledge it has sufficient +copyright rights in its Contribution, if any, to grant the copyright license +set forth in this Agreement. + +3. REQUIREMENTS + +A Contributor may choose to distribute the Program in object code form under +its own license agreement, provided that: + + a) it complies with the terms and conditions of this Agreement; and + + b) its license agreement: + + i) effectively disclaims on behalf of all Contributors all warranties and +conditions, express and implied, including warranties or conditions of title +and non-infringement, and implied warranties or conditions of merchantability +and fitness for a particular purpose; + + ii) effectively excludes on behalf of all Contributors all liability for +damages, including direct, indirect, special, incidental and consequential +damages, such as lost profits; + + iii) states that any provisions which differ from this Agreement are +offered by that Contributor alone and not by any other party; and + + iv) states that source code for the Program is available from such +Contributor, and informs licensees how to obtain it in a reasonable manner on +or through a medium customarily used for software exchange. + +When the Program is made available in source code form: + + a) it must be made available under this Agreement; and + + b) a copy of this Agreement must be included with each copy of the +Program. + +Contributors may not remove or alter any copyright notices contained within the +Program. + +Each Contributor must identify itself as the originator of its Contribution, if +any, in a manner that reasonably allows subsequent Recipients to identify the +originator of the Contribution. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities with +respect to end users, business partners and the like. While this license is +intended to facilitate the commercial use of the Program, the Contributor who +includes the Program in a commercial product offering should do so in a manner +which does not create potential liability for other Contributors. Therefore, if +a Contributor includes the Program in a commercial product offering, such +Contributor ("Commercial Contributor") hereby agrees to defend and indemnify +every other Contributor ("Indemnified Contributor") against any losses, damages +and costs (collectively "Losses") arising from claims, lawsuits and other legal +actions brought by a third party against the Indemnified Contributor to the +extent caused by the acts or omissions of such Commercial Contributor in +connection with its distribution of the Program in a commercial product +offering. The obligations in this section do not apply to any claims or Losses +relating to any actual or alleged intellectual property infringement. In order +to qualify, an Indemnified Contributor must: a) promptly notify the Commercial +Contributor in writing of such claim, and b) allow the Commercial Contributor +to control, and cooperate with the Commercial Contributor in, the defense and +any related settlement negotiations. The Indemnified Contributor may +participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial product +offering, Product X. That Contributor is then a Commercial Contributor. If that +Commercial Contributor then makes performance claims, or offers warranties +related to Product X, those performance claims and warranties are such +Commercial Contributor's responsibility alone. Under this section, the +Commercial Contributor would have to defend claims against the other +Contributors related to those performance claims and warranties, and if a court +requires any other Contributor to pay any damages as a result, the Commercial +Contributor must pay those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR +IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, +NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each +Recipient is solely responsible for determining the appropriateness of using +and distributing the Program and assumes all risks associated with its exercise +of rights under this Agreement, including but not limited to the risks and +costs of program errors, compliance with applicable laws, damage to or loss of +data, programs or equipment, and unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY +CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST +PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY +WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS +GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under applicable +law, it shall not affect the validity or enforceability of the remainder of the +terms of this Agreement, and without further action by the parties hereto, such +provision shall be reformed to the minimum extent necessary to make such +provision valid and enforceable. + +If Recipient institutes patent litigation against any +entity (including a cross-claim or counterclaim in a lawsuit) alleging that the +Program itself (excluding combinations of the Program with other software or +hardware) infringes such Recipient's patent(s), then such Recipient's rights +granted under Section 2(b) shall terminate as of the date such litigation is +filed. + +All Recipient's rights under this Agreement shall terminate if it fails to +comply with any of the material terms or conditions of this Agreement and does +not cure such failure in a reasonable period of time after becoming aware of +such noncompliance. If all Recipient's rights under this Agreement terminate, +Recipient agrees to cease use and distribution of the Program as soon as +reasonably practicable. However, Recipient's obligations under this Agreement +and any licenses granted by Recipient relating to the Program shall continue +and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, but in +order to avoid inconsistency the Agreement is copyrighted and may only be +modified in the following manner. The Agreement Steward reserves the right to +publish new versions (including revisions) of this Agreement from time to time. +No one other than the Agreement Steward has the right to modify this Agreement. +The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to +serve as the Agreement Steward to a suitable separate entity. Each new version +of the Agreement will be given a distinguishing version number. The Program +(including Contributions) may always be distributed subject to the version of +the Agreement under which it was received. In addition, after a new version of +the Agreement is published, Contributor may elect to distribute the Program +(including its Contributions) under the new version. Except as expressly stated +in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to +the intellectual property of any Contributor under this Agreement, whether +expressly, by implication, estoppel or otherwise. All rights in the Program not +expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the +intellectual property laws of the United States of America. No party to this +Agreement will bring a legal action under this Agreement more than one year +after the cause of action arose. Each party waives its rights to a jury trial +in any resulting litigation. + +============================================================ +Notices for file(s): +lib/org-eclipse-core-commands-3.6.0.jar +------------------------------------------------------------ + + Eclipse Public License - v 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE +PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF +THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +*1. DEFINITIONS* + +"Contribution" means: + +a) in the case of the initial Contributor, the initial code and +documentation distributed under this Agreement, and + +b) in the case of each subsequent Contributor: + +i) changes to the Program, and + +ii) additions to the Program; + +where such changes and/or additions to the Program originate from and +are distributed by that particular Contributor. A Contribution +'originates' from a Contributor if it was added to the Program by such +Contributor itself or anyone acting on such Contributor's behalf. +Contributions do not include additions to the Program which: (i) are +separate modules of software distributed in conjunction with the Program +under their own license agreement, and (ii) are not derivative works of +the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents" mean patent claims licensable by a Contributor which +are necessarily infringed by the use or sale of its Contribution alone +or when combined with the Program. + +"Program" means the Contributions distributed in accordance with this +Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, +including all Contributors. + +*2. GRANT OF RIGHTS* + +a) Subject to the terms of this Agreement, each Contributor hereby +grants Recipient a non-exclusive, worldwide, royalty-free copyright +license to reproduce, prepare derivative works of, publicly display, +publicly perform, distribute and sublicense the Contribution of such +Contributor, if any, and such derivative works, in source code and +object code form. + +b) Subject to the terms of this Agreement, each Contributor hereby +grants Recipient a non-exclusive, worldwide, royalty-free patent license +under Licensed Patents to make, use, sell, offer to sell, import and +otherwise transfer the Contribution of such Contributor, if any, in +source code and object code form. This patent license shall apply to the +combination of the Contribution and the Program if, at the time the +Contribution is added by the Contributor, such addition of the +Contribution causes such combination to be covered by the Licensed +Patents. The patent license shall not apply to any other combinations +which include the Contribution. No hardware per se is licensed hereunder. + +c) Recipient understands that although each Contributor grants the +licenses to its Contributions set forth herein, no assurances are +provided by any Contributor that the Program does not infringe the +patent or other intellectual property rights of any other entity. Each +Contributor disclaims any liability to Recipient for claims brought by +any other entity based on infringement of intellectual property rights +or otherwise. As a condition to exercising the rights and licenses +granted hereunder, each Recipient hereby assumes sole responsibility to +secure any other intellectual property rights needed, if any. For +example, if a third party patent license is required to allow Recipient +to distribute the Program, it is Recipient's responsibility to acquire +that license before distributing the Program. + +d) Each Contributor represents that to its knowledge it has sufficient +copyright rights in its Contribution, if any, to grant the copyright +license set forth in this Agreement. + +*3. REQUIREMENTS* + +A Contributor may choose to distribute the Program in object code form +under its own license agreement, provided that: + +a) it complies with the terms and conditions of this Agreement; and + +b) its license agreement: + +i) effectively disclaims on behalf of all Contributors all warranties +and conditions, express and implied, including warranties or conditions +of title and non-infringement, and implied warranties or conditions of +merchantability and fitness for a particular purpose; + +ii) effectively excludes on behalf of all Contributors all liability for +damages, including direct, indirect, special, incidental and +consequential damages, such as lost profits; + +iii) states that any provisions which differ from this Agreement are +offered by that Contributor alone and not by any other party; and + +iv) states that source code for the Program is available from such +Contributor, and informs licensees how to obtain it in a reasonable +manner on or through a medium customarily used for software exchange. + +When the Program is made available in source code form: + +a) it must be made available under this Agreement; and + +b) a copy of this Agreement must be included with each copy of the Program. + +Contributors may not remove or alter any copyright notices contained +within the Program. + +Each Contributor must identify itself as the originator of its +Contribution, if any, in a manner that reasonably allows subsequent +Recipients to identify the originator of the Contribution. + +*4. COMMERCIAL DISTRIBUTION* + +Commercial distributors of software may accept certain responsibilities +with respect to end users, business partners and the like. While this +license is intended to facilitate the commercial use of the Program, the +Contributor who includes the Program in a commercial product offering +should do so in a manner which does not create potential liability for +other Contributors. Therefore, if a Contributor includes the Program in +a commercial product offering, such Contributor ("Commercial +Contributor") hereby agrees to defend and indemnify every other +Contributor ("Indemnified Contributor") against any losses, damages and +costs (collectively "Losses") arising from claims, lawsuits and other +legal actions brought by a third party against the Indemnified +Contributor to the extent caused by the acts or omissions of such +Commercial Contributor in connection with its distribution of the +Program in a commercial product offering. The obligations in this +section do not apply to any claims or Losses relating to any actual or +alleged intellectual property infringement. In order to qualify, an +Indemnified Contributor must: a) promptly notify the Commercial +Contributor in writing of such claim, and b) allow the Commercial +Contributor to control, and cooperate with the Commercial Contributor +in, the defense and any related settlement negotiations. The Indemnified +Contributor may participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those +performance claims and warranties, and if a court requires any other +Contributor to pay any damages as a result, the Commercial Contributor +must pay those damages. + +*5. NO WARRANTY* + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED +ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES +OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR +A PARTICULAR PURPOSE. Each Recipient is solely responsible for +determining the appropriateness of using and distributing the Program +and assumes all risks associated with its exercise of rights under this +Agreement , including but not limited to the risks and costs of program +errors, compliance with applicable laws, damage to or loss of data, +programs or equipment, and unavailability or interruption of operations. + +*6. DISCLAIMER OF LIABILITY* + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR +ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING +WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR +DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED +HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +*7. GENERAL* + +If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further action +by the parties hereto, such provision shall be reformed to the minimum +extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity (including +a cross-claim or counterclaim in a lawsuit) alleging that the Program +itself (excluding combinations of the Program with other software or +hardware) infringes such Recipient's patent(s), then such Recipient's +rights granted under Section 2(b) shall terminate as of the date such +litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails +to comply with any of the material terms or conditions of this Agreement +and does not cure such failure in a reasonable period of time after +becoming aware of such noncompliance. If all Recipient's rights under +this Agreement terminate, Recipient agrees to cease use and distribution +of the Program as soon as reasonably practicable. However, Recipient's +obligations under this Agreement and any licenses granted by Recipient +relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, +but in order to avoid inconsistency the Agreement is copyrighted and may +only be modified in the following manner. The Agreement Steward reserves +the right to publish new versions (including revisions) of this +Agreement from time to time. No one other than the Agreement Steward has +the right to modify this Agreement. The Eclipse Foundation is the +initial Agreement Steward. The Eclipse Foundation may assign the +responsibility to serve as the Agreement Steward to a suitable separate +entity. Each new version of the Agreement will be given a distinguishing +version number. The Program (including Contributions) may always be +distributed subject to the version of the Agreement under which it was +received. In addition, after a new version of the Agreement is +published, Contributor may elect to distribute the Program (including +its Contributions) under the new version. Except as expressly stated in +Sections 2(a) and 2(b) above, Recipient receives no rights or licenses +to the intellectual property of any Contributor under this Agreement, +whether expressly, by implication, estoppel or otherwise. All rights in +the Program not expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the +intellectual property laws of the United States of America. No party to +this Agreement will bring a legal action under this Agreement more than +one year after the cause of action arose. Each party waives its rights +to a jury trial in any resulting litigation. + +============================================================ +Notices for file(s): +lib/jfreechart-swt-1.0.9.jar +------------------------------------------------------------ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + +============================================================ +Notices for file(s): +lib/org-eclipse-jface-3.6.2.jar +------------------------------------------------------------ + + Eclipse Public License - v 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE +PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF +THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +*1. DEFINITIONS* + +"Contribution" means: + +a) in the case of the initial Contributor, the initial code and +documentation distributed under this Agreement, and + +b) in the case of each subsequent Contributor: + +i) changes to the Program, and + +ii) additions to the Program; + +where such changes and/or additions to the Program originate from and +are distributed by that particular Contributor. A Contribution +'originates' from a Contributor if it was added to the Program by such +Contributor itself or anyone acting on such Contributor's behalf. +Contributions do not include additions to the Program which: (i) are +separate modules of software distributed in conjunction with the Program +under their own license agreement, and (ii) are not derivative works of +the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents" mean patent claims licensable by a Contributor which +are necessarily infringed by the use or sale of its Contribution alone +or when combined with the Program. + +"Program" means the Contributions distributed in accordance with this +Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, +including all Contributors. + +*2. GRANT OF RIGHTS* + +a) Subject to the terms of this Agreement, each Contributor hereby +grants Recipient a non-exclusive, worldwide, royalty-free copyright +license to reproduce, prepare derivative works of, publicly display, +publicly perform, distribute and sublicense the Contribution of such +Contributor, if any, and such derivative works, in source code and +object code form. + +b) Subject to the terms of this Agreement, each Contributor hereby +grants Recipient a non-exclusive, worldwide, royalty-free patent license +under Licensed Patents to make, use, sell, offer to sell, import and +otherwise transfer the Contribution of such Contributor, if any, in +source code and object code form. This patent license shall apply to the +combination of the Contribution and the Program if, at the time the +Contribution is added by the Contributor, such addition of the +Contribution causes such combination to be covered by the Licensed +Patents. The patent license shall not apply to any other combinations +which include the Contribution. No hardware per se is licensed hereunder. + +c) Recipient understands that although each Contributor grants the +licenses to its Contributions set forth herein, no assurances are +provided by any Contributor that the Program does not infringe the +patent or other intellectual property rights of any other entity. Each +Contributor disclaims any liability to Recipient for claims brought by +any other entity based on infringement of intellectual property rights +or otherwise. As a condition to exercising the rights and licenses +granted hereunder, each Recipient hereby assumes sole responsibility to +secure any other intellectual property rights needed, if any. For +example, if a third party patent license is required to allow Recipient +to distribute the Program, it is Recipient's responsibility to acquire +that license before distributing the Program. + +d) Each Contributor represents that to its knowledge it has sufficient +copyright rights in its Contribution, if any, to grant the copyright +license set forth in this Agreement. + +*3. REQUIREMENTS* + +A Contributor may choose to distribute the Program in object code form +under its own license agreement, provided that: + +a) it complies with the terms and conditions of this Agreement; and + +b) its license agreement: + +i) effectively disclaims on behalf of all Contributors all warranties +and conditions, express and implied, including warranties or conditions +of title and non-infringement, and implied warranties or conditions of +merchantability and fitness for a particular purpose; + +ii) effectively excludes on behalf of all Contributors all liability for +damages, including direct, indirect, special, incidental and +consequential damages, such as lost profits; + +iii) states that any provisions which differ from this Agreement are +offered by that Contributor alone and not by any other party; and + +iv) states that source code for the Program is available from such +Contributor, and informs licensees how to obtain it in a reasonable +manner on or through a medium customarily used for software exchange. + +When the Program is made available in source code form: + +a) it must be made available under this Agreement; and + +b) a copy of this Agreement must be included with each copy of the Program. + +Contributors may not remove or alter any copyright notices contained +within the Program. + +Each Contributor must identify itself as the originator of its +Contribution, if any, in a manner that reasonably allows subsequent +Recipients to identify the originator of the Contribution. + +*4. COMMERCIAL DISTRIBUTION* + +Commercial distributors of software may accept certain responsibilities +with respect to end users, business partners and the like. While this +license is intended to facilitate the commercial use of the Program, the +Contributor who includes the Program in a commercial product offering +should do so in a manner which does not create potential liability for +other Contributors. Therefore, if a Contributor includes the Program in +a commercial product offering, such Contributor ("Commercial +Contributor") hereby agrees to defend and indemnify every other +Contributor ("Indemnified Contributor") against any losses, damages and +costs (collectively "Losses") arising from claims, lawsuits and other +legal actions brought by a third party against the Indemnified +Contributor to the extent caused by the acts or omissions of such +Commercial Contributor in connection with its distribution of the +Program in a commercial product offering. The obligations in this +section do not apply to any claims or Losses relating to any actual or +alleged intellectual property infringement. In order to qualify, an +Indemnified Contributor must: a) promptly notify the Commercial +Contributor in writing of such claim, and b) allow the Commercial +Contributor to control, and cooperate with the Commercial Contributor +in, the defense and any related settlement negotiations. The Indemnified +Contributor may participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those +performance claims and warranties, and if a court requires any other +Contributor to pay any damages as a result, the Commercial Contributor +must pay those damages. + +*5. NO WARRANTY* + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED +ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES +OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR +A PARTICULAR PURPOSE. Each Recipient is solely responsible for +determining the appropriateness of using and distributing the Program +and assumes all risks associated with its exercise of rights under this +Agreement , including but not limited to the risks and costs of program +errors, compliance with applicable laws, damage to or loss of data, +programs or equipment, and unavailability or interruption of operations. + +*6. DISCLAIMER OF LIABILITY* + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR +ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING +WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR +DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED +HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +*7. GENERAL* + +If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further action +by the parties hereto, such provision shall be reformed to the minimum +extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity (including +a cross-claim or counterclaim in a lawsuit) alleging that the Program +itself (excluding combinations of the Program with other software or +hardware) infringes such Recipient's patent(s), then such Recipient's +rights granted under Section 2(b) shall terminate as of the date such +litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails +to comply with any of the material terms or conditions of this Agreement +and does not cure such failure in a reasonable period of time after +becoming aware of such noncompliance. If all Recipient's rights under +this Agreement terminate, Recipient agrees to cease use and distribution +of the Program as soon as reasonably practicable. However, Recipient's +obligations under this Agreement and any licenses granted by Recipient +relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, +but in order to avoid inconsistency the Agreement is copyrighted and may +only be modified in the following manner. The Agreement Steward reserves +the right to publish new versions (including revisions) of this +Agreement from time to time. No one other than the Agreement Steward has +the right to modify this Agreement. The Eclipse Foundation is the +initial Agreement Steward. The Eclipse Foundation may assign the +responsibility to serve as the Agreement Steward to a suitable separate +entity. Each new version of the Agreement will be given a distinguishing +version number. The Program (including Contributions) may always be +distributed subject to the version of the Agreement under which it was +received. In addition, after a new version of the Agreement is +published, Contributor may elect to distribute the Program (including +its Contributions) under the new version. Except as expressly stated in +Sections 2(a) and 2(b) above, Recipient receives no rights or licenses +to the intellectual property of any Contributor under this Agreement, +whether expressly, by implication, estoppel or otherwise. All rights in +the Program not expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the +intellectual property laws of the United States of America. No party to +this Agreement will bring a legal action under this Agreement more than +one year after the cause of action arose. Each party waives its rights +to a jury trial in any resulting litigation. + +============================================================ +Notices for file(s): +lib/org-eclipse-equinox-common-3.6.0.jar +------------------------------------------------------------ + + Eclipse Public License - v 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE +PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF +THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +*1. DEFINITIONS* + +"Contribution" means: + +a) in the case of the initial Contributor, the initial code and +documentation distributed under this Agreement, and + +b) in the case of each subsequent Contributor: + +i) changes to the Program, and + +ii) additions to the Program; + +where such changes and/or additions to the Program originate from and +are distributed by that particular Contributor. A Contribution +'originates' from a Contributor if it was added to the Program by such +Contributor itself or anyone acting on such Contributor's behalf. +Contributions do not include additions to the Program which: (i) are +separate modules of software distributed in conjunction with the Program +under their own license agreement, and (ii) are not derivative works of +the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents" mean patent claims licensable by a Contributor which +are necessarily infringed by the use or sale of its Contribution alone +or when combined with the Program. + +"Program" means the Contributions distributed in accordance with this +Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, +including all Contributors. + +*2. GRANT OF RIGHTS* + +a) Subject to the terms of this Agreement, each Contributor hereby +grants Recipient a non-exclusive, worldwide, royalty-free copyright +license to reproduce, prepare derivative works of, publicly display, +publicly perform, distribute and sublicense the Contribution of such +Contributor, if any, and such derivative works, in source code and +object code form. + +b) Subject to the terms of this Agreement, each Contributor hereby +grants Recipient a non-exclusive, worldwide, royalty-free patent license +under Licensed Patents to make, use, sell, offer to sell, import and +otherwise transfer the Contribution of such Contributor, if any, in +source code and object code form. This patent license shall apply to the +combination of the Contribution and the Program if, at the time the +Contribution is added by the Contributor, such addition of the +Contribution causes such combination to be covered by the Licensed +Patents. The patent license shall not apply to any other combinations +which include the Contribution. No hardware per se is licensed hereunder. + +c) Recipient understands that although each Contributor grants the +licenses to its Contributions set forth herein, no assurances are +provided by any Contributor that the Program does not infringe the +patent or other intellectual property rights of any other entity. Each +Contributor disclaims any liability to Recipient for claims brought by +any other entity based on infringement of intellectual property rights +or otherwise. As a condition to exercising the rights and licenses +granted hereunder, each Recipient hereby assumes sole responsibility to +secure any other intellectual property rights needed, if any. For +example, if a third party patent license is required to allow Recipient +to distribute the Program, it is Recipient's responsibility to acquire +that license before distributing the Program. + +d) Each Contributor represents that to its knowledge it has sufficient +copyright rights in its Contribution, if any, to grant the copyright +license set forth in this Agreement. + +*3. REQUIREMENTS* + +A Contributor may choose to distribute the Program in object code form +under its own license agreement, provided that: + +a) it complies with the terms and conditions of this Agreement; and + +b) its license agreement: + +i) effectively disclaims on behalf of all Contributors all warranties +and conditions, express and implied, including warranties or conditions +of title and non-infringement, and implied warranties or conditions of +merchantability and fitness for a particular purpose; + +ii) effectively excludes on behalf of all Contributors all liability for +damages, including direct, indirect, special, incidental and +consequential damages, such as lost profits; + +iii) states that any provisions which differ from this Agreement are +offered by that Contributor alone and not by any other party; and + +iv) states that source code for the Program is available from such +Contributor, and informs licensees how to obtain it in a reasonable +manner on or through a medium customarily used for software exchange. + +When the Program is made available in source code form: + +a) it must be made available under this Agreement; and + +b) a copy of this Agreement must be included with each copy of the Program. + +Contributors may not remove or alter any copyright notices contained +within the Program. + +Each Contributor must identify itself as the originator of its +Contribution, if any, in a manner that reasonably allows subsequent +Recipients to identify the originator of the Contribution. + +*4. COMMERCIAL DISTRIBUTION* + +Commercial distributors of software may accept certain responsibilities +with respect to end users, business partners and the like. While this +license is intended to facilitate the commercial use of the Program, the +Contributor who includes the Program in a commercial product offering +should do so in a manner which does not create potential liability for +other Contributors. Therefore, if a Contributor includes the Program in +a commercial product offering, such Contributor ("Commercial +Contributor") hereby agrees to defend and indemnify every other +Contributor ("Indemnified Contributor") against any losses, damages and +costs (collectively "Losses") arising from claims, lawsuits and other +legal actions brought by a third party against the Indemnified +Contributor to the extent caused by the acts or omissions of such +Commercial Contributor in connection with its distribution of the +Program in a commercial product offering. The obligations in this +section do not apply to any claims or Losses relating to any actual or +alleged intellectual property infringement. In order to qualify, an +Indemnified Contributor must: a) promptly notify the Commercial +Contributor in writing of such claim, and b) allow the Commercial +Contributor to control, and cooperate with the Commercial Contributor +in, the defense and any related settlement negotiations. The Indemnified +Contributor may participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those +performance claims and warranties, and if a court requires any other +Contributor to pay any damages as a result, the Commercial Contributor +must pay those damages. + +*5. NO WARRANTY* + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED +ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES +OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR +A PARTICULAR PURPOSE. Each Recipient is solely responsible for +determining the appropriateness of using and distributing the Program +and assumes all risks associated with its exercise of rights under this +Agreement , including but not limited to the risks and costs of program +errors, compliance with applicable laws, damage to or loss of data, +programs or equipment, and unavailability or interruption of operations. + +*6. DISCLAIMER OF LIABILITY* + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR +ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING +WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR +DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED +HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +*7. GENERAL* + +If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further action +by the parties hereto, such provision shall be reformed to the minimum +extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity (including +a cross-claim or counterclaim in a lawsuit) alleging that the Program +itself (excluding combinations of the Program with other software or +hardware) infringes such Recipient's patent(s), then such Recipient's +rights granted under Section 2(b) shall terminate as of the date such +litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails +to comply with any of the material terms or conditions of this Agreement +and does not cure such failure in a reasonable period of time after +becoming aware of such noncompliance. If all Recipient's rights under +this Agreement terminate, Recipient agrees to cease use and distribution +of the Program as soon as reasonably practicable. However, Recipient's +obligations under this Agreement and any licenses granted by Recipient +relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, +but in order to avoid inconsistency the Agreement is copyrighted and may +only be modified in the following manner. The Agreement Steward reserves +the right to publish new versions (including revisions) of this +Agreement from time to time. No one other than the Agreement Steward has +the right to modify this Agreement. The Eclipse Foundation is the +initial Agreement Steward. The Eclipse Foundation may assign the +responsibility to serve as the Agreement Steward to a suitable separate +entity. Each new version of the Agreement will be given a distinguishing +version number. The Program (including Contributions) may always be +distributed subject to the version of the Agreement under which it was +received. In addition, after a new version of the Agreement is +published, Contributor may elect to distribute the Program (including +its Contributions) under the new version. Except as expressly stated in +Sections 2(a) and 2(b) above, Recipient receives no rights or licenses +to the intellectual property of any Contributor under this Agreement, +whether expressly, by implication, estoppel or otherwise. All rights in +the Program not expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the +intellectual property laws of the United States of America. No party to +this Agreement will bring a legal action under this Agreement more than +one year after the cause of action arose. Each party waives its rights +to a jury trial in any resulting litigation. + +============================================================ +Notices for file(s): +lib/osgi-4.0.0.jar +------------------------------------------------------------ + + Eclipse Public License - v 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE +PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF +THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +*1. DEFINITIONS* + +"Contribution" means: + +a) in the case of the initial Contributor, the initial code and +documentation distributed under this Agreement, and + +b) in the case of each subsequent Contributor: + +i) changes to the Program, and + +ii) additions to the Program; + +where such changes and/or additions to the Program originate from and +are distributed by that particular Contributor. A Contribution +'originates' from a Contributor if it was added to the Program by such +Contributor itself or anyone acting on such Contributor's behalf. +Contributions do not include additions to the Program which: (i) are +separate modules of software distributed in conjunction with the Program +under their own license agreement, and (ii) are not derivative works of +the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents" mean patent claims licensable by a Contributor which +are necessarily infringed by the use or sale of its Contribution alone +or when combined with the Program. + +"Program" means the Contributions distributed in accordance with this +Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, +including all Contributors. + +*2. GRANT OF RIGHTS* + +a) Subject to the terms of this Agreement, each Contributor hereby +grants Recipient a non-exclusive, worldwide, royalty-free copyright +license to reproduce, prepare derivative works of, publicly display, +publicly perform, distribute and sublicense the Contribution of such +Contributor, if any, and such derivative works, in source code and +object code form. + +b) Subject to the terms of this Agreement, each Contributor hereby +grants Recipient a non-exclusive, worldwide, royalty-free patent license +under Licensed Patents to make, use, sell, offer to sell, import and +otherwise transfer the Contribution of such Contributor, if any, in +source code and object code form. This patent license shall apply to the +combination of the Contribution and the Program if, at the time the +Contribution is added by the Contributor, such addition of the +Contribution causes such combination to be covered by the Licensed +Patents. The patent license shall not apply to any other combinations +which include the Contribution. No hardware per se is licensed hereunder. + +c) Recipient understands that although each Contributor grants the +licenses to its Contributions set forth herein, no assurances are +provided by any Contributor that the Program does not infringe the +patent or other intellectual property rights of any other entity. Each +Contributor disclaims any liability to Recipient for claims brought by +any other entity based on infringement of intellectual property rights +or otherwise. As a condition to exercising the rights and licenses +granted hereunder, each Recipient hereby assumes sole responsibility to +secure any other intellectual property rights needed, if any. For +example, if a third party patent license is required to allow Recipient +to distribute the Program, it is Recipient's responsibility to acquire +that license before distributing the Program. + +d) Each Contributor represents that to its knowledge it has sufficient +copyright rights in its Contribution, if any, to grant the copyright +license set forth in this Agreement. + +*3. REQUIREMENTS* + +A Contributor may choose to distribute the Program in object code form +under its own license agreement, provided that: + +a) it complies with the terms and conditions of this Agreement; and + +b) its license agreement: + +i) effectively disclaims on behalf of all Contributors all warranties +and conditions, express and implied, including warranties or conditions +of title and non-infringement, and implied warranties or conditions of +merchantability and fitness for a particular purpose; + +ii) effectively excludes on behalf of all Contributors all liability for +damages, including direct, indirect, special, incidental and +consequential damages, such as lost profits; + +iii) states that any provisions which differ from this Agreement are +offered by that Contributor alone and not by any other party; and + +iv) states that source code for the Program is available from such +Contributor, and informs licensees how to obtain it in a reasonable +manner on or through a medium customarily used for software exchange. + +When the Program is made available in source code form: + +a) it must be made available under this Agreement; and + +b) a copy of this Agreement must be included with each copy of the Program. + +Contributors may not remove or alter any copyright notices contained +within the Program. + +Each Contributor must identify itself as the originator of its +Contribution, if any, in a manner that reasonably allows subsequent +Recipients to identify the originator of the Contribution. + +*4. COMMERCIAL DISTRIBUTION* + +Commercial distributors of software may accept certain responsibilities +with respect to end users, business partners and the like. While this +license is intended to facilitate the commercial use of the Program, the +Contributor who includes the Program in a commercial product offering +should do so in a manner which does not create potential liability for +other Contributors. Therefore, if a Contributor includes the Program in +a commercial product offering, such Contributor ("Commercial +Contributor") hereby agrees to defend and indemnify every other +Contributor ("Indemnified Contributor") against any losses, damages and +costs (collectively "Losses") arising from claims, lawsuits and other +legal actions brought by a third party against the Indemnified +Contributor to the extent caused by the acts or omissions of such +Commercial Contributor in connection with its distribution of the +Program in a commercial product offering. The obligations in this +section do not apply to any claims or Losses relating to any actual or +alleged intellectual property infringement. In order to qualify, an +Indemnified Contributor must: a) promptly notify the Commercial +Contributor in writing of such claim, and b) allow the Commercial +Contributor to control, and cooperate with the Commercial Contributor +in, the defense and any related settlement negotiations. The Indemnified +Contributor may participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those +performance claims and warranties, and if a court requires any other +Contributor to pay any damages as a result, the Commercial Contributor +must pay those damages. + +*5. NO WARRANTY* + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED +ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES +OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR +A PARTICULAR PURPOSE. Each Recipient is solely responsible for +determining the appropriateness of using and distributing the Program +and assumes all risks associated with its exercise of rights under this +Agreement , including but not limited to the risks and costs of program +errors, compliance with applicable laws, damage to or loss of data, +programs or equipment, and unavailability or interruption of operations. + +*6. DISCLAIMER OF LIABILITY* + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR +ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING +WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR +DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED +HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +*7. GENERAL* + +If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further action +by the parties hereto, such provision shall be reformed to the minimum +extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity (including +a cross-claim or counterclaim in a lawsuit) alleging that the Program +itself (excluding combinations of the Program with other software or +hardware) infringes such Recipient's patent(s), then such Recipient's +rights granted under Section 2(b) shall terminate as of the date such +litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails +to comply with any of the material terms or conditions of this Agreement +and does not cure such failure in a reasonable period of time after +becoming aware of such noncompliance. If all Recipient's rights under +this Agreement terminate, Recipient agrees to cease use and distribution +of the Program as soon as reasonably practicable. However, Recipient's +obligations under this Agreement and any licenses granted by Recipient +relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, +but in order to avoid inconsistency the Agreement is copyrighted and may +only be modified in the following manner. The Agreement Steward reserves +the right to publish new versions (including revisions) of this +Agreement from time to time. No one other than the Agreement Steward has +the right to modify this Agreement. The Eclipse Foundation is the +initial Agreement Steward. The Eclipse Foundation may assign the +responsibility to serve as the Agreement Steward to a suitable separate +entity. Each new version of the Agreement will be given a distinguishing +version number. The Program (including Contributions) may always be +distributed subject to the version of the Agreement under which it was +received. In addition, after a new version of the Agreement is +published, Contributor may elect to distribute the Program (including +its Contributions) under the new version. Except as expressly stated in +Sections 2(a) and 2(b) above, Recipient receives no rights or licenses +to the intellectual property of any Contributor under this Agreement, +whether expressly, by implication, estoppel or otherwise. All rights in +the Program not expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the +intellectual property laws of the United States of America. No party to +this Agreement will bring a legal action under this Agreement more than +one year after the cause of action arose. Each party waives its rights +to a jury trial in any resulting litigation. + +============================================================ +Notices for file(s): +lib/jfreechart-1.0.9.jar +------------------------------------------------------------ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + +============================================================ +Notices for file(s): +lib/jcommon-1.0.12.jar +------------------------------------------------------------ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + +============================================================ +Notices for file(s): +lib/jsilver-1.0.0.jar +------------------------------------------------------------ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +============================================================ +Notices for file(s): +lib/jython-standalone-2.5.3.jar +------------------------------------------------------------ +Source: http://www.jython.org/license.html + + The Jython License + + A. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING JYTHON + +PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 + + 1. This LICENSE AGREEMENT is between the Python Software Foundation + ("PSF"), and the Individual or Organization ("Licensee") accessing and + otherwise using this software ("Jython") in source or binary form and its + associated documentation. + + 2. Subject to the terms and conditions of this License Agreement, PSF + hereby grants Licensee a nonexclusive, royalty-free, world-wide license to + reproduce, analyze, test, perform and/or display publicly, prepare + derivative works, distribute, and otherwise use Jython alone or in any + derivative version, provided, however, that PSF's License Agreement and + PSF's notice of copyright, i.e., "Copyright (c) 2007 Python Software + Foundation; All Rights Reserved" are retained in Jython alone or in any + derivative version prepared by Licensee. + + 3. In the event Licensee prepares a derivative work that is based on or + incorporates Jython or any part thereof, and wants to make the derivative + work available to others as provided herein, then Licensee hereby agrees + to include in any such work a brief summary of the changes made to Jython. + + 4. PSF is making Jython available to Licensee on an "AS IS" basis. PSF + MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF + EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION + OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR + THAT THE USE OF JYTHON WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. + + 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF JYTHON FOR + ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF + MODIFYING, DISTRIBUTING, OR OTHERWISE USING JYTHON, OR ANY DERIVATIVE + THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + + 6. This License Agreement will automatically terminate upon a material + breach of its terms and conditions. + + 7. Nothing in this License Agreement shall be deemed to create any + relationship of agency, partnership, or joint venture between PSF and + Licensee. This License Agreement does not grant permission to use PSF + trademarks or trade name in a trademark sense to endorse or promote + products or services of Licensee, or any third party. + + 8. By copying, installing or otherwise using Jython, Licensee agrees to be + bound by the terms and conditions of this License Agreement. + +Jython 2.0, 2.1 License + + Copyright (c) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Jython + Developers All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Jython Developers nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + + JPython 1.1.x Software License. + + 1. This LICENSE AGREEMENT is between the Corporation for National + Research Initiatives, having an office at 1895 Preston White Drive, + Reston, VA 20191 ("CNRI"), and the Individual or Organization + ("Licensee") accessing and using JPython version 1.1.x in source or + binary form and its associated documentation as provided herein + ("Software"). + + 2. Subject to the terms and conditions of this License Agreement, CNRI + hereby grants Licensee a non-exclusive, non-transferable, + royalty-free, world-wide license to reproduce, analyze, test, + perform and/or display publicly, prepare derivative works, + distribute, and otherwise use the Software alone or in any + derivative version, provided, however, that CNRI's License Agreement + and CNRI's notice of copyright, i.e., "Copyright **1996-1999 + Corporation for National Research Initiatives; All Rights Reserved" + are both retained in the Software, alone or in any derivative + version prepared by Licensee. + + Alternatively, in lieu of CNRI's License Agreement, Licensee may + substitute the following text (omitting the quotes), provided, + however, that such text is displayed prominently in the Software + alone or in any derivative version prepared by Licensee: "JPython + (Version 1.1.x) is made available subject to the terms and + conditions in CNRI's License Agreement. This Agreement may be + located on the Internet using the following unique, persistent + identifier (known as a handle): 1895.22/1006. The License may also + be obtained from a proxy server on the Web using the following URL: + http://hdl.handle.net/1895.22/1006." + + 3. In the event Licensee prepares a derivative work that is based on or + incorporates the Software or any part thereof, and wants to make the + derivative work available to the public as provided herein, then + Licensee hereby agrees to indicate in any such work, in a + prominently visible way, the nature of the modifications made to + CNRI's Software. + + 4. Licensee may not use CNRI trademarks or trade name, including + JPython or CNRI, in a trademark sense to endorse or promote products + or services of Licensee, or any third party. Licensee may use the + mark JPython in connection with Licensee's derivative versions that + are based on or incorporate the Software, but only in the form + "JPython-based ___________________," or equivalent. + + 5. CNRI is making the Software available to Licensee on an "AS IS" + basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR + IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND + DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR + FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE + WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. + + 6. CNRI SHALL NOT BE LIABLE TO LICENSEE OR OTHER USERS OF THE SOFTWARE + FOR ANY INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS AS A + RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY + DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. SOME + STATES DO NOT ALLOW THE LIMITATION OR EXCLUSION OF LIABILITY SO THE + ABOVE DISCLAIMER MAY NOT APPLY TO LICENSEE. + + 7. This License Agreement may be terminated by CNRI (i) immediately + upon written notice from CNRI of any material breach by the + Licensee, if the nature of the breach is such that it cannot be + promptly remedied; or (ii) sixty (60) days following notice from + CNRI to Licensee of a material remediable breach, if Licensee has + not remedied such breach within that sixty-day period. + + 8. This License Agreement shall be governed by and interpreted in all + respects by the law of the State of Virginia, excluding conflict of + law provisions. Nothing in this Agreement shall be deemed to create + any relationship of agency, partnership, or joint venture between + CNRI and Licensee. + + 9. By clicking on the "ACCEPT" button where indicated, or by + installing, copying or otherwise using the Software, Licensee agrees + to be bound by the terms and conditions of this License Agreement. + + [ACCEPT BUTTON] + + B. HISTORY OF THE SOFTWARE + + JPython was created in late 1997 by Jim Hugunin. Jim was also the primary + developer while he was at CNRI. In February 1999 Barry Warsaw took over as + primary developer and released JPython version 1.1. + + In October 2000 Barry helped move the software to SourceForge where it was + renamed to Jython. Jython 2.0 and 2.1 were developed under the Jython + specific license below. + + From the 2.2 release on, Jython contributors have signed Python Software + Foundation contributor agreements and releases are covered under the + Python Software Foundation license version 2. + + The standard library is covered by the Python Software Foundation license + as well. See the Lib/LICENSE file for details. + + The zxJDBC package was written by Brian Zimmer and originally licensed + under the GNU Public License. The package is now covered by the Jython + Software License. + + The command line interpreter is covered by the Apache Software License. + See the org/apache/LICENSE file for details. + + ---------------------------------------------------------------------- + diff --git a/love2dToAPK/tools/tools/android-win/tools/android.bat b/love2dToAPK/tools/tools/android-win/tools/android.bat new file mode 100644 index 0000000..92cd2c5 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/tools/android.bat @@ -0,0 +1,85 @@ +@echo off +rem Copyright (C) 2007 The Android Open Source Project +rem +rem Licensed under the Apache License, Version 2.0 (the "License"); +rem you may not use this file except in compliance with the License. +rem You may obtain a copy of the License at +rem +rem http://www.apache.org/licenses/LICENSE-2.0 +rem +rem Unless required by applicable law or agreed to in writing, software +rem distributed under the License is distributed on an "AS IS" BASIS, +rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +rem See the License for the specific language governing permissions and +rem limitations under the License. + +rem Useful links: +rem Command-line reference: +rem http://technet.microsoft.com/en-us/library/bb490890.aspx + +rem don't modify the caller's environment +setlocal enableextensions + +rem Set up prog to be the path of this script, including following symlinks, +rem and set up progdir to be the fully-qualified pathname of its directory. +set prog=%~f0 + +rem Grab current directory before we change it +set work_dir=%cd% + +rem Change current directory and drive to where the script is, to avoid +rem issues with directories containing whitespaces. +cd /d %~dp0 + + +rem Check we have a valid Java.exe in the path. +set java_exe= +call lib\find_java.bat +if not defined java_exe goto :EOF + +set jar_path=lib\sdkmanager.jar;lib\swtmenubar.jar + +rem Set SWT.Jar path based on current architecture (x86 or x86_64) +for /f "delims=" %%a in ('"%java_exe%" -jar lib\archquery.jar') do set swt_path=lib\%%a + +:MkTempCopy + rem Copy android.bat and its required libs to a temp dir. + rem This avoids locking the tool dir in case the user is trying to update it. + + set tmp_dir=%TEMP%\temp-android-tool + xcopy %swt_path% %tmp_dir%\%swt_path% /I /E /C /G /R /Y /Q > nul + copy /B /D /Y lib\common.jar %tmp_dir%\lib\ > nul + copy /B /D /Y lib\commons-codec* %tmp_dir%\lib\ > nul + copy /B /D /Y lib\commons-compress* %tmp_dir%\lib\ > nul + copy /B /D /Y lib\commons-logging* %tmp_dir%\lib\ > nul + copy /B /D /Y lib\dvlib.jar %tmp_dir%\lib\ > nul + copy /B /D /Y lib\gson* %tmp_dir%\lib\ > nul + copy /B /D /Y lib\guava* %tmp_dir%\lib\ > nul + copy /B /D /Y lib\httpclient* %tmp_dir%\lib\ > nul + copy /B /D /Y lib\httpcore* %tmp_dir%\lib\ > nul + copy /B /D /Y lib\httpmime* %tmp_dir%\lib\ > nul + copy /B /D /Y lib\layoutlib-api.jar %tmp_dir%\lib\ > nul + copy /B /D /Y lib\org-eclipse-* %tmp_dir%\lib\ > nul + copy /B /D /Y lib\sdk* %tmp_dir%\lib\ > nul + copy /B /D /Y lib\swtmenubar.jar %tmp_dir%\lib\ > nul + + rem jar_path and swt_path are relative to PWD so we don't need to adjust them, just change dirs. + set tools_dir=%cd% + cd /d %tmp_dir% + +:EndTempCopy + +rem The global ANDROID_SWT always override the SWT.Jar path +if defined ANDROID_SWT set swt_path=%ANDROID_SWT% + +if exist "%swt_path%" goto SetPath + echo ERROR: SWT folder '%swt_path%' does not exist. + echo Please set ANDROID_SWT to point to the folder containing swt.jar for your platform. + goto :EOF + +:SetPath +rem Finally exec the java program and end here. +REM set REMOTE_DEBUG=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +call "%java_exe% %REMOTE_DEBUG%" "-Dcom.android.sdkmanager.toolsdir=%tools_dir%" "-Dcom.android.sdkmanager.workdir=%work_dir%" -classpath "%jar_path%;%swt_path%\swt.jar" com.android.sdkmanager.Main %* + +rem EOF diff --git a/love2dToAPK/tools/tools/android-win/tools/ant/NOTICE b/love2dToAPK/tools/tools/android-win/tools/ant/NOTICE new file mode 100644 index 0000000..06a9081 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/tools/ant/NOTICE @@ -0,0 +1,190 @@ + + Copyright (c) 2005-2014, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + diff --git a/love2dToAPK/tools/tools/android-win/tools/ant/build.xml b/love2dToAPK/tools/tools/android-win/tools/ant/build.xml new file mode 100644 index 0000000..aab440c --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/tools/ant/build.xml @@ -0,0 +1,1534 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @{elseText} + + + + + + + + + + + + + + + + + + + + + @{elseText} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Running tests ... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Uninstalling @{app.package} from the default emulator or device... + + + + + + + + + + + + + + + + + + + + + + + + + Project Name: ${ant.project.name} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Switching between debug and non debug build: Deleting previous compilation output... + + + + + + + + + + + + + Switching from instrumented to non-instrumented build: Deleting previous compilation output... + + + + + + + Resolving Build Target for ${ant.project.name}... + + + + + + + ---------- + Creating output directories if needed... + + + + + + + + + + + + + ---------- + Resolving Dependencies for ${ant.project.name}... + + + + + + + + + + + + + + + + + ---------- + Building Libraries with '${project.libraries.target}'... + + + + + + + + + + + + + + + + + + + ---------- + Building tested project at ${tested.project.absolute.dir} with '${tested.project.target}'... + + + + + + + + + + + + + + + + + + + + + + + + + + Handling aidl files... + + + + + + ---------- + Handling RenderScript files... + + + + + + + ---------- + Handling Resources... + + + + + + ---------- + Handling BuildConfig class... + + + + + + + + + + + + + + + + + + + + + + + + + + + Instrumenting classes from ${out.absolute.dir}/classes... + + + + + + + + + + + + + + + + + + + + + Creating library output jar file... + + + + + + + Custom jar packaging exclusion: ${android.package.excludes} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -include "${proguard.configcmd}" + -include "${out.absolute.dir}/proguard.txt" + -injars ${project.all.classes.value} + -outjars "${obfuscated.jar.file}" + -libraryjars ${project.target.classpath.value} + -dump "${obfuscate.absolute.dir}/dump.txt" + -printseeds "${obfuscate.absolute.dir}/seeds.txt" + -printusage "${obfuscate.absolute.dir}/usage.txt" + -printmapping "${obfuscate.absolute.dir}/mapping.txt" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Debug Package: ${out.final.file} + + + + + + + + + + + + + + + + + + + + + + + + + + + No key.store and key.alias properties found in build.properties. + Please sign ${out.packaged.file} manually + and run zipalign from the Android SDK tools. + + + + + + + proguard.config is ${proguard.config} + + + + + + + + + Proguard.config is enabled + + + + + + + + + + + + + + + + + + + + + + + + + + + + ************************************************* + **** Android Manifest has debuggable=true **** + **** Doing DEBUG packaging with RELEASE keys **** + ************************************************* + + + + + + + + + + + + + + + + Signing final apk... + + + + + Release Package: ${out.final.file} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Instrumented Package: ${out.final.file} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Running tests... + + + + + + + + + Setting permission to download the coverage file... + + + + + + + + + + Downloading coverage file into project directory... + + + + + + + + + + + + + + + Extracting coverage report... + + + + + + + + + + + + + Cleaning up temporary files... + + + + + + + + + + + Saving the coverage reports in ${out.absolute.dir} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Installing ${out.final.file} onto default emulator or device... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Install file not specified. + + 'ant install' now requires the build target to be specified as well. + + + ant debug install + ant release install + ant instrument install + This will build the given package and install it. + + Alternatively, you can use + ant installd + ant installr + ant installi + ant installt + to only install an existing package (this will not rebuild the package.) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Android Ant Build. Available targets: + help: Displays this help. + clean: Removes output files created by other targets. + This calls the same target on all dependent projects. + Use 'ant nodeps clean' to only clean the local project + debug: Builds the application and signs it with a debug key. + The 'nodeps' target can be used to only build the + current project and ignore the libraries using: + 'ant nodeps debug' + release: Builds the application. The generated apk file must be + signed before it is published. + The 'nodeps' target can be used to only build the + current project and ignore the libraries using: + 'ant nodeps release' + instrument:Builds an instrumented package and signs it with a + debug key. + test: Runs the tests. Project must be a test project and + must have been built. Typical usage would be: + ant [emma] debug install test + emma: Transiently enables code coverage for subsequent + targets. + install: Installs the newly build package. Must either be used + in conjunction with a build target (debug/release/ + instrument) or with the proper suffix indicating + which package to install (see below). + If the application was previously installed, the + application is reinstalled if the signature matches. + installd: Installs (only) the debug package. + installr: Installs (only) the release package. + installi: Installs (only) the instrumented package. + installt: Installs (only) the test and tested packages (unless + nodeps is used as well. + uninstall: Uninstalls the application from a running emulator or + device. Also uninstall tested package if applicable + unless 'nodeps' is used as well. + + diff --git a/love2dToAPK/tools/tools/android-win/tools/ant/uibuild.xml b/love2dToAPK/tools/tools/android-win/tools/ant/uibuild.xml new file mode 100644 index 0000000..788ca77 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/tools/ant/uibuild.xml @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Running tests ... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Resolving Build Target for ${ant.project.name}... + + + + ---------- + Creating output directories if needed... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Android Ant Build. Available targets: + help: Displays this help. + clean: Removes output files created by other targets. + build: Builds the test library. + install: Installs the library on a connected device or + emulator. + test: Runs the tests. + + It is possible to mix targets. For instance: + ant build install test + This will build, install and run the test in a single command. + + + diff --git a/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/.classpath b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/.classpath new file mode 100644 index 0000000..a4763d1 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/.classpath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/.project b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/.project new file mode 100644 index 0000000..172daea --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/.project @@ -0,0 +1,34 @@ + + + SdkControllerApp + + + SdkControllerLib + + + + com.android.ide.eclipse.adt.ResourceManagerBuilder + + + + + com.android.ide.eclipse.adt.PreCompilerBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + com.android.ide.eclipse.adt.ApkBuilder + + + + + + com.android.ide.eclipse.adt.AndroidNature + org.eclipse.jdt.core.javanature + + diff --git a/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/.settings/org.eclipse.jdt.core.prefs b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..0d8eaac --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,12 @@ +#Fri Apr 06 22:06:54 PDT 2012 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.6 diff --git a/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/AndroidManifest.xml b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/AndroidManifest.xml new file mode 100644 index 0000000..df7aa47 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/AndroidManifest.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/Implementation.txt b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/Implementation.txt new file mode 100644 index 0000000..f1ead49 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/Implementation.txt @@ -0,0 +1,85 @@ +Implementation Details for SdkControllerApp +------------------------------------------- + +---- 2012-03-22 +App is in the namespace com.android.tools.sdkcontroller. + +This is an app that has a minSdkVersion of 7 (Eclair) +and a targetSdkVersion of 15 (ICS). The target version +means the app is forbidden under ICS from doing any network +communication on its main thread. + +The overall design: +- A background service is started by the app. It handles the connection + to the emulator and provides a number of "handlers". Handlers can be + though as being separate tasks that the user wants to achieve, for example + sending sensor data, sending multi-touch events, receiving screen updates, + sending a camera feed, etc. +- All the handlers are started when the service starts and shutdown with it. + They basically stay there as long as the app is running, and its up to the + handler to deal with emulator connections starts/stopping. Some handlers + will run in the background (e.g. sending sensor data) whereas other might + need an activity to connect to them first. +- The app has a number of activities which connect to existing handlers. + +Another way to see it is that the app handles a number of tasks which are +composed of a background handler (that consumes data form the emulator and +can send data to the emulator) and an optional activity for UI (that displays +or controls the handler's state.) + + +Here's a quick overview of the classes in the application: + + +The main UI is in activities.MainActivity. +There are 2 tasks activities: SensorActivity and MultiTouchActivity. + +These all derive from BaseBindingActivity which provides a few convenient common features +- in onResume this will bind to the service, creating and starting it if necessary. +- in onPause, this will unbind from the service, but does not stop it. + +Note however that due to the asynchronous nature of the bind operation, the activity +must not attempt to use the service from onResume. Instead there are 2 callbacks to use: +- onServiceConnected when the bind succeeded. +- onServiceDisconnected as the reverse operation. + +When the activity is connected to the service, it can then use getServiceBinder() +to get an interface to talk to the service. + +In the other direction, the activity provides a listener for the service to notify +the application: ControllerListener createControllerListener(). + +The activity can then access the handler: + handler = getServiceBinder().getHandler(HandlerType....) + +and then the activity wants to provide a listener to get notified by the handler: + handler.addUiHandler(new android.os.Handler(this)); + +The emulator connection is separated in the "lib" subpackage: +- EmulatorConnection abstracts a connection to the emulator. + - Object is first created by giving a non-null EmulatorListener. + - then connect(port) is called to initiate the connection. + - The EmulatorConnection is always created in SYNC mode. +- EmulatorListener is a callback: the emulator connection uses it to indicate + when the connection is actually connected or disconnected. + +In the end we have the following workflow describing who controls what (-->): + + + Emulator + ^ ^ + | | EmuCnxHandler + sendEventToEmulator| | (EmulatorListener) + | +-------------+ + | | + handlers.BaseHandler | v + Activity ------------------------> Handler <---- ControllerService + UI <------------------------ | ^ + android.os.Handler | | + | ^ | | + | | ControllerListener | | + | +--------------------------------------------------+ | + +-----------------------------------------------------------+ + ControllerBinder + +---- diff --git a/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/NOTICE b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/NOTICE new file mode 100644 index 0000000..06a9081 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/NOTICE @@ -0,0 +1,190 @@ + + Copyright (c) 2005-2014, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + diff --git a/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/assets/intro_help.html b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/assets/intro_help.html new file mode 100644 index 0000000..d922a70 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/assets/intro_help.html @@ -0,0 +1,42 @@ + + + + + + + +
+SdkController is used to send sensor data from an actual device to an emulator.

+To use it, do the following:
+

    +
  1. Connect your device to your computer via USB. Make sure to enable USB Debugging in Settings > Developer Options.
  2. +
  3. Start this application on your device.
  4. +
  5. On the computer in a shell, run:
    adb forward tcp:1970 localabstract:android.sdk.controller
  6. +
  7. Finally run an emulator with an AVD targetting API 15. +Multi-touch emulation must be explicitly enabled in emulator either by setting "Touch screen type" property to "multi-touch" in AVD Manager, +or by starting the emulator with "-screen multi-touch" option.
  8. +
+Read more. + + diff --git a/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/proguard-project.txt b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/proguard-project.txt new file mode 100644 index 0000000..f2fe155 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/proguard-project.txt @@ -0,0 +1,20 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/project.properties b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/project.properties new file mode 100644 index 0000000..9c52cb1 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/project.properties @@ -0,0 +1,14 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system edit +# "ant.properties", and override values to adapt the script to your +# project structure. +# +# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): +#proguard.config=${sdk.dir}\tools\proguard\proguard-android.txt:proguard-project.txt + +# Project target. +target=android-15 diff --git a/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/drawable-hdpi/ic_launcher.png b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/drawable-hdpi/ic_launcher.png new file mode 100644 index 0000000..96a442e Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/drawable-hdpi/ic_launcher.png differ diff --git a/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/drawable-ldpi/ic_launcher.png b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/drawable-ldpi/ic_launcher.png new file mode 100644 index 0000000..9923872 Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/drawable-ldpi/ic_launcher.png differ diff --git a/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/drawable-mdpi/ic_launcher.png b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/drawable-mdpi/ic_launcher.png new file mode 100644 index 0000000..359047d Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/drawable-mdpi/ic_launcher.png differ diff --git a/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/drawable-xhdpi/ic_launcher.png b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/drawable-xhdpi/ic_launcher.png new file mode 100644 index 0000000..71c6d76 Binary files /dev/null and b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/drawable-xhdpi/ic_launcher.png differ diff --git a/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/layout-land/sensors.xml b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/layout-land/sensors.xml new file mode 100644 index 0000000..1f3e2f1 --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/layout-land/sensors.xml @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/layout/main.xml b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/layout/main.xml new file mode 100644 index 0000000..2e7a4bb --- /dev/null +++ b/love2dToAPK/tools/tools/android-win/tools/apps/SdkController/res/layout/main.xml @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + +